From 1a8f05a195909594b6d4b3b953e1e14c29dcff2e Mon Sep 17 00:00:00 2001 From: RehabSayed-G Date: Thu, 16 Mar 2023 16:54:54 +0200 Subject: [PATCH 01/11] updating the last version of gdsfactory based pcells --- sky130/cells/klayout/pymacros/README.md | 3 + .../cells/klayout/pymacros/cells/__init__.py | 87 ++ sky130/cells/klayout/pymacros/cells/bjt.py | 94 ++ sky130/cells/klayout/pymacros/cells/cap.py | 183 ++++ sky130/cells/klayout/pymacros/cells/diode.py | 208 ++++ .../cells/klayout/pymacros/cells/draw_bjt.py | 66 ++ .../cells/klayout/pymacros/cells/draw_cap.py | 368 +++++++ .../klayout/pymacros/cells/draw_diode.py | 239 +++++ .../cells/klayout/pymacros/cells/draw_fet.py | 957 ++++++++++++++++++ .../klayout/pymacros/cells/draw_guard_ring.py | 95 ++ .../cells/klayout/pymacros/cells/draw_rf.py | 83 ++ .../cells/klayout/pymacros/cells/draw_vpp.py | 41 + sky130/cells/klayout/pymacros/cells/fet.py | 263 +++++ ...fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl | 22 + ...fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds | Bin 0 -> 4314 bytes ..._02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl | 22 + ..._02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds | Bin 0 -> 6406 bytes ..._02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl | 22 + ..._02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds | Bin 0 -> 7942 bytes ..._02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl | 22 + ..._02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds | Bin 0 -> 11142 bytes ..._02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl | 22 + ..._02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds | Bin 0 -> 17542 bytes ...02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl | 22 + ...02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds | Bin 0 -> 8998 bytes ...ap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl | 22 + ...ap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds | Bin 0 -> 4426 bytes ..._pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl | 22 + ..._pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds | Bin 0 -> 11614 bytes ...pp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl | 22 + ...pp_04p4x04p6_l1m1m2_noshield_o2subcell.gds | Bin 0 -> 10830 bytes ..._vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl | 22 + ..._vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds | Bin 0 -> 17742 bytes ...fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl | 22 + ...fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds | Bin 0 -> 9594 bytes ...pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl | 22 + ...pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds | Bin 0 -> 6508 bytes ...fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl | 22 + ...fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds | Bin 0 -> 10410 bytes ..._pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl | 22 + ..._pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds | Bin 0 -> 14238 bytes ...pp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl | 22 + ...pp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds | Bin 0 -> 15042 bytes ...4p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl | 22 + ...4p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds | Bin 0 -> 15720 bytes ..._05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl | 22 + ..._05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds | Bin 0 -> 14358 bytes ..._cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl | 22 + ..._cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds | Bin 0 -> 27076 bytes ..._vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl | 22 + ..._vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds | Bin 0 -> 27742 bytes ...r__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl | 22 + ...r__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds | Bin 0 -> 20560 bytes ...ap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl | 22 + ...ap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds | Bin 0 -> 21222 bytes ..._pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl | 22 + ..._pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds | Bin 0 -> 22942 bytes ...pp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl | 22 + ...pp_08p6x07p8_l1m1m2_noshield_o2subcell.gds | Bin 0 -> 15830 bytes ..._vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl | 22 + ..._vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds | Bin 0 -> 34958 bytes ...fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl | 22 + ...fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds | Bin 0 -> 12456 bytes ...fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl | 22 + ...fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds | Bin 0 -> 20650 bytes ..._pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl | 22 + ..._pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds | Bin 0 -> 26974 bytes ...pp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl | 22 + ...pp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds | Bin 0 -> 28438 bytes ...8p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl | 22 + ...8p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds | Bin 0 -> 29116 bytes ..._11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl | 22 + ..._11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds | Bin 0 -> 37750 bytes ..._vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl | 22 + ..._vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds | Bin 0 -> 103952 bytes ...p_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl | 22 + ...p_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds | Bin 0 -> 104478 bytes ..._pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl | 22 + ..._pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds | Bin 0 -> 33484 bytes ...r__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl | 22 + ...r__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds | Bin 0 -> 50480 bytes ...r__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl | 22 + ...r__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds | Bin 0 -> 50528 bytes ...ap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl | 22 + ...ap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds | Bin 0 -> 51190 bytes ..._cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl | 22 + ..._cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds | Bin 0 -> 59108 bytes ..._vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl | 22 + ..._vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds | Bin 0 -> 59774 bytes ..._cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl | 22 + ..._cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds | Bin 0 -> 61716 bytes ..._vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl | 22 + ..._vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds | Bin 0 -> 62382 bytes ...ap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl | 22 + ...ap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds | Bin 0 -> 70296 bytes ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl | 22 + ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds | Bin 0 -> 70966 bytes ..._vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl | 22 + ..._vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds | Bin 0 -> 70300 bytes ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl | 22 + ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds | Bin 0 -> 71306 bytes ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl | 22 + ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds | Bin 0 -> 71242 bytes ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl | 22 + ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds | Bin 0 -> 71562 bytes ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl | 22 + ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds | Bin 0 -> 71498 bytes ...p_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl | 22 + ...p_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds | Bin 0 -> 70966 bytes ...fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl | 22 + ...fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds | Bin 0 -> 25320 bytes ...fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl | 22 + ...fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds | Bin 0 -> 29656 bytes ..._pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl | 22 + ..._pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds | Bin 0 -> 40972 bytes ...pp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl | 22 + ...pp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds | Bin 0 -> 43424 bytes ...1p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl | 22 + ...1p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds | Bin 0 -> 44102 bytes ..._cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl | 22 + ..._cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds | Bin 0 -> 55252 bytes ..._vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl | 22 + ..._vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds | Bin 0 -> 55918 bytes ...r__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl | 22 + ...r__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds | Bin 0 -> 48080 bytes ...fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl | 22 + ...fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds | Bin 0 -> 47560 bytes ..._vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 32786 bytes ..._vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 32786 bytes ..._vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 62994 bytes ..._vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 62994 bytes ..._vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 94290 bytes ..._vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 94290 bytes ..._vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 124882 bytes ..._vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 125244 bytes ..._vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 156242 bytes ...x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl | 22 + ...x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds | Bin 0 -> 156258 bytes ..._vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 + ..._vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 0 -> 156242 bytes ...x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl | 22 + ...x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds | Bin 0 -> 156258 bytes ...55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl | 22 + ...55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds | Bin 0 -> 156250 bytes .../npn/sky130_fd_pr__npn_05v5_W1p00L1p00.gds | Bin 0 -> 21918 bytes .../npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds | Bin 0 -> 24414 bytes .../npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds | Bin 0 -> 24372 bytes .../pnp/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds | Bin 0 -> 7866 bytes .../pnp/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds | Bin 0 -> 28274 bytes .../photodiode/sky130_fd_pr__photodiode.gds | Bin 0 -> 31608 bytes .../sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds | Bin 0 -> 47088 bytes .../sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds | Bin 0 -> 60208 bytes .../sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds | Bin 0 -> 44464 bytes .../sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds | Bin 0 -> 52336 bytes .../sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds | Bin 0 -> 69488 bytes .../sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds | Bin 0 -> 77040 bytes .../rf_coils/sky130_fd_pr__rf_test_coil1.gds | Bin 0 -> 6616 bytes .../rf_coils/sky130_fd_pr__rf_test_coil2.gds | Bin 0 -> 18400 bytes .../rf_coils/sky130_fd_pr__rf_test_coil3.gds | Bin 0 -> 26784 bytes ...130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds | Bin 0 -> 7778 bytes ...130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds | Bin 0 -> 7778 bytes ...130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds | Bin 0 -> 7778 bytes ...130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds | Bin 0 -> 11042 bytes ...130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds | Bin 0 -> 11042 bytes ...130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds | Bin 0 -> 11042 bytes ...130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds | Bin 0 -> 15202 bytes ...130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds | Bin 0 -> 15586 bytes ...130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds | Bin 0 -> 15586 bytes ...130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds | Bin 0 -> 10574 bytes ...130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds | Bin 0 -> 10574 bytes ...130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds | Bin 0 -> 10958 bytes ...130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds | Bin 0 -> 15612 bytes ...130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds | Bin 0 -> 15740 bytes ...130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds | Bin 0 -> 15996 bytes ...130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds | Bin 0 -> 22076 bytes ...130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds | Bin 0 -> 22204 bytes ...130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds | Bin 0 -> 22460 bytes ...130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds | Bin 0 -> 11138 bytes ...130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds | Bin 0 -> 11218 bytes ...130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds | Bin 0 -> 11218 bytes ...130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds | Bin 0 -> 14706 bytes ...130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds | Bin 0 -> 14706 bytes ...130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds | Bin 0 -> 14706 bytes ...130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds | Bin 0 -> 20210 bytes ...130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds | Bin 0 -> 20210 bytes ...130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds | Bin 0 -> 20210 bytes ...130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds | Bin 0 -> 15038 bytes ...130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds | Bin 0 -> 15550 bytes ...130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds | Bin 0 -> 15614 bytes ...130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds | Bin 0 -> 20492 bytes ...130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds | Bin 0 -> 21004 bytes ...130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds | Bin 0 -> 21068 bytes ...130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds | Bin 0 -> 27724 bytes ...130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds | Bin 0 -> 28236 bytes ...130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds | Bin 0 -> 28300 bytes ...30_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds | Bin 0 -> 22374 bytes ...30_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds | Bin 0 -> 32292 bytes ...fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds | Bin 0 -> 3828 bytes ...fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds | Bin 0 -> 4276 bytes ...fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds | Bin 0 -> 4808 bytes ...fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds | Bin 0 -> 6516 bytes ...fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds | Bin 0 -> 5720 bytes ...fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds | Bin 0 -> 7344 bytes ...fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds | Bin 0 -> 8152 bytes ...fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds | Bin 0 -> 10992 bytes ...fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds | Bin 0 -> 7800 bytes ...fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds | Bin 0 -> 9464 bytes ...fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds | Bin 0 -> 11256 bytes ...fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds | Bin 0 -> 15032 bytes ...fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds | Bin 0 -> 10200 bytes ...fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds | Bin 0 -> 12808 bytes ...fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds | Bin 0 -> 14168 bytes ...fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds | Bin 0 -> 19464 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds | Bin 0 -> 7850 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds | Bin 0 -> 7850 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds | Bin 0 -> 7850 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds | Bin 0 -> 11114 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds | Bin 0 -> 11114 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds | Bin 0 -> 11114 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds | Bin 0 -> 15658 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds | Bin 0 -> 15658 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds | Bin 0 -> 15082 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds | Bin 0 -> 10646 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds | Bin 0 -> 10646 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds | Bin 0 -> 11030 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds | Bin 0 -> 15684 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds | Bin 0 -> 15812 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds | Bin 0 -> 16068 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds | Bin 0 -> 22148 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds | Bin 0 -> 22276 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds | Bin 0 -> 22532 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds | Bin 0 -> 11210 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds | Bin 0 -> 11290 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds | Bin 0 -> 11290 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds | Bin 0 -> 14778 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds | Bin 0 -> 14778 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds | Bin 0 -> 14778 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds | Bin 0 -> 20282 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds | Bin 0 -> 20282 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds | Bin 0 -> 20282 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds | Bin 0 -> 15110 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds | Bin 0 -> 15622 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds | Bin 0 -> 15686 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds | Bin 0 -> 20564 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds | Bin 0 -> 21076 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds | Bin 0 -> 21140 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds | Bin 0 -> 27796 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds | Bin 0 -> 28308 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds | Bin 0 -> 28372 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds | Bin 0 -> 10058 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds | Bin 0 -> 10138 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds | Bin 0 -> 10138 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds | Bin 0 -> 13050 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds | Bin 0 -> 13050 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds | Bin 0 -> 13050 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds | Bin 0 -> 17594 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds | Bin 0 -> 17594 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds | Bin 0 -> 17594 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds | Bin 0 -> 12902 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds | Bin 0 -> 13190 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds | Bin 0 -> 13254 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds | Bin 0 -> 17428 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds | Bin 0 -> 17684 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds | Bin 0 -> 17748 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds | Bin 0 -> 23060 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds | Bin 0 -> 23316 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds | Bin 0 -> 23380 bytes ...30_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds | Bin 0 -> 20390 bytes ...30_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds | Bin 0 -> 29682 bytes .../sky130_fd_pr__rf_nfet_20v0_aup.gds | Bin 0 -> 105426 bytes .../sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds | Bin 0 -> 181086 bytes .../sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds | Bin 0 -> 106004 bytes ...130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds | Bin 0 -> 181162 bytes ...ky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds | Bin 0 -> 120878 bytes ...0_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds | Bin 0 -> 241710 bytes .../sky130_fd_pr__rf_nfet_20v0_withptap.gds | Bin 0 -> 120174 bytes ...ky130_fd_pr__rf_nfet_20v0_withptap_iso.gds | Bin 0 -> 241526 bytes ...ky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds | Bin 0 -> 91840 bytes ...d_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds | Bin 0 -> 17836 bytes ...d_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds | Bin 0 -> 23148 bytes ...d_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds | Bin 0 -> 29906 bytes ...d_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds | Bin 0 -> 31640 bytes ...d_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds | Bin 0 -> 42882 bytes ...d_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds | Bin 0 -> 56638 bytes ...d_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds | Bin 0 -> 16910 bytes ...d_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds | Bin 0 -> 22838 bytes ...d_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds | Bin 0 -> 22740 bytes ...d_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds | Bin 0 -> 30588 bytes ...d_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds | Bin 0 -> 38370 bytes ...d_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds | Bin 0 -> 41216 bytes ...d_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds | Bin 0 -> 53522 bytes ...d_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds | Bin 0 -> 68622 bytes ...130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds | Bin 0 -> 4262 bytes ...130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds | Bin 0 -> 5222 bytes ...130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds | Bin 0 -> 5178 bytes ...130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds | Bin 0 -> 6502 bytes ...130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds | Bin 0 -> 8614 bytes ...130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds | Bin 0 -> 6986 bytes ...130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds | Bin 0 -> 8482 bytes ...130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds | Bin 0 -> 8778 bytes ...130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds | Bin 0 -> 10698 bytes ...130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds | Bin 0 -> 13898 bytes ...130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds | Bin 0 -> 9642 bytes ...130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds | Bin 0 -> 11242 bytes ...130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds | Bin 0 -> 12138 bytes ...130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds | Bin 0 -> 14826 bytes ...130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds | Bin 0 -> 12106 bytes ...130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds | Bin 0 -> 14154 bytes ...130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds | Bin 0 -> 7830 bytes ...130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds | Bin 0 -> 7830 bytes ...130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds | Bin 0 -> 7830 bytes ...130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds | Bin 0 -> 11094 bytes ...130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds | Bin 0 -> 11094 bytes ...130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds | Bin 0 -> 11094 bytes ...130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds | Bin 0 -> 15638 bytes ...130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds | Bin 0 -> 15638 bytes ...130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds | Bin 0 -> 15702 bytes ...130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds | Bin 0 -> 10626 bytes ...130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds | Bin 0 -> 10626 bytes ...130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds | Bin 0 -> 11010 bytes ...130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds | Bin 0 -> 15616 bytes ...130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds | Bin 0 -> 15744 bytes ...130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds | Bin 0 -> 16000 bytes ...130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds | Bin 0 -> 22080 bytes ...130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds | Bin 0 -> 22208 bytes ...130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds | Bin 0 -> 22464 bytes ...130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds | Bin 0 -> 11190 bytes ...130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds | Bin 0 -> 11270 bytes ...130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds | Bin 0 -> 11270 bytes ...130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds | Bin 0 -> 14758 bytes ...130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds | Bin 0 -> 14758 bytes ...130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds | Bin 0 -> 14758 bytes ...130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds | Bin 0 -> 20262 bytes ...130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds | Bin 0 -> 20262 bytes ...130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds | Bin 0 -> 20262 bytes ...130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds | Bin 0 -> 15090 bytes ...130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds | Bin 0 -> 15602 bytes ...130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds | Bin 0 -> 15666 bytes ...130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds | Bin 0 -> 20544 bytes ...130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds | Bin 0 -> 21056 bytes ...130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds | Bin 0 -> 21120 bytes ...130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds | Bin 0 -> 27776 bytes ...130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds | Bin 0 -> 28288 bytes ...130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds | Bin 0 -> 28352 bytes ...30_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds | Bin 0 -> 22432 bytes ...30_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds | Bin 0 -> 32256 bytes ...fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds | Bin 0 -> 11294 bytes ...fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds | Bin 0 -> 11678 bytes ...fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds | Bin 0 -> 15838 bytes ...fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds | Bin 0 -> 16222 bytes ...fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds | Bin 0 -> 15690 bytes ...fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds | Bin 0 -> 16202 bytes ...fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds | Bin 0 -> 22154 bytes ...fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds | Bin 0 -> 22666 bytes ...30_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds | Bin 0 -> 20972 bytes ...30_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds | Bin 0 -> 29100 bytes ...fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds | Bin 0 -> 4334 bytes .../sky130_fd_pr__rf_pfet_20v0_withptap.gds | Bin 0 -> 271496 bytes .../cells/klayout/pymacros/cells/globals.py | 67 ++ sky130/cells/klayout/pymacros/cells/gr.py | 102 ++ .../klayout/pymacros/cells/layers_def.py | 101 ++ .../klayout/pymacros/cells/parent_res.py | 273 +++++ .../klayout/pymacros/cells/res_diff_child.py | 731 +++++++++++++ .../pymacros/cells/res_diff_klayout_panel.py | 87 ++ .../pymacros/cells/res_klayout_panel.py | 132 +++ .../klayout/pymacros/cells/res_metal_child.py | 109 ++ .../pymacros/cells/res_metal_klayout_panel.py | 119 +++ .../klayout/pymacros/cells/res_poly_child.py | 559 ++++++++++ .../pymacros/cells/res_poly_klayout_panel.py | 172 ++++ sky130/cells/klayout/pymacros/cells/rf.py | 128 +++ .../klayout/pymacros/cells/via_generator.py | 476 +++++++++ sky130/cells/klayout/pymacros/cells/vias.py | 208 ++++ sky130/cells/klayout/pymacros/cells/vpp.py | 57 ++ sky130/cells/klayout/pymacros/sky130.lym | 50 + 383 files changed, 7598 insertions(+) create mode 100644 sky130/cells/klayout/pymacros/README.md create mode 100644 sky130/cells/klayout/pymacros/cells/__init__.py create mode 100644 sky130/cells/klayout/pymacros/cells/bjt.py create mode 100644 sky130/cells/klayout/pymacros/cells/cap.py create mode 100644 sky130/cells/klayout/pymacros/cells/diode.py create mode 100644 sky130/cells/klayout/pymacros/cells/draw_bjt.py create mode 100644 sky130/cells/klayout/pymacros/cells/draw_cap.py create mode 100644 sky130/cells/klayout/pymacros/cells/draw_diode.py create mode 100644 sky130/cells/klayout/pymacros/cells/draw_fet.py create mode 100644 sky130/cells/klayout/pymacros/cells/draw_guard_ring.py create mode 100644 sky130/cells/klayout/pymacros/cells/draw_rf.py create mode 100644 sky130/cells/klayout/pymacros/cells/draw_vpp.py create mode 100644 sky130/cells/klayout/pymacros/cells/fet.py create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L1p00.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/pnp/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/pnp/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/photodiode/sky130_fd_pr__photodiode.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil1.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil2.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil3.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_aup.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds create mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_20v0_withptap.gds create mode 100644 sky130/cells/klayout/pymacros/cells/globals.py create mode 100644 sky130/cells/klayout/pymacros/cells/gr.py create mode 100644 sky130/cells/klayout/pymacros/cells/layers_def.py create mode 100644 sky130/cells/klayout/pymacros/cells/parent_res.py create mode 100644 sky130/cells/klayout/pymacros/cells/res_diff_child.py create mode 100644 sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py create mode 100644 sky130/cells/klayout/pymacros/cells/res_klayout_panel.py create mode 100644 sky130/cells/klayout/pymacros/cells/res_metal_child.py create mode 100644 sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py create mode 100644 sky130/cells/klayout/pymacros/cells/res_poly_child.py create mode 100644 sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py create mode 100644 sky130/cells/klayout/pymacros/cells/rf.py create mode 100644 sky130/cells/klayout/pymacros/cells/via_generator.py create mode 100644 sky130/cells/klayout/pymacros/cells/vias.py create mode 100644 sky130/cells/klayout/pymacros/cells/vpp.py create mode 100644 sky130/cells/klayout/pymacros/sky130.lym diff --git a/sky130/cells/klayout/pymacros/README.md b/sky130/cells/klayout/pymacros/README.md new file mode 100644 index 000000000..cd122659b --- /dev/null +++ b/sky130/cells/klayout/pymacros/README.md @@ -0,0 +1,3 @@ +# Skywater130_PCells + +Contains klayout pcells generator. diff --git a/sky130/cells/klayout/pymacros/cells/__init__.py b/sky130/cells/klayout/pymacros/cells/__init__.py new file mode 100644 index 000000000..a6b2da74d --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/__init__.py @@ -0,0 +1,87 @@ + +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +#============================================================================ +# ---------------- Pcells Generators for Klayout of sky ---------------- +#============================================================================ + +import pya +from cells.vias import vias_gen + +from .fet import * +from .diode import * +from .bjt import * +from .vpp import * +from .rf import * +from .cap import * +from .gr import * +from .res_poly_klayout_panel import res_poly +from .res_diff_klayout_panel import res_diff +from .res_metal_klayout_panel import res_metal + + + + +# It's a Python class that inherits from the pya.Library class +class sky130(pya.Library): + """ + The library where we will put the PCell into + """ + + def __init__(self): + # Set the description + self.description = "sky130 Pcells" + + # Create the PCell declarations + # MOS DEVICES + self.layout().register_pcell("pfet", pfet()) + self.layout().register_pcell("nfet", nfet()) + + # BJT + self.layout().register_pcell("npn_bjt", npn_bjt()) # npn_05v5_1p00x1p00, npn_05v5_1p00x2p00 , npn_11v0_1p00x1p00 + self.layout().register_pcell("pnp_bjt", pnp_bjt()) # pnp_05v5_0p68x0p68 , pnp_05v5_3p40x3p40 + + + # CAP Devices + self.layout().register_pcell("cap_vpp", cap_vpp()) # VPP devices + self.layout().register_pcell("cap_var", cap_var()) # varactor devices + self.layout().register_pcell("mim_cap", mim_cap()) # mim cap devices + + + # DIODE DEVICES + + self.layout().register_pcell("photodiode", photo_diode()) + self.layout().register_pcell("n_diode", n_diode()) + self.layout().register_pcell("p_diode", p_diode()) + + + # RF Devices + self.layout().register_pcell("rf_mosfet", rf_mosfet()) # rf mosfets + self.layout().register_pcell("rf_bjt", rf_bjt()) # rf bjt + self.layout().register_pcell("rf_coils", rf_coils()) # rf coils + + + # vias + self.layout().register_pcell("vias_gen", vias_gen()) # vias generator + self.layout().register_pcell("guard_ring_gen", guard_ring_gen()) # vias generator + + # Resistor + self.layout().register_pcell("res_diff", res_diff()) # Res diff generator + self.layout().register_pcell("res_poly", res_poly()) # Res poly generator + self.layout().register_pcell("res_metal", res_metal()) # Res metal generator + + # Register us with the name "skywater130". + self.register("skywater130") diff --git a/sky130/cells/klayout/pymacros/cells/bjt.py b/sky130/cells/klayout/pymacros/cells/bjt.py new file mode 100644 index 000000000..fc0d7e818 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/bjt.py @@ -0,0 +1,94 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# BJT Generator for skywater130 +######################################################################################################################## + + +import pya +from .draw_bjt import * +from .globals import * + + + +class npn_bjt(pya.PCellDeclarationHelper): + """ + NPN BJT Generator for Skywater130 + """ + + def __init__(self): + + # Important: initialize the super class + super(npn_bjt, self).__init__() + self.Type_handle = self.param("type", self.TypeList, "type") + + for i in BJT_NPN_DEV : + self.Type_handle.add_choice(i, i) + + + + self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__npn",readonly=True) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return str(self.type) + + def produce_impl(self): + + # This is the main part of the implementation: create the layout + + self.percision = 1/self.layout.dbu + #self.cell.flatten(1) + npn_instance = draw_npn(layout=self.layout,device_name=self.type) + write_cells = pya.CellInstArray(npn_instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.cell.flatten(1) + self.cell.insert(write_cells) + self.layout.cleanup() + +class pnp_bjt(pya.PCellDeclarationHelper): + """ + PNP BJT Generator for Skywater130 + """ + + def __init__(self): + + # Important: initialize the super class + super(pnp_bjt, self).__init__() + self.Type_handle = self.param("Type", self.TypeList, "Type") + + for i in BJT_PNP_DEV : + self.Type_handle.add_choice(i, i) + + + self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__pnp",readonly=True) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return str(self.Type) + + def produce_impl(self): + + # This is the main part of the implementation: create the layout + + self.percision = 1/self.layout.dbu + pnp_instance = draw_pnp(layout=self.layout,device_name=self.Type) + write_cells = pya.CellInstArray(pnp_instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.cell.flatten(1) + self.cell.insert(write_cells) + + self.layout.cleanup() diff --git a/sky130/cells/klayout/pymacros/cells/cap.py b/sky130/cells/klayout/pymacros/cells/cap.py new file mode 100644 index 000000000..a929d6721 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/cap.py @@ -0,0 +1,183 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# cap(Varactor-MIM) Generator for skywater130 +######################################################################################################################## + + +import pya + +from .draw_cap import * +from .globals import * + + +l_min = 0.18 +w_min = 1 +grw_min = 0.17 + +l_mim = 2 +l_mim2 = 2.16 + +class cap_var(pya.PCellDeclarationHelper): + """ + Cap(Varactor) Generator for Skywater130 + """ + + def __init__(self): + # Initialize super class. + super(cap_var, self).__init__() + + #===================== PARAMETERS DECLARATIONS ===================== + + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice("sky130_fd_pr__cap_var_lvt","sky130_fd_pr__cap_var_lvt") + self.Type_handle.add_choice("sky130_fd_pr__cap_var_hvt","sky130_fd_pr__cap_var_hvt") + + + self.param("l", self.TypeDouble, "length", default=l_min, unit="um") + self.param("w", self.TypeDouble, "width", default=w_min, unit="um") + self.param("tap_con_col", self.TypeInt, "tap Contacts Columns", default=1) + + self.param("gr", self.TypeBoolean, "Gaurd Ring", default=0) + self.param("grw", self.TypeDouble, "Gaurd Ring Width", default=grw_min, unit="um") + + self.param("nf", self.TypeDouble, "Number of Fingers", default=1) + #self.param("n", self.TypeDouble, "instance number", default=1) + + self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + self.param("cap_value", self.TypeDouble,"Cap Value", readonly=True, unit="fF") + + + def display_text_impl(self): + # Provide a descriptive text for the cell + return "Varactor(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" + + def coerce_parameters_impl(self): + # We employ coerce_parameters_impl to decide whether the handle or the + # numeric parameter has changed (by comparing against the effective + # radius ru) and set ru to the effective radius. We also update the + # numerical value or the shape, depending on which on has not changed. + self.area = self.w * self.l + self.perim = 2*(self.w + self.l) + self.cap_value = 4.4* self.area + + if self.l < l_min : + self.l = l_min + + if self.w < w_min: + self.w = w_min + + if self.grw < grw_min: + self.grw = grw_min + + def can_create_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we can use any shape which + # has a finite bounding box + return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() + + def parameters_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we set r and l from the shape's + # bounding box width and layer + self.r = self.shape.bbox().width() * self.layout.dbu / 2 + self.l = self.layout.get_info(self.layer) + + def transformation_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we use the center of the shape's + # bounding box to determine the transformation + return pya.Trans(self.shape.bbox().center()) + + def produce_impl(self): + instance = draw_cap_var(layout= self.layout , l=self.l, w=self.w, type=self.type,tap_con_col=self.tap_con_col, gr= self.gr , grw= self.grw, nf=self.nf) + write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + self.cell.insert(write_cells) + self.cell.flatten(1) + + +class mim_cap(pya.PCellDeclarationHelper): + """ + Cap(mim) Generator for Skywater130 + """ + + def __init__(self): + # Initialize super class. + super(mim_cap, self).__init__() + + #===================== PARAMETERS DECLARATIONS ===================== + + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice("sky130_fd_pr__model__cap_mim","sky130_fd_pr__model__cap_mim") + self.Type_handle.add_choice("sky130_fd_pr__model__cap_mim_m4","sky130_fd_pr__model__cap_mim_m4") + + + self.param("l", self.TypeDouble, "length", default=l_mim, unit="um") + self.param("w", self.TypeDouble, "width", default=l_mim, unit="um") + + #self.param("n", self.TypeInt, "instance number", default=1) + + self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + self.param("cap_value", self.TypeDouble,"Cap Value", readonly=True, unit="fF") + + def display_text_impl(self): + # Provide a descriptive text for the cell + return "mimcap(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" + + def coerce_parameters_impl(self): + # We employ coerce_parameters_impl to decide whether the handle or the + # numeric parameter has changed (by comparing against the effective + # radius ru) and set ru to the effective radius. We also update the + # numerical value or the shape, depending on which on has not changed. + self.area = self.w * self.l + self.perim = 2*(self.w + self.l) + self.cap_value = 2*self.area + + if self.type == "sky130_fd_pr__model__cap_mim_m4": + if self.l < l_mim2 : + self.l = l_mim2 + + if self.w < l_mim2: + self.w = l_mim2 + else : + if self.l < l_mim : + self.l = l_mim + + if self.w < l_mim: + self.w = l_mim + + def can_create_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we can use any shape which + # has a finite bounding box + return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() + + def parameters_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we set r and l from the shape's + # bounding box width and layer + self.r = self.shape.bbox().width() * self.layout.dbu / 2 + self.l = self.layout.get_info(self.layer) + + def transformation_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we use the center of the shape's + # bounding box to determine the transformation + return pya.Trans(self.shape.bbox().center()) + + def produce_impl(self): + instance = draw_mim_cap(layout= self.layout , l=self.l, w=self.w, type=self.type) + write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + self.cell.insert(write_cells) + self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/diode.py b/sky130/cells/klayout/pymacros/cells/diode.py new file mode 100644 index 000000000..6db22965d --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/diode.py @@ -0,0 +1,208 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# DIODE Generator for skywater130 +######################################################################################################################## + + +import pya + +from .draw_diode import * +from .globals import * + + +class photo_diode(pya.PCellDeclarationHelper): + """ + photo diode Generator for Skywater130 + """ + + def __init__(self): + + # Important: initialize the super class + super(photo_diode, self).__init__() + self.Type_handle = self.param("Type", self.TypeList, "Type") + + for i in PHOTO_D_DEV : + self.Type_handle.add_choice(i, i) + + + self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__photodiode",readonly=True) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return str(self.Type) + + def produce_impl(self): + + # This is the main part of the implementation: create the layout + + self.percision = 1/self.layout.dbu + ph_d_instance = draw_photodiode(layout=self.layout,device_name=self.Type) + + write_cells = pya.CellInstArray(ph_d_instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.cell.flatten(1) + self.cell.insert(write_cells) + + self.layout.cleanup() + +d_min = 0.45 +grw_min = 0.17 + +class n_diode(pya.PCellDeclarationHelper): + """ + N-Diode Generator for Skywater130 + """ + + def __init__(self): + # Initialize super class. + super(n_diode, self).__init__() + + #===================== PARAMETERS DECLARATIONS ===================== + + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice("sky130_fd_pr__diode_pw2nd_05v5", "sky130_fd_pr__diode_pw2nd_05v5") + self.Type_handle.add_choice("sky130_fd_pr__diode_pw2nd_05v5_lvt", "sky130_fd_pr__diode_pw2nd_05v5_lvt") + self.Type_handle.add_choice("sky130_fd_pr__diode_pw2nd_05v5_nvt", "sky130_fd_pr__diode_pw2nd_05v5_nvt") + self.Type_handle.add_choice("sky130_fd_pr__diode_pw2nd_11v0", "sky130_fd_pr__diode_pw2nd_11v0") + + self.param("w", self.TypeDouble, "width", default=d_min, unit="um") + self.param("l", self.TypeDouble, "length", default=d_min, unit="um") + self.param("cath_w", self.TypeDouble, "Cathode Width", default=grw_min, unit="um") + + self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + + #self.param("n", self.TypeInt, "n", default=1) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return "n_diode(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" + + def coerce_parameters_impl(self): + # We employ coerce_parameters_impl to decide whether the handle or the + # numeric parameter has changed (by comparing against the effective + # radius ru) and set ru to the effective radius. We also update the + # numerical value or the shape, depending on which on has not changed. + self.area = self.w * self.l + self.perim = 2*(self.w + self.l) + + if self.l < d_min : + self.l = d_min + + if self.w < d_min : + self.w = d_min + + if self.cath_w < grw_min: + self.cath_w = grw_min + + def can_create_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we can use any shape which + # has a finite bounding box + return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() + + def parameters_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we set r and l from the shape's + # bounding box width and layer + self.r = self.shape.bbox().width() * self.layout.dbu / 2 + self.l = self.layout.get_info(self.layer) + + def transformation_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we use the center of the shape's + # bounding box to determine the transformation + return pya.Trans(self.shape.bbox().center()) + + def produce_impl(self): + instance = draw_diode(layout= self.layout ,d_type="n", l=self.l, w=self.w, type=self.type,cath_w=self.cath_w) + write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + self.cell.insert(write_cells) + self.cell.flatten(1) + + +class p_diode(pya.PCellDeclarationHelper): + """ + N-Diode Generator for Skywater130 + """ + + def __init__(self): + # Initialize super class. + super(p_diode, self).__init__() + + #===================== PARAMETERS DECLARATIONS ===================== + + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice("sky130_fd_pr__diode_pd2nw_05v5", "sky130_fd_pr__diode_pd2nw_05v5") + self.Type_handle.add_choice("sky130_fd_pr__diode_pd2nw_05v5_lvt", "sky130_fd_pr__diode_pd2nw_05v5_lvt") + self.Type_handle.add_choice("sky130_fd_pr__diode_pd2nw_05v5_hvt", "sky130_fd_pr__diode_pd2nw_05v5_hvt") + self.Type_handle.add_choice("sky130_fd_pr__diode_pd2nw_11v0", "sky130_fd_pr__diode_pd2nw_11v0") + + self.param("w", self.TypeDouble, "width", default=d_min, unit="um") + self.param("l", self.TypeDouble, "length", default=d_min, unit="um") + self.param("cath_w", self.TypeDouble, "Cathode width", default=grw_min, unit="um") + self.param("grw", self.TypeDouble, "Gaurd Ring width", default=grw_min, unit="um") + + self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + + #self.param("n", self.TypeInt, "n", default=1) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return "p_diode(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" + + def coerce_parameters_impl(self): + # We employ coerce_parameters_impl to decide whether the handle or the + # numeric parameter has changed (by comparing against the effective + # radius ru) and set ru to the effective radius. We also update the + # numerical value or the shape, depending on which on has not changed. + self.area = self.w * self.l + self.perim = 2*(self.w + self.l) + + if self.l < d_min : + self.l = d_min + + if self.w < d_min : + self.w = d_min + + if self.grw < grw_min: + self.grw = grw_min + + if self.cath_w < grw_min: + self.cath_w = grw_min + + def can_create_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we can use any shape which + # has a finite bounding box + return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() + + def parameters_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we set r and l from the shape's + # bounding box width and layer + self.r = self.shape.bbox().width() * self.layout.dbu / 2 + self.l = self.layout.get_info(self.layer) + + def transformation_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we use the center of the shape's + # bounding box to determine the transformation + return pya.Trans(self.shape.bbox().center()) + + def produce_impl(self): + instance = draw_diode(layout= self.layout ,d_type="p", l=self.l, w=self.w, type=self.type,grw=self.grw, cath_w=self.cath_w) + write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + self.cell.insert(write_cells) + self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/draw_bjt.py b/sky130/cells/klayout/pymacros/cells/draw_bjt.py new file mode 100644 index 000000000..fb72fb8e6 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/draw_bjt.py @@ -0,0 +1,66 @@ + +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +## BJT Pcells Generators for Klayout of skywater130 +######################################################################################################################## + + +import pya +import os +from .globals import * +import gdsfactory as gf + + +gds_p_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices/bjt" )# parent file path + + +def draw_npn(layout, device_name): + + ''' + drawing NPN devices + ''' + gds_path = f"{gds_p_path}/npn" + + if device_name in BJT_NPN_DEV : + layout.read(f"{gds_path}/{device_name}.gds") + cell_name = device_name + else : + cell_name = device_name + + + + return layout.cell(cell_name) + + + +def draw_pnp(layout, device_name): + + ''' + drawing PNP devices + ''' + gds_path = f"{gds_p_path}/pnp" + + if device_name in BJT_PNP_DEV : + layout.read(f"{gds_path}/{device_name}.gds") + cell_name = device_name + else : + cell_name = device_name + + + return layout.cell(cell_name) + + diff --git a/sky130/cells/klayout/pymacros/cells/draw_cap.py b/sky130/cells/klayout/pymacros/cells/draw_cap.py new file mode 100644 index 000000000..4d85a6f23 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/draw_cap.py @@ -0,0 +1,368 @@ +import gdsfactory as gf + +from .via_generator import * +from .layers_def import * + + +def draw_cap_var( + layout, + type="sky130_fd_pr__cap_var_lvt", + l: float = 0.18, + w: float = 1, + tap_con_col: int = 1, + gr: int = 1, + grw: float = 0.17, + nf: int = 1, +): + + """ + Retern varactor + + Args: + layout : layout object + l : float of gate length + w : float of gate width + tap_con_col : int of tap contacts columns + gr : boolaen of having guard ring + grw : float of guard ring width + nf : integer of number of fingers + + + """ + + c = gf.Component("sky_cap_var_dev") + + c_inst = gf.Component("dev inst") + + # used dimensions and layers + + end_cap = 0.15 + con_size = (0.17, 0.17) + con_enc = (0.05, 0.08) + con_spacing = (0.17, 0.17) + con_t_enc = (0.06, 0.12) + gate_con_spacing = 0.195 + tap_nsdm_enc = 0.125 + nwell_enclosing = 0.18 + tap_spacing = 0.27 + hv_enc = 0.18 + nwell_spacing = 1.27 + + # draw the channel tap and poly and thier contacts + + tap_con = ( + (tap_con_col * con_size[0]) + + ((tap_con_col - 1) * con_size[0]) + + 3 * con_t_enc[0] + ) + tap_w = gate_con_spacing + tap_con + + tap = c_inst.add_ref( + gf.components.rectangle(size=(l + 2 * tap_w, w), layer=tap_layer) + ) + + # adding nsdm + nsdm = c_inst.add_ref( + gf.components.rectangle( + size=( + tap.xmax - tap.xmin + 2 * tap_nsdm_enc, + tap.ymax - tap.ymin + 2 * tap_nsdm_enc, + ), + layer=nsdm_layer, + ) + ) + nsdm.move((tap.xmin - tap_nsdm_enc, tap.ymin - tap_nsdm_enc)) + + tap_con = via_stack( + x_range=(0, tap_w - gate_con_spacing), + y_range=(0.06, w - 0.06), + base_layer=tap_layer, + metal_level=1, + ) + c_inst.add_array( + component=tap_con, columns=2, rows=1, spacing=(tap_w + l + gate_con_spacing, 0) + ) + + poly = c_inst.add_ref( + gf.components.rectangle(size=(l, w + 2 * end_cap), layer=poly_layer) + ) + poly.move((tap_w, -end_cap)) + + if l < (con_size[0] + 2 * con_enc[0]): + pc_x = con_size[0] + 2 * con_enc[0] + else: + pc_x = l + + pc_y = con_size[1] + 2 * con_enc[1] + + c_pc = gf.Component("poly con") + + rect_pc = c_pc.add_ref(gf.components.rectangle(size=(pc_x, pc_y), layer=poly_layer)) + + poly_con = via_stack( + x_range=(rect_pc.xmin, rect_pc.xmax), + y_range=(rect_pc.ymin, rect_pc.ymax), + base_layer=poly_layer, + metal_level=1, + li_enc_dir="H", + ) + c_pc.add_ref(poly_con) + + pc = c_inst.add_array( + component=c_pc, rows=2, columns=1, spacing=(0, pc_y + w + 2 * end_cap) + ) + pc.move((tap_w - ((pc_x - l) / 2), -pc_y - end_cap)) + + # adding nwell + nwell = c_inst.add_ref( + gf.components.rectangle( + size=(tap.xmax - tap.xmin + 2 * nwell_enclosing, pc.ymax - pc.ymin), + layer=nwell_layer, + ) + ) + nwell.move((tap.xmin - nwell_enclosing, pc.ymin)) + + # c.add_ref(c_inst) + c.add_array( + component=c_inst, + columns=1, + rows=nf, + spacing=(0, (c_inst.ymax - c_inst.ymin) + nwell_spacing), + ) + + if gr == 1: + c_temp = gf.Component("gr form") + g_r_in = c_temp.add_ref( + gf.components.rectangle( + size=( + (c_inst.xmax - c_inst.xmin) + 2 * tap_spacing, + nf * (c_inst.ymax - c_inst.ymin) + + (nf - 1) * nwell_spacing + + 2 * tap_spacing, + ), + layer=tap_layer, + ) + ) + g_r_in.move((c_inst.xmin - tap_spacing, c_inst.ymin - tap_spacing)) + g_r_out = c_temp.add_ref( + gf.components.rectangle( + size=( + g_r_in.xmax - g_r_in.xmin + 2 * grw, + g_r_in.ymax - g_r_in.ymin + 2 * grw, + ), + layer=tap_layer, + ) + ) + g_r_out.move((g_r_in.xmin - grw, g_r_in.ymin - grw)) + g_r = c.add_ref( + gf.geometry.boolean(A=g_r_out, B=g_r_in, operation="A-B", layer=tap_layer) + ) + + g_r_li = c.add_ref( + gf.geometry.boolean(A=g_r_out, B=g_r_in, operation="A-B", layer=li_layer) + ) + + g_psdm_in = c_temp.add_ref( + gf.components.rectangle( + size=( + g_r_in.xmax - g_r_in.xmin - 2 * tap_nsdm_enc, + g_r_in.ymax - g_r_in.ymin - 2 * tap_nsdm_enc, + ), + layer=psdm_layer, + ) + ) + g_psdm_in.move((g_r_in.xmin + tap_nsdm_enc, g_r_in.ymin + tap_nsdm_enc)) + g_psdm_out = c_temp.add_ref( + gf.components.rectangle( + size=( + g_r_out.xmax - g_r_out.xmin + 2 * tap_nsdm_enc, + g_r_out.ymax - g_r_out.ymin + 2 * tap_nsdm_enc, + ), + layer=psdm_layer, + ) + ) + g_psdm_out.move((g_r_out.xmin - tap_nsdm_enc, g_r_out.ymin - tap_nsdm_enc)) + + g_psdm = c.add_ref( + gf.geometry.boolean( + A=g_psdm_out, B=g_psdm_in, operation="A-B", layer=psdm_layer + ) + ) + + if grw < con_size[0] + 2 * con_t_enc[0]: + g_con_range = (g_r_in.ymin, g_r_in.ymax) + else: + g_con_range = (g_r_out.ymin, g_r_out.ymax) + + g_licon_u = c.add_ref( + via_generator( + x_range=(g_r_in.xmin + 0.17, g_r_in.xmax - 0.17), + y_range=(g_r_in.ymax, g_r_out.ymax), + via_enclosure=con_t_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + g_licon_d = c.add_ref( + via_generator( + x_range=(g_r_in.xmin + 0.17, g_r_in.xmax - 0.17), + y_range=(g_r_out.ymin, g_r_in.ymin), + via_enclosure=con_t_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + g_licon_l = c.add_ref( + via_generator( + x_range=(g_r_out.xmin, g_r_in.xmin), + y_range=g_con_range, + via_enclosure=con_t_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + g_licon_r = c.add_ref( + via_generator( + x_range=(g_r_in.xmax, g_r_out.xmax), + y_range=g_con_range, + via_enclosure=con_t_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + if type == "sky130_fd_pr__cap_var_hvt": + hvtp = c_inst.add_ref( + gf.components.rectangle( + size=(l + 2 * hv_enc, w + 2 * hv_enc), layer=hvtp_layer + ) + ) + hvtp.move((poly.xmin - hv_enc, tap.ymin - hv_enc)) + + c.write_gds("cap_var_temp.gds") + layout.read("cap_var_temp.gds") + cell_name = "sky_cap_var_dev" + + return layout.cell(cell_name) + + +def draw_mim_cap( + layout, + type="sky130_fd_pr__model__cap_mim", + l: float = 2, + w: float = 2, +): + + """ + Retern mim cap + + Args: + layout : layout object + l : float of capm length + w : float of capm width + + + """ + + c = gf.Component("sky_mim_cap_dev") + + # used dimensions and layers + + bottom_layer = m3_layer + upper_layer = m4_layer + lbl = m4_lbl + via_layer = via3_layer + via_size = (0.2, 0.2) + via_enc = (0.09, 0.065) + via_spacing = (0.2, 0.2) + cap_layer = capm_layer + cap_enc = 0.195 + m_dn_enc = 0.2 + m_up_spacing = 1.355 + m_up_w = 0.48 + + if type == "sky130_fd_pr__model__cap_mim_m4": + bottom_layer = m4_layer + upper_layer = m5_layer + lbl = m5_lbl + via_layer = via4_layer + via_size = (0.8, 0.8) + via_enc = (0.31, 0.31) + via_spacing = (0.8, 0.8) + cap_layer = cap2m_layer + cap_enc = 0.08 + m_dn_enc = 0.4 + m_up_spacing = 1.68 + m_up_w = 1.6 + + side_enc = (0.02, 0.06) + + # drawing cap identifier and bottom , upper layers + cap = c.add_ref(gf.components.rectangle(size=(w, l), layer=cap_layer)) + + m_up1 = c.add_ref( + gf.components.rectangle( + size=(cap.xmax - cap.xmin - 2 * cap_enc, cap.ymax - cap.ymin - 2 * cap_enc), + layer=upper_layer, + ) + ) + m_up1.move((cap.xmin + cap_enc, cap.ymin + cap_enc)) + + m_dn = c.add_ref( + gf.components.rectangle( + size=( + m_dn_enc + + cap_enc + + m_up1.xmax + - m_up1.xmin + + m_up_spacing + + m_up_w + + side_enc[0], + cap.ymax - cap.ymin + 2 * m_dn_enc, + ), + layer=bottom_layer, + ) + ) + m_dn.move((cap.xmin - m_dn_enc, cap.ymin - m_dn_enc)) + + m_up2 = c.add_ref( + gf.components.rectangle( + size=(m_up_w, m_dn.ymax - m_dn.ymin - 2 * side_enc[1]), layer=upper_layer + ) + ) + m_up2.move((m_up1.xmax + m_up_spacing, m_dn.ymin + side_enc[1])) + + # generating vias + + via_1 = via_generator( + x_range=(m_up1.xmin, m_up1.xmax), + y_range=(m_up1.ymin, m_up1.ymax), + via_enclosure=via_enc, + via_layer=via_layer, + via_size=via_size, + via_spacing=via_spacing, + ) + c.add_ref(via_1) + + via_2 = via_generator( + x_range=(m_up2.xmin, m_up2.xmax), + y_range=(m_up2.ymin, m_up2.ymax), + via_enclosure=via_enc, + via_layer=via_layer, + via_size=via_size, + via_spacing=via_spacing, + ) + c.add_ref(via_2) + + c.write_gds("mim_cap_temp.gds") + layout.read("mim_cap_temp.gds") + cell_name = "sky_mim_cap_dev" + + return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_diode.py b/sky130/cells/klayout/pymacros/cells/draw_diode.py new file mode 100644 index 000000000..5afa5f6f1 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/draw_diode.py @@ -0,0 +1,239 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +## Diode Pcells Generators for Klayout of skywater130 +######################################################################################################################## + + +import os + +from .via_generator import * +from .globals import * +from .layers_def import * +import gdsfactory as gf + + +gds_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices/photodiode" ) # parent file path + + +def draw_photodiode(layout, device_name): + + ''' + drawing photo diode device + ''' + + if device_name in PHOTO_D_DEV : + layout.read(f"{gds_path}/{device_name}.gds") + cell_name = device_name + else : + cell_name = device_name + + return layout.cell(cell_name) + +def draw_diode ( + layout , + d_type = "n", + w : float = 0.45, + l: float = 0.45, + type = "sky130_fd_pr__diode_pw2nd_05v5", + cath_w : float = 0.17, + grw : float = 0.17, +) : + + ''' + Retern diode + + Args: + layout : layout object + d_type : string of the diode type [n,p] + w : float of the diode width + l: float of the diode length + type : string of the device type + cath_w : float of cathode width in case of p_diode + grw : float of the gaurd ring width + + ''' + + c = gf.Component("sky_diode_dev") + + c_inst = gf.Component("dev inst") + + + # used dimensions and layers + + npsd_enc = 0.125 + diff_tap_spacing : float = 0.37 + + + + con_size = (0.17,0.17) + con_spacing = (0.19,0.19) + d_con_enc = (0.06,0.06) + t_con_enc = (0.12,0.12) + + + li_enc = 0.08 + m1_enc = 0.03 + + con_layer = [licon_layer, mcon_layer] + + lvt_enc : float = 0.18 + + hv_enc = 0.185 + + nwell_enc = 0.185 + + + + if d_type == "n": + d_npsd_layer = nsdm_layer + t_npsd_layer = psdm_layer + elif d_type == "p": + d_npsd_layer = psdm_layer + t_npsd_layer = nsdm_layer + + # generating diff and areaid_diode and its contacts + diff = c_inst.add_ref(gf.components.rectangle(size=(w,l),layer=diff_layer)) + diode = c_inst.add_ref(gf.components.rectangle(size=(w,l),layer=areaid_dio_layer)) + + + d_npsd = c_inst.add_ref(gf.components.rectangle(size=(w+ 2*npsd_enc, l+ 2*npsd_enc),layer=d_npsd_layer)) + d_npsd.move((-npsd_enc,-npsd_enc)) + + + for i in range(2): + d_con = c_inst.add_ref(via_generator(x_range=(0,w),y_range=(0,l),via_enclosure=d_con_enc,via_layer=con_layer[i],via_size=con_size,via_spacing=con_spacing)) + + d_li = c_inst.add_ref(gf.components.rectangle(size=(diode.xmax - diode.xmin + 2*(li_enc-d_con_enc[0]),d_con.ymax - d_con.ymin + 2*li_enc),layer=li_layer)) + d_li.move((-(li_enc-d_con_enc[0]) , d_con.ymin -li_enc)) + d_m1 = c_inst.add_ref(gf.components.rectangle(size=(w,d_li.ymax - d_li.ymin + 2*m1_enc),layer=m1_layer)) + d_m1.movey(d_li.ymin - m1_enc) + + # generating gaurd ring and its contacts + c_temp = gf.Component("temp store") + tap_in = c_temp.add_ref(gf.components.rectangle(size=(w +2*diff_tap_spacing,l +2*diff_tap_spacing) + ,layer=tap_layer)) + tap_in.move((-diff_tap_spacing,-diff_tap_spacing)) + tap_out = c_temp.add_ref(gf.components.rectangle(size=(tap_in.xmax - tap_in.xmin + 2*cath_w, tap_in.ymax - tap_in.ymin + 2*cath_w),layer=tap_layer)) + tap_out.move((tap_in.xmin - cath_w, tap_in.ymin-cath_w)) + tap = c_inst.add_ref(gf.geometry.boolean(A=tap_out, B = tap_in, operation="A-B",layer=tap_layer)) + + + t_npsd_in = c_temp.add_ref(gf.components.rectangle(size=(tap_in.xmax - tap_in.xmin - 2*npsd_enc, tap_in.ymax - tap_in.ymin - 2*npsd_enc) + ,layer=t_npsd_layer)) + t_npsd_in.move((tap_in.xmin + npsd_enc, tap_in.ymin + npsd_enc)) + t_npsd_out = c_temp.add_ref(gf.components.rectangle(size=(tap_out.xmax - tap_out.xmin + 2*npsd_enc, tap_out.ymax - tap_out.ymin + 2*npsd_enc) + ,layer=t_npsd_layer)) + t_npsd_out.move((tap_out.xmin - npsd_enc, tap_out.ymin - npsd_enc)) + t_npsd = c_inst.add_ref(gf.geometry.boolean(A=t_npsd_out, B=t_npsd_in, operation="A-B",layer=t_npsd_layer)) + + if cath_w < con_size[0] + 2*t_con_enc[0]: + t_con_range = (tap_in.xmin, tap_in.xmax) + else : + t_con_range = (tap_out.xmin, tap_out.xmax) + + t_licon_u = c_inst.add_ref(via_generator(x_range=t_con_range,y_range=(tap_in.ymax,tap_out.ymax),via_enclosure=t_con_enc + , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) + + t_licon_d = c_inst.add_ref(via_generator(x_range=t_con_range,y_range=(tap_out.ymin,tap_in.ymin),via_enclosure=t_con_enc + , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) + + t_licon_l = c_inst.add_ref(via_generator(x_range=(tap_out.xmin, tap_in.xmin),y_range=(tap_in.ymin +0.17,tap_in.ymax-0.17),via_enclosure=t_con_enc + , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) + + t_licon_r = c_inst.add_ref(via_generator(x_range=(tap_in.xmax, tap_out.xmax),y_range=(tap_in.ymin +0.17,tap_in.ymax-0.17),via_enclosure=t_con_enc + , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) + + tap_li_in = c_temp.add_ref(gf.components.rectangle(size=(w+2*diff_tap_spacing,l+2*diff_tap_spacing),layer=li_layer)) + tap_li_in.move((-diff_tap_spacing,-diff_tap_spacing)) + tap_li_out = c_temp.add_ref(gf.components.rectangle(size=(tap_in.xmax - tap_in.xmin + 2*cath_w, tap_in.ymax - tap_in.ymin + 2*cath_w),layer=li_layer)) + tap_li_out.move((tap_in.xmin - cath_w, tap_in.ymin-cath_w)) + tap_li = c_inst.add_ref(gf.geometry.boolean(A=tap_li_out, B = tap_li_in, operation="A-B",layer=li_layer)) + + if type == "sky130_fd_pr__diode_pw2nd_05v5_lvt" or type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" or type == "sky130_fd_pr__diode_pd2nw_05v5_lvt": + lvt = c_inst.add_ref(gf.components.rectangle(size=(w+2*lvt_enc,l+2*lvt_enc),layer=lvtn_layer)) + lvt.move((-lvt_enc,-lvt_enc)) + + if type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" or type == "sky130_fd_pr__diode_pw2nd_11v0" : + hvntm = c_inst.add_ref(gf.components.rectangle(size=(w+2*hv_enc,l+2*hv_enc),layer=hvntm_layer)) + hvntm.move((diode.xmin - hv_enc, diode.ymin - hv_enc)) + + if type == "sky130_fd_pr__diode_pd2nw_05v5_hvt" : + hvt = c_inst.add_ref(gf.components.rectangle(size=(w+2*lvt_enc,l+2*lvt_enc),layer=hvtp_layer)) + hvt.move((-lvt_enc,-lvt_enc)) + + if type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" or type == "sky130_fd_pr__diode_pw2nd_11v0" : + hvi = c_inst.add_ref(gf.components.rectangle(size=(tap_out.xmax - tap_out.xmin + 2*hv_enc, tap_out.ymax - tap_out.ymin + 2*hv_enc),layer=hvi_layer)) + hvi.move((tap_out.xmin - hv_enc, tap_out.ymin - hv_enc)) + + # drawing nwell and outer gaurd ring in case of p-diode + if d_type == "p": + + if type == "sky130_fd_pr__diode_pd2nw_11v0": + nwell_enc = 0.34 + + nwell = c_inst.add_ref(gf.components.rectangle(size=(tap_out.xmax - tap_out.xmin + 2*nwell_enc, tap_out.ymax - tap_out.ymin + 2*nwell_enc),layer=nwell_layer)) + nwell.move((tap_out.xmin - nwell_enc, tap_out.ymin - nwell_enc)) + + gr_in = c_temp.add_ref(gf.components.rectangle(size = (c_inst.xmax-c_inst.xmin + 2*diff_tap_spacing,c_inst.ymax - c_inst.ymin + 2*diff_tap_spacing ) + , layer= tap_layer)) + gr_in.move((c_inst.xmin - diff_tap_spacing, c_inst.ymin - diff_tap_spacing)) + gr_out = c_temp.add_ref(gf.components.rectangle(size=(gr_in.xmax - gr_in.xmin + 2*grw, gr_in.ymax - gr_in.ymin + 2*grw),layer=tap_layer)) + gr_out.move((gr_in.xmin - grw, gr_in.ymin - grw)) + gr = c.add_ref(gf.geometry.boolean(A=gr_out, B=gr_in , operation= "A-B", layer=tap_layer)) + + gr_li = c.add_ref(gf.geometry.boolean(A=gr_out, B=gr_in , operation= "A-B", layer=li_layer)) + + g_psdm_in = c.add_ref(gf.components.rectangle(size=(gr_in.xmax - gr_in.xmin - 2*npsd_enc, gr_in.ymax - gr_in.ymin - 2*npsd_enc),layer=psdm_layer)) + g_psdm_in.move((gr_in.xmin + npsd_enc, gr_in.ymin + npsd_enc)) + g_psdm_out = c.add_ref(gf.components.rectangle(size=(gr_out.xmax - gr_out.xmin + 2*npsd_enc, gr_out.ymax - gr_out.ymin + 2*npsd_enc),layer=psdm_layer)) + g_psdm_out.move((gr_out.xmin - npsd_enc, gr_out.ymin - npsd_enc)) + + + if grw < con_size[0] + 2*t_con_enc[0] : + g_con_range = (gr_in.ymin , gr_in.ymax ) + else : + g_con_range = (gr_out.ymin , gr_out.ymax ) + + g_licon_u = c.add_ref(via_generator(x_range=(gr_in.xmin + 0.17, gr_in.xmax-0.17),y_range=(gr_in.ymax,gr_out.ymax),via_enclosure=t_con_enc + , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) + + g_licon_d = c.add_ref(via_generator(x_range=(gr_in.xmin + 0.17, gr_in.xmax-0.17),y_range=(gr_out.ymin,gr_in.ymin),via_enclosure=t_con_enc + , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) + + g_licon_l = c.add_ref(via_generator(x_range=(gr_out.xmin, gr_in.xmin),y_range=g_con_range,via_enclosure=t_con_enc + , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) + + g_licon_r = c.add_ref(via_generator(x_range=(gr_in.xmax, gr_out.xmax),y_range=g_con_range,via_enclosure=t_con_enc + , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) + + + if type == "sky130_fd_pr__diode_pd2nw_11v0": + hvi = c.add_ref(gf.components.rectangle(size=(gr_out.xmax - gr_out.xmin + 2*hv_enc, gr_out.ymax - gr_out.ymin + 2*hv_enc),layer=hvi_layer)) + hvi.move((gr_out.xmin - hv_enc, gr_out.ymin - hv_enc)) + + + + + c.add_ref(c_inst) + + c.write_gds("diode_temp.gds") + layout.read("diode_temp.gds") + cell_name = "sky_diode_dev" + + + return layout.cell(cell_name) + diff --git a/sky130/cells/klayout/pymacros/cells/draw_fet.py b/sky130/cells/klayout/pymacros/cells/draw_fet.py new file mode 100644 index 000000000..a636d6533 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/draw_fet.py @@ -0,0 +1,957 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +## Mosfets Pcells Generators for Klayout of skywater130 +######################################################################################################################## + +from math import ceil, floor +import numpy as np + +import gdsfactory as gf +from gdsfactory.types import Float2, LayerSpec +from .via_generator import * +from .layers_def import * + + +#@gf.cell +def draw_nfet( + layout , + l : float = 0.15, + w : float = 0.42, + sd_con_col : int = 1, + inter_sd_l : float = 0.3,#0.21 , + nf : int = 1, + grw : float = 0.17 , + type = "sky130_fd_pr__nfet_01v8", + bulk = "None", + con_bet_fin : int = 1, + gate_con_pos = "alternating", + interdig : int = 0, + patt = "", + #n = 1 + + +) : #-> gf.Component: + + ''' + Retern nfet + + Args: + layout : layout object + l : Float of gate length + w : Float of gate width + sd_l : Float of source and drain diffusion length + inter_sd_l : Float of source and drain diffusion length between fingers + nf : integer of number of fingers + M : integer of number of multipliers + grw : gaurd ring width when enabled + type : string of the device type + bulk : String of bulk connection type (None, Bulk Tie, Guard Ring) + con_bet_fin : boolean of having contacts for diffusion between fingers + gate_con_pos : string of choosing the gate contact position (bottom, top, alternating ) + + ''' + # used layers and dimensions + + end_cap: float = 0.2 + diff_tap_spacing : float = 0.32 + poly_tap_spacing : float = 0.27 + + diff_nsdm_enc : float = 0.125 + tap_psdm_enc : float = 0.125 + + + gate_npc_ext = 0.11 + npc_spacing = 0.27 + + + gate_lvt_enc : float = 0.18 + + + hv_enclosing : float = 0.185 + + + areaid_lvn_enc : float = 0.1 + + #m1_m1lic_sp = 0.28+ mcon_enc[0] - end_cap + + licon_size = (0.17,0.17) + licon_spacing = (0.19,0.19) + licon_dt_enc = (0.04,0.06) + + licon_p_enc = (0.05,0.08) + + + sd_l_con = ((sd_con_col)*licon_size[0]) + ((sd_con_col-1)*licon_spacing[0]) + 2*licon_dt_enc[0] + sd_l = sd_l_con + 0.05 + + # gds components to store a single instance and the generated device + c = gf.Component("sky_nfet_dev") + + c_inst = gf.Component("dev_temp") + + # generating sd diffusion + + + if interdig == 1 and nf >1 and nf != len(patt) and patt !="": + nf = len(patt) + + l_d = sd_l + nf*l + (nf-1)*inter_sd_l + sd_l # diffution total length + rect_d = gf.components.rectangle(size = (l_d,w), layer= diff_layer) + sd_diff = c_inst.add_ref(rect_d) + + # generatin sd contacts + + sd_con = via_stack(x_range = (0,sd_l),y_range=(0,w),base_layer=diff_layer,metal_level=1) + c_inst.add_array(component=sd_con,columns=2,rows=1,spacing=(sd_l+ nf*l + (nf-1)*inter_sd_l,0)) + + + + if con_bet_fin == 1 and nf>1: + inter_sd_con = via_stack(x_range = (sd_l + l,sd_l + l+ inter_sd_l),y_range=(0,w),base_layer=diff_layer,metal_level=1) + c_inst.add_array(component=inter_sd_con,columns=nf-1,rows=1,spacing=(l+inter_sd_l,0)) + + + + # generating poly + + if (l <= licon_size[0]+ 2*licon_p_enc[0]) : + pc_x = licon_p_enc[0] +licon_size[0] + licon_p_enc[0] + + else : + pc_x = l + + pc_size = (pc_x, licon_p_enc[1] +licon_size[1] + licon_p_enc[1]) + + c_pc = gf.Component("poly con") + + rect_pc = c_pc.add_ref(gf.components.rectangle(size=pc_size,layer=poly_layer)) + + + poly_con = via_stack(x_range=(rect_pc.xmin, rect_pc.xmax),y_range=(rect_pc.ymin, rect_pc.ymax),base_layer=poly_layer,metal_level=1,li_enc_dir="H") + c_pc.add_ref(poly_con) + + if nf == 1 : + poly = c_inst.add_ref(gf.components.rectangle(size=(l,w+2*end_cap),layer=poly_layer)) + poly.move((sd_l,-end_cap)) + + if gate_con_pos == "bottom": + mv = 0 + nr = 1 + elif gate_con_pos == "top" : + mv = pc_size[1]+ w + 2*end_cap + nr = 1 + else : + mv = 0 + nr = 2 + + pc = c_inst.add_array(component=c_pc,rows=nr,columns=1, spacing=(0,pc_size[1]+w+2*end_cap)) + pc.move((sd_l- ((pc_x - l)/2), -pc_size[1] - end_cap + mv)) + + + + + else : + + w_p1 = end_cap + w + end_cap # poly total width + + if inter_sd_l < (npc_spacing + 2*gate_npc_ext) : + + if gate_con_pos == "alternating": + w_p1 += 0.2 + w_p2 = w_p1 + e_c = 0.2 + else : + w_p2 = w_p1 + licon_p_enc[1] +licon_size[1] + licon_p_enc[1] + npc_spacing + 0.1 + e_c = 0 + + if gate_con_pos == "bottom" : + p_mv = -end_cap - (w_p2-w_p1) + else : + p_mv = -end_cap + + else : + w_p2 = w_p1 + p_mv = -end_cap + e_c = 0 + + rect_p1 = gf.components.rectangle(size = (l,w_p1), layer= poly_layer) + rect_p2 = gf.components.rectangle(size = (l,w_p2), layer= poly_layer) + poly1 = c_inst.add_array(rect_p1, rows= 1 , columns= ceil(nf/2) , spacing= [2*(inter_sd_l+l), 0 ]) + poly1.move((sd_l,-end_cap - e_c)) + + + poly2 = c_inst.add_array(rect_p2, rows= 1 , columns= floor(nf/2) , spacing= [2*(inter_sd_l+l), 0 ]) + poly2.move((sd_l+l+inter_sd_l,p_mv)) + + + #generating poly contacts setups + + if gate_con_pos == "bottom": + mv_1 = 0 + mv_2 = - (w_p2-w_p1) + elif gate_con_pos == "top" : + mv_1 = pc_size[1]+ w_p1 + mv_2 = pc_size[1]+ w_p2 + else : + mv_1 = -e_c + mv_2 = pc_size[1]+ w_p2 + + + nc1 = ceil(nf/2) + nc2 = floor(nf/2) + + pc_spacing = 2*(inter_sd_l + l) + + # generating poly contacts + + pc1 = c_inst.add_array(component=c_pc,rows=1,columns=nc1,spacing=(pc_spacing,0)) + pc1.move((sd_l- ((pc_x - l)/2), -pc_size[1] - end_cap + mv_1)) + + pc2 = c_inst.add_array(component=c_pc,rows=1,columns=nc2,spacing=(pc_spacing,0)) + pc2.move((sd_l- ((pc_x - l)/2) + (inter_sd_l + l), -pc_size[1] - end_cap + mv_2)) + + + + if interdig == 1 : + if nf == len(patt): + pat = list(patt) + nt = [] # list to store the symbols of transistors and thier number nt(number of transistors) + [nt.append(x) for x in pat if x not in nt] + nl = int(len(nt)) + + m2_spacing = 0.14 + via1_size = (0.15,0.15) + via1_enc = (0.085,0.055) + via1_spacing = (0.17,0.17) + via2_size = (0.2,0.2) + via2_enc = (0.085,0.065) + via2_spacing = (0.2,0.2) + + m2_y = via1_size[1]+2*via1_enc[1] + m2 = gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin, m2_y),layer=m2_layer) + + if gate_con_pos == "alternating": + pat_o = [] + pat_e = [] + + for i in range(int(nf)): + if i%2 == 0 : + pat_e.append(pat[i]) + else : + pat_o.append(pat[i]) + + nt_o = [] + [nt_o.append(x) for x in pat_o if x not in nt_o] + + nt_e = [] + [nt_e.append(x) for x in pat_e if x not in nt_e] + + nl_b = len(nt_e) + nl_u = len(nt_o) + + m2_y = via2_size[1]+2*via2_enc[1] + m2 = gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin, m2_y),layer=m2_layer) + + m2_arrb = c_inst.add_array(component=m2, columns=1, rows=nl_b,spacing= (0, -m2_y - m2_spacing)) + m2_arrb.movey(pc1.ymin - m2_spacing - m2_y) + + m2_arru = c_inst.add_array(component=m2, columns=1, rows=nl_u,spacing= (0, m2_y + m2_spacing)) + m2_arru.movey(pc2.ymax + m2_spacing) + + + for i in range(nl_u): + for j in range(floor(nf/2)): + if pat_o[j] == nt_o[i]: + m1 = c_inst.add_ref(gf.components.rectangle( + size=(poly_con.xmax - poly_con.xmin , ((pc2.ymax + (i+1)*(m2_spacing+ m2_y)) - pc2.ymin )),layer=m1_layer)) + m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + (2*j +1)*(l+inter_sd_l)) + , (pc2.ymin+0.06))) + via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arru.ymin + i*(m2_y+m2_spacing),m2_arru.ymin + i*(m2_y+m2_spacing)+m2_y) + , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + via1 = c_inst.add_ref(via1_dr) + c_inst.add_label(f"{pat_o[j]}",position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) + + + + for i in range(nl_b): + for j in range(ceil(nf/2)): + if pat_e[j] == nt_e[i]: + + m1 = c_inst.add_ref(gf.components.rectangle( + size=(poly_con.xmax - poly_con.xmin , ((pc1.ymax + (i+1)*(m2_spacing+ m2_y)) -pc1.ymin )),layer=m1_layer)) + m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + (2*j)*(l+inter_sd_l)), -(m1.ymax - m1.ymin) + (pc1.ymax-0.06))) + via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arrb.ymax - i*(m2_spacing+m2_y) - m2_y,m2_arrb.ymax - i*(m2_spacing+m2_y)) + , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + via1 = c_inst.add_ref(via1_dr) + c_inst.add_label(f"{pat_e[j]}",position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) + + + + m3_x = via2_size[0] + 2*via2_enc[0] + m3_spacing = 0.3 + + for i in range(nl_b): + for j in range(nl_u): + if nt_e[i] == nt_o[j]: + + m2_join_b = c_inst.add_ref(gf.components.rectangle(size=(m2_y+ (i+1)*(m3_spacing+m3_x),m2_y),layer=m2_layer) + .move((m2_arrb.xmin -(m2_y + (i+1)*(m3_spacing+m3_x)),m2_arrb.ymax - i*(m2_spacing+m2_y) - m2_y))) + m2_join_u = c_inst.add_ref(gf.components.rectangle(size=(m2_y+ (i+1)*(m3_spacing+m3_x),m2_y),layer=m2_layer) + .move((m2_arru.xmin -( m2_y + (i+1)*(m3_spacing+m3_x) ),m2_arru.ymin + j*(m2_spacing+m2_y)))) + m3 = c_inst.add_ref(gf.components.rectangle(size=(m3_x, m2_join_u.ymax - m2_join_b.ymin),layer=m1_layer)) + m3.move((m2_join_b.xmin,m2_join_b.ymin)) + via2_dr = via_generator(x_range=(m3.xmin,m3.xmax),y_range=(m2_join_b.ymin,m2_join_b.ymax),via_enclosure=via1_enc,via_size=via1_size + ,via_layer=via1_layer,via_spacing=via1_spacing) + via2 = c_inst.add_array(component=via2_dr,columns=1,rows=2,spacing=(0,m2_join_u.ymin-m2_join_b.ymin)) + + + + elif gate_con_pos == "top" : + + m2_arr = c_inst.add_array(component=m2, columns=1, rows=nl , spacing=(0,m2.ymax-m2.ymin + m2_spacing)) + m2_arr.movey(pc2.ymax + m2_spacing) + + for i in range(nl): + for j in range(int(nf)): + if pat[j] == nt[i]: + m1 = c_inst.add_ref(gf.components.rectangle( + size=(poly_con.xmax - poly_con.xmin , ((pc2.ymax + (i+1)*(m2_spacing+ m2_y)) - ((1-j%2)*pc1.ymin) - (j%2)*pc2.ymin )),layer=m1_layer)) + m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + j*(l+inter_sd_l)) + , (1-j%2)*(pc1.ymin+0.06) + (j%2)*(pc2.ymin+0.06))) + via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arr.ymin + i*(m2_spacing+m2_y),m2_arr.ymin + i*(m2_spacing+m2_y)+m2_y) + , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + via1 = c_inst.add_ref(via1_dr) + c_inst.add_label(f"{pat[j]}",position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) + + + + elif gate_con_pos == "bottom" : + + m2_arr = c_inst.add_array(component=m2, columns=1, rows=nl , spacing=(0,-m2_y - m2_spacing)) + m2_arr.movey(pc2.ymin - m2_spacing - m2_y) + + for i in range(nl): + for j in range(int(nf)): + if pat[j] == nt[i]: + + m1 = c_inst.add_ref(gf.components.rectangle( + size=(poly_con.xmax - poly_con.xmin , ((pc1.ymax + (i+1)*(m2_spacing+ m2_y)) - (j%2)*pc1.ymin - (1-j%2)*pc2.ymin)),layer=m1_layer)) + m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + j*(l+inter_sd_l)), -(m1.ymax - m1.ymin) + (1-j%2)*(pc1.ymax-0.06)+ (j%2)*(pc2.ymax-0.06))) + via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arr.ymax - i*(m2_spacing+m2_y) -m2_y,m2_arr.ymax - i*(m2_spacing+m2_y) ) + , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + via1 = c_inst.add_ref(via1_dr) + c_inst.add_label(f"{pat[j]}",position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) + + + + + + + # generating bulk + if bulk == "None": + nsdm = c_inst.add_ref(gf.components.rectangle(size=(l_d+ 2*diff_nsdm_enc, w+ 2*diff_nsdm_enc),layer= nsdm_layer)) + nsdm.move((-diff_nsdm_enc,-diff_nsdm_enc)) + + if type=="sky130_fd_pr__nfet_g5v0d10v5" or type== "sky130_fd_pr__nfet_05v0_nvt" or type == "sky130_fd_pr__nfet_03v3_nvt": + hvntm = c_inst.add_ref(gf.components.rectangle(size=(l_d+2*hv_enclosing,w+2*hv_enclosing),layer=hvntm_layer)) + hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin- hv_enclosing)) + + + elif bulk == "bulk tie": + rect_bulk = c_inst.add_ref(gf.components.rectangle(size=(sd_l*1.5,w),layer=tap_layer)) + rect_bulk.connect("e1",destination=sd_diff.ports["e3"]) + nsdm = c_inst.add_ref(gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin +diff_nsdm_enc,w + 2*diff_nsdm_enc),layer=nsdm_layer)) + nsdm.move((-diff_nsdm_enc,-diff_nsdm_enc)) + psdm = c_inst.add_ref(gf.components.rectangle(size=(rect_bulk.xmax - rect_bulk.xmin +tap_psdm_enc, w+ 2*tap_psdm_enc), layer= psdm_layer)) + psdm.connect("e1",destination = nsdm.ports["e3"]) + + bulk_con = via_stack(x_range= (rect_bulk.xmin+0.1,rect_bulk.xmax-0.1),y_range=(rect_bulk.ymin,rect_bulk.ymax),base_layer=tap_layer,metal_level=0) + c_inst.add_ref(bulk_con) + + + if type=="sky130_fd_pr__nfet_g5v0d10v5" or type== "sky130_fd_pr__nfet_05v0_nvt" or type == "sky130_fd_pr__nfet_03v3_nvt": + hvntm = c_inst.add_ref(gf.components.rectangle(size=(l_d+hv_enclosing,w+2*hv_enclosing),layer=hvntm_layer)) + hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin- hv_enclosing)) + + + + + + elif bulk == "Gaurd Ring": + + nsdm = c_inst.add_ref(gf.components.rectangle(size=(l_d+ 2*diff_nsdm_enc, w+ 2*diff_nsdm_enc),layer= nsdm_layer)) + nsdm.move((-diff_nsdm_enc,-diff_nsdm_enc)) + c.add_ref(c_inst) + + c_temp = gf.Component("temp_store") + rect_bulk_in = c_temp.add_ref(gf.components.rectangle(size=((c_inst.xmax - c_inst.xmin) + 2*diff_tap_spacing, + (c_inst.ymax - c_inst.ymin) + 2*poly_tap_spacing ) + , layer= tap_layer)) + rect_bulk_in.move((c_inst.xmin -diff_tap_spacing,c_inst.ymin - poly_tap_spacing)) + rect_bulk_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) + 2*grw,(rect_bulk_in.ymax - rect_bulk_in.ymin) + 2*grw ) + , layer= tap_layer)) + rect_bulk_out.move((rect_bulk_in.xmin - grw , rect_bulk_in.ymin -grw )) + B = c.add_ref(gf.geometry.boolean(A= rect_bulk_out , B = rect_bulk_in , operation= "A-B", layer= tap_layer) ) + + psdm_in = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) - 2*tap_psdm_enc, (rect_bulk_in.ymax - rect_bulk_in.ymin) - 2*tap_psdm_enc ) + , layer= psdm_layer)) + psdm_in.move((rect_bulk_in.xmin + tap_psdm_enc, rect_bulk_in.ymin + tap_psdm_enc)) + psdm_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_out.xmax - rect_bulk_out.xmin) + 2*tap_psdm_enc, (rect_bulk_out.ymax - rect_bulk_out.ymin) + 2*tap_psdm_enc ) + , layer= nsdm_layer)) + psdm_out.move((rect_bulk_out.xmin - tap_psdm_enc, rect_bulk_out.ymin - tap_psdm_enc)) + psdm = c.add_ref(gf.geometry.boolean(A= psdm_out , B = psdm_in , operation= "A-B", layer= psdm_layer) ) + + + + # generating contacts + + + ring_con_bot = c.add_ref(via_generator(x_range=(rect_bulk_in.xmin + 0.17,rect_bulk_in.xmax-0.17),y_range=(rect_bulk_out.ymin,rect_bulk_in.ymin) + , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) + + ring_con_up = c.add_ref(via_generator(x_range=(rect_bulk_in.xmin+0.17,rect_bulk_in.xmax-0.17),y_range=(rect_bulk_in.ymax,rect_bulk_out.ymax) + , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) + + ring_con_r = c.add_ref(via_generator(x_range=(rect_bulk_out.xmin,rect_bulk_in.xmin),y_range=(rect_bulk_in.ymin+0.17,rect_bulk_in.ymax-0.17) + , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) + + ring_con_l = c.add_ref(via_generator(x_range=(rect_bulk_in.xmax,rect_bulk_out.xmax),y_range=(rect_bulk_in.ymin+0.17,rect_bulk_in.ymax-0.17) + , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) + + tap_li_in = c_temp.add_ref(gf.components.rectangle(size=((l_d ) + 2*diff_tap_spacing, + (c_inst.ymax - c_inst.ymin) + 2*poly_tap_spacing ) + , layer= li_layer)) + tap_li_in.move((-diff_tap_spacing,c_inst.ymin - poly_tap_spacing)) + tap_li_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) + 2*grw,(rect_bulk_in.ymax - rect_bulk_in.ymin) + 2*grw ) + , layer= li_layer)) + tap_li_out.move((rect_bulk_in.xmin - grw , rect_bulk_in.ymin -grw )) + li = c.add_ref(gf.geometry.boolean(A= rect_bulk_out , B = rect_bulk_in , operation= "A-B", layer= li_layer) ) + + + + # generating hvi for high voltage + if type=="sky130_fd_pr__nfet_g5v0d10v5" or type== "sky130_fd_pr__nfet_05v0_nvt" or type == "sky130_fd_pr__nfet_03v3_nvt": + hvi = c.add_ref(gf.components.rectangle(size=(rect_bulk_out.xmax-rect_bulk_out.xmin + 2*hv_enclosing + , rect_bulk_out.ymax - rect_bulk_out.ymin + 2*hv_enclosing),layer=hvi_layer)) + hvi.move((rect_bulk_out.xmin-hv_enclosing, rect_bulk_out.ymin-hv_enclosing)) + + + hvntm = c_inst.add_ref(gf.components.rectangle(size=(l_d+2*hv_enclosing,w+2*hv_enclosing),layer=hvntm_layer)) + hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin- hv_enclosing)) + + + + if bulk != "Gaurd Ring": + c.add_ref(c_inst) + + + # generating hvi and hvntm for high voltage + if type=="sky130_fd_pr__nfet_g5v0d10v5" or type== "sky130_fd_pr__nfet_05v0_nvt" or type == "sky130_fd_pr__nfet_03v3_nvt" : + hvi = c.add_ref(gf.components.rectangle(size=(c_inst.xmax-c_inst.xmin + 2*hv_enclosing + , (c_inst.ymax - c_inst.ymin )+ 2*hv_enclosing),layer=hvi_layer)) + hvi.move((c_inst.xmin-hv_enclosing, c_inst.ymin-hv_enclosing)) + + + + + if type == "sky130_fd_pr__nfet_01v8_lvt": + lvt = c_inst.add_ref(gf.components.rectangle(size= (nf*l + (nf-1)*inter_sd_l + 2*gate_lvt_enc, w + 2*gate_lvt_enc) + , layer= lvtn_layer)) + lvt.move((sd_l - gate_lvt_enc,-gate_lvt_enc)) + + if type == "sky130_fd_pr__nfet_03v3_nvt" or type == "sky130_fd_pr__nfet_05v0_nvt": + + nvt = c_inst.add_ref(gf.components.rectangle(size= (nf*l + (nf-1)*inter_sd_l + 2*gate_lvt_enc, w + 2*gate_lvt_enc) + , layer= lvtn_layer)) + nvt.move((sd_l - gate_lvt_enc,-gate_lvt_enc)) + + if type == "sky130_fd_pr__nfet_03v3_nvt" : + areaid_lvn = gf.components.rectangle(size=(l+2*areaid_lvn_enc,w+2*areaid_lvn_enc),layer=areaid_lvn_layer) + areaid_lvn_arr = c_inst.add_array(component=areaid_lvn,columns=nf,rows=1,spacing=[l+inter_sd_l,0]) + areaid_lvn_arr.move((sd_l-areaid_lvn_enc , sd_diff.ymin - areaid_lvn_enc)) + + + # creating layout and cell in klayout + c.write_gds(f"nfet_temp.gds") + layout.read(f"nfet_temp.gds") + cell_name = "sky_nfet_dev" + + + return layout.cell(cell_name) + #return c + + +#@gf.cell +def draw_pfet( + layout , + l : float = 0.15, + w : float = 0.42, + sd_con_col : int = 1, + inter_sd_l : float = 0.5,#0.21 , + nf : int = 5, + grw : float = 0.17 , + type = "sky130_fd_pr__pfet_01v8", + bulk = "None", + con_bet_fin : int = 1, + gate_con_pos = "alternating", + interdig : int = 1, + patt = "", + #n = 1 + + +) -> gf.Component: + + ''' + Retern pfet + + Args: + layout : layout object + l : Float of gate length + w : Float of gate width + sd_con_col : integer of number of contacts columns contained in source and drain area + inter_sd_l : Float of source and drain diffusion length between fingers + nf : integer of number of fingers + M : integer of number of multipliers + grw : gaurd ring width when enabled + type : string of the device type + bulk : String of bulk connection type (None, Bulk Tie, Guard Ring) + con_bet_fin : boolean of having contacts for diffusion between fingers + gate_con_pos : string of choosing the gate contact position (bottom, top, alternating ) + + + ''' + + # used layers and dimensions + + end_cap: float = 0.2 # may be increases to solve the met1 drc prob + diff_tap_spacing : float = 0.32 + poly_tap_spacing : float = 0.27 + + diff_psdm_enc : float = 0.125 + tap_nsdm_enc : float = 0.125 + + nwell_enclosing : float = 0.18 + + if type == "sky130_fd_pr__pfet_g5v0d10v5" : + nwell_enclosing = 0.34 + + + gate_npc_ext = 0.11 + npc_spacing = 0.27 + + + gate_lvt_enc : float = 0.18 + + gate_hvt_enc : float = 0.18 + + licon_size = (0.17,0.17) + licon_spacing = (0.19,0.19) + licon_dt_enc = (0.04,0.06) + + licon_t_enc = 0.12 + + licon_p_enc = (0.05,0.08) + + + #m1_m1lic_sp = 0.28+ mcon_enc[0] - end_cap + + sd_l_con = ((sd_con_col)*licon_size[0]) + ((sd_con_col-1)*licon_spacing[0]) + 2*licon_dt_enc[0] + sd_l = sd_l_con + 0.05 + + + + # gds components to store a single instance and the generated device + c = gf.Component("sky_pfet_dev") + + c_inst = gf.Component("dev_temp") + + + + # generating sd diffusion + + if interdig == 1 and nf >1 and nf != len(patt) and patt !="": + nf = len(patt) + + l_d = sd_l + nf*l + (nf-1)*inter_sd_l + sd_l # diffution total length + rect_d = gf.components.rectangle(size = (l_d,w), layer= diff_layer) + sd_diff = c_inst.add_ref(rect_d) + + + # generatin sd contacts + + sd_con = via_stack(x_range = (0,sd_l),y_range=(0,w),base_layer=diff_layer,metal_level=1) + c_inst.add_array(component=sd_con,columns=2,rows=1,spacing=(sd_l+ nf*l + (nf-1)*inter_sd_l,0)) + + if con_bet_fin == 1 and nf>1: + inter_sd_con = via_stack(x_range = (sd_l + l,sd_l + l+ inter_sd_l),y_range=(0,w),base_layer=diff_layer,metal_level=1) + c_inst.add_array(component=inter_sd_con,columns=nf-1,rows=1,spacing=(l+inter_sd_l,0)) + + + + # generating poly + + if (l <= licon_size[0] +2*licon_p_enc[0]) : + pc_x = licon_p_enc[0] +licon_size[0] + licon_p_enc[0] + + else : + pc_x = l + + pc_size = (pc_x, licon_p_enc[1] +licon_size[1] + licon_p_enc[1]) + + c_pc = gf.Component("poly con") + + rect_pc = c_pc.add_ref(gf.components.rectangle(size=pc_size,layer=poly_layer)) + + + poly_con = via_stack(x_range=(rect_pc.xmin, rect_pc.xmax),y_range=(rect_pc.ymin, rect_pc.ymax),base_layer=poly_layer,metal_level=1,li_enc_dir="H") + c_pc.add_ref(poly_con) + + if nf == 1 : + poly = c_inst.add_ref(gf.components.rectangle(size=(l,w+2*end_cap),layer=poly_layer)) + poly.move((sd_l,-end_cap)) + + if gate_con_pos == "bottom": + mv = 0 + nr = 1 + elif gate_con_pos == "top" : + mv = pc_size[1]+ w + 2*end_cap + nr = 1 + else : + mv = 0 + nr = 2 + + pc = c_inst.add_array(component=c_pc,rows=nr,columns=1, spacing=(0,pc_size[1]+w+2*end_cap)) + pc.move((sd_l- ((pc_x - l)/2), -pc_size[1] - end_cap + mv)) + + + + else : + + w_p1 = end_cap + w + end_cap # poly total width + + if inter_sd_l < (npc_spacing + 2*gate_npc_ext) : + + if gate_con_pos == "alternating": + w_p1 += 0.2 + w_p2 = w_p1 + e_c = 0.2 + else : + w_p2 = w_p1 + licon_p_enc[1] +licon_size[1] + licon_p_enc[1] + npc_spacing + 0.1 + e_c = 0 + + if gate_con_pos == "bottom" : + p_mv = -end_cap - (w_p2-w_p1) + else : + p_mv = -end_cap + + else : + w_p2 = w_p1 + p_mv = -end_cap + e_c = 0 + + rect_p1 = gf.components.rectangle(size = (l,w_p1), layer= poly_layer) + rect_p2 = gf.components.rectangle(size = (l,w_p2), layer= poly_layer) + poly1 = c_inst.add_array(rect_p1, rows= 1 , columns= ceil(nf/2) , spacing= [2*(inter_sd_l+l), 0 ]) + poly1.move((sd_l,-end_cap - e_c)) + + + poly2 = c_inst.add_array(rect_p2, rows= 1 , columns= floor(nf/2) , spacing= [2*(inter_sd_l+l), 0 ]) + poly2.move((sd_l+l+inter_sd_l,p_mv)) + + + #generating poly contacts setups + + if gate_con_pos == "bottom": + mv_1 = 0 + mv_2 = - (w_p2-w_p1) + elif gate_con_pos == "top" : + mv_1 = pc_size[1]+ w_p1 + mv_2 = pc_size[1]+ w_p2 + else : + mv_1 = -e_c + mv_2 = pc_size[1]+ w_p2 + + + nc1 = ceil(nf/2) + nc2 = floor(nf/2) + + pc_spacing = 2*(inter_sd_l + l) + + # generating poly contacts + + pc1 = c_inst.add_array(component=c_pc,rows=1,columns=nc1,spacing=(pc_spacing,0)) + pc1.move((sd_l- ((pc_x - l)/2), -pc_size[1] - end_cap + mv_1)) + + pc2 = c_inst.add_array(component=c_pc,rows=1,columns=nc2,spacing=(pc_spacing,0)) + pc2.move((sd_l- ((pc_x - l)/2) + (inter_sd_l + l), -pc_size[1] - end_cap + mv_2)) + + + + if interdig == 1 : + if nf == len(patt) : + pat = list(patt) + nt = [] # list to store the symbols of transistors and thier number nt(number of transistors) + [nt.append(x) for x in pat if x not in nt] + nl = len(nt) + + m2_spacing = 0.14 + via1_size = (0.15,0.15) + via1_enc = (0.085,0.055) + via1_spacing = (0.17,0.17) + via2_size = (0.2,0.2) + via2_enc = (0.085,0.065) + via2_spacing = (0.2,0.2) + + m2_y = via1_size[1]+2*via1_enc[1] + m2 = gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin, m2_y),layer=m2_layer) + + if gate_con_pos == "alternating": + pat_o = [] + pat_e = [] + + for i in range(int(nf)): + if i%2 == 0 : + pat_e.append(pat[i]) + else : + pat_o.append(pat[i]) + + nt_o = [] + [nt_o.append(x) for x in pat_o if x not in nt_o] + + nt_e = [] + [nt_e.append(x) for x in pat_e if x not in nt_e] + + nl_b = len(nt_e) + nl_u = len(nt_o) + + m2_y = via2_size[1]+2*via2_enc[1] + m2 = gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin, m2_y),layer=m2_layer) + + m2_arrb = c_inst.add_array(component=m2, columns=1, rows=nl_b,spacing= (0, -m2_y - m2_spacing)) + m2_arrb.movey(pc1.ymin - m2_spacing - m2_y) + + m2_arru = c_inst.add_array(component=m2, columns=1, rows=nl_u,spacing= (0, m2_y + m2_spacing)) + m2_arru.movey(pc2.ymax + m2_spacing) + + + for i in range(nl_u): + for j in range(floor(nf/2)): + if pat_o[j] == nt_o[i]: + m1 = c_inst.add_ref(gf.components.rectangle( + size=(poly_con.xmax - poly_con.xmin , ((pc2.ymax + (i+1)*(m2_spacing+ m2_y)) - pc2.ymin )),layer=m1_layer)) + m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + (2*j +1)*(l+inter_sd_l)) + , (pc2.ymin+0.06))) + via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arru.ymin + i*(m2_y+m2_spacing),m2_arru.ymin + i*(m2_y+m2_spacing)+m2_y) + , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + via1 = c_inst.add_ref(via1_dr) + c_inst.add_label(f'{pat_o[j]}',position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) + #c_inst.add_label(f'G_{pat_o[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) + + + + for i in range(nl_b): + for j in range(ceil(nf/2)): + if pat_e[j] == nt_e[i]: + + m1 = c_inst.add_ref(gf.components.rectangle( + size=(poly_con.xmax - poly_con.xmin , ((pc1.ymax + (i+1)*(m2_spacing+ m2_y)) -pc1.ymin )),layer=m1_layer)) + m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + (2*j)*(l+inter_sd_l)), -(m1.ymax - m1.ymin) + (pc1.ymax-0.06))) + via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arrb.ymax - i*(m2_spacing+m2_y) - m2_y,m2_arrb.ymax - i*(m2_spacing+m2_y)) + , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + via1 = c_inst.add_ref(via1_dr) + c_inst.add_label(f'{pat_e[j]}',position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) + #c_inst.add_label(f'G_{pat_e[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc1.ymin + pc1.ymax)/2),layer=m1_lbl) + + + m3_x = via2_size[0] + 2*via2_enc[0] + m3_spacing = 0.3 + + for i in range(nl_b): + for j in range(nl_u): + if nt_e[i] == nt_o[j]: + + m2_join_b = c_inst.add_ref(gf.components.rectangle(size=(m2_y+ (i+1)*(m3_spacing+m3_x),m2_y),layer=m2_layer) + .move((m2_arrb.xmin -(m2_y + (i+1)*(m3_spacing+m3_x)),m2_arrb.ymax - i*(m2_spacing+m2_y) - m2_y))) + m2_join_u = c_inst.add_ref(gf.components.rectangle(size=(m2_y+ (i+1)*(m3_spacing+m3_x),m2_y),layer=m2_layer) + .move((m2_arru.xmin -( m2_y + (i+1)*(m3_spacing+m3_x) ),m2_arru.ymin + j*(m2_spacing+m2_y)))) + m3 = c_inst.add_ref(gf.components.rectangle(size=(m3_x, m2_join_u.ymax - m2_join_b.ymin),layer=m1_layer)) + m3.move((m2_join_b.xmin,m2_join_b.ymin)) + via2_dr = via_generator(x_range=(m3.xmin,m3.xmax),y_range=(m2_join_b.ymin,m2_join_b.ymax),via_enclosure=via1_enc,via_size=via1_size + ,via_layer=via1_layer,via_spacing=via1_spacing) + via2 = c_inst.add_array(component=via2_dr,columns=1,rows=2,spacing=(0,m2_join_u.ymin-m2_join_b.ymin)) + + + + elif gate_con_pos == "top" : + + m2_arr = c_inst.add_array(component=m2, columns=1, rows=nl , spacing=(0,m2.ymax-m2.ymin + m2_spacing)) + m2_arr.movey(pc2.ymax + m2_spacing) + + for i in range(nl): + for j in range(int(nf)): + if pat[j] == nt[i]: + m1 = c_inst.add_ref(gf.components.rectangle( + size=(poly_con.xmax - poly_con.xmin , ((pc2.ymax + (i+1)*(m2_spacing+ m2_y)) - ((1-j%2)*pc1.ymin) - (j%2)*pc2.ymin )),layer=m1_layer)) + m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + j*(l+inter_sd_l)) + , (1-j%2)*(pc1.ymin+0.06) + (j%2)*(pc2.ymin+0.06))) + via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arr.ymin + i*(m2_spacing+m2_y),m2_arr.ymin + i*(m2_spacing+m2_y)+m2_y) + , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + via1 = c_inst.add_ref(via1_dr) + c_inst.add_label(f'{pat[j]}',position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) + #c_inst.add_label(f'G_{pat[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) + + + elif gate_con_pos == "bottom" : + + m2_arr = c_inst.add_array(component=m2, columns=1, rows=nl , spacing=(0,-m2_y - m2_spacing)) + m2_arr.movey(pc2.ymin - m2_spacing - m2_y) + + for i in range(nl): + for j in range(int(nf)): + if pat[j] == nt[i]: + + m1 = c_inst.add_ref(gf.components.rectangle( + size=(poly_con.xmax - poly_con.xmin , ((pc1.ymax + (i+1)*(m2_spacing+ m2_y)) - (j%2)*pc1.ymin - (1-j%2)*pc2.ymin)),layer=m1_layer)) + m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + j*(l+inter_sd_l)), -(m1.ymax - m1.ymin) + (1-j%2)*(pc1.ymax-0.06)+ (j%2)*(pc2.ymax-0.06))) + via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arr.ymax - i*(m2_spacing+m2_y) -m2_y,m2_arr.ymax - i*(m2_spacing+m2_y) ) + , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + via1 = c_inst.add_ref(via1_dr) + c_inst.add_label(f'{pat[j]}',position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) + #c_inst.add_label(f'G_{pat[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) + + + # generating bulk + if bulk == "None": + psdm = c_inst.add_ref(gf.components.rectangle(size=(l_d+ 2*diff_psdm_enc, w+ 2*diff_psdm_enc),layer= psdm_layer)) + psdm.move((-diff_psdm_enc,-diff_psdm_enc)) + + + elif bulk == "bulk tie": + rect_bulk = c_inst.add_ref(gf.components.rectangle(size=(1.3*sd_l,w),layer=tap_layer)) + rect_bulk.connect("e1",destination=sd_diff.ports["e3"]) + psdm = c_inst.add_ref(gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin + diff_psdm_enc,w + 2*diff_psdm_enc),layer=psdm_layer)) + psdm.move((-diff_psdm_enc,-diff_psdm_enc)) + nsdm = c_inst.add_ref(gf.components.rectangle(size=(rect_bulk.xmax - rect_bulk.xmin +tap_nsdm_enc, w+ 2*tap_nsdm_enc), layer= nsdm_layer)) + nsdm.move((rect_bulk.xmin,rect_bulk.ymin - tap_nsdm_enc)) + + bulk_con = via_stack(x_range= (rect_bulk.xmin+0.1,rect_bulk.xmax-0.1),y_range=(rect_bulk.ymin,rect_bulk.ymax),base_layer=tap_layer,metal_level=0) + c_inst.add_ref(bulk_con) + + + + elif bulk == "Gaurd Ring": + + psdm = c_inst.add_ref(gf.components.rectangle(size=(l_d+ 2*diff_psdm_enc, w+ 2*diff_psdm_enc),layer= psdm_layer)) + psdm.move((-diff_psdm_enc,-diff_psdm_enc)) + c.add_ref(c_inst) + + c_temp = gf.Component("temp_store") + rect_bulk_in = c_temp.add_ref(gf.components.rectangle(size=((c_inst.xmax - c_inst.xmin) + 2*diff_tap_spacing, + (c_inst.ymax - c_inst.ymin) + 2*poly_tap_spacing ) + , layer= tap_layer)) + + rect_bulk_in.move((c_inst.xmin-diff_tap_spacing,c_inst.ymin - poly_tap_spacing)) + rect_bulk_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) + 2*grw,(rect_bulk_in.ymax - rect_bulk_in.ymin) + 2*grw ) + , layer= tap_layer)) + rect_bulk_out.move((rect_bulk_in.xmin - grw , rect_bulk_in.ymin -grw )) + B = c.add_ref(gf.geometry.boolean(A= rect_bulk_out , B = rect_bulk_in , operation= "A-B", layer= tap_layer) ) + + nsdm_in = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) - 2*tap_nsdm_enc, (rect_bulk_in.ymax - rect_bulk_in.ymin) - 2*tap_nsdm_enc ) + , layer= nsdm_layer)) + nsdm_in.move((rect_bulk_in.xmin + tap_nsdm_enc, rect_bulk_in.ymin + tap_nsdm_enc)) + nsdm_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_out.xmax - rect_bulk_out.xmin) + 2*tap_nsdm_enc, (rect_bulk_out.ymax - rect_bulk_out.ymin) + 2*tap_nsdm_enc ) + , layer= nsdm_layer)) + nsdm_out.move((rect_bulk_out.xmin - tap_nsdm_enc, rect_bulk_out.ymin - tap_nsdm_enc)) + nsdm = c.add_ref(gf.geometry.boolean(A= nsdm_out , B = nsdm_in , operation= "A-B", layer= nsdm_layer) ) + + # adding contacts + + if grw < licon_size[0] + 2*licon_t_enc : + g_con_range = (B.ymin , B.ymax ) + else : + g_con_range = (B.ymin , B.ymax ) + + ring_con_bot = c.add_ref(via_generator(x_range=(rect_bulk_in.xmin+0.17,rect_bulk_in.xmax-0.17),y_range=(rect_bulk_out.ymin,rect_bulk_in.ymin) + , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) + + ring_con_up = c.add_ref(via_generator(x_range=(rect_bulk_in.xmin+0.17,rect_bulk_in.xmax-0.17),y_range=(rect_bulk_in.ymax,rect_bulk_out.ymax) + , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) + + ring_con_r = c.add_ref(via_generator(x_range=(rect_bulk_out.xmin,rect_bulk_in.xmin),y_range=g_con_range + , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) + + ring_con_l = c.add_ref(via_generator(x_range=(rect_bulk_in.xmax,rect_bulk_out.xmax),y_range=g_con_range + , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) + + tap_li_in = c_temp.add_ref(gf.components.rectangle(size=((l_d ) + 2*diff_tap_spacing, + (c_inst.ymax - c_inst.ymin) + 2*poly_tap_spacing ) + , layer= li_layer)) + tap_li_in.move((-diff_tap_spacing,c_inst.ymin - poly_tap_spacing)) + tap_li_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) + 2*grw,(rect_bulk_in.ymax - rect_bulk_in.ymin) + 2*grw ) + , layer= li_layer)) + tap_li_out.move((rect_bulk_in.xmin - grw , rect_bulk_in.ymin -grw )) + li = c.add_ref(gf.geometry.boolean(A= rect_bulk_out , B = rect_bulk_in , operation= "A-B", layer= li_layer) ) + + + # generating nwell + nwell = c.add_ref(gf.components.rectangle(size=(nsdm_out.xmax-nsdm_out.xmin + 2*nwell_enclosing, nsdm_out.ymax-nsdm_out.ymin + 2*nwell_enclosing) + , layer=nwell_layer)) + nwell.move((nsdm_out.xmin - nwell_enclosing, nsdm_out.ymin - nwell_enclosing )) + + + + + + if bulk != "Gaurd Ring": + c.add_ref(c_inst) + + # nwell generation + nwell = c.add_ref(gf.components.rectangle(size=(c_inst.xmax - c_inst.xmin + 2*nwell_enclosing + , (c_inst.ymax-c_inst.ymin) + 2*nwell_enclosing),layer=nwell_layer)) + nwell.move((c_inst.xmin-nwell_enclosing,c_inst.ymin-nwell_enclosing)) + + + if type == "sky130_fd_pr__pfet_01v8_lvt": + lvt = c_inst.add_ref(gf.components.rectangle(size= (nf*l + (nf-1)*inter_sd_l + 2*gate_lvt_enc, w + 2*gate_lvt_enc) + , layer= lvtn_layer)) + lvt.move((sd_l - gate_lvt_enc,-gate_lvt_enc)) + + + if type == "sky130_fd_pr__pfet_01v8_hvt": + hvt = c_inst.add_ref(gf.components.rectangle(size= (nf*l + (nf-1)*inter_sd_l + 2*gate_hvt_enc, w + 2*gate_hvt_enc) + , layer= hvtp_layer)) + hvt.move((sd_l - gate_hvt_enc,-gate_hvt_enc)) + + if type == "sky130_fd_pr__pfet_g5v0d10v5" : + hvi = c.add_ref(gf.components.rectangle(size=(nwell.xmax-nwell.xmin,nwell.ymax-nwell.ymin),layer=hvi_layer)) + hvi.move((nwell.xmin,nwell.ymin)) + + + # creating layout and cell in klayout + c.write_gds(f"pfet_temp.gds") + layout.read(f"pfet_temp.gds") + cell_name = "sky_pfet_dev" + + + return layout.cell(cell_name) + #return c + + +if __name__ == "__main__": + c = draw_pfet() + c.show() + \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py b/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py new file mode 100644 index 000000000..d7d8aacae --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py @@ -0,0 +1,95 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +## Guard Ring Pcells Generators for Klayout of skywater130 +######################################################################################################################## + + +from .via_generator import * +from .globals import * +from .layers_def import * +import gdsfactory as gf + +def draw_gr ( + layout , + in_l : float = 1, + in_w : float = 1, + grw : float = 0.17, + con_lev = "li" +) : + + ''' + layout : layout object + in_l : float of the inner length of the ring + in_w : float of the inner width of the ring + grw : float of the guard ring width + con_lev : connection level of (li, metal1) + + ''' + + con_size = (0.17,0.17) + con_spacing = (0.19, 0.19) + con_enc = (0.12, 0.12) + + c = gf.Component("sky_ring_gen") + c_temp = gf.Component("temp_store") + + inner = c_temp.add_ref(gf.components.rectangle(size=(in_w, in_l), layer=tap_layer)) + outer = c_temp.add_ref(gf.components.rectangle(size=(inner.xmax - inner.xmin + 2*grw , inner.ymax - inner.ymin + 2*grw), layer=tap_layer)) + outer.move((-grw, -grw)) + + gr = c.add_ref(gf.geometry.boolean(A=outer, B=inner , operation="A-B", layer=tap_layer)) + + if con_lev == "li" or con_lev == "metal1": + li = c.add_ref(gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=li_layer)) + + if grw < con_size[0] + 2*con_enc[0]: + con_range = (inner.xmin, inner.xmax) + else : + con_range = (outer.xmin, outer.xmax) + + licon_l = c.add_ref(via_generator(x_range=(outer.xmin, inner.xmin), y_range=(inner.ymin + 0.17 , inner.ymax - 0.17), via_enclosure=con_enc, via_layer=licon_layer + , via_size=con_size, via_spacing=con_spacing)) + licon_r = c.add_ref(via_generator(x_range=(inner.xmax, outer.xmax), y_range=(inner.ymin + 0.17 , inner.ymax - 0.17), via_enclosure=con_enc, via_layer=licon_layer + , via_size=con_size, via_spacing=con_spacing)) + licon_t = c.add_ref(via_generator(x_range=con_range, y_range=(inner.ymax, outer.ymax), via_enclosure=con_enc, via_layer=licon_layer + , via_size=con_size, via_spacing=con_spacing)) + licon_b = c.add_ref(via_generator(x_range=con_range, y_range=(outer.ymin, inner.ymin), via_enclosure=con_enc, via_layer=licon_layer + , via_size=con_size, via_spacing=con_spacing)) + + + + if con_lev == "metal1" : + m1 = c.add_ref(gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=m1_layer)) + + mcon_l = c.add_ref(via_generator(x_range=(outer.xmin, inner.xmin), y_range=(inner.ymin + 0.17 , inner.ymax - 0.17), via_enclosure=con_enc, via_layer=mcon_layer + , via_size=con_size, via_spacing=con_spacing)) + mcon_r = c.add_ref(via_generator(x_range=(inner.xmax, outer.xmax), y_range=(inner.ymin + 0.17 , inner.ymax - 0.17), via_enclosure=con_enc, via_layer=mcon_layer + , via_size=con_size, via_spacing=con_spacing)) + mcon_t = c.add_ref(via_generator(x_range=con_range, y_range=(inner.ymax, outer.ymax), via_enclosure=con_enc, via_layer=mcon_layer + , via_size=con_size, via_spacing=con_spacing)) + mcon_b = c.add_ref(via_generator(x_range=con_range, y_range=(outer.ymin, inner.ymin), via_enclosure=con_enc, via_layer=mcon_layer + , via_size=con_size, via_spacing=con_spacing)) + + + + c.write_gds("ring_temp.gds") + layout.read("ring_temp.gds") + cell_name = "sky_ring_gen" + + + + return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_rf.py b/sky130/cells/klayout/pymacros/cells/draw_rf.py new file mode 100644 index 000000000..5205dbb25 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/draw_rf.py @@ -0,0 +1,83 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +## RF Devices Pcells Generators for Klayout of skywater130 +######################################################################################################################## + + +import pya +import os +from .globals import * +import gdsfactory as gf + + + +gds_p_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices/rf" ) # parent file path + + + +def draw_rf_mosfet(layout, device_name): + + ''' + drawing rf mosfet devices + ''' + gds_path = f"{gds_p_path}/rf_mosfet" # gds file path + + + if device_name in RF_MOSFET_DEV : + layout.read(f"{gds_path}/{device_name}.gds") + cell_name = device_name + else : + cell_name = device_name + + + return layout.cell(cell_name) + +def draw_rf_bjt(layout, device_name): + ''' + drawing rf mosfet devices + ''' + + gds_path = f"{gds_p_path}/rf_bjt" # gds file path + + + + if device_name in RF_BJT_DEV : + layout.read(f"{gds_path}/{device_name}.gds") + cell_name = device_name + else : + cell_name = device_name + + + return layout.cell(cell_name) + + +def draw_rf_coils(layout, device_name): + ''' + drawing rf coils devices + ''' + + gds_path = f"{gds_p_path}/rf_coils" # gds file path + + + + if device_name in RF_COILS_DEV : + layout.read(f"{gds_path}/{device_name}.gds") + cell_name = device_name + else : + cell_name = device_name + + return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_vpp.py b/sky130/cells/klayout/pymacros/cells/draw_vpp.py new file mode 100644 index 000000000..865958d8f --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/draw_vpp.py @@ -0,0 +1,41 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +## VPP CAP Pcells Generators for Klayout of skywater130 +######################################################################################################################## + + +import os +from .globals import * +import gdsfactory as gf + + +gds_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices/VPP" ) + + +def draw_vpp(layout, device_name): + ''' + drawing VPP Capacitors devices + ''' + + if device_name in VPP_CAP_DEV : + layout.read(f"{gds_path}/{device_name}.gds") + cell_name = device_name + else: + cell_name = device_name + return layout.cell(cell_name) + + diff --git a/sky130/cells/klayout/pymacros/cells/fet.py b/sky130/cells/klayout/pymacros/cells/fet.py new file mode 100644 index 000000000..01ea21ac8 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fet.py @@ -0,0 +1,263 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# MOSFET (PFET) Generator for skywater130 +######################################################################################################################## + +from select import select +import pya +from .draw_fet import * + +fet_01v8_l = 0.15 +fet_g5v0_l = 0.5 + +fet_w = 0.42 + +fet_ld = 0.3 +fet_inter_ld = 0.3 +fet_01v8_grw = 0.17 +pfet_g5v0_grw = 0.3 + +pfet_01v8_lvt_l = 0.35 +nfet_g5v0_nvt_l = 0.9 + + +class pfet(pya.PCellDeclarationHelper): + """ + PMOS Generator for Skywater130 + """ + + def __init__(self): + # Initialize super class. + super(pfet, self).__init__() + + #===================== PARAMETERS DECLARATIONS ===================== + + self.param("con_bet_fin", self.TypeBoolean, "Contact Between Fingers", default=1) + + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice("sky130_fd_pr__pfet_01v8", "sky130_fd_pr__pfet_01v8") + self.Type_handle.add_choice("sky130_fd_pr__pfet_01v8_lvt", "sky130_fd_pr__pfet_01v8_lvt") + self.Type_handle.add_choice("sky130_fd_pr__pfet_01v8_hvt", "sky130_fd_pr__pfet_01v8_hvt") + self.Type_handle.add_choice("sky130_fd_pr__pfet_g5v0d10v5", "sky130_fd_pr__pfet_g5v0d10v5") + self.Type_handle = self.param("bulk", self.TypeList, "Bulk Type") + self.Type_handle.add_choice("None", "None") + self.Type_handle.add_choice("bulk tie", "bulk tie") + self.Type_handle.add_choice("Gaurd Ring", "Gaurd Ring") + self.Type_handle = self.param("gate_con_pos", self.TypeList, "Gate Contact Position") + self.Type_handle.add_choice("top", "top") + self.Type_handle.add_choice("bottom", "bottom") + self.Type_handle.add_choice("alternating", "alternating") + + + + self.param("l", self.TypeDouble, "length", default=fet_01v8_l, unit="um") + self.param("w", self.TypeDouble, "Width", default=fet_w, unit="um") + self.param("sd_con_col", self.TypeInt, "Diffusion Contacts Columns", default=1) + self.param("inter_sd_l", self.TypeDouble, "Between Fingers Diffusion Length", default=fet_inter_ld, unit="um") + self.param("nf", self.TypeInt, "Number of Fingers", default=1) + self.param("grw", self.TypeDouble, "Guard Ring Width", default=fet_01v8_grw, unit="um") + self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + + self.param("interdig", self.TypeBoolean, "Interdigitation", default=0) + self.param("patt", self.TypeString,"Pattern in case of Interdigitation", default= "") + + #self.param("n", self.TypeInt, "inst_num", default=1) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return "pfet(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" + + def coerce_parameters_impl(self): + # We employ coerce_parameters_impl to decide whether the handle or the + # numeric parameter has changed (by comparing against the effective + # radius ru) and set ru to the effective radius. We also update the + # numerical value or the shape, depending on which on has not changed. + self.area = self.w * self.l + self.perim = 2*(self.w + self.l) + # w,l must be larger or equal than min. values. + if self.type == "sky130_fd_pr__pfet_g5v0d10v5": + if (self.l) < fet_g5v0_l: + self.l = fet_g5v0_l + if (self.w) < fet_w: + self.w = fet_w + if (self.grw) < pfet_g5v0_grw : + self.grw = pfet_g5v0_grw + else : + if (self.l) < fet_01v8_l: + self.l = fet_01v8_l + if (self.w) < fet_w: + self.w = fet_w + if (self.grw) < fet_01v8_grw : + self.grw = fet_01v8_grw + + if self.type == "sky130_fd_pr__pfet_01v8_lvt": + if (self.l) < pfet_01v8_lvt_l : + self.l = pfet_01v8_lvt_l + else : + if (self.l) < fet_01v8_l : + self.l = fet_01v8_l + + if (self.sd_con_col) < 1 : + self.sd_con_col = 1 + + if (self.inter_sd_l) < fet_inter_ld and self.con_bet_fin == 1: + self.inter_sd_l = fet_inter_ld + elif (self.inter_sd_l) < 0.21 and self.con_bet_fin == 0: + self.inter_sd_l = 0.21 + + if self.interdig == 1 and self.gate_con_pos != "alternating": + self.inter_sd_l = 0.5 + + + + def can_create_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we can use any shape which + # has a finite bounding box + return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() + + def parameters_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we set r and l from the shape's + # bounding box width and layer + self.r = self.shape.bbox().width() * self.layout.dbu / 2 + self.l = self.layout.get_info(self.layer) + + def transformation_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we use the center of the shape's + # bounding box to determine the transformation + return pya.Trans(self.shape.bbox().center()) + + def produce_impl(self): + instance = draw_pfet(layout= self.layout , l=self.l, w=self.w, sd_con_col=self.sd_con_col, inter_sd_l=self.inter_sd_l, nf=self.nf, grw=self.grw + , type = self.type, bulk=self.bulk, con_bet_fin=self.con_bet_fin,gate_con_pos= self.gate_con_pos, interdig=self.interdig, patt=self.patt) + write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + self.cell.insert(write_cells) + self.cell.flatten(1) + + +class nfet(pya.PCellDeclarationHelper): + """ + NMOS Generator for Skywater130 + """ + + def __init__(self): + # Initialize super class. + super(nfet, self).__init__() + + #===================== PARAMETERS DECLARATIONS ===================== + + self.param("con_bet_fin", self.TypeBoolean, "Contact Between Fingers", default=1) + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice("sky130_fd_pr__nfet_01v8", "sky130_fd_pr__nfet_01v8") + self.Type_handle.add_choice("sky130_fd_pr__nfet_01v8_lvt", "sky130_fd_pr__nfet_01v8_lvt") + self.Type_handle.add_choice("sky130_fd_pr__nfet_03v3_nvt","sky130_fd_pr__nfet_03v3_nvt") + self.Type_handle.add_choice("sky130_fd_pr__nfet_05v0_nvt","sky130_fd_pr__nfet_05v0_nvt") + self.Type_handle.add_choice("sky130_fd_pr__nfet_g5v0d10v5","sky130_fd_pr__nfet_g5v0d10v5") + self.Type_handle = self.param("bulk", self.TypeList, "Bulk Type") + self.Type_handle.add_choice("None", "None") + self.Type_handle.add_choice("bulk tie", "bulk tie") + self.Type_handle.add_choice("Gaurd Ring", "Gaurd Ring") + self.Type_handle = self.param("gate_con_pos", self.TypeList, "Gate Contact Position") + self.Type_handle.add_choice("top", "top") + self.Type_handle.add_choice("bottom", "bottom") + self.Type_handle.add_choice("alternating", "alternating") + + + self.param("l", self.TypeDouble, "length", default=fet_01v8_l, unit="um") + self.param("w", self.TypeDouble, "Width", default=fet_w, unit="um") + self.param("sd_con_col", self.TypeDouble, "Diffusion Contacts Columns", default=fet_ld, unit="um") + self.param("inter_sd_l", self.TypeDouble, "Between Fingers Diffusion Length", default=fet_inter_ld, unit="um") + self.param("nf", self.TypeInt, "Number of Fingers", default=1) + self.param("grw", self.TypeDouble, "Guard Ring Width", default=fet_01v8_grw, unit="um") + self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + + self.param("interdig", self.TypeBoolean, "Interdigitation", default=0) + self.param("patt", self.TypeString,"Pattern in case of Interdigitation", default= "") + + #self.param("n", self.TypeInt, "inst_num", default=1) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return "nfet(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" + + def coerce_parameters_impl(self): + # We employ coerce_parameters_impl to decide whether the handle or the + # numeric parameter has changed (by comparing against the effective + # radius ru) and set ru to the effective radius. We also update the + # numerical value or the shape, depending on which on has not changed. + self.area = self.w * self.l + self.perim = 2*(self.w + self.l) + # w,l must be larger or equal than min. values. + if self.type == "sky130_fd_pr__nfet_03v3_nvt" or self.type == "sky130_fd_pr__nfet_05v0_nvt" or self.type == "sky130_fd_pr__nfet_g5v0d10v5": + if (self.l) < fet_g5v0_l: + self.l = fet_g5v0_l + if (self.w) < fet_w: + self.w = fet_w + if (self.grw) < pfet_g5v0_grw : + self.grw = pfet_g5v0_grw + + if self.type == "sky130_fd_pr__nfet_05v0_nvt": + if (self.l) < nfet_g5v0_nvt_l: + self.l = nfet_g5v0_nvt_l + + else : + if (self.l) < fet_01v8_l: + self.l = fet_01v8_l + if (self.w) < fet_w: + self.w = fet_w + if (self.grw) < fet_01v8_grw : + self.grw = fet_01v8_grw + + + if (self.sd_con_col) < 1 : + self.sd_con_col = 1 + + if (self.inter_sd_l) < fet_inter_ld and self.con_bet_fin == 1: + self.inter_sd_l = fet_inter_ld + elif self.inter_sd_l < 0.21 and self.con_bet_fin == 0 : + self.inter_sd_l = 0.21 + + if self.interdig == 1 and self.gate_con_pos != "alternating": + self.inter_sd_l = 0.5 + + + def can_create_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we can use any shape which + # has a finite bounding box + return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() + + def parameters_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we set r and l from the shape's + # bounding box width and layer + self.r = self.shape.bbox().width() * self.layout.dbu / 2 + self.l = self.layout.get_info(self.layer) + + def transformation_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we use the center of the shape's + # bounding box to determine the transformation + return pya.Trans(self.shape.bbox().center()) + + def produce_impl(self): + instance = draw_nfet(layout= self.layout , l=self.l, w=self.w, sd_con_col=self.sd_con_col, inter_sd_l=self.inter_sd_l, nf=self.nf, grw=self.grw + , type= self.type , bulk=self.bulk, con_bet_fin=self.con_bet_fin,gate_con_pos= self.gate_con_pos, interdig=self.interdig, patt=self.patt) + write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + self.cell.insert(write_cells) + self.cell.flatten(1) + diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl new file mode 100644 index 000000000..114de0abe --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield C0 C1 SUB cap_1 cap_2 + +Cx C0 C1 SUB cap_1 cap_2 sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..ff5d63ec95b79a4a9eb0616e00e2d94d9ac78667 GIT binary patch literal 4314 zcmbuC&x;#n7{{NPNhUuw+09CcP3=VwJxIaqS`-mv)~+B39@Gt1gjlT7s?}gYS`Q^y zFM{XA>P18l3+~y2hv0$-=}lSiAMl_e;vZoAKEINz?K9iDbJ)-3`@Y}#zR%1%$upEw zn!ZTKleG3LHRvcEq5ElN@qb!R^Gk1DS$nuYeEr;T^zLx@>em2{CpJEM^qC*N`s=aHZy);nvzK0=3VXLDyu}HpXc*=R{tcbeK)7;ot?-}`;Mf* z0xMXLabYmX$NU{$zY;l;?{qz0KZ<%q^O&6n@cEB9c^x($=BIu2GufY_ekc2FJoFO| zp2r9K=;JwE2Sb1LvewV!y7~G!xqcfD{h8cYvedD$lP^)ZZAW-|0FSuD`mA=MC3Ucpc|CgU?Rav)Es`hDB~+fz01=p56jo-zxWW zKKnVB{WH2=lAoQ{d?E6)Uo>Bcd>aqz=W)&#BAmKgArbUx@q^UcL@O*GuYW zALk30+e zy|~8tM&wdY^M$S-kY5{Xe!Z*v-|0FS*3awC3-#xF>Yvf|qTFA_viUq!t9wS*!}`^i zO_Y^^<~v;nOV^){?L1b0W^^44{fB*i?fKH@?0-Cehkbr*f9pQK>-~?u<3rxR#%=7w zWBBZJJ-mPFYfqHR1NA#yZ-@6!eXX&br>p+9(e?QEM}13$aZmkAPS=a*{;RJ^#%=XC zovt5He|@6<#z6f}*W=$G_0`78dRP5U*W>3`eR*NrQ-AJs{eb$br2gu*`e$_gfcmqE z`YQwVJ6(^TU-hM9W!6={)Aj#6zfT>q|GvfVefAyp-wS?x@9f~W0(}~j`#0|2ovwq6 z-#`2O(q9(%?&SUx{j2n!#>8|m^hW8GpFmJ9vM3 zPWE46?|*;8cmw+vT;0U|zh_R@>4xUFaC*Ey;{JD2s#1P$LUn3!7oXy-Vf71Y_HusD zUBhML_r-XA_8?N9_4(`Ze54#pFt>GIwdh^v<5Nw{K0)dml=t$}{V*+br&sVR@qxJ4 zZgXur`fifFjEoc5gUoNh9~bEQiP)dwdai81!`xNxjIM9&^S>|m#`2Tzi5gdNUztC_ mk9#wt>sR+xU&y_AT<%R+eS%)6@io$>I zC%+C_6tpN65vkCFc=2E_20SRed6OboFCs`mP*4i~|L-%;&dg@^$+}HRf9*5R?|t5R z=Y3{p$HgvmCATXG-J%Qdhd)8?-}7O-cKZD6T&sQRM7z7%ZXbW4+dkLrwp;tU2VQC2 z-<@rDW;^>jbDjO|wU<^-o;h)5wtZ^l?29K?k?CBc6dhc6{lL-hKEL(Ak+1h&zO?+5 z+Z7r0;ybHXt~wWwg>K5l+d|iJGvg(k(tG~QT=nmi%^xMM#F6p@e(T~t>f));MJ{dz z{Cfx2roJok9NDl=a>CKjKOp&-%x_ zKQHrlm?M8{zocy5EB{vFc-BAc{f79pPmqhBEk{%GnlY}#k%7Kj5YPRdk{;vAK7Ya2 zpBcG+&L5%vq5k@JevIxUHpb}kL}-eQGDg(BjPI&H|tNJ zS9tw;yej^LvSj<)*Th$jWB>B{D-k#AkKGhsx$SN7m57^ueM$TtZ;M}7F4_K;b@7#3 zJK`%5H|y8t#P9Kj_%-F6?N>e(Us-)Zd?n&${qk$#E2I0wS0Zlu!Ey1G;h6YJ#7#e* z6u-x7;>XHK+YkQ~Us?J{d?n%o>$88^cf5Zn*>{X9t^Q*k`;LB(*TrZ5CCAPB>^u5O z_8mQ?)ql)m-_h^!s`%``6(`VnYzLI@MUupFp^Uz=3 zSF-OIS0ZlKXWy}YkJrR!|8X3|O`m;7U&+3sr|j#$#q8%_>6qk}ccctza1mExtZe<9 zU*>ZMYVlb~Nsn=*<;SbyRUS-9k8!2tSHH)7;s@-VcT+Ym;@Tsw#PNaiXI=W$FeN?4 zm6jiTEAtNDNXdCKuC(Uw{*k)O=R8Q(Wn5|1=e)V@JYOa2GOo1hbKb1W>#by6#+6om z?i+f%-b#9mD=nYW)Z2>UPRkFfu8{s{e-^Y3*1 zN7(rTxs}Kd~fCat6yda&&QRPe-nN8EAF4?Q#LQaM_h^H+52bi{3}c1RenoJk8!2t zN9*Fn&!nWsxYF{2N%4X!Dd{n;H2t4s-NKhM#JUBHE0guZZI$mn9`pOB;i}t9$a~y1 z{5ueQhj*W09iR8~>s6RPBl(q&@x1#S)(ONIo92gqNIp4Ce(f);2kzlycy9CY`3{8n zq?w&KZ^7|QYDdqYKv)8xqe2x8< z%h&OP!Tlol_rCrrV;}qdwsAg%`NNK{`^{L--1wSrtY=}qe;&env4Z_jm~ZTd!hB=@ z7v>xNRhVz=|H6EuzY6n>{gcbr{iFM{ba2D{N4}rv{z>k)#`P-9H|A5AZ>(owKCdtP zm+b4`!hEhL^GP#b`*-mDIX}Mf`Bj(CyLtbv{-F);>gW8=etB0PJ&f=BS6p>EUV8cv NwmIMRSMXbQ{{bT7T($rJ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl new file mode 100644 index 000000000..83b45be80 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds new file mode 100644 index 0000000000000000000000000000000000000000..79d36483093429a6ba00cff6f0e3ff5c504123d2 GIT binary patch literal 7942 zcmbuEU5Hd=7{}jpX6DR{&g!nat*xt>ntiM*?Kpx|B)hH|C_=b(krY$-QHySDE=UGl zdDVx|2L%;|ArS>$WEXX_Hwj$?UUgUOO+pZ12tq-z)boFz^FJSY=2@Lq)}KD-{hjAM zXU=*5XJ%aFLRWHYgV619f&9Twko)&|7|k6!)ohKmj~;H%o@loZJwMw%IXl}P+cvx7 zm1c9c*`8_6Y@2D#Y;VuKIDO>!;p5Hr(dn07IC4TpIyX?N?3{Rg$G-1BzxL4XZy!AO z@xdqE+KSOH`hWe(HRqz9&<(n1Md-%dXm3dl>3x4>uJ%{TEzfA3lr7~x`E98Gn2QEO zS8>tm0DrH+xoHen#)m${&quC-{f0j|SDALvP&7Gq`*!7D+2@zuZmJ#6U3$yhdv)&N zH_~IPbEUxy-;v&^lUqCcl@FxL6LL^{QwC*mrB2Frf9!GpSF`;qqAl;2@zW_AG7xoA zwrBkV-XGWb%Ms!zUHzAoBNz4Gq-@XnlinXtzy7I=m7it%QsOm3os=ydeK(<=`#mK* z)X5wC3EzLT>;5^vi~hT^{ox0PWQH<-GVIa$lTyzf|4n{)U4622R((?Hre8j-K8foQ z^CG2g`jK2en18}~^&>KW{oFMF>Us6a+J5y(shj=lE%g&Fs9z^rw!iF>`sDH%^+~Cl z{Toy2CtOs&K~C9z&lUB_6=&2ZrEd0LIj26^yH0&l>ZadUQa|AZ_4~+@?XP-IeX{>i z^+~Cl{RcLwpYXE!1LP*#zvFB5$-!sUC#7!oUp=XQ!mH}9CMRwG&L7n$hh9^kl)Bk} z%^~&4;U4u#shj@rb@j=$XVoXAZu;v^t54pwRee(GroX;l{e<)CuP6I$|L*hZlNI`v7Zcl437k}p1gN#qXdq|{9xxr6*Bkvs57D}OK!xdWd>?x0Ru`GaxD9ry|7 z)kprs+s*k)zIdNR?!Y6ZZu-a_^iQ~;KJo|qk-F(4ci@xA9eAXbKNyGHfuC?uedJHP z-RzItflnfL;E`7TU>tG>K8f5xowV`?6JAgs`4ew9=a1ZhPa=2Vkyid-9C8PK z!prI-f8y zb+bQm2mMLp4t&zeAB>ZH@ji*%L7kMk*&n%s{t4&RNB&?xQa63c7w?nE9eAYFO&_^~ z{s|YLl~0E=#n$cYi#7|5saClI+>*2K;;YQOT^&#Cy)u&$n>=sE)6GBK>}K4wQW?IX?VD z$Ah;rzW%3kBdcUS!tmtM`>*WL@t`?AK3+LWHzM!xm%Zh=ZCP)_qX=Nc+3MtU(`vfKjw|| zj^icK7j@F=k9ngnUT+e8Q75hbxNhL#^(Nt=PFg;$8+drVNqDG}^l@3pdZ5?efXl51 za`c_ArzR2gc;0^g)xPRk*DIAa25%UMF{mZtco<|DzZ`|*N z`N4gJ`GeN{`Fa`aRc<~!URj0xdRyA*nSCB99AC!s5uRVv%jWU!?DI%Po^3~t%XRZ~ z$}N&*sFSk2qhFOQfnWVCB|Owg%dg3^E&Teal<-g|O&{5PP{x0i;Wha`>g2)B^DiA! zuN-73p0AUJU;alud>4dyc#7xiq~S+zs#o2Rp?JPd8h-Gzdg03%is$R3<@f7(557o= z^Bzc@(>H zm%Z(3L($Yz OyW}+Y$!}GD%kDqZ4Cht= literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl new file mode 100644 index 000000000..000dfb10a --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds new file mode 100644 index 0000000000000000000000000000000000000000..71a2bdae5e68e9bf66261f55576c171eca22a877 GIT binary patch literal 11142 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 TJ>}USoUq}z(|)_`w;28pq91Q` literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl new file mode 100644 index 000000000..080a4658c --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds new file mode 100644 index 0000000000000000000000000000000000000000..fd71f1faa6578830abd57de74cc3aa15ee1058bb GIT binary patch literal 17542 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl new file mode 100644 index 000000000..3965f884f --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 C0 C1 MET3 SUB + +Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds new file mode 100644 index 0000000000000000000000000000000000000000..daf9bb77a88c21931eb2b20f3857b111c31bd531 GIT binary patch literal 4426 zcmcIoO^X#*5Utn!x>X#5fgv*LLU82=WX30c6DEEIMg&o_nN4FHC6XC@I6)IPZj*(O zjSJ1@fv70?0q$ZpF8l%R6m%oFkXajHJm=n9-PQW;9n6@Pe&@cbd#X-Vb@!WAO35Ub zjh#%6N(cXVbXx0uSvmjHuM@rT>ikUAzf@Ic&-AOy{eCsx>+k)AAJyE%+>UDg#|!6X zXJ#j=^RpMv{5;na8O@7tzWsgovB&oo_8xxt_2AFx)3UKhWGeq_rtV6Sat$MwUu3dY zwy(`ax_d>l)XMfkhi(&CSjzqt7C3!WmYS1HPEbrqx?27PP{z;dA()UjuKq1a@ zvO&8Je#^gV^><&Pv3HTXYOuJ2HSCJ;TfXn#cAwwX4gJ{}ZgD+7(lL>X#EvArvEX~@|mA|6`7NKMcAW!a(MDyRn(dkm*P`5`HEHxV-D3H ze*g2W(7FYC9vS=_-)UFeGDLsi7kE~5pJ7&iG+4}|AFwOJ|8f0>-?`%XirE^^SA;#v zr_OAf*I(m5UVo;zEzYNQtCgB;$XU>?nBrr< zO#5Efi03HdiQ;rTKYLCd_0|ZUvnwvaFEDGJ6_NeZSrXxo_K!JRT9K18pj{FEB)_E< z{8lZ91Ha|_zyHnq1Mf3FYZQ4O@lb?4%I6;5WA>i2_hRr5;~(Jrle_Py5W}3b@ldqu zuzy%Q_ddpa_Sr>UJZV>iKgwq<_Swar*xG_W$>$#O6rE<;!ZQx`VSLvQr+t8&=A@1D zQMBu@KN`=?6?qwt`HAc`d5VIA`xLP+8c#XIV$j57Y#W2IOpamk+`QN)9-NP&(`>Fu z*d2caDg68QSD6%2uIun~J^w#pWJ57Ic9X{~8FBCB*AeqCSvgi7KXSU);^X=s%I~>j ur{}x-cS_2!^3eFFv-4|^>e&-5_N2?bKdrskjNWdh_EX;<47INScI7?liud*a literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl new file mode 100644 index 000000000..adb43a060 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..d683bc6c1800b7080fa679a1820e4d266a240e6a GIT binary patch literal 11614 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 IJ;dkX|8}z=9smFU literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl new file mode 100644 index 000000000..96adada27 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 C0 C1 MET3 SUB + +Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds new file mode 100644 index 0000000000000000000000000000000000000000..0e9f487d7cff9772826545e8f2bfbdda7ee1b9c9 GIT binary patch literal 17742 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 A-T(jq literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl new file mode 100644 index 000000000..63c868cd8 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds new file mode 100644 index 0000000000000000000000000000000000000000..acfdf465c6ce2dbf3ab249b83d827e80ef041eef GIT binary patch literal 6508 zcmbuDU5Hd=7{}lFIx{;vvmYQ^YhH|Abz!vX;$}ijWg?UprtU>Ilew!cwIA$eT9$Yb zL{ZR22-;0S&X;z z&&(5&kPn5hC6^ETLk|DAKwMmb4 zqvu!F)EjuNO?s>wJwN$Kz4Dee>9KC~{Nju175{3J9_vQW&rhhA|FKPatQ$Q)V8i<% ze9$I6Zbr|qVN&zD*FI^J*PV5vcl`(cP_K&l$Il_@v2OJI@>l9rCflUPy3zAXXVgoI zZPH`i==p^M>J@%(lOF3v&(A%mUha!F>9KCSufLt^2kx_vajm!F{(CsX%du|UdY}6* z;}?#ppYoRa1>-T_FMh7Ru{5Q=5%qiT|4e@APxXz-Y4we$yM8&2Kjmfh%SLDX<+CA- z;yhNcz^1&2`NO)g&^^w;-L(YD|Mrj&;6K7KP7UdZgleVXEnDlnjvzfZgldwA9Lxa zM6T40PJV8$=H{+th+L@~oqX=cT>2@ID|KVne0*=Xt+`<}!yB<~?3%CpF_(VIi?MF( zny>d+C9WSSZ^gQ?$NDi4*AHWLN_`{h?)_hl>xXghwE9NWUB4FBkCd0yuNj^7gX?cS zjz8rs_3OqS;~$FSHx5s!Z$!Q8@z*eax&G8gGsL`;y0Po^*Zp|i>8HfJqtEq6=v@Cn z%wOgYUds@g2RQzBRDMkjyZw&qq>GeoY`jZQxIV=n!a$d$U$$*)||+<`+G zB3J50C!hN^Et)y&*xW4qdON!0plb`&qt!>VEY#^^HT*S~u3$e7|;H zePewrer{y#yzdX<_co6|<#qK3jZNRL#_^}Tpnlbev3ujM#PJ&krqwrAdW^pu$8W5R zsc$Uz7=IGSpYpo;iLuA{OL6=uFQ{KK_85O5j^9|ER^M3YG5&lUzp*f;zA@ip{L=ry z^-pEA_iKCy1RtAEjP{-u8hPx^O}^rU|m>G_p4 z&6oZie3CxvM$ec29X#pZMbeZ0U8Ltr{|=t??;`0-|1Q$=rGE!c`gf7^rGFRc`2ic= z*Zy53eQw6P{O4u;XvY5Yzu55`+=oB3Il2$)59&s|FZWLkrv?4%!yy^VhwUMGAQws@ z*_?w}d#KbLzsT)UsIf1V{DbOh*gc-?UtDgSIQ818<=Mu}?8@B9g~syi@x}T1*@c9=ugt`&+>`L{fT&b8} tejKy=9Q^k){0*;JH=gSleN)ceUjN*cUxNR2sEj9vk3JR8eHko<{{d+Rl}-Qv literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl new file mode 100644 index 000000000..dc02ad934 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds new file mode 100644 index 0000000000000000000000000000000000000000..1de0ae822e1876493fe93ed34977b7fb49b4133e GIT binary patch literal 10410 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 Y-3N>Q*6QGO`>YJ?pT-?4uTH1<4~%egwg3PC literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl new file mode 100644 index 000000000..f1f28b284 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds new file mode 100644 index 0000000000000000000000000000000000000000..828d5213835b59eb6b9f272947d17722bd41a657 GIT binary patch literal 14238 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 V2B%lU{rab$X-5gE?gL}D`XA9Q=f?m5 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl new file mode 100644 index 000000000..383a2350c --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 C0 C1 MET5 SUB + +Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds new file mode 100644 index 0000000000000000000000000000000000000000..dce4d90f04947bb38a9edaf204b761cd6fed3b7a GIT binary patch literal 15042 zcmc(md#Ghq9mn@QkA2?f-dmG4W)Bk!nh~95bWlTdoHRAXd=RK~)f}_*=0#;NA4Qpk zl|}XtO=^@<@X%$x6B^P{P-TDI;&O3Ku>EeZjcb~nquytu^ z;lK?`8!of|9lWr(Zt=~F>lZFL|Gir-JomzNiw7;7ci}~6U%I%VC{{JwhaY+E#^Zl* z`*VkEzW0D_UpoENV()e)TRBa(*03nbQKLAeDEDX-Ym0KvnW9^idr`09tJ+7bzLB4s zis4+-gzpr^=+nh;b-B2~3tY73i{eG!qjlDF_b~s|<=`H>Do5AbW2q>|jiOborQZ6P z-`iio`Df$nNP8FBBKqGJ{Hu1`f6S!6_plAIi;H6Rj*6WVivnG=_+2LG=;@p*____dM@Y{Tu($$JO|ZioF|bu6@hy8Oit?uJJfT?|-~v7`NL!-ZK)XzeM61#}K`n_TSTXRB0BXK z(Pw0Nz*IMV9&Lu((apV;|~ zWj0+jJ?n38bbsOt?r)15^Zw@T?iX7ZxnDFro4>KA`xAfb{)V_`y?^HG@!G8wX$y4G z+M+gp^YB>KvLZfoG3OuKIy(2HjfeMFoWI-Vo9Uv(YxB1r_Pp&cRwOUFn9E34K7*Z*9{xWk|Lg8LbNF<#q##Aj#SpZE*+ z&5E=2?T?>%Lw=EYgD&Rg57&)8t~!< z|Az4=((mYEuK&Al^1R)@RU|LEn9D!f!}E`RQ<1#rVlMySW9}QCSP>t(nDh7k<-Y#+ zD&j*IbAI}7@E7ktk-ZdMG`+U{2evoSf5Vqmq}|ZPT>A~}84myG){6Mh#hicI{wr_t zyq$9@k{4ZEDSxMFUK>A&wtrJD_VK`Geftq_U*dj|&+h1=>9y_8b`fqpV59Oc6-}|=v`yZ)DzoCmO_21wdUVd?Sg}t|OiKf@qzuot| z?MEw;7hPN_KhIUPU*c1qzc21vpMTo+d#U}lHii9*wTk^K(DtpMi<$k4>)3bjiR?S* zVs8K8I@Ue>BI_Qym|OpN&f@u}v9%)4J?LWY`G@B${Cu_+@u7=3KhH_{czzP`p^G^` z_2l`R`inewhjxj~J%96@MP8o2MDn7Gx%})?_}ITheCT4%&pwHd{Zqt;F6R8~)A-oG zMSSRD&c7S;=jeFe{p;N4P3psEK1kaRUSAQt{U47*;`FyT`B{EbISpZe+gZzugb< zp^G_x>znRt+nzywh!0)N`O8_(^xFA@zx6)%i|tkJ7fsLln+^9T-sS$LXy1nO zU4PexrTx9YviU>)nVZ}%Hf;Sy7frAAGf$c8%-=*?1A;D|RPSe=;$z+>nlI>L#?L&( z$GlB6U(m&jpLvRpd7Egypod)&|d9pl;Zvv1=U*|+hDEA8K`d-xM= z-NVoN7noW9h_mkD7g_hv#oYSGb*y{%Mb^D=-^kqh$91fG_!Dj23%ZzD|G18I55LH| zhc520{`vQ#@%eN1c)Rv=8^6Dw;B)pKT|9l+`nSwKx7PaoYqs7#P;p@AW$2>CC;NXV ze`)7E_{Gk#?iWqZ`Z=e=FY?_Q`NbX1>vqcDvd<#;6CZScOI)AN-}t-x#pbo{7fsKW ze;}bS-Y@9S-SFyLr`rdTW;x3WHOZU5Pd z{9O{dxWnH!Eo=XF-}AP&RU|LEn9E-t=f3iH74e~qIsfRt?i*iU5g)pk^YeF!7B5C8 zSHy=d=KO;z-51X5?LH76x|s9#-{Sthtznb{;zJj6{;r)hH!m=+ea|hnX6(J`qUp8c zCtP=@`@{LR-KTA5Sm>hZS%3Q}_lxC+-7lJ+^>@~|KkV$e}8}XCw|}keR2Q1 zf3WC&aoBXfXnMB%!@J!thI4;wKhgB8fAoy|#qrgiUo<`IpN;iTjP;%sGxcYmVE(gz zh|GI*F*pAQpLE}FpNja<#hicI{cGCt_hbG0vHp;9ql>xnr@ssRnb*HG;zJj6e!dg3 zcrm`EB0h96=bvG(Hvde_5AmUkIX~s(`GImL+H*tD#mw_V;|kB;oUce;bTOBoeTKa3 zKZ%w%=wc>+^FGhpdPha_qKmowTt{B~iIz9$VkZBz`zP&0UfM6w@&;YZqnyXThPT!|M8qX8=wEhIU5t`qUp8y>1XoN|B042=;8|b$6GAd16F2nyXPN^Tk7+( z&ybh>C(-f-U0fl5I0Ll&iT8Q_k+@%de)b9SvTr0>-k^&sJnLuP;}@Ct_(apQe$H?3 zi=5lw7jx$~T*tW$evxwilMCO=RC+*uO8^qfxZOzjw6%*Zh0O8?8OAD!Qx76W)62 zL7qSQ?eDc$_P76O>yMqZtS*l_@Ws2kc7hz;>z28X2)Pf-mz}?}>YPH^PdUwwB0}4B HjIH8-n#M%E literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl new file mode 100644 index 000000000..cfeb92366 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top C0 C1 M5 SUB + +Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds new file mode 100644 index 0000000000000000000000000000000000000000..477b1d8938da4afd4757705029240cd68b024198 GIT binary patch literal 15720 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 Am;e9( literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl new file mode 100644 index 000000000..76eab20c1 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds new file mode 100644 index 0000000000000000000000000000000000000000..6ca8d242d02008f5be4f123cf50603c2690ffaaa GIT binary patch literal 14358 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl new file mode 100644 index 000000000..a3a85155e --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 C0 C1 MET4 SUB + +Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds new file mode 100644 index 0000000000000000000000000000000000000000..2f410580c762d31f8d4d1be6bd4b7067be6dc9a3 GIT binary patch literal 27076 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 E2TE^31poj5 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl new file mode 100644 index 000000000..30a40ebcc --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 C0 C1 MET4 SUB + +Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds new file mode 100644 index 0000000000000000000000000000000000000000..ce99b1d15c8541d97ca22889b41a407a2f0f2a52 GIT binary patch literal 20560 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl new file mode 100644 index 000000000..af6616c7f --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..778513d365775fa629e33209b73d08603a2668bd GIT binary patch literal 22942 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 L+Wv`Ar&IkOJ8{a$ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl new file mode 100644 index 000000000..2b0f03fe7 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell + +Cx sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds new file mode 100644 index 0000000000000000000000000000000000000000..289ba685920da27f00a797d6dff47d99bc435936 GIT binary patch literal 15830 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 hb1J`zu--ra>>cURO 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 g^@Ki8)OXLIL&0!FBb9RL6T literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl new file mode 100644 index 000000000..d69c34001 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop C0 M5 SUB + +Cx C0 M5 SUB sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds new file mode 100644 index 0000000000000000000000000000000000000000..53c24fe9669baa7d44201ba91e1e2b313061e7b3 GIT binary patch literal 104478 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl new file mode 100644 index 000000000..b42fc7395 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 C0 C1 MET4 SUB + +Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds new file mode 100644 index 0000000000000000000000000000000000000000..1ee3f03f386fdbd469a2bca340e09c5431ca63c9 GIT binary patch literal 50528 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

N- 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 amgCnf$5j9En>hZ{zsnlc(QfV9-v0%H|KINb literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl new file mode 100644 index 000000000..590bfe64a --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 C0 C1 M5A SUB + +Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds new file mode 100644 index 0000000000000000000000000000000000000000..25a469b89df9d14b264c6b7b195cf0300d81c824 GIT binary patch literal 71498 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 G@qYo2f7{>y literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl new file mode 100644 index 000000000..cfae9c0d2 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop C0 C1 M5 SUB + +Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds new file mode 100644 index 0000000000000000000000000000000000000000..05dc892737ac2c58d42ebc83cc34bd046d627ec9 GIT binary patch literal 70966 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 H>aYG6M&A@i literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl new file mode 100644 index 000000000..2d4fe8b53 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds new file mode 100644 index 0000000000000000000000000000000000000000..82c08aaff68663f61e1dead3d58f74c97dda88ae GIT binary patch literal 29656 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl new file mode 100644 index 000000000..31df834e1 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds new file mode 100644 index 0000000000000000000000000000000000000000..a392bff05329fc2f4b85865657177589a9939558 GIT binary patch literal 40972 zcmeI5d#qh$nTPke?Q_4M)1LeN*3)*{s(4}46s1HQ5kw@2Vntgbj!3;m8Z~N!$YgLF zG8&;WL9sI?TlKJ{f|FQkNWp#G}qtu*H`R$`tJRg9N2&8 zt^4=C{^CRX-+AcJ{ylpRo$@aGzh~{gY|mv+yX@)v-}Z(}55DQZoA%UdBQ0&uKke#g z{nZ`+{M+Z8{^eaa9=Y(m+EiOGM*UA8qqU<}tM@k7_SNcr&9#Brj)9h1ZS;{^ZO5&( z+LnK*xbwN5i&k$PtkoXZAGplC+iJDJp^7{A*J|XV)&I9Y()8*y{xfa4o6}Y--1;lq zq%W@33h%Y|V;gB}=D58->f*%Dye>|@$?M|ufY%E@;q~dv*}Yyb{130sX3ih-df^|u zKA*XGqu0fy9bOlgzvp#v<<(vn*KGA!zrw%u`da4tZm$=9)$8k-J6>yb+m51b&v1LQ z?Kb|?e4oF**mBtGV%v<@3vGYlw`I1!)a!*m_Ii6}=X<>_c6E7O?EakB#hz2WF82P^ z>tf#Tnv-}d@Y=E$49E{=Z9>xJL69b|t-Gtg;dGJfL1^1E)Nbc|=`go>3Q>htx&pDRq%~ zOug`s*O~7u$8kWtaBt2tIgY3o4tSm84WHwXy2x=#E^-`G7dg(U7yin&m2F4P2YGuw z&h~Cg=d-k&ZIA79w!CPsz2z<+1CD>ox3xHNp4Y|6hrBLMebDRT%$nB=zv%Uu%()A^ zUU-k!=Q0;Q5X(+|C#Xghmkn<{f{SfBe~E=ST9wGu_{k zIs6NM{lfFTKAbuD1+N#bczrOl{{vnZ`yTYV*n6(m#hyF7E_N??UF`ap*Ts(Cd%f@y zuXkkDZLY9=3ZLoqdS>gjUN5YBy*0D>bzT>FE#{w?wxP{Wk(~J};&EJyye{=Z8=pGk z!@9jM>V-B|$}?Fn>V>xc)LDPXcA+k^-N;3@D|M0WPF-ZbP#4*6)J66y^};WBo&C>p z%nRy;zsPwe^NRCdq0K+ei_E`#etewsr+*%!&bCj-wrF#mInJDi^hxR>eU!Y=`Ym<( zEu;@qFYL>CCViZ`NT0_O`5Zu9b`))UZrt9dr_bLbt)J!d@A^O5YyH4DRB`J&tk=KUUNe*W zs_k2meC7FGhvds&s7QUO&+Cx-;s+{HpZ}@XA@%ulD^j2RoYx`s*@cSKr{C*!NPX(} z6{%0Y)a#J?1am2q`uL33A^F&~6{*vYMCxfyW|EKC#ucd#zukREKA3$-eb9Q0NWK3? zUk;M@k5r`Id&ujMdXM!Ok$U%DuS4>#FIJ@9IpB3jy~BEpNWK0uuS4?sc@?R*-s*Ko zy>+P~_2&0^9a3-l?~0rk$;BkciRA28k(~W5lH1FrIwWWQh}4;1B02L4cANaD@A^CuP#}lddeaP#Oy!Q_ksrOvqbx6J2 zzT=71yVkr8$vZz$k$U?>UWe4%?K_@Gz3p3GhvaR~tw_D)<6ei^aF9kui1 zTkQ4i`lh(`IX1rKqU8KSzstRj8!F{>;UfX*r;*pDy-?Hpp%e@ux$i>M2zc~KriyXg&|L(`{nAp^~e=+{} z-@7kPywZKq@`n8ne{$aa!e6^TDbC0K)aTt7r>}5dv^*St<}~-k*-rOG%R_(m`|gW# z*SRlR9{TeayDu(mb6>PP^cQ~TzPR`m_eIM?f9d`1i_2%aFIpb@D}(MA{>c3maWM8* zKk2@>cB%WK<>C0-_PAg8u>0G@J+a^NdH2QEE8G_?565rI^GB@b`6F5$`t|So_+tBY zKE7yq=y&A#BX;KbBU&E%oxk((#jdaT_@d>Z-<{`=*pugvXnE-O4*K|oKl1T=#lhI` z%kxL<&+|vLJRE;ukB?vYu#Z0=?uq@uZ@4cGUG2VTc{u*?%iI@7#@!b!5B-s!yD#$n zne(b>dFWezN#}o&zJo7D{fGBhJIy|C*?SP1I_dV|)8?T5*E=K(!2Jy(n$lv;T_r|WMh(|6)K7D4# zC%ylOJ1_PABU&EzA3XYxh)4esBcDElNBK~&*0I2L_Bga^64{p^dAwAT#Wpl zGu@;A;6preG4km%c=R6;k6es=`V1cZN5mr+BcDElNBK~&*0I2L_Bga^64{p z^dAwAT#S7B3?6+)#3L6YpFV>}{}J)X#mJ}6;L(3XJaRGe=`(or9}$mSjC}eG9{oqe zBNro|K7&X95%I{y$fwWXEj?Tjk6es=`V2n(N5mr+BcDElNBK~&*0I2L_Bga z^64{p^dAwAT#S7B3?BVQ#3L6YpFV>}{}J)X#mJ}6;L&$PJaRGe=`(or9}$mSjC^`t zlYLjBSBcGbEsb2XykY-gxt4dhFSb6k_fcxA-=5;I&eeOBqi_2HK zCt4o*-228Cxp&UEqUE8#dbj%`_wMmU%R`@g|BNrLpW?n~dFZeI(S33I?e2?~H}tn( zZSHaFT`#Lh-ys*H{=;(g9elC%dG3o*|G}s4;1}NMKK&=x!}m|$!57;va!-u<53f(( z!7semefm$XhvU3_+r$5SdPAfFVc6&#i;+V9DN7B@NW0%Ke-;hfBFu-NZ-K|qyEEk)?bn@ z(s#&3%fs>MJB%;Vcksoi|FE3(m*k7|9dgm~aD4g>SE{uUnt8WuIZa^0yUv_HfyruN0{-?e#h&pZjV>>a!p5I;1|;Q<3__&%6$)Z@I4` z_0dmz9a86KV?^o$_WYknZa?>&>X5wqhZU)Joa=Q+y?v!3^_EY09a3+8XGQ*tT zeUY5k70DT2BuSm{z7s=T_B02j_BxnDMyUc-S?5gZZ6~}AskeTo zBK3{`@SG}jaqOSm7s+{jk(_Zwa^9av&ifY0SwE4S^%lw5J|a2WO(bXgisWo}k(~V_ zlC%Fra`vxC&VCokH}Smg3;lfM&+FFmpT|7ko6-%>|8AVG=O%w|_HDb??4RwnKBBds z^zWkO8~ww{&%a+`%R{#9Y(aj0Oq^J-W5;sQ@{PW~|NOjh?Hv1@XvbE~=1t)p_TS{< zRP6J!Irw7tYupzt56AC(iTi~Qy5A|jB=!f+bHDHr_XouDVt>%iO}u|`=o0ru%ft6S zyySkN9b0U_VR0$;dG?<1MSj-;zG!(ke&2807yCcvzG!*q_kPfQkza*^P z)91S{S|0k7r@LQxpZk;I>9Ifl6Zgf5tK1hY562&SyZa(Po5lKzmWTd~oqO1Sg}4y&aJpFS{{zi&!scIIR9byMax5fAs>H*`MBd}DA*2`hyG$d{>7!&xF=d3 z`pfzJQ<%>?%i>ASKP!3uimQ44ik64tujb=NT+7FgXnE*w%jciMM|}Oai6=S#@UzzJ zKXLmd?u(W;9Dlp@InH}KUa)~SZpy`Ae3s+9hc9y8BNwCdAIovx!!P`f`<(xBJ$(P^ zXOGMmIq%_#(fN<%IPWpO$a#-kjLv^7$9WH5L-`JQ{dhb!Wdi;>^=Z1?(p zQ4x<^jQsu^-5YpuMLcpb@&`NIJXf0uiFSF`2PcQ!n7G4i<% zgE#p%74gW$$e((Vd;ER@UI*fli;+KV4&ID8A|AOI`Lkp0&3>~Y9=RC#bMJF+e!U_d zxfuEBI)c5|g=^i1c;sT_FP`Jx;)#lQQnn(Y|Pduk_|EAC4(SHlgOSu^M^jSRmZ=rc97XzO@i$~urG%w|1;L~UE=)Z;L zrCbbrRvVALTWDU&#lWY};?aK#%}co$`1Dyk`fs6mDHj8uK8r{HEi^CXV&M1R=pOwS zKheCDi-Av{#iRcgnwN4h@aeO7^xs1BQZ5EQeHM@YTWDU&#lWY};?aK#%}co$`1Dyk z`fj0lDHj8uK8r{HEi^CXV&Kzf@#w#W=A~Q=eEKXN{kPD(l#78+pT(o^7MhoGG4ScL zc=X>w^HMGbK7AIC{#$5X%EiE^&*IImZ=iW87XzO@i%;JzG%w|1;L~UE=)Z;b?`Y+3I-4|a> zzcY^4o$=R+uK(h5-50+wU$@};Z?1>$pXUH@e{uKVH_=Idr$|IPJqe6IWAi(L1`6Qk?D zX}RCH&-GtkhwHxNVs!nN<+$#PSNMqgT>s7W@cnb$7hmMMFP<1(|K*sq>vQR|s>pRa za?$dJj-&viTeLYw#aT)#^UuHRATx*fjAbvtq~x_-xUc6~1S zg?8RZx%lYocmDe^^Zn0`UG`bSdUuCCqatpdv;VeSw0z_GKgzG)Z)06(`@o*@Dg3Q% zOLFnT*k@dPk#X_GX#BQYd|ZCN2;(Q(xG5Kd@mY>>)9)?GWL$DF8o%{&AD3q}89&j+ zO}QA1&vJ~9Co(R%7>(bu%g1fGeFJUWl#9XmEXTO`BIA;a(fCdG`?$?lZlH~uaxoa6 zzaOFFkd6Hh6+7$p`Pp*O>J8^#TJBc&J2Sh^a9^}M^tv(yjEg5SF1Z+u-+jN2%kO7m{6rf!vK!`O~}0 z$9e z@9(#5Z`-=?sP7AYXI!o~JbzN}{jU3B-$D08%R|5C@7x!Am)#dF5B=`5-7h@uez$mb z?04n$FFfjgm)IZs9eMple%Bn^MYKG8|LuAG#g1k7Max6Kp4Y$dxchbSB^Aqz7 zk9k*Ue#*tbXMW)^?+VRJxfuA&Gd$*Bp?N7613#^&`5b@viRL|7)}QlK^KP3%cK#~N z=ly0eIRE3f9CBZ5t^4^;w7lW@1HbiF_rZ{xrEf4)Q zTX)7UJmUVE*cSWS_PJkp%>8ZRzSv*S>o0DfbYHYQeEr!4{+WnJE=E4r|M0l~CE}5b zkmQT7?oHlQ5szGqe169j z<4?T4A|AOI`D53(H@;XAk6euWt!KHnHLpL!BNrq8sqMG zn0G6`+&~*QP z7`^`)TTjNFwe>HwaZ@e^4do{2|MApY49(arb%tFxMM?|DxWN*T3+ndpv)b>!Htc zhrEB0=MM42==npIv*!zwFY??WxoCMfKF=L8e&KQVdH#^su{`v7?hwE5sCztrh;Mo5 z+w+CV7kTawPqaMrdG3($MV>pv7cCEcd%iIFg~#3J`9ogE^3dnLE8~mYcf}K<`>!m= zeOG*u`>y0-bpMs*xbKQzXxB|rE}rE23HM#`3y-+Z{a0Sc@`mfr_aClX^8HWbx-YpH zUH|2K9vJ$M-)Gk6es=zUSfb{ZGUr7bE}4zW(%Iwj2FdWV?}z(e|VN z;?aLaJaRGe>A!e<{}J)X#mJ}s;?aLaJaRGe>A!e<{}A!W#mJ}s;_>}M#3L6YpU;nY ze18z}$i>L#^CKRg|3y4*(R`gdXO+uVQ3^@jbMI`^IM3y-qD?H*p_n&e-eE-~c!Y@4L9`~Q{Ef0O3`@|P{ z?h{Xpp8rhC<@M(IPhN-TKFP)C`A?SPxlg>pBkuG3XRe3upXWaD3y-1JnFvh%aY+1{JR{>wae8foh;`}BBo Xtz*3Y@>jgTzO)S5KkfEUYwdpkK9U8+ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl new file mode 100644 index 000000000..05a96bf86 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 C0 C1 MET5 SUB + +Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds new file mode 100644 index 0000000000000000000000000000000000000000..c30af6608357773469c55ef703fbb34043b28346 GIT binary patch literal 43424 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 V%$lD0$`{**o+0~po&DQc`(Fa&V;TSe literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl new file mode 100644 index 000000000..448c673f1 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top C0 C1 M5 SUB + +Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds new file mode 100644 index 0000000000000000000000000000000000000000..77e58a667e55b94ac9c4f04c2851930a390be207 GIT binary patch literal 44102 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl new file mode 100644 index 000000000..6a367a93e --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top C0 C1 M5 SUB + +Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds new file mode 100644 index 0000000000000000000000000000000000000000..94e311f4e506954709cdeb7124084153de46ea22 GIT binary patch literal 55918 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 Ib7$-S0)%0(;Q#;t literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl new file mode 100644 index 000000000..89d8a74a1 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 C0 C1 MET5 SUB + +Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds new file mode 100644 index 0000000000000000000000000000000000000000..d9df5b26f34260232587ad8649b295cd46b22466 GIT binary patch literal 48080 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl new file mode 100644 index 000000000..213183970 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield + +Cx sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..0c1209f8968dd5a2976572457dcd6e0dbf96b39c GIT binary patch literal 32786 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 Hw72#DKQ4AM literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl new file mode 100644 index 000000000..d3c559df1 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield + +Cx sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..39e57a1d5fcfe0a0c7a88d4550ff328f33eca87b GIT binary patch literal 32786 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl new file mode 100644 index 000000000..db21025de --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield + +Cx sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..f03feb88f19f2949e4c89a324431ba488cd4c8ea GIT binary patch literal 62994 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 M{8Qq6II;Kt0cbcgTmS$7 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl new file mode 100644 index 000000000..03f4a547e --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield + +Cx sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..36e3b6569b35400907ca17503c586ed54504404e GIT binary patch literal 62994 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 G_x?ZDQKtm} literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl new file mode 100644 index 000000000..55ff8bd45 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield + +Cx sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..582d6c4397605889182a68b061c198dfedee4307 GIT binary patch literal 94290 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 R;fHw1Mfp#NufwA{|39|ZBP9R; literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl new file mode 100644 index 000000000..d99baedbe --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield + +Cx sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..8c4f3a7f01fbc16569c30cb7c01918529c786fee GIT binary patch literal 94290 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl new file mode 100644 index 000000000..f3801ae20 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield + +Cx sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..83286101d60b5b89bf58fae0dc53f6ea857c827f GIT binary patch literal 124882 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 wd)L@!KiW$VyZzVvyzM!8A2d-WI1%&uP+yDRo literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl new file mode 100644 index 000000000..b70df97c5 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield C0 C1 SUB + +Cx C0 C1 SUB sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds new file mode 100644 index 0000000000000000000000000000000000000000..e0dddea6d4fffff031e4cca76c01194db99929e7 GIT binary patch literal 125244 zcmbTf3$T`D`TzTZh@gh#5s7qR9#GNngm}V*nqr`?6cy1B6$!-yi4qYi8X6uV@_>k@ zsHm9!-D}Ee*i6&5rfKY7(=gREOw%;fG!6Z8+H3!6+Kkim+t=s1p6_$tZ~x(%y;zNX znD4s3@8^Er^{&&iuJ?U9!#hJedv(SQ8QQtHGsOPK+mNn*pF4E;l0{!W<+MpRE|`Dg z;(Knq@s^tw-?((~;u}vtees#gPCae$DK{>@`;JrYJmt<)?>z0!)9*av#=GubvhcQB z@0j1|9K6@wQ>Q(4=8T`bIdIlRTRy$%ad<9{ z-F<)l|7pGJJDpp{RQ$g>9nZz zqxTP{|KI=p-yiZ{r}ORuVy83bi1>HV|6TVl^!~)g{{wUN*~4*R#gFXY$#ZtS%;T?OY?dzCjPzFgm)PCd7nK%p?N(Q6F=+l z(ram6&&9+)?4RM?dt*iOdM+k@*5Re!(!8FFiGTRq@a|&|E{@-6UeCqE&pN#HTAJ5$ zG4b#7lkkpMT+zIqi;16gc$#Zt_xpEv_upL6yq=4RpLKZYw=}QkV&ebUg7A*A+u-r%G_U7k z;%6ORdM(ZCxtRDz{UW>vEURc<&&9;gI=u8-n%8qN@sFMy-qAZMn%8qN@v{yu{g&qS zTul5Qe<{2NPOoTQ&&9;gI=u8-n%8qN@gFoiya)AHG_U7k;%6OR`Yp}txtRD5zAL+sTVX9;hm=VIa?J1V?mw^TH*=VIb#9bWn^&Fi_C z_&>2UyyJQ*n%8qN@v{yu{g&qSTul7qejnaXuC8ca&&9;gI=u8-n%8qN@gH$++?=VIb#9bWn^&Fi_C_{Sd_-tq5OG_U7k;%6OR z`Yp}txtREmdLX=?no!Zao{Nc}b$IEwG_U7k;{Vj2!+Z4FistoPO#H0FOTVRgJr@)I zF_(w;m|Ydk>$#ZtS%;T?OY?dzCjMi;7vAIMRWz^XV&Z2VUivM~>$#ZtCma#p2_IB6 zujgXoXB}SpEzRq>nD~!>G`uHFs%T!%#l+7#y!2a|*K;xPpYXTvp18iEc|8{sKkM+) zZ)sl7#l%1Hn(&@v;OAebc|8{sKkM+)YiVB3#l(No55jx$!iwhgTul6|!%M%Vc|8{s z|EG@)@29s_G_U7k;%6OR`Yp}txtRDTtqJcbQ!1L*b20I=4ln(d=Ji}m{HOdgyr*ug zXkO37#Lqgs^jn(Ob20IsHaEPdkEm!~&&9;gI=u8-n%8qN@t^*a@Sd@_qIo?R6F=+l z(r;;A&&9+)`Q-3U-d@qXo{Nc}b$IEwG_U7k;y-g;c&GGMG_U7k;%6OR`YpFcpYw0c z`*(Z(Z_2;Jd)DTP=Ji}m{H()EzomIS7n9>ZdqH^5vD@J5pVPdai;16gc#ujgXoXB}SpEzRq>nE20|9NzPGR5Y*WV&Z2VUivM!MxT#=^Zwm_{HMMY z-t(tdG_U7k;%6OR`Yp}txtJV(@9^;U_E$8o=VIb#9bWn^&Fi_C_@~_!-V4T5G_U7k z;%6OR`Yp}txtRDb_)T~(Tv^e)o{Nc}b$IEwG_U7k;=gEWcrV&n(Y&6EiJx_N>9;hm z=VIdj%p2joxUZslJr@%{>+sTVXL^CF;LOGo{Nc} zb$IEwG_U7k;-C3$crTk>(Y&6EiJx_N>9;hm=VIc&{Lt`T{(eRCdM+k@*5Re!(!8FF ziT{cR!rM2YqIo?R6F=+l(r;;A&&9;w_vi3_Zf!;LdM+k@*5Re!(!8FFiT}#W!+Yhf zistoPO#H0FOTVRgJr@)IRo@Hmta%m9>$#ZtS%;T?OY?dzCjP6B2=CP&R5Y*WV&Z2V zUivM~>$#ZtuX!}Q*G{TvUeCqE&pN#HTbkE%G4WsfxA4whU(vjti;16gc$#ZtS%;T?OY?dz zCdYrnvEjX8TSfDFE+&4~;iccwyq=4R|MP3YJ9kP&^Lj2Oe%9fo-_pFEi-~{kKf`>6;k{`@Me}+tCVtl8rQg!Lo{P!x-}IC4-n_V? zc|8{sKkM+)Z)sl7#l(Nh$>F_adqwklE+&4~;iccwyq=4RfBw4g-r8Hyyq=4RpLKZY zw=}QkV&cE`-{D=bxuSVJ7ZX40@X~K-UeCqE|AhtNU1+z#*FUFuJr@%{>+sTRX+sTVXdhWCp*E1K7HG4ZnwFa4J0^;}H+ z_q-9_C4Cjm>$#ZtS%;T?OY?dzCjNUzh4 zAiVcasAyi##l+7#y!2a|*K;xP-~Z?EKCrf;c|8{sKkM+)Z)sl7#l-*M<>7sBS4H!B zE+&4~;iccwyq=4Rf93bW`_R0K=Ji}m{H()EzomIS7Zd-(M}+s`4=S41b20I=4ln(d z=Ji}m{9k=EysIWvG_U7k;%6OR`Yp}txtRD@{VlwYtgmQZ&&9;gI=u8-n%8qN@jrS^ zc)w=g=U=CJJr@%{>+sTRX$#ZtS%;T?OY?dzCjQ6Qg!hRl70v6pnD|+Tmwrq0dM+mZC;l1UCpT6!ujgXoXB}Sp zEzRq>nE1awH@s^`R5Y*WV&Z2VUivM~>$#Zt*Zd^B-&kDHyq=4RpLKZYw=}QkV&Y$W za(LHnuV`M+#l+7#y!2a|*K;xPe{)@UpX#k>UeCqE&pN#HTbkE%G4Vh3@9;joxuSVJ z7ZX40@X~K-UeCqE|IC8$K5MtZ*FUFuJr@%{>+sTRX9;hm=VIc2@i*c9*2;?J z^;}H+tiwycrFlIU6aPz7!~4?CistoPO#H0FOTVRgJr@)I%Ws5tV_!w{dM+k@*5Re! z(!8FFiT{;R;eBOGMe}+tCVtl8rQg!Lo{Ne9)urKmt*4@SJr@%{>+sTVX57ZX40@X~K-UeCpD|HWO; zzy83y)9m@v9Dl9_o8^sf_#?7lyg$Gv&?>M6uaE@pn# z;iccwyq=4Rf3Kb49oAonmt4&JtiwycrFlIU6aU`J!aKaT5HGoy`B{gTeoOOuE+&3| zzO~)|`)mt8#7iz_et+Jz`RU4ln(d=Ji}m{2!YhUVq;6w0IsfUUD(> zvktF6|5-Gz=VIa?wLSa?Y%Ih}E@pn#;iuoyyq=4RfAqreetc3PUUD(>vkou)mgevkou)mge%)80yh6O>V&-QZUivM~>$#Zt{dvdJ?D@I_;fHw1#mvt-y!2X{ z*K;xPAH5~K$E+;GOD<-9*5Re!(!8FFiT~K?;XQ72AzpGZ^Ro^w{g&qSTul7OZ4d8+ zjfHs0#mvt-y!2a|*K;xPAHOiX{`}u*@jPC<nD|eh9o{o~3h|PQnV)rd>9;hm=VIbNV`q3L_ZQ+N7c)QW z@X~K-UeCqEf9A6APU$VgOD<-9*5Re!(!8FFiT|t-;XP|xAzpGZ^Ro^w{g&qSTul6D zuMh7z^9u2ji4ln(d=Ji}m z{1+???}d{J@sf*~pLKZYw=}QkV&cDWS9mXazYs6EnE6?Umwrq0dM+mZ&#Vsb#eIc% z$;HgiI=u8-n%8qN@n13~yqD}K#7iz_e%9fo-_pFEi-~{w=I~y+xDYS7nE6?Umwrq0 zdM+mZ&rS*N41;+(5HGoy`B{gTUQ6?OE++mNAB1=2+CseKV&-QZUivM~>$#Zt{duo; z+?V%+AL1n!Ge7I_(ram6&&9-l`OffO(O-y{T+IBe!%M%Vc|8{sf8Vn3ey+C=FS(fc zS%;T?OY?dzCjKi&g!jsAg?P!u%+ET!^jn(Ob20H>wLZN5{L^XiJW{;mV&-QZUVr|n zXkO37#DDdK@LxSph?iW<{H()IzomIS7Zd+ATf%$o%0j&4V&-QZUivM~>$#ZtXHO3= ze>*gf{|yl@xtRG`hnId!^Lj2O{_D1fch1H_yyRl$XB}SpEzRq>nE3s9r*_;oObS25 zOD<-9f8MG2>EU;p*K;xP->@sZpMSp)FS(fcS%;T?OY?dzCjPmr!+T?2AzpGZ^Ro^w z{g&qSTul7)#)Nm?jzYZTV&-QZUivM~>$#ZtZ`vH*n->@2B^NV4>+sTVXP2i+sTVX$#Zt@7@yL#VZT(l8c$2b$IEwG_U7k;{W3G@ZK}J5HGoy`B{gT zeoOOuE++nawug7g#zMU0V&-QZUivM~>$#Zt?_C()`z96QB^NV4>+sTVX$#ZtzdR_vUUD(>vkou4mge4lliy=Ji}m{146!|H__1yyRl$XB}SpEzRq>nD|%j4DUnz zg?P!u%+ET!^jn(Ob20Hhyezz5?JdMhE@pn#;iccwyq=4Rf7OWauG&_Jmt4&Jtiwyc zrFlIU6aORY!~5vGLcHW+=4TyV`Yp}txtRFBHX*!U8z{s}E@pn#;iccwyq=4RfAyB| zKDM$DFS(fcS%;T?OY?dzCjQ5#hxdumg?P!u%+ET!^jn(Ob20Hhu|2#`ZY;!0E@pn# z;iccwyq=4R|LY6GyJk`$UUD(>vkou)mgenE3s9htur&dW*vk z@sf*~-=BAAetP(w=Ji}m{LfAa?>d8dIuI|pnE6?UmtITrdM+mZbsvQHxwVCO$;Hgi zI=u8-n%8qN@vom9-sgJ?@sf*~pLKZYw=}QkV&Z>(XL$Yje|G;vyyRl$XB}R8EzRq> znD}2<7XBA|3-OYRnV)rd>9;hm=VIdj)`;+aYg-{+axwF>4ln(d=Ji}m{4cE!@5}QF z@sf*~pLKZYw=}QkV&dO8A-o$03h|PQnV)rd>9;hm=VIc2WlMNpU0H~iT+IBe!%M%V zc|8{s|7+93yJ>VGUUD(>vkou)mgevkou)mge9;hm=VIc2drWxW-cg8`T+IBe!%M%Vc|8{s|2vz*`#%;J;w2X|KkM+)Z)sl7#cqFG z|5evN{V2RcepHB;*IpI>!{5~(dSG~m{W_tZ$;HfnfDK;qaX;XristoP zO#BBf5AQ)26yhZpGyg$Ph4IF#ms-qf#E&ow-wFnxtRDT%n9%DM-}2F7c>9y_k{O^vn!g{b20Hx+#24K9xlX7 zE@u9dei`1AH&isQ=VIbNWo&p)`C}noaxwFtdTMx2{ivdOJr@)I8Oy^v`GP{c{ko%l8c%D?EebyIa@25*K;xPPdz)l=MOE!OD<;q^REnV z@7Rjw^;}H+7iPd_lc(|=ph zyq=4Rf5x2f&OE9RFS(fcXWkRu%g(N7UeCqEf5q1D_B~vPmt4&JeZLIv=QdO{ujgXo zpEWkTv;J6!mt4&JSDzZ*t3Rq}UeCqEKYMw2ue+cSFS(fcuX`%IbLLbuujgXozu~vx z{rszic*(`g|M~w4@7%2w&Fi_C_-{Hpyf+Um#7iz_{+q81?=531n%8qN@!z^3ybEqF z#7iz_{srF&?-!O=G_U7k;=k>q@ZSETLcHW+=3jJRco+S)qIo?R6aQUv!h82og?P!u z%zyVi;az-oMe}+tCjNW2hIh%sg?P!u%)jK9;k|c5Me}+tCjKvt4eyu!ScsQg%>2tv z4ezp#Dw@}GG4X$8d3aY`P>7dY%={~!3h(`MDw@}GG4Vh6+wiV@wGc14nE6-!S9l-V zTG70oi-~{L+2MU;Xdzy5G4nriWq2PQThY9pi-~{rhVVXib0J=GG4nt6o$x-syrOwM z7Zd-JABFepKPtpaE@u8U2ZndeZ!4PDb20IMb53}lI;s#axtRH%x+lC(pIy$;Hh7@>Aj6IH#g{Jr@)ItG^BJYp)jKB^NXQYyTDAO$#Zt-`)`3cWy4kOD_J0|Dvwf&-y>CH^tT_L$^M5Q6useZRkWVxV$$FHud(mp4^`~9^Oxjevj2TfjNU#!tY|&Y#iT#-wAlAZ zd#v#|a1I#B#bp2cE{WcL_L!sZw4Uc;)}Imk-uDj``>jtdCi~y-iRkS=zM}O!7nA+cu)KIoN-{njTJll>n&BYFq_p`!IX z7nA;>SH->${Y%9GJAX_rCi_3^>FA9)zM}O!7qkAN*!P$r75lAEE++dQ^LF$OpH|U& zo{LF;>~~||pSZN*fW00PxtQ$#6Mv81xW_75&vP;B|19=B?xu?U)+ZN}{eN=5=za2) ziq`X7O!`M26#G8%t%?J7{+wJ)_TO_=^m_hM(R!YXS^vb?ch3(i_FJD^O!hy1QS^=) zQqg*zi%I`eOJd(gkE}Rg=kLkIWdBEhH+sihTG4u*i&_7P*!MBxEB0HTTuk`fJ|=ed~lkNZ{Zd%|rM2kiBC$i-y;#~&2Ev=9F{fVc=z9;^);(-1Af?Q1Yf6|iZojkIl^*k4|{*2i7Nq?x=Z+&tx z+5gE;MDNq%D_YNUG3ifwI`)0a@f8Q`^>E0=WdEo9Dtf2hR?&K%i&_8e*!QW^D)w8S zTukR+RG+Cvqs=ed~lPyc)D`;5mb4%q9@kc-LwC!ZF*$v>@VJR`s8A=|K9zg*ZWFE>v=9F{R<9?eP8fa#R2>K8M&D3|H7-Hci~?uTF-Ma>z^3= zzVL??`>jtdCi}l=QS?4Dq@wja7nA=v_I!qV+r%lm1mt$G&GBUva=*e}i01_CM=a(YyM# ziq`X7%=&M~zOSBEvETaSVzU3M{~En(9;#?P&&8yF?cZbHvmdKCV6VqPE++fG?zHIn zYvtSdAE)&^7qk9;vG40%sn~D-CKr?a&zTXuIe(~VJbZNx_d;JM= zG1>o3e~;eH&Ev;uJZxIF0E)i&&90&MC^Of_=^43Cl{0bFZx;Z?zpL<^*k4o{++*yecyFk z#Q}Rg268dk|J?^g@9wuMTF-Ma>EHF&*!SHJRqVI<1#&Uj|Kby)xA=z@t>?Lz^zS(> z_I=M!D-PKF0=by%f60>Q-8-_P^*k4|{*2i7l0Q`Jw?4U;?El^;qIci;iq`X7O!`Zo zj(vaW_=*GedIaQRvi~prDtgOqt7tvX#jO8!?0ea?iv89n7nA)j`)l;R{7^;fc`hdX z<$sTTf90`?1NQuXaxvNeiqoRE;-?j@=ed~m_lte6c%@>$^~uF#|M$;`-u-{5Xg$xx zr2pVmvF``}QgOiMN65uw|0|!4-b2S%w4Uc;)?XC+erQO=e(RHq$^IXDJ9-aKt7tvX z#iak$@5a7YU0QL#o{vv1Ci`FY_vk(HSVil3E@u6o#l9c8sbatN$;D*stTo92Sx9xw<=oCb1~_E^RKb*ryi=}j#@XMb98z~-08#bp2MmPGHlkrl1yxtR55#J<=4p<=)F$;D*< z&pi>n_2VmA&vP;9KmT;>d&BV+2kiOJ?X5!nBJ0)+ZN} z{lDyJ@)<5V-*MN`OoBHvj3M)i{8sWt!O>Z#jL+y?EB?cD)w8S zTuk=AaYpnu{-L7vJQtJxt5?OoU;RtP0h=Eq7nA+J_H^_%9beIUo{L$3QS5uukc$1* zCl{0bZ+bg=uTQIJJv=9_{h!6YH{VpT z-}>ZYvj4aCi{4wWRJ5MwV$y&6pxF1@Z&e(y`8jei+5bCNMem)zRJ5MwVt4<7uKBxf zTd&XN-DXw%$o@?(c3(g9f9vzwwe(wVjsA6F_w_To`a}L5-l05?*!JNxujgXoXB}R8 zEzRq>nE3ay`A58a{i~vRJr@%{>+sTVX{ENdM+k@*5Res(!8FF ziGOc%;2plHqGg_oiJx_N>9^b(eLnup`|InUc76Q!xjel4*z@q&htqD;b20I=4lliy z=Ji}mj(-GmyXGA^v!Z!D7ZX40@X~K-UeCqEKk}d9-FIU}^Lj2Oe%9fo-_pFEi-~`~ z&xUuue^fND=VIb#9bWn^&Fi_C`1gM)ydRrh(Y&6EiJx_N>9;hm=VIdjn9X1F@gMbK zMe}+tCVtl8rQg!Lo{Ne9fQ!R>z(7UwdM+k@*5Re!(!8FFiGTEl@P7QFistoPO#H0F zOTXpT==1sCynnZ!{~!Nbcn@4((Y&6EiJx_N>9;hm=VEgF{<;BuHt+di_?_nUTul6| z!%MHFc|8{s|G~WQl=%u)ujgXo_t#A^KYjd8^Lj2O{^L##?{V8Jn%8qN@v{yu{g&qSTul5E9uDvE z6Dyk6b20I=4ln(d=Ji}m{Kx+$yeF)zXkO37#Lqgs^jn(Ob20IsctUtj{B=e1dM+k@ z*5Re!(!8FFiGSh);XP?WMe}+tCVtl8rQg!Lo{Nc}*SX>GfAWfo=Ji}m{H()EzomIS z7Zd-dj}7mqw^cN+=VIb#9bWn^&Fi_C_$Mt7?Z_ta$-&Fi_C_*sXSeoOOuE+)r++EL*>?dKKE>$#ZtS%;T?OY?dzCjQfxhWCt~ zistoPO#H0FOTVRgJr@)I8UHi9lkcr)UeCqE&pN#HTbkE%G4Y>yM0n5qprUy_7ZX40 z@X~K-UeCqEKjohAo;9wbc|8{sKkM+)Z)sl7#l(NsPr`fl;)>?=Tul6|!%M%Vc|8{s z|2bpBd(Mw5n%8qN@v{yu{gzv!&*y*h{@s55pLoqIo?R6F=+l(r;;A&&9;wdwY1N9bD18 zo{Nc}b$IEwG_U7k;-B_|@LsU6qIo?R6F=+l(r;;A&&9-l;ep}3@cR|b>$#ZtS%;T? zOY?dzCjN^Sg!eOc8~hyNG_U7k;%6ORdM(ZCxtRDrV{7nUJinrOJr@%{>+sTVX_@C@ z;=g26crV#f(Y&6EiJx_N>9;hm=VIcYesg#)-M^xFJr@%{>+sTVX$#ZtS%;T?OY?dzCjOao!+Y6?istoPO#H0F zOTVRgJr@)IW#0+!nE0<49$vqGZeLsnm-By~i;16gc>Vgh zqIo?R6Mx^F@PBStMe}+tCVtl8r{8jG^!fhZynnaf|3CL`c(0sY(Y&6EiJx_N>9;hm z=VEgFR}BsCRqs?ZujgXoXB}SpEzRq>nD}R16W*&0d>wY0*K;xPvkou4mge-&D~u&&9;gI=u8- zZjC;l|IPb%`}u#v<>B?~_}V_4cAK7yiJx_N{d&Ekc|8}C+sWSXnobqb20I=4ln(d=Ji}m{0lD#@4^o&n%8qN@v{yu{g&qSTul78tqbq%y%o*txtRD_ zhnId!^Lj2O{@edoco#iW(Y&6EiJx_N>9;hm=VIc&V`_Ns*jdrMo{Nc}b$IEwG_U7k z;=l8$@ZNQ9Me}+tCVtl8rQg!Lo{Ne9u0MzO?zI)o>$#ZtS%;T?OY?dzCVpObnD76K z|5VYuo{Nd!U$@x&^zl2*>$#Ztzqls6_e`m1UeCqE&pN#HTbkE%G4bE?$M7zBvZ8rC z7ZX40@X~K-UeCqEfA8e*-n*lsc|8{sKkM+)Z)sl7#l(N#(^24i|Zcq`>*F>;%6ORzh1IvUeCqE&+AO{_+R$BistoPO#J>j)#jzo zKAh(DTul65el)zxCsj1B=VIb#9bWn^&Fi_C_?Q1SykA*W(Y&6EiJx_N>9^b(eSZFI z-oM+QKUbU_-WA&`n%8qN@v{yu{g&qSTuhGt{)fZ+z{HB?^;}H+tiwycrFlIU6aNFh z3Gag|E1K7HG4ZnwFa4J0^;}H+D^CdT%3oJBujgXoXB}SpEzRq>nD`%hAiNJxsAyi# z#l+7#y!2a|*K;xPKm5z^esx7f^Lj2Oe%9fo-_pFEi-~{LvEf~{t)h877ZX40@X~K- zUeCqE|H$(2K6-RT^Lj2Oe%9fo-*Rj8`TTF*zuV9MM}HCCuPv)+UeCqE&pN#HTbkE% zF**L#M}>Fw&nueOb20I=4ln(d=Ji}m{EsaS@8dlc&Fi_C_*sXSeoOOuE++oR|7Uog zxVNHtJr@%{>+sTVX$#Zt zS%;T?OY?dzCjK=)3GX)+S2VBZV&Z2VUivM~>$#Zt*NzSE+8sa^2b*K6H&vP;HvktFcuUa&(=VEgFPyHzTPv23|yq=4RpLO`@ zw=}QkV&Z@1(C|L znE2oRcX<6e;{*W=&`>g%9sc`n`_HWBYd;f0xLnql<^AG)gAzpGZ^Y1l1ynFq+5HGoy z`G?I5@30RG@sf*~fA3}C9d4ih+z${hxtRHfuMO`$;|lSTi7MJHmVD9ff$w#ms-` zuJ9hVst_-^nEA(y4)2&33-OYRng8$!;XVAlLcHW+<{#S|-myO~#7iz_{!h#fFVBBA zk3SC@FS(fc$1M);xPKMmB^NXQCs&8}h=U99l8c%Dh>hVra$+G~axwECxh1?k7Zu_q z7c+m)w(yR>p%5>*nEA)=4DV6*7UCrrGykVL;r-N;g?P!u%zyNl@E*OX5HGoy`FY;1 z-G1ko?-$}F7c>8{)5Cl0uM6>#i<$qpdEq_o!$Q2|V&@SbQ+^K>9yaxwFtXfE#mi8BlFl8c#t;`Z>KG`|opxtRG+8VE1XA7vj9 zFS(fcKRqJ6pMItgFS(fcC-sDP(mREC$;Hfn%9QY)^5a6h7E>%%+w=t8{YV&) zGOG|TxtRH<>7^yTW_+szSWvV&*?*ba>Bsu@Eo0nEB705Z-g&E5u7K zX8!Yf!+YM(3-OYRnSbi+@J{_xAzpGZ^Pj&syyyR`5HGoy`FmG~m*?M^$DfCXmt4&J z(>8|pf{BHA$;Hfn!Itn|cu^rc%>2_Qg?IY*3-OYRng7!1;l1?Ng?P!u%+K@2?DjjK{jd-( zxtRH9EDP_0*a4)5jWG*1WOB^NXQ<>un}ub5egmt4&J zS8NY&-~2+n8rBf@*-Glh7`#ms+IPk4F$688hdOD<;qSyRG0 z>&Jz7$;HfnbzgX|{#_wnaxwE?voO5Z{G$*rxtRH{T^Zil`xoLR7c>9t_2Iql=t8{Y zV&>;HX1U+zoLh*OT+IA)J_zsivkLK&i<$rW9pSy<0H+K7-&#x-POD<;q zxue57_r*fI45=hWFNqg?P!u%zx{a@bdf*^Z4^X@REy}f5Eo!e&L2f zyyRl$|H97jF1)u8FS(fcZ|j8jwkHeml8c%D_A%kTeN!P`axwESniSqe-!H^VE@u8a zrib^AUl-yf7c>8z^TK=QhlO~_#ms-#vhdzLtPn4`nE83$g57>+@wh^~MAUxj$d#mxWc>hON;;6l9QV&?za#_+D5ScsQg%>1jj zg!i$F3h|PQng6kE;eGsuLcHW+=6`%=c$q&okIy0FB^NXQlb!HBY5y=!2jV3cGym7e zg!k*43h|PQnSafs@UHoOAzpGZ^M7M{c)#)MLcHW+=3hH6ylX!!#7iz_{%KfO7;&zRFZ9f+4)%>2)o%Wl8(?94*ER8h?iW<{4ex{ z_l4gT;w2X||BDO5`{F+e@sf*~|641=%lxK!e2x<@xtRH1S|8q*k1oVZE@u9h`@_5O z+(NwMV&>oYL3m%8Rfv~d%>1wH2=A+R6yhZpGyki*!u#5)LcHW+=HE0ryqjJu#7iz_ z{?{jj_x1M*@sf*~|Bc@8zVY)yyyRl$XYSB$zw_pw3h|PQnSb-*@NWKBAzpGZ^S`w^ zyx%^!5HGoy`M3GkZ{mL(e^=k<2kq;Q&kr_a zA3i_W@IQ{ftMBuJ=J)x*hIoB`uwmx+`9bsg{9r@;K0nwn^ZWdud3}DcA%349Y?%3d ze$c!=KiCkz&kr`t{60TuUY{Rqh~MW28)kmy1nu^HZcxNeE@pn8A2hGe4>rW_^MegD zzt0bv-{%J#;`RB#hM9lgfq2~c{GjrW_^MegD{{emB_xVBdL%if-=J)wQ^ZNW?L;OBJ*f8_^{GfS#ey|~4 zpC4?P`F(!SygonJ5Wmk4Hq87!KWJW`A8d%<=LZ{RexDySug?!Q#P9Qi4Kx2CJL3NL z`9bqT{N!Th_xVBd`ut!+{60U}F!THTpm}|MupwTbA8eTUeSXlqK0nwHzt0ag%=}|} zrW_^MegD zzt0bv*XIWt;`jN%hMC{z2hHpAgAMWf{9wb(@AHG^_4&bu_rvFK0jz)pC4?9-{%J#X8vQR+vC@~ zK0nwHKe?FskDC{df1e*TKg3TiW`3U^G_TJOHpJ`mgAFtP@oU5H^MmGxc*(`g@AHG^ z_4&bu_rW_^MegDzt0bv z*XIWt;`jN%hMC{z2hHpAgAMWf{9wb(fBMR}|9yVY{1896nE8Ev(7ZlB*bu+Z4>rvF zK0jz)pC4?9*XIWtW`3U^G_TJOHpK7qgAFsk&kvf{=LZ|&_xZtwncwFJ&Fk}n4e|T@ zV8hJs^MmH~`N4+xeSWZE=J)wQ^Pc;jeH3zA2ODO7pC2@@&kr`l>+^#RGr!Ldn%CzC8{+r*!G@XN=LgN}^MeiX`}|rW_^MegDzt0bv*XIWt;`jN%hME6zTVuB$ z^MeiXlZ%<(=LgN}^MeiX`}|rW_^MegDzt0bv*XIWt;`RB# zhMC{z2hHpAgAMWf{9wb(@AHG^_4&bu_rW_^MegDzt0bv*XIWt;`jN%hM9lS zr1<#z{GjrvFcP)#rJ3c>Xeu$r3 z%=|t-XkMQmY>40I2ODPo#hb(L^MmI1`9brO<8R)-+wWgKKWJW`A8d%<=LZ{RexDyS zug?!Q#Ow2e4YT9-`9bsg{9r@;K0nwn^WQfjj^F18%@6UDi<#f&2hHpAgAMWf{9wb( z@AHG^_4&buczu4bVdnSwLG$|jU_<;qKiDwy`~0AJeSWYZexDy~nE98ljL$!xA2dJ2 zPcCMDpC2@@&kr`l@AHEVGr!Ldn%CzC8{+l(!G@XN=LgN}^MeiX`}|2v=+U<9Iey|~aaxwG! z{GfS#ey|~apC4?P`B!fVzt0bvAL1n!Gr!Ldn%CzC8{+r*!G@Xt@txuK`9bqTyyRl$ zf3g#gKc62ozt0bvmz;ex@89kBkFSpjzt0bvAL1n!Gr!Ldn%CzC8{+l(!G_uKe`9+1 zeSXmV5HGoy`F(!SygonJ5Wmk4Hq87!KWJW`A8d%%=LZ{RexDySug?!Q#P9Qi4Ku&b z51QBK2OHw|`N4*n{~23jw;%I^4e^tUncwFJ&Fk}n4e|T@V8hJs^MmH~`N4*GeSWZE z=J)wQ^ZNW?L;OBJ*f8@y-xJ60^MmGx_{qi0@AHG^_4&bu_rvFK0jz)pC4?9-{%J#W`3U^G_TJO zHpK7qgAFsk&kvf{=LZ|&_xZtwncwFJ&Fk}n4e|T@V8hJs^MmH~`N4+xeSWZE=J)wQ z^ZNW?L;OBJ*f8_IJ|VvT`TU^yA%1c(^S{v>kAI&ZG(W^oE@pn8A2hGe4>rW>^MegD zzt0bv*XIWt;`RB#hME7Z)p7hjKWKi4pIprRK0jz)pC4?9-{%J#W`3U^G_TJOHpJ`m zgAFtPJKN&^*W91a@tK#LeKhai?f2hK^G1(1-46e@ed{glvtRc%)ZCzG@2~q8{OA1O zQ2U#8XPwRLHRSeq6D{9uf5^hv=a7FFUi&xux8>r0-2Ywvp>{vv-D^Q1UUD(>51SI+ zVZSKEOD<;qy*Gw;_~b&o)~k``Kfkj|0R@E@uAyH;4CQQw#Bui81JHtEXfkM3GV&*@*FT98Uxezb8nEA(U3GXK^FT_hOX8v(K;T`wA zLcHW+=5JsB?uhUoVZ=)=X8t1v!h7VSg?P!u%-=IRyglYLPY2>97c>8ObJ^{8j=H80 zFS(fcKQ$q|pZY-|UUD(>AH6ob#~fRTmt4&J$LtF4v1@J=3Hh?iW<{FAqb_sqKr@sf*~e@bt7r~IZ6FS(fc&)OW`v!@o~B^NV4b5eHu zopatO#Ow1@4Kx3_%ffr!s6xEtV&*?@M|h_$EyPbQX8!Z1hxh#77vd!sGk9Gec`?M&xLr& z#ms-nmheu$ybv$BnE5a53Gb!fE5u7KX8zBv4)2U33h|PQnSaJWcxOIZh?iW<{FluR z?`7sRPY2>97c>9m=Ca%GTyaeyUUD(>_e}_I-wz7$l8c%Db8EwU<*|i$$;Hfn<*x8v zwWbg+xtRH9%?t0We-`2;7c>9WAB6XsxrKPi#ms;0r0`z*lR~`YV&?bx9s9UncXIe4 zUUD(>&*_AB&bmUpmbT+IA)r-XOzFADLJi<$q% zjp3a)xezb8nE7uS5nitMZXUnxJ6>`z^D`%7x8J#Ccp+Y&pJ|x+Z`mH+`F9oKB^NXQ zt-ayB^*4q1$;HgSU~_oCFtrdbxtRGEjt=j_Hwy8Ri<$qnW#PSjR3Tn+G4tQPBfN{2 z7UCrrGyfga!+Xc?3-OYRng7oI@ZNQCAzpGZ^WQxtym!A_h?iW<{EJtH_lt)X;w2X| z{}*?L_nrp|@sf*~e@S0>m;AX9FS(fc@7)sK`z|lUOD<;qr9I(Y`n^KD2t|hj+O-&C`K+$;Hh76?5TTaZMp!axwGYKOwyL z|DX^rxtRGMSR394k1fPYE@pn8->~CexhDJ&FS(fcADS25hyGcJmt4&J4}TEeug)#R zOD<;qRg=QI>L-PG$;Hh7$olX;dU7FNaxwFNtrOm_tt-S!E@uAK3&Xqm--UR|#mvu~ zgx!AU@dbr=eSV^0=6_;Jc%S%1AzpGZ^FO&UykDPOh@V`{{A)&pcg;(Mc*(`g&vjEd z{}0a=lUW_;p9|l8c%DsowBD^_xPx8c{_wtVaUouE zG4sDTCcH1cTZorj%>2v=*zI>-IJq;w2X||Hi)XZv1m0esVGM zzp^E~uU=k=mt4&Jul0oYweJ<;B^NXQrq$tn{fI)mVY<@V|3xAzpGZ^S`qzy!yL2 z#7iz_{!a5ok2l>8|K|Q|-gf)52NgyJ&gcpI-m{{Tn^@9Hj^C>!-~viP!CC zU;ix^E#GaQIknDz+t;gMg~Ok)?*o>L_Ws@Wmskz&G8+^W@sf*~|GwGbUH+#+yyRl$ zzh*~xdEO3wh?iW<{MSth@7y03;w2X||Jm<{w|8bCUUD(>pEoAF7i=oTOD<-9UZ;ZN zK6+vyUUD(>_v{Mqv8xL4l8c#t=*sYp*uM}jxtRHfZ4WQ6A7mbX9U;8rV&=D2XaAqs z+TKF$58gz3|85_@`>zbof$tYycD~(~<)ZClxBbJ-ga63hLcHW+=0CUuz!xpMSp)FS(fcdD!5; zy|)lAxtRGmPl12w`-OPP#ms-ddGIqYFXAN^Gyh}e!T*i-3-OYRnSY&m@V?kvh?iW< z{I8k^Ki_{uyyRl$H;up5-~YHB-bDN7Za;rm$3E$c`o1SxUiUBQ`u?}xdjD_CKZ~=U zw)@j^(emB)ziB@w4f&GYUr!beKd93o7w!GK?Jrpt{$&Rj;w2X||9#uSyZnwqyyRl$ zzjk(bum49OUUD(>`}1$@_~*_HKg3HeX8v=gg!lYk7vd!sGyi#O!|SiVVEcf0$;Hfn zb*j|i1Jl zhWF#v;o|`Dl8c%DKwFFdARa#r@sf*~|Bx}^J@leNyyRl$KWuS$>({TtOD<;q!#@b` z*nbq_B^NXQxSsHTa%Lf3axwECu`IktZYsn}E@uAr_1pdx{_#d0_vB*cXU>hs{n4`u z@sf+#ZpLjzdUUD(>Ph1_| zlin-DOD<;qlXrx7(*A{b$;Hfn%9QY)I=>JvxtRG+TN~cfzh8)#T+IAu>eE@u972f{yfTp^EpaxwEW=fvZ`_ufLh2_ghnLqcGLOHG5nggJ z^Uvsncjm-GyyRl$XU+%j<*N$ul8c%DivIBS{jLx%xtRHRogVyGonDBye*K=zKWkoi zuYR%+FS(fcuh|mbYyVV;pIprR*NqNu{rWXL?#ac>&zuX7{~K)2B3^Pad;Ifzv)z7Y z?uUgOH@TSk=Z%TuzUiVuyyRkb{LGo)zvab3yyRl$pZ`I4Z~aFhUUD(>f1xM53uhMM zB^NV4a~^j4{`w^%UUD(>FWMH~JN{LOmt4&JcTEWY-Lneul8c#t@yhUi@ts1vsN5xzYZLcHW+=3lupybm8-h?iW<{G4~fzv_-cyyRl$=kNS{ z{2%>sAzpGZ^M7q1ypN45#7iz_{>P_>m)9*|AMNWGSdPDW|89T(#i`nCUT_?QHO)TWN$;HgS zes&!9^Q#K+l8f2#^LJ+M|N8msc*(`g|E&?>ed+W5&eVun2IWK%pJCEqO_}Sg}Iq$`J zIzQhe+I~D2pWc0+-}gCA{T}W#ujgXo=ez@c|9xLHujgXo*Y91^HpV`j=Ji}m{QTaB z-+$i{&Fi_C`1NzIehzh-*K;xP^K&SHU zSD*8|?3>5C$kz>W(enE9udB~_Uc7w1iFnDy%+Kc?Ue5oDc*(`gKXP7pIsc0v;w2X| zKj(Sza{gDuOD<-9fBw07Isc0v;_Z6=dH4DAuKSPkym&e9E8-;=Gyj3+!pr$z5kI+@ z9Y5!J@pArG#7iz_e$Mma<@~RRmt4&Joae>M`Ckz)xtRGm&x@Dyzan08G4pet7cXCL zMZDx<=I1;wUcTOoc*(`g&)0ptoc|T^l8c$2?>Bfk|107p7c)QSdGY%7D;nY@7c;*< z|JeMT|HTjSc0K<%dHi#p7eD8JMZDx<=I1;wUe5oD_{qiW_&Lvum-D|OUUD(>bDkG3 z=YK`K)W;w2X|Kj(Sz^7Dp>mt4&J z{M><;^S>fqaxwEy+ZbNX|Kf*u$;Hgid0xDn{}u6)ifqaxwFBo)<6Ye?`3HV&bDkG3=YK`Kh^eu%g0`De+`Kb+^q%lTgsFS(fczuFsK&i~?v_{qiW{^vX|Ue5oD zc*(`g&v{atB99e%>13^Z4l>wyUu@5XP<*O|NEK$ zJpaYMJN9uGdEHFj#Q)fTSAPh{{~P;nQz82y7ysk+JG=UOaQ*78{vKSvx~o5Ip6%6+ zf0%vzMUI#ekT{R`+o!Ms8tT)(=j|FNF%bKPq02gt{rT+BZHqo%}h590dO zUH$|5!h3*y-Nz5{l8c$&&wtweK8WjAclr0=`qf?i1J}p#590dOUHyalL0Qr{9L!1`yX<@lZ)B?f9S68590dOUH(0|esx#>@Co4`#PzGY`eS?J zxX1pykmDv7v*X``>sNRA$1M);xPKMmB^NWlzy7B^{s(dW>Ms8g8^b$@>sNR6kKAH? z^Y>g-$k#n`G5h-0&OhG}`xtNJxc&Th!|eF?;QG~F``?4>S9kS~9uvnsi0fB(^^chp z$32MaS9kS~ogV&Ue_hD^PA+Em|8euef82+K-2dcacK=UU7G6L9Z;u0rmt4&J$FB|V zAg*8Cb^Ir64*wvoU)|N`d6Ra0gSmcnSAXL6@DJkp)m{CQ2Espx>sNR6KRqJ+gSdWm zSAP$#U)|OBzkk@reGu2L?&|Ns^{c!3r!9=*AH?;myZWcEjQf8O*RSsCbDe6w{te># z)m{C`{oxJN^r{gntm%ukP|+xGlUFHQ)asUUD(>^E$75{te>#)m{FJ zJK-P1^{c!3T&EiUC7TL)+>wjf<8KeHU)|-ubb5FPasBG9{%7aK@ektq)m{BPxPEn4 zf9Bfo590dOUH!{8$MFy1`qf?i%k5*uhn6ceEtvO`qf>1fBwAP@0x>z-0$RKcK^@$ApF7JT)(>O`1j!Y)m{BPxPEn4e_n4K_aLrc-PPZN>sNR6`8zlF z`yj4g-PONkwe{`sH;C(3clGCQ4F9bY3;DQ{i`mEj)-B;*a8V(TJ9065{4LlP-a%Zy zx@-Sjr<&s*#PzGY`nPq$f7_FV95=a`9sliP!as=XS9kdrO$sm9t>$q6@sf*~-(UaN zj(-r>ukP~SIWN3}xPEn4|E^_m{DZiDbyxrHwc#Jc^{c!3&Go7My45@m{(oG*x~u<1 zd#rN5590dOU45T_Fz=H2aX&yF_x1DNvd90Df$$IF`qf?jJ-B{#SAS_w_y=+Q>aIT5 zspfwF(vJ%{esVE8{$+jPU-r8~9{1#8_W0j}>sNQ}fBDMrGWWsbz~?{APmaHNe?9-v z)&I(R>)G+IIJ%JICKt2gU(p}lL0rGO%fAQLukPwUup|5r+V_2qA9CE}Vs`)g>mS?k zuUr+!4>@jfF+2W;Mu&G0*RSr{|HBi)JBaI7clDWb;kXBJ{pzm%9$de=tN+O2@IUge zLhg5RF}wdCZNC2x;`-HH{;zEe?;x&U-PPwh)ja+OasBG9KCiRP{XdB7S9kRvZ@&Ng z{EzLUeg3EAJpP*Z@AmW8zU{l8>sGT5$o)<(X7~RdT)(<&|7#|NcM#XF?&^PIy7le2 zxo)+{ag&SL=il0S;UC2HtGoPraQ*78{!?qiKZxsBclCY#$&P;z*RSsCKV$b5ANOZx z7V>c?7qgH5v)ip_{y|*7y34-@*RSsCuOAWqL0rGOtN(mY9QX6@6ms0;Vs`v{aQ*5o z{|kNLt)Kskmt4&JFD{JZAH?;myZql;8U8_Bzq+gc()#cZ;`-HH{g?a0KZxsBclGz+ z`qf?iS9XMd5ZABn>c6@xj{mjh`#{x^PJ$m5P&%pQMl&JORJe=5XFE@uACi^DsJ>sNOj|68lWJBaI7clGz+`qf?i zx3`3U5ZABn>c6usj=!EC+61AKCP=Tj^EAXqrn&e&Y6N+*nv0ikALAu^Cbfi4o1q1Du?MSnoFvQ{nT4`>;!`@HV^bKQ3e z=bX*^;W~5fbFT0AnIGykUzb@I#y>YJ^!=p5@n!k@zxzDJU-02St zVgBBEIP`KpIYIkWh{L2sWZGUKv9(Mla_muox$bWKuvtQmXKc_C;I>`5)tK0hJyytu0oEJ}{ql24elFyH&(&@Ha^Ca#-gASux4Y@?pZ#)P zevohbLv!@7^Dn=r_g{XHZ~H@Y z^sw{)*}KbH{{FPe=V;Qs4zpk0FF&W`=R*GXT;0|$=RKeQ!?AT*!ZNb+cd2dp`g2gQ2_WVdr0dkZ=1#bM&zDFTbbc z=0d)c>zn=Ze)&0d`Q?NBCs#N7<-F(fEk78#n;v%llM}R`e>6uAJOA=~N`5Znf6w)8 za(Ta;oRXgl`KO0NFX!#y`%7;ebT>Wh{L2sWZGUKv9(Mk}ay}M~lAjCtr-wr?@0Xub z@^c~I$<@t%Id2dD@`Itf>0#$TIYImRM|1SB^Dn=rK}*!h>=Q;+@YApd)=?{wA6`{n19{9MTQo~zsX<-9%o zKYIJ1yXj%)KcACpKmTZs9(Mk}c4JvfeoiGvNB26+etEzAochMqgZw8~H~Zzh=kqT= z7`mGtcK+oD`L;haM-Myya(YUBF65gY4!yizPELLE&O!e7T;0|$=k4KJelT=5J?#9; z5Atn)XpSCs{=ap$tR+9ElB1*ZKl|nVXE)ceMSe~p|MYOk<-F(fz2^r1w%tv4|Lm9Z z@`HTa8=9kso&TrbS=N%9Q_0cM`JerAzxpNfN@_zX_B|jJPpIqJSm-F`UEk78#n;v%l&xL&Nxw@@i&U-%Jdv5Udb~oMqvtQ235Atn)XpSCs{^j?S++4_aa(%O3?w6BO z*RCGqKe@WuFXugW6m@ z^1tWmwthKp58ufRqPyu~=U;x1Z~H@Y^sw_Uzo+EqLcaH0-`Ogc_sh>I`MHq) zoVSO6`N7cL^sw_UKghTJp*eck`IpmE@^c~o$@R^CdB6OelAjCtPp)qE%X!b|TYfNf zH$Ck9Cnsn>|7eaLcK(0l=uvWWA^-Gnd|BQvKc{~D;X(fQT;0|$=k4KJelT=5J?#9; z5Atn)XpSCs{(o{l7LAgh3;CvpLoe@_pHp&kA^-Gn=;gdUe9I4p?xu&GfB8YaliNdc z^sw_Uzo+EqLcWvhoBi_sSMJ;9Ub%IUZ+bX7<-F(fEk78#n;v%llM}Sx>wxCyVdww) z>9UsmoJx+4?sb^`@_zX__3D2P^1bKkwthM9`FzU{hVG_^o&V$n?dKoO(ZkOF&u%Ph z$!+y!=ab^<@A*N zT*!BFeY0QA%g-tKxsZQ)IP`Mf^Z8G15Zz4=JO9ZE+Rs0lqlcaU*Uy%<R{n;s6iocDbGEZaYykAaE$c^Y-w)=LU!1ZhF}H|JCO=-}dv5=ICMP|IPEUXq5b1$TvM4dU?P6oRXgl`A)8G z_RD#D_?I6H-AxZW|MG);+aH>vhn@dhV^;m<=Lh+whoe*8FF&W=zIBlQJy*B&%XxeF zmLCk=O%FT&@`HTaADW|wo&VpSE^EopspRPB{Lg-QzxGCzg}XePX$1 zx%8Qf+kbs}?4{+tFPuF8!ZROzwYUFU@Rj9?ANS^W#=qJ7)A-%x`oZu1W7EUY|Nm=0 zGXK^eN5b#x<5$POAH3&<@#&dE4@bY8fBErk?@#9)XfHkN_Fw{`|L-1 z>0!73i~rpAULO1GM|hX@ZLsTmm=ni(h>o`}p8)D**vJcVQmW`^Q{#Ei@g%?#9x)Qrds z%@hwAskzA1(9AGRS!%|1nueODp;gn(RMR+4)4t!&_xt<0ugli>`r~fTo@evwx_Epr zTea8j`Z+XgXw#w1hDL9)>CoXro5cU&Z=1a0?;p77u=#U8v-iFePC5OwQ|6s_$|)b4 zJ@1qY=FK~0|NZApTCn%t^WJsJymQam`|Q2X-skLn&))Cs{ZBdP-1&3P`1o0;4GnF- z*=r7(viM!o9=~nlyANCS&gI{ndEC(G*BEQq|9@-q;X^~iUbpGcF+;;fY&tY~X#B{{ z;`efC{NHDXhW^j!*756VSK}Yw{Pjaax_?UE-=6#b_y7Lizwm$K{^RP<(4G(1->>H1 z@9!U)_s0+Xhr^m4e@N$aeL4O<-TTl*Kl)Jjn6q;?yI=$s`H1P zT<&Y*Pfq?k$cCG{YJAS&a!{ad-{A+Id z&`>tq+*RXq4wri>F1zadEw3+ktI1u%&0RG<=Ww~N;@+z}(YhMT);e9qx=U&Uotoj>B~a<^H~HQd})<8uy|`zkKG>im%t%N@DC zYq+_q#^)R^_f=eW)%mZ#vD|H^b`3Xo)%cvl<-Ur`t~!6aVdZWYzXt#M%Z8h~YJAS& za!ip5aE%z;px`vy(YJAS&a$m(|SDnAp;pOhM zv1_=wtH$RXF85VjcGdZBy}R5oGrESGyJ~#S;c{QaWmlcQ^A6?iyt-?+xvR$K94_}& zTz1v@yIfrE+s1YcH+R+eoWte5ip#D#|80LPch@Cd!_8eaKId?`ui~<+&VT#S<-Yx; zuHojc8lQ8x+*fhgRp;+^f4T3N)ivDQRpWCGm-{L%yXyS0JC!?jP1kU9SB=j(T<)v5 z?5gv}U0&|)6S{_*yJ~#S;c{QaWmlcQ`(Ml5V`iqp4FL(cWUBk^?H9qHXxv%1~tInUeSGg0{bqzOn)%cvl z<-Ur`t~&o+*OxnKa@TNkSB=j(T<)v5?5gu8{kz%RP8%*Kl)Jjn6q;?yI=$s`DogD|d4I8vOfTHr(7*<8uy|dnzuw>ij9^ zlzYgiuHojc8lQ8x+*fhgRp%e_Lb-=7>>6(Fs_{98%Y7A>U3LCp2bFu+hOXh}t{R_n zxZGE9*;VJi@78h;pWZdx+*RXq4ww5XF1zadBSw^a#Hz00=B^r_bGY1BaoJVpPrabr zBgb?NH+R+eoWte5ip#D#|H$8#`~F2;!_8eaKId?`ui~<+&YyO8xzjdw4L5hy_?*M# zzKYAPI{&D<%l*KNuHojc8lQ8x+*fhgRp%eQL%BzU3LBkFD`fb z*skH`t{R_nxZGE9*;VIH|6{oyTGBP#+*RXq4ww5XF1zadV~#HOn3uYSo4aa!&f#)j z#bsBWf9(C`9yhCNxVfvw=NvBgRa|z}`N!{6?(u87hMT);e9qx=U&UotoqxjR<$icV z*Kl)Jjn6q;?yI=$s`Eem*K%hp?HX?Gs_{98%Y7A>U3LD6CzKmk@<0D%!_8eaKId?` zr{c1!&Y$^kxgVL+HQd})<8uy|`zkKG>im;-EBBb$Pu=B^r_bGY1BaoJVpe{8REKen!GxVfvw=NvBgRa|z}`KMi9?#Cy0 z4L5hy_?*M#zKYAPI{)MUF8A~mUBk^?H9qHXxv%1~tIq$#>E+HD*)`nURpWCGm-{L% zyXyQoPnUbfg0A7_t{R_nxZGE9*;VJCIkDU`*LMv!ch&fu!{xq;%dR?q?v3T1HMMKF zxvR$K94_}&Tz1v@XAdj)?D#eKfB$F0&0RG<=Ww~F;@@=YR5`azDADYq+_q#^)R^_f=eW)%oY$TJHSm zUBk^?H9qHXxv%1~tIj`vM7ig$>KbnDs_{98%Y7A>U3LDaE-3ecFd~&&05APao?yB)Qhs%8xmtA%K)sL6^m3dvm z&0RG<=Ww~N;@@ z=U?;ha<5&{HQd})<8uy|`zkKG>ip|YFZXLByM~*)YJAS&a$m(|SDpX0r^~&5LDz6| zSB=j(T<)v5?5gv>KC#@dukRXe?yB)Qhs%8xmtA%K(i_YD#?-Fi=B^r_bGY1BaoJVp zFB?|wviLRl_rGkoxvR$K94_}%Tz1v@-#n+>8%A{vH+R+eoWte5ip#D#|ArUJ{no;+ z;pVOypL4j}S8>@@=ihixxi@a;8gA~Y@i~XfeHE8ob^f<+EqD3!uHojc8lQ8x+*fhg zRp;L{qTHKSbqzOn)%cvl<-Ur`t~&qb3(Eb@n6BaGt{R_nxZGE9*;VI%=eOnFvZ!mg zxvR$K94_}&Tz1v@-#xtC?{4fGZtkk_Ifu)A6_;Ig{;hYHd)thz;pVOypL4j}S8>@@ z=dakI+!d?4hMT);e9qx=U&Uotoqzkq<=!#2Yq+_q#^)R^_f=eW)%kb)vD`bCbPYFm z)%cvl<-Ur`t~&p&qszVPrLN)Tt{R_nxZGE9*;VI%@BVV{p4Bzn+*RXq4ww5XF1zad z@9$LZ_t$g{H+R+eoWte5ip#D#f92)n{$N7aaC29U&pBM~tGMi{^MCNya_?E%HQd}) z<8uy|`zkKG>im08DEGd|(Db39Y`D3r#^)R^_f%YV)%o{5T<#C&bPYFm)%cvl<-Ur` zt~&qz-O9axZP##fSB=j(T<)v5?5gws>*{h>P3jtM?yB)Qhs%8xmtA%Ks(+UIqvc)0 z&0RG<=Ww~N;}WvxVfvw=NvBgRa|z}`9FTV+z01%4L5hy_?*M#zKYAP zI{%@)%6({E*Kl)Jjn6q;?yI=$s`DSdzTBTo?iz0Hs_{98%Y7A>U3LCX{$1|s6>6(Fs_{98%Y7A> zU3LDG2bKHehOXh}t{R_nxZGE9*;VI1b!)l5oZdCu+*RXq4ww5XF1zadr$?0g^s27m z=B^r_bGY1BaoJVpKXXC3YsYjAH+R+eoWte5ip#D#f9-F}{qIFx!_8eaKId?`ui~<+ z&VTmsa-ZGUHQd})<8uy|`zkKG>ip;KF8BEvUBk^?H9qHXxv%1~tIq$`4(0x8b=Pon zSB=j(T<)v5?5gu$xVYS3kL?<6?yB)Qhs%8xmtA%Kum4!?x+Pu1&0RG<=Ww~N;>b@HLtKQ#~KkvfbY)mUI zyXt(-;c{QaWmlcQ*@kjAk3WWd2gPMqozFR3?y0!!s`Fp7pxj}TTXES{=W`C1`zkKG z>iqn9XYu=f?b`AwF1zad{JCf0a}S^5va8M?zO>veX0_t7tIp>fF85VjcGdY?jxBe~ zjjg!ss`ELA%Y7A>U3LCetIFMaVJj}X>U_@Oa$m(|SDpX5spaO+ADdD?M+}!;bw1~C z^XHEZip#D#f5f`-w^`nb%dR?~bNJj>aoJVpkDOEP>nF70va8PL94_}&Tz1v@uYalB zZCAJAva8PL94_}&Tz1v@+bt@0`{}K??5guQhs%8xmtA%K8%CA;hV`wu?5guQhs%8x zmtA%K4lBxin6<6A?5guQhs%8xmtA%K&P&VPWmYRLyXt(- z;c{QaWmlb_Klf`&{JgA<U_@Oa$m(|SDnAx z)NfF85VjcGda$bGN3%&#wwToGdQ8 z>U_@Oa$m(|SDnAlnsWDD(u&KjI-hg6+*fhgRp;+Fqul++wBoX>&gUF1_f=eW)%p8x zD0kw@R$O+~`JBV$zKYAPI{#e@%AGX16_;IgKId?`ui~<+&VTpta^JnS6_;IgKId?` zui~<+&Ocyjx$l|Pip#D#pL4j}S8>@@=N~w>+yghZ;hXcGdZu!{xq;%dR^AeT&LHe0nP`yXt(- z;c{QaWmlbl#HezQSl^1vt~#G{xZGE9*;VIHT~Y3l^ICD)Rp)aKm-{L%yXyS+Pbzm> zB%C3N%dR?~bGY17aoJVpPg_&&QA=8J*;VIr4ww5XF1zad{JB%{`#yS1`4pF3bw1~C zxu@c?tIj`qL%APZ*^0}qI-hg6+*fhgRp(D%Q0|8&x8ky^&gUF1_f=eW)%nK^FZYxyXt(- z;d5WbWmlbl!m4sVys#CQU3EU^aJjGIva8OYF}2(iN4Da!tIp>fF85VjcGdYOt}A!u z@>X1S)%l#m<-Ur`t~x(|?$ea`c}Ww>r?~8@^YiCEh0i^Fip#D#|D>17{pjjeTz1v@ zoWte5ip#D#|KvsGo-(}^mtA!}=Ww~N;mdAcGdZu!{wfe%dR?q?(lNwu5HC-SDnu}T<)v5?5gw6T3YVevs!W4Rp)aKm-{L% zyXyRN#+G}|##UT*)%l#m<-Ur`t~&qRRpriG*ow=pI-hg6+*fhgRp)@@=U+6b+|NbA8KSuCs`ELA%RLpBU3LEF)|8t+ ze<*y4%dR?~bGY17aoJVpe||>!3&*tLva8PL94_}&Tz1v@3pbQ|$;wt-cGdZu!{xq; z%dR^A(go#yVR9=jyXt(-;c{QaWmlbl+3<2NTic4ut~#G{xZGE9*;VI%acQ}i&uYbG zSDnu}T<)v5?5gv>G`8F?ZEVG5SDnu}T<)v5?5gt@ttxl%!d6^%)%l#m<-Ur`t~&pU zspVcdvK5zIbw1~Cxv%1~tIof2UAb2+Z^dO-ozFR3?yI=$s`I}*r`)S2wBoX>&gUF1 z_f=eW)%jPyRPI++x8ky^&gUF1_f=eW)%i;nmHXA{t+?!}^ErpheHE8ob^bM@%DrZN zD=xe0e9qx=U&Uotoqz3$a<7}$ip#D#pL4j}S8>@@=YMTdxz|U+8KSuCs`ELA%RLpB zU3LETYs&rll2%-H)%l#m<-Ur`t~!6|jB>v*rWKc6bw1~Cxv%1~tIq$%hH{s!Y{g|) zozFR3?yI=$s`J0OpxhfKx8ky^&gUF1_f=eW)%o8VUhcQnw&Jp@&gUF1_f=eW)%iCr zE%)2AT5;J`=W`C1`zkKG>ip$n%U!;)6_;IgKId?`ui~<+&cA6@xi>Ft#bsBW&pBM~ ztGMi{^S?8-+*?Mr;@@=Rdlr+@DTw z#bsBW&pBM~tGMi{^B)^kZvOn2DfM$)aM@Moa}GCu{>z}a?5gvBwxayU=e6RptIp>f zKKE5zcGdYmpH%LeNH{|jmtA!}=Ww~F;ks`ELA&wUk_U3LDirk4A{$W~l- z)%l#m<-Ur`t~&pPb>;qgc`Giv>U_@Oa$m(|SO3F*-z$Fp$;;(#@@OmWQ0(e|_^-IX z>9*x=`eG|CyXySc%q(}~56_;Ig{@9u2j@zXbmtA%Kxbw>0 z{eV_ncGdagA1HUvOIvZ-Rp;;dY`J?aYsF<(oxk^vf~unSvp*;VHs{&KlTJlcxOt~!6} zw&hNJu@#qHb^f%OWc(6Uxs zcGdaE?O5({zi-85SDkiiiOmV4qMt+?!}^H02{+?g|5aoJVppY&q6 zAHBI1mtA%KNB>st$q%&Rva8OYeL%UVZrX~=t~&qJW6J&5j;*-ts`Ed-tlZO2ZN+6* zoqzg0<$mJAR$O+~`DeUb?wOCa;U;ks`IaUx!f;5+KS7rI{)fz z%f0%=R$O+~`Cpw`?lrr#;ilo+Q|>okZpCF+oqywn<$n8+R$O+~`QN^#+~qS{aoJVp-~3{^ z-?_OJmtA%Kcm7uHEf2Kfva8O&?SOJuY}$&;t~!6kG3DOAV=FGZ>ij#Gm3!Bzt+?!} z^Y6N+-0xl3ip#D#|NAeOyYkUiTz1v@KiIb1AH3L#%dR^AzM19zaFii!)TkZqPT5;J`=RdS#xexum6_;Ig{=@r}`|!)Hxa_L) zAGxsHM-OSmWmld5=r!g3bY?3qyXyR(y;$z!H@D)ltImJ?Z{_~{fmU30)%m|Tpxh@n zZN+6*o&V%94Wxa_L)pSh>pwHLPHva8O2_T_S)d$bjoU3LER z+m`$Mi>|KT6@ivRx${)=CneP7p&@%P!)nXmZy>#w-K$^TRL zHvMAPxR<-??q3c0QAd(^$xKGMoPcGcbA zV&D4iEuQEa-<`W^zJJU4b#JTqbB;fL*|?Xx>h4dg@80rvt$g>Ev8(R;x4N?KZM}0V z_t;f;|8>{acaIp?HNHD{)qMYm=jz@zXLOBwxvTE}o%P+@Oljr2N5rnW@89Onb#LS) zt=wZ*-Tl}9y}o4#(Da@9?Lt@!h$r=KJ4xZQUC+u4~-OU3K^8)_0HEq?PY}W9+K?{!w?< zy*Ev1>>A&lyK27w&3~_ZqZfCLd%3Ib{*(3Hqi47B-EWRvb>IJ% zt?J%eZffNoyXx-0b-ViRx8B}0zB_l-eE*nZ>)x0@b&Y$utM2|D_1$A0Y2~}e#ICyU z-+6A`+hvnh?y;-x{@do)ckjAI*ZA(-RrCG3-dp$Heq`6Um%HljUs>P%_MKb#?p{jlvtM2|go~!R3dq&sz?%Y-L{o}T)d*g2J8uxNn&Hb@|uJ0aqNh{yY zuDb8veUG}g`y;K~V^`h%@%z?ykAI?Te0T1u`TjlU*S)>A=oj zmG7PyyXwCGUDN8`yMEWoJ$BXIfA_KV-S7TW*ZA(-RrCD^TwC|vGp=jg%UyN%=hk<> zXOmXG`+(S0_x}sA-Fx3At=wZ*-TlMo*LNSWMc4T5+*R}aN8DTYrXJZf?&Yq! z`&ZU?Pu;nd?>-`S)qVfeC+pskvs<~xuDbj0f3CiJ+8JHryK`5~_aC)g-8<^`u5mAS z)!d)<=lbrWE@|bv*;V)bAK0Vrec+K+?y;-x{s;H1@BZKuUE{lRSIzfNpI`Srv_;pr zm%HljPpj{q{<~JbdwT4u`~DAIS@(|Fxs`kDs=I&ewe{V{jq4iUox5tj|G4Ms-tlL2 zjeEJP?*5(i-N#R9<-3oIU3K4o{GaRI3752Tk6m^5Km7Ol?iq`_#&_qgn(sex-@13= z6J6t8?y9@LRekq~H?{KJC&sS2@1HrX?#=vNEBDw{cmJeg>$^|-Q`h+J+*R}aAHBBj zojk5<+{;~c_vhAkpS(#c-~G|pRrmcT-&yxgnbOKVcGcaVb#Hz5>?6CzcjvB}@1Onm zx_9d0u5mAS)!l!xzWdbKt$g?F*j4xaAKR+#ee9-I?y;-x{>Qhg@BaAhUE{lRSIzgI zer(-4{ZC!vUhb;9zej!d>5sJX-KWQ{y6^wQ+`2bslUDArtM2|8^Xt3M+@foIckZhB z{xk2bdvlNM8uxNn-Tf=;yXWrQ%6Fd`yXwAw?vr)ztl6#HV^`h%v!AQ)KIe?C@!h$r z=KIgxuI`2&s@^VJ$BXIzwqz%-Jf0D zHNHD{)qMX&`_{dSp6D9)a#!8`t?Iikx~Y}#z9@FpegEgC)xFRCu9bW2s=NRBW9z#= z|EI3;-MOpg`xjnY_bwUNHSXoEy8CnMyD!c0PqxpnW#OefQNnxANUzj$L)%fAy1f?<=!gxyP=$ z`%9jy@BZo;UE{lRSIzfdvt8Z0=Ju{}FL%}4|LULXyRW&VmG5R(-S=O+N8P*jkyh@p ztM2~S_O0*!+7n&lyK`5~_g_E1?tOiWu5mAS)!m;~-+le>TKVqlV^`hxfBnk3w{+)L z?y;-x{x`0z?_M^pYkYU^s`>t9&(*zep3yb#<*vH>ch+}*b4n}Uy)1Useg8NAT=#Cc zq?LQ@s=NQKzt?x)xVUS4ckZhB{%`MF_rCo^*SMFv>h5n<-~H{ITKVp8$F92XUp}qw zE&p9B_t;f;|K?-syKnwe*ZA(-RrCGdxwh`zGOlaf%UyN%=hk=MvPmo7{hioV_x-or zS@*s>rImZ^s=I&dz4hI<9oaR$J9pK5|80M-dn*=qjeEJP?*5bY-799d^4+(^uDb8P zeXF{6`%SIfV^`h%JGZOvzVr63@!h$r=KJqDw(i~ar>=1?ch%kBqrUsDM_T#ryJA<} z_kVA0-Mf2}R_?K@?*8}Z*LSbnqHBD2?yC9zmG{=Y9~{{=?&Yq!`&ZU?|6u1c+d-p%m$~|_~-CwnDefO#-y2f|suA1-v(fqpiz!qKOUhb;9Kdrv|N55<3 zyMGkB>c0PhE9>5mcW&h#yXx*gcx`?6L*u%}cjvB}?|X$6-~GtquJPTutLFP3-M8*N`b5{bm%HljZ&ly@ z=uNGB_oK0^?)!f_t?vEwcdguGSKa-e9b4c1vp;o>@6KH{-~afvb?@iny2icSRd;`G zefQ5dY2~{gk6m@&|MNTR-kK?`++$bW{U`3N@BYP+UE{lRSIzhT;_r3u$;DmcUhb;9 z|73mlle1g-?q9^Ny6=B#tGf5pO|9HxSKa-mx2x}d`u48z-MOpg`=2?s?mhFTu5mAS z)!pBtzWbR+TKVp0VprYwubo@>{(F;F?y;-x{us?yY;zAK5kT z<*vH>SJrnwzjG_!{aoy-`~K&jtb4zj-O4?7)!l#Lx%%#3pV2kGJ9pK5|GMq!-n!en z#=YFtSKdG574I+Zhl$wEs_{98%Y7A>U3LEJ|61<0 zOS^`fyJ~#S;c{QaWmlb_KR0iBy!ZJ_`Pp!DSB=j(T<)p3?5gv(=P!H{{u?HD4L5hy z_?*M#zKYAPI{yv-Q|=DebqzOn)%cvl<-Ur`t~&pX2bKHA4PC>{T{S-EaJjGIva8M? zbxpZ%I?%RITHQd})<8uy|`zkKG>ik_VFZb;ex`vy(YJAS&a$m(|SDnw# z{p8<&cDt-=xVfvw=NvBgRa|z}`R~}P+;^<&8gA~Y@i~XfeHE8ob^h2(%N;kqYq+_q z#^)R^_f=eW)%oLID0laTUBk^?H9qHXxv%1~tIpqJ_j31mzH7L-tH$RXF85VjcGdag zFD`e_v0cN>T{S-EaJjGIva8PL=e+Xg|6Uh$4L5hy_?*M#zKYAPI{%%!mHW=MUBk^? zH9qHXxv%1~tFgc8|Ndpdh2`$OYu9jdSB=j(T<)v5?5gwke!AR!7IY0ach&fu!{xq; z%dR?q-(AYx_o=So=B^r_bGY1BaoJVp?{`7D`;X}wZtkk_Ifu)A6_;Ig{{FuxcjEb7 z!_8eaKId?`ui~<+&VScV<-Ti8*Kl)Jjn6q;?yI=$s`DqESMIwU3LDU+m?IigI&YT zT{S-EaJjGIva8NN?DTTqH?nKExvR$K94_}&Tz1v@?|Y!!!%yoPZtkk_Ifu)A6_;Ig z{t+X}Jz`bYaC29U&pBM~tGMi{^QWF#?vYz}4L5hy_?*M#zKYAPI{(P~%YFZ>uHojc z8lQ8x+*fhgRp(FJvfOF+bqzOn)%cvl<-Ur`t~&pylgs_U@UG$Jt{R_nxZGE9*;VI% z;GS}iKB;TCxvR$K94_}&Tz1v@9~@Th2jkb^{~eMIH+R+eoWtdwip#D#e|nt7{m|xJ z!_8eaKId?`ui~<+&i~Ne0QIkT{S-EaJjGI zva8OY83upeedLy|vE{BBpL4j}S8>@@=bvim=cS?(#zyM~*)YJAS&a$m(|SDioW{pHU3N7rz3SB=j( zT<)v5?5gu;-&pRcQ@e(nyJ~#S;c{QaWmlbl>fg%!*bQC7&0RG<=Ww~N;eOpo{ehn1fVH+R+eoWtdwip#D#|Mb6>`-!Dp!_8ea zKId?`ui~<+&YyEgxpV%~HQd})<8uy|`zkKG>ijdVFZayJUBk^?H9qHXxv%1~tIj|3 zf6ASEUDt4PSB=j(T<)v5?5gw6I;h;UHgpX)ch&fu!{xq;%dR^A>}$$B=fJMv=B^r_ zbGY1BaoJVppYz9Z&t1|r+}u^;a}JmLDlWU~eEzyS{QLjBKXeT@ch&g$*X;?P`}h=> zU3LB^uP*nzNnOLuT{S-EaJjGIva8NN@Au`-zp87vxvR$K94_}&Tz1v@=T9v6{PkVK z&0RG<=Ww~N;qxu0ItHQd})<8uy|`zkKG z>U{n>OZ@r2;5S{v&0RHq{`H%}=RQ8g&A)!rpw9oy<>g*Dp=-FgtH$RXF85V@cGdY8 zzF6*OFY6j^?yB)Qhs%8xmtA%KMSGQd(YmhT=B^r_bGY1BaoJVpf9}$9FCO1D+}u^; za}JmLDlWU~{EJ^G_wx(8hMT);e9qx=U&UotoxgDRau+_|HQd})<8uy|`zkKG>ikPC zF89*0UBk^?H9qHXxv%1~tIogl*>b;dQP*&DSB=j(T<)v5?5guG+pXNo)^-gych&fu z!{xq;%dR^Aix-xA`L12V&0RG<=Ww~N;c`9d z%Dk@O=B^r_bGY1BaoJVpFWIr&C69FtH+R+eoWte5ip#D#|EuSed(Eh>;pVOypL4j} zS8>@@=U?+^x!0c6HQd})<8uy|`zkKG>ip|=DEGS6UBk^?H9qHXxv%1~tIq%0ndM%; zeb;bvSB=j(T<)v5?5gvxf4JPQ&*>U&?yB)Qhs%8xmtA%K(rwFK`e4^^b61VeIb80m zxa_L)zj1oG%SLt$H+R+eoWte5ip#D#f7t`&e)F`h;pVOypL4j}S8>@@=ie}*+#6PP z4L5hy_?*M#zKYAPI{#azmV4vYUBk^?H9qHXxv%1~tIogi{&K%Pt82KqtH$RXF85Vj zcGdaIw=8%0eO<%NT{S-EaJjGIva8O&>Ev>69^N(F+*RXq4ww5XF1zado9`+2J12Dw zH+R+eoWte5ip#D#|CV9p-V(nC|9gmRxVfvw=NvBgR9tq|`QMGRxVLWJHQd})<8uy| z`zkKG>ik>pF88(>UBk^?H9qHXxv%1~tIp5AZfyMiSKL*8Hr(7*<8uy|dnzuw>ipYJ zDEE#C|2$;F&0RG<=Ww~F;KbnDs_{98%Y7A>U3LE5x0d_;_~(Fs9b{hOXh}t{R_nxZGE9*;VKN=gr#=B^r_bGY1BaoJVp z|KxwlU432GaC29U&pBM~tGMi{^B*~=+($Na4L5hy_?*M#zKYAPI-kGJIe-5D^uVs+ z=B^q)|N80Sb044L=3hU3Q0M>jkL5nLq-(gjtH$RXF85V@cGdYmJD}X3{h@2PxvR$K z94_}&Tz1v@k6&Hx&nI;aH+R+eoWte5ip#D#|L4Cicg*Kl)Jjn6q;?yI=$s`H<{wA|;$cMUgp)%cvl z<-Ur`t~&p@7s`EpVb^eTSB=j(T<)v5?5gvBwR^e0dcJG8xvR$K94_}&Tz1v@FI-&i zug7)`H+R+eoWte5ip#D#|JTo!yY8Z{;pVOypL4j}S8>_Z|L_mXpTD^M(D;#?g&BX_ zgg*!3-#^sxvsmNTo0Vbj-|xTT{wAa1-uvVK-qOm?VqjO}AAi;Rn@)(c;cxn2D=xe0 z{LQA8yBTJD2gPMqoxgcl_?!Qw6_;Ig{%aPLJ8bh-Tz1v@!ipL)EO*AqH6cGdYiPA+%H zr&@8@Rp-BXM!Ed_wQ%z1u;H?+&L2Im+|mDP#bsBW|CUAN?zDX?F1zadotBsT*72>l z?5gwMx~kkUhqdCetIi*@w%nahYQ<$&oxk&ja(6ku6_;Ig{@aGiecM&7xa_L)cO6yk zuD7(}va8PL=Z3|vKlJtoTXFN}i4E%f-KLhiTbSVtQCxP_`R@n={~dp6#b;NYKXyU6 z<2G-_Wmla)Zb`Yjk8Z_fSDnB6igNeZuN9YFb^ac!%N>7ID=xe0{PF9`-Sf0oTz1v@ zdu}Y3pI^m45BYPf!e_@H{Nu0spFiF?yxezQ*NV%oI)B2Lawpu?ip#FL-~Zl|%H8|1 zR$O+~`TI;Scc0(1;9|&0cGdZl)|dP4vs!W4Rp-C^rE(9rtQD7Cb^d!smiwL? zT5;J`=N~w>+yn1x#bsBW|K7>vzW1qCTz1v@2hAw=pg*+Yva8NNcwV^&|Em?3U3LEC zMdkAIf5OS11BA=2I)BRYat|5bip#D#|BzMX9(q_SF1zadL)Vsj*h#Ip?5gt*+feTN z&TqwKSDk3q6T5;J`=YM2ipA|m;3SYt+?!}^FO|-Tz>vUIQerZ zaM@MopT4%-Pn^_>%dR^A6C28%bABr>yXyQihRQwTs#aWf)%j>&l&fS}QKQ>iqc|%RT?1R$O+~ z`JWnI?x(J6#bsBWf5Dh?FSx4}mtA%Krze&B>Bm}e*;VH+m|iaL_QR=n{Nc0X5B~92 z{m&ntnN#j({?Urdt~&q1h2?&B>sDNL)&2fIyR_Vkc5TIFSDk;+%5pzio~G zDfi;zT5;J`=U=?O+|QrYip#D#|MM@EyYRABTz1v@my9g;k{eoa*;VKB?mT||p-b;; z#bsBW|Aoore&MNBTz1v@m(3{mvOl!qva8Pj;=FRd_^(!6cGdZpFDmy-+qdGftIq$@ z@^TlAZ^dO-oxf;Rxr+~L#bsBWzj$rASDe&}%dR^AiVfxR{yCg{2aU_FI{&Jna<7WN z6V4FDWmld5au2x)j)%nXNmAmY*R$O+~ z`QMyg?l*taip#D#|Asl`-tdoBTz1v@-&$BM??=O_cckI7;}8DvSN+c)H!dyr+q<^n zva8Pj_R4aXAJ~e^uDaj<@-^k&bX+SgyXyR#)|Y$pS*^J2s`GDtsod{e){4unI{%iD z<=%2bD=xe0{O^t}_q+GC;37RTXES{=if86+ii!MFZajSwc@g?&VO)B zxewmeiqEb(|Dj3cKJ-{CF1zadho_hO@NZgi*;VKNWKOw1`9~`*yXySa3(I|E>sDNL z)%lMsE%(t~TXES{=Rdl#T;45(Q}393cGdY$OfL6{r&@8@Rpij3?mHXtsT5;J`=kx9+e*K|eZr_T_t~&ph%gcRwd@C-y>inlymHW(L zt+?!}^PgE;?%I=DaoJVpuia4Yf1lrq%dR^A*`acuy{Z+LU3LC*qso2mmR4ML)%nj) zDEIjXTXES{=l^PIxxD`fC*OhKva8O2A*}fIhhF$gD=xe0{9i99cirZ#xa_L)*DWdc z|J>7x%dR?qXz(}g^SAtU;*SG=im2k z5^la985EaYb$-4d2{+%542sLHI)BTJ_2*r_9|@o0va8O|_aouv`;kF$*;VJiZcO?4 zek6Q~%dR><-;acw??(p3WmlcQ&Gho~{Ydx}mtA#!z8?uU-;WH6%dR><-;acw??(p3 zWmlb_??=MT_alSiva8O|_aouv`;kF$*;VJ~`;l<-{m7uW?5gwMu)hBI=lhZHDK5L} z{CqzWZoVHG6qj9fe!d?GH{Xv8ip#D#Ki`jpo9{;k#bsBWzvJZk{pb6U@F_04>im2^ z5^la985EaYb$-4d2{+%542sLHIzQi!gq!b22E}DpouBVV!p-+1gW|HQ&d>KF;pY31 zL2=nt=jZ#8aP$4hpt$U+^LZx{zy46Z9~l&vU3GrG9|im2^5^la985EaYb$-4d2{+%542sLHIzQi!gq!b2 z2E}DpouBVV!p-+1gW|HQ&fjlg{qfKDBjHnAcGda$ek9y{KQbsTyXyRWKN4=f9~l&v zU3GrG9|KF;pY31LGjsD=jZ#8aP$4hpt$U+ z^Yi^kxcPo$P+WG^`T2e%+KF;pY31L2=nt=N~(! ze*gJ?Bz%g?t~x*8kA$1=M+U`ZSDl~lN5akbBZK0ytIj`RPW{ind_NLC#bsBWpYKP) z&G#dN;im2^5^la985EaYbw2Mz;@2O__alSiva8O|_aouv`;kF$*;VJ~`;l<-{m7uW?5gwg z{Ybd^eq>NwcGda$ek9y{KQbsTyXyRWKN4=f9~l&vU3GrG9|KF;pY31L2=nt z=jZ#8aP$4hpt$U+^FKAbe*gJ?Bz%g?t~x*8kA$1=M+U`ZSDl~lN5akbBZK0ytIp5& zA>roxkwJ0URp;mXk#O_<$e_6Fs`K;xNVxfaWKdjo)%p2;B;0&IGAJ&)>im2^5^la9 z85EaYb$-4d2{+%542sLHI-hqU@#_!e`;kF$*;VJ~`;l<-{m7uW?5gv5CxV~vM+U`Z zSDl~lN5akbBZK0ytIp5&BjM)zkwJ0URp;mXk#O_<$e_6Fs`K;xNVxfaWKdjo)%m;= ziC=#x-;WH6%dR><-;acw??(p3WmlcQXjS?7ek6Q~%dR><-;acw??(p3Wmlbl#fI|p z{Ydx}mtA%KRYUdXU%np+pW?Es&j0eL^7H*j_!O62b$-4d2{+%542sLHI{zzE%g^^C z;Zt08)%p2;B;0&IGAJ&)>im2^5^la985EaYb$-4d2{+%542sLHIzQi!gq!b22E}Dp zoqyfx`sY92kAzQg*;VJ~`;l<-{m7uW?5gwg{Ybd^eq>NwcGda$ek9y{KQbsTyXyRJ zjH%y$z8?vn;(BpuKN3F0 zWmlbl+l=z_{Ydx}mtA#!z8?uU-;WH6%dR^A_C@9A`;qV|F1zadJC@h)Ki`jpPjT5* z=jZ#8aP$4hpt$U+^Y2<)e!d?GpW?Es&d>KF;og0I{c)hU?5gv>KU99c9|@o0va8O| z_aouw`;kF$*;VJ~`;l<-{m7uW?5gwg{Ybd^eq>NwcGda!#@YDw>;1@}xa_L)^ZiJ; z`F><-;acw??(p3 zWmlb_??=MT_alSiva8O|_aouv`;kF$*;VJ~`;l<-{m7uW?5gu0npFR~%l9MUQ(Sh{ z`43O8KmYRmNca?&U3GrG9|<-;acw z??(p3Wmlb_??=L2b6@@QKyles=jZ#8aP$4hpt$U+^Yi^k`1yWhP+WG^`T2e%+*LMFp!_=gO^y9k?{6}vzH^g* zx9)Lu{QcO~|M>mC!rwIhb%MLu>8-fzs`EFWRPN?ax8ky^&VSAFa)(W9#bsBW|Jvc@ zzV^meTz1v@!{?Q|#jsXfcGda$ek1-o+47w7DK5L}{H-RJyH)(T&p!_omtA%K)+@?= z-9fFm?5guej4XG=t*yB1s`Iyrf1Sp!KQwYgD=xe0{E_R+eftIOTxgjQU3)%kB5TkhK)ZpCF+oxkgna^JpND=xe0 z{I|bU?rvd*GemLORp-AWtoZeZ-to^?Tz1v@W7m{B?&MZncGda2Pbhcy$6ImPRp;-q zwA}G~wc@g?&fjyW+&!;v#bsBWzt@~{_xg7$F1zadcdjjW!s)HJ?5gwgzrP>&VTocat}DD6_;IgKL0)W`1Ob0b89OuyXyP{7nJ+n5v{oFs`KBwzTAT@ zXvJk$oqzDuau5D(D=xe0{K+fJopN|9F1zadLq?T*$la~D?5gt*U0Cj6JGA1mtIp5= z{(AiD?|m1SPjT5*=N~@3+{6Faip#D#|Aj|^8Qv_cGdasUsUe2 zomz3(Rp(FJSng4mx8ky^&i}xSazF6bR$O+~`A4rV_k$<2;ijt)%bjy;D=xe0{4*Amd*+B% zTz1v@XRa@I?gg#5?5gw6np*Bzziq{3SDk2%dR?q{`7L^|FIR9U3LEXtIGY<(XF`bs`D=xQ|<-#x8ky^ z&j0kHau@8>ip#D#f5FCbKXZ92F1zad3ulyj;a^*E*;VI%c6GTIozRNQt~&p7W6S;A z!>zdNs`D>iQtsz>YsF<(ouB{x-T3#vg<*!1#bsBWe@R&J>knP>&sJP^)%lmMDfbH} zx8ky^&cAFzxtBfOip#D#|BFk@y?n1$Tz1v@Um7a+OV_vJva8NtG^gA}|8B))SDnv) zPnJLaSDfC8%dR^A%1Py3`E)BTyXyR_mY4hGiLJQos`IZNUhdU5w&Jp@&i~51a+eHi z#bsBWzhqsxUp=Q4mtA%KHIvJ|=7m;VcGda$-(QV?-CcK3`4pF3b^g~zmix6^TXES{ z=U=~|+^>&l#bsBW|Mm6dF1?@?mtA%KH>Q^Rjo-H7va8NtwzAxB9^Q(}t~&pQQRUun zcPlQt>U{otqVekw-MB+5F1zad8#k2u?TcG+*;VH+pI+|rKepnstIoe^Rk=4G-HOYu zI{!Ok%Kgs$t+?!}^KV&H?ss=;#bsBW|J{w{-gFB)~P79*hD=RC0k^)k)4vv zii(PiHY9AZPDM&CCKb`Cr8>D}l!&CLRG3F4MMWbs1Ax*}e3(fPME z>D{)zh?iV+{yP?@_m2N9;w2ZI|IR(>z3Y=jyyT+uZ=aRk?T;1ll8es&o00VX_Dw~+ z)Kg3HeI{%KP>Am}eB3^RQ`S0GF-rrwQ#7izZ|2+fgz30gyUUJd- zM>nPS-t&ui$wlYCZ*qF?yQzqmTy*~XSEP66$wj>6qVsc|V4T1C!}20ta?$x8n48`Q z{;P3!tXB3^RQ`5!ru-rZj*;w2ZI z|IzvBee{2dc*#ZQZ?E5rpT9p|oPLOxTy*|Ded*nEXAv*C==^_Lo!-Y!E8-;=o&WJe z>HYIHMZDyq^FJ||-Y5Q6#7izZ|6fMa`{X4>yyT+u|8+)s|N8qPUUJd-xlS(5-(J5a z;w2ZIzv+!(7{u=NVi-H}}}<=N^o?XPzF{s~#-&-yA=`k&AKs*z4!U&3`DK zr_KN6^{3(q{~kZTk&BUc&cAsey<2w|@sf+qf6H+CZ=YVoOD;P94Snfdx4DRyTy%c= zEaUvm4<;1xl8es&#h4c7Z&t*0uOeP@G4jsG@5;gSetCZpFS+Ram+VU~_npBH@sf+q z|G`=5y=-R@FS+RaZy8PRz`P<}a?$zEo0{IYZY<&@7oDH`tj779>HS5#j-o&Qzgq0ZNg7V(mc&i}^n;GZ>6#7izZ|M}s; zKWDUvmt1uIcZCQ4dk2bm$wlY?KzQ(fc(jO@Ty%b(Huyg?P{d0vIzRg?_?M3s@sf+q ze|329bH4`>FS+Ra-wF@@8%B$G$wlX1A0E6L28wveMd!aUJoq<_7V(mc&VOro@ZT{| z#7izZ|L?+s|K8CeUUJd-cZCN(?;k|GA_b;r6A;v#DfByM8Jj@q$-M<+5 zvGXq)_x>eb=g#~=ynk6%>_02szeFy^@y_`V&y4qdUyAqJyNf5hFn)iCT#VzL^Xaq2 zzjZ+oZ`*&{qw{Z>oZj0u7x9vd&VR#jdb$4s>wx&lMd$y{q4cg_Q^ZRyI{z0}q<6)X zB3^RQ`LEoQ-Y+jH;w2ZI{{w^Rz4UMqFS+RaAKaSW%jOmFl8erN?yU4)@I(#7izZ|I3%A|BOjRyyT+uA9p0ZC$1~vB^RCl`1$EQ z>0l8rx#;}7e#Gx*&9mZh6S)^TLwwrrZ{uD+jvI`%E|315RYiWEA{XO$=g z`W*1TW?>O8x#;};tJC}1ZAHA~qVvCQUwUUwD&i#k-Eu6=YQLgto!ZLi+IUJS3lRe^Y~x1vWS;l zbpE-U(#!qR!_(eJ9WS}){O@YgJFmZpmt1syt~1Ab@v0(Ta?$zUvo*c*pDN-d7oDH` zgyVl-%n|V(d;f6fUl3o*o&U3Y(!1nn5ihyu{8!9K|K}GJ@sf+q zzjP?QU)Ws4OD;M;_X(!%WfO{ckG+4e^IthLy~`ICdES$Y&d+tWJpWg0E8-^?-Shvd zed!%{|J?wR>;B=YB3^RQ)z5W~asKi5&kR2~{@(G<@86FnruQfDwS4~}UUJd- ze;Qwle`HM&FS+RI=Q=~YH|{UuB^RB4 z@%N5*{`_&B8TH>Yp@^4UbpFwq>A!bj5ihyu>c4Mwdhg#>#7izZzwRIRz@+p;yzTwt zdUXB=XQg-7q9R^$(fJ=*o8E_a6nWm0i_Xt=Ry_Y7ol?Y0F1qLcV*}~^5XIe?>G-bjDL3i{P1@&2Vmy2<( zHW$z8p3mo%c=b7A%kZ|jX#9L`iogB5QVegKi^i|djV>I?b+im`n~TQJ=T`XJ&x^$H zwz+8h`n_GhN4E@bn~TQJ=LY!O-`B%;>Th4K#qhVeIKKXO9J_zt#NhRh{X3D@5r+7**S~S|*{9>@ zm!Ef$*FADE@?+~CH-Ey`^zwRxAL1n!ouAhoyc5GI;w2ZIpVvFQ?B9ua$wlX9pAIkk zcOqVL(fQe@!^{4ih?iV+e)j3`vTrBiB^RCll+pCEZ-*b^B^RBaeLB4C--&q1MdxRK z4lnz6B3^RQ`Prw#%l@5+mt1sy_UZ7le<$K47oDGdI=uYK^ba;8cBjP0&ou7R=yu9BM@sf+q&-*UC?B9ua$wlYCa3sC#-{FUN$wlX9 zpAIkkcOqVL(fQe@!^{4ih?iV+e)j3`wtxS)N4(^s^S`S}FZ*}+AzpIP`Prw#&;Ff= zmt1sy_UZ7le<$K47oDGdI=t-PiFnCH=U)&myzJkJc*#ZQXP*u)@3%#~F~0DC*ma+ouBG1M7mxz~Kbbj{f@bY<^h?iV+em-}@ z%l@5+mt1uI+xpVW{vCdZmt1sy_UZ7le<$K47oESoe?@rNzrzplj=O(_dHrXf4lnz6 zB3^RQ`PrYt%l@5+pImhH>;4h!-{FUN+xtiK==`HI(|hm2B3^RQ`Prw#%l@5+pImhQ z_Wlh~Kl^sn5Alw>e}j4a*{8$H=dB`Ma?$zOr^CzVy&`^c(bdoAzIfTc6Y-LZ&i~jz zdfC6j5Al+V&d)v_UiR-qyyT+uxA!jyFZ*}+A>MKKFEEdP`}cps&;A{Lh?iV+e)j3` zvVSJxCl_7)O>aDd{kw7R-xZv-g0mK%R{yy9&zc(Zo{axC z7FiFu__V)YG;aQJ@pFp*xOo1G_{l}*e|CJI@IO1|h(i_ZVT zt?8XIyNH)ubp9#3()*$XMZDyq^S@|cdQV+a#7izZ|EWjP`{GqayyT+uPo13Jas6lE zC&%AAe(e6|xYy5@%t-G`wiWS`i_ZVjf%Lz0cM&hS=<0vjV0vG+zlfJybpB~e(>v{G z5ihyu{O#XAis%1nQ_>Idl8erN+DLj&?=Rvd7oGp~?dk2CQ^ZRyI{#Sz-NN+0JcyTE zbpDqgNbf6_74edb&i~3Ly{}wT#7izZ|MaQpoxZV%mt1uISItcCt9BIel8erN#@zIt z5p%-RK)mFl^Pd@C8|QD%JXpj_E;|2=73ppFFT)SS;y1`+$?^{+C@sf+qf9~Y;pSz)mmt1u9&z_Oq+1rYE$wlWsZy>$r?JnXa z7oGq7!StTLzlfJybp8vLruTxQMZDyq^AD^}?}bx}c*#ZQzi=eI+_xh7O^D zh?iV+{&{QD`|fE)yyT+uzk5@9FFw17mt1uIi$~M@o_R&QAh@25ihyu{2!T- z-j8f6;w2ZI|MG$KUcS4Cmt1uIj}E5yqx*|^$wlYqIvpPOj~y-IB^RCl1ZwDB>j-o&WP|)4Oz95ihyu{7W~b_X}qi@sf+q|Ao=?{_DIV zUUJd-+v~UDasT3?^h3PlqVs?8Po&U;->AiAY5ihyu{LA~&yL@vIFS+Ra zUz(NPFYPSiB^RB4#r*WHc&dn(Ty*}c7N_^B!$rL0qVs=wD81wEKM{U%{JrCyzyJQ* zaC%oxFXAN^oqy%l^j|%@h?iV+^a+E;|3J!St@$U&Ko; zI{!D9ruUmii+IUJ=f7rkdas>Q#7izZ|Ft9OUEN>AOD;P9>h0HYSO zB3^RQ`EQt;-Wy_0cp8Y8Ty*}m@wL>w_Fxe&x#;}-odCSwolwL}E;|2r*QWP-(~5Y> zMdxp?-wgk{v(pdpw*9O{}lpG+#^B^RClC&TIe>GUFAa?$yJx;4Ecvx|7iMdu&cmENB%DB>j- zo&RV1(tG2QB3^RQ`ENXu-v3-x#7izZKiBET`J0U!ig?LI=l}VP^!|KX5ihyu{5K7x z_om%NyyT+u|6(w`zt~^IOD;P9rlslKbhL<o&S~t>EE)fh?iV+_21g0_trH< zyyT+uZ=IUnts9GY$wlY?_007CdPfm2x#;}2%}wuZF(*6?#7izZ|LyU$asKA^gGIdL zqVu=cZ-@7e3F(J;kG=nr^WU*Hy?0J4;w2ZI|ISV6z3c2EesapkO#7izZ|Bk-&j=TR<_{s72j(7h2 z-aRY5cke9XB^RCl_w&>L`=^R{$wgQHJ&V(O&*36oa?$xmhthlRq#|B&(fRKkPVarw zi+IUJ=f7`jdhefI#7izZ|NXntyK_MiFS+RaT&ExBZ~m~Ph?iV+{y!W^?*prfc*#ZQ ze{gboAKXyHOD;P9t{LgwwXKMkTy*}22GaY`?jl}t(fJ=9Oz*?{i+IUJ=YM2rdLKDj z#7izZ|L)c4eRN6@FS+RakB+4GvHl`na?$x8+n(M(&MD$07oGo)d(yjSVG%F6==^&Q zr1wwDig?LI=YPCO@8fHVc*#ZQ|MS%J{&`~&FS+RaPs~j36FZ7{$wlXH`#0kC|1U8o zJT38(i_ZUKd~KY+dGcTpFS+Rae_fH@y%UOf$wlYiyEeV_Z?F!Cmt1uIrZ?!HV5pCR ze{;Ux==}c|eG&}%Cqy2{vA&8t-Z`H+taGeyB%VjQZ=4v%JLjuU1V4`#WFEN~dFOok zG#K!(kGLH~qE-D7`k4iH!Aa#5$NqF1q^Z z(_qj)AyPNF762j4KOs^#xfprpd_2@m|A@%C$wgPc`b6;a{fEpW7hU}?+Sjy$ z{t1TqD9EY5cf51`^hq%2pAe~=T#USPKIf-y`bR|8O)k3n)hB|V`XTekMOXhz2by-! zKfzER1v&Nij(4t~J_!bW6C!o1ucCLnb3W&%Zu&<=)=e(D`qd|*z75Dca?#aKp9X`z z36Z+h*U>xPxqkX281zqw)K4x(-Z@`=BJ__?KV;qHqN`thBKZ0KL*|i-u73J781zqw z)K4zPKRefd#@u#V+c&|##`-8Cr~cmY&iQz#oBk1zb(4#(e)Wlr^=-ttm`5(U`p>*P zL^0@}5UHD7jJ$LG^hq%2n-Hm+T#USPJ|60(e?(;6!(kGLH~qE-Q;5Ao%8WfH~k|b>n0an{pu6JPyLX2Z|A-@0`#1shj>0k#&=cu7352;HQ4bJaW<1Pk#o3{t1z~dwm-% zBkx>4eG&}%Cq(KW>#NA)o%8WfH~k|b>n0an{pu6JPyLX2fUH$448SC4Kb1{!xboJAx!JvOaq;7IC z^3L_sC&8e9LZp6jG4js&c&MBH5s`J1i>`k4iQwn^51B_Uy8163ZQ4Qq1Veokc27hV186B+BGTy2-`J zJJ)~7;&xg?{{&;Kk0NsF?;Y=)kB7SH9}!tMx#;Rwp9o&Q|B!j)qN|@i4F-J^B6X9C zk$0}2J_!c>6C!n!i;;KE$3xxpkBF?BTy*sh4rkr?sUI?rTy*tcy02*m{SyrJQIJ!A z?|A3>>62j4KOs{0SYJgR@0`#1shj>0k#&=cu7352;HQ4bJaW<1PoD;Z{t1z~$;HS! z*H51WgZ>GT`qfv_JKi}T4|UT&BC>9B(bca$5&YB-nMW?V`sveP&_5wkH@O&j=lbcB zV9-AyQos5tddEBGc27hU~VtjN0YQa@xKx#;SrPlG}Kgh<`wV&t9czj9(b zt+{etk-Eu6Hy;mm(?24zZgSDpuRam{)DM|QF1q@c_ciUHe}bVt3Ucc29q+84J_!c> z6C!nw^;P8Y&iS05y6GPgSvR@p>Q|o#e(HzJBNtu$^k*>WpAe~AeI32yo$IGhg7K9F zMd~LP<4EUx&QIO+kBF?BTy*uTPXs^pL*|i-u73J781zqw)K4x(-noAIBpCEhh}2Ck zM&3Ce4|UT&BC>9B(bca$5&YB-nMW?V`oA&Iw1fT$2BdCsG2+hkU$dH7(eE&&NZsUO z9O;~ohq~z>5m`66=;~LW2!85^%p(_F{nw5(?Vx{xp*{+7>hB%zT>o_k+G%ay1plIc zg1X7Yh&$(Ve(I)wL}cCMqN{)P_N*H(^+V>7i?04Pu{Z|(6C!n!i}BCS_1`eJo!0hE z@Gtr&sGD4L^YKvkSl>tlteaeP^&8p{ka^^ytAB0GVbDJzQa8C6d1w9fNigV} z5UE>z6}{t~^YKtW{UajlCKp}(>Jw4l24o(&=;~iL%BthO+bfIIO)kcf&h^tL!5Cgw zq<(TSj&#n)L*4X`h^(7jboHxG1V7(@$UJh<)&Il3rXBQ8Fw{puPW`>(o$IGhf z6C(AKi;;KE=ls-7|A@%C$wgPc`b6+kKV%-c=<5I3zNQ`YPcYO+K~DX>hB%zoX`2GoBk1zb(4#({u_^E-FT@VGLKwz_1`qmw1fT$hWaSTslRu; zbN#OJ zLwywF)ZaVaIiEfW27MDE^^=Q{ch2Yh)J^}0$hyfzSHJp1@b_Py>tG(a7brbJkBE3F{^oUHx~@%I`aVzWL(ZDNayhB%zTt9shj9uG`)IZi&k;gmdbAIZke?(;6W9oD7hV02 z$Kn|DPl(h_F2+AQ{q#vN=${a&n_P^%b3PvGrhi0a-Q=RHUwtC@sUI?rTy*t68FLs< z|N9x_)ZaVaxqf+{{`WJqj^6QO=U>$R{fz#mfAX{A=XHHttM~r+`Mb0DnkzFG<9O%% zhyNBm8|TFL`{d&BaXxY}j(5)Ayga?P_SOOMl8es2<+1esy0;F9mt1uIwU?y-d*S18 zfOyG8=l|}O^nX8mJPr^qx#;}M-jv=ig%3Z(OD;P9@^7d2s_@~5c*#ZQA3Qa^mxd2N z#7izZ|A($f?}x*OAL1n!o&Vgwr}u*J;fHw1Mdv^N;`Ck^KKu|bx#;|-KbhWFgbzQ& zOD;P9D_)o0SA`Eh#7izZ|FiE*?+M|<5Al+V&VRzm={+fY_#s|$QT`L-b#OxS|K}i+ A%>V!Z literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl new file mode 100644 index 000000000..5bbce2cfe --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin + +Cx sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds new file mode 100644 index 0000000000000000000000000000000000000000..afec93bc2aca5b3697843428bc0bea43a047004d GIT binary patch literal 156258 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds new file mode 100644 index 0000000000000000000000000000000000000000..614b8448ef6b5867b022af9d40e149dedf9a4a2e GIT binary patch literal 24414 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds new file mode 100644 index 0000000000000000000000000000000000000000..ff1993b9aed806635c2e5a8db9fe1479ba88a8dd GIT binary patch literal 24372 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/photodiode/sky130_fd_pr__photodiode.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/photodiode/sky130_fd_pr__photodiode.gds new file mode 100644 index 0000000000000000000000000000000000000000..90127dfe93f724124d8b154016ea55140a876a63 GIT binary patch literal 31608 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�-FfMpJ2_9-Zq6Iid3*bHelU;o1dsE^bl�-y34Rav#|EJng^fy#4%% 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds new file mode 100644 index 0000000000000000000000000000000000000000..c8267e53e896c6cd312cb3c72b3de587577bbed2 GIT binary patch literal 47088 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

1Lh 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 z z8(!rsFg{Ku2$P~PK*iFf&Lc<-6MyvGmazooq0fAbXe%v<90(DfA7n4_CwyY z|6$@?{^QBBDDU#a#Jl{~&wV2!^#LKrR^}R6h&bQv69`bIiJ{Tt6`PMnqL!R}DF!9c}&Y~Xj ztfPd9cfNHV^^j*BCrrHatuv{IJnKkd;+=1uOFiUS#|jhgeCs9ZAqE7u)uY7kuLl zKTN#X`o=51@s7VT@n-#>XS_t?Fh5MZ*tT!H<{R(%VdBNsH(%hJZ}3+p-mL%g%vaDn zh#w|i+-(2gopb$n@b~MTxlhdJhvwhEd&2L}E`ICu2g|?Yj_D89^T$%Y+5ROTpZ;L^ zm;Uhd2g_f|H~q_QpZ;L^mwjydgXJ&foBri*nf_q;hi;wzVEIe=rtckl&tHS(d-vY+ z*I?q!^VgA^r$1QUk&jG&u>7Tbv;8Z6X!?WYA3Z(&!Sa{#P2YWE{|C!=|JeV*#Lu(; zo>T3o=T`e2Cf+^2+CTM>XTQV5JKuh*hdlcoCf@meM{S;k^0?n!hlzLdui;g`NBNo` z8V8p0&GWBZz8|c7&6l?a6L039Joz5wabB2sv29X!YyQf_o98c{e2?-tKTN#XwlClFsFg=U<-ZZ1mjC4-@a6zlZmp>3iq*_@VWerM%sL>p$vQ_u;QhyjlO@S!Y7)PW&+OZvAO^k4@jY7eBQA zwUlq}zjtTkIh6OjI};|}<-g%ooLwS!M%706FyZ`c^dh#BB zW#Uc#U<@A1RLyZkr2%6};D@k9Arh)f-#qtP=O6Fyzj}Fpe_`U?`ajP) z|Jcrj)3^TbIXdxf{hw$3fABY_XZ@eQ#+&tjo;-*09xqJ1TmR?Dvtv7zfBEt+Cf?;= zp8P*p`JX5M4<_E^f1Ys$jXS(B@oxQ}XPg_`sqv3*{KLe%@sDTx9jx(}XZ#&ZycvIa z?sIhC^TNc7oA*CYKO5Vr{>Rti<0be=zZ;|MTP-ly`Vx;@$jgJj(mLF!65w%QMc5?Hr%J@yB)&@5UdV@o(@0 z(=-0@*LXAj@r<)*+~tLdch4U@RyqSOS%yZDZ zhZiPZZ0~>btg)R_(>MRJoy5EOm*-vUlxW@3d(dIx?fT{E>3i*>eCs6YA@9h|drZ9Zt<$K7eCse_;+=1uNIm3P?+Fv{eCt%|A(fj!o)k@c%vTjjALQqoo~ET4|&GXF!9be-l~T@<8_#L=euvz zL!SF5OuX~$w`bSEdUmz{o?!-~7Sy>_2}n@y55`{K4|mrW#Z54eSfdWb}qet`eEY5w*5;#H~q_gV)|j?#n!+4 z?DQ}H%=A|#ezx}y{rL0`pP7D`c(HBYzj@&JkNnv5!^DfNf5m;%zv9!=UzzxQy??ak z4%#=4k9&V%;>EUo<2~Pa%?}eVw!ZP6Z@lKOO#GR>Z@lMUbLaHK#EWhF#(Tc;TKi$* z#nw08^NrX1m5JZc`^I~|ahx9}UToVp-t&#u{4nui>l^R+#%un{#Bc3=<2~Ov&JPnW zw(T45`NnI0n0T@EjraT;mmIz_@zdMB+^L_99A5ozzooq0fBjEA{f@sf z@uvUr^fT1&_+jE*{~KQQKh*E|q5ij&xBIXEsi)uZS0>){Km9g8`u@2;i5J`UwLN~S zZSAi=i8u2f&$#w~u=d~cul*lPyxD)A^MuYDFHF44Up&`oY^Sat-}S@9yX(hu{|wgs z!*l-(Cf?jXJohQOZ+T(j-T1-NPsVnt|M2x6OuXwqJpFgD`Y%ua9ZbCGzdU&Y3ls117f=2ith~vSKL-5o)ge>120Uxdw$?~P8r*|fBK$ZY$x&V`Gx2CY4Gvsd4A%r@#gu7=Q#~MxADTn zyXQCF{3e9!S=;+=23L_OqLM+g(|eCsvpA>mzIw>B{vRgZ`PTQ;F9S4K$D8hlv;4_RV+r z=1crA@nY+nZ}H97_$w1{*8h3tduSfX4-+r8?VE4%%~$zh;>FfC-{qSx^H(O`tpD@O zx6wSFA0}RG+xMKo_w2zB6Yrise6OP(@_YvrCf@nJ7g7&-zC#KV?|k1YsfRq@L4}ET z{>cwaA9=pR3i(U<=K1rzmU_tZ9axxn*S_z?)I*-{(89z!-}h?jA)F%&ZKd12z+{CRkvo4$EFKQw<|$~W&{<(?k~ zKQn#L54N+$o973f=M?nZ!V44co?nLd2h;c5#1B0`E#>Y0dwx^Ta~pqU;?46L&vPOg z$N6F6-Sgw{YP?6|H9s^DSjyY|H{PpfyymY=ym@}+8Sl|J&JPnWw(T45`NnI0n0T@E zjrV-xHGgH|&H4q;c#p<$ewcW%ZQpp$H(v9@#EY$OyyqLQ`70A|){l6`do+&o!^Dei z`^I~|@tPkdUTl5iJ>R+=e`Vs$`rXNz{_1C_-}(C^VdCBT1yBDQtp3N>{{|Cp`X5g} zL;a2yCf@bG;eBfQ`W-*i|CaL2^QT<@8?64v*Z&3+Z~7lkKSTYF7bf2Izu{H?L;a2) z>VHdlyZ`#1diouIW#Uc$VK%;@k9M@DR1{*|5H!D3=-^ z4D~yHn0VL!hFAR$^*es3|1IV1{_B70>395Q)@5WD_dGgrKndzH9+fL%${F!H-K3Ma1p85M=;?4Y> z=Q#mAH}Jy5yY+vb=ajLX`={^u#dZ?!o?m#LlLjB3p64h28gHJTc%IYHa~m&AynBA* zS?3?yd0_h1|7|DnZvCHU{eSTD)3g51U*paCKhHWpTKDILiFfP&{_c-;O0;h2@Bf5} zck7ooedqL%ck_`w@|W_>{&)K5^pWrH|AhRdeA7Sm-svOH-~S2uOZld6y+b|ZS;q(y zFK+tQThv3Ib(Api&bQv99`dZ?go$^)^(OU@XB{a_yz{MhsfWCiAJ}8!oo}5)J>*+Q z3lr~r>on>i&pJ$)c;{OuQV)67fx^T)-{1XF4|&$1!o;8Ce``&U_U)E`f9QhBdHxUg z{X+G>*X}X#;<@+FQ~Zbj<@8_l!s&;J7dQRd_U?i&`2Y1C!#B>h!^Df5{w-fSedOI% zbI6dtlyCZJ7hm+kz2k5`Y{&lJ|DpD@A0}Sh^wr7#@w6KzUflGxYd`TtFP!a% ziFf;d_>THs@mp&QFP{Csb^llY4-+qLw$Ho#CDT9rhtm%eFK+tk9IEjSpIyhm4HGYJ z`X>%dA9>eS9|-wN`LrJB|1bZ3*3m;XPkdwj6z~0L<)2UQG4bN2f8f6Q-uSsS2Pr=EUu*n& z_Z|~3w*EzbXZi;(o_?5kannEb*_x;PX^nfu2VYg=_21uP;>As08|oon+hO9Jf3(J{ zqZigs@xF)Z{C#YXi5EB9cfaRHe{;Wvi5EA0`<);A>pFyq7dL&^OFiT{e_`V1^PR6; zcfR`|*Fn6>H`~_+A9=ZtF!3k(k1Y4^gICmfKT+rW^5302{B6a5Qs*GPEZ_0- z(RLkgxYld7chUc-bHDr?ctf54e_TJI|9AsWwDHEd4-Z%V)^@mWi5EBhTmDly zRS$W$eb*in?|kj^(0*$_OuX2(ub%dK+7A;ypRes42j6~U;>FGO)yWUf{)dTozWZg| zC(C`~es=$0;>FGO`R={+v$fwW{b(uQ^yMS{ANBj>f#ijyy!GX#d&Yj>DQrtzLamaKaRcXr5~nWB7Z60^v6C{o<{lZaP502Z!hJW{unQ+Uh=B^ z$+MtE*RMH5BuNSbXZi~s-t literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds new file mode 100644 index 0000000000000000000000000000000000000000..ce598ddf57e33ac347a6cca0cff245923ccf6417 GIT binary patch literal 44464 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds new file mode 100644 index 0000000000000000000000000000000000000000..536749acba61bda1b232be713290eeba6a6bdcae GIT binary patch literal 52336 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds new file mode 100644 index 0000000000000000000000000000000000000000..9316015a31f89d10102d566779435295608fd75f GIT binary patch literal 77040 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�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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil1.gds new file mode 100644 index 0000000000000000000000000000000000000000..3890733b54c74a951019bd5435429590c12140f5 GIT binary patch literal 6616 zcma)>3uu;Q6vxlLZJ!f2^YW4DROZamTHYchyv>m*xlD9|}~)AF{{`9J49zMK1=w@>)|y`1OyKj%D`^SsaV zj^Y%HjivT!u_kA!DJ7^i41@I`i^P zTz9&{{eowr^6{`!TJA7BJJx%4WvBz4X);<8S^Gm=`vp{h_J5wqbr%LGFa5=QJdf*) zX1_3iy!w3`xbA8#GkD`2<{w9dH2c+BpPpzG*>f z_pb{>V*It-ugAEf9tb_g-)Q!z`9u5YCy4&TztQae`P1=%AB+?HV*HF|kMfW82R|VE zV*MG-?)Q&%!~E|r%G*n@ewdAB7kcKOXnCpXLFiUxhlD;T_v#nrsUC!W@sW_w2jvlZ zUH^;nblopL5)$hl_Nev0yj1ld@@7?bNa%xdum3I=HGe?l%|jbPB7cH%uReDNbL*#x zz&5vu@+O5eyU?pg{-PcTJ@VIR_9#94B2EzT!@tq&{`@EEw_5#!@LO0E68?j7Z~Q2S z9}s?_H<~@l|B%C~2cdgvVMyqMa<6}sBTf+ULvJ*@fBcxM4(t8}V*mPMVMy#>TJD=a z=A)}s4?=&UC?xb+?$__HBs!PQ3|{zx`QXfuW_LsN5xUP&|*wXm+7@{X$=PTJ=A?t9ql^gd<%Owuu2FWD3@GlyY&5&j>wo(VqAHnL@Zxltl|CWOUbV%iCtCPC^FJLx z8NgbibuwH^vpd%JKRUPt-j8w49VR!$&2EhGpWY@*@7O)M;D)&wl$)rWK=q&58^l}B zAAG6C6y=gN?zXCSk3XyJVyzdW*&FzK()CZ*M_POp(M0K={M_^1x8|U{zF*VpsxR00 z&W_XUTPvA^ECjnHTs8`2{?}>t;)aea)?2u&dZ+isccHqavh>>}tjsK=Q?IerO z-Qw^5N^pG^^zJ9^CH)Fu{evDpWo&d#!mkS&gTxY)Cyigmhk0wJ?h4=`8IQA)1IYfI za@`H46oi!BMaD^YkIS!zI@ujO{UbUl?TnnGKRjD|*lF+_lza743NT;LGv~<;b+TM? zeWmV%YmcD~SMJg4JY&9X&hu74uRlENdho@sKH(cNz!!XCw?qtx1u;qgJpPF)WIPLt z^oQq?n>xN2V>}1tUVX_;=H3_db~03U<_cNId-v#EVa|ebj~??2z5eh#RQ9U9d-R8A zE%(Kb`sy1oz?ZEP#DG||JgMHj#V}rY%h7qc_Ht!$3 zSML8-Znt8$IX9wSP~Wu|yj3l}#&1>k%`p2Tw`-;eQ&XWP<##7X**{ZKaov>(x_e!j zfL$mxl||+hsYgg>mg)*Qv()VhDMd(h`xf(01vqOsrlewSH(zJ9-F)XWB^A-08M^lO z%y4;|l1j5{@M_H*VM;3WOTMZc(=(JXC6(?H82|N!ZWdBhh0(eGrKG}2vKf|4JE{?8 z>6y@0ue_Z!o9bs3&cw(r(Ck9zwXt4ySvg}Pn?cKNquI~5^649AA_Wqb$nCJAVB&qG!fa^S1HPV~R$Xj2c`rME<6L zzbgb9Ime48Gt^Mp1M)SB$5K|?c*)?A4QtB`-(9=Q30bkrDBd<++_OQ;N$Pg)E7>~F N)$OHqn@IZ^^dCxC@Pq&W literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil2.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil2.gds new file mode 100644 index 0000000000000000000000000000000000000000..909999b16eae34a04e450611f474c90aa7b8a66c GIT binary patch literal 18400 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil3.gds new file mode 100644 index 0000000000000000000000000000000000000000..0537acb061a37b8e54c9fc0981f8630b295a4a29 GIT binary patch literal 26784 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..46e89059d0e565b5b902e8af2f4ab0878e5099c4 GIT binary patch literal 7778 zcmb`MU8q$>6vyYBv(G-~nudiYrWHNdLy6sM`B6mpnOJ7v2Zc}vK`%t67tO-xp{NIw zsE7!%Ac>&pxreCdj3VeE5Gg2$o(e*u=q04}o0&oy{elZd*Z~@9h0N!1EZOvqtVgn(c$TXPmLz0o?buN|KQ~6 zho@%NuGuj;GquLKMZNyL8(&`cz}XKk-nHe^+t0kSZ;xBvPt2ZQ&g|LHxqLy_ZFTw8 zUANG!T-dXCS3B3e+xS+=?6Y7OZ9KcixmJDulb{!ecLu#^cCTMt_`kL57PAit#lNT?|Gar2eyF&`#`r6G;zlPbZZQ>q|3+KGpSApK@%ddD;>*6X@d=yz z@e1Fw7_o~J?fU!$Ti0vO4VIMbtuU?GMH{c~PtCu7?%Sa6MP>(sUNn2F9v|p>pO-|3 zU7Sl#{OCnLC-cUCQ}L6h!S;~9fEL(bWQFF}+r{WV_LuoD`)l~O{>A)UPW`pb?|y6Fzt;07`fsWq@`7DdewzGq{%Zf5 z#yP*|8rS*WR6o9t#`=r6u#0oWH#Yy~>iO#~S}mNl{ykliHDMQRyxM;?efE{D&psRb z$4cfKtUk>y+IXwJx6GcqWWK&AIrzx_-|V7|x9Ytg)8n6cAUf<~N}oRybc35qqQfrE zrDy%XUD)=vWKKReXRqgp3z8~}xJ1R7tw~GlqapITw z3!2W`#e^O|)F1vu>JGb@sz07%-_eWg8+I|Zf7CfT>R&{MT}Kwn+zleX|7m+FdaXSu~^@VW>4z7zXZM5do}1qvnTc0`k*iPbI@nv`gT2aj$dE@k@&?fru_39 ze$f{+zuqp+;lKY%(2M!npcl>Fx_=|w&#y?iaOzbC$bONMYFf& zpXaC(^dfcO=Z!RbQqT8xf4>y14$)JWp7r-Dv+_^e{_{POxXHhmil66*8@)*U*u_-* z^f`X~{V0-sz%JT&>-zD-`te`T*6r-XPJB8dmPm|8#2v2OGt>-O_Trq<7M z#Erh7#qI54B7XLlK4t$!zV~An&EA?no+Hob3tHWKyO^kd`k&7=`oG|LiyymKzaP%3 zKjLQpMB--u#8mt|N8IQOTHM|)rsB8!e=%{tMc=@z44_6YJ-kLdW@4 z&~)A|M*Vy}BD=YJ!}wpo1Z z+_g*dCyyLBcxZI|*ul|}!-r0Us<_fw`+ucot)2C{Ypk${#^2?>Zn-vlCsKEf#l>37 z?*i4kY}@$QT`bgE#sBa}+vg>=w~=~>Et-9HuS9+S;}B=Qp(OKQ7i}G_`rbc5m%ULE z9d>a{|5){|M(%j0+I^%X@8q$IHeU5#(+})CLC2~lIZ-q&d5f6+&?}K(GSR9Bzo+k^sy`K zw?6AN>oV)LoL+lA^x7@c{?GTCMdkl|uW^U5-?Qc|&A05@xP7M`0Co}1{>yCkcGhOw z{m|ZBo43|xv)=)V*sAA15gWe`(lgc*!=?GQjeFYlS>+rl^yB9U_o?nFceO>cchl}Y YyO{9GBC>C+|4T%^>KY>&SY(;|7szAk5&!@I literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..0694b18e8d53374255363f4208213a3ece1aceec GIT binary patch literal 7778 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 GZTBC$1sBW! literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..88d7d19a625f4bcf0d85478b7be1a7fdc8dbeee9 GIT binary patch literal 7778 zcmbuEO{`s28HU&S+vnVy+5jn#N(WAKpry7|+G>o@(rOw+Nn3&;ffEzjfdah&F{yQ+ z!lZ>L127Q>Iv~LTLk9*1jOf6GkT58f0TAOvNeCf^5h1+KTI=0E_wKz;!PA^Pz29E% z`hM2WUVEQVg>jgKU88aMUKr^gpHb)kd&bqHKRdVY8+(^$9$0QXvRpoLX8G`$(?4JC z-S>+_%b(o2cmF;6HV)kKgS{L3ZwX4guzb@cCF|I455Jr#D%3cXjK zrT6I~gz5|9a4b~Y$Kjf=`;JNwy56o&M?X6l!u+^md#%NH^fz|%_^=*7ljj|M*6SFB2Vhv!o}^YAwZI^Uo>%%3Le^r+)Z1sT=;y-umVFJ-LwP;{1HW z(XZ5(?55Vh*8E%g#fS1Iy}ACKq&HtpSeSnC*H-}TY4@^$9-+T%U><@G}yT^G}JF&Ne>ahYh2FisF1cGLQy_`HAh^*>X2=(n0S zq+jf2sekJ0{QLY5?q4~-`E|+f;)aI!#cr1Tv;W$EUw(b-gMP7_tNPzmzuVjUZ}n{I zYkq5sS5!~z=AO>{*rMm&h~6CCmh`6V?fKQw&u&h-*_#c~VK-OlsRjC)iW@!gM;79r zyqa{=vn@&&?dA$Sd80Rp8@*YIe{z#*^+{@P&i|^vWjAFXtRL-W@{d2W!ax0H%3jn@ zRX_AK$y@rVS;}AS#+Q=bjAstnP1y(ihYyl|^jt%9*v(aX>W1E=Zs^TY{b)zs(3{i^ zyIHCq?Wi02nyOp0n}zx@KZ%?9YZ5nhvlKt=h#S30+_B%xQv9?dZuB)3ceI-;;%D5^ zn~WQJvowC}8{|FzPeby?ZkF<=9eJZS$v^g+S<0Vwn(?_qc2o9t{kQ1j z^M&;0=y~~<-rV$jc%*&4WSnPDsV(={%<4cIe^d6h|1J9Ip`@?*ucV)vhsyf#zmwja z{4VKD*$4f{bClwx-ozXEuBi1x;zVas2lS@wMgPQ!-lPubP1%cjo{!MiR6WpB zkI3%xb*KJZpI=ORljjcXrtE|M8Gq^&&u5wR6W4#Ht`F*2=hU6`UsL@=yIH6|?eK@* zB<{F>WR~Km9d(Q68&h?QcC%1F+A(hEO~wtoSsK6CPV)yn^9M3-u$!g%!#+mc*xzcZ zZqaTQ>PI{3hTf!paevG#)sJ@6FP@J~)h*i1Lj7n*-O!uV4ZB&YUu>tkp{IV3x?wj< z^<$rA{<43Y)FJNQnWgzlJN%$G8HduW7uQ7y2W-TO~x|Datw*GO-2uEB2le3S3b9X<0L|IGWE@*C}D!T;o+ zNjH7GMd_m5Ea>q=-1s+%8@pMGA3x~uZ=%C)TE9(Y(fL;S-!Kj*Lv`awud%8xj-=dn z)9kjLf8_IA*tTnS*C&RFKNNVQ!#Kdrf>i{|2OB`v!t`_{GKv&_dyH~pv~x{2&&QGY=d+b{p; z8xlu+*PZFJ%us%QR_MzwzUx&y@m+YP-|?D?vz_1l?Xw!O@y>nxvuIo zhu!Se=lQ`thko&;hUl=H*5_5B-}h0)>!^eN9ZGztsb8mW&UdPtn2kO}PeUIlG&B?{i>idUJ zb)&gzy?(z~rJuI;q1ylEeQ50^)%s%CuG-vvh@RrSaY+27+_Jx{}@0%7zX literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..39214c44828f89b2706aa0481640ce3da04f6f27 GIT binary patch literal 11042 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 Lg%M3PvvK+l{{SX6 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..7a6d1a41aeee41a7fb4af360c4b92ae3a28fb835 GIT binary patch literal 11042 zcmbuFTc{mp6~|}a=InEAEAf&x4@FS4l=hsYZDO?{$w^v^)=HA96zfK5@?uS6tCd30 zK1jV#MKJ`dAW}qMs}@=m#RqR7J}G?=Q4z(UAk~*5i1`0~-~4B0UuNw#o)UgNYv%v0 zHEVrq&7L{CD2skEDE9UG#qC8;|MAnC`u`jH<-;F-bmzeK&+E@m)?|p zUcaaDk8bVuqA;y9m+6Tgz3I5kh4EMZ%O|qmmCrZCFLpEX-~UI}4gS>-9dYByq*6!{peuU*Zfu1kIaLyzW-d- zn}fTu-ju!5|KJTe_Y;c!2Mt#?^}Fn*j)!{UMqg8LqbL5vAbySyUdnotykR$G@AN|?&RO3?kTSoqx!Q?sXzPIr0&?wh4ruI*I>6OwvOrCn;Ty7r2NZn>iB&8Eq$6* z(wn`bjfZm(pU3~Il=%mvx_+^z*x>%PdO)@R!-D$w z{<5GxtV?~&X#L)ac>T+s-gD&)OWwm`R_Vj{JpzA z_;=r#?mKg)|8}SDf8Wy{_?BvPU&FO`Yoo|+>Ug_<=k)7aSzq({tY0^`y7j}qYOfwv z|9!c|OPZh9&BL*t_|cohjoysn=RD#@UsG`>yBWkkxF*Lv_-TuZJK4=3e$FFq^d@m* zH>3DDumAO|HwSOedQ4?BRzhG zW%gh5ne2aPmT~-}b6IbeugiK<_Ri}kPW%#oP5DiBGw{!O_(gBx7rPnxr%&-q{c6f@ zvYSi%v+wa=Q~MtO^lxIY|I52Ie=f@3zZ>?B=y%yo9q-KF`1jfG>StS&-()uf|C~qP zpf~9o>}J$IoX7k@U-MGdGk>b%Vf^e{^d|cjof++4&ZF+=P3n%_jOx#M)E#|I)jiqG zp#Gf4+(2(KH?W)0{3u?`b?ZIVqUx6HW>7!Qqi*O;>W1Bn>c@H14Smf^Sx^0{6 zICVpBQa9{oR6ow6Zs<+wme#Ep)sOS28~U2hWIgk%Iv&PP-O!uV4V@X)kNHXeGQZ8< z5yc|A8TIerQ&~5Bb3=64%}CFj*!rY$ulZqK@h1H)yD59;^%EyL;y2M@HzPf9q9cA2 z9dG4C~;@_lyv71r`F zf9d+kd%J$ro$EFi=D(%y{VnUw&EHh|in4d+k2<^VCVt!f6Zz*n{IY*c{3m_I$Ul9C zU;59)f4l!8|D1rL4^^~@=B%r6sNn%fm4J$;If{x#8KH<#%LU(9-Qcqr>l**oLMPyg1euleV!@0+)F z>$y(y&h?w*9lN=3!a{f%&JM)L0*vY@Swm<7l**o>@bMnmoH_2n_ zi;A*`dh&$6<{z`ZG;itFv(M47|7%K@>}H@R&*;d1P3e-|4D?(l{YU&YwGWfs4Em3K zLf+f|$UAm3%6~df^+!+rA$7-YE~`ItmipI}mVLn*i8poUpL5XRw9!2pYO&p z>-lRge|$dV`b~6PzZvQI{Dp3KTSIi%%}7tqHnwxFYW_Coa>Ly2-aqVfbnO3{(j~hY z=*csF$iKPy>70L4_RjrFp3sp$6CHLl(zDOevHwkU*v(~n<`jC9Jfw9i${xm#j`&UV z>AEULdh&;k{F&%eUMq%r?NdI#vwuxKx3hoEWuM>C5xPlg{a629Xt?=f z`Ip_)@lO5t>8#_sDy#$1VK*1*tNf?u4Cz)bWIaTO-L$^y3Vl~my{0Zxua)%L@Bdj%pZ>Mlsk`qvxqD)2HGPkwj;%ch z>e%>xO7(taytlmL=;_PUtEZOfhpjnO`=6ad%rku_X-ijg&#_adPZCh)6}_w#SJgd> KS6tD`!{UEa;dinC literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..9b159cc150a0aaec08beba49aa7557d2c0b91da6 GIT binary patch literal 11042 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..b04f2b648b1137cd6e11dca4a3996e869679e806 GIT binary patch literal 15202 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 R^@u{h?fVh`l+CPL{Rfeg&6WTF literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..273792844566bdc48c06baa10a7ffb833cfcc220 GIT binary patch literal 15586 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 NT6bgqS>4&7`X8VZawz}+ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..c5fc6667717b0ffdeef39ba6cfbd8845b838408e GIT binary patch literal 15586 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..0e73812f4523b9873cece82a6fce6119d39b6652 GIT binary patch literal 10574 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 Qk}~3I(4WyPm z%rWMgb6w6(RT`#I+C3Pi52u0t@focAzIRwX@`cCtzjxpA?0w5~4=?1wPlDd7 zE9reaOR2hUn2x3D`eC{u?YUv3@!p!!hdH>Gd& z?`-4ayY8iwO#963{EQ#J>2aGL|4mK)?;56^X@mS17g8F1rHrrd_*6xUj?ez6PXE2$ zKlxyMd~~kuzn-6?d4Bek`i$PLI!jZ)k7G`@%gPK9N$^&DH&-od4e6 zv^U@%ywIV13Eiyy_4=2;-5)l7uXFcc8DHP=!Lj!E%KEMMx4!YSFQJ>8_O~*A?~gs> z&-{+C|vnV))m^zV5!J+G$ccU}MUZ>+B``=jgMSKr|)WnM=*$CzhG zUC>R}r!RhY|Lr@@{vE~V8b#d6uUirq-HhV*Tpw1>KdvuP{Mm^TcYaq(;-Z^T{Oyazzqa_tdyBu}i^V@S_s0IoQ^jvqw->)DJ&a$yR{ZAl zr^RndU+Yh=>Ri_N2j@G~xU+5s|J zX#N&=7T@AOE%Bk7+xe*<{)Va>e&#o zJ-xRjd83h8&CGYt=Taq`r z8Rbtq^2Xm#d1u`W@~0hn<2T70-Hh_j?UXlu@`vP&Zbtc!|6cN*{IDf?qnlCwv?Fi) z4V8D+%^-i;F>d@O<3=~P8$Wf!Z&J71Z_TKFqnk_Kqu;b7Z*()tpLXPpzoGKZx*6n8 zJI0OQWc=u6G=AM%rMcoS-rb?%X5HK-K6NL)N!^KWM)jYm9r0)KH&ooLn?ZcW$-4>0 zZw{0{x+#6_^@}+8h;QOUHzPm$1U~i+6Cb*{ou9n%H&ovE=Vp-qMEf+piT3S=@@3r& z{G-1X-}t*7%9nLB@Dqo;iEolOx*6q99DKw#@u8dc-=wnW{gm#X!soA*<2}z`<^Idh zCzndzJnvG!O!7uI>-_uTbN{GwZR`2f>7Tsl*UWjTe>2Lj=lN=N{HjwP_onr`?fli_ z%lEHOmixb9&FP=&`@fpf*XGB4625%@R1<%`|Eg(!U;TRS|5xU(=l*=JK?Xy5;9D(mx0?>{|%>;wPM`Jny5oPAUOmu^a5TOY0?__)59_|VPBpZ5{@*&pyj zeCTH6=Q@s$>$-^#-HiO)2jb(t(8PysMt-mF&HHoT`mXE0%+FV@|3#fkw<_NKEeAhQ z{iU0m-Y;$O&wf|@rr$f5(!29_r2Bj~-ci=q_?Zs1FJ#?Z-5%Y!_ z#hayCNZ^<)$ z-d}3!_}clS-Q+vPZ&nA2-;^Hu$A^l);a`e>Y#xgJ!@m{3Ir?7lo6^_Dr~ZtS`Zv6+ z-_gwjv7d3`H>m@DQ+gPmapE_r1AbF_=+EzEki$F z)?dCq&^+b$TQ$iezu&4EoxijrU;GVK$E=&d`k@_l#&5C?&`s%U=Rdc*T>PvT`r$l6 zH>3R{zaLS&{C>n#KUp_}^~XGO-ZTFVRmZHG!TC=+#);qLyhk^sug#x!)Cqq>jXUdR zF#h};DSv*xGv&*=xs9LogWqHx@te{5p&jQNev|VE-Hg@`?WjBchN^qk&7l6Yqwe@k z>W*$k^}pKq^UtKbZWoi5tXp(5TEDc*&j<21)V`5*GuS^k&zU#Qf0KDbH>3HZ9rK3Y zWZrVWHKX~X9rK32q2?{?W-x!WW8Uza%p1BH&EM6==RTXdasO>nH*_r4HIiEImPmbIzjZglL#`rGP@?d(yuIh^q-FN1J<(D5hvwY~m z2OcZC;_L0Ty5(B*I(_9@^g4eo>UHJ0!p~KgR6U-nPPZKVKGdAF4g|&lO@jVqb=zN-PAbN`X|3FzDnOUV7w3?x*7RL|1G}p&syR`HzWW2 zbH%sV*%BYRxyk?8?sF}*=lc=EPq*an&7ZulD0=?neTDmFeRpfIt2%n(@bOP*1HVx} zSJRvRlC0iNe)9B*JC3dNroZVoW9#mD&Di)ZTKz6?wyXNc;Zv{EuXmN(`Ny3-w~4=b l&)v}9OovaT>y^#vBPUOtU_fg#`oDVQZl=G-sd^r#{{bf|95Mg^ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..c38358f8837ec11b2fa9442e709050e466cced3b GIT binary patch literal 10958 zcmb`NOQ>B}9me;0pL1WdC05dA;6SBFj7e;h_|8oeCHTUd6s4j^X_JBWaY?HXaUj}B zqtuF8X+PROJicUIdDFtb9P{o0Y3Zg}cB1Nbazu#K>+mCb4{@+$}%jMVm?e(qy zWADB8UMHs*7yV*T?CbT5cNabV$4{^I{|EZxdp>>f(3=m=&)+`ZzA&F(I6uGZ{JDGQ z2M>Mr*!+|4KX~JZ4{aa0>3s*c58qT2dj_L-Zr*?Ny-)t|@>@Cm-ocfNR{zLkXZZ7SAxjqc; z%lGo?k8AcmFTZqCYsk*)$Lovk9j^P{a}8e7T0jT!KgHqxZN%rkM>m(=zg|D6bD{pUZb&!nFV{!aU$2i#)~DQ` za{kpLdHyxUAP!_+baS`)buFg)m&I?cpXK`2ia)s~$DLkVlep++6rcH{_|5fwS^U{+ zbKI31Y7!USjN&tY6u+fK$n)Lz$17PMmR?_)fA*z#e&4sI?^{!P=k>e($GE=Usrq=?-_N}bc#D{K1{=wrKdq8XTryBgV&NI4spgaEPhU^>t zvO)QhZU+AGgV{IHwM8C@@+I92{F8rY-}HM8%9nIA@DHw6td~^p6E!D4(%;fe9q;Tv z<3>7v_|38UpXMzoJ@gM%H~xys8~@PUCI9}D*>9$MT7FY{XZ+C{bKRp~)ue88Gpe6) z)Q#Vy{xomNsD8##H~xyMJLzUnKjWwyznRt?>1I^_>_fTk*^4!)8{LfRXB>6oH>p3( zTQaJjany~!qUuh%8Pv}>>c($UH@X?sKY3Tqd-9i>pk3x|41O^)rsT@tf3*ZbtR5-j?%TTdzsp=w_5Z&E5Q*cl;)O!*53YV;ptkH>n%ljOu3`eaBx>eNVa> z^nd+n$NN)7`I2r1e%^D)oA)1+ zywS}lf8KNO@&04tLpSX&-%s`aR`0)-yg#;%cfLP*e|DSV{59YI=JdXN|C`cxKL1NU z&k1}yKTLe+X5?p`#mD+<;zKthKhJM`JikqR=w{^SJqaK0PbNNe)Ba`s=N?(upS1eF zWdGDUzGQ#bI=*E8**ebt+wrHmZS?u6j_dPN@9!_`zSbT#t5&-*&Fo`6VxF{K$%oE7mGiqCUv8mQT_Cnxb(fE;wIe;;?rk* z^uMBfNjC#OdEz7git;7hjQo0zq|d#cXz)++qnqu|hg;{5ag$3LFTcs>X6gAN-xBiWfWM9SKXaCqd(%pZa z^Tgr#Z!!ERZyypnr^` zZ}?66hHggvOP|jue)@dIRNSPSL43whH-3}4(aos-D-oZ%iEmOj^P0QW&vk>}|Q{6w`KEw0%+zVq(e&)qTq%suDkci(l##hlguI_p$B zq$@w`So^RmKkM*fG;6tURA1}QeU|L2^Lt~t?;mgITtBFDq)nAM{jE-rbW{4y^IrO= zugSjIbv5y!n~|UWY1((HUnY5=o8EVJ)wi%OZq>&;-$gk4PU5VMfYhBfNGZ`C+aX2asYD#tRz literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..3ce81e362913e38bf72f4405617d0bfde0a3a7a0 GIT binary patch literal 15612 zcmcJWU#O*38OFb}|DAo#*=Mv;%bbdCyb!4o4HHBg9W!%O7{?4NPlXO<=7^)B7nKDT z-b5i0B|%2ezcE5845YeILcHk0uC&Xnz{-d$=&&O4gsl;QZIy$_y$4JTazx^8z-*B+m zJx*GmoJi}VS<_552hAnTJ_g>tJ8D_re$9D zHIrR~=H%vV=B)XduHykMhg&-Qb*q~Xlo?#+AN{Urb{$s3pXu;LO*guExZgj1UVR-= z-}iL*QqzQP9_jaQJR|S@S^)A_{;Fw0H}7BYU$!v*Q*^DDtM5(Fcm(l%D#>v@^>fPMH`lK#e$%Jjvh_

;El& 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..a8caafca83bbacb65133f851c1b3626f6adb9cfb GIT binary patch literal 22076 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..bf1123df94cb263cb27f01645ef0367ab7236206 GIT binary patch literal 22204 zcmc(nZK$nfTF0Ng_F8MNwa-5L?DMjZ922Z2gv_xc8lJukM?Dr!zRmHNVUwE%6=6(8 zvoeOFf=CSd5JVcN3{rLwnQ=x?iJ4v?GW;+wIF<9knr}0d2uZ~h(*Jke_y1mN?Y*CC z+dfEVIQ-`PpZkBmUHA3e_w%gf>c-umTkbAd8gxI^E$M&!Sz7r2R}RLHeg287u0FYS z|Gis}Ji4{@=>1y{-GARNZ=JmAS59sH;w>kyx$7q$IeGHtlaE|=s_Tv|k3MzXlh^*t z-~QSAKY8Z0AAkN&?mpLDGD>P6|6gh!u65n`;Gny{8y_EZcXZ>6mby_lzLkj;NcjUzQmma?Nz6ZA+f9$@khaY z+@*w7rcVBC#?7hzE#1`ho!K_$KYDfXH@;c?N6o8q|KWcxe)Gta#cxVa+u!&~@tcQl zDt=RX>OWM+Z*EMB-;|#E*X#Hj>$um=J;uLQ$8R2dvb1kX?`?k|?^Nw9%VVzUZi{Y8 zPyG{l@tf02i{F%<`d4l${>FEUf5p5h_m8K=-}qedkIiZBAHG@q=4h+8TRRd_)bTgITl@nv8UN}hO59epyAVG}+|bP|ev~6__)Ov!^;Tx_qa1O=->80v zZtl^4;)cKRx#A~&)FZuj{QM&gEUX7QsOal>yCzo@q|iy!5P8~#T1J9IONALWP}{>JBupZL}5>G+8o zev`Q2GqdEJ{!cmfJ^Uv79=e(Bf0Se2!*8+|jJ@ULA~{O0C8#cxXQ z^-q3K{eD)t|06TvLpOE3*FX4+((mQJoN@K5TFcVStpC%0Exy(FXT*nYX8!TH;#>K- z8S$Z;nSc0uW!$6RpOJB+o7=`;&YzCoZ zXXN?$U8sLehhF)+gO|@pz366E|Ju`e{riajLjU#={{{a(;=kbENBkH37aD*3#E11` z5|{b)_|4(<#b-)S{ezRm-}p}P56qMOe%?xwH@vNEd_(_6HX$Q%47c@y%H+CzFO8V&$=60$3d;z(9LB1QjT?t z&t%=Ao6^(vS-1F2)^F5XnXO;Sv2O7*n--z4tnru5$U zQ;xXfH;I4LTbae5a>N~fqv9UAnZ%!R#2vp$+|kV}{*)u`_!|}X(9I-Av+7IpU7rB<|>@^xpVWj=1ADiGS2vnZ=)S z#2tU5;vTx0#Gi7+9luH3(akLWlq2r=8x{A^%_RPmBkuT3;*M@+@uwVd$8QqvphjJUIi@#BM8@id~FXcG5(0=3j;^+Kd zulKgkI>X2MYm_f^Q`-^WH_dx(g^&AJqkN&8iJyHAANyaUe4(3(pYd_-V*DoO zE_5?He=$ycjNinEZf1VQiI4G{_|VPF&p7cheiI+MnfVzf=SIfg_)Zx==f`@zH-3y0 zALDP7FLX0`eq)^Y7=NRDp__@HapGhAjq-(VCVs}pb06b3dG13uv*$m?iI4G{_|VPF z&p7cheiI+MnfVzfKE`k2LpL)&?!SLij(rQi$-aedX8RZA*f;T;?3+<pa|61WogXMSJyraT-zk3H|JCbh`<$C--{jnc&&h-jJ?tA!6 z?tA#m?EXhN?i=_U-za|WU-f$0K6!`VB=7K1T>> z`rmVuFLX2Uuc)82J5m1|u;72#&pC>AIbWHyALpyetbNMSE`F2t(ao&=xDTj(?hmvNX&>Fp+NT`t z;xlO%-OSqO980^LZ%x{b^KE6;KILc^ze&63X4XFEaD1H4O?>F)UVi$G-=zO>zOT&s z&pI97Bd_{kZs_|K=%)1E^~e1SANN-iAG&G(e)5a^1owUJA71?T_c zT1WpZ|Ftvvdl#mz&yR11Uo9_wzv5BltLj~<)a7}<{wpSZ|D}F^f_2!=4Vn|yDd(Qh z&BgoQf}i{zOv?SC@s)Ca7?_Li?-u;zAwKf6QNGa4#7{r*(eFn2LN^mXd4P}nXp}E> zGx4*I@v*)et|v9raxMI({Ij*58cfC%oFW1eq|5xe1 zdE|?w|EBcb_VFLRx%eCZqxg@SH|PFi&lkVB`RU>}rKjzar>sA7I4*uudg>p3srb#& z-NkQ8@Ab#|c3Ad5@}Kt*;p`A<3W9$%yK zK6Eq5f69^f_#2h?p_@tmQ;xjHZ<6=uW|sd^PWg|Y{D@r+)T%{3db4Z%R-7 z#2J61;)tJk2G8bx;*8%Uj`&RJz3r3d>>K32$-aSZX8Q;01Rv|i#D{KX{%A-05AC!6 zK=vJUGuwZn9r z=P%}2b(a0QN7;Vf3CAn;WOEX&`s&7pK}L(lYI!knVml<$3BI>@qF>KAJyw=`|MNr z8$T>Q_9Oh#Q$PC@ev^F&pD8`{vrpkS*@y6(+4+NV>{Iv~b?yk=OwJ!X=h07|{~Fbw z(9LB3q#W~v-(()p&20as9C5;L5{Ia_GCMy|j&*|HWF17kmC}3XpK`2I{Eb?Vp_|G1 ziE`u#ev>>vH?#8_@A-&3@Bd8Vj&5f0ryTQ)-z1JvZ>99!@l%fZ#^0!ThHfV7pK{DM z{zkeX6m38MQ;xjHZxTmzGs}OAJ8zK6e2@x)I&gURz3 z*U3Bljmo>w%{}suIJ16C>S6tu(tG<)o^x&_|4q(e=w^0)q@Vcczljgs%>2=g&Uv)Y z`4MuCLpQVYW3(e5?c;~|(9O)xJkd|)uTk}cZYJkX%FzyflXZY@O7ETjmAA{j%lm8g z-=OLW-P~jU<=n}L>B%{0gZD-OSFfd``r==kudR)e*Y6+xqwC zmw&G_^F7Ml-%LLM;7)skMGG+51;Q+AB@jsrJK@Ye0}wA`+i1we>PXYw%_vkaV7J>=gOw!-uate zS<3NUN6JI`iEeuQb$s{CfBt;ncjeRE$M2t1@_PX2rmoMozu>3u_y?EGh>t(!Hvcco zfBtNr`{8!c@z?9~?O!+V=XXAq-qK&)!^}WK6KOmwX**7`!V{p#nFymTf92{T(k36M7uk6ws=*ygz=fP*WGk$T@4pf z+xRwWyW_Sy&)#rjnVVXhe!C&>8^6#w{#C{1ue!;J@lRiOZa;qF@^^ds$8*21+B-LE mf1udi(5-7UcV2(TxwCYrcSIklMt%|IkS2U*jVr2o*!?dV5UWf8 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..5e100d47e8759ef9da6ab249a0849a4294dc0793 GIT binary patch literal 22460 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..9b8a81ab93d55675feb1c9abec5f205f51ba203b GIT binary patch literal 11218 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..142407f69f2d50990ad9bd43de159782dbe6d87a GIT binary patch literal 11218 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..921d9a2ab3375c3784ee2c1a5fa57b6aab765b04 GIT binary patch literal 14706 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..f35f99dd84f77057920601d71b29590c3966705c GIT binary patch literal 14706 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 Zr?i(-o8F|WwjH~+zv*pdY)4|h_z$SO!D#>h literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..836a8db7ad671f02f9685295afaf107d96d30069 GIT binary patch literal 14706 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..720d0b722aecf3e8362a9bcf4fb792cd5bd3811f GIT binary patch literal 20210 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..055bf2fd7048f657d8c895498b30646bfe17569b GIT binary patch literal 20210 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 Cw%zvt literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..f1d88dd846f0c876efcf74239290c6bd09efa8e4 GIT binary patch literal 15038 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 XIrXMrPO7)P`*vOO&N6rN;#~26lq}NY literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..c88c13402239c3869ac6e6cea6895c3d0915dcc7 GIT binary patch literal 20492 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..ad4c754ce3ee6250a1d101929438b8e91a57819b GIT binary patch literal 21004 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..be3552b73175855f12fd073fa3185a79b998ea14 GIT binary patch literal 21068 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..dd06de89c7ef66e310d8f94c31eecad73e9975ff GIT binary patch literal 27724 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..a146eb9544a11136ec4920fb79039124a78feba3 GIT binary patch literal 28236 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 QHynT6_td$+EG~Bc2WaXHYXATM literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..93452aac27d0b693267fa190864508cf780dad8a GIT binary patch literal 28300 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 tqVgW$U;1_(;>WwOdhw0-+pbtbJonp9G_i#I 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..3865c6620eb35774210b24c405fddbe4f7a7b4ee GIT binary patch literal 4276 zcmbuC+iM+F6vo%goEf9UHtO*b%^x5V=}A&)i&k@Mi>M7vQi=r`D@|TZo6y!mD~jNg z2womUs}%(wL_|~&^ic$TYN7a6@Ik@LgLp$k1TlW!-uvs!oMgtHc*5|VtUbTI)?Sx$ z=2&L2B{merw%a27@fB6xkH*>YM^BB6b@Ii-`O2|8Kem`3U0gVkcScTb&zDY~$PexA zj2`H$Y~Ol+XJzCLvv!i+J@L%8`@VSl*B#TJY0My_I{nneEk6S`9jkdu^;SGtk=e$Jm9(H&qB%3E?t)o{mD4d?=F5R=fK4uRPzw}&*v}j z%o920PfFh9FK83b`jKPbNZlO5E)^f<1O6N5qY_{A24Z;`7rqCj={Gnp>{8gv^Vi${ zp?=-@Z>S%hC-5B|zT=qZ9_McjufCJ2@1$M*SK&7>ziW8GK9>6iOToBVHJ{wn^- zGk-mNepGnI&G}1yD%8yl?9#6JsqoP+p5uAB50xD4(k}jqO8wFHe5GF%+WNr1m*T(j z{Cod;MmvYaCvgoF>iQaXDb{QGGC0I@-)9e|uiac*sj(@5#S7DdMW- zBb<|Q<9WMK#O>_T|KJ%nc`5ypmo~+}o_}#t#UDPuP`}2{uWEgJ`1}f=&kt4l>-LbB zy@fI^gI%il*5jkEJ;&TI&s29V*riQ;@|@?=_X{OQyR?b7FFjYTFFD$!O?>>6=Q$sY zUvok``LJH@uL+kwJ-@N9GzUS|CsM4}@|q*(A3T*D?b0S*TzadIgGx^Og!Nkgngf?V z_*b9P&V9mqE&qT0yZXVe;*ek3=|8O3`e*KWt>IyFykB>GzkhxncfX+ST=N@l@C;wC e`seEC1>|s_ZNe|0{gZR^v-}z5t9S*pW&Z+#xb58l literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..26ba4259a80db99d1e0ae07b5b858686bea177a1 GIT binary patch literal 4808 zcmb`LO=w(I6vxl|oQcLZg=r;P=uSjZnh&EbMM;{pB~&Y>DFur>70t$~v6ey$f-6A^ zx^fXeXu*ZLDBV;jxDvsYZUh$*7u_g`_(dtDAjb2*_x|U;_h#NrCpcaFC+EK3J^y>| znUi!Rmsk?n8O3r)BK?O~RCzxc=Wo1xZenV@SbnisIb9T|my1`IUpiBaPn_LboH~1^ zc>d7%?%*bN_(P<< zEbY6i)?6LdnxChiXvXdz&3HfVe&#A2x~hAAtsOS!HGf5YX`HI-<@#3m z^swd9zrBJ(oEqZgH_Juudj*F$HN?YbdeZu*W|{R*)p*c9IQXZ6Gv{&|;^7k<{8Pc3 zb2$z1$&>my(D9Y%XQHcL>d%N%w>A5ZezsivUP+ZRacY2v&-jM*Pfb3y{;3)d)(;%& zM+JxaQA0fL4;=cB3J!5;tff-}CHhIrHu9PXbA-qh7; zU!L>H-CzCw``zDm{YdEVSpEFVopgSg z`cchX(>Rs$t)D;KA2{?6)yz@MkK6VhLp+`= z^@D$K1I*t_{^(CP_tXdGC;VV;nmDyO|0+Cuo4NaYNtH8kYJlIw{Hf#zkGVI%{H*Xe zFXtwebCX(|pFKS07S2oEVE$Ej^bhi)|Eb7}I5m_X&v9;2H<+JqRz8243a{)ZudN^L zd#e7_+kgE0U-Wa4bCPqBTAPo0{^0zz_2K^CYW7L3%?n;zpXr%3PSy2he|YWz%XhWL zYdpx;^UGD6zpH`#$$9HL9q|g^h*LxU&2#D>Jp3E2@ge{H^24`@Qv?24XXb^Pd)2y9 z^&I8;JzMUt_$_~K)RFrjj`O?qMqa+ReEt3r2k+J!`Q%;8XIH$Mx@(+TtAE9Rblq~v zKVHEhP7U$0+j8+yuiy};*7(`-?^oPax6fSPp$`zF>ihEft32xGII7`LKkQ@I8+qIp zxa>i%;LJTb4dqAwfH(K&6ujvxry-tPxnIE}P7U$ocnl|Gu0t-yrPo l`3`1u6|WEM|BLbWW9xOTWqPO@*h4*2_FCe literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..2724636bc6549e9393cc12a7e2fe42b90a81e3f9 GIT binary patch literal 6516 zcmbW5U5Hgx7>2*S&pF%qIWtZ%7L$r~WrWfE6eUs3_)Anujv@$gFdQM8bWjr%0`Dq< z>ZS`zFz6zJqKksM3xcA+AcHQ1f^G^T`lE{wqUn9tTJPFtpW|L*b3~r;+xyw;U2CsB z-}YExxixG3#U4hQ>X9iES^5q zIlOCf`rypcqOh&a)>M zI>(PKp0VZ)W~;txK9aiXfX{l?iqYK0YzuQ_uOiSn@Y61S8|vb@N~)c1u4BD(ot<%? zyZ!v~pUsB8u%U@!$G*9T_h3$(S4e;>lnL@hv%wdzB1s}2thj>9%l}^C3eN96uy6a$ zRb1gWvypdgV4~PPw?Fvd4)_^_Jz!s9r0r&{wI!F2W4EF%;&}fGXb-)Ean|GZ&XgQ| z0DA~^5yzcB==Y!>f7}MvVh`F+HtzP~EbjPi@Mc|(+Vit5{(P7FO2~bs{`y(dpPyqr zczx2A>(5u7<^_L#^FoITB*Z8|6J=VpPpPx4y!1xX95pfVc>mus4<2QGEulZ+5daR2n-+u94 z_F74Ltcxk1Ig8(YesK+Itc$28^V4H~kskAlDW5s%F~3NUbur~LXX|;NUo574ei8L# zetOI=(qn!xqy zT*1#j^1j$O?0pgSQ<PmlQ{;W0mb$Ar(E^q4;qo~w)3@1N*+Ki`D+!m!CfKN5W(Nn)i>2&z$s_KN7yHi;3}h z9{V2s$gAGZ#A^TR8=rljzNq&Gv8Vr6e9n^|=P&BLL0rjaZu*hP&FeD1V>m|vvFx|s5r zKlc62ejc&!U-tV5$7`QI=A_U3k?>qyO!&-6kNG3vxw=^OpX=^FIMaPv-<2G>)&DHw zU;X*j|1P2L;s4mpv68MYqb}ljt=~9{t517B@*93UZ!d=NMdYE+T#k!rKaLx6 zL@)R_UYkF|Jn838b`iN;01SSQk^i zedE3E`%8~?G3DpyywB$Y=lSOZKI`*U#O*z*K&&Isa-N z%FUX)jz8}5xBc@q>%Kw0zwbNviSzut?!TAh_m1uNY!u%hAJ{g(e;>aD_IHsFThsmn D&(gg? literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..f8929711976016b0624e8d08a96fbc921bb89520 GIT binary patch literal 5720 zcmbuDOK4qH6o%J%-WyG8gj9)k)PeYjnxqk1d?n4Jw7xJ&u?TYUl}U?+S_&2g2O^k( z6A`Vg4=5rCI&$Dd2M!$BiBKUTr~^Atd?7+bG5-JBd)>27a_`PfyrukMo&D{#_S$Q& z^N>#$6r$Wdn_%VKJv`y?vd8w)2S=91$L<+f8ofniFe~nyeCgJ^KY#DHz0)7x{Lblz7G!4;@lbBoL*5iAx21AY z%I&EP$nZdhuwN8Om!Y2o`hmBbE=zv7i197u2R;7-xNk)o^OfcgfQQ`_*F%0<`C-Qw zs~9_sz+MgXGZD3$4tM9%vyRL51`1B?rgeTMjKBC4dv^~0zp6C73;tm@#q}`$8lOJu zxa?%5>3v{fH|@y#^=s~TiDYw#-}FbY+!NDX9sFDVE;z3IFi>y>?WUgZcl$ppLA>|sjz3sPuOepti<;$RrU|s zP3t|U#utA&zI;1SaB4S=@Qt&MYu+0uIJKKb`1F+HGSnc~p$bmzrV&2h@3{Q;K*6cq zG{TpUIiHPff&Pq*pxxBhr{CXN{_?*aSG*f2IJKKb`0N$O<#z-MPVJ@e$+7-T$w;|ug}V3ju+F9kbm@kF&&HZ>0$5R6!DN}T&joTeA}=0 z-{w4z>s{k7u0@>S^x5AOajV^Q1D^5gJAx_vl4l&Mk@!3LZ*!iH#jo!gh&vx}>rh49 zYB!C<&vA^OTwCE+?WU3VJNak)As>rBL7g%G`tD?kxYceNiJ#*bx4vVU!oS*0Bk_0g z&-g<=8vo|+KRAEU`_IF*^L?Yw4_>=8Pf*4uu$!)luf`|eIWGIBQe7YHrZGNy*>T1D zm6D^~G{zUVJFbDfVf<8bw428G67Q|#`Yx@M9POqt9`6S0>WduhrZGN!-tpo2B1gMv zjL&a!eAr*e(QX>!3p^X)y7p&NawLgK^{^*r{wLf`{`PcdfXY&}R^$*@(@9Ljx=Kpm( zV$yXWRtL84?R|9n+LgDu>E-FU;{HlRJeCXfFQ&xS&;! literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..d36481549040af4b2f232e921a4684570d43d588 GIT binary patch literal 7344 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 VpL>p-J$Hsb(n+h>Hrv4<{2yo{pcw!F literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..975fec49b3877da7866de38f9c82312f848953c3 GIT binary patch literal 7800 zcmbuEO{i5>6vy{H=iGBY-pdqTg&!lESXn(kDy0wK^W%wHNzW%m5tpKDkd&DSN`X-X zIcSuiWmpMC4H`8Ff(8w&K~5S3Mvx71U=&42M$zm4Uu&;>_BrpKt=_K0|MlPJclO$Q zuf6s;_qyCAE_F*9iJNi_{Ntxl`g>)PKmYWB6|2U3yPoLn+1u;w-PL<$*OU8t<16;B z>FwUXulLy0`0Wpl?^(U_-tj#vZgXxdZQe8a+8x_Yeem1bji287&RY-9xFyX<5BZh$ zkhPu5uS(oOm(NSwe7Aglim+dDE;$7KBG6ObH$CLC1gSd5jW4_x}~_$$AO-APJGj)^?Y(zxpX>EaN?Ur z_|AIey4^s*iElcHAJh0di!e{8G0v5RChNe%H%0s0@q0dbT)FgMq2%bB#`xyv%H`h{ zN{+s1h2I#?f9Da5dpqL&Jm8PEG2qch<5Y=Ux;wvYk6LbDq% z1Mp4J9%ev^cc&5Q2Ioe;EOho+uIB8lDca}qmO)q0|24W}(f^Iyv059p$~fizen)G3 zen-1=x}!%>L%6F)W+cu_Uf;T?*S9XluWu~Z`^!9>@$+y-#~X_$JFfT7j$h*bnclzi zzFtpt7wYfd@Ym;<7mk;DIoBt@>h;vv^){c43BA5CQN%xJeK?Qld!_Z?5bogoL$o7* zS~~*$1##0iE$2^(Z%!)L{5eo?;+sbJY_sm%%vTW6zmWU%P0JOa)PHhJd5(dVNEDp- zrV+k*LAm@ypy0$ejqncRX1|Rifr1m?G{Ps(Y0T;3KrwIPn?~j@J)>Oqa-iVEH;wRJ zUqMH(-W-Q0;uhaD5`X6bHL2!HI7g;X4O(+}-N~#kj>cjf}s& zK)Lp3fr1m?bP#X#6Z( zEA&m_hxNV0a~;WXT}{c+H;wV!N94G#Ov%wVjq%(^M2>aIlpK9i;|Hy8Sbv9U=lOx>h}!kF`ccjQNd4$Z{kQyGhjILX zeAroN#<_)WiuSPo^`-OUgyu#Ib0X&m75j$k-PiK|De*(p&k{dG{V(xD)c+Dc#Q9a? z`J~HvOOc;_#r%nH8kxWJPvx?A0|h6(X@qZXQ;ze%{zbuwZyMo;I6q3`AL9Hd@k5*+ zCBB1w%yIJ#rmq;c_@5GOylC)aia+P>Kfiw) zU!xUokMbtyHTe$b1$=x!PS8Jn#_!u} z=U=Wv+`^ew_*ndd`e*#&n?~Z7Z+;MW_bVL-m2uNIjm^JYhq#3^t?;q<2ldbR#W(fw z`{x(b&*J&DbrE}|{C=tRHK%QwGQzFL3jllSeleCx3C)%r)Dyl=1NJ8P7$ z)*t%heS64HhVKuo75q=0L%gEih-ZrST3*%-TzKA+lW(xS#&}sb@Zot!K71aC@v?5< z!}ErGcpk_2?l~Rn$k{^4(>IOrvhL_VJTJ(F=V^?Wbpt=Af7V;Z0gdsJH{ip1PcA$U zWBmW^U-l>ZpOZh_zlg)P*XECLmPeL1^vV17THf-`^2qXrK6&3>%lGq+zocLs{k&PG zyl=1NE$=K3Y~AUzf8SoqTi)0@+Pcvv@7rtn{<>?P6weW;<>Y;PEid(rat{avJi??3PkKM%hk?OeZOW|}_&X%%ciGxr}!U?j@` literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..c7b17d400c69908ac84f6d531c28705b2b273fc8 GIT binary patch literal 9464 zcmbuFU5Hgx6vy{HU-x4sQy2?JAHsSNu^K-rC8?QFN7PapM~b2@X4*qjjV6LZ5m*oT z5JX8?hJ{pA5EVf|o4@O{MP)S5a(X{@1?f>29+W zI%}PKuO>5*iOr%)WX4QI{^6%mc)cRZo_OTo@|8o)Jr6af_BEUP_B0>cvwMGYX!(KF z&B+7%n>)vbZoYeHYW1o+hNhO^WXwRE-Zt{wEnB{P=eITMKfCdb*Y2G#i_(CHtXB_7 z&6w&HhnZ50|9Qte{J=g$6w&GO# z;9#eQc*I#*tns(>g2rE=E-sHBe!#(hONFy`YJkT&!D0O^70%kJ-FSEY_3MP2Bm5Gt z@$bm18uUK~^c4~0_r{J=g?|*?$raOzmaeZ*`*;3)Gof_b=PHlk{1u4hHkE|d4=4s3c&rJ}-4mGRCKaJ)Gqk*+hQ?<=pIOa@mQT3TN%q8F<7Eo{G4^Q)h}F9O9;eL;Tbbk8{Ghaegh8xUHQU zh(FpZdoB4FFZ7DMft?!4pZKhD$ziYHV5f%ohIA0DyHE0+igm+I4Xq#Zux{`zm33P? zHL(8rUCPz}&Z%(LP7UzYlgicZ%&BnJPMv|ry1`SiZt&F5`Vl8M#7_kWJ2l83)N^ZG z>lNo#7dtg{ezkeZ)jszM4t8o+p8XGX?`1i!5wGbFvKFyZW!%=E`P%=aes=GFuD@%2 zb=SvzAobkdA5`=OTi=|r-go1XN8pfORPZ)GorZYa$KY^(Q^DK&+i8eL9RY{>LIrQ@ zi_;K~JOGFMpn|vg;WWe}55XZnso-sXIt}rt&El_uW9=?^Y?b)4-3D;E6yeoJ5|Q>{Ai*7pHTnROVF51y3s@bFYva{vhPx*?pZsvSpPbB`0t_r6?p71>V6OXyMu@S9{P8IM;?Rk z;rXS5NBliJKNWbqQ$zm7a(_~7-in&GxZTyq@`X^n%{`9}(HTh6qQ{}JD`swO#MLzj4D`XEJ^qM>+IU#nc zj0gGnALXg!sA3QD?f%Ut>c6D{|M-*>d@|Q7{K8HR#gBQ28$6X9H57k0|A^b#se$;@ zB^q~n$}9ZBP7TG6d59Z4l^it`e>eY#-`c5x__Oac?&_ph_=TMsiXZb3H+U*JYAF70 z{t>^mQv>nWp3%7LgI?hmc4{bo%tPGZspP1k_`CT>{MJql#NUwIm-tNMv{(3rof?WC z^AI<9DmiK>{%-yezqM0c{PX2l33qT4k11pk0{>PpgvK> zURq!9KB&j{M}_#hJpbNbsK3|izDHZVB2FWAYTN!7_{uruu=hAeC^*=uAs(O7gG=A@ z3J!K^h)>rlSG~t8IM}HnKD(e?J@X0EpN#`#J33 z-FPW)&rP^|zXO+l9tioj=O%o<-+<5e;}G9CuW|RC^9mkzYKXVzF8=fV0$jeIhIo5! z!gu)3^@9*^^G5i5y@&sNKMe8z*T20##eYZs$o-2r+<58vlVct+Z(s-S#!GqT9rK8J z!#s53rF<*zPU-o#@@9$pcjKiz^NxAIbB7)AyYW( zQp>@+@lxK_H{n|Q;MNU0csE|o weto_fw%_31+VOvO797LRtNOiUMLsW0M$H`g26xBk_K9(P39D7GDw>%807nH04gdfE literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..4b8d694dbb12de29b556763593a0f71d23fa0a37 GIT binary patch literal 11256 zcmcJVO{iU07037eIOpE`-m@m~qNFW2sFWa4lhoF*XrG^7y6e zoZne{@3r?n`zANlX_!Xo#=$V1OauFmpF!u(hlcehKK#hRTMlep_~6#X2e-B!ys-7r z3m%hT>4{ts2@IzbgJ9*%?cO1NU+pYH;xOni^lr~4zTaJGAji-O{-9O)c;@Q`K z^K0)qmu{?r4E3rR#?zGQmkraSslINQcBTEhM%L`lr8K$2_>&gDSmNRxX}mk7@kaJf zrur55^(zOdO7->hf8&Pg$SwZ!hP1(R>vQ(IKdtSpPnRz*XLTQ0Lp=rVJR7%y4 zQ(8OSu>MC%#6`Ql=x^p8%q;)t@7Wjeh>I5Q^~r-b`cgyX6(hg;cJ}H&HN+z>%AZ-t zDvr;peE(%)k?koVYqYYnSS>#xN{yWZ;$AIsk8 zOhY{4V&qp>vRD78As%rt@;%S*Y^*GQRaifr^NSYmZNK-^Jo=9h@ra9&@9i{?_Txi5 z;^I=j%(v>2_4}~h`+URtS@SI}+V#cu7k~Ib_C^;Q;t>}k|G${;dHyK>>hrzhuQK1u zdhhtNSLc4O?Q2NCiHqC%f1*AAtE=XH-tK+8VRe&@zr{tn-X8ysKYS{CquU$e5f>wW z_U`P>{?ZVSxET4K=LMVpmcJ^jKalf_7VmAp_tQN3j}PΠ?f`G>`Vm3yczHsZLAiqEot0j&JCCQd z{>z3}KW1+si;H%BaRiG$wAbzA*S2$PHJsWTfVgPa-7he-E{>e+% zcK^D)%^08cbMgIy{ds)6u9r()FX!>uV~@x)@HNA#H4Zh59agKK-0t z>^%Q?dk0E?u$A+3tNY^(>yOx&TU@m3?e=y2HFhfV*T3HokGL55V!xAM0~GnVdPUMJnARndtD17pE}`D zKM~*SS{V7%36J`T_+Hn-$ftgMZlQi6dpB{>;=T1F&+xA~zc~7O&M#WL*QcL&^k2jy zE=E4%jK}zkc*MoXClCE5zevBmU4>EqnJ46B{)pryE=KvekG%LI`Te{ZrY z+Tk?M<6_{~Hg0&6vn`tEaWU|5{nzfDv;F6My?6hZJ(9h(n_4vAR|kK(gV@mRki9&s`9ndf-Se-V$k82Ri|cwNxJ^L}Xl`G&JsnQw8?uDAVT|Ks_)<1)VWdIc7E*m%u_t(uZZXKw=nWqCwQzM5#QHOVdOJU@tD6NzR%yn$Y-Cx>nb&?;nMc&pP4U$NCXD{}C6ro&P%HPyO&#I6roL>V!}I#2wDB9iKYk zQ9lvi>sn~>-uX+N@Ti}N?{zJVeCmX^!smxh`>7K?^%KeObuEnYb06oH70!PP`8jvs zi<~=nuDI>|(edd&`Byl__V_rw0~LtxmWzC{q=8hyC?Q9Zj6J|+U;>M zXg~MSZoD}yugArp{mb&x{iq+Ypbq82M`_v$t`7Lp(9rH z_dnyH_xQe?zg+M2{rzX2>Y#D=_n+l2*L!_`|CsOlMR7J--}0;Onn#*9ng`{2fBq{?zp4Mc{}%WD z=j*+`zjw^jJk-3K&!arAdVS5C`8+K1PV=Z-@AWlrG!HfJ+UKFDe)O5&h52JK`d_Yl x{*8S8IO5-6deg#pR`))^&sX#JN(N7xe}B5pzJYZ9*x7Su_!?8*1t-RF`VY>pk+T2* literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..4ab700db7130c2bb9559cbdc66568d1832f92dcb GIT binary patch literal 15032 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..dab8d1d9c0349750c512ad832bffe3f0e0d5f41f GIT binary patch literal 10200 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..97fa4c9acbc1064a233f40600c60a9c49ab133cb GIT binary patch literal 19464 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 D7CrK+ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..75359b314b56aa306365e0cda25e6f4c50d00ee1 GIT binary patch literal 7850 zcmbuEU#O*38OGQC_w9X#Q8Y$lbS^|NP()|O=8tCK%$YHUQekGS5Ns1TbJM5?H9=7l zj53Kzl0dsCB&f@vE~3z@67i-xi7rf{2oglY8zH3Ux7K?0x4wP8Z;d)f4nODl*0a|8 zzU$Ao_CBEr<1h((M&odM80kNLMxFoPKW-lW=41PA+Pge^-*W4rxW3j&1r}3MYHSUi>n4fAnxkfojH}$-%?>7JBFUfCC&m_Moeb7IBPi;38`}Yd| zT$71zZq)tr6Uo2g-;;lCo*4F%Bl%DM*b=S$t>quvDS!Or56K(d?9JcnTXV;}kKQQw ztkx&Gnb&8Y|5X3%U%Zrj8-FS&U)0Ttf3lhO!u&wX(G!Yax~V<5eg5+Jv|IdF^Dn=- zLwf?LJ@_gbk=9bKlyg@O|LB|U)0TtfBNs_n>|-hzNniOKXLMICVq2tTZ-S5 zUY;M@;>Sn)CO+afYkuOyNBkx}bhGAPys5SDs&ap(C3A*u>iJ;&w3}-F@UN)4Mcu5_ zk9IS~kKb$*Ke{QsI)3wE@|*KtC%-9u(BJ$vrU_-RMn_)X$QH*4|7c8VK6@k8Q9H_sP8^M=o4 z-te2X`I}sse3L)7#D{L4&(FN$Ur}|#KQ$}$qaAg_Z&EjOvsS;@PIbdi{UCKiH(kH{ ze$x3{y?=F{_uRkI`R)5re*dh$zxv)kedCw+uk$@$D8-A$p*#Mj&OXkc0|lu&y4hF% zB7WW*>+i3=_s>v#YxlcO{mT2_Q2dM^@0Xdpw}{{DeSi6W_@>tF^XdFI=YPxRf2Q3$icJ&F=o__?ZXx7xS~Cd{H+m{^oPZ*ZixXd{H+m ze&S?*5WgAsg>-Xme{72%AMu;`;=0SM`H2%B@tgS3&6=Nk-1wi${h5}NAEy0j>iOXO z#e3x8PI{3hTo)a=w_{cw4-kLS5)1i zZdU5Ydw@E}`(-9^#P>sHZT-@YI^#EqBlepqeQ^G1N4@c{sQHY#S=qm|W1YtLTPE{} zZr09^ct2E}@qTE&rGM-FMP2gq!T5R3y2Ec$2XwQx{%A*>_)Y2%`^}VI9iMfFe?`>+ zKXr+$tUsPJ-}p_|9lE);{+=w~pWJ_WZ}UB+$$J;w^!t0KN~-&*&X3E-;Z$foJqokX zTrrY!=asYDcE7;Si(%)U+0lEX@e}{X&|Ixr9txk@-Q54+eP_-szxD8$<%18Ldn{Gu zllD6OO0Cy?mr7@y?<)UOUO(16|E4AHpNVu+&$rK2_Rn5RzUGOR_|Q%J^IcTqx1U9N z?#kWxHdQh1Qo8G##2fF*nVyTG{@1?i-PS*G(!Uw+SQ^)qUgrPx@~%frd}luXT1&nY zM>q9+(7(7U`S@E7{Xl%^=9>TBa;dOLRV$ca0(buQI!?oHpruVR}P=Rg@- z=N#ZZIes==tk~{8dg}DaBd2x9Tu_hP*gtZQhdu IGMk3~1N6-v-T(jq literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..846a45def0e99e46f18adddca0dfed8c77d88460 GIT binary patch literal 7850 zcmbuEO~_rv9meN=oqOMq1}kYwOcrk1MXND+)g%_N`D_XOBp)b(UIdecrpb$mLQDm1 zx=AX=MOvs`w2MN!=(3Aq7hTmwp$IPG$D#&tqk>2gR}y@FGxMBt?wfPwt<9B}pLxza zGynhp%*>g4Zm7aAjKbEzFnliz^dFzW!v8N1t20lY+i~~y`H9EpD^JbmPo0>bI&u8$ zeEW`PcF#{fb9VmNkG3yAxMOAKy+7Q(vV3m{8%L7|_FmlegV+A_$$ba@cGn+%_wdoM zby66i`m!U8XCYKy8HR(Q+As{aggb5-DemPEhTjo?({TK1(oJ0-e>H?&|KzX9Z_e&X zep7n%f2|(>Tf?w1tY`euivFJMzdreeOrLg)zp;s*ao4>Og6VNhkH3(A%TNCJP3LVo z|E~C_SDN^9{|91y??~}Y52@eFAxz(GIQoYEE#1`hc71Q~k6urHb9_AcP3gV<$u8Az zNwxWRi@(>u(aoi@pIGtNR4(|*De_RipB%}5^!J8n?Y~m~v7PeAPyUd+(ap~MJ-;+Vl}Q+j)SDgI`C4GzY8)O(%vwRE9l{JcJHc6|B|AC>!O5Bgu~lh@xue!c52 z$KQ4T*cZ@EukVHRoBh*U(|w<9YKRZrw7)Mtt&w8=SM6_U{^ju}Dj)N=8aHHIbh9)* z^)HRz-haFDAAX$19cc~{2V`7y)8lvf<2qZl{_vrj_IK5f_)76F{iC^_$KT)He@Fk+ zSbDaNPd6OwQ6ADwU2m_y1%LJH(}&r+Srhq zpqsj0jGwtq{59W7@h_R%`u)U-kN9iK7j?7Xr_T7Oe@*$KZWjFHIhLRNYswdOa}EDQ z_aDDmss8v)>Am%f?XD+(l{x)$@|)6o{nVZNH~pX?_YK`F-9OrqH~yN+JL+a3f7+2Z zev`b>%~Jlco$|&{{*b)U%~Jl%6Y^*NnB9CyrXUw@~0hn<2T70-7MuF z+bM7S+`)&;FJC zX8c|yzbU=_eBakTUs6Zr747l^$B%!!JNawAm;7UMcfY@SL2cQezTKksg{Yg0`@=&1)CoWJt0`a9&4Qo$;iG;v z<%_ym@DnHZjrdLKj&811|H+G~erB~(v8b-5^xpXs+g(fkDsy@%`AzA)e)bRU6Z?lr z9O$O>qMvz!-(()delw*P{d_OPUsLlCzvf-y;`@<>`%gRa#BcJw5Z#ns9G^Plucc;#tsT;aksvqsB8-A1e#eOqO^`jki!(UT%i@I5;AML0cev`VPo2B~E zj=JHmsk%koEYy$Z0CkS%%S_^k&xg#?{G}ar#%~fw>^D<-@BOD8^~PUQ_cQ8dVgI5X z^E5u+GP#fFW@-P7=R?KG^NYA6uZenoQI~wZH-4@&@9>$_0o^RkKiUx|ev>-Helw*P z$7kN*ucOf=HK#pC9K~%+4rzCKJhn(>Q}1eu5jz->Sw1PKYnul^qJ%H z)2B|JOI7)QdmW!E^_tI8X|MBH<#XlrvhMR|4QKyRt)!c}e&fB${%S+=P1QO5Kz!(C z$T%tVedze}_4fFC+kW184zBC( zYQx!z;+Jmfdas}J4Ss%$F!7t_<4(~shvbmYw^mbgm9XP!A(2uor_#HC$ruXD^ zY~$8G(2i|kAK*MUyc9MlwqyH_96h}Es5Y6K>T&7SFVSOruc~9@H_*JUW}B<;6H;G9 OMZea~f`6*a#^DS8_54Tx literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..de74f0acd42886cefb56c7fd8c64c4ad5197c5c4 GIT binary patch literal 11114 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 h=x>5{YBe_x@ga*7Mo_G zziUIE`?Xa(HQ>tSra>3&dDTC?1fr@4ngV18#ZJ8aG|s%s=ii3el<)NS{R-51<1njW^#*oXg4J?4JVo`wE)9>3UGbiZhN)!%){ zQtw9=ufG~_#pVNDwCACJ`*HUd+I-;OE*_8lOSV?DUwF;^OXA(Jf8o#W7Z)$MUo<`J z|F%4Sap9o*Mbkt7d>(({ZTHWMn~Z;J9)ICA_iq)0@lSum^KSZ&1Cn>>Vw8WBBk%Bw zDkc79v?dpW=7IKNv*?VS64 zeSFPT?_cZ2fYggFs{VXG7#ZKB`OMt+m_Gj+(anF8yK*o(O z%0Fp-XI_oxmpE12ii%rN@jI#h?nU$e!q>0%y!m^5eQ95DFDmZE4e|fM;rq+<2ke|W zZ1MirA>Ok8M;8x|v_Ixw{)zj=m1FJ~O&`v`5r5~drr9=Y`TEl#T5Kj=oQ?fkf8c&` z{!#afribm%+5SWOg>SikP8{8T#`@3Q5x=;F{l~^7njW@4^I7+cv&-%mO%MJ3w)+dO zxW6y9V}I{u_lwg<+%K9Qw%@h=m+=?gbbnVI-G9gCuk&;Fi&JOaFPa{<-~NpI#m=1j zMboSP?z=tiy1yNw#a+_HApTf0#?4w4+PIT02IEg_ZsSjDoyoY-#c2HWlenknk(~*X)dXkIrZmZ|A~9rFSNMFNBk!S z@y~PO9=}N3ql;1eQ;v1VUuf%|bTL?e$`SYYMb;f%+-&`cd;B7CpX$ww;-7t<{g?f} z@T%|M+r%LL@e_CWMdA)!G`+fhlq2r&7h2pUT@2!na>N~ek+?$_qxfUrYF@IrJ~d$L z5#LWldtU87^NgSQ7xAHsk-zsH_t9Vc5Fff2`N7jq&jQhpKUG5i65B+bC*HDLLKhF$$4@!p9-m0uql;1eQ;xXD zFB12u-pnZeDM#GnFTCphZDJ7r_$|JZUnK6)MboS6PdVbA_6sfUlP(7FPdVZqzewDp zi&6Yjj;Z65*|IN?C z_Br?Qi=6xT#OVB|9C?RdB=6A0DF67JLfmr>io`v-7{x#3$UFRnx7<(u<>%G$^PIfL zFOv7@VwC@!v-F$uSES$QV$^@i(Qo{P*6*Z?!Tv!x`i)6pLxf}{awU|E>864_qUYO zy<6nojV|i`y<)?%_pkQ;V(|X8d(r&){oH2H^ZQkQ|DpCT<@PTOnA$a6RQokQ<4*6- zGt;=uFKYa?{%v^wI5s{#pV)q$f8s6m!QTaEi{}bNNj?8bW z|HWK?=E^&B{h93-C&Xu7AN;+`?iUyBeLuQr`gnY2|D^L-c_l{UoA7>rWPGW98&^92 zGZ|mX-^^%ylw(}@MaG3LM&o1MweO4Ccf^VNf1V%wt-tyHC9eF^_Y=|d>in`#&@TIj zNV~)PXVgCBXcxaoyXa!nKKnerv|nW6OZS(|&HVHmzexXw&yNlLUmyPYjn1>SR-B*T z9h18O|x8HKV*!hJ~~{p>T#*M0vHSDwrJ zPp0YB{^KXl*uTW(d)zOYUiA|vluP$N(fX5g@t(S$anf(bFVcT>G3r0%=r?|m{-k;{ zqyCd;OM5+k3T;11y12LAf6B4Wc3vE7%_dXeuXxU zq>I7)Q;vDZFES2vF`9qMF;DnK#*ymHG(8+Y=RV^X$z#SZM(024%s$Qfi|oVbqUqK4 zDL40q`$f({bkX$CzvZj$7w6X8FPa|u$$R==Xn9ZjDB&Ij=04y61V7L6u;9dbR(QBTn&){)^-hx@daXK6y*~BJ)7IVwAtML%z^{q2*)J#eH%6^po}rE$?Zc{Wvkmf9@~D z9rquRxI-7C_@f-_hF@g;QoWhc`f*QZp16ODtRuQ;dUgI&Ia_D^tT&_|=wcMVl%v1+ z3T-};E(ZBSIo1t-p{-le#bEs?$3BN&WFJKrqt9QIBX04F!~wb(#V_l`J%{xxeACyD z{V+eT&Ogt&x8N_ddrQ*A;Qm56?k)I5?k(tIbbp~7_YC|ZpC8ag)2sbwo``eiPvjgz z7flcSw1dC!y8HP&L_MZg{k<<+uD@jceb<1z_eB>sy#F1$f8*!;6!CFxijkjo(tBHL zU)-_V+ZXlzxNow({~l`}AMK0yXkU!{o!_}{>MH}{Ll-ymGj9AMqPvp zUXahN=wkHwm2$)hzCz3Aq>I7lf69^P_(k>+bkX!`{G@U>+|T`ude{fh#SQnjFATrG z<`YeCN6UW9z4wlmIp^-`KC<(>{CT;V+toe%glYUq zKcn9JhV8{Snx&n+&!2kg_{sHWpEgki`eN_K%tyAZtT1R4a_`4Px>&Wj4T((%b zWaG`$SXateCx6#dtABNm*Dt1bs8+vddRog`{Tse(@m$OO@6CHZr>$}N3uy;kG<`f) zH2#0PZ|YwI;_H|$Zty=j{H~e!;AhI)j}N$Ndq28p&xhL|@$-E${`7MqnfTDf4gOCJ z$Ew;@J@TRB&(DY3KQ!#;cOF{*vA>ol;>s)5f734B2wF=wrLcRBuy;wr(%+#6m%mr2c)q*G;JlN zMMZBKL`8~V6)Y%LdhLZjcR~yP(F>u7pccuMLW!c_g%rQ%n|asIK5Kv5CU%FzbMmfv z=bQOv)~uOzcB;}ajne+XFnur$>>r;&=l5HN)%p7_9DL7##rD06od*|-2e%jZZ=Zc= zap2%1hZpA_d1&#Oj~=-769;z=-S&|KI|pw|Y2Rq_fum2{{^94Jx%}SaKe_qo@7!}H z?Vkh@s#hCfJWHwCJ4`21bzWbM8srOA(t-)cC!HS3~XA77W!O8@YE*)NWN zmi?mXyZ!r``1tm2rzFZJuJhA={G!?|s{L=M`~R+C+Lt!z|HeC08a!jZD zWBN+}_;)EyPg-t2+v1-sHoAB+_E+=lulc>~uf+Lk|Lo=*clKP17T0w#h)+4<;;(6O zT^ED+)t7SKr`I%-_i%hf;3|L%qx@3*#?F530o^QYx!jlnMt9?O2w^p*ZSzp!@O`mlMa#fvGqE_T}W-{muE+`rVUXUw2Ixd+w4ZXc8^1`q(Z#6!Ue4NzpY}uAjV`WhKjVi_WZdwJ z(fG}6pM!7X@rL-&#dUu2hrg!f4L{@W4D!cy@`hg|Z|Gu_KQCu_!%zMoc|#YY{8gXN z{hq$HA^k=dqyAHle&erc{dQdp`cFCfjbEhS=wj4=FK7M6PyZqPMi-<0&uouG+}R5a ziHj~q@hQjr!7q|GbTP^w<;WZUnwB@$#UOvKhL zx)}J$6F%}+(|oRrfuB6#BY!o`=eij9$rC>ESJQm1i^X5|x3+(3&R;#}tIqYF^Htt| zX@6hxzZ}0W|9$b>=c}2eZSOF3>;FRT*Tzf=> zp8HGZugkVBna}q(h4_7cR49L6|2Q9N|J--Iy}$0e-roQBU2mUH`mVEvDt>Q%ZJiqY z)$(cUmpJ>1{oi!a^xf-E$q(y1KGuH`AG#R%eVs8s_YZ!E4_%D>JSXw-{1ow_i;zCCl>ik~j*Rl5bj&Z0CS!^4hnlIV^(ZxfZ_#OY` zZTY^R{I*5A?_C$W_kYKK1?zLiKeBeSu8uFX$hw0r2JxrA&c4~hEt=1DG4Rjdl6`Z# zpL~6X=5t*P{J#EOD(he2=xcfX6Ni^p=O6$0aQ4^yOZJb&!?Azz)$A9U2h=N?-kyJ* z{Chc@Cw{&zoL7k!?;upz-*IQ_M z=(qPr?yqTiz)xPB-S^X-`NMU_oA@H{rO-vwU$gkEKg<`NYc(zJu8YC?M>+D2UnKA7 zVw8W%k$3ze`S*GYqx@5jyyLHFd3Rk5@=rPPj$icmf~Jd6{;xJZ&l&RO=leqPhAu|= zqa1m|FOom6w=l{d<;WZUnwB@$#UOu_BX9Uc@`f%(`C}hO|NZ?yA^k=dqyGCj*ygXF zZ$+E8u8YC^B@Xl6-!F*fb6pJl#366QuW5O6T@3QabJF)`)((+<6S}yxf9k9sJg4#T z{1)+{i;XqMyf17fs*2FDd?cWn=gaTgUA0j3V`*i>9yi zkL>S-_{QICh!0(i{F7(1uR78YAG#R%r=QHe>B|lAp^K59_dm>MKNlC$A9PXky5#@U z?Q`)S+WlDmUX#f8FwjNQ+xhGGiH&baKML`oi%b4bweL&$)DFc($6v0u;~#DN`F_RV z75jOy;cUm^n=ab*m43c|fS>Pui1_?_35C7>GXMNcV*ZWN4u~IJl)tP1_Psb;S8PSG zb){lm`C?vI-m&c;UstRa|MR^7<-czkRu6sQk$vymyF7dEa^u0}^1-vq`_G_+Q`$M2eCY6F2kvpp?ae$jAtoT>%(*`Ro4vDwQ0|_BlG)~lqOFaf7oz#YqpDaeSBR?z53y8Suc*C z&U(@8uD`xs|J}p1Gp(`yXv6+}x&Qj)gC_b{|MjT_73pVxX!I-b?`-17@Aa2b66Loj z|NHdh551_oiOOGB{ELf?|7HH8zCU}ie~Z)R*Y{Fdyxef~4*UOR7wvj`f41mHzt4Jc zd?xEfv-j#}k6HfaDb3&B;!jd?yEu>a)8koR^G{hn6_5Apt6%51rzaZ{H+C_K-^W?} z=!qW^H+C_KfBcUe_vBkGTHJ0IgZLRo+~{js+-?_x_=%DIA3f6$Tl-%WzmK!H(Gx!; zZtP-b{OS)@+uRp}7g~JW?r-d3xxZKHx9HbQ>-W{&Et<~lVxS*g%DrT9U&Fzp=D*oR z>tS2#x2(^&**~q`O)oC2r(hS&-tJF!|1|xH{xdnye|_zD@%6#6_&WVh^RMKu^rzt~ zId3D2fjmO`3U*Qbsq~jE{%`7^E7v>v@5*)hYviBT!KV7~zGw9z%D=Aos&D4FrdA8Y z2hm{{BmI@`FY(R4-cdg#|IE)B`FiTFEC0-&Uhbd2>;52a?4siDntyT8YNDK(1|N$hz3YXnp37)^DHxUGZ~<+x%(r zY(v(?E^7UvzrB6_rdO>NU$b8GM8oONY){QD+Vyt-*`lA=vlV)=I+XRI*+c#K=B%&z zV%CqvoBQ?Szh%ECKWK>G*u}_y#^E=55x;%j!pMKd;Wzr4=C|9$ZTufTpY55;t}+il1@Bjb0>vpSLiIpK-*EzNW?Pb}@*bam0;YByQ|t6#wFm9QWei4T&4O z7{$*x{6=5X{C2w-_|G`ciY8#8V(LwJ(*p!ci-OrF}oq_ zX3sT5hh2>H+^4)-bN`Cyu#1s?V*8A4V*4+m!!Abp(O8IrgOU(=*bg0@>kPzZWklH#m{{+ zviL>rn~~YY=>B0GeFMG7eT!X;?q9}n-=VLG-`K@%{O7(yFLK|Z7o+=+=OlDI|A^?Y zi_%|jA=&3s_Wabme|5ZHtz2)vU(ITL^ZbdQgTH70#o0Hq|DxIb{_k2JANBm%HNVGq zp~P1>{bP<#9A4|*3!`~9@bKkqX(KlcywL*~UUM)P;P|K;af zJ>T0o%)Fe>BJ*-Si_!e;=ld@IIp>&{^G{@6>|!)O??=)8`T1h|=I2Wx`-WYN_K(j~ z=*xT_CwgBsyQu!!RbL(Nhb#G2|K5ClZQH-~{%U^ExA3nf_dRy8-2Z+4S+C!EK5G8b zA2**5L4RDf-w!+AuYYR(U9$WYZu)#@i+=W7i|;BbvSK|B?3loj+gRmg|@I zM1RiwYp&m+xcd3jik|*b?a%$C=H=X9Dsg}R`re2Cob}_v$+xp!G<&cA-iN=N^`pY^ z!K@d}9_oqP`@3jyGcWNww~3$6Y|x9mSECcne%03Z{%d~v`BF$8{Cp|2IC|G-9C<=t z)Aqsb;=x$YKKc87A$5RWwCmye)Cqc#JfauP-mB-FU>$$I7i~Vbi$VP{j&;zB{<#R} zkL_c*9H~Ef<^AmDzVi$FOmgj?&{>%L6SYJekU5xbO9a%U2RYP>x#qIR|USRr~ zFJ?XGEAyB=+<$cVU(kKP&R$rC#Nj!rb4+r>c7`NzI-?$x}U&p-CBT<`Ut>(o7Z zk^09jM)l7)>K467-C`G``t@;Ex9F)~NZn!=qxzkH#x$0<#iT{co7=@Gf74tyvtKl% zZf0f|qxxYT>X!9IblAm6@6WH+r`B)G{T7l(|9qq{I{z3)p3&8`Ji1*B&OgSHXY?X< zgk3ayZ~geV%UMsoF%NZwU5w5@-UC>N_k)@?kK4td|1gfaK`#;qb}_0S#*uIIB6;+A z3#0mF9On-Dnzo;A7lZSMapVcT$bE-hG<$FUuXKItoco9RuW9#<+r`!U=PT{!Z{FYe zevS8hk>_^oqMrZPY>Vyl0qg&79;TD2ddnb9QuWq>Dc5e89NP6G{+>u{yC+BPG8=#X z8rI(_A8%v#-aHD(>(8O^$KuIjz+ z8Ot8ud!BAM_`cP+*+uP3pMLgI){Fi=W_r==TkBHm|0l0A{&_>@8JS%)KYI0(-(+3& zXhU?^#YjKBkae?) z9ZzK)ze{2shz`5BNq_22%k}p9hueC77ch9u{=Lv}wqgF8U9{`HdcOZg zzkYW^bpE|~VW+;-5APo6ckF419=j-g=>Yb-IO{9cQLL|2^p&sWzVgnq{^xzgy!Suv zE1cK%+ls}m>gb8X$3I~Q$aVJbN@lZf@@=-0pFDly_G2rv*>~!-Z{t?aYx}m+^LTa` zKAx_z*-jrhdFsUBQ`S)1{=MND*X&c=*F9sqFV{Zud%yB|*KAky5nSr?DAe2MQ7d{o Ig2vB}8OPUo?Q_n3gto*=+6)}1h{Tx0Hi_@tG*N;tOj4AJ9>pdDP1}&hLPSBd zlSa{swbF`IM6@HFI4C;l#3F(y4r*|qMFr8K)FMStir?>B>%SlO?(^N&)Dtehn{TiG z`W|bqwb$DBq$&;5DD55$(>v0@{_z=fem^j*?*8PZ{cqT}ID7lz{DsBh!r8^0XU|+* z?Aw3O;l;UoE-pUyo_#lcVE_4pH@|z|`2#nnv~x6h+s1u|-u1-ypLyf4$6o*KZ{Bt~ z?Vbc4su$~FJWHusAEx7}+A&Pmq&?S+Ebap-O@3s2u;J{cY!~hN_}Y|~>W6R2dU5>Y ztQXC`Rll?Gk8a0vDT&gF+v$lPy{NcF#s9K8|JM%F&a_7UtB<8L`gD%3@A~wC`1<^N z*6BZ&>nER&uaC|*{g?4M=Hs&`*Jt!9yZ%f2`ANg^8T;MrqFry-cZ+`bm8=)NPx>uC zW?!nG97<_=!fN}A7JqO5$1a|T_0>Gt4Q6ki&6b)N8Qnj)ZP0njOxF7NA|mB_bUD&ezA*@f7;;}orr($x3JfL zSszCCrZjuj+W(;8%3CZJvx|0p>-|&o>nF`G^ZR0pms4`P*j*p;{j2rK<~I7llP#Jq zVHX2Eak9n{zc~0zj$bsp$6w~Z`ES;T^*{Q(x;4MDe!ZCb^z}b|$nM22^wh7_zv31Z zw;07w|LN)F`LX`kTwa>r@b9_qBfAF}2gtgLUDW#AmtT8*>$}eSDF1!e2gjT1o%ONQ zXJY9QS2b=(T-e1ZzMl2DGybgaim%WA{FT}7%4-_p7rPkw?|FW7{PX;Y{7-gvS82Mj4nEkHV7%&bHzu3jdfBX5{S6`p!)@OVE(=T>W{rBnn)*p1( z#ZCHK+RxwlM{O+k+FG~L;uZTHySTSAe>(cn;}+|KwpM?l;oykPBeRQky*>Xr`jww$ zzpEEoG{0^a1OF4dFMV(K>xTHnE=K;V`?GFpV?aL;9dH)EU3j zUqpvpjP%qA9rY8@VHYF)`j_p#e!`w#ha0k{VHfTC(($9+*zO0J7Ps5QAb#2rH+qq{v5Qgs-p=AjPyCR$ zv5Qgss~^vCudTOeal2jICVs{rzary~e=!<={Gh|Xhz`5Bou0hWi{y=7+%A9Wj$Wkh z=*6i1)3@iir+;Zk+}On^e%j#|y@+4z;&%R-H|T5HxS?nMID_$XKUP2V)DKcO>|#{E z`TKL;^M5xaZ|q`}KkbMceNBto?P3r=?Wh}ik-A|QqxyL}%NsrUL-NKhM)^-(m-C+d zrXhJ_7o+@XN8adbTHbCKgZybn-sna0#x6$rdppY;J^4fO#x6$rk8aF)kAB*ays?W> z{FA$emLqx{(?u>YCZ{-Gx0hFuKe=Q)p# z=YLJpxm^tO>@(1@@2F`yw~K*(^mx{>|3dFHo!iAeeK}vSP7eN>*H3YFZ(ct|v-|V2 zoL_AJ)_;ENyWVrY$@@Q@|Gt&uUj1T=#Eo4n@%Q!LbH42MU+S}Yf7w@`-u@r3IJ)Q8 zZvPgi@4GC1ad0HZFKYkQ+kfl)IG*K|(fPQqfA(2J zYs3Caoc^}#p9;;sb^lbxk9`6<-#-+h_x($u^nLla&tHAl+vmf+>+SPv-}RpJx7D|~ ze|?Sbz8~n;-_{Z41?!5)ykLD1H9z|5%Q}pXby-A*U5xZR$IUXq#KBZ2a zyQyEzKjr!j#qRsDj-I+Pe`a56$h`4-7HWR>`JcZv>*jxMh#tEb=~up*b*pb~hz`3L z>3x1$o<2VdM>c1%i&lqr{X6;7ZftWKea$~){a8F4>nC5zda*i~^`hBB|J74jFHSF) z^`+44OZBWH==^+Ch~C$i!tM0Ljb0>f@3%0DpLWy@eNC&I+r^-MwBtVY^|6p~!!AbS z=jRxU)6YlZQ{{Xk9$a2O^o%olkvd=(&Azn$v?EURB6aY73(X$tnYZX`S{=|+7iTbk zxz2c_7kRIRT{Qdu&A*?otnREA+&50EyW7Q}{l#yBO7vcGL~MNd3Iu!l-_%il%eBxQ(8=p%lk`d_vGzuCRI*K++vi&xA)cCmXt?d)GB8(BAb zx<%8uT@3Wq*Rzgw$j{f%bZ!>|J#n&sBz|#lB*!mC`#082{IdV7X@1=<2L9P+qGSJA z({yeZ13mjpbnHKCn$GQFpr_8{P5njk#x6$rQ)hJ4Uqpvp+@$|(d;ib-1I`Wnom%AF zfnC)3Va>X=^RwMQ*ALUFRK0v)etUg5Ak_8t?iy1z0GWV{5vw^OP0@} zbltA%j=OF@b8hjeyU#4{y7SznysP+Md#&t^z)Roj%-%P=^u4b9FzU5)F4DQs;$S>@ zZzB%ww|QZ9QR7n1IigvwS-;RFmS6RpR(&z`G!!B;pf4Dub&LA%x7Kf7bJy+O9$rp6ESg)7o;rP! b4wpvsf_mg>@`8H|bF}xRogAkY**N_dY|lGA literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..1e6e9304411f34f45f9fd5ad9900de3a0e6c94eb GIT binary patch literal 15684 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..a60ab13b7a632d2128453a56ba72a412a8363c7c GIT binary patch literal 15812 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 dvYKqG-$F=f{TJle@Bgam@43aYG literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..d16e55ee03d468f54a4ef0d3821748a37da3b602 GIT binary patch literal 16068 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..682cf326bad4d8aea7e436a249dcbdf5f5dd67d9 GIT binary patch literal 22276 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..c98b3952e6c760faa05a30b78aa18c75d5e07990 GIT binary patch literal 11210 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 J5B0yF{STe3OLPDL literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..98b5d0e49d97717abf423f5e635e7265e2e7f42b GIT binary patch literal 11290 zcmcJVYp5Mp8HQ)yX7982IVG)WV>F6bQL(8_Qqn{u>d8fkw?dLqt=bJWmuhpfZ36ir zh~SSZ;tdsBLPZJfA1T#hE7*!vs!$awVikpIL8_I~f{LR4@O{>rchAf|GwU>!ZjqsxDP)|o8Nx>+yV(CKDx&pP@azfSGHw{-JcZaTC1%1zV52d5`*o=$H*JUxE+ z(5=%=n@?|_9zA{Q^oI9r+H&pYlUHqh_okDZw`bYf-rz0Ew{3gZBX>Rbrri%*@%1~d zJCJP{Bs}Ej>!H7xW%*J!+n?o^bhC|FzOIuEvixPlzxeXO+t!VDoc!kF<7{!mVCQuq zC)wBZvaI(d2_McbSf3v}b?n%g>B$pE&t&}zv+M<5ar9eV@h44J9K{&-WcdZ%Y)!Ti z|Eg@(dq%vcWPU8#O&t#rwdsdPqTXD1D(X$ytNQDM|FzNocq+eFs2HCvIX;(V*i9X8 z)yq@RcP}f6j-NTFUk?5^R{Yf+ zx7zzLUE{kYd%JWU*-ag<`d^_ReAAUdT&C$N7H)U_t_ur^`mgc3J@#FGmB#c)Hd>#*WBI_I z82@?cuhx8fe_da!&vE>`zH1%I@6@^9DLLG#86mr=*r6Wk9RL>Kh7GS(zAxAj#IzM z!|nO?{u#%G&S9J&I_#$PZR6*A zRMYW>dt9x*s`tpI{Kj92afN3n#RrKCyXp7}{jTags-{0m!$8po2mZi zJo*m3N#9{NQ~ejtQ~#r<{~>*k-AwgA&xOq2(czNBjonPe&w0#S^fPMS2D_P4D_g@q9?*F1Bd1E(I`Ewq5qn}ZE2fLZbpYzBYy-D8K%~bxJN8ad7 z@(6efM8_zUa2c z*L|PX-9PD^Zv74@c)AbiVTaItjai0I@-Y;tXIk=;YuTig9JpY=GqfZ?tfBPS4sFu1} zt^VXmf0MUKUt>4j-%Wbf5%ovh<1EN{dfh3Gx6Tjh=lR!`pW|;jUafCaeB5V{(V2`pIx{u?3){8+ZdI;NR``VejosYZo_`o; z`Dgs_5AloLO!@EL9sTz9RVcr~ZYKP9Pb*f9ANS=MHEzLfCdQBRh#S30+}O=j{NsnB z-^q;?%5SintN5pH@Nd#LA+Ca{{-Ms~P2Fdd-(WWr{^@V}F5Eu~(s$U+)cQr7%s=9v zQS&a?&BXlUJp7|K@r&I|`R}|s=H2;Og~~hF%|!m3$GD?68F%bvYW(vDv~Ti5X>TaG zbd$zIc2mb&=P!O3cl?`-e~7DKYWz8mx}%>_bq{tkQGd>(?&wYGj@?YvfAIR4_u!W$ z$s4P{+p9KvoQZn*<0(!I)#q)%S4CWOzDYpa!m0mesghMjNg>K)j#8m zj`26qg}x}bn!fX3)SKNSQE$rL>YwK$`gXjwBz=qBO!Y74(Rb)g`Y&9!V5u=QhTB+@C z)boGi9d3~D>FlEQ`LPoR4;`JJy5-RH#PPXrmCpOBgX1s8ReQI+7*`G7Rkc>&;#plQ z`*M0O^S(yo@yfo#Xr|YK=bc@^}+W_vi~-a-PG}weeHd_AH?&9kCqJkb+Vh@ zw`=mBKNkHCKUEUH*iHLy%WrPqLmg7qr(s{EcAWRxl)k#J(-i;t>>IV|z29Pbzs2;v zOH=+0`zE#g8um4Hyd3|&#)%)}XNLV+*-hD7$DjQ<;y#ak(OP^B`&PB%4g03G_`N^) zeD+P7>esL@R=a-h+9E%#-62obaP`kTn`jo~@PewlKu?;FQ&6N~vDj_dDoL0^z>5`(^=zfCOe3;K3# z_U%&6_p6`K?L^kVh3{AI3(Y8d_r;)xTtVL08k43cA|v Peam~_TlDr&>}UT2ql~7Ti_)Cr*d~F1 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 Ue5rt|9Xz~p=xw352Vl?r4|%3yb^rhX literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..2deec9f4e9c5faae2c234b742c7c01a95e6aed74 GIT binary patch literal 14778 zcmcJWd#Ghq9mn@M=bm%!y>sWzy`yHM5~GQaY0w!(OvUo*Xh=_I6jQKEHIAh-I{C_p zgsDFgg^G%(6d~*#MTL>}Fb(VhJ-~zt3ZyKeA}q*^UiAH}wZHr9eP-|9FjJj~kN3OR zcdg%Ezu#JW@3ZF=qoQ97isO3y;*z4L|MBTH{`-vn=$0GyZ9Q|#>aLxudv9J{y?NK_ zjk~VBb#=?u+h4r8`}SK`-|)&UXIy#a-Yr{Rv1RYpvx?%#!SE$3cc1<8?|kY{=WKiU z^pDgZC80{7SL7VYKtMJ$v@8?!9UEzG7y%C=R>F*$33)DQ!K@<``dB zj28RFk;P`l=QB9HDEcp&aNV<6H+4Kk)aIXmVfHP&YC?SI=9K@MH2&s1zQ=Vx_Mzi1 zkJravsr!o`YTPfC?Mkk@Me$2Fb-dG`#+7f)J90k|Uy7q-tG}GT6rcR=$G#N5{N?fb z_!p=6m&*CSB#&KuVZueKM!Kn(LjUj%wU^%<|1JAX>B(Q#=(bd&s?Mnz-S81U_vX4B zZPl{7s+ip{dfCe57axZI`9-n(P}5)5kH%O1mFGXN)i8HzKKF``YCh4;Q(MMg>W+VU zjrGn`U)QrDc3g4cj?1@mLX8=1L`3Dx9iy}VOO0R56*Xrb)9s)6ht7OUQH-@B%=KDf z=%(~~MjPYPuJ}dvo4ucBzbXB|j2^;_%zsbkwlA2G)s&;M#%CT^MEZ>HnXvzTMI_zS zk@^`m{Ieg{n);=3IzQp^j-o&}bv*RuN?Kpq@Cg+WAPMv?=Bg*+7Jf~QX(*IQ%=A8aUH>KC(Z}{0u@GWQo zn)uMogZbyzWxu&jf8#f$caA^&gmS0$qt8r;58aIXW6c$D&t5qpaig14@#hs)USnoX zlXsK6kJtE^{zf-9HR3et{;QY(up`Y`{Z*t!F%;@}S$9dy7Id60`I)B=6-uO+>p<9`YHXaQ`R5r*YvtIBY)fa#fNT2{=?Y+^7<>|ZyVqHh8c~2DEk-F zq~`#QzlnS7bdNteS^NC@oS(Miy=PQk=XU3B=2yCYy;bwId%|?xl5XmFs-L$0)A-+r zkN3;?8uw`B{4qWs#y9()S1m|4rHAA9-qd}5-0M+S+^G&?_lE<< zA0MCn6?K1>_Ga_=*gt!B_M3BOX1^&t9DnZ5*>BF@m;I*n(7#6aXUw0uFvxyWdgx#H zR`#1~Z^(XAdZ&N*0^OM(t9wc`KcGiEQ)_u~=VEwaB$s6m}ByZ?ult0>0H~3BJCiPn~ zsvp`>xA;x!7Tt{Mmv*ch{3h!r^;i14CLe=gAw_f0MkSn^FE~N8a$8yrG*>{%A+u@SEf>^;`y}3NTDLot?ALE<&Qd}h?Kl>bcWB)VBAG#UkFSS$s;HQ2db%Sn3^+P-A7N1G| zqMK3urgmCC_*p-Yb%Sn3>xXt+xA0YbGW!?J;QB@W*!QU)lYJlE^!{HyAL;&UQ}ui{ zyz_wPv&Qk!6Y+8U>v!e)=<2`tX7_RWKiKi8{}IoZ$UGtjCoaEKwJzP1p4L~}{LNjayx!X# zAN}-xllwJ^6Wx>^_TRs!`*@n)=JR{AJ~aP+er}7uueG$Wwmbg*Yjd1~jWudslWqp{ zOFQz5zoOE^-mt8vmhu#%}>TsNZf+&O>DkI%oY{$_rr{O!^DynVv-y@hmB$2G{9p!Q!9#exgyo#LtKL&Hh8WzmRT9Pw}^&zwS?nkNXpo__#kY z9bcQD>nJ|1uO>cpGxCr3XCKdp_#r-Y)Bd*lWq_=oHtnk%t?@W<>oXFinuru5G7dnf3=;@z72A56IJZ2c|W)bY^2_MGgm_;mKK zHP4CtYgGS?Z!Wwy`%UTL`19|}esj%v*>6e@{nQWRS5)0_{?t!mP(K`}Zt$Db4Z0cC z5ACQM{3dmi`YjpN5ACQM{1sI0H~1>5Zjx>W^+P-A7Qac|qMK3u zrgq%l$IU76>L;~R-QcHwAa#RoM)gBG>IPp$)lJgPpnhma-QYK= z8+0?OpVUrugP;0=)D5~B)er5c8+;X2H%T{x`k@_lgWsfX(9NiRxX&owtlaB<&+Hwc zzqv0dDZO+5=RN};_a7#{bYD{PVE*;X*99 z#7F#Q1X8tNF?xdSR{Nw#O@7y<&|3u|I>1L3B#>Gdx73E918Tfflz{m4LMfs9$ z2LAr1i=uy)_MYuEKBfOgH_z&xf5u_mGrq~XM>nJOKi2%Q?=WvB`wqGp?LV|*-@{)~ z`(Dz`VE>~X*KPbJ`!2c}?Z4!SxXGVM+~{T$KkbMce?`TebTf#bcEpX}ByMywil00Y zH~BM(JLR=x6hG~V8-GQ`opdvZpLWEJ-z08yGm4))v2T+NNjHP*7wuR#_)XRgx*4q>^2~XYf0Oe@H>2}soiAOix!+#nGkN_l zndQInoz*b<_bZL(*V%t&-`po_lrQOK;3rPzo%l`WKb=>}X#Q!(yyLH^c~80-%s=gz zcl;*vj&4TtPn|OF)UV0BqnpwE(~k4TZ*u;r-;&Y!(~k4TUs30sbTc@A>Wupi>d)l9 z1KkYoKQvGHm_HLA^JhkW;>1V%CO&jC@>6GAzo@^8Pv!dK`c)q9yno<(3g&&VaYE)F z-HhfxwNw7_lYdCw(ak9TwBx#suj13$&-VxA@i2bo4Zq2};WMY^@6P)7S4H{ZHyV5( z-@EcL^`B|{1*JK!fBlX{zh>$BjllH3u^+xh`FVe_e#2s%oxMNm^{8rIC-0r=@0A++Zu#EC-`^j?_nMmFN&lVSYaaf4 znMVID?`86Jqt?IQ$C!Q}V@`eVdqDsG-nVW3THf0={Pp*8ZSyW|zb)^D8siU# zdEDWB6EZHk8I4c>Q}1OPTtp zzi-{nE`~+7=oMQ#-Qt3xqyPAH8vowj9o~HX!Bb9MUfsKA^}tQ5t2gakyAUOsTj8AWkqZ}7U6J5PVplb?Oz%pDJ({K@++zqr^s z2wE5(Y76~^q8M)I7Q2h#%euw3Vt90?7!<=}=>Nj8gL99bJLkZse>PVvY#p3;c^Z@S z#a>bL?kS47m15(T;htOf??1SD;KqFii~dqk9CnQ}zfg@w1~u+TeN^uz`ncs2eD2Nt z8eXVrzpR+qGJM0z#XB24`tSU&EsCXwn*NzQM^_fZjosqNVjJV<(>u8+y00E{(~DU* zbv(_;H2>Uc_AT5sCO&j?!hc0-e_L+f?YbWO(D9eY>+P@9{lyQ}?w87PB{$uy{!2G? zyw#uDm2dvhTo1&T`cZPKzns6+KlxpceX0NQm&fbv?@aw)Ea(3Mwf%ne_X}fgBx|Lc zIv)B5@5z31^pET}rPuw+AH~0Hf9_*NF?(Vjf5pc&9(41>c7Ok0YU@`;F;e`^&M&om zq?^)H`{f$V`McPj|C4L9bGG_&9V=@0CFkwFcoz$zy+=fT_87JPw;I2w-l3bvwEOA# z(sCY=xmha&-IV^4Ml|17Uk(N%T1_!3bFBY_dauvu$uYZ6sYlXH9jV87jeqg7>^F}% zA^T0~t^S#xXifZDIiZ|1mv$Egx+y*Mcb?9Evv+>>o6=kT-5rXi{JpP^i4Wae&riSc zoAevMInn>TM$7r{{atf)l>S!+n6vthZc4BBzu{*s<6BUBCO&j?J^$RM>^C>*JAPAo zYx{%mXzo>h_`Nalp_`F^ba(Fe%spe$Z*+5_|9Ouo_xS#66zh}ZeWJ#1>N~o5QltNC z{KG$Gzd5=+`%UTf@vrd@K9~LG@Z9V-rHB6hb=hwYitIO~xB6MPjDP0sHEP^RH-qt0 zj&b8R88^Bajh}Li8^6i8Q@tgl@l%d*<2M<1s<&h`{=q+WE;~Ve|4@xzS6|T06WZsG zatpuBesjZnv)`27I{*0RKa>6D!dcmGN)P>Wd$PZx>ZIN|b5HhbS#TYy{5y$jtaObz z)ak0bc}o4>-=EVYGLH|8+5NocTDqwtsef(tcdl)(f7<@Vx<@ysuHUkM>=W!;>>sB0 z4Kwmj+duH3n~{H7|Jiqf{Wq`wvj5ZC_r7ID?H|hiIW0b&=as)_#qnEOCqEY7o%6#? z=WXSODLu@OrAONHgKItF%C)aaT+q#Eez>y2#}$`}FI|I|obaDtzlI;YTvt}dYCV0w z#_#Gox_NA)|4si3YWE`L=e;%RTs=THFKYLX9?8C$y*0|0baNg5;A`3+PMso8Hz58I#pYxbLS_hr8+J@n7(`jYXR3%%?& zrHB57Z)Lx^;ri@1rMLQt^G4mn5dVtL=SD{9>) z-3-<*=Re}c`OhS7=w=i@$`LpGCh<%4mW<*@IpT)jByQ+t6hF!lH~c2?OZAqF;zv2+ zhQFfXmUJ_SALWP}ev`PNn^FAO=jb>4pGp7G&8YvWoaPTd^9PwXbTgVi$`LnwChgAqgkH6%KIZ-e>Lxqeg8A<_&{?}JT_(j_5JhD zweRg$?7uu_x-XJ$>Ui3}r`12y{h8~ZdVHt$@#g(mzJ4s**R$zj(;XV`_8MPQEYZz7 z+WSvA-ofCncz^cy%;r0oM*A~=$nB)|)gD}Wy>d~yseZJMfA)i#w|m?BM?Ib2<$6u} ziEc^{>+jyxew_Gvey7bp$D{n{D%Te_wD-TSJm5oqnB9l8ze+cyxAvdsHxtiS8uQ-k;7&v^hJ z=LZuXx*7SokHg3Porw?Kw7+$H<^I!l-0_*#fAWZR+xyg*tlN~IC8PD*{kO`N>$k0b z_BrY|*>|YljP@VupV)uSt3MwaKCFH}s`HUIk^P&^ zrFMV!Hm#*|G(N4*ioaLe=;k@GfAq)fH+h$W-<00kf65I%n*HX8`IT-;5B-Cc?63Ie z>>rpbvA_41>^J)#&wf*SYx|v7=(<4Xn9dKz+;qCWOE+~q^lvyb`z!t?`!|?p#{PNb zKkb_fcW1vTJ#2sO!`W}npPl`t^w3Y<(0)bb4dW+&5`+BVIC+ELByZ5oD1RtN-rzUM zn^bSfD1RtN-r%pOyh*wl#u5(AL2td*YneFd==Gi{N#UP z(0`6IZ}?5-58aIBFO^gL@Do2s+|bP^ev~6`@KsdaB;5@1hjQdCev`aKH>3Pb<+OhA zvwk4!2HlL-59L_5_$q4MCfy9yFXh-j@SE%#=w`Hk%srO#X8zhS$s2St${)&+H~1?m zZ<1~X`9nGK2ER$(pqo+tq;kp|{NxWLZ_v#se<(-Z;H#*-NxB*259P=k{3dyWZbtc& z$|-N~lRuEWK{uoPp&WUGucGoM>1L2Wlp}BOo8%3;8RZYxX|&7rTSc{-bTeq5>qLB9 zKUS14>1N>PIu#$+uNCD>x*7Pp4-`fBH0A!T8lTm_(aqD^&tJ4d-qF5E-l3aO{xMJF zJ@aRh_vmJn|ASZQUg4dZuOE-uIYQs1n>yZl{-qt(E$vs-x=p$ntY6A;-b&Z+CD}L7 z&1nB1&WxM*n~WRX49Bl>^gBJDGSzSVoWBx-{&SrEr~8+Z^c&rb`cItcH}N;=cgl;B zQUAG4Cw^SNo5U?$*O!dqM>~w4_A6@KNjHP>Q;zZDHyJm&8I7NQEy{EzsbIXZbthLdCs`Wf0J>eo6-2$Cl_}rceH<2d_M1=i)Q&Z z+B0fK&kq{+pR;FV-|TZW%9nIA@Y7G`o&KB5e;QZGX#Oe3yyLH^c~80-%s=Ircl;*v zj&4Tt&pKn?S$`(;j&4TtPdUbo-(>u$-jdPyDaW|+SJb$ZZU*Bg&$wS^&Q;|&j0K$Jbz*TF?sHSZbr{vcuqmw zddH1P{LsxPeyN=D2S51($s2St${)&c-Gr~AuA7o>M%PdBGw=9K<{iH|G5_zYKffx< z55JM%19>mO$J9U5`C~z8lJ^h&jzzy_Y5R@H;I!xeslA`?<>E%X|MIDYF?Y~ohF`}=6$<-ujA+Mhwxle{&D@S z&o#^X597T}qy8!HZ5sVQjQ2Kc>YsS-+pPb7?FU+qyyG;}`zGn8pDQ=ci{r1QWB#^gODx~b!9uM5lZ z4+h!CJ7?;F_|VPB-+w%9A;svaF{uaL^u97}{-(V5Tr>WO_o8c#NAs87%QWAc%0K?? z8U19O^xsVHYo(jg)BLsd-|wxa#pf{Ido;#ZfA3N5%lci1cF;lEmxuhm@OEwI`hDRm z_oh$!ec^*S8u@R(`CXUpALjJir3)|Fb$)r3_fl%pn|Rf>W7o<95h{XIPz2GFw1=8t^+yjXp@ITOD|$#+p%qDw?`N(3-DjV3&;H#;>qLCK-@U$T z{nlE)we~uD&nbFEyXX|hx7x);MN9wV(;E5j)7rh8uRD0^>8pdiy9fJk8VqjQJGf!* zo&$r`Q*V9Q;QCt+46c6d>S>pszJGP~HLLqi+gcPycDm;B>gYWIs}xsn@h zR{YXUU2pWKcIBJDIM)O5r8r7X^q1q8;*;O?*q7p$zr0>=|H2giQaSz?6~)|p6z}JU zTqJ9yo4OwQyYI+;bNcVuZ%VKGl|P#Qvi-S}l&za{|0_PESkTSQ&Hkxp)z&YIqObWk zTfflqk#0&)?U!pb=kHQ;{*SNG);WshT2|Dq%g*0*=}s0zb41Mi%&}_y=^DSF=+Mn$ zoBc$-yqbGtu4sjzo6?_GkLEt4SPlj~8l*WYb8PAnMXyhP=aB91DI)2nuGHsvjeqHi z>^G0tl>MgkM*qy4v?d-`j{juH z*YguUev`QIn`80kHCm2;=WiOTqx64efH|YT(M{>~_(%M#Wqk8L8WJD6xt@P^L-v~+ z^f!J}dSm;&8I8TlPcICK58aIX{o``nGcO#HxY5nA`12l9?(tJEQQ4E_eWb>3>2GxN z^G&?`@hED{cQG|y=~cVN)P>0*Ji)jEwbN~-sorD(*OSNYE-|I zZU+6Q9R0>`(rObY^H-3|Tr+Q09{ihuL#&6Q^RBy?s|FpHZNwNR5#;@ydbaPYl z_)%{D*V%6_yfgbv>5b!$f9_M+Z_b~c{igKLKf62oEB+(z}lLvF_2$iR-tFk9~sui~Ym& zzF|iGN&5#rbTjf#il2Qa*nji-FXNxozV|INYX5Nd&q?#sdP@0wc07N}>*UAM+cjRw z4>R4jl^>?`Fh7>R*_oY9?+mqjiTsCZd{%#>o0l~E`>)Kt{$Fa8FX`qw{_fXQUVgLp=Il46 z*Y}r^_-SYQ#O$xA^Ig)-6Jvk>j_fyQPS1W*df5KVpR?bby*v9&>7jp)^QHQ4&Udok zlpgx$AI^Sr;kxWMr8oMS=f%x={wqG3=YP>0{SGrS{^VIPP1MG1Q*PQ1-)z4v`%USM{>|DYUsi@&1sHtA-Nzm#L$;5S(}=w`HjD95_R zUs3Be>1MEgduQZ%>m3@Bc|$j&`J){3hTmlVQoSXk`J){3hTmk~(9LN6D960vH<`aw zZ^>x>D960vuc&!Tx*5zL<(N18Ci8}FM)NnfEyvCNNBofZ(ak9SR8HfUd?gt-bTb-1 z$}w;FP38~XjOH(udpP@9|I|a?pqo+tP>%Z+zKV}#|Dsvmzsm1NI)9CRKlb;ZN!PoN z7e(>lg#FjwpMS1>Z=c5gydl%~BI%~Cr~P|U{nJ~A^-sD!;rn|&KbGy!{8itRZr5Br zSmQIAdvx>m=J+YcI~e>G@5%m-IrBR}8c@bmr7#D{L$-`KzM`B2k!&(Eaz$s^Wn=MzJ+Zc~1i zjMi`apDJ6f-=_N6=cwOg-=Tgp+JC5jZ2vi5hgsg^r+3u7e<|(YvtU#owxJbo1QUKmGgcH~SyWep7m5{ItWr z2cUg(n(>uxN)P?r?b%=P$?Wf%+hc#{kJ)cdeLVY3>5c8TPSUyH{hGV)54qt?{Vm

@M$0OgwBj3z?@@KD5zPbM}<(pAY^YO?x@yItbpZr;~lwY|@`LoRA??(*Zs;j_g<)cGwNwR9{DC7`DW&mzvl|&n|lpYz8Up2ACG(!k9;%p$=_p^ z@+(&Jn~IE z^3BXAf71QRH+Nd7d^754J|6id9{FbGlmDR=$~PwsQ@$DXG#`(A6OVi|^U0q$OZkay+b>kU8TB+Dk9-r4d^7XOAH72P=9pp1H=~~B zwGx5nExlZ}!b}N-{Mm@d%c;uUSBl zQu$`o)BBG{zKKV^nfc@oxL^6^z=g^;qn_sDk#FLWZ)QIEy(^S&4j86^oA?$zP?2{Ct~ZpQ7c`9nS|Z^++th)3Pb{6T*yZ}8C_;!!sBWb@tJ3M%)iR;O5IF+<{2LIuQI$+Hxr+EhR6J?46oG9R$udM^>;P@%r&!B zH=~}ee|XG46OZ|4W$Nb9Cs+&>o z{x_uGuy6dHJz~B*7jy6*yBOEBmAd&{yFV^|>!&BKnHwLEV&(k!Jc7EpZ<`;F{(*S$ z9bljD;{2v=ZtY)DuA$pbkKdcegctuA|HmC(w_o^CH{+J>`~Mfkk1Z-5|5sP__5H_N z@p;|uW>3#=A41(M^=|*3Zhy^LaqgGJ=MBGY_Vj$|A7cKUWtMuke^l|u=^DVnPsMZh zKC$MF>~MV?kGdJRxB7!llQ%fNM~&k^JnClV4|q-9pglXpqi$w?@AdKqJk%i`bu;sO z2Fv67-Z+1VN8N1qW9|6{UaVoycDVjB)y>S`62BLO|K8ah;!!s ziC^Yr!^~%%;W7VAeClTAGtcmteS}`DdXyfHM^MYDbV zY+h%*@AcREt5rAS^;zru?U@sQyPf&_cX)05Z|Y{;Ui|TT{TI*wdkyFr$E#1~N%XGY z)P8*Khwqo^`(?J@Km9wx`|sBmdK~}z^+o4(#ecuPXx91U_0fO7zUaKJ`0v*jdY!@Z z^MAj-;PsJTf3!V+>2(Cp>;FG`eeu!G`}25R_0REK9{(A*Ye6BOD^NG%mhRUF`h2Cl zzmNC+|Jc{}+V;^8@kWQgI9+u!Zg2Hp`=5P%uYW84`w_FJ=ZHJUU^%Z?ld=56@_sqV&Uwkpn`4eUw_s?~^`IY!Q__e=dJnZZH&tGsHvmEC) z<(1Eq-uSEdJZ`u6{B8Fx{&Qbnshhj$e4E#UaeupB4_+SL4ZrdJG{=u~I)~$T_={~h ze%zmiaeFzx-+cV=9%?`SFZPe)JRSf2cQYQJcyI8F{Y~m^$B*0Yh-+_tukHBJ7dE>1 zJv+vG&Nxnx<5D-Xg|sYugAaAe*XXE-z;xF z?;CnZybhfn?^j|Dn(MEQ*XL0;quw&V;tj-(;l(+A;NLv==Z&kBJ9PUF$sHVZGt1|< zfyw7LgH3*GoVxiNe{;LZ9~A%YxZi{SutRdGn^``;EllnQ{>}9!e?Y9K zndSHXz4AZsZ?-r2y(^SEAl4P~A-UAeET7*t=Kg=+-+XWKdwP`HdrXJqQa9W4<9R&R z1^-sO$#1Rq`^JfFZ~j7u9n@K+F9J#E2Cb`tj_WW3P%HtmE zSNuC%8=u`4#%G|VZnoyfxLD`b#BWQn{+Vmze^NKIeAYQ~S^p{{x75ufpLLF0)<2V6 z>SmVD`bRG7UuEQ$x|!s&&XLRdXOc_Z%<@_P$YuSjjNDQ;lYG`Wa#{aOa;cl``C8{z ze?#k^xn{2FX4G5PFV?@Z-~Yu9*Ti@3mUXe=`#x{(dOxIfj$GD1lU&w6Gs|b4BcJup zB)_bS4YPdKIdWP5OmeB4Sw8C=xvYOC`DI;fnB}w1k<0pLl1tsp@>%D|W&JbBFY98% zET46bT-HC6Tz_$}Sr;2-`K)u~vi_OmQa7`F);V%n|4j1By4bKiKh}-% zxW_-3_;oIE^L@U)v$}cxTKavKm!6uQo`%;xqkbQ=XZcq7 z_W!^7Jji+F^BO(g@qFB-sRJ_-G-~MFR`Nii>pN`LM{xd$0iqE9XuWX~b8TB$B#>dlC z^x$oM{L6ps^RD+DKR&OD&(d}{r^8U-zK@#%`Bh&PjWv%f8SR3zxPYZ9q^|el1tsp^67&ipM86i`%T@@V!P|Ka};x$%1EA39urhU#XPPan<)>`&Y(f6IQ#eec8$$)#>) z`SkIS{{i|Nx60rAW97d4|8z($bu-JS4~YB^&>y)~{yQI6?&d2xB$v9`o*(Pfym(y| zdlbWN?vTDf>gN0Uz}zc`l?y~%&52i`~5HUXKt0xI!7++pGhutGs`dg z+;RUuK!4{}`K)u~vi_OmQa7{w(uWuMtbhC+AdfqBGkg45=g4LKGs&fHX8Hex{*SHh zKkFR1tbZoC)XglPb&mV}0s2$7%4eM;m-Wvim%7=Wul0|<5BjT3`a)S3&GyG%>)e_r z!;kgPT>HA}W|m+25F`Hs^v8DHf30)mvi_Omvi_M_e(7V3{14DyyH!5x9J#E2Cb`tj zEWh+YM*aur&)q7Yb&g!tKa*VQW_!NYx#+(v>z_&gOIa5iM!j|YVx3#POzWSy=7wfn zY#8-cpY@O256~anb^o=_k<0pLl3&)vhFL!AANe1kzj&*B);V%n|4j1By4WzwXPqOT zbk!BbW8hB)_bS4YPdKKXN}nfAd!NpLLF0)<2W{vMx5v@>&1L{{a2b zTjjIPk<0q`|MqsiuvH~d7$2IYAjpPn_!Gbp)Mf?QMWI^6B7lShHmrfH#9@j+AP5LZ z00$w6O4LdO0s|6-#1c&Z03{p52Gjk1=gjGwDZRHl9l}e<*PQA1zL|OVp8GoIn;{T= z%ZnL@^_4f2=kPC){{qAJ6gWKpp66CBc>W9gbj{;|WBOb0XBXr5Jclm%FA!bwU*MSj z7X00nK6wsZ@?RjjmKQUQ>2JXwUg?wP&?Wx`qHlRI<2wBl+5cthMXbNv*50>r;-bRj^(YXzx?ruc2q_HPiuAe{J!Hd{aJk0Q4LDA(ehF zpE>~g)CU6bB@ho(d~p7H`P2c>r9KddF7d!I{a!wG0CXGtA=Ui%@~H!$-{23a^!xbA zQ}@wVzI-!5)=7y64$pr-pE>~g4gQc~{K~7HeChz`H~2#;{a!xn)s6m;O23b(;c;MLhd-+xel`i=YeGpyZ zfn)l;e5->>x4|D$&3`YS{KdE%{2`ToAK&vAzJvyUNTJ`)w>oH>Kcv#{>me(>W zKKlJHc!4c^@)tbvULbtSYZ(Qm52^IGz`s=Pw_4QqyoJl!Z}W75%hRgI zD;}u!^8Q=LS6%&Q_!GRVoVIve`*t#_eSojJ{Jx2<_X8gBKx-f1dp{R0tFQX|#c`tR z`kV8YJ~-b|=9 z-H(Z{@yqu=RbF2UFLk!hC!N>*OJGX(X7ri7477O3zgW)CdtF1U=dl0Ek@Xz?tZT&4 z;w67J^KE?TVY1iMpBX<26`K;yY3#(W9`%@^ek5)$xX$0`{k49i>*Tq{vZOiIbJS7S z-|xf&iC5Q8^zVE5qe5@3zspy=zmD2h_`>_^sJ1H`_E&seXOFDi_UGyMY`@=~7sPp= zwf2Ge%JVAUIP;$}&fV~MpyC63-7E7ppJ|WQnb{`@vcHgc;J|#__&?6;zW5v71o^y( z2de#R{n8JoXEtY0@$3cT+^aw}Y|8(vHFo%5@B)YVtZTwsfBu%oxqfr|fWGeECmZvL z!_VyleE0pO**yM?b1T^om{I4D4e)dSW^?~D&aHSnF!;ONza~Gn&XC)l&ybrwxJ@J2 zb!hv{Z}vJC=X&TldWO^APUhKfVefyZPk&F^d0_hNxj#;L?_2nsDw5uoXV0~;_dXE& X*9}g@`yV6MC!yWWHG79<;D_`dLc;uC literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds new file mode 100644 index 0000000000000000000000000000000000000000..e5a6bc9c804604a6a5f762ab81c7f7692ea4085c GIT binary patch literal 241710 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

!W)AG$PTqfUK^mO)*SufvQG)lgC%=+vf zy-U8i@NW6$(Yvz0;8ywO(F^38-9P`V=N&aDzww3M+#JmPBOjM<&c8sudF12SpSM=N zdE_wp=DfAppZl(S^YeGeH|M^a{m`xyn zzwuG|)6KEjpLVZ&^PrREo73*i{(+0-H@+?ZKyz{S4|rL=IrVz^<^eBff68Y0<^hxB zn^QJt|I;JoH$Eu;)8@$R?|+wkbMlGu&HeAn{-pWx8{d#W$(*14iORPKt8d8{nP>lZ z*U2}BX5tsG$KPF-{SPO~Z+t@jhvvlWfAD~O^S7tVH$QkF`@dN(zj25B- z`R|#Fv%lkI`Q|UKmv8QPIr~4~EZ^KQNxu2>&DnoMSfdgU))M*Vzi!R`w%PI{nu}mZ~kb3eDn2Nv;WV7@*7`}|Ig-N_J8=eeDk#nW?CFvN*x%^!h2Grk{QBv6Wj~|(=C>}; z-0a@p(DTZEM)l3VEWb^e^EbQqH}t%+pHY4DKi;9a*}cD^=av18>YKOB=^eMn?)?ot z@0;akPkH?s%kKl>{J&{V&G%o~on=jX~dyZ1Nrygw^HdrH6Y{odSMmHTBsqx$Ae z-;!^3?{DaNWj~|(=AX{g+${6XpI_v4`jd(B8=sK>C+5WLm;H#^H~;<3^3Cr32|cgu zM^xXuZkpz1_x^;QckNjDjgR)`=Gc7xWj~_!%|AX_zS+G$q38Y4V)>14_vYr}+%NkP zwQpX1y?nEKe?reI`w`VQ|8SD#X7~Ptp7#eMTbjo#dxpZjG$qV~CMgA`TWa%MD3dwT_)e`-k;F(%6>%k%?n3qZkBm`{mOns z_06x}E#K_kpV0Hlenj=nO$#(PyZ0ybyp4nM8(-+n&5!x-?}o?ao9A61-z@WZ{bfI* zp1-+an0&L$qhIzTs&AfqhkUbpe?reI`w`VQ&zYmS*}XrZ=bb%Oe&aK}xj8kTf7y?y zeRJKp^3Cr32|e%3Rq`9(@6FAR`R{MpkEng~jBm*|%RIjRWj~_&=IJx#n`IvTwG-tx zJ|Tat`7!_fE&CC*Z=QC#e6xFhLeD#Ox%|c*y}7wOpMTkpsC{$w&GOAMkJn%JBdTwn zGEKf&=FvZCto+7D<)37J%zyvOenjn?t4@}0cJEKo5Be)i+m6l5ckJPw06kj+Ec{U~g`Y%>A+-QTyfzC(1Xw_b2qc_^nTIsXFrX7~Pto;Po;eDla*nww=F&%f+P z)V}%oJLH>X9{tbVB;TAnN4{C+(VsI_e&aLp=a^HoU-l#F`I|?aE8i^h*gt%g{Kog? zA8xM7e%X(xeRI~gX}N-|XI>(DTZEMD@)BCTVV#c|8A5kCfl| zp!`ppBeTE%UGmMzC(1X=JoYEem*4n?{7L5g?3ewBdi~~pSIalM_b2qcvL8`>bK*G7 z&F=jPJ+JIXRNtI%pXO$n$Lk-zRld3JlHPH9Ec58^Gh2S+EAsa-XJ>!!r{$aDE|YJT zdF+?{h~}nY?b`R_vH^WS0%svyNi z$v1~);uo*S?)?cp@571m8=vUS&58N^KX^dC`P1#qt~9 zmj9l)IQu(ZmT&&zdiiFV$9~z5sON9)m?YmU^XR`jQhwuu^4~Q_X20x5)V}$%6Xly_ z9{WF?FTe2(`9C%1XTR)6)V}%7)$+|UkNvVAQGN3#_=4J z{NXV9W|?>Td`<=LdkibrVDi2Pb2GjF!RKV~z6YPb*I2H*&dqTBbnxgm7O&3D;L|DZ zkJP@&`zFlIGLP4fN8iMwZziA4yz=^U{U-0b)br}G%wr#qzKKuYOg@u(KmVDi@BNJ|Kj*~^i4eGX7cIqz8QU!_s!~g^_bp2qk~7^#INVoWAf=7 zGEx1;C)7X0oY?*P(ZQqNSiCwngHNCL?YMrE_wAUQ>HRx8c=Sy?=4SHg@V+1Y#vSVO z{$KC$c>m$iZ!8{t{L1CsuOG+feM9;t?;A2V)BA@UACJC?$J|UlorAAZ-{gJAdR{%2 zdAxo+`X+uouO5?6hxaYH{>Deu=l#px6^UoO4ls&*vF%9;?Xse zPp7;;Tl*&O+cG!HJofSEn|Soi|xbV;_&ciAUE=KAlPP)o*-5ecpfWJs$gb^c#yuAHQ;b_xW>t-nZuUH+kQh zxtZR-=J7GW`9Y zJo+XceKYy=hpke-@qP9A_p9FH zv5!Z;v3T_HD?jG%|Lnc;`kU;%(lyimE62y9Z{jgGlTU}eS^6e>v&_x3KT8LXzKK`Q ztH8y{7l{pH@{@#~LAzp;4q@hiu6fBiWASMF8cWbc`|S>~~i zN8iMwYbKx0%Ejt8zODXBb8+tD(Qhmsef-Mc(`WCRufNIOHFLAfyJm@#G`8_pU&~~)o*-5{o~E~xsOM`v3T_HD}zs;y>(uHbJ^AEn`wWY9aS_^_%R?GdI)zJRLmxCLVJ$`E=O3r*E=< zU(c(@w0}YM!BBXhIN$J|Ul9e(bVuF21xGB?xDpVGmjYvM6ClV3ZJtG}Vg^Da=|Ec5vK zzp-39*WdVp`Wwx`+{dHeSUmdpmBFWfesSrWn--{VmU+B>Jo+XcT{HRg zH|x5+Zv}HR{r-yDDIR@%h{xPaKAkP|)opx3{VnFl{QU)wZe#K2<5vcM z_lLE&IHLR+W`7YLy`a38TjplkUmU(t-tb+0;xRXqPlvrlx{WWWf0P;i_ct9p`i;e_ zb2Iq#k9=Hxlf6aeW|?>1|8(%^n|RF4&K&S;??u&G5Pe_Tjcs1pHY8~8NPp| zgGaxycy(?DpZ@Ge)Hm5%WNwyuyna0TCLVn=`E=M@4N58Rn^zkdh z-+ws%VQ;B#vbV_GEc4jMqi^ETHIq+=y+y9yWPh=qSC46bkq#bx6Q8-6d^(3rRKM{F z^$#&8=Ih6!-&j2Q_?5w@|JeuBH)o!%zFFq+^~a-c;?XsePoKR-UjN1&>JOUBb03d> zWAW(YR|cQ{jMvpS*;{08mU+B>Jo+XcT{HP~4!%l#ll{edUOkq1?Bmfl@#&k%r!#%5 z`i+mOKiwRg`*`#li$@>7GWhhT-K)OI-Xe3e%;WXr(Kqqvn#rfb-Xiy38}^}Kpa`-^n& z=$rWUyn0MNoqdPYHz(YuzFFq+>yJm@#G`K}pZ@r*>YMB>*7NGI%wr#qzKKuYOg7GWhgIJ+8jV-Xe3e%;W2iN8iMwYbKx0o@>=N*M{BBPa3O!`_VMU97LPuD<=F1?=lEZ_ zSACPcMdoIi$37l?6OXQ$d^#%^tKayx`YX-FxsOM`v3T_HD}zs;y+!Unlf6aeX4+rm z_;~b9JmzNd>9Ds*-&`?CeKYMZ(!rx|;??u&G5Pe_TcqFkp!)1D_8yO4e?0n)#iNg3 zIkNlf$MKinrM`K>iRzkV9{YIoO+310^64KxU;V~6)MtOO_jv5%(Qhmsef-M#-RIBo zk9%HybJ^AEnq?mQc=Sy?x@Pj}FWscRdE7Yl%`%UDJo+XceKYy=mkg9H}RO8ALp~Th~N0WeD)VPPMLRJKj)9f`8O7?&duO+eD)UUo9oV1*G&71 zbnxh#c+Ab@(?5Hv`i;-1&;DZX@p%1s^c#yuAHQ;H_v^>;*WaYR$=)J!v&>^3kG_dV z*GzuxysJL@i+ml}TV!sg{l(fT9({a>$J|Ulov*D`*W55neY4Et_2bbs@#ve$r@!HG z_097xP~R-`*vF%9;?XygPk-Z}`i(EB&;DZX@z}?s-&j2Q_?3g*=g;xazg2y6(*kwP zGLL;c`X(M-Gx_v4m3xl+&SYIf4I(YO=JmzNd z>9e;;-(+u*xtaDCYp3}1@gW{_Gx>Bbo~?f4E9$eq*n2#_{&;j7i$@>7GW_?Sa)Mdd2GH{`c zjm4vnU)lNhpP`|j?_HkvPT~L4=M}eWZf<#}>wo_Y4ej{Da-BB}4gKPvKDW%$+`RmT zZl69reG{*qSC7f3f7xX98=q4DGIMh7ee;rA)Hg4FGxzc6n|O51TfVd=RO|&#^TY(uM9r@bHAg$`L&hmo9BKf z_wnePcy!I=(?4gS`i7GWhh*eo=jM{k7_wXTO;Hc=Sy?x@Pj} zue(Tn^Xv)go9iyheLVUm9(^pJfiueLVV&#iNg38GQO@+^N2K<}&ro zGw#fNJo+XcT{HRgPoJxP<7?`lZqChpJo=5rqmN%1eEMsjRp0#TmFk;opUr(d`X(M- zGx_vS+n~O=c8vPwX&Z7MkG_dV-%LLJQ$JAOTyu~5=BXd#J|2A&kG`3F`m1kK-#m4Z z`sV7}avzVriAUc|KK)Y;Rlo5i^-nPm&3!!jjm4vnUm1M*Cq1dYdGaOdn90CdeeYJ<1%zZriCLVn=`Se%5r@r}>Z>w*vd@uL$=$m--&E(Vn@;B8t zSI$%4{PH(*ACJC?N8e07{T0*IZ+uSu73TEZ$D`j^Jo@;R!KZ)X_tZDPv{8NY#P8)k z9(@y!u9}s`nUixLkA7qE=;K!gpZ>8Asc$Y_r@ndY zL%EMf-^8P9CZGP273w$cRDX%NBKPs=Hx`dRer53KFMd;f^NY8rZ!Uf__wnePcy!I= z)BnOX>YIyasBeDZn%u{uZ{pE6lTUxqc=a0}Q-6^;KKJqHHx`dRer53KFZ{0h<}qv3 zHy3_4_wnePcy!I=(?5Et`i7GWhh5dR2XM!Hw#hN4=W+c=Sy? zx@Pj}&)=fHdDIm3&G}n$ACJC?N8e07{Ub-K-}tclN1CH^ACG=x@#y1M2A}@tzoWi6 zZ>9R?=f9Ktc=Sy?x@Pj}&t0f~<2Lo@nhSFukA7qE=;K!gpZ=T|)i*zPt@`Gi7jqwv zzKKWIOg{Z1E>ho|GeLdxh>LO`kG_dV-%LLJ*~8UuykGs<=J4Fdqu*FO`uLT>r$6gX z_07YVsc+7@Gxzc6n|O51NkF<{$z7??&HyKEFOLQ%HY$V^p5)G{s&Gai{wGnk#Z2kA7qE=;K!gpZ-2?s&9_JMSXLhH*+74 zzKKWIOg{Z_*QjsqGedoI+%>t6N8iMwZziAq-s9D8d`$hl&GEU9N58Rn^zkc$PydtO zRo@)DMt$>>-_3nI`X(M-Gx_w#ELFd8yZU3yrMZtszp;4q@hgK*fAp*Bo1eH*eRK4y zxsONR#G`8_pZ;E3)Hg>@QQzEaOYY;*H}UA3$)`VRwEB$?t3S#do%?w78;eIDzcTpr zM}9|rbI+CPnF=>n{l;zT?_n;?eLVV&#iNg38GQP?zo@=B;#&31 z-CxXoJo+XcT{HRghhL<=x%&k5&EXg2J|2A&kG`3F`nwHRzwv(ccQc3QJ|6wX;?c*i z3_ksVJJmObEmPkdxHI?h=$m+S&2GPZ&vFiXljVDrz52Z3cFoQ1{mJ5epS{QOz1HP@ zZkeUI*}ea$4nBPoubx+r$)|tWWc3@LQvWh@a@Xsp4j%o+;?c*i3_ks`-&n8T{Kh)< z%`)%Yf93di^i4eGX7cG@x2n`i;e-k6#&l`enbdUcY(CE$W-y`;R(4 z9(@y!u9`?|;<6qu*FO`uLT> zr(gCP>-C!#tWn?W-hb5b@#vd)bj{?`-?UWy#_j5FGCRNjQ3sEHWAW(YR|cPc*>9}Z zZ=Qdn`eyh3qmGY9-^8P9CZGO!Thuod|3SrX6N@m z>fq6DEFOLQ%HY#4`;GPWH@~)0eY1Q2QOC!lZ{pE4lTZJgh3YqMQ~w;Z^ZOrl@aQ)d zk3N27@adQR#(Mqc`fJrUyZ0Y;d_4Ll9$ho}^w(XazIpZp_02Mm_a7d86OX=`eEMe% zSHJOo_0KXpzyDDOkA7qE=;K!gpMKeItgpX$<}&roGLP4fN8iMwYbKxm>2uX@d`9|U^VCJ^n`IuaACJC?N8e07{ZkHA zzwssYPcaY8eLVV&#iNg38GQODJ*mEV@+InYHUA z`*`$CJo;wx>92fGee)~dR^Kf1*vF%9;?XygPrvLp*6TM{&Qss)-hWgFkG_dV-%LLJ z71Pykd`|rp=Jb61c=Q{KM<2g3`1H$uW4(U!OB>ZUyZ0Y;d_4Ll9$ho}^iNo=e&dJg zpJ1-e*N;cPv3T_HD}ztJ>^IiyH<#b8zS+J1sN>_&H}UA2$){iT8*AS@ewO-X_x__g zc=Sy?`eyR!A2(V3#;4Rj&YYZIe?0n)#iNg38GQQ3KBT_6be;NUna4l>c=Sy?x@Pj} zFIk~}<4*OLm@9H0kA7qE=;K!gpMKeItY3fgi?^t6cJDvx_;~b9Ji2D`>6iV++BX-^ zP~Ys{e^dvLzKKWQOg{ZZq_040}sBe~ey#Mg% zn|O519QX z_x_`fk4N9cqiZIg{@jJ?H*QmZuDLK@KOX(Y;?c*i3_kriFRE{T?ppQDGLQEk9(@y! zu9~Z+uPt!_2w)`tj&D7LPuDW$@`A@~ryip;xMJmU;a8 zU-ld8 z{bvp?Qr|4|*vF%9;?XygPk+Xt>Nmcm{tWZb+{dHeSUmdpmBFV!{YmxBgD+9vEc1B% zc=Sy?x@Pj}A9SYr=JXNjn`IvRc=Sy?`eyR!ANZd7=Cp6CZU-ld8 z{bwFHPkpm{|4|)0`X(NIGx_unn67@~bLt;pPS4kmN58Rn^zkc$PrvLp*6TN?Y*gRu z-hb5b@#vd)bj{?`pS)WA#t+q>Y_87Nk4L|;c=YirgHM0bJL;SJ->$w{=JEc+qi^ET zHIq+&zZ=vyC(TmdEc4jMqi^ETH6iV+djFZ9 zTBp9*z5l4=>BmW?)^s{ACJC?N7qa~{V_|`Z``i_7;|a9emwe(#iNg38GQPqUsd1y#Et5k zWgfr&c=Sy?x@Pj}m;J{2`kSMtsBd=fKdOUA-^8PDCZGPO(dsuoto|r-biRH(`i;e- zk6#&l`enbdUcb5LO7+d|{YM=ikG_dV*GxYBJr=6pxJ~^%%!T>-@#r@ek3N27@agaV zqWb2DYt=W)Jl=nJ^i4dvX7cHm{l@zGo4Zd?-|XIhR0of~iAUc|KKtKWFP`n#FK z^Y!D=Z!8{t{L0|dAGlL}bJ#NV%`%U#KOTJ(kFJ^g@n!Fl{mFgL>yy1n=4RTToKS!7 zWchFZ-)sL7Zkbj7=Q1}hzoGm5>6FK7-^8ou)noGMu=hx}@hSD$f9yTp`TEhp~~iN8iMwZziA4r7P5L+^IhMkG;oZACG=x@#y1MhVP#^ zK6{V6{w8~m%+0j_$no*$n|RF4l|40XqzKK`QtHJk1dHnk0(KqqxdG(ll z`Wr^8-}tcl>_7G%k9|D)jm4vnUm3oC;`r=6^7@_7G%k9|D)jm4vnUm3oC;`nFWslLhHBXhINV;_&ciAUE= zKAqF&s^9pU`s_dU9*=!I`i;e-k6$^r`}{dRdym}zCVP*}&9wi>@$u-Jc+Ab@(>ZN} z`sUg(>YHUAuOE-TiC537$K=yz?~&^_*W9DNnf4#);L$hnn48I`zxp=yP4*t^dG%Q4 z@%r)ToA~v-dQ3i@Qw~+X@g?=yf9yRT`*`#li$@>7^3d+{=lCZ*slLhHBXhINV;_&c ziAUE=KAlx(s&Ae&LVdH$V;_&ciAUc|KK+&Nsc*9P$lNUR*vF%9;?XygPlvrn?thcL z$9i5pru|1cc=Szt=4SHgteCET<8$h>|JZvxUOyiF#^TY(ubkff`f+^r9=U##y+`I| z+JEHuc=Sy?=4SHgoUmH`#t+qJ|FQRYyna0Tjm4vnU%5J8KYNc{zscSsT{G=Ja(q1c zCLVJ$`E=NOq;DQSOMNr#KhnXYZ{pSS>M{BBkDIK1<5TJ%XNJGO)4`+PSiCwngHQk1 zhtxOOdt`2wdHnk0(Kqqvo5`oMWQF>TJJo0ZvG;iF9X4-$GgGb-QV{Rs&K6{V!8y{1DkvTqJKOX(Y;?c*i z3_ksZ-&Nl{W{vu0na9^3kG_dV*GxYBqnE1RxLtkrAA66-J|6wX;?c*iT-ts99RH|S z)i>FDWNwyu?Bmfl@#vb#r^DVOUw@Om$9i5pru|1cc=Szt=4SHg964J3#)s8s|FQRY zyna0Tjm4vnUpcz__2c;LJ#zi#yp`&jY5$SqYLL?sBe~e?Bmfl@#ve$r+?sk z>YMC6GB?XS_VMVOc=XNW(_!zCufNIOV?D1P)BYnJJo+X+b2IsL*n6bk_?-F&nA7w1 zhN8iM!Zzi7(dyl;SjZdl1 z{$ua)*vF&aSUmdpm6N;ApW{z>NPUyNN9Jak$37l?6OXQ$d^-ECP``1f`s_dU9*=!I z`i;e-k6*c>`}{fnK5wdTj=x1+v&>^3kG_dV*GxYBao4DCviDfetH&~reLVUmK7BL! zboL&ve&b{6v;Ww8JofSEHx`dRe&zV?^XK^NJ#zn>>^(9!)BYpJ$D?oJF*lP>XUtOd z8@H=J#$4Kc{&eu@Hx{qX&EV4?{i^yVdymY`GLNr69(@y!zL|VF>^<`Oo9sQ-^Xf6} zKhnXYZ{jmIlTU}eNBWHqtIz&p@9}v3c=Q{KM<2g(bocAW@kf3~eRI#1>Y8O9`*`$C zJi2D`>9hC9^*3%)pZ&+)Msx!JuxS-c;x|2Q&)ufq_>}s5{^eLVV&#iNg3Il0^C_?sV6-{f<*nVXwCzkky4 z@#vd)bj{?`xpam4jXTxn^SAYQ_xaPoqu*G(IyXDNf70>!+-+Welh56zYj*EHs)I-0 z#G`K}pAMh9P2aqDM(@0O?B0J=2ampqPv1;F{R_vd-}spNeEzl`&#ylo{l?iBr{O+310^66|^s(#~k^*5PI^Y!D=Z!8{t{L0|d=X1BY zev{ALW^Q)xKkE2+^i4dvX7cHrw?%z(;}rGH^S0#c$D?oJ(KnM%f5T|?8y{Am&)?SL zxsOM`v3T_HD?7h`(((D+ZC-zq&)ueLcJDvx_;~b9Ji2D`>F~MR^c%OS&*yLJ@qGPw z^c#yuAHTBm`zIa$>=)HH`P^-~=GmR!Kk4{*^i4dvX7cH*yGVWW>T%sg`TFtb zoA~t2+#&jqu*FO`uLTd-#_X2XWXg2$>(m$LDjmx&KW*cbmD{z5l4=Ko89}5>fq5g@#ve$r@#6(^-Vr^ zyPj8%t8dHKk4N9cr*9^o&MAkg-}sXHeEzl`&wV`ljm4vnUwLS^&++-(ZC-zq&)sHj zcJDvx_;~b9Ji2D`>8v_aeeYJ<1>^^@wc=Sy?=4SHguY6B^lh55|ZmxVU_wneP zc=XNW)8TWsdHqd3ce|cfkKOx^>fq5g@#&k%r?X_4)j5J>Gr(bnxgm7O&3D)!jbF z=X1BYev{ALW^Q)xKdOUA-^8PDCZ7(UyG`FbewO-X_x__gc=Sy?`eyR!A2(V3#;4Rj z&J2Hlr-Mhov3PZE2A}@152+#&j zqu*FO`uLR}^Y{P7Z>n$dx!ZKj#c$?59(@y!u9O+5N$ z^6B%r+w>bBQ-6^;K3_i`{l?(>Zdq`i&2(&*yLJ@$T1;4j%o+;?=o1y4&aYeC{^aZ_Zn(uGzi+ zs16=|6OX=`eEM@2s^7RxeLjC%k9VIx9X$Gt#jA63VYkom=e(%C$>(k}H@o*A)xo20 z;?XygPv?k>)HnIu?Rs84cJDu`gGb-Qr*9^o&g|jpH{P%QY;$<`>qiHVeq-_K+zdW_ zK6jh@&*XErnVa4FkLuvjH}UA3$*05TZqsjkP5r~nx%v9>=rKlp+ACZD^_+#LKMzy5gi zO+5N$^67l$HucTHMe3WMxh?nc=$m--&E(VPbGNzw8edX>h8h0;P6v;EWAWfq5g@#ve$r+?sk>YLNPt-g8S zd->~+N8iMwZzi8UpS#W1-{f<*>v{Fqz5l2V9(@y^zL|VFeC{^=#^=;Oz?`11ACG=x z@#y1M2A@8kyG`GmvQd4rd;d|#$D?oJ(KVA#pU>T<-}s^Wlg-un`tj&D7LPuDW$@`w zdPjY8|J&6!C%u#Vc=Sy?x@Pj}?{|axCZD@q&#TAo{YQ21=$rWT&E(VJbGLc@8=q32 z&)?SL`TFtbHx`dRe&xsf{eQwk>YIG-HeGYVL%EMf-^8P9CZEo}E7Wh?sXm{-t;cg8 zkA7qE=;K$e==M4OK5wdTj=x1+vwQzh$H${@;?XsePk-Ds>YIG-c0I2iyZ0Z}!J}{D z(>Ie(XYcXqH$J95pTDigyI(&#c=Q{KSLf#VZlB}xx!c_TCZD^_-0a?eR0of~iAUc| zKAka3)oZ)ZC-zq z&)u%))noVmqdIu>O?>)h^6Buo+w>bBR-ez`*5mp0$D`j^Jo@;Rqq}{MKk_^3n|rQQ z*BtqsZlB}h(Kqp!o5`oo=WcWTjoZ}c^SAYQ?&HyKEFOLQ%8&W`|L!lUZ;rTDU9)@t zQOC!lZ{pE4lh5_>x!YX7$>(k}H@o*A)xo20;?XygPiME`>Nno6{%+>*{QBe3Z!8{t z{L0|dAGlL}bJ#NV&5zrE#G`NG(KVC*+dm!}dheQ{p$|XP=Pzdr4KX+0yQcg4Km3`z z-~Dx;c+Ab@51oTo&V8>w@tB+4e(`=FZ&2Al#->qIp`I^=9 zE-Z8W-s7GA@c&Ex?!D`Pc+Aao{v$pse?;#(ARcow`Fs2q`6GMR0r8ld$=~x6^7rgr z2gGA;CV$kwlfPH*Iv^f%v)k|8XWMoE{j$fMTQxU-xjo;1c-(&`9`~P_{Cb~l*Zo(X zSMNhS=4Q9wyU&VO@4Fs%Zq?jOe!b6%SMR$X@tB**ulHH;>V4NE9&c5NzUvW>xtaWWpB1m(cRk`UH@kh^XTMsn`_J4pN^|p9 z>+}7G$NgvGasQdg=RPZs*Za=IV{Uf)y3g>q|IA&ZG&hsaeTK*VXW}t8lh1vI$NgvG zF*lRXeTK*VXW}t8lh1vI$NgvGF*lRXeTK*VXW}t8lh1vI$NgvGF*pAw|JZ>&KDpb# zVFQQlU4HIj_|mc`I=QgiyNyrv=H~DJ{r&g+-OIg>H)6?0SiCwngFj)v@^cd9d?)

(Kol0*OR$f<{$m<@Bh-rqi^ET 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap.gds new file mode 100644 index 0000000000000000000000000000000000000000..d7e76442072cfd6ff2208be68feb792e17c62a2d GIT binary patch literal 120174 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 DJYInP literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds new file mode 100644 index 0000000000000000000000000000000000000000..460d362f9c15b0d23fbf23e4038a18cd0a362d90 GIT binary patch literal 241526 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 IWAfnt1q5P5+W-In literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..5b133cac1a5320c39803ca58f486bca65ac7fe77 GIT binary patch literal 17836 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..7aa37b834bfa7b979115f232d5c3480f4361c93d GIT binary patch literal 23148 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..b46ca3601fb6be31430ee96898ca2d27b8f1e5d0 GIT binary patch literal 29906 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..5b0f9c8186ff76e07d69950b5d668ccd4477071a GIT binary patch literal 31640 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..bee7bcbfe9df1cf723b9252d7337768a64c0a3e4 GIT binary patch literal 42882 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 E2G?n#%K!iX literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..75b3cbdee8e3aa34405e755926b1a63d85ad7881 GIT binary patch literal 16910 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..35fc5aab506c2fa1c8895e5ffb23746c415dd8a2 GIT binary patch literal 30588 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..7048b1a470042f6a8b66ac946ada294865ae8633 GIT binary patch literal 41216 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 JzhlQX{~y4U+GPL$ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..9cd4349cc10f69f1d4e92144eaa068a9fba3790c GIT binary patch literal 68622 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 I4b+j!e{VA(`2YX_ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..bda29caeef101ce011cadc00a5c7764ab90f43db GIT binary patch literal 5178 zcmbW5PiS0K6vof{GcU;)HNt497F6u2#5$9-*ep@4NSY^WK}uyXj;?_`jn8=L+9=6Zi){pHvC-QMd*`xj1j=bxS5 z=yp$cH+o0RI$7)Z(v`9v*(j$#hs}wT5(ruGd4Gq z!S1Hn)C~09iY|n>bjI>~%<^f^pRnRS^2KaoEi3Nlx~Cs#EiSmvVVmZ>=?y%5)7txr z)iX;^Jq?;O1P7R*bdbJa*1BevT_|<(AsNgN^$oDq6uUK0;cVZ9xjqUCKwzvalpE-YK zCCm_Zz^@>j0lSVTSFn03b^8@F#-$h^t$@zZCvf@%w)a4(?LN*B;!=z|e#)OApTA?1 zcjK(s@78f=v4AmBdHy8#&!@lo`Kh+u{Ji|+SN-$()zZ(s z1OEq8>x8q8`LI)?^$91Gb-3O7g#B5mp3vkc@RxC--Y&KM2&{;S`*UOCvmewm$d% zrNwjJzZCJt`q3vj`j?VpTpHu)lN^0Z$uTaC@${dsdH)0b$NSHvYjOYN=zpN#=%2jP z2v48n=zpN#TwJ;f&v%ZzG`r$?DdN%klcRqrIr^5yc-D^`&##mm}r91MW|L{5c)ALgHS;nP^kNOWh*N=Yb>Mte7 zxK#bL*1vQ^WBuf~eknPwUn)NISM;xFfA#%M{q;liwFlwnP^s-pSTEvIjJx&iY5vfE zhx=!w|Mp$~mcKXQ>kjx^F17t0{2?yIc(wk^)&9@AvHxekl2x z^Xfle;k_?Vzob;x7ZI0Ye6;@rKD&r_ZQk<({Q~u1Tsj};C*SeBlzzxd5g#kRI4OKJ z@(I>S-|5+k!ncb{cj4)qyp(y#OJn|b$}dhT|KWbZ{texK-$d3o#{C!W=NGH@lRX;h z@?@#JuNarg-%fn;gXglpN+rj*G{$Fdd9L+QspJ@!#(4YDbJhJN$G9}cr>}aR?+2dq z?+JLu$%pak`C6*h&v7_Mtv2|eJSU7x5pU%69%&wNjFS)Jjl5eo@@gJ&)$?Vs-yOyHD$SsZ+SK_>tmI j$A|C0z~dVneESvq4vhcbO&#DjILqfxpYr?!=E?1U;YIp? literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..ab46016e0b275d3d7ac8fa8d5e8ccfe2b0d65605 GIT binary patch literal 6502 zcmbuEONbm*6ozkAch|gn#wcSXnh*sg5XLx@M2wpxGkKv21~LhOh&F*FAc@YH_#hyt z8=nLe+^8FOZrq5XZj3uoaG@@Qh%a1-AU?pA8^`nAd;hAg?&&*ZoDlxWsrv5uB| zZf0EJa@TO{v)t`>nf>7_t9`#EFD{(DIJ0fKbLLcM@qDLq{!C}_%<0EE(=$)(=$za? zz4iFE#p&ro(~C2AIyc#9?VNq_u7jVx{ny=lKf2?sH%}aO>syJ{i>q0^*>B6*pwA<%%2e-M*={>kI$&rE9Nm&7JVISbR;xx!nF1Q|`KT#ls7yPM_;Me&KXy z;gNF}UGrM!R=sNDU0e0uL8}f2ue)6_k-If+3Ln{%X6SFzmn$7#8{$&C-tB6iuXRmt zt-H7RukEqEZ=DmKv;M~Xy&NWU}+O`{sOYM3;KN%`m z1;5wlpNjlzmiK$hzq!)U3zpyFQoG)rzmFf=5cpEx3;dXLL#>0x+iqF0gG)>QUZI2Y zhmRfEvu_nE*mE8Kzzwe}4$K~ne0&0-g186VWy`e3*~YDOX~A}@#ie$=zXRGsZ&;q& z?D5`O>BIrsLl&3Xb7ZpQl`me`$)xCmjBzaK5gnDITBAjlqAZp9lX<>Bh8wIQ*At9RA_G zCU|_p;lEVld|bK$pMMy5DbosGYVlX^JOLb~xlO^`DSG zlO7)IpFD8nFV#37mnL}n1V{f%HO|MS37$M7pM?C<(T75Qsl}81hok>eIQk+@@%V(p zzZ8zRG{xh8Y*X-G>Q}-4m~>OxKOFu`H4gvqUK2b%;qYIoaXv0xj*s(>``mAVmole` zOD*2t|H$Ld=Ck)Ng(EK2{Ep|7Fu!!dv;M)c|D+RwY)wqP2{J4%x(H7)!di%%VuuXYwf_k9NzHfv z^XckO`&{TxsXe^K2lC7HhrGn4sr>#v%THg)@3n_d<)?n~h(rCk$>LJG-tGUv?(>bi zJ?@KLm9idjX^;OJpRot6|Bc@(g(EIa@r|bg*Lt;5IO5V2@4gOP_x^?>E=}?Iqk*Sy z)S*5ShmY60`!`$bpS=U+dlcU%o+B}-eLtATf8?Z|!$0eU>jQc3+xXUKSOjU%qzFU5+BaS#e;`M>NK8Li9IKQurkJktC@_iNc@2)*RYa3s!%axAb x9KM&@zkL3-9l7lH4aVC~knJ}O_1`zte+HjDYv=VLe*Qam?9jo$57|0R_a7A`nb!aS literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..d5caeab8f6e12234319f8fc1647c3d08a98862b0 GIT binary patch literal 8614 zcmbW7U5Hgx7>3vRopBm+0>Z$Ine|nCu)o+Btou(>ZgjbNblKvz^JQ=Qnqb?3-Nw z_@>j7llv!6Pi+ceywTdW^R@dP{_3Oa_wV`q-VfhDd@!tNIcIOr=j_el5ZVjtVOMA` zt%vE*zM~dep?xR0hnKgue-mHdh2a&gU5DdbtUl5Rp>BVN4u`R2?USdD&Yb8xcXp<8 z>gf~bLUS~P|9#fRCwA7e{mwd=vhE1&MfETeCdg4cV@q_&_-cXIvbuOFrONzH^v5&* z1@peP$h*2+`hfXX7wveQRp#$4`t>J682vbe#*r?^@3Hl&sY^;+-P5MLX!>w6`HvA@F5vi6<>J0E(~ z7KrOwT7m2e%x49%-DWFr3kj~?y!r115==jK=)ms1r8(T%8EjpaoC$-=+7IqLnEBZZ z(ly9t5H8wC%Y$wFE^n^1-EMW!ju%&;(l(Lz{~b;>SFo&l>G2>^7tOXc_Ph= zbemwGvc;pv7Kjt)_{P+-$y6E}j9GFh|bK3WYSQn@L{CMQgX&(6p zM8_v59=UUx7we+qlXLKklwVvhlk$sJch?_}{30ItMb9TE9{EK)>Z0e9e`r<8pYz+4 ze@I;A=f@*|PV>l*AL;ny#3O%B^I~0eeDdG+M#?V^Z%X+^tGnxuM}85H+@j}`6Oa5N z9(B?4$v^ye$}cXwkn)RGck|&&n5Amprp3gYsW?Yfn)I~2p^Bi51=AZLQn*XS{#-BeP85%-`JMC#_t817wh6|e%7C|PS)?n^%G;?Y;{rnaMs_Z{wwpDCm!<` z@u-WQ&pP9={vsZA(et%_)%nl1eoL$+vd{CD{}%dd_3v+54$IP9*X7c?Ew9x@J0ADf zEuPXJiN2fl%XvAiAN@P)X!YX$E%{tOym|EhC7*T1XZ>^9xUnuede$E3K zm%8YUPyW1bo(^#z4ctikCTF>SE{)GRYGLN&0?j0 z?#Yiwei4uSqUVznkNhGYbaO^v|X7$%#jP5s$j)`Q*eSzlcX&^nCKGZx+=zi3@6j z!LG0In{TH>N~|s|5+NJoOt9H@u-WQPfk4Yi+I#U&nLh7eo=kDSn2X*!R@x`r=U+J-_yS@*974iAP=Z{KkvPYrWMa9(B?4!`kH4w|9w0U99*!i|ZHf z3)@Fc)-PjqzgIq=mVDhu`FXfcZNFvrh3>QB{x132$8mq#_}Zu0zSKVN>&NS-`yeCZ z$Lp8T%dc@Y59L;l?0DbtHSg9?T0c0S^<&NXt98)4sl|Du~b|m`Q6J(peJwdkLR4D(x aLirgs&+x~8;`#5cL;D|2{(zmQ8U6!Xv3)@R literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..09d6c83b1b1b00a22bedd4e9f2e05dfc97e85843 GIT binary patch literal 6986 zcmbuEO=w+37>4Kk=BCD4G5%Bo?n}_5jWh~M(xmYxp@Eoc74=flxDYW$5wxI)U9>Bg zwG=@_RIG}MqJnNjx^v@3LS3pG7q*}aMH}CDX5M?wx#ylqZj6g3esi8P-+VLYJ2$r` zH?c{~NEDkn6X8GpM3vufit}fmd|`awSbOEM_Uc-@y|&U`U3vVu_SpFIlkKB(V-xp} ztxirXjIEB}V$5)o-7$S~|NOakFWfr&<;`!Nd2rc`WP!Wq{oFlm8IxZgn<D_FsM%rIAM^PO;cBomeS4%+pO`h5R{Gm7iJDe({F%eXii z_T#UeFDA#GFCt!EZ)N`Yw3|0MS|aAPaWODIuj9P*Mb68(*mHirU;WhEpBI<^_V>H$ zW3Qv@P`~p9lh;u{o&isc*XyVJk2x=Sxgfn5ak0yvE$@H)DX#qx*WOhynZfUfix@A@ zU-9#u&dc8}NRM%GGe3F?*TWZMoL_riPsAJNXP)$!zewM%%TvDZ7|4GM9pmiA#-(+3 zjC&UkFU=fu8T56B@34z=rnNi2b9&kP{sg%Ss^_88us;nPDahTA5En6CuYmW>Psnt} znAVF0H=aiKKwQMQ^?k>1^ZSlresvwAHGnF9g8K~E`)qoBde&W^vQk^Pf3)bXj~2t% zqZ`={X4i$zY1g&hoPU)1j`y#-e+-(9&9BcNaMzQ%zOq053FAI&b$_nL!Nofb_1(jc z?A|@76V5?>|I|Ua*H=Mg2k=bZ@EyPt@kXCdIz8I~Jn7pG;MwKRlska=8$R|X;u9$T zg_`BR_<8EQ{G$@#*|-?+2lxbI-qu4U!n1KP;K%PdFIg%Po{ftEKfTX+8J5gE zEaBO>81Oky`~~Wd`9=FSLR>_=ynnU&(PRBYdaR!q@>wT(te;4aaWUj`o%FbFksjk> z$mcns$MYl7V_XdR`5NZBhxBMe>nE}g+xmHS^(S|Jyw826$Nd-S+x_|i}dXI_YC=Q3%Q=cdJh%Me#88Tix{`($Mc`JXp6q*!i(UP%;F)sG> z_57ZP_Y$7pV+GlFBE&_E*PmbS=f7Z~d!64Q-eEQ_?hX6NKh77K4}B5wzUG%FBCke2 z+wbzvzAq7Z+qk%i&%Ei2oR_{B%D>nA^2AX7$w`-YdSi*m+s4H}{=ANP(-%1}<6zFrvk@GSxhVt(5nJ;ue5&mPSA*`GyvjEi0V zbou;P56@BSIDAh&Cya}Tm-}PYKV5hgA93ru@kZa)4fB@!DZO&P3C(Zo*ULx!?0s0@ zK>m6UsSa8<y?>htLD^!<3FuRg3gXx-|&e!S6FAGGHe^Q+IP@A>gY z-=2SXx{o}@nZF-z_J45euK9>t-;Fo=%3F2Ny0s2J-sr1toqh0iR~`L$qi>%(tY7Cq z``+0{x37)9&P^ZB&s6#OL-p*>;AFw{WB0p=|FiS^?`PrT8{RDZZ$i;4kWTUY*#n0c M=ADnPK-1Lx2Oebhv;Y7A literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..2c8d2debd953a34b290749d9ba8a959f2b44dbd2 GIT binary patch literal 8482 zcmc(kO^97*8OPuIan7Ac)L14;YCznUSZA8FCMs<{rU^Agp-CxJ>$T8i)7Hea3Z;UZ zBKXnbLUd82u5_me6?9QIg}6usb)f_cDOL(CDg_Y~wDJFY-uHjcxp(Hi(}aQ(hF|76 z=XajxJnz>{CbempMrrS0n2x7`{_r)J`}@tq_OXYbSl_=kJ^Rq~{DtZC!rAHhvu7Tk zuC0IN;Pk=cYX|OIKY!c7yVuUI-fH$Haq;*Z}vwDF6N{_xrRPp7?2<>~FU zJbk<~rS{#!bTqZ^AEr~O{lFkKslAc9cYd(BCU!N#6ZVKebWi;}h@nQztj*sRx%mbtU)p zaBAN(OuN#)=-GEtnp{%ve$wOL^)qqv(p(3R$GGfT9GAoU_U3io_6D& zBX@mTWibY&0zILtVEFNrnm_99S2|8UoDy+U*TdhD-yr*|Y303)`lr$=Z^HfUSMzhk z&G}aI8*|_ILz*d1b#xw6*O&Uu_p(R5JO|Levu`TiuYb;uUMqk5T+Sa<-iVu({M<)gJd?b{%`Nj^fB$p+#lPd7^D%U?Xem8Y&za?LBQ`h_X=ltf) z?6qI-h)3Mq&L96=_sTb$li4>FUz(pf@u=U#BW~K?sWjTjRlj!f?RJbGrL^))TG`W{ zICA>Vod25qr>|ap>oPmesn6Vd&$04^vg70qmOU^1N_T4Yt$eQI)pIEkH+6k;2fSx$ zv?u@7H#=0}4($X3#ZAS-FFRJwUv{kYTHdiHud6*evnH=c9oybNemdVj=1og|wdW7k z^ZkSM`u&4_xt{3D<fED`ub-U=D9pO^Ta}FZG+(ve)X2#D{pq&6+>a zO2J#Xy(1oRv*r)KnZ410j(Eh)ny*g?k$?Q>j(Eh)njd-op&dZ^hlQgbD{Zt(p(%-nV*u zRX-Cq4^{g2*X;30jOPU9jftBTpHJR+`&Nbd>7~ER^$6NpFfTB-=8o3 zpt>*Vd!yry6RKZvQ`h_ZhyE`@|6(owf@7X=eqY1qhfTiE4b$g_xp02W`HVC98GqB~ zzPWIIZ}Q2DZ<3einzj7Q6Y?^DO!5*pYx(0o<;N#KBrkEZmY;Qk$NDkxh@0E_)QxXa zcRaVSRzK^XysUqdyu{5~e(obLzDfRgZsB(MIXCf5&P{xC;ryH%f8G<1_c!r~n>C+t z!eiV_JmO}}XP)6P|4cmMX3b~);j#WqJmO}}k3PMa`^Wi7A2~OPn+xaXrvBm4KNFAs znKeK9B%l7_Lp9D z@1Ob>pBuj2qdfW^0AJ#3OFj{HD}D zxhwk+kGNU$+dpM*rPL4ch?_M({XYBs`GrT^tog$)Wxv0^@Q9l=pWmwJdh8D-9&xkg zH^0d~`y#&gN8uI)6u|KhIvHv|kH~;2*@8gkQe&m-|_T^yB zkN$fd7m_#nUs&^FeaegRE5wiWSy=O<|MF&iDDNHpmtU?g?O*I~@?-o9$shY$VJ*L| zMc@4%uA6xDAzxpb-|y`@oVUN<)$+UUP4C~^?`yutedTO^4@ljf2j%+G`X^6z9`8K! z6_4lS>r4Ircm46XKy`Z^c;3&}QC?U5`VaTlpWZ&ccHG!;@~`}NQ$K}YenTW*zhP?X Zzmpz3r~X~xH%v$Gz58VLCwk5}{SWpPfUy7o literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..f492228ada659013737afa4d5374ed3c1af9867a GIT binary patch literal 8778 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 SCyeg6|DL;(Z?7riad-<+GBzs! literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..031c6714da33e707a7642b58b90b126b2d410560 GIT binary patch literal 13898 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..aa1552eed5ca754b225fcf4991289401296a7b81 GIT binary patch literal 9642 zcmbuFU8o(^7036PIWyB8~p9&QOUwlwPeDI|r_+SKmP^#(wzxV#1z30rCb#tya$p5nT z{AR7S_nNil+@q^q;YzouSGYZ{hkyL(HGaRasDF3wgIl&OtsK5<<;eXjEB7B>Idb?{ zzh7C}@`p=SZr`)?)0>u#T(bS@r6XG|c5Xvi{bKpi9ee-t!pWcQe)FPdpFVVh+f*5M zujjdYf9PC&M&Wk4`pm+ubDP(d2>0*K^^Zc|$@KYXmmYQf^;ljE{2o{Th@Qyl?%0bL9nYys_TBfBDL5K=TeU0^A`*P#kowc+9!+p`_(;{0_Sm z>ur8R$Y8V%{yz-7lpO6+*gJXpAy+<^RDPuvUmXiv{asRWv`fX0COe4yH@M*scmh|s z4csxG@Ai;KxxEqZWq!Xl$9%5?vl-WI%=Am-OS^P)H(xvzxbpT)!FjvX;H$3!SN|(h zaNaI8c={>c#@@icwET1MFNHlnuU7u#n7@=9^OssY<0QxUrQ~Rr&g5ggRj8HT+2Btk zE&m3dH53)=?f4^KJQTR{k4eeVF17eI)O*-J`9GNITy?KHm#SXl^V;C&srOm@Xj{m8 zydx>|rd>Lf|L#Wp--Eq+1?P`6q~$K~uuEaj_rJl{X9liD=Oa%gN4wPGi+={Lydo(% z+NBoHID7Yn_@xD&f7+$6cg9aYn%6*JUAtx$f{6JVkrlaASS>@(q!X6%+Kzk zy!!}|?s9J7gQTZ^gK~mhiuE?HCuk1;Kg7mj<|6(J*zv<`yxHgJ?;j^Z$S+O=_eq!t z3wPp_|A9E~^l`3w{csSj9}ev6F+Kdm@%wN*?!)nruN6=KrEvfLORLzVLeL>0DoY8?L8X*K0p}`@;3TeJTD%eZ}+j9qKI97duqc@|oD7qQdUa zW7hfd9I9)L`r!n?ef%YMxH_un!Bqc|?)Z!hu;tlKpI*^oa1GGzF@ATil5iHKK0y5FB5ex0o zeKt?O_7##@u}+(xiVt@9h67r5cONy*VJoylu{v+w;C@w1Obtv*98uuEaj z`#bvI?D;*!V~6=3`eVF5p99Pz|9nU}*L;7As(CewXC0AaeM$X$0P7QcTyOVB<@aLX z_XO5WE;REuXFl4E^J$@}_@YVqvjUO&RjsCad=eN%H8t{L@{@#_eLcRs;Qmp6x zFKx_!oGYFWH#nG-&kfI8I`#ZC_%-zZ7SFyh$NX>bYnZ<+p8n^Ue+}NxY4qPY=68#y z|2gJ&gJ&I+pX2?d#dChl@&44{`AL)YQ{wrQvTkUXTJ_Vf1J{2oDLLAu7GE6-9M6IN zspM#vTKpR3cO!rHG49_S^Sj0K{N|XS4W99npX2?d!LyH&pJV>F_&MJ{8vF?L%X8y+ zkn-GUms;mHECM%tIVm~Xr8D{1KYJ(Ocq{hcw@LdC<4j?fV!hozGrs&^;HBcEu$%m} ze|IeSpQz!#d^E(}|4CB%rCn;p&+8aBd8s(575^;%jN99#M*P)|5O?)nQu?J`YQ@j% z7&m#TIH?u?EdPw(+oeYQ^?yU$gNKsRFYQt*eqP78$xFpat@vm8XZ+qSHR2yW5#k=5 zpOk)Sms;`jI>t?2Do$#}Kg&Pk_jaif|9CmXJ^nB${n9SA;^%dYo4iz<)QW$Wf5z|a z(ineye?n{R%FiY2Pg2-B`wKtE=yQ!!pKGL3pKluR&3J#k zHGltfd&9mLw^mtwt>_vZ#KpSR>_ms-3(H}LtqBbUDqSiCM*+-q#KIyx-G*J`XMa z`}+6KC;YeS2hT6#i0hs8BTjXsx}lwXT<_#ncd8@R4ejLPdM7`rJHG!Rk4fF^2z*@c zWpz0X_zeSd?0?St~Bo&Mu`r+@8xi_hL?r~L11^gpD{pT#GW@^1nBk@DB| k_%D8c3?AP=SN8vN)WhFP@m_=Pk1suN_1?e_VCuX71BpKEr~m)} literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..060ab5492973c9dba4677e46d14407b1f30ce03b GIT binary patch literal 11242 zcmcJVU5H&*7037eIOpCwGirs25-o@bf+gyV=|@sa&3CB@R{DXc)Uic_Si~4>K`QuC zgj!leib{*7dQ8BY@PnZ)|s&tojc$!lEnqfMW>emj_RcYT>@#|9>uVw#4s^5TLzj2VN zRKJOSuf4fCwBP?+o7Q-5{bBoiHm&TfkKKOw)(@D?8%hQChNgnyjVV*&Gz(>fV>zW!2vk8x+d_1xp?8&=3$?AhNpBoA@X+IxNS;Ex_^ zs5-^SpZ+y_^q2QQJmO-L(8#`9(b9V&v0LJo+!<5f_*GW&X_e znD=q}-1atPE)f^4eP{hwKL2w6i+=_4Z^6If`KSDM=YEgwX-L0^78k?*Kb^h$nTB|k z#l?<)tUdo{r|j9k+j#$>Vf~2xY;n=r+vC6BSFdER{z^kU;$q|vAJ5+Cnud79#mJ}5 z@lSL8Vs$dtFIv2}e)8avU&Qme3L~F>;?aK*-^Zm;{+c~zCx(sRCG7a0vOVmvG~HX@ za`?{Ux&F)YZ@YN$zZW<$?zru)+mDtvloKO=g5}Ig&)So=`d6Q7c=59-5f`m}=Li;m z_;%ZA|6?oogAHf46B8G$-TgiD5x9mE$IrHjor}|NEqT9I$g6yR{aznQ&tFcw+<%>T z`|^qB<8Yyj!-ZVWvggxF`T5o3)|r3V^T&PMdf%_-=_k)mUcR*F$B*Xc$B)L(55~Ek z**Ej^FkS4gU(Yix)B`W&`Qh*K^Duf|{T*!P=Lefj{bl|gZSO$Ud+hT$Xe;KoEpFS- z#KnUP^JBqJ<_-U5Hy2xh;^^B}qs2vwx99JIKR#gYBer^N2NZ|b+0PaiEgt&h#TUto zFGl%?U(I<(*ES?CaWTs8&slza@poV$}cYrJT3^T0`;@7o+^%Ps>mL z$q&g(T-+@`9{EK)@{7CqtUG*>b%!rT>yJ9|s9VG%E=E4%jK}zkc*MoXXP)6P|3p0E zV&r>2&*lEJei;YWEpahgzur&t=s!NhBQ8e1_tQN3j}PΠ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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..33dd7319b305fd3f566785b03115374228c7b46b GIT binary patch literal 12106 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 F{tq1S`*i>S literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..2e77923fc638d54fd5902004096a80ffd0508176 GIT binary patch literal 14154 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..12a11734652bae8ed28d85eab7d135bb8ab223f5 GIT binary patch literal 7830 zcmb`MU8r5f8HQ*7t-a4NN|e};8Y@EeLM6@7nxrCf5|c_aRfvib(49bXpwyp3qAiwQ zROp2UQ7A?52bA8l^je{{*HsFF7eWxdP{b=QL`uaQ5#MKK-nG^~XRS#M-61^5H}lT- zeKX(8n!R?Y!Z3`&&cQJJJPh=Q&tT!-yN1=7Up=*Q)9(4&$@%)}`TX?Se0}ZI6Z73G zzuq@L@r&IzKCrUB=jJ23*H>;1VcTeO+x}W8-^y*Yj>=}p-;>$ffX zUtUiBq5Ybj{#$zdqBHH+wExTN{I45^ZD9-fPktohe^Y#2?W6S&M!)TEuikCi^ZXu+ z^Lsy%555d&AK+@+rHi_V)a2(vRLtdUJd#=}p;t_4vU5=${R-wf~m<$A0pU z9{&)(*v*pv@%xH(N%Q>67GIMVySdaKKmDeMlfLH1Nk26Ycj$9{6DJ?$-yGbT;x}dA zJbx|y(vOqgTz)L+P1$?(L3@k39Gq+MtUO{j7xzb6|LlLZmUK(cv?yJ)n^~XhSNf*D zXJ2dX_NMr{+6RZq?d|&R(s%5S1^?~+wXi?({_V<-eUIJr{_WCNccyun-rW!#cC(}( zznXND*Bhe4ZkF`JFOqKbpN8nLn(X>xny$~T^<#aO-t4ar*0)qY z=u7R?PpKV!_(#Y7$@Oso`}g+t`8)fw*5YmDc%&gYVK>#@-oKml<6TK#^Mj-xo4d;T ziJq=g8H)SvSuf9!sbNbh$H)ZeDhc8vjihuBOi;6qi%|iV2BX0C2abq`2@yC9O zA3gCy;>K>CFMie!oyoePH%sd`I-$8cuG}wb$Xx-usrKIa8~;1$CTAL=!)})J)k@M; zA2mdW-7M)xSERg0|7u9y*v(@8>c{${uc>uMPyI#~)}MCP9lgoAV>e6dANy(D(X;-L zb;oX&)}MK1-I;%rys?|5{OL#D=xZwPXg3S_(~rE-o8*n%Eae~jDR1=T56K(5S<1iq zP0D+Ebwl#TZkF<=A9f9$8c(UU(UZ|r6%fA(oOso1rD z&A}zgU3OFU;{HX)yqoBlf3u`#pQ2;`n&_~b*5~J|o*%{g*Ft;y{x#FE`hJ$4KfWLF z{Q8s54xV3`(+~6cpDFw1{Qdn%=Ons#erBSN=WnLS`^Ryu<@R*GLC!Vo zrq8zv8ei)yeVl(Yjw`!a8lOF~;r_8O{~h<2h4%LSr7M5xc<_0uYjgGo#Vflhd++*i z4x-~+G|^!h5GjX-nhRC z`+FYmcfKE9s#?}(dVRyeX~i$Qsh0NqZ_>}cNqRHho255pZ|e_ix?g^l_h;tldCfid z%go_tW&LBr{2vVQVh(wo(uq&Hf`-R`gp&~L>JGO z%=77q8@)-~aoo&O{Pbhq(AU(wMY~y;Kl*8X()pOlx?wj<>ot6g~UaM2Foh>8mS~u6m~-I_zdiPy9UBh~JF+UUt*_Kc9aK^-rAWzQ^-*K~J3M ziQmL8cC+L^-Y-=r@qTH3qW|msq@Hto@BDL4v(MuFD3dzGZmPYgr%uqD)L|SqQ}&`> z-|wTors@zqbs4$%erRF-n1AAD{!QY>ZkFPwA915Mi9e2;S&E;2#ErhD;*NH+5I^ff z+^nBT+}O=h{PZJk^d|AgaWhNt(~r2(*HqlmZWiKaeK_ypy*88gHrP$I7uTQj4t-74 zEqdxVa!?~QNrx0F}4+K}4Cn(@-E(-txGGr zDSNM;ce>~X=Nh7m?|L&k^|?OcJw^H{^O%VqySYKX+Ma)Til60M8?x?vO#L&)pLdmh zE7V@qF4bPG*sH%!d-dA2_=$T}S;bG>tNf0r-_w?NR0oglKYaK9VKn{vrqS-b=l-L& zA6ke_zcbXawa<|{Hvhh-?;o=r)gAlqyFk76)cN$|);U)D-*}G28b8Ze2kt*|S8p!= R(^!L5t^0_zo-D%ohLv literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..cf292a858d8516c9235c6f82ca56a65bb23f0a54 GIT binary patch literal 7830 zcmb`MO~_rv8OP^-oqOMx7^0*tFVaQAxbun~^ApGBYbWRPlPBhDCyxJmzGLTa z_s)ND(~iq;-?_GX*Nr>YcJ2*f^JsF-{>S&+@WHF!{N&Kvm%aSrowtT5-&g@bjdfnn(Ke#7O+3_iAEm{w>8H`ze0(#1DxZyV)7P_qW!Lbsv1(;3@4->}KAd zdHqxVvwrqU(yjctLFuC1Ea*oEHJ6_0u9}1E<-hEvTGp>$o}Ydz7bLy8dSB9;vN!8X z{@3-ja)s7zPk;O1aNXXDKiALyIzRQh@>WNDjq$&0e)9RzijVQbJN@x>oDXSz^ZZ@w zOI>3(m(GWlzWPJj7gOy8_8CNn-L$^TfBY-0PxJiiS|83Z=AHbhCi7x9OY<{+Y5wN< z+%^C3>oo7^A2pd5yXpD6^sx@*f3rT(VK=Ss${+sO|2+P|*74?OZwSo+6x~j_Qz_nX4p-&_xex2@%E%&@ROt;o7>C!iS9PcZ&v$~-juyK zfAwwBo72~l-juypU%ipyp59fHxUrk1_~}R7=oeJn(QX#vryp^nH;Eg&S&BdQQ~cv7h2bPyCR$v74p% z!#BzA!3zz_?`Ss*{?iY?(VO^<-7NVZ`^j(g_z&?LyLl%6SvPbh>xSMet>0*C(vAL7 z6CHN*OnTNG{esFHdg?#2kU!eV8+wzxVK+0^yCkcH|(bKm)}o%e-!Uut@e)l zS9<^Wew5!o%kQtQ_fOaS&HLAx+Gh&!tYK)+&;9cr#k#9zeDBF_cD}zF{`20zf79y)8lvPsdM6v^`A-n@%+dv z#ZQfQ-p{;0R7dzlU77ereVI%C&Ex&f`pe{t9zL6zgOk$BZpz+#Kd;lz{+;w@{9Gly zDSK0Ypn1O>J(KEUe09xO7qXj6_0iI^4r-6bnGt^UEFt>B|Uzk!+#S!cC)09_4!xD{+RY@=IF^(pQh}+>lg2rdy{@_ zev$NJb8lHcc_Qh}YIo9`vKQyCPA9z?KSO?|J$WjRbGl#8If0*?A0~caH)ZdgpMK;C zy-6P8xS6sS^?d$Bzo6CuJ?jzK{(hvje`qI8^d_JCu$!_M=O@qT7gRpclh4TA{d)E( zd1L>YxrKAj4aeI?d;R|e#>MX zv74pyBi;|?XS^Spr}h7>DKELb*MHja6TL|uu$!g*M?d^TZ<2>NZl>(T`Pp~q7gQe5 zlb6WC{-d4sMsKq3u$$h08A|FPru&VTd3@%jDt-TPpQ>c1Uz{PWVN`7V^sD&IA9PZ->- zb$Y$#$|l7syQ%i|xz75@he=mGR1+O`)B1du)co~liH^H&+duBIdRpH#%is82bEcZ3 ze|_UGeOJ3~eEf``1v32|w5j%H{C79+YQsAew_=~2S98YqhO(P#Z|d)A-nICx3cbg% z4m4|&b?BD;M}GEy7)`(KX|$s^-*(Hv!!6(RJ^aGAapN3m`qnx} zR<OxeZ|EJXc_uB!;whM>gD+7@X z6eQ5tM4=&(LJH`hpahAZf+}xLcGt+yk~ds-JR>ev92E9clMq6 zzHerB=k5tr7=}^UF&KuQg@OL@8MOYtb67q6`!l5Cf=zkc0||Ge*>uwzo_z50K8 zAJ0OlE*^#>q1rkO+rl;5Mv8Y&2*aDiztz}-u{O0WXzPe^>m|=j!-# z|A%9JuSxMukE-8iLzsSCb9AMCmu{-PS>Fx*(R;~nj*ln5DZSS}*{Ax=RhxGkd_ljX zoAa`tSn)5ZT=0`qaqp40k7 zH{0tw)j#{^JCkqaR}IP+b+h0foz+A3%;^_jC)Xz5ep7leetg7l;v;^uQOKhfES@y+T$@|)6&<5%A# zzd3z5`AzA)e%2lNPd~3o-som2f372M{7WkDsGEiSxsJT?o8*mdmhz9+DS!Or56K(d zEalHSBY)PPN#5vYDSxgbZ~RLt@2H!F{JD<2@tfq0ZkFPI_u!*5bIbhA{yc%ABopZY=ShHkok`T3;hNAdjCYHyyuW*S0& zpQY!I&sQ2x&xg3*Og}eF>GA&4HGcE_wpn}U_-FI@kJpUjN;f@zr(f~&+~9s;`nh5H z`Oz1j&xf0}caE<(n(oN~T_2>NAc|P&^QFR&o zM}2)>bM|zqm#OyN{+s8wuK2l6(LeVslYY@n_uu7bpObgo|C!_+?;n|^{MqBB{Mkpu z#lA9$3*B57-y)vxygwdQEc#5JtvNU?zjRYA&FAw5|Lp7JH{;(`@|)6|{zI+v<)8At z_(@InMJ3&w=lz-M+wwCHYLD|{;zKt}{?UiYKYpqvK6JC>C(gJp6u-&7KsVRzj}7tT zV||(U;=0Q$`H2%B@tbj9N;gaX`AMzM&y?$G&Cy>~3+blXd*_eq#`}|h$xoAiZ0;}n zCx1zPv)Y^dru5?Y)hEesPR}L3DZSUveU&)5f0)F9Zb~ousS|#aI>df6r5FAD{fU1` z%?EzwC9?f~q_uu%Cr|t)fA^uA(u?C$XZ%a5p7^O}y)~&eog9zZkFoDb<_>N zN&RBKnWg%19d*OMr0N!Rvrs>-qi*<3>V|HX>c@4|4gZp=Thz@${df*g=Xk!%B#!ue z$Skd2uA|QQP2!0CW=ij!f3Bn6_?OgtM%^szU#?@F#^+lm^N4Pi?jP}ds5s;K(ELQd z>-j}pa(i$5w6pH;o74f_EUiDTBToD#b%_0DN-vJjy2HPu>VTiRL>AT`?aViRlXZt~ zdi`xtNp!x|{=aM(?he%t2YO9aT|Q8?w_Gtfu>Bu=o)24gOb*>AjZgfJpn68N*cUF@ zUj5nGl)gD+znH|`_N*jo3I`J1ZMxiH&a9lH09+gp(} p`)b~kmVNPEW!^vX|NP)R?aVINul=!^|AKNE9N3u4RP`B$Zvk!`)wKWs literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..6e78aa646a1e332e69861a4b31dcfa7e1e48070e GIT binary patch literal 11094 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 C79h+3 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..8673c5f79208290a2009d7a4e6108447fa198f82 GIT binary patch literal 11094 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 VJJX%ZD>~QU$j);uX@ADm{{U?Sa=`!q literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..1ab9a7986868c0f8bb87e9cf63098d7a7d70ab38 GIT binary patch literal 11094 zcmbuFORQa08OQf|?Q`zqTpp=tr2{59K*ZY%(#oK=r4^B)hDS7waMZLNDAHOUrojO| zqSogGO~k}F(uo5gB%&tZL>)OX1|u;-2m^Is(1A>h@&8+E|M%YK-o3w;dIFf86z4D=tb!P394AC?b(`rO_dHW#N(EY6%=EY6-i%KE9$Tdi}GHWxqM+z5J&1 zo&H_9|LK*v-`Q0S=@;GX?7#9))D``f+SsS@K5$-f6d=z|HRxE z`$w;5zd8O^_M6hf{)a!yesgq3_M6gs{lvWfS=C#yn)9jNOE;y5{@@ z{VV^>eslG!*>6e@`=33P{pQN8*>6hk^-pihb)UY}kh-IrQT=I0uJG4XE|YEs^{3tF z_3SsPJGv=7jGwyGze(NGeJgg>zuLb>=Zj+FA+>+B;bqS$Ch4ZG@9e+j*J@3EbMS%e zH>LObi)Zq>AH2}w({iAj%ll_ue^vi0*Jt1Ahg*~{>1LO|+CRGXFZK;|bKCxv`)}=^ zx}Nq=6JLA(jQm~uH-2<8@^{7Webn(H@a#6n-r#= zzv}=N=lMH0s(xO|^Q-In%Ja?j>iNACf7kq>Uvx9-fAU4GlS#+?uI9%judkM0 z*|@0n)ir+ND}KHd-!1LuU-?~KKcV}-x8YzziI#5adVBpY`6utpzR4dO;zKth|LE7* zH$L4EAG#U&iF4!09KU(l@f^P?J&Ye8@tgRF-;DgkiI4bAeCTH6U-^`tyN~Ge%dUp= zYc&6)o4Vc`Kke3(FZ?y1&HgoWBlfTSIQvcZQtoR?5Br}T$o`st&HkBrAoiEq`-$J2 zK9>Ea^sxWQ1KDquZ^?dBdgvdQ*CM>kLDkK<{xC2^>j&b9!sc|RW48~78<~@Fs zd5>;J^PhIid;B#u?~`r@^PhIid;BKz9^H)QKkbmYr< zR56{4&R6Fn(dVN}y1&*9=Pv4H`rKvu{$1lIzI6V5v|&1TN;iG}?2FIm>kD1)>|gPx z{uRIJbFbA3WCHqb3z4gbx z^0n+YSGTg?lpgxam$ToTem(n5>7jpiWA@klOZLyq8)N_Eo7r!cH)X#mJ?wwHKl^LG zlKo?If9xN=n*HYJ+u3hQ@9m%G4|V7BS54JD>1I%W+EI7>CUr+Qqx#d1y5l#gd%ADM zsQ!FTp&vfKn2ZD6l-@gj+R-2Wni@~i&8^taJi%`=4*aI{uz%JWeslii>^G%{e&#uT zlX*=4ru1Gvd1l>^f0O&5o6-8A9sS_1seB~e4Au|(9C>5^Gszpe8Rd_5)D3@4)h+2} zP(Ru+Z}6MU8+0?8KdGJShoAaE>V|Gc^`jkm#%Gd8bW?h7{rKEM-uV1#k~efS${+2> z8~&QgThh%Sf3zcS_)YSLZbtb_?UXnCE_M-`KKNGEbGr?A4fN(_tr19(>{-%{T}ihK{uuM`dMe}`>a2cIMB@t?f=Ayzoz2A zPdtgi^M~uiiQnY8hi*#mjh}f=-kJY3HJ+rKLH=pSIPsf|1KpG!_Rl!+n~Vd$8RegO zM%>K5nupLs@|n0GZ_)_ZjGrZ|82$X`wQ z$RGa1z)zg`h`XkINjEG1x|-4U4;q^34PNnY?`KpwQNF_2l60@AG=1Sl=@_ zd|Vo@^f%t}8@k_%#g)6u&zwGS^8Urc51w3{e&GIdc~qBr*YUaNuCqGU=B!n2Xr0_A zmoAzcA6G-^ru3b2)n~Q;WZ(GT4e^bnoAy^{N#&~fuAt+rozEh^|M`5Mbk^2=p?||+ zs-OP&s7J~o) literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..08f29ea9525cce679f266ec6ab949fa388c4fb73 GIT binary patch literal 15638 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..151b7ef468dcb06a3130b34809baf44a1dc85056 GIT binary patch literal 15638 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 WKejWYb9qgDb@pxTYg+p=)%+KCjpU#J literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..a84ab8cb7f4fcf9b7bf0d6159a171f0675af1ce3 GIT binary patch literal 10626 zcmcJVU8r409mVH-?Q_oUO^p&Qu|W|(5UFXRZ5n-$Buy-7YsIETDcD;fxgf3WC9z71 zQUzZcL_tI}7Ay!>`mA8}O=v+>`XCe$#2|U{p;S@uLB#c&nRWI)_wMt*mb9mo-(~Gt z^Rf2q*)u06HEEbe>A+x^KAr~pkI!J~?}NkU!owF2fB4YG=Gl#{^BWuIH#fF6&wX*@ z(BUr~-T2%m4&CzU!&^sgz5CGC;agMMH=2Cx_*1vt_2RRye&pmYZhq#658RgyOoG~* z*HZgb4HKm2I%o8w;=zbSpE ze_z`^zCD{Mnf95x`RPA?)BQHx|FnJVDM#-3O>)omRz~^H|6JN#yU>z$(aorR%F!-iW+4)A4IH$bNHhXYrfTSNgB}wfe2~Vf|`{mr}~QxxBuV`S0~j zYXknl%N@#>(9P*58*8 z>mIu4^|P;j)<2K0um8=RCAaB4EvXmX+^v4EuYL9B`>^f)P%paa`uqIzpOk*BJ=YQ+ zx@mvk_2@&-!Fab z^L~ojA3t5%ojlW$cG1nK{hs&VQog)DqxPr&F73|#(~@@4&8YpJ_w!Qw+}~~O-@f$z zeO7bnA&vJ_E!Wnxen~fVy}N!b`6q8GzRB|~@u8cMzxi_UP2bfLAG#U&c}MGdnmyGL zAG#U&=XVs}{O>LCp_`Hay8r6Fy{Ps3r!AS2=%%i(%#U*8gT=q#AB%r%9*q4H?QLn_ zY>pMbDLrhzQ6KP|Q~gc9OzA8A>DAKz!Q~Fs@2s0a|0zem@tgD;-HiI5%c-yU=|803 z=;m(y=lE;MPsF$O)t30s&E5Rmcl-+~H~ifH%pgCmlN)}M+|bP^zg$ka z;U_;xZs=x|AI~Y{=lL}mH@X>(pK^>F|AHEK*3Dr2lw;iZO~#FGM&r-rG;aKiA2M!q zGaCO)drZbXd#NSkMmMAJQ;vS)H|aOJ8TFrXv2$}w*I3u@e1H-qt0j(+1e=|8%;TmQ)oze#TR%_u+i3F)l*uKj~KxL$tgru3EX z5B3T8*gu%~(9OutbBd4W*2ITyMt=4Q_}D*~_|VPB&prVk`v(&rx@mvipKAXUp1+o^ z_ng1V{>$et<*fZlZr^0z(zk!>Yrp6GwOs#`rT(@3Epz?S&EEZy&u^Mr!|&GpQRVbc zb$?N*>pSO1_46LapWn}w`1AX{(*C~jbwVD9@iMePuqZQ}|fFOnm5OEE{5(JSAwG07^7Ed+$9u!Xhi*oG_8Iut zcbNFl&B*WdXZ!QlxBm3qpPuvYj``1X&HOicu1A{xrl0SbV%sxJ8~J?Y``dSZJ}~{ssS9{A2TI>>pk&eslD#;y0zQY(Jk5)ZctQFs~>-J)h)K zuZMp6iQgm#e5Ul!Pe1XSDxPyYFQSxN5r%_x7$kvo2q{L#%Qf69?N z{sonL*3BS)%8@&MlibnGD1Y`j?AzG?nC#oo&29U)rS+fn10U;;i4Wb3{Ooh^vHvmg zp_`GPeGWeMKPEnOGxD>~!NGXQlVkgTz~^#WKQKA*fHXe&HyUGoSD-WETlP0!cZb6aBkzVM<2O( zZM9DR^+wb>*Y`ZHe_y9Rj%uyvs`6a=T=irLFrUlxCmcMe=SsRMdFOqt{^@5*x#=q{ z=X-TerJJf}rGN5V@ioU<;zKth|43&#`Z@kiOMK{NG#|pY5JY`CS%1*JB?#{(60--|h0dDC&Xu z(9Lb_AMdu$?*|5YhWXuvIopz7x+%Te{*s@6zsEOtxh1~*@A{R!{yP8iSxo-5S`WmJ zZf^4*>*lYP@@LQYTXNs{nEEsKzphLAU7Xe>tw>sz8rG$+m38TToB5O1CG{eI^18%t z=JeaIwf)V>dyk*K=XIz}zm!mIXFhrVy|YM(}deOIWXU**PZE4LM98*@8(rkZo w;{LnuT3J_j{aw_>@8atBp7P&u{JzzF3H|!r#BTooYb@)EcKcYSN_(9C2TaxllK=n! literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..5804fa99dd188e057839365662fea5ed126f7c1f GIT binary patch literal 10626 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..4cde6f4523cd8560ac55fbdc88b0b9483a584e29 GIT binary patch literal 15744 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..9c27d27f4e4f6fc0530d58c3968e96bab3e41373 GIT binary patch literal 16000 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..5d8be3d3de38e43e1fc3d99522e0c4e1288ee80e GIT binary patch literal 22080 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 =RF%IzKkOpz_bQ+Q5gBuvt~!Gzw$4+ z{x#-~?)vf9ek=Rty6xFFm3Ouuf8nLbWRXP)Ud^Ka6Ba&x)<56{Z=S02gj zADU-%*H8QTFUOcabM}nvo60-ek3aiz_RYEPW#3dD`tzq}zw&VQ=gsl&&&Jk2^{@I) z_RWQz**BGU*3UUJ_(48@OvW*tONGiqzjw4e{}lFrn0-^9cltBG*XgiNV|Z)J^m8ZW z=92Sktp9T#$ljdx5!ZouvK-i|4Q{I<>vNopZQ~)SU;7TkCdCIcKfswkM>u}OSu{N)I-0i-=zQKX4HSq zKjw||+hpFz&1nA8^Y>Zh`P)2_@4wtX%IBTq&*$7XxPP16H^|NC{*lVPoPF*eT!;Gx zxf$I*D93#RukvvAxqp<;!}fFEz&E*X;F;0=BbC$rAD{a_et1sdewp5%Os$)go5Ax3#lw;lCRchU&+zg&SD95_NH(592X0(1%IjtLf)(>Rekeku^p&aW5 zuTtwKRekeku^N$-zZC+YpMkaa+A4v%!NU&^sg z@GG?rQf{6R`>YdulXZY^D(~DsshrjcKIaW&9gv&KL!WhmSNT%*Sr1%CdFZoF@J-eM zo~bb{N7{W~$Ze{)XooXh!PPVdg=hpD`?e%1*d>&C<*HzS|>-1I->>i%c) z98Yd4@2sEp)K2-dA0Oh8o6GsVv$I!uH2b_)a2@4g`|)Uhr99e?pBVUz z6CUGNDKF(_;Ils1=d2%-=OA)Zd1w16$2{X#Y8+E;?v8!N8Qt~$sP1Yg4 zsl3zYdlKHe`2NJ?y^Gw8-oN;s29NJ=OgwTk@>w5vtUD8r+>CtYnSL_=Ci6gUD(~z+ z6=Wuc}djDda zsh9Du)b&zs2KCcU>Y@E6=P zGy493_Z-Uc{$sL^$W7&){pURkkM}PVkKBxW>fxNA{>me{{-GH>zvA7BNXpIN`IT}!r{J4Bhmf1f!}jx>f^YI1f^SC8 zuax6C1;0}3DdlGH{K|Vi_3-|0avgG0d1w16M?di^)t{7`!Sfg8c<#eD8Aoz6dj6vv z^NepYkLkLF%ER`v&hRT=&OYmj>nIO>);Ye(I>s}Vclzuz#+m(Bsd-De8O$H$SU314 z^GI$+>xXiTGrq|@rt20e58Kap<5y}v@tM!WVE^zrG7{_?4PZeC9K8ne&VLKKsw)zR&(Mqx(PC$D@7|kKBy>RF9tXsGsL&$a5UI89hIz zdgM_*KExw8m-Bh<#j8A;eVzxoj`Gg&r=57TyHZ}t&A?}$F;48iO7$b<=A`Fe|NQbU zeQ$n^+RyJd6sDhBDmRrM-~JK5(Vz75)559iG?(&C#hw1#FqfPASxeeMZt6On{*1~} z&&+Er@yN}{@4uP7=^wSkBR3;|@M!ji=eEQnH<$R=jsE<&r?OLbYQFFbw`e_(o61M~ z|GCkh|Jvj4&%lRxp*;RbBTZM==iIq^k?;tTe9x?W9lDM`xkU1=D+_# ze_P^U>ED+4$>-9a=kwnSGJIYB3C--b;YH_NdBHpPXZou3yDRt8-%Ij3{+_EYx%i#e zpMG!axrx61{+s3dKXs+v=daPRFx-3jd7rv;d<5V26^2i6g)2UL)#c}xF`Utrrkno* DB*O++ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..22ba8e45e16e4faebfef79877dd3136e337dfe99 GIT binary patch literal 22208 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 CyQ2>P literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..13ee963a1c24fc9a0a13a821854db323bd545239 GIT binary patch literal 11190 zcmcJVYp7jE8HQ)y*4}5IlaTZlqfuhjR%)6iN{k}WCQU1$HEPllt>{6`MQLJUYKsAd z*dIdmhhP!4wI~&>f+A9}{_uhqjGz$|Z(zX-La`zWiWL;`eP-6X)?WLpHOEA{OL=nM zHSf%P-#2UaUbA;7LO%?`rd~hX6ngrPSFiE!t^MN8JI-u>(YEEIhnG*CUS2+ZbotcL zBkx+?w*BsxEWhPd+g^BR`>7Z2xMka^?K?uaY%qHH?t6FM{QZaj`qI5$yY5pD+c5|;L-f5A0BOaC_Y*R21I(Z3~)?{V=l56HOa=G^!V zKO^CD91tHbbI!ke#rR(iVex(Hr(_(P@yq|E&(6Q$59gCFjxT>4Up{pF<@J^R+5F2# zTgLa8?x*Z`*1val{==;yjP6l_zgM$(n*Nq<>U!2c+>`tjf0g`0b5FN_^jHX!e`~DM zH5Wdtxkxv4y>oopjlZ7!=Hx)~o6$H@caNpLWEJzoO!fy4j5XhS~i0 zw#cix^?p%v;SKs*x~c24^Izc~?@RuQe@p(cxi9Y@{Vw^<;)BU=O3#izJd^z9NNbV# zo6SiW>+7UN?lep2%T>P{nZu};3$9_xZ;vYRr zd)5y%_77^Vxl4abH+8);f3#bCYx0{*Ym(oTp7r<6CBNB!XY!lUv;MH0{AO<<`AzBF z{-3707w@S_-AB^RT>WWB-SJmc-J@=1>Q6iBj^Cv2=w`0|w4?6$P3j-}Et#u-@%~iz z@wS@O9o@{;pLWz8ze(L=za?|^ryX_2Z&G)3Ggp7wQFr_%b&vg)%+-Hq*l)>P{ip9vaW7t3lep2%T>P{n zZu}J$cht>H{Inx({3dauo4NRDN8I>L;*b57oQr=szWZx_dN zx<0#qH2nR&$v60FO?>F)YX0e$)K-3T>DkF|O79$>dE#UKCO&jC=jU_RqV5wuFPMDp zMK`5)j!!#Y_|3lFPtZ;2v;G@n{@10?&*3J;{%5ry2PKOW`dhjwJ?kGIOMY|V@#Ht9 zNB`yOQqMRV{~Dej;`7V+=UR8yc3)>r<*pZ3E7uRV%&%Nu#KF9l^zdPNUZ&?)KA)ug z%=pO*e$#m|rN{WnXE=Sn)-#-*-sYa+Hh!Gf{V8rfTP__7la0kIci(#BMfkUCy}!Qc zFXx{=-@Cr&mGn=hd&3;>P<^DE(r4@2@DKl`b@^Mh-CuL*H(F5AOn?jx^|e4?AqYq{=~*LvNv zZhLQQiPh^)^uNJTUNi2;(oJ1odEb=v!_N!9 z+5e*QEZvme=^r0Vd7B)nN#4-S)$-?ku`55L=DyolpR@aNV_zxbo9Yyb`o?pQlFSR; zoSUDXTbt|O`7h_!xZYB~#`W3ywfPrbt33aqk>B*(T+V;;1>IZcG}nLB9IV%SiF8xf zV}08C@BcI3fB$u<-@!vQ=@;Ext^dX5{?M2|{Y<~BzSO_T=YDikdguJfPp*IRK)>Y2 zq+fJ1*FW{~{??X1u6uuKz5Wy3XIFI3AOGC`&{!X%_pahs|6YIP`d*P=>NMD#>J_Pz z(O5roefRtr-~D&R=lQpdAJ6?Xj>m=5o!T+Z*Bm^U#&7d;{-EpeT*AbUZra~Azy6@! zKim3W*qZXf`XEn{8ZYYRD*4I9&+{|$=DFHr-sq<1-!{K^f2h6l7OC~@`=-1;yZ<)o z?>OTArg=cdMK?WuTmEL(XWRTZ8(n;+_Vc@I#`hKJrmlC+4?i#bX8%#uSGp;^(?33& z^2&27`Gv%VZsy`^dH-$Pf5h+i-?sRxJhH!#SE%|#-Q3xIe-*la!#BIHbN~5zIsTs6 zb64(zg({p|@%}W&uSkAVde%SMo%|L5 zl>8%ecizwYH|Lh-@T19Z`u)2tf1~GX|NeHmAI&v)=x^z!^v?OyZt+C&n@by#-;|#9 z_r8(*X8&07o6@uX@b=_4dzU7^DZSgTeTa3#{!~%xhW&~46S*tzXWig8SvUC1-1?y% z>juBcxxXu%8~hcuZlZ2x)=%6YwSE?~->`ll>jvG-tsmMkF20HyH|pjp;}bW2 zleqDlx%gu{%f2_hswVp$x|!Sm_|B8@7d|^f^%r$>mGRj(8Q)~zjPoj) z+dupI+(6z3n`fxJN8QZipLWz8ze(NE&0PIy$GXFBvhHHPC3EYKINA4!-(=rMH*@n%CnX4b46InleZmg(rqi(J;K6Ph&llsSbmCV(jcGL}jMb$0pW~P3$qi*<3 z>V|IS>PMX9jrdLShHmEa$3C;DIvOr5bF=i^bMfb9 z^4I;hoSQZJ=efLhPHW$V~p_}nM<6EiyP(&Y%YR2;l>1NQ2d6?2yK8JZdzB$D?d9r3a zpOkJo-nR8pD4%oZbd7wsoFg`_Q?J$hx$F2{&$jt7e(rk9IY?uEv*#e?KC16GtM4ZZ zeq(x8snTyuuR0oE@i(SlN!d@|Rr1~N=-M#dSR8!yZ3k{>ep`7_z3H0?^|trG?tS~U N-LKdGWBor2{{?FCHKPCk literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..21c707f1bca1739a83f1781ccf7b0227b35c12e0 GIT binary patch literal 11270 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 GU;G#AnM?5i literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..e3f25c3d1889621832bb41fd19b703f74319f6f8 GIT binary patch literal 14758 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 i!^ydo6*rSt#DLK!A|JRSnB9_t%*L^ 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 Rz31$C#aX2`&4|;@e*v$!nZ^JB literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..630bcd2766fb010f20381d32bdeb912b3ed54ebe GIT binary patch literal 20262 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..1ef07a6b06fb2446f74661a01dee332aefa016d4 GIT binary patch literal 20262 zcmcJXTa08?6^2h$byrv4W~OJRr@IG;hKP6}Fra`$!5J731T+E@5Cd%ppeUD-TSB6N zM2#T?&=8|&j6@$GF@g$+4+5H~Jb1zQfEYBO#&{v1F`y?aNwccU4VS{i<8_sslUS>XfRZ|M=>x`Tp>3|C$fpaO4|ytX_KY>fWnYSFgTw zb?>E@T)VpC$m`#-sB0pZa(((AKd+y<92`Rh`T<2 z{yEiwlfm8l`*Zh+xvJ{VcdN6j{r|{`pKbci`lS z=clnq-_)zB-fjBkAJvAH{>9f_am5X*d#}3uhH7G=s$TXTr$10t^K+x_ILI+xQ1v$u z<6-pASMP|b>b}0=(sNlibv;Ei%0KgL_RVi=h!5Rd=iiz7-`ey~Z}`mv4$R-1`e}GZ zcBeVk?5>;Rl{@+RT%OndhpTGkzG|@2f7`BePJS8wPiwoqd#%47|AoWxd)_<`9ydDU zudff!->x%;w@oZ{b9uiq(EweW4ldtbw?Z_&@vOC*^exdgNY&dtPzL#$5daHkMK=w_) zq9HzXGxGPRt7^kXt7>Y#;nGPebka>-Z|$FbM*MR>Z8*Q66_;*C{nKv4Z1$VsMb7=Z|&6 zZ?bOq%xL{myL+>r_2WLQ8@d^-Uw^0a_ess&6Ad>i9&}UJTjQtQrseD}R2)e+mt+6J zdD&n1eD*Jx=f(cbpUr-A%i-B?N)O}TQjg!`Mo;xeA(R%CrXl_4LxhUO~zHj`sfA(P2`E#{bP8*`mZAmxJ&Hnm~pUAYF@x^a9g%wP4( zJg;WwsXVWy^fa%FS}y(Wqj`BhUvT^-PHB? z{xj|OXZ_N1UF&M{JVrOyJ=gPdxsH$X13u0bCcfcwMdTlKuECFPM*dOfDtzeX{`!3$ zGb8_~_{oYn{-Ta(1eD0gPSoLX(_S1$TKCCkUy18Xd|NHo>)$BJr+Ozmg>BDtz zjelyOSmmGkMnin)X5^oERaI@fKok6vhD%fWS-Pp~t^N0p$-e$G4e_Cyk)M9HzL@(r z7r&VMH>HRDSpn)^4m9-I3&rHB2`9+dkpd@T1rYaSH)=RThOCeIGy zH>HRD6F1{Gi5tH;F8=xFvfteBnd~>Ehy8Edll_G+W&cKVPwd~MJRyE_;eFX}N)P+r ztlyLI7e1c-o6SSo{j5LZX8)Uv8{Le?Pdmnqzfj{&x*3e0c8nXp$+*$YX#BKe-1rMM z?xdT+_y?!vydC_tA$f~#M)^xS@(#aA-l3aO{?U$oi{E75ru){6_Al*NH~c2+hHj2q zzv&0_{FyVWdHzi4t^1F8ChwX5LgjtZ%^?40cdG58ynh3c9S2;ezSjQ z_M6gMKf^XaB%FGxjs@jNfG5iOY=UpLWbU{zA=r(#OAvK{VUYGC*2I@ zpM8pt{aYws(#`k`ZviNbTi7I)Q|l1k00VgH^=$O8+;~tgWrtuhd9~y#BZ|i(amW8Q)k&X z)Zaqwo1~k;{-GV~j=xaro^&%CLq$GYJ+SvPbuTEA51p3C)bz9!F2bW?h3{h}S`9_nY|OWD8C z+!Omb_uw}<_i$e`I{(m)a}WN)$FraFUwu7{pK}L(lk*2YbKLoZaWnsg8aMOL_!EQi zbDeSHHyJm&8I7NIj2nNU#+`ICIRB+_zL>|)`Hgwt+=gyO=QrB%`y)P+b0fMLogX`g z<-G4aF~mppEJQbh{HGmxkKZKk(ak9TQ#<87e)1oZ_vmJn|Fom-;VV?#OS&1p@sl_BP4Whx8RZY{$Q%5H%A2H{LH^K=x`E%MZlIe{{YdSUclgOaNZz5F zQU1}6yu)Xbcj#u6f1F>JzoNarq2Y?w1Krg1*7@h0il1|GZjQTu z_wx4mxex2Z{Y};d-Hg^}^4C>WJ<>it<}d1hR(Zg=a#s0arsqN_{W?eYzMuv=UzSyVu^w7_91;5F;2EQr2)!#oR_sj1G^bhG5 z-HiID9sS}n%j;^2qrTqSKj#qo<$Pk&FS;4^Pdoa>Z_@wp`9^wc|LOI8_1}AC?jO=` zdVRm9`yZ8`8?W9sQ9`)<-Tjz8)j zzpszlKh&w^OO!9FUuJq=R=O#Dc>PZtet)a~Z>{~qdJf;yu&eVGx~c1}e)4qwxSYR* zzs>nOZywj~r@r8${uIiWbTja$*D>U$e&SD*FX?9Br=Q+)xqov)=Ua4BdN_W3ss7c( z$Gn)4Kjpc6Gk4`UAUEr{0?Vru5eF*`lpZ2{=(m9|Fn60?4S8m_M5Z%>;!R{(!>5|^?M=nZqD7F{igKL&%VQ7sC`HO z?El1I|8af8t=VsGJU07G>0$pHRU_!%+;mI!o66e@{fkFtf1y7A!n`h;N5=kb`u&*kn@dMzzbU=7|Jk?ayq$fa zA$f~#M)^xS@)m!g@;2#akiWDeZ}FStExH-yZ)&If#ZUf1@)q5U@|SkxExtnKZPLvk ze`!bF;y1}#bTi7|)K2+}pZta7ExH-yFYU-%e1*!}q?T3YE7>H-r489eIo2ByZ8pD1TEsw-HhgscB~tI zlXXk?tr@K!?btW?3$<^OZU*~@cI;dHCi@oMjP@_>$Q%47d6Vv2Gs+*@k+=8@mA6SZ zgZ!l(bpyXi-9R^^`awJD7JieumF`< zzoyqOYVzDdH>2kl=UkpUoPSN8JLqQg{NbF9um4O#eCTH6Crw-}y4(3tL+UQN8P#9fQFrkds_rJ;4C*iKsJr-0>Mpt&)nD3Cck!Fl z-*n%aQT?SIbr*l()7j7YyT0Cf{$!t0x7fcXbqn2$>KE;(Tlh`tSGsS_sD9Cox`n?` zbt~y+P`_wL-NJ8Dx6sX~evxO4oBT5wH@X>(pLUEJzsdO1eQQSJryb+QU#M{>-3-Q0 zJI0OQWZdXxG=Ay?Ap3i@zaiR<1f^>lWqp%ryb+QZ!&Il zbKLkjci=ZUci=ap^9Sw7JN$*pyQG`J`GnJVXPt?g^*4zd-HhU=9dY9? zRNP57$HdRMi}+2>U&L=l=P&xfNB<^1bTjgk=lIBf6Cb)6`Kgc08}-v<-q6ix{%A+P z_)Ypv_pLduf6krw3w7?q&+9*l!TFQxdk^z( z^4vu?qvtQ{jF0s<@u8cMpM8dp{b%AsHzPlB^4ur>!l!cl{Qgy6Z+(6eCqCjYlrQOK zaDE_8e8gWUU((IMPkfv^h~MPgfo_gFe^7T>|3cMW)}Pl;6UWqF`Xzpoeu>|V`e&Z- zF@GjLbTjf3A9bJjP3k_n8P$K zqMOnAmv!d3!TOs#H`2bS89hH}N8QI?sJfqYGpPTxqi*6ishj9#R6ki~;%5C#;!pdc zW)y$-o~r6DY3|M%;&=5uy1CT;`YZo-89)Cfxlq2On`8XT@5z31WitCs>8HW9;u6%|Gw!)s)^EKmFjNe-mGdtL8ZW z_UY^|yg&Q5o6~Xs%MWJ1xw4x5ru5eM87Dr*Z{kBY$N7mHf1%>WPyC5>{B!zIpD)t; zr~2DL`U^sBf7fRHzbl@6Kxcv5s?96?E3UfulFL`GyXKPBtFB!4_k;HPu2UENKkl0T zD$)Nu*4`aatczt{o6l{H_}o-}-`bzMxK`^utGs=rp+7HW>iWL>ruI*gqYr7Hz0{ER z&(Td?Z}m^9=HMSJG{lE)+TS)lf39iN^%0-zS~Grsequj9*Cl^5zue#b56b*EpKIa% z{ydlI&vTjUKG(J8{v$pYvL=2$`^(qh+=k32x~VH^{zuKv@aOVI#s4xsH@GJL;m`fF z^}p_OL;LuBePn#E&GS30@iMC6#GZs4e(i8?F z#URq4KZ=NyD2%Woi7-?mlPvNNQ=(t`hXp|-DUy_+QAFR*-sgMHJ@1{fUT@SZ@|m~x zUVE***4q2*bI!fRsOT4i;)Gtm*i-cMAD>?1->3IS*IjjZ$D6k=AKbsZa_#c+wFj41 z4j%Z_^7b7!oU?qzd$yl>*^ZUBoOSW`l^tgl#pc2A9XoG1`=Vdo`RrSF-*?70Z@>JK z;)G!^`e-Ag&rOSBwA3&56{F+(#i_+;Yp)maSV*7bN|o zOZ`1XF}_kgeo%A%N&PLksrFER@J!Y>M~AY$Dfz7ahiCnF+#Cnb8#(hY+h_H6Hsb$? z;`YO`U&)2n$-d;K+B@}=UFmK5V;%>hm;5N%s$a%G`6qpkW4+|R^vm{H`#Jv3pW;m1 zj@n<-aWhxNZ;d|rL*I1XOy_S)u3zb&+%Gog^|QF6D2Auy__Vc;e;>Ecf3_$lcXsQK zPKw*-4%g$C>tpw9e&u_kdxZbtE^A8|*&;^SGL_?PXS^I!ODw!8T0n%G5dM)v84UGyu;Zjzg2{>y8S z>POe0;hJmEwy*KIEw3Ba#q{c8vTgLPotIpY^S4p`-p2y{qr2^|z6NeOpjiB!v36a0 z@kK4QRPOal&#T`z@?K|-&(hu{xhZ+dMPn`-@TK?m|Ie4HDwJ5#=tvSY>Q~jHai`-mq{9*ID-Izbu-N^n>XDjTEzFQN!$j!)p%XPhB zpL0QEe_khh>@N&!Vi&m?*>5>_H0)D9k^S+$YzN(SM&($32yolUXd#IoGQ0beaFJygF@=$+#VYXlKpILuwUKs07 zbneA}bN+)_-;})DzVhCCNd2{*%>F0!x8$beo%-XOa@-~-*CcMp%_x4UpRNJu6F*4Y zkegBb=ttbptEjjoxf#Tde#8xZlei%_qxjA1{EOXr&QPZ8Cb=2dryuo)zDeAWn^F8y zKgA7w;s=Qvax;n_`(CjuUF|n!Z(hDgZc5&n|K6$D@1D*O_z&?Lxf%JN?5O^*PyIpa z4!IfCA9jd4b}K6GNp1%5AL{IZ-y_bYCGi`%8TpSL>IVBJb%WfD>SuCQj{Ce02gDx| zcjRUifAWl7@@`@mxf$6{^Hkk1f9eNPH^|MXev+TcTk^Xkc|&eS`J*5EHu@&}HgYrE zzqL=H$Npua$NptT`q)|gXtr-om$H3R^3M7vPQ;zKnZzBrxnBIKTl6ccZqaA|PYmjJ z?)ABD=N_#|-6A)m`c3_mcl60WB=5-0DF5`sZ}ck4?<6o15{F0wqH~7!~2U$1B&1n5_4?x^D zeWoUHLvBX#qaS%gzoPP%IgZbs{mIJ55&f0Mi+H>3RFC-KLBlei-{ z*NZ=S$A6Q&r+Jl(^3Qb&J+50O`pC^lA3wS7;J?YbP4g<*x_1U4H|`&1{A1lQu8F^;Ux{9SZR3wmQQu=@ z`~AOkw-5Kn`U`s$>+<uzc943)1WH-q}azxBqa zPSW#>lGLB=Lf2ncd^~NmxwBz242jOv&CM)gJh zmX7bPFXk8N6aPq``*+tzTYR`qlOL|%Ciy{bM)_g$@#JarW}gqX*`IyB($+rv{HLvbbW*+lx3zOk zimnfwPsuyySChOWH=X~s_>6DLdfb1b579$zM*7_6pvV1>i5_w@(ofGhqilzj=OR;x}@0mH*3)_qMy$PiLpWJvFDV zQB6v2s(se}8hxJKqi+u0ko8T;JN0=V$cOhhX8&PLSaMVHP=As0p7hNWcj=pwcj_-b zm;GKkSQEdIo00$YBYxx>wiPPe}nvdM*p8! zbMC8(o#f`K=bsJzsm?+Dt@6J=!=K4_C71_Zk#WOUt$nH+KC(bCUHYWX_dv31TJ5ITm+*Es~edbC1F#n3GnJ zN65U9o9oRVJ?3ws$NbGmpM7poezN~n)Obm59@iZ|@;uc(N&d~Ht8)HL$;0@w?uft1 zx+DH(wEp_v$$k&^&QN|Qxf%H1du?8K>0PF*w>Zkdm z&-@|tMs7y)=bVEc=N}V2cok{(sx-1#hFMhJ`;J3-XgWQbvAJz$V!}>9) z8{}qGKh*i+p|Za|KKB{aU3!05lDb1~M)gNO;*P#a{L{E4qxjR0xT9ZD zaZhqHh(G;^Kl&zdM{Y*(ryp@gzoO!vy&lJ`ZZa1Xaby3esJJD$8N`o$ihYCq%Vgg`Zif4Z=1<<4ze(Pi zzZvD9e)x@kMfsiNX5_#8CU5DzVM+4Ge9S0+JSSrPrT0fAS$D|IX#FKS(o65pN}`9{ zjP$WX+|u)_lEe+U8OBd>BX68vO!7uN%_x6d=ed95`d?AwCAk^gzu_l&!~crPTaueW z{$A|-(P!OZzoOP%lAFQ$qaXEyzDeC6H>3I?&&-?rSJb?d+zjSVKk}cRUzH^9$jvDK z^kd%WSJb?d+zjT=I%nUZzsdfS_Jxws{=@l|a}VcNlk-oyuPGUwf9Qu@^iAxib8$)A zpGvHAww^!ed%60B$g1ClRNu>8{k_=qOOB_CW4DbCU9n$I7;pJ%7(rpVWxL2lADsRy~i!rI}oi5_y(`fdAT%R9nG{chwPQh5#5Z^x?N#*FxV=1oeqexLcqgXvT7`^+C{ z*W#0YpULkEho=<_+eZ7|cj?~qo4=GfqS5qgGmW-;@6HR~tD};Z%iLK1&lUdz6QtcV literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..b39e1dc95a662bc25bb44d813023a9d3d7f3c807 GIT binary patch literal 15602 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 Q-~K(9zq6eCoH$$jA3ngu8UO$Q literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..f8e37b56ac0c9da4282c71cd9b744da59f5161db GIT binary patch literal 20544 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 G#s2_haM7Ru literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..3b09a57857c408acbeee8517e7934040d66b3b7b GIT binary patch literal 21056 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

*H)>XdHkcyIfhM~b)Q^NTsA{RiEY-s_+K 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..c446cff9121250f7b6556e4d43062359801cc7d5 GIT binary patch literal 28288 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 Ww*CLj*-pIq_#3~sT{{cneDl8`we|G? literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..374b61592344b6b388fd70fb9517ceba045c8ab5 GIT binary patch literal 28352 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..c29d732e30627c1f0ece9cf1c1bc8bed88fbbb4d GIT binary patch literal 32256 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds new file mode 100644 index 0000000000000000000000000000000000000000..6c8cea01799c07be90596f5ae2440c0d98890543 GIT binary patch literal 11294 zcmbuFO{iU08HV@y+vnu|rIAz{6Ho^_D23i6wMi?6Bu%W^)JlJ-6zx$-f?#Z8nnnr= zMZ~K3gD8S6iX%G^L5pCEAWqbYf&=LwXf5I&4m3Kb6A|BMt@ZA`Pwv@YVm#&c$$j^F z*SFUCzP0w*=boyrhSjLrGZ}O6lk>CZ=JRu>=Vwo! zIzQjsd*R^x%!Tvw58S=E@4@|NH#bjgp56cEs@gf496IvZ19$!G*-N(_d;aEcJ@e50 z)t*TZq5fYZjAvCJKgEAM`L8Sf zeN{F5pjv#b<&@v0o4OwQXYb8^bDiJiH>Gd&@67S17jxX%OD&0uZZ3^q{KR4Wt53J| zxXs8v{9E>o{@D^Ax*7S2&%B9mdfsL<|H;Yht3T8dAG&#&|5!Kwqc>`-Kdh?Jk6MoI z*6-3yUGJ{{7XRp9*>8@&ko~6g&_6kl{SAMa{S)&*?5{tT{pNH%`%US+@h8t{-M+7l zvA5;6JGFk&OLN+pY6zb zpFP`>yrY{@{!=^UA3ynr^G(N`nSEJb?5xKp~L4?d+6rk`I+~h&)*+p-{8d# z<*U%m;=f)?r1M|?8;8}-YK`-Ma9r#3yCviE`M9M2bS_CZFFW7z_=^7;&c`eIiA%p` z6#tsf$1;BW{$=^$42kk{4fnr=^$kezVqDM8Br=Fn+DG zhxIe3PiDU1L4s*)->!X8_KBNZ!%SDE}+_vTx-#E%Bk7k)Jr!4RKBC2HlM6hj!Erev`UEH>3KY z9d(1hq3R~-W>7!0qi*n<)D5~B)er5c8~hDbH%T{x`k@_lgWsfX(9NiRXh+@PZ>YLS zx*60Dc_we<-z0D7W|TkLvF`XAYTc7=2J25d)*Zjex}%%X`loiPAN8ZQ`dXnKh(#w zul{>WeCTH6AOBX*oyzm%sg~OxQY}a~b-g$K=<)0uzpf=dbTjf3hxrrVWZdXxG=AdX zBfg0b-HiOKGxKNtO~#FGM&oCl@v;6UK6KOm>m}>?SMT4$=imJP-p{|6^1kN%E&CgC zu6LggmhSJa|Et+IEL^{__zR_P&99$-cIUXfzac&(KJRbLC_e25f6YE~{ny1`D7`m6 z_fg_I7VZbtEGM_l|S@sqzWiqAe~-PqqI>xXVe>zDi*fASYH?&L4@_?OkklIQP* z`rtmnx^Vw6=^x#6|Ffq4^!a%z2e z_1tZG|MvCo=j$t7?~BjAO`pFNvTxJpZ-w5!#Xqn3`-S(%&D!@T*__cX!zn?gh&*%6i{h*uD!|{&~W`D!qXaCqd82g8R$bNJ5#q2kw_r_=b z#Nk{tnFqQlJ@gX?zsWpOzlG96|M2$gZ>ag;XFiFy_xoAr*)4hg4PVOh=Wkl&dT;!c zr6e@{hY=48|thlK4*5~zJ5RR zCl2#A=?C4E-Wxx)Qyl!ngR7s;ep7m{pYhR-@tf>pbW?h-pZg%^2KPsk^CR6K3#0Rc zcI;F94OIt8H-r68JN6BJlYN73M*D|$>>KK5IM>X&xZ3I2wvgQS~5{iQgnfBe)xqz=)|sQzh3-QY8+8+0?OAKoWWH@tr^sh{-z zp)jf+=1d%FzoGg|x*6Pmh(p~GzoF_b>1I%Ww4?6uo75e;8Py-{s5|^7^_TiBjOvee z)E)kYs=K6{LH*H=y2Ec$cj#tRf3#z*@i$a1l5Pg|m*S}I@Kb+~x~<<2R`zbW?io`AIw08Gl2qL( zOrJYQH!pksSQtO^#K-*2^tpp{Gx9S}e9YU#hi*oG=82DaoA}U8``4QFfAz4suc}`& zs3ukY+JRPXZTIBxuCMcYx?0;aIjSDgD}6^`{2kT7#p+eN>W@5n^3<96HcM7@@0Nv(DJSxxs@ccGTbvtWHrIe%Ea{;K81`!#9lrmkNyZ(xlURU#7%d)HV zT}$m%?NaU4n!WmD-m7mqonC3LYV_%q_A1}Q)cd8CUG;tUJaF$F$Mb6ZKfUShqu!3) zd*mJOQrA25Q+m_)NSd*A&yi+qe7~sd+1al8&Lj6Pj^?WU+7nmuk2~jB6aVsaY~_>6 b)pPW9^nnw1_0Hw0`WhVG+SgQTGp_y%z=1dM literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..93ffc1b5e1501b8dcf31a48c7d736a37efef9908 GIT binary patch literal 11678 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

K5^Tw&UEkPvaZ!TGJmZV^=DZ97m-3tivR!s literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds new file mode 100644 index 0000000000000000000000000000000000000000..96e15e41c02429462b2196c2e74678ce73836d79 GIT binary patch literal 15838 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds new file mode 100644 index 0000000000000000000000000000000000000000..6ed07a1d16f0ec4175816b0a1c9fd794b81a8579 GIT binary patch literal 15690 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 VZ(t+;^SYMK{`J?QZAZUf{12sr@vi^? literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..28e4e53721a78c2acd2960b667533001f2eacdf7 GIT binary patch literal 16202 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 DCG{C; literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds new file mode 100644 index 0000000000000000000000000000000000000000..fe1176eb75fca881f108675a790ebec5d0743581 GIT binary patch literal 22154 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds new file mode 100644 index 0000000000000000000000000000000000000000..1ea7b4c3d0b77881ddec5ec3feab00fca280f63a GIT binary patch literal 22666 zcmcJXTa0B@)rEJRsybC&ed^j>bhyM25|9vtqPYrD>88;j?S)$)M5(AW4+28CB?M5T zpyDkM^g(zbBt~P9rw+liuWBMb2$+r{0xFuQ9Yaj?!B*n<)>>ojbE<03vLW;z^HF23 zvDausy6x81OM z>ka$vSY0{euJcxJy6cYBPkd``uk@nb-t_p|5?lB3-q&eQ`bZPwtd-Oc{uyGnfqe@(uvt$c_90j z%oAh(!k@C=T)ZdyP3htI=ga)fg$uIZlpgx$%KR%2XaAhJ$^2)_{3{P+|Ew9ze_Y-z z>LYnU3rx&x|lpgx~7i53sbJ^cFFNpmU zhqK?Dd^r0}>0$rOefWRm9qVH1TIeV5@SEfxelyCy!6i*Y+zwu8N!+5FQT)=5yun|o zu_WCL;)izRE&j^G*-!qK>z(uGI`sp;N!>s6iQ|*TeqFTl^+@i_eVm zmv-bG{>lT{PyUtbo&C>Wr8v?i)q^{{{94!=p<;WMN7 zOYJmI{KRmY$7R`1{Fm!t|KvSBlf1`gM){xGm42x|+=se@ZbtPdwL4sVh15NCGpc_) zC#j!2e@%So=4O7zjo)P4>Ar>0_-V(w;Wt?~bTe8%+7UPSE1%1L;-_5i+&``pzxYk! z7Tw%1etrJcernYNH>Izif9aog{KIdKeK7k?>FfRF{Cy<-FKdhR`9bHmQ+mzzX29o%Enm^N{~O=m z<1#%i)8p&9zdl=Zj{i-ZfAjgX%pX7JZqCo9&&}qB=ilOg)92^FPruyPjQZc`^9w$7 z^GN;v++#-m#q;yJEq$yd{i2)pZ?wOQ&njpO7M)MoHIG*1|_h;RM&%Yz%Yxd{$89UgLaiN6e@`=8fmclxi? z-06Sboay#Auj}0R1J(aWTP|Oz^^0b6%KAHW~X0O}NIn+`lP39DnbV z*>8>yvfq>*`pI9`&m?adml@?R?Z`X)CV7W$N)P)d@9j8+NM|$V@#~;!8<@;JIofpj=muoGho6NA{)58aIX{ZD1z z)ND(9=w{@fdN%u}?`(+=-HiOydB#osH}RpHk$>i~?Axm69Daxo-HiMLogwiJe%KNp zx*7RrZ_K{A<(Bx+&B#CZLiWwy*AgGP8TpBm=K35z=Ga`0A5(f5Klq3r6Cd$oMt5kDqAbTjf3C-{gT z6Cb)6`H2&J#E*#&-HiM^XL#=M{4sg%p_|e3k9Iuw@K-*W{XGB5_0IU?I_DSsCg&D( zbF=dc=ML(x$+?5NYewe}+Hvl{U-?@0bN(pTJIB9xSAK3U9p94YHo6%-ziG$3@te#$ z-M28BKkZm|{FPewq?^I{gLdpYev^GiH>3Th9p^6ml{$AN-Q3w-e`v?K0l&$)0o{zw z547Xlg5TualI~j=onNREoV%zWCi{kNM*BxQ_6@(u{-ygCM*BxQ_6>if_ATjVuz$2; z-|(C48@d_oAMMyT{FU0bq?^J1(T;V;Z?gXAX0-n76X&KS?O)}gynmdZ%Jne+IQQZ= zIrri-qw_EAs2liA>IS+Q)eqWn?!;fYKl|s+;QWby_KEB_IrpNQ(!=>vx9Go8bqhcB zD>3-|#C6WS_)X5e=w@{OWuIAh_TOaP(amW6X~(|fuhhOL-3-ppv}4@(O~#FGZZ>}Q z4S%Kf4L|#r80;U{**E+q`-W~t`$s$W4S%KfE$L>kf3zcR@tedgx*5f9|DCz+@vfWt z2dR7LW>o)ZN8L;B$_uG~>Ar%zn-f<$7oQbDg?J|0Z=0-HhrV?WlYB zD^>TBZU*&_c09N6n>@GB&FJ|>JL)EWle(GiTNu?(+L3qoP4W)ijPj3miaTcj#u6f3ze2@SEgcx^H2Wf3zd-@K-*W{p4S{-no8UC-3l^ zwL&eHs&3+^ekKO>lYL^{*gunXLpP)K zqaFK(zf${_bTc?V(vIgAev{`Gx*0vcXvezauhhCH-3->BcC0&olXXWoqxGj9>yE!t z>z;ITll3R=@SDUPelvG+nc+wkX4@Bc>k-{AN6BjZo^ z|5mww;qnRP{)N47ZBXCJ`s43El>O$Sz7K$IN?%_ei=WS7V}I4NU7yd)8AA1 z&vO~SNnQ?rzT5EmT>9r6O23>>P5MPQqyA|}zxYl1A3onk{Zs$hU!D&p`-^Ty`@6yS z7e@9s-Cz5f?qA6Mru!F0`%63a6~D>8qMOnFQYTqg>Zi%NqMOnB(vEe-Z@TW9(fU$n z=$HCq(r>Cig;D>!-=<&Qf1C6>{Qf-ZpLX<%-=u$ZGwPpl(l6sT=^x!()BkGv{)p@2 z=Tsl}sQtq&cRa22ly2(!aDJ`xYqyi%9OHQ?zbSp#zkB%mE8~C6^?BkOEmM7#Zm#+L z-H3nk-0YkDeM@}kX5{aGE&Ha#07O_|VPBKlA16 z-+D$%eCTH6*LSz_?{6Pyi4Wb3{ImMrB;%g_O-p>}X5^pyV)o6yt0g{kGx8HZJXeVy zGd)+On|{7dYg=`GSQkI|h#wOl@nc4Q;shV@W8yNPQRS%ugP~} z(M{={^^0~}zm)yvU?uxa>79P|2_O4s;zKthKj)~Km-6|_^G%{{^_%_zf$#xaZ!&F&x-vM=VgE8AF^-4JTLZ7em(om z{yEuiN)N~1doBCT@o#3oDZSHAoueJ~&tx9xru5LyI^#E4NBpMr(9b^OuT(w7Pd!Z> zeSa}>en|ajpYXF^ka$8jqvr?h*e84@`+#mr569m-Kl>}SANbji#L@Rx>&DMM(|@Jn z86WYScusf!#3#>3JZJL)#R%7fWY{VvzT@l!YPSE>%;qb?=}^^@z=J^Uth58aIFANxx`?7zuA zpqo+s<#Q%JK7X3{(9O;K#9jLQYQCEN#9#V+8^j;iiF^E&iuyu)vjcj#u6 zf1LlAcl!QYA@fEzqxsX0IK^M7{Y<(UJilp2oZ&YW@5ygU?~FhE#5sPGI8OI1l-}uQ zoftRkSE+F)-3-Q0JK_|-NgY8qrFZsEoYF7xTd97NZU+6+j&;LtvTo>Rw0^W>-SC^N zU%GE$w0^Xs&f%|A9ZI?xoS#`Io;$3c$#VzYjGjNV=^X z&FJ|{JD&UaO`iMcX7v209iMaXo77QsQ+j9o5a+Br@n5NRPr4bbKkfLOgx_4gH~UTL zVgJNEev`OQ_brU#pLWzw{FSPkNjHP~NjvH${z}!&q?&1nB=N8I7B zRNN)q4C0S=)NTAGbsOE>tbP-B_)X$2-M4VF_+#IRKa+hY{>*6qX-C}QuTL2r_ewoah`ejD*ryX&R-z5Ig%_#o)Jqmfx z?^jIn9^H)cpLWzu{3dl1-Hhrd?TB0am5SS>n?d~2j=aHdk~ipPls~j1Zt(9O-_hq%RW z61VuxD1K>2-r}!R-X`4)@|SkxEq;@{MK`1TP3@Go_{m>L-lCgP{?d+f6TV8Fo04t@ z=O@~6{>5){?nO7F^Dpmt$Xnk3nB;AGFH{)iFYU-%{3dyeZbtb_JMtEPrSdlEW{|(U zC!-(UKbhPI-IU(>{7>!F4}RV^K-K}>jNacePU;5ZH>n%wW>i1uhtFB`YjPiSQ+hal z`oUkR{lL$DBnI!V7$u0QX2@SCh7elvRi#yshV`B%Q0=TAJ8>z(~`ow|$P zr0$}dQTw{w_FFg7?{Cl(+95=c9+I)xnH&Uj1%Eg1t($W2!Z@GToO{;g_zHjxG z&)jtPTf6JTzuu0!Zk>BO?mBl&bl2&+uKK%_{$9Z&`hD&-dZyjilKn{EyDHT6v@grm zAAYYZzqcH^KYNt^|27N9uFLl~C5QK4^S!On`~OEdrTa}Pk4)w>F5Q&AJ}=7nrnD&d zrptXGK6Eqk&mN!s^V?hELpLKo-+`w8K^X_chiKTaN_py(^mx&)ne)r4Y)#N@9AG*25ziXub{qnt`{~c_(EN}X|Duuc} zJpK_sfByzQe;3EZpZ+dR;fDUQ|EU(s&lwIs#E)*S@n1N+{u*iecLa4!e-~DDO%-iT zT{|=VJ8OMiYaUkqJl@P4-QRQhu1h{VS|yMCZu$#W{b#t_6(70k@{2CcYdgrft-pCw z$JQUJxt(JhJ3;5^z0LH|{oPmXz4Wc!Yw^eb*S&_H1t;B*{*C;NERE#@yRPh>SLj!* M8SzhPwI`bY0cEMN-v9sr literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..d176a8914b0158a7e383aee0068aaf91fff5d3f4 GIT binary patch literal 20972 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..675a652065ba4f542bd6929ccbc05aa09d5201ab GIT binary patch literal 29100 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 Z>-l$BzRiWd@%^c9$MBG?|3@%|@;}Tr@oNA8 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_20v0_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_20v0_withptap.gds new file mode 100644 index 0000000000000000000000000000000000000000..8e8762cf5c06363cbb3799c0a914ea4c3232e051 GIT binary patch literal 271496 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/globals.py b/sky130/cells/klayout/pymacros/cells/globals.py new file mode 100644 index 000000000..c5a0765b2 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/globals.py @@ -0,0 +1,67 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# Global parameters generation +######################################################################################################################## + +import glob +import os +# Listing device names + +fixed_dev_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices" ) # parent file path + +BJT_NPN_DEV = glob.glob (f"{fixed_dev_path}/bjt/npn/*") + +for i in range(len(BJT_NPN_DEV)): + BJT_NPN_DEV[i] = BJT_NPN_DEV[i].split("/")[-1] + BJT_NPN_DEV[i] = BJT_NPN_DEV[i][:-4] + + +BJT_PNP_DEV = glob.glob (f"{fixed_dev_path}/bjt/pnp/*") + +for i in range(len(BJT_PNP_DEV)): + BJT_PNP_DEV[i] = BJT_PNP_DEV[i].split("/")[-1] + BJT_PNP_DEV[i] = BJT_PNP_DEV[i][:-4] + + +VPP_CAP_DEV= glob.glob (f"{fixed_dev_path}/VPP/*") + +for i in range(len(VPP_CAP_DEV)): + VPP_CAP_DEV[i] = VPP_CAP_DEV[i].split("/")[-1] + VPP_CAP_DEV[i] = VPP_CAP_DEV[i][:-4] + + +PHOTO_D_DEV = glob.glob (f"{fixed_dev_path}/photodiode/*") +for i in range(len(PHOTO_D_DEV)): + PHOTO_D_DEV[i] = PHOTO_D_DEV[i].split("/")[-1] + PHOTO_D_DEV[i] = PHOTO_D_DEV[i][:-4] + +RF_MOSFET_DEV = glob.glob (f"{fixed_dev_path}/rf/rf_mosfet/*") +for i in range(len(RF_MOSFET_DEV)): + RF_MOSFET_DEV[i] = RF_MOSFET_DEV[i].split("/")[-1] + RF_MOSFET_DEV[i] = RF_MOSFET_DEV[i][:-4] + +RF_BJT_DEV = glob.glob (f"{fixed_dev_path}/rf/rf_bjt/*") +for i in range(len(RF_BJT_DEV)): + RF_BJT_DEV[i] = RF_BJT_DEV[i].split("/")[-1] + RF_BJT_DEV[i] = RF_BJT_DEV[i][:-4] + +RF_COILS_DEV = glob.glob (f"{fixed_dev_path}/rf/rf_coils/*") +for i in range(len(RF_COILS_DEV)): + RF_COILS_DEV[i] = RF_COILS_DEV[i].split("/")[-1] + RF_COILS_DEV[i] = RF_COILS_DEV[i][:-4] + +#print (VPP_CAP_DEV) diff --git a/sky130/cells/klayout/pymacros/cells/gr.py b/sky130/cells/klayout/pymacros/cells/gr.py new file mode 100644 index 000000000..9f3425190 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/gr.py @@ -0,0 +1,102 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# Guard Ring Generator for skywater130 +######################################################################################################################## + +import pya +from .draw_guard_ring import * + +min_s = 0.27 +min_w = 0.17 +min_w_m1 = 0.23 +min_s_m1 = 0.38 + +class guard_ring_gen(pya.PCellDeclarationHelper): + """ + Guard Ring Generator for Skywater130 + """ + + def __init__(self): + # Initialize super class. + super(guard_ring_gen, self).__init__() + + #===================== PARAMETERS DECLARATIONS ===================== + + self.param("in_w", self.TypeDouble, "Inner Width", default=min_s, unit="um") + self.param("in_l", self.TypeDouble, "Inner Length", default=min_s, unit="um") + self.param("grw", self.TypeDouble, "Guard Ring Width", default=min_w, unit="um") + + + self.Type_handle = self.param("con_lev", self.TypeList, "Connection Level") + self.Type_handle.add_choice("None", "None") + self.Type_handle.add_choice("li", "li") + self.Type_handle.add_choice("metal1", "metal1") + + def display_text_impl(self): + # Provide a descriptive text for the cell + return f"Guard Ring(Ring Width = {self.grw})" + + def coerce_parameters_impl(self): + # We employ coerce_parameters_impl to decide whether the handle or the + # numeric parameter has changed (by comparing against the effective + # radius ru) and set ru to the effective radius. We also update the + # numerical value or the shape, depending on which on has not changed. + # w,l must be larger or equal than min. values. + + + if self.con_lev == "metal1": + if self.grw < min_w_m1 : + self.grw = min_w_m1 + + if self.in_l < min_s_m1 : + self.in_l = min_s_m1 + + if self.in_w < min_s_m1 : + self.in_w = min_s_m1 + else : + if self.grw < min_w : + self.grw = min_w + + if self.in_l < min_s : + self.in_l = min_s + + if self.in_w < min_s : + self.in_w = min_s + + def can_create_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we can use any shape which + # has a finite bounding box + return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() + + def parameters_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we set r and l from the shape's + # bounding box width and layer + self.r = self.shape.bbox().width() * self.layout.dbu / 2 + self.l = self.layout.get_info(self.layer) + + def transformation_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we use the center of the shape's + # bounding box to determine the transformation + return pya.Trans(self.shape.bbox().center()) + + def produce_impl(self): + instance = draw_gr(layout=self.layout, in_l=self.in_l, in_w=self.in_w , grw= self.grw , con_lev=self.con_lev) + write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + self.cell.insert(write_cells) + self.cell.flatten(1) + \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/layers_def.py b/sky130/cells/klayout/pymacros/cells/layers_def.py new file mode 100644 index 000000000..d9d751a6c --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/layers_def.py @@ -0,0 +1,101 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# Skywater 130nm Layers parameters generation +######################################################################################################################## + +from importlib.util import LazyLoader +from gdsfactory.types import LayerSpec + +diff_layer : LayerSpec = (65,20) +diff_lbl : LayerSpec = (65,6) + +tap_layer : LayerSpec = (65,44) +tap_lbl : LayerSpec = (65,5) + +nwell_layer : LayerSpec = (64,20) + +dnwell_layer : LayerSpec = (64,18) + +hvtp_layer : LayerSpec = (78,44) # high_vt PMOS + +hvi_layer : LayerSpec = (75,20) # high voltage layer for voltages higher than 1.8v + +lvtn_layer : LayerSpec = (125,44) # low_vt NMOS + +poly_layer : LayerSpec = (66,20) + +hvntm_layer : LayerSpec = (125,20) # high voltage n-implant + +nsdm_layer : LayerSpec = (93,44) + +psdm_layer : LayerSpec = (94,20) + +npc_layer : LayerSpec = (95,20) + +licon_layer : LayerSpec = (66,44) + +li_layer : LayerSpec = (67,20) +li_lbl : LayerSpec = (67,5) + +mcon_layer : LayerSpec = (67,44) + +m1_layer : LayerSpec = (68,20) +m1_lbl : LayerSpec = (68,5) + +via1_layer : LayerSpec = (68,44) + +m2_layer : LayerSpec = (69,20) +m2_lbl : LayerSpec = (69,5) + +via2_layer : LayerSpec = (69,44) + +m3_layer : LayerSpec = (70,20) +m3_lbl : LayerSpec = (70,5) + +via3_layer : LayerSpec = (70,44) + +m4_layer : LayerSpec = (71,20) +m4_lbl : LayerSpec = (71,5) + +via4_layer : LayerSpec = (71,44) + +m5_layer : LayerSpec = (72,20) +m5_lbl : LayerSpec = (72,5) + +pr_bound_layer : LayerSpec = (235,4) + +areaid_lvn_layer : LayerSpec = (81,60) + +areaid_dio_layer : LayerSpec = (81,23) + +capm_layer : LayerSpec = (89,44) + +cap2m_layer : LayerSpec = (97,44) + + +######res +diff_res : LayerSpec = (65,13) +poly_res : LayerSpec = (66,13) +rpm_drawing : LayerSpec = (86,20) +rpm_high_drawing : LayerSpec = (79,20) +pwell_res : LayerSpec = (64,13) +li1_res : LayerSpec = (67,13) +met1_res : LayerSpec = (68,13) +met2_res : LayerSpec = (69,13) +met3_res : LayerSpec = (70,13) +met4_res : LayerSpec = (71,13) +met5_res : LayerSpec = (72,13) diff --git a/sky130/cells/klayout/pymacros/cells/parent_res.py b/sky130/cells/klayout/pymacros/cells/parent_res.py new file mode 100644 index 000000000..be3e74bd2 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/parent_res.py @@ -0,0 +1,273 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +# res Generator for skywater130 + +import gdsfactory as gf +import math + +from abc import ABC, abstractmethod + +# ##############CONSTANT############3 + + +CONTACT_SPACE=0.19 +CONTACT_S=0.18 +CONTACT_N=10 +############################3 +class draw_res(ABC): + """parent abstracted class for the backend of the res + Args: + type (str): type of the res + """ + + def __init__(self, type): + self.type_ = type + self.c = gf.Component(self.type_) + + def set_l_w(self, len, wid): + """set the length and width of the res + Args: + len(float): length of the resistor + wid(float): width of the resistor + """ + self.l_res = len + self.w_res = wid + + def draw_rect_layer(self, layer_names, l_space, w_space): + """draw the rect layers of the res + Args: + layer_names(list[layers]): + list of the layer names + l_space(list[float]): + [0.5*length of the layers - 0.5*length of the marked layer] + w_space(list[float]): + [0.5*width of the layers - 0.5*width of the marked layer] + + """ + for layer_, l, w in zip(layer_names, l_space, w_space): + self.c.add_ref( + gf.components.rectangle( + size=(self.w_res + 2 * w, self.l_res + 2 * l), + layer=layer_, + centered=True, + ) + ) + + def draw_frame_layer(self, lay_nm, l_sp, w_sp, thi): + """draw the frame layers of the res + Args: + lay_nm(list[layers]): + list of the layer names + l_sp(list[float]): + [0.5*length of the layers - 0.5*length of the marked layer] + w_sp(list[float]): + [0.5*width of the layers - 0.5*width of the marked layer] + thi(list[float]): + list of the thickness of the frame + + """ + for layer_, l, w, thick in zip(lay_nm, l_sp, w_sp, thi): + l_h = thick + w_h = self.w_res + 2 * w + + l_v = self.l_res + 2 * l - 2 * thick + w_v = thick + + res1 = self.c.add_ref( + gf.components.rectangle( + size=(w_h, l_h), layer=layer_, centered=True + ) + ) + res2 = self.c.add_ref( + gf.components.rectangle( + size=(w_h, l_h), layer=layer_, centered=True + ) + ) + + res1.movey(0.5 * l_v + 0.5 * l_h) + res2.movey(-1 * (0.5 * l_v + 0.5 * l_h)) + + res1 = self.c.add_ref( + gf.components.rectangle( + size=(w_v, l_v), layer=layer_, centered=True + ) + ) + res2 = self.c.add_ref( + gf.components.rectangle( + size=(w_v, l_v), layer=layer_, centered=True + ) + ) + + res1.movex(0.5 * w_h - 0.5 * w_v) + res2.movex(-1 * (0.5 * w_h - 0.5 * w_v)) + + def draw_contact_layer_h( + self, layer_names, l_space, sizes_w, sizes_l, s_fit_in, s_btw + ): + """draw the horizontal contact layers of the res + Args: + layer_names(list[layers]): + list of the layer names + l_space(list[float]): + [0.5*length of the layers - 0.5*length of the marked layer] + sizes_w(list[float]): + list of contacts width + sizes_l(list[float]): + list of contacts length + s_fit_in(list[float]): + list of total length to fit contacts in + s_btw(list[float]): + list of the spaces btw the contacts + + """ + for layer_, l, size_l, size_w, space_fit, space_btw in zip( + layer_names, l_space, sizes_l, sizes_w, s_fit_in, s_btw + ): + + counts = math.floor((space_fit) / (size_w + space_btw)) + if counts < 1: + counts = 1 + res = gf.components.rectangle( + size=(size_w, size_l), layer=layer_, centered=True + ) + res_ar1 = self.c.add_array( + res, + rows=1, + columns=counts, + spacing=(size_w + space_btw, size_w + space_btw), + ) + res_ar2 = self.c.add_array( + res, + rows=1, + columns=counts, + spacing=(size_w + space_btw, size_w + space_btw), + ) + + res_ar1.movey(size_l * 0.5 + l + self.l_res * 0.5) + res_ar2.movey(-1 * (size_l * 0.5 + l + self.l_res * 0.5)) + + res_ar1.movex(-(counts - 1) * (size_w + space_btw) * 0.5) + res_ar2.movex(-(counts - 1) * (size_w + space_btw) * 0.5) + + def draw_contact_layer_v( + self, + layer_names, + l_space, + sizes_w, + sizes_l, + space_fit_in, + spaces_btw=None, + ): + """draw the vertical contact layers of the res + Args: + layer_names(list[layers]): + list of the layer names + l_space(list[float]): + [0.5*length of the layers - 0.5*length of the marked layer] + sizes_w(list[float]): + list of contacts width + sizes_l(list[float]): + list of contacts length + space_fit_in(list[float]): + list of total length to fit contacts in + spaces_btw(list[float]): + list of the spaces btw the contacts + """ + if spaces_btw is None: + spaces_btw = sizes_w + for layer_, l, size_l, size_w, space_fit, space_btw in zip( + layer_names, + l_space, + sizes_l, + sizes_w, + space_fit_in, + spaces_btw, + ): + + counts = math.floor((space_fit) / (size_w + space_btw)) + res = gf.components.rectangle( + size=(size_w, size_l), layer=layer_, centered=True + ) + res_ar1 = self.c.add_array( + res, + rows=counts, + columns=1, + spacing=(size_l + space_btw, size_l + space_btw), + ) + res_ar2 = self.c.add_array( + res, + rows=counts, + columns=1, + spacing=(size_l + space_btw, size_l + space_btw), + ) + + res_ar1.movey(-(counts - 1) * size_l) + res_ar2.movey(-(counts - 1) * size_l) + + res_ar1.movex(0.5 * self.w_res + l + 0.5 * size_w) + res_ar2.movex(-(0.5 * self.w_res + l + 0.5 * size_w)) + + def draw_2dArr_layer(self, layer_names, mcon_d, l_up=0, l_down=0, n=0): + """draw the 2d contact layers of the res + Args: + layer_names(list[layers]): list of the layer names + mcon_d(list[float]): list of contacts thickness + l_up(list[float]): upper contacts array space from marked layer + l_down(list[float]): down contacts array space from marked layer + n(list[float]): list of the 1 for 2d arr and 0 for 1d arr + """ + res = gf.components.rectangle( + size=(mcon_d, mcon_d), layer=layer_names, centered=True + ) + + counts_arr = math.floor(self.w_res / (2*CONTACT_S)) + if counts_arr <= 0: + counts_arr = 1 + if counts_arr % 2 == 0 and counts_arr > CONTACT_N: + counts_arr = counts_arr - 1 + res_ar1 = self.c.add_array( + res, + rows=6, + columns=counts_arr + n, + spacing=(mcon_d + CONTACT_SPACE, mcon_d + CONTACT_SPACE), + ) + res_ar2 = self.c.add_array( + res, + rows=6, + columns=counts_arr + n, + spacing=(mcon_d + CONTACT_SPACE, mcon_d + CONTACT_SPACE), + ) + + res_ar1.movey(mcon_d * 0.5 + l_up + (self.l_res) * 0.5) + res_ar2.movey(-1 * (mcon_d * 0.5 + l_down + (self.l_res) * 0.5)) + if (counts_arr + n) != 1: + # res_ar1.movex(-1*(mcon_d * 0.5 + 0.5*self.w_res)) + # res_ar2.movex(-1 * (mcon_d * 0.5 +0.5*self.w_res)) + res_ar1.movex(-(counts_arr + n - 1) * CONTACT_S) + res_ar2.movex(-(counts_arr + n - 1) * CONTACT_S) + + def get_c(self): + """get component + + Returns: + c(gf.component): layout creates + """ + return self.c + + @abstractmethod + def your_res(): + """must override in the child class""" + pass diff --git a/sky130/cells/klayout/pymacros/cells/res_diff_child.py b/sky130/cells/klayout/pymacros/cells/res_diff_child.py new file mode 100644 index 000000000..6977e64d6 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/res_diff_child.py @@ -0,0 +1,731 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + + +# res Generator for skywater130 + +from .layers_def import ( + diff_layer, + diff_res, + nsdm_layer, + tap_layer, + psdm_layer, + li_layer, + licon_layer, + m1_layer, + mcon_layer, + hvi_layer, + hvntm_layer, + nwell_layer, +) +from .parent_res import draw_res + +# ##########constant################# +# [l,w] +# react +DIFF_RES = 0 +DIFF_LAYER_ND = [0.515, 0] +NSDM_LAYER_ND = [0.64, 0.125] +# HVT +HVI_ND = [1.43, 0.915, 0.7, 0.21] +HVNTM_ND = [0.7, 0.185] +# [l,w,thickness] +# frame +TAP_ND_LVT = [1.125, 0.61, 0.17] +PSDM_ND_LVT = [1.25, 0.735, 0.42] +LI_ND_LVT = [1.125, 0.61, 0.17] +# HVT +TAP_ND_HVT = [1.245, 0.73, 0.29] +PSDM_ND_HVT = [1.37, 0.855, 0.54] +LI_ND_HVT = [1.185, 0.67, 0.17] +# [l,w,thickness_l,thickness_w,space] +# CONTACT H +LICON1_ND_LVT = [0.285, 0.17, 0.17, 0, 0.17] +LICON2_ND_LVT = [0.955, 0.17, 0.17, 0, 0.17] +MCON_ND_LVT = [0.185, 0.17, 0.17, 0, 0.19] +M1_ND_LVT = [0.025, 0.49, 0, 0, 0] +LI1_ND_LVT = [0.085, 0.2, 0, 0, 0] +LI2_ND_LVT = [0.285, 0.17, 0, 0, 0] +# HVT +LICON2_ND_HVT = 1.015 + +# CONTACT V +LICON3_ND_LVT = [0.44, 0.17, 0.17, 1.37, 0.17] +# HVT +LICON3_ND_HVT = 0.5 + +# #####PD +NWELL_PD = [1.305, 0.79] +# HVT +NWELL_PD_HVT = [1.575, 1.06] +HVI_PD_HVT = [1.575, 1.06] +# frame +TAP_PD_HVT = [1.245, 0.73, 0.29] +PSDM_PD_HVT = [1.37, 0.855, 0.54] +LI_PD_HVT = [1.185, 0.67, 0.17] + + +################################# + + +class res_diff_draw(draw_res): + """child class for the backend of the diff res + Args: + type_ (str): type of the res + """ + + def __init__(self, type_): + super().__init__(type_) + + def your_res( + self, + layout, + type="sky130_fd_pr__res_nd_lvt", + l: float = 2.1, + w: float = 0.42, + gr: int = 1, + ): + """draw the res with calling the parent func with right data + + Args: + layout(layout): drawing layout + type(float): type of the resistor + l(float): length of the resistor + w(float): width of the resistor + gr(int): guard ring of the resistor + + """ + self.set_l_w(l, w) + if type == "sky130_fd_pr__res_nd_lvt": + + # rects + layer_names = [diff_res, diff_layer, nsdm_layer] + l1 = [DIFF_RES, DIFF_LAYER_ND[0], NSDM_LAYER_ND[0]] + w1 = [DIFF_RES, DIFF_LAYER_ND[1], NSDM_LAYER_ND[1]] + + self.draw_rect_layer(layer_names, l1, w1) + + # frams + layer_names = [tap_layer, psdm_layer, li_layer] + l1 = [TAP_ND_LVT[0], PSDM_ND_LVT[0], LI_ND_LVT[0]] + w1 = [TAP_ND_LVT[1], PSDM_ND_LVT[1], LI_ND_LVT[1]] + thick = [TAP_ND_LVT[2], PSDM_ND_LVT[2], LI_ND_LVT[2]] + + if gr == 1: + self.draw_frame_layer(layer_names, l1, w1, thick) + + # countacts + + layer_names = [ + licon_layer, + licon_layer, + mcon_layer, + m1_layer, + li_layer, + li_layer, + ] + l1 = [ + LICON1_ND_LVT[0], + LICON2_ND_LVT[0], + MCON_ND_LVT[0], + M1_ND_LVT[0], + LI1_ND_LVT[0], + LI2_ND_LVT[0], + ] + sizes_l = [ + LICON1_ND_LVT[1], + LICON2_ND_LVT[1], + MCON_ND_LVT[1], + M1_ND_LVT[1], + LI1_ND_LVT[1], + LI2_ND_LVT[1], + ] + sizes_w = [ + LICON1_ND_LVT[2], + LICON2_ND_LVT[2], + MCON_ND_LVT[2], + w - 0.05, + w - 0.12, + w + 0.04, + ] + space_fit_in = [ + w, + w + 0.34, + w - 0.12, + M1_ND_LVT[3], + LI1_ND_LVT[3], + LI2_ND_LVT[3], + ] + spaces = [ + LICON1_ND_LVT[4], + LICON2_ND_LVT[4], + MCON_ND_LVT[4], + M1_ND_LVT[4], + LI1_ND_LVT[4], + LI2_ND_LVT[4], + ] + + if gr == 0: + layer_names = [ + licon_layer, + mcon_layer, + m1_layer, + li_layer, + li_layer, + ] + l1 = [ + LICON1_ND_LVT[0], + MCON_ND_LVT[0], + M1_ND_LVT[0], + LI1_ND_LVT[0], + LI2_ND_LVT[0], + ] + sizes_l = [ + LICON1_ND_LVT[1], + MCON_ND_LVT[1], + M1_ND_LVT[1], + LI1_ND_LVT[1], + LI2_ND_LVT[1], + ] + sizes_w = [ + LICON1_ND_LVT[2], + MCON_ND_LVT[2], + w - 0.05, + w - 0.12, + w + 0.04, + ] + space_fit_in = [ + w, + w - 0.12, + M1_ND_LVT[3], + LI1_ND_LVT[3], + LI2_ND_LVT[3], + ] + spaces = [ + LICON1_ND_LVT[4], + MCON_ND_LVT[4], + M1_ND_LVT[4], + LI1_ND_LVT[4], + LI2_ND_LVT[4], + ] + + self.draw_contact_layer_h( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + if gr: + layer_names = [licon_layer] + l1 = [LICON3_ND_LVT[0]] + sizes_l = [LICON3_ND_LVT[1]] + sizes_w = [LICON3_ND_LVT[2]] + space_fit_in = [l + LICON3_ND_LVT[3]] + spaces = [LICON3_ND_LVT[4]] + self.draw_contact_layer_v( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + c = self.get_c() + c.write_gds("res_temp.gds") + layout.read("res_temp.gds") + cell_name = type + return layout.cell(cell_name) + elif type == "sky130_fd_pr__res_nd_hvt": + # rects + layer_names = [ + diff_res, + diff_layer, + nsdm_layer, + hvi_layer, + hvntm_layer, + ] + l1 = [ + DIFF_RES, + DIFF_LAYER_ND[0], + NSDM_LAYER_ND[0], + HVI_ND[0], + HVNTM_ND[0], + ] + w1 = [ + DIFF_RES, + DIFF_LAYER_ND[1], + NSDM_LAYER_ND[1], + HVI_ND[1], + HVNTM_ND[1], + ] + + if gr == 0: + layer_names = [ + diff_res, + diff_layer, + nsdm_layer, + hvi_layer, + hvntm_layer, + ] + l1 = [ + DIFF_RES, + DIFF_LAYER_ND[0], + NSDM_LAYER_ND[0], + HVI_ND[2], + HVNTM_ND[0], + ] + w1 = [ + DIFF_RES, + DIFF_LAYER_ND[1], + NSDM_LAYER_ND[1], + HVI_ND[3], + HVNTM_ND[1], + ] + + self.draw_rect_layer(layer_names, l1, w1) + + # frams + layer_names = [tap_layer, psdm_layer, li_layer] + + l1 = [TAP_ND_HVT[0], PSDM_ND_HVT[0], LI_ND_HVT[0]] + w1 = [TAP_ND_HVT[1], PSDM_ND_HVT[1], LI_ND_HVT[1]] + thick = [TAP_ND_HVT[2], PSDM_ND_HVT[2], LI_ND_HVT[2]] + + if gr: + self.draw_frame_layer(layer_names, l1, w1, thick) + + # countacts + + layer_names = [ + licon_layer, + licon_layer, + mcon_layer, + m1_layer, + li_layer, + li_layer, + ] + + l1 = [ + LICON1_ND_LVT[0], + LICON2_ND_HVT, + MCON_ND_LVT[0], + M1_ND_LVT[0], + LI1_ND_LVT[0], + LI2_ND_LVT[0], + ] + sizes_l = [ + LICON1_ND_LVT[1], + LICON2_ND_LVT[1], + MCON_ND_LVT[1], + M1_ND_LVT[1], + LI1_ND_LVT[1], + LI2_ND_LVT[1], + ] + sizes_w = [ + LICON1_ND_LVT[2], + LICON2_ND_LVT[2], + MCON_ND_LVT[2], + w - 0.05, + w - 0.12, + w + 0.04, + ] + space_fit_in = [ + w, + w + 0.34, + w - 0.12, + M1_ND_LVT[3], + LI1_ND_LVT[3], + LI2_ND_LVT[3], + ] + spaces = [ + LICON1_ND_LVT[4], + LICON2_ND_LVT[4], + MCON_ND_LVT[4], + M1_ND_LVT[4], + LI1_ND_LVT[4], + LI2_ND_LVT[4], + ] + + if gr == 0: + layer_names = [ + licon_layer, + mcon_layer, + m1_layer, + li_layer, + li_layer, + ] + + l1 = [ + LICON1_ND_LVT[0], + MCON_ND_LVT[0], + M1_ND_LVT[0], + LI1_ND_LVT[0], + LI2_ND_LVT[0], + ] + sizes_l = [ + LICON1_ND_LVT[1], + MCON_ND_LVT[1], + M1_ND_LVT[1], + LI1_ND_LVT[1], + LI2_ND_LVT[1], + ] + sizes_w = [ + LICON1_ND_LVT[2], + MCON_ND_LVT[2], + w - 0.05, + w - 0.12, + w + 0.04, + ] + space_fit_in = [ + w, + w - 0.12, + M1_ND_LVT[3], + LI1_ND_LVT[3], + LI2_ND_LVT[3], + ] + spaces = [ + LICON1_ND_LVT[4], + MCON_ND_LVT[4], + M1_ND_LVT[4], + LI1_ND_LVT[4], + LI2_ND_LVT[4], + ] + + self.draw_contact_layer_h( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + layer_names = [licon_layer] + l1 = [LICON3_ND_HVT] + sizes_l = [LICON3_ND_LVT[1]] + sizes_w = [LICON3_ND_LVT[2]] + space_fit_in = [l + LICON3_ND_LVT[3]] + spaces = [LICON3_ND_LVT[4]] + + if gr: + self.draw_contact_layer_v( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + c = self.get_c() + c.write_gds("res_temp.gds") + layout.read("res_temp.gds") + cell_name = type + return layout.cell(cell_name) + elif type == "sky130_fd_pr__res_pd_lvt": + + # rects + layer_names = [ + diff_res, + diff_layer, + psdm_layer, + nwell_layer, + ] + + l1 = [DIFF_RES, DIFF_LAYER_ND[0], NSDM_LAYER_ND[0], NWELL_PD[0]] + w1 = [DIFF_RES, DIFF_LAYER_ND[1], NSDM_LAYER_ND[1], NWELL_PD[1]] + + if gr == 0: + layer_names = [ + diff_res, + diff_layer, + psdm_layer, + ] + l1 = [DIFF_RES, DIFF_LAYER_ND[0], NSDM_LAYER_ND[0]] + w1 = [DIFF_RES, DIFF_LAYER_ND[1], NSDM_LAYER_ND[1]] + + self.draw_rect_layer(layer_names, l1, w1) + + # frams + layer_names = [tap_layer, nsdm_layer, li_layer] + l1 = [TAP_ND_LVT[0], PSDM_ND_LVT[0], LI_ND_LVT[0]] + w1 = [TAP_ND_LVT[1], PSDM_ND_LVT[1], LI_ND_LVT[1]] + thick = [TAP_ND_LVT[2], PSDM_ND_LVT[2], LI_ND_LVT[2]] + + if gr: + + self.draw_frame_layer(layer_names, l1, w1, thick) + + # countacts + + layer_names = [ + licon_layer, + licon_layer, + mcon_layer, + m1_layer, + li_layer, + li_layer, + ] + l1 = [ + LICON1_ND_LVT[0], + LICON2_ND_LVT[0], + MCON_ND_LVT[0], + M1_ND_LVT[0], + LI1_ND_LVT[0], + LI2_ND_LVT[0], + ] + sizes_l = [ + LICON1_ND_LVT[1], + LICON2_ND_LVT[1], + MCON_ND_LVT[1], + M1_ND_LVT[1], + LI1_ND_LVT[1], + LI2_ND_LVT[1], + ] + sizes_w = [ + LICON1_ND_LVT[2], + LICON2_ND_LVT[2], + MCON_ND_LVT[2], + w - 0.05, + w - 0.12, + w + 0.04, + ] + space_fit_in = [ + w, + w + 0.34, + w - 0.12, + M1_ND_LVT[3], + LI1_ND_LVT[3], + LI2_ND_LVT[3], + ] + spaces = [ + LICON1_ND_LVT[4], + LICON2_ND_LVT[4], + MCON_ND_LVT[4], + M1_ND_LVT[4], + LI1_ND_LVT[4], + LI2_ND_LVT[4], + ] + + if gr == 0: + + layer_names = [ + licon_layer, + mcon_layer, + m1_layer, + li_layer, + li_layer, + ] + l1 = [ + LICON1_ND_LVT[0], + MCON_ND_LVT[0], + M1_ND_LVT[0], + LI1_ND_LVT[0], + LI2_ND_LVT[0], + ] + sizes_l = [ + LICON1_ND_LVT[1], + MCON_ND_LVT[1], + M1_ND_LVT[1], + LI1_ND_LVT[1], + LI2_ND_LVT[1], + ] + sizes_w = [ + LICON1_ND_LVT[2], + MCON_ND_LVT[2], + w - 0.05, + w - 0.12, + w + 0.04, + ] + space_fit_in = [ + w, + w - 0.12, + M1_ND_LVT[3], + LI1_ND_LVT[3], + LI2_ND_LVT[3], + ] + spaces = [ + LICON1_ND_LVT[4], + MCON_ND_LVT[4], + M1_ND_LVT[4], + LI1_ND_LVT[4], + LI2_ND_LVT[4], + ] + + self.draw_contact_layer_h( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + layer_names = [licon_layer] + l1 = [LICON3_ND_LVT[0]] + sizes_l = [LICON3_ND_LVT[1]] + sizes_w = [LICON3_ND_LVT[2]] + space_fit_in = [l + LICON3_ND_LVT[3]] + spaces = [LICON3_ND_LVT[4]] + if gr: + + self.draw_contact_layer_v( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + c = self.get_c() + c.write_gds("res_temp.gds") + layout.read("res_temp.gds") + cell_name = type + return layout.cell(cell_name) + elif type == "sky130_fd_pr__res_pd_hvt": + + # rects + layer_names = [ + diff_res, + diff_layer, + psdm_layer, + hvi_layer, + nwell_layer, + ] + l1 = [ + DIFF_RES, + DIFF_LAYER_ND[0], + NSDM_LAYER_ND[0], + HVI_PD_HVT[0], + NWELL_PD_HVT[0], + ] + w1 = [ + DIFF_RES, + DIFF_LAYER_ND[1], + NSDM_LAYER_ND[1], + HVI_PD_HVT[1], + NWELL_PD_HVT[1], + ] + + if gr == 0: + layer_names = [ + diff_res, + diff_layer, + psdm_layer, + hvi_layer, + ] + l1 = [DIFF_RES, DIFF_LAYER_ND[0], NSDM_LAYER_ND[0], HVI_ND[2]] + w1 = [DIFF_RES, DIFF_LAYER_ND[1], NSDM_LAYER_ND[1], HVI_ND[3]] + self.draw_rect_layer(layer_names, l1, w1) + + # frams + layer_names = [tap_layer, nsdm_layer, li_layer] + l1 = [TAP_PD_HVT[0], PSDM_PD_HVT[0], LI_PD_HVT[0]] + w1 = [TAP_PD_HVT[1], PSDM_PD_HVT[1], LI_PD_HVT[1]] + thick = [TAP_PD_HVT[2], PSDM_PD_HVT[2], LI_PD_HVT[2]] + + if gr: + + self.draw_frame_layer(layer_names, l1, w1, thick) + + # countacts + + layer_names = [ + licon_layer, + licon_layer, + mcon_layer, + m1_layer, + li_layer, + li_layer, + ] + l1 = [ + LICON1_ND_LVT[0], + LICON2_ND_HVT, + MCON_ND_LVT[0], + M1_ND_LVT[0], + LI1_ND_LVT[0], + LI2_ND_LVT[0], + ] + sizes_l = [ + LICON1_ND_LVT[1], + LICON2_ND_LVT[1], + MCON_ND_LVT[1], + M1_ND_LVT[1], + LI1_ND_LVT[1], + LI2_ND_LVT[1], + ] + sizes_w = [ + LICON1_ND_LVT[2], + LICON2_ND_LVT[2], + MCON_ND_LVT[2], + w - 0.05, + w - 0.12, + w + 0.04, + ] + space_fit_in = [ + w, + w + 0.34, + w - 0.12, + M1_ND_LVT[3], + LI1_ND_LVT[3], + LI2_ND_LVT[3], + ] + spaces = [ + LICON1_ND_LVT[4], + LICON2_ND_LVT[4], + MCON_ND_LVT[4], + M1_ND_LVT[4], + LI1_ND_LVT[4], + LI2_ND_LVT[4], + ] + + if gr == 0: + layer_names = [ + licon_layer, + mcon_layer, + m1_layer, + li_layer, + li_layer, + ] + l1 = [ + LICON1_ND_LVT[0], + MCON_ND_LVT[0], + M1_ND_LVT[0], + LI1_ND_LVT[0], + LI2_ND_LVT[0], + ] + sizes_l = [ + LICON1_ND_LVT[1], + MCON_ND_LVT[1], + M1_ND_LVT[1], + LI1_ND_LVT[1], + LI2_ND_LVT[1], + ] + sizes_w = [ + LICON1_ND_LVT[2], + MCON_ND_LVT[2], + w - 0.05, + w - 0.12, + w + 0.04, + ] + space_fit_in = [ + w, + w - 0.12, + M1_ND_LVT[3], + LI1_ND_LVT[3], + LI2_ND_LVT[3], + ] + spaces = [ + LICON1_ND_LVT[4], + MCON_ND_LVT[4], + M1_ND_LVT[4], + LI1_ND_LVT[4], + LI2_ND_LVT[4], + ] + + self.draw_contact_layer_h( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + layer_names = [licon_layer] + l1 = [LICON3_ND_HVT] + sizes_l = [LICON3_ND_LVT[1]] + sizes_w = [LICON3_ND_LVT[2]] + space_fit_in = [l + LICON3_ND_LVT[3]] + spaces = [LICON3_ND_LVT[4]] + if gr: + + self.draw_contact_layer_v( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + c = self.get_c() + c.write_gds("res_temp.gds") + layout.read("res_temp.gds") + cell_name = type + return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py new file mode 100644 index 000000000..a08a3501e --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py @@ -0,0 +1,87 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +from .res_klayout_panel import res +from .res_diff_child import res_diff_draw + +# ################constants################ +L_MIN = 2.1 +W_MIN = 0.42 +# ##############sheet resistances +RES_ND_LVT = 772.2 # sheet res for sky130_fd_pr__res_nd_lvt +RES_ND_HVT = 714.28 # sheet res for sky130_fd_pr__res_nd_hvt +RES_PD = 1172.33 # sheet res for sky130_fd_pr__res_pd_lvt,hvt +########################################## + + +class res_diff(res): + """child class for the front end of the diff res (klayout panel) + Args: + res(class): parent class for all types of resistors + l_min(float): minimum length of the resistor + w_min(float): minimum width of the resistor + + """ + + def __init__(self): + super().__init__(L_MIN, W_MIN) # (l_min,w_min) + + # types of resistor you need to add + # it goes in var self.type + + self.Type_handle.add_choice( + "sky130_fd_pr__res_nd_lvt", "sky130_fd_pr__res_nd_lvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_nd_hvt", "sky130_fd_pr__res_nd_hvt" + ) + + self.Type_handle.add_choice( + "sky130_fd_pr__res_pd_lvt", "sky130_fd_pr__res_pd_lvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_pd_hvt", "sky130_fd_pr__res_pd_hvt" + ) + + def coerce_parameters_impl(self): + """(override func) check the minimum values of l and w + + decide whether the handle or the numeric parameter has + changed (by comparing against the effective + radius ru) and set ru to the effective radius. We also update the + numerical value or the shape, depending on which on has not changed + + + """ + super().coerce_parameters_impl(L_MIN, W_MIN) # (l_min,w_min) + # res_value = sheet res * area + if self.type == "sky130_fd_pr__res_nd_lvt": + self.res_value = RES_ND_LVT * self.area + elif self.type == "sky130_fd_pr__res_nd_hvt": + self.res_value = RES_ND_HVT * self.area + else: + self.res_value = RES_PD * self.area + + def produce_impl(self): + """(override func)call the implementation backend code + create instance and pass it to the parent func + + instance(layout): the result layout to show + + """ + drw = res_diff_draw(self.type) + instance = drw.your_res( + self.layout, l=self.len, w=self.w, type=self.type, gr=self.gr + ) + super().produce_impl(instance) diff --git a/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py new file mode 100644 index 000000000..41060cbfe --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py @@ -0,0 +1,132 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +# res Generator for skywater130 + +import pya + + +class res(pya.PCellDeclarationHelper): + """parent class for the front end of the res (klayout panel) + Args: + l_min(float): minimum length of the resistor + w_min(float): minimum width of the resistor + """ + + def __init__(self, l_min, w_min): + # Initialize super class. + super(res, self).__init__() + + # ===================== PARAMETERS DECLARATIONS ===================== + + self.Type_handle = self.param("type", self.TypeList, "Device Type") + + self.param("len", self.TypeDouble, "length", default=l_min, unit="um") + self.param("w", self.TypeDouble, "width", default=w_min, unit="um") + + self.param("gr", self.TypeBoolean, "Gaurd Ring", default=1) + self.param( + "area", self.TypeDouble, "Area", readonly=True, unit="um^2" + ) + self.param( + "res_value", + self.TypeDouble, + "Res Value", + readonly=True, + unit="ohms", + ) + + def display_text_impl(self): + """Provide a descriptive text for the cell + Return: + (str):the res name with len and w + """ + + # Provide a descriptive text for the cell + return ( + "Resistor_" + + str(self.type) + + "(L=" + + ("%.3f" % self.len) + + ",W=" + + ("%.3f" % self.w) + + ")" + ) + + def coerce_parameters_impl(self, l_min, w_min): + """check the minimum values of l and w + + decide whether the handle or the numeric parameter has + changed (by comparing against the effective + radius ru) and set ru to the effective radius. We also update the + numerical value or the shape, depending on which on has not changed + Args: + l_min(float): minimum length of the resistor + w_min(float): minimum width of the resistor + + """ + + self.area = self.w * self.len + + if self.len < l_min: + self.len = l_min + + if self.w < w_min: + self.w = w_min + + def can_create_from_shape_impl(self): + """Implement the Create PCell + + we can use any shape which has a finite bounding box + """ + + return ( + self.shape.is_box() + or self.shape.is_polygon() + or self.shape.is_path() + ) + + def parameters_from_shape_impl(self): + """Implement the "Create PCell from shape" protocol: + + we set r and l from the shape's bounding box width and layer + """ + self.r = self.shape.bbox().width() * self.layout.dbu / 2 + self.len = self.layout.get_info(self.layer) + + def transformation_from_shape_impl(self): + """Implement the "Create PCell from shape" protocol: + + we use the center of the shape's bounding box + to determine the transformation + """ + return pya.Trans(self.shape.bbox().center()) + + def produce_impl(self, instance): + """call the implementation backend code + Args: + instance(layout): the result layout to show + + """ + write_cells = pya.CellInstArray( + instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) + self.cell.insert(write_cells) + self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/res_metal_child.py b/sky130/cells/klayout/pymacros/cells/res_metal_child.py new file mode 100644 index 000000000..018ca4f02 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/res_metal_child.py @@ -0,0 +1,109 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + + +# res Generator for skywater130 + +from .layers_def import ( + li1_res, + li_layer, + met1_res, + met2_res, + met3_res, + met4_res, + met5_res, + m1_layer, + m2_layer, + m3_layer, + m4_layer, + m5_layer, +) +from .parent_res import draw_res +from gdsfactory.types import LayerSpec + +# ########constants########## +# ONLY FOR GENERIC RES +L_MIN_G = 0.17 +W_MIN_G = 0.17 +# REACT +LI_LYAER_G = [0.285, 0] + + +# ########################## +class res_metal_draw(draw_res): + """child class for the backend of the metal res + Args: + type_ (str): type of the res + """ + + def __init__(self, type_): + super().__init__(type_) + # self.l=l + # self.w=w + # self.your_res() + + def gen_res(self, ly1: LayerSpec, ly2: LayerSpec): + """draw the different metal res + + Args: + ly1(LayerSpec): marked layer + ly2(LayerSpec): overlapping layer + + """ + layer_names = [ly1, ly2] + l1 = [0, LI_LYAER_G[0]] + w1 = [0, LI_LYAER_G[1]] + self.draw_rect_layer(layer_names, l1, w1) + + def your_res( + self, + layout, + type="sky130_fd_pr__res_generic_l1", + l: float = L_MIN_G, + w: float = W_MIN_G, + ): + """draw the res with calling the parent func with right data + + Args: + layout(layout): drawing layout + type(str): type of the resistor + l(float): length of the resistor + w(float): width of the resistor + + """ + self.set_l_w(l, w) + + if type == "sky130_fd_pr__res_generic_l1": + self.gen_res(li1_res, li_layer) + + elif type == "sky130_fd_pr__res_generic_m1": + self.gen_res(met1_res, m1_layer) + + elif type == "sky130_fd_pr__res_generic_m2": + self.gen_res(met2_res, m2_layer) + + elif type == "sky130_fd_pr__res_generic_m3": + self.gen_res(met3_res, m3_layer) + + elif type == "sky130_fd_pr__res_generic_m4": + self.gen_res(met4_res, m4_layer) + + elif type == "sky130_fd_pr__res_generic_m5": + self.gen_res(met5_res, m5_layer) + c = self.get_c() + c.write_gds("res_temp.gds") + layout.read("res_temp.gds") + cell_name = type + return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py new file mode 100644 index 000000000..94b4c951d --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py @@ -0,0 +1,119 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +from .res_klayout_panel import res +from .res_metal_child import res_metal_draw + +# ################constants################ +L_MIN = 0.17 +W_MIN = 0.17 + +L_MIN_M1 = 0.14 +L_MIN_M2 = 0.14 +L_MIN_M3 = 0.3 +L_MIN_M4 = 0.3 +L_MIN_M5 = 1.6 + +# ##############sheet resistances +RES_GEN = 442.9 # sheet res for sky130_fd_pr__res_generic_l1 + + +RES_M1 = 6.377 # sheet res for sky130_fd_pr__res_generic_m1 +RES_M2 = 6.377 # sheet res for sky130_fd_pr__res_generic_m2 +RES_M3 = 0.522 # sheet res for sky130_fd_pr__res_generic_m3 +RES_M4 = 0.522 # sheet res for sky130_fd_pr__res_generic_m4 +RES_M5 = 0.0113 # sheet res for sky130_fd_pr__res_generic_m5 + +########################################## + + +class res_metal(res): + """child class for the front end of the poly res (klayout panel) + Args: + res(class): parent class for all types of resistors + l_min(float): minimum length of the resistor + w_min(float): minimum width of the resistor + + """ + + def __init__(self): + super().__init__(L_MIN, W_MIN) # (l_min,w_min) + + # types of resistor you need to add + # it goes in var self.type + + self.Type_handle.add_choice( + "sky130_fd_pr__res_generic_l1", "sky130_fd_pr__res_generic_l1" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_generic_m1", "sky130_fd_pr__res_generic_m1" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_generic_m2", "sky130_fd_pr__res_generic_m2" + ) + + self.Type_handle.add_choice( + "sky130_fd_pr__res_generic_m3", "sky130_fd_pr__res_generic_m3" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_generic_m4", "sky130_fd_pr__res_generic_m4" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_generic_m5", "sky130_fd_pr__res_generic_m5" + ) + + def coerce_parameters_impl(self): + """(override func) check the minimum values of l and w + + decide whether the handle or the numeric parameter has + changed (by comparing against the effective + radius ru) and set ru to the effective radius. We also update the + numerical value or the shape, depending on which on has not changed + + + """ + + # res_value = sheet res * area + if self.type == "sky130_fd_pr__res_generic_l1": + super().coerce_parameters_impl(L_MIN, W_MIN) # (l_min,w_min) + self.res_value = RES_GEN * self.area + + elif self.type == "sky130_fd_pr__res_generic_m1": + super().coerce_parameters_impl(L_MIN_M1, L_MIN_M1) + self.res_value = RES_M1 * self.area + elif self.type == "sky130_fd_pr__res_generic_m2": + super().coerce_parameters_impl(L_MIN_M2, L_MIN_M2) + self.res_value = RES_M2 * self.area + elif self.type == "sky130_fd_pr__res_generic_m3": + super().coerce_parameters_impl(L_MIN_M3, L_MIN_M3) + self.res_value = RES_M3 * self.area + elif self.type == "sky130_fd_pr__res_generic_m4": + super().coerce_parameters_impl(L_MIN_M4, L_MIN_M4) + self.res_value = RES_M4 * self.area + elif self.type == "sky130_fd_pr__res_generic_m5": + super().coerce_parameters_impl(L_MIN_M5, L_MIN_M5) + self.res_value = RES_M5 * self.area + + def produce_impl(self): + """(override func)call the implementation backend code + create instance and pass it to the parent func + + instance(layout): the result layout to show + + """ + drw = res_metal_draw(self.type) + instance = drw.your_res( + self.layout, l=self.len, w=self.w, type=self.type + ) + super().produce_impl(instance) diff --git a/sky130/cells/klayout/pymacros/cells/res_poly_child.py b/sky130/cells/klayout/pymacros/cells/res_poly_child.py new file mode 100644 index 000000000..4119e62bc --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/res_poly_child.py @@ -0,0 +1,559 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + + +# res Generator for skywater130 + +import math +from .layers_def import ( + + tap_layer, + psdm_layer, + nsdm_layer, + li_layer, + licon_layer, + m1_layer, + mcon_layer, + rpm_drawing, + rpm_high_drawing, + npc_layer, + poly_layer, + poly_res, + pwell_res, + dnwell_layer, + nwell_layer, + + +) +from .parent_res import draw_res + +# ########constants########## +# ONLY FOR GENERIC RES +L_MIN_G = 1.65 +W_MIN_G = 0.42 + +# react +POLY_LAYER_G = [2.15, 0] +# FRAME +TAP_LI_LAYER_G = [2.8, 0.65, 0.17] +PSDM_LAYER_G = [2.925, 0.775, 0.42] + +# CONTACTS H +LICON1_LAYER_G = [1.9, 0.17, 0.17, 0, 0.17] +LICON2_LAYER_G = [2.63, 0.17, 0.17, 0, 0.17] +NPC_LAYER_G = [1.8, 0.37, 0, 0, 0] +LI1_LAYER_G = [0.085, 1.815, 0, 0, 0] +LI2_LAYER_G = [1.9, 0.17, 0, 0, 0] +M1_LAYER_G = [0.025, 2.105, 0, 0, 0] +# CONTACT V +LICON_LAYER_G = [0.48, 0.17, 0.17, 4.98, 0.17] +# 2D ARRAY +MCON_LAYER_G = [0.17, 0.09, 1.89] +# ################################### + + +# ONLY FOR ISO RES +L_MIN_ISO = 26.5 +W_MIN_ISO = 2.65 + +# react +DNWELL=[1.82,1.03] +# FRAME +NWELL=[2.22,1.43,1.43] +TAP_LI_LAYER_ISO = [1.59, 0.8, 0.17] +NSDM_LAYER_ISO = [1.715, 0.925, 0.42] +# CONTACTS H +TAP_ISO=[0,0.53,0,0,0] +PSDM_ISO=[-0.125,0.78,0,0,0] +LI_ISO=[0,0.53,0,0,0] +M1_ISO=[0.055,0.325,0,0,0] +LICON_ISO=[0.01,0.17,0.17,0,0.17] +LICON_ISO2=0.35 +LICON_ISO3=1.42 +MCON_ISO=[0.13,0.17,0.17,0,0.19] +# CONTACTS H +LICON_ISO_H=[0.63,0.17,0.17,2.1,0.17] +# ############################### +# THE REST OF THE RES +L_MIN = 0.5 +W_MIN = 0.35 +W_MIN_0P35 = 0.35 +W_MIN_0P69 = 0.69 +W_MIN_1P41 = 1.41 +W_MIN_2P85 = 2.85 +W_MIN_5P73 = 5.73 +GR = 1 +RPM_LAYER = 0.29 +EXTRA_LEN = 0.12 + +# REACT +POLY_RES = [0, 0] +POLY_LAYER = [2.1, 0] +PSDM_LAYER = [2.875, 0.775] +PSDM_LAYER_NO_GR = [2.21, 0.11] +NPC_LAYER = [2.195, 0.095] +RPM_LAUER = [2.3, 0] +RPM_FOR_LAYERS = [0.46, 0.29, 0.2, 0.2, 0.2] +# FRAME +TAP_LI_LAYER = [2.75, 0.65, 0.17] +# CONTACTS H +LICON1_LAYER = [0.02, 2, 0.19, 0, 0.52] +LICON2_LAYER = [2.58, 0.17, 0.17, 0, 0.17] +LI_LAYER = [-0.06, 2.16, 0, 0, 0] +M1_LAYER = [-0.035, 2.105, 0, 0, 0] +LICON1_LAYER_NO_GR = 2 + +# CONTACT V +LICON_LAYER = [0.48, 0.17, 0.17, 4.31, 0.17] +# 2D ARRAY +MCON_LAYER = [0.17, 0.035, 1.83] + + +# ########################## +class res_poly_draw(draw_res): + """child class for the backend of the poly res + Args: + type_ (str): type of the res + """ + + def __init__(self, type_): + super().__init__(type_) + # self.l=l + # self.w=w + # self.your_res() + + def poly_res( + self, + l: float = L_MIN, + w: float = W_MIN, + gr: int = GR, + n_mcon: int = 0, + rpm: float = RPM_LAYER, + xhigh: int = 0, + ): + """draw the res the specific res with right data + + Args: + l(float): length of the resistor + w(float): width of the resistor + gr(int): guard ring of the resistor + n_mcon(float): mcon_layer number of columns + rpm(float): rpm layer width + xhigh(int): select high or xhigh poly res + + """ + # rects + self.set_l_w(l + EXTRA_LEN, w) + rpm_layer = rpm_drawing + if xhigh: + rpm_layer = rpm_high_drawing + layer_names = [poly_res, poly_layer, psdm_layer, npc_layer, rpm_layer] + l1 = [POLY_RES[0], POLY_LAYER[0], PSDM_LAYER[0], NPC_LAYER[0], RPM_LAUER[0]] + w1 = [POLY_RES[1], POLY_LAYER[1], PSDM_LAYER[1], NPC_LAYER[1], rpm] + if gr == 0: + layer_names = [poly_res, poly_layer, psdm_layer, npc_layer, rpm_layer] + l1 = [ + POLY_RES[0], + POLY_LAYER[0], + PSDM_LAYER_NO_GR[0], + NPC_LAYER[0], + RPM_LAUER[0], + ] + w1 = [POLY_RES[1], POLY_LAYER[1], PSDM_LAYER_NO_GR[1], NPC_LAYER[1], rpm] + self.draw_rect_layer(layer_names, l1, w1) + + # frams + layer_names = [tap_layer, li_layer] + l1 = [TAP_LI_LAYER[0], TAP_LI_LAYER[0]] + w1 = [TAP_LI_LAYER[1], TAP_LI_LAYER[1]] + thick = [TAP_LI_LAYER[2], TAP_LI_LAYER[2]] + if gr: + + self.draw_frame_layer(layer_names, l1, w1, thick) + + # countacts + + layer_names = [licon_layer, licon_layer, li_layer, m1_layer] + l1 = [LICON1_LAYER[0], LICON2_LAYER[0], LI_LAYER[0], M1_LAYER[0]] + sizes_l = [LICON1_LAYER[1], LICON2_LAYER[1], LI_LAYER[1], M1_LAYER[1]] + sizes_w = [LICON1_LAYER[2], LICON2_LAYER[2], w, w - 0.1] + space_fit_in = [w + 0.1, w + 0.34, LI_LAYER[3], M1_LAYER[3]] + spaces = [LICON1_LAYER[4], LICON2_LAYER[4], LI_LAYER[4], M1_LAYER[4]] + + if gr == 0: + layer_names = [licon_layer, li_layer, m1_layer] + l1 = [LICON1_LAYER[0], LI_LAYER[0], M1_LAYER[0]] + sizes_l = [LICON1_LAYER_NO_GR, LI_LAYER[1], M1_LAYER[1]] + sizes_w = [LICON1_LAYER[2], w, w - 0.1] + space_fit_in = [w + 0.1, LI_LAYER[3], M1_LAYER[3]] + spaces = [LICON1_LAYER[4], LI_LAYER[4], M1_LAYER[4]] + + self.draw_contact_layer_h( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + # vertical contacts + + layer_names = [licon_layer] + l1 = [LICON_LAYER[0]] + sizes_l = [LICON_LAYER[1]] + sizes_w = [LICON_LAYER[2]] + space_fit_in = [l + LICON_LAYER[3]] + spaces = [LICON_LAYER[4]] + + if gr: + + self.draw_contact_layer_v( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + # 2d arr + self.draw_2dArr_layer( + mcon_layer, MCON_LAYER[0], MCON_LAYER[1], MCON_LAYER[2], n_mcon + ) + + def your_res( + self, + layout, + type="sky130_fd_pr__res_generic_po", + l: float = L_MIN_G, + w: float = W_MIN_G, + gr: int = GR, + ): + """draw the res with calling the parent func with right data + + Args: + layout(layout): drawing layout + type(str): type of the resistor + l(float): length of the resistor + w(float): width of the resistor + gr(int): guard ring of the resistor + + """ + self.set_l_w(l, w) + + if type == "sky130_fd_pr__res_generic_po": + # rects + layer_names = [poly_res, poly_layer] + l1 = [POLY_RES[0], POLY_LAYER_G[0]] + w1 = [POLY_RES[1], POLY_LAYER_G[1]] + + self.draw_rect_layer(layer_names, l1, w1) + + # frams + layer_names = [tap_layer, psdm_layer, li_layer] + l1 = [TAP_LI_LAYER_G[0], PSDM_LAYER_G[0], TAP_LI_LAYER_G[0]] + w1 = [TAP_LI_LAYER_G[1], PSDM_LAYER_G[1], TAP_LI_LAYER_G[1]] + thick = [TAP_LI_LAYER_G[2], PSDM_LAYER_G[2], TAP_LI_LAYER_G[2]] + if gr: + + self.draw_frame_layer(layer_names, l1, w1, thick) + + # countacts + + layer_names = [ + licon_layer, + licon_layer, + npc_layer, + li_layer, + li_layer, + m1_layer, + ] + # npc + counts_arr = math.floor(w / 0.36) + if counts_arr <= 0: + counts_arr = 1 + w_met = w - 0.21 + if counts_arr == 1: + w_met = 0.37 + ## + l1 = [ + LICON1_LAYER_G[0], + LICON2_LAYER_G[0], + NPC_LAYER_G[0], + LI1_LAYER_G[0], + LI2_LAYER_G[0], + M1_LAYER_G[0], + ] + sizes_l = [ + LICON1_LAYER_G[1], + LICON2_LAYER_G[1], + NPC_LAYER_G[1], + LI1_LAYER_G[1], + LI2_LAYER_G[1], + M1_LAYER_G[1], + ] + sizes_w = [LICON1_LAYER_G[2], LICON2_LAYER_G[2], w_met, w - 0.16, w, w] + space_fit_in = [ + w, + w + 0.68, + NPC_LAYER_G[3], + LI1_LAYER_G[3], + LI2_LAYER_G[3], + M1_LAYER_G[3], + ] + spaces = [ + LICON1_LAYER_G[4], + LICON2_LAYER_G[4], + NPC_LAYER_G[4], + LI1_LAYER_G[4], + LI2_LAYER_G[4], + M1_LAYER_G[4], + ] + + if gr == 0: + layer_names = [ + licon_layer, + npc_layer, + li_layer, + li_layer, + m1_layer, + ] + l1 = [ + LICON1_LAYER_G[0], + NPC_LAYER_G[0], + LI1_LAYER_G[0], + LI2_LAYER_G[0], + M1_LAYER_G[0], + ] + sizes_l = [ + LICON1_LAYER_G[1], + NPC_LAYER_G[1], + LI1_LAYER_G[1], + LI2_LAYER_G[1], + M1_LAYER_G[1], + ] + sizes_w = [LICON1_LAYER_G[2], w_met, w - 0.16, w, w] + space_fit_in = [ + w, + w + 0.68, + LI1_LAYER_G[3], + LI2_LAYER_G[3], + M1_LAYER_G[3], + ] + spaces = [ + LICON1_LAYER_G[4], + NPC_LAYER_G[4], + LI1_LAYER_G[4], + LI2_LAYER_G[4], + M1_LAYER_G[4], + ] + + self.draw_contact_layer_h( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + layer_names = [licon_layer] + l1 = [LICON_LAYER_G[0]] + sizes_l = [LICON_LAYER_G[1]] + sizes_w = [LICON_LAYER_G[2]] + space_fit_in = [l + LICON_LAYER_G[3]] + spaces = [LICON_LAYER_G[4]] + + if gr: + + self.draw_contact_layer_v( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + # 2d arr + self.draw_2dArr_layer( + mcon_layer, MCON_LAYER_G[0], MCON_LAYER_G[1], MCON_LAYER_G[2] + ) # 0.09,1.9 + c = self.get_c() + c.write_gds("res_temp.gds") + layout.read("res_temp.gds") + cell_name = type + return layout.cell(cell_name) + + elif type == "sky130_fd_pr__res_iso_pw": + # rects + layer_names = [pwell_res, dnwell_layer] + l1 = [0, DNWELL[0]] + w1 = [0, DNWELL[1]] + if gr==0: + layer_names = [pwell_res] + l1 = [0] + w1 = [0] + + self.draw_rect_layer(layer_names, l1, w1) + + # frams + layer_names = [nwell_layer, tap_layer,nsdm_layer ,li_layer] + l1 = [NWELL[0], TAP_LI_LAYER_ISO[0], NSDM_LAYER_ISO[0],TAP_LI_LAYER_ISO[0]] + w1 = [NWELL[1], TAP_LI_LAYER_ISO[1], NSDM_LAYER_ISO[1],TAP_LI_LAYER_ISO[1]] + thick = [NWELL[2], TAP_LI_LAYER_ISO[2], NSDM_LAYER_ISO[2],TAP_LI_LAYER_ISO[2]] + + if gr: + + self.draw_frame_layer(layer_names, l1, w1, thick) + + # countacts + + layer_names = [ + tap_layer, + psdm_layer, + li_layer, + m1_layer, + licon_layer, + licon_layer, + licon_layer, + mcon_layer + ] + + l1 = [ + TAP_ISO[0], + PSDM_ISO[0], + LI_ISO[0], + M1_ISO[0], + LICON_ISO[0], + LICON_ISO2, + LICON_ISO3, + MCON_ISO[0] + ] + sizes_l = [ + TAP_ISO[1], + PSDM_ISO[1], + LI_ISO[1], + M1_ISO[1], + LICON_ISO[1], + LICON_ISO[1], + LICON_ISO[1], + MCON_ISO[1] + ] + sizes_w = [w-0.4, w-0.15, w-0.48, w - 0.4, LICON_ISO[2],LICON_ISO[2],LICON_ISO[2],MCON_ISO[2]] + space_fit_in = [ + TAP_ISO[3], + PSDM_ISO[3], + LI_ISO[3], + M1_ISO[3], + w-0.6, + w-0.6, + w+0.76, + w-0.49 + ] + spaces = [ + TAP_ISO[4], + PSDM_ISO[4], + LI_ISO[4], + M1_ISO[4], + LICON_ISO[4], + LICON_ISO[4], + LICON_ISO[4], + MCON_ISO[4] + ] + + if gr == 0: + layer_names = [ + tap_layer, + psdm_layer, + li_layer, + m1_layer, + licon_layer, + licon_layer, + mcon_layer + ] + + l1 = [ + TAP_ISO[0], + PSDM_ISO[0], + LI_ISO[0], + M1_ISO[0], + LICON_ISO[0], + LICON_ISO2, + MCON_ISO[0] + ] + sizes_l = [ + TAP_ISO[1], + PSDM_ISO[1], + LI_ISO[1], + M1_ISO[1], + LICON_ISO[1], + LICON_ISO[1], + MCON_ISO[1] + ] + sizes_w = [w-0.4, w-0.15, w-0.48, w - 0.4, LICON_ISO[2],LICON_ISO[2],MCON_ISO[2]] + space_fit_in = [ + TAP_ISO[3], + PSDM_ISO[3], + LI_ISO[3], + M1_ISO[3], + w-0.6, + w-0.6, + w-0.49 + ] + spaces = [ + TAP_ISO[4], + PSDM_ISO[4], + LI_ISO[4], + M1_ISO[4], + LICON_ISO[4], + LICON_ISO[4], + MCON_ISO[4] + ] + + self.draw_contact_layer_h( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + layer_names = [licon_layer] + l1 = [LICON_ISO_H[0]] + sizes_l = [LICON_ISO_H[1]] + sizes_w = [LICON_ISO_H[2]] + space_fit_in = [l + LICON_ISO_H[3]] + spaces = [LICON_ISO_H[4]] + + if gr: + + self.draw_contact_layer_v( + layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces + ) + + + c = self.get_c() + c.write_gds("res_temp.gds") + layout.read("res_temp.gds") + cell_name = type + return layout.cell(cell_name) + + + elif type == "sky130_fd_pr__res_high_po_0p35": + self.poly_res(l, W_MIN_0P35, gr, 0, RPM_FOR_LAYERS[0]) + elif type == "sky130_fd_pr__res_high_po_0p69": + self.poly_res(l, W_MIN_0P69, gr, 1, RPM_FOR_LAYERS[1]) + elif type == "sky130_fd_pr__res_high_po_1p41": + self.poly_res(l, W_MIN_1P41, gr, 1, RPM_FOR_LAYERS[2]) + elif type == "sky130_fd_pr__res_high_po_2p85": + self.poly_res(l, W_MIN_2P85, gr, 1, RPM_FOR_LAYERS[3]) + elif type == "sky130_fd_pr__res_high_po_5p73": + self.poly_res(l, W_MIN_5P73, gr, 1, RPM_FOR_LAYERS[4]) + # high + + elif type == "sky130_fd_pr__res_xhigh_po_0p35": + self.poly_res(l, W_MIN_0P35, gr, 0, RPM_FOR_LAYERS[0], 1) + elif type == "sky130_fd_pr__res_xhigh_po_0p69": + self.poly_res(l, W_MIN_0P69, gr, 1, RPM_FOR_LAYERS[1], 1) + elif type == "sky130_fd_pr__res_xhigh_po_1p41": + self.poly_res(l, W_MIN_1P41, gr, 1, RPM_FOR_LAYERS[2], 1) + elif type == "sky130_fd_pr__res_xhigh_po_2p85": + self.poly_res(l, W_MIN_2P85, gr, 1, RPM_FOR_LAYERS[3], 1) + elif type == "sky130_fd_pr__res_xhigh_po_5p73": + self.poly_res(l, W_MIN_5P73, gr, 1, RPM_FOR_LAYERS[4], 1) + + c = self.get_c() + c.write_gds("res_temp.gds") + layout.read("res_temp.gds") + cell_name = type + return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py new file mode 100644 index 000000000..6fccc4712 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py @@ -0,0 +1,172 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +from .res_klayout_panel import res +from .res_poly_child import res_poly_draw +# ################constants################ +L_MIN = 1.65 +W_MIN = 0.33 +L_MIN_ISO=26.5 +W_MIN_ISO=2.65 +L_MIN_PO = 0.5 +W_MIN_0P35 = 0.35 +W_MIN_0P69 = 0.69 +W_MIN_1P41 = 1.41 +W_MIN_2P85 = 2.85 +W_MIN_5P73 = 5.73 + +# ##############sheet resistances +RES_GEN = 442.6 # sheet res for sky130_fd_pr__res_generic_po + +RES_ISO = 153.3 # sheet res for sky130_fd_pr__res_iso_pw + +RES_0P35 = 8971.42 # sheet res for sky130_fd_pr__res_high_po_0p35 +RES_0P69 = 2308.5 # sheet res for sky130_fd_pr__res_high_po_0p69 +RES_1P41 = 552.76 # sheet res for sky130_fd_pr__res_high_po_1p41 +RES_2P85 = 135.3 # sheet res for sky130_fd_pr__res_high_po_2p85 +RES_5P73 = 33.47 # sheet res for sky130_fd_pr__res_high_po_5p73 +# XHIGH +RES_XH_0P35 = 22468.57 # sheet res for sky130_fd_pr__res_xhigh_po_0p35 +RES_XH_0P69 = 5779.7 # sheet res for sky130_fd_pr__res_xhigh_po_0p69 +RES_XH_1P41 = 1384.63 # sheet res for sky130_fd_pr__res_xhigh_po_1p41 +RES_XH_2P85 = 338.87 # sheet res for sky130_fd_pr__res_xhigh_po_2p85 +RES_XH_5P73 = 83.8 # sheet res for sky130_fd_pr__res_xhigh_po_5p73 +########################################## + + +class res_poly(res): + """child class for the front end of the poly res (klayout panel) + Args: + res(class): parent class for all types of resistors + l_min(float): minimum length of the resistor + w_min(float): minimum width of the resistor + + """ + + def __init__(self): + super().__init__(L_MIN_PO, W_MIN) # (l_min,w_min) + + # types of resistor you need to add + # it goes in var self.type + + self.Type_handle.add_choice( + "sky130_fd_pr__res_generic_po", "sky130_fd_pr__res_generic_po" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_iso_pw", "sky130_fd_pr__res_iso_pw" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_high_po_0p35", "sky130_fd_pr__res_high_po_0p35" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_high_po_0p69", "sky130_fd_pr__res_high_po_0p69" + ) + + self.Type_handle.add_choice( + "sky130_fd_pr__res_high_po_1p41", "sky130_fd_pr__res_high_po_1p41" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_high_po_2p85", "sky130_fd_pr__res_high_po_2p85" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_high_po_5p73", "sky130_fd_pr__res_high_po_5p73" + ) + + self.Type_handle.add_choice( + "sky130_fd_pr__res_xhigh_po_0p35", + "sky130_fd_pr__res_xhigh_po_0p35", + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_xhigh_po_0p69", + "sky130_fd_pr__res_xhigh_po_0p69", + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_xhigh_po_1p41", + "sky130_fd_pr__res_xhigh_po_1p41", + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_xhigh_po_2p85", + "sky130_fd_pr__res_xhigh_po_2p85", + ) + self.Type_handle.add_choice( + "sky130_fd_pr__res_xhigh_po_5p73", + "sky130_fd_pr__res_xhigh_po_5p73", + ) + + def coerce_parameters_impl(self): + """(override func) check the minimum values of l and w + + decide whether the handle or the numeric parameter has + changed (by comparing against the effective + radius ru) and set ru to the effective radius. We also update the + numerical value or the shape, depending on which on has not changed + + + """ + + # res_value = sheet res * area + if self.type == "sky130_fd_pr__res_generic_po": + super().coerce_parameters_impl(L_MIN, W_MIN) # (l_min,w_min) + self.res_value = RES_GEN * self.area + + elif self.type == "sky130_fd_pr__res_iso_pw": + super().coerce_parameters_impl(L_MIN_ISO, W_MIN_ISO) + self.res_value = RES_ISO * self.area + + elif self.type == "sky130_fd_pr__res_high_po_0p35": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_0P35) + self.res_value = RES_0P35 * self.area + + elif self.type == "sky130_fd_pr__res_high_po_0p69": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_0P69) + self.res_value = RES_0P69 * self.area + elif self.type == "sky130_fd_pr__res_high_po_1p41": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_1P41) + self.res_value = RES_1P41 * self.area + elif self.type == "sky130_fd_pr__res_high_po_2p85": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_2P85) + self.res_value = RES_2P85 * self.area + + elif self.type == "sky130_fd_pr__res_high_po_5p73": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_5P73) + self.res_value = RES_5P73 * self.area + + elif self.type == "sky130_fd_pr__res_xhigh_po_0p35": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_0P35) + self.res_value = RES_XH_0P35 * self.area + elif self.type == "sky130_fd_pr__res_xhigh_po_0p69": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_0P69) + self.res_value = RES_XH_0P69 * self.area + elif self.type == "sky130_fd_pr__res_xhigh_po_1p41": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_1P41) + self.res_value = RES_XH_1P41 * self.area + elif self.type == "sky130_fd_pr__res_xhigh_po_2p85": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_2P85) + self.res_value = RES_XH_2P85 * self.area + elif self.type == "sky130_fd_pr__res_xhigh_po_5p73": + super().coerce_parameters_impl(L_MIN_PO, W_MIN_5P73) + self.res_value = RES_XH_5P73 * self.area + + def produce_impl(self): + """(override func)call the implementation backend code + create instance and pass it to the parent func + + instance(layout): the result layout to show + + """ + drw = res_poly_draw(self.type) + instance = drw.your_res( + self.layout, l=self.len, w=self.w, type=self.type, gr=self.gr + ) + super().produce_impl(instance) diff --git a/sky130/cells/klayout/pymacros/cells/rf.py b/sky130/cells/klayout/pymacros/cells/rf.py new file mode 100644 index 000000000..2beee027e --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/rf.py @@ -0,0 +1,128 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# RF DEVICES Generator for skywater130 +######################################################################################################################## + +import pya +from .draw_rf import * +from .globals import * + +class rf_mosfet(pya.PCellDeclarationHelper): + """ + rf mosfet Generator for Skywater130 + """ + + def __init__(self): + + # Important: initialize the super class + super(rf_mosfet, self).__init__() + self.Type_handle = self.param("Type", self.TypeList, "Type") + + for i in RF_MOSFET_DEV : + self.Type_handle.add_choice(i, i) + + + self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__",readonly=True) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return str(self.Type) + + def produce_impl(self): + + # This is the main part of the implementation: create the layout + + self.percision = 1/self.layout.dbu + rf_mos_instance = draw_rf_mosfet(layout=self.layout,device_name=self.Type) + + write_cells = pya.CellInstArray(rf_mos_instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.cell.flatten(1) + self.cell.insert(write_cells) + + self.layout.cleanup() + +class rf_bjt(pya.PCellDeclarationHelper): + """ + rf bjt Generator for Skywater130 + """ + + def __init__(self): + + # Important: initialize the super class + super(rf_bjt, self).__init__() + self.Type_handle = self.param("Type", self.TypeList, "Type") + for i in RF_BJT_DEV : + self.Type_handle.add_choice(i, i) + + + self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__",readonly=True) + + + def display_text_impl(self): + # Provide a descriptive text for the cell + return str(self.Type) + + def produce_impl(self): + + # This is the main part of the implementation: create the layout + + self.percision = 1/self.layout.dbu + rf_bjt_instance = draw_rf_bjt(layout=self.layout,device_name=self.Type) + + write_cells = pya.CellInstArray(rf_bjt_instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.cell.flatten(1) + self.cell.insert(write_cells) + + self.layout.cleanup() + + +class rf_coils(pya.PCellDeclarationHelper): + """ + rf coils Generator for Skywater130 + """ + + def __init__(self): + + # Important: initialize the super class + super(rf_coils, self).__init__() + self.Type_handle = self.param("Type", self.TypeList, "Type") + for i in RF_COILS_DEV : + self.Type_handle.add_choice(i, i) + + + self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__",readonly=True) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return str(self.Type) + + def produce_impl(self): + + # This is the main part of the implementation: create the layout + + self.percision = 1/self.layout.dbu + rf_coils_instance = draw_rf_coils(layout=self.layout,device_name=self.Type) + + write_cells = pya.CellInstArray(rf_coils_instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.cell.flatten(1) + self.cell.insert(write_cells) + + self.layout.cleanup() + \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/via_generator.py b/sky130/cells/klayout/pymacros/cells/via_generator.py new file mode 100644 index 000000000..c82c26782 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/via_generator.py @@ -0,0 +1,476 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# via Generator for skywater130 +######################################################################################################################## + + +from math import ceil, floor +from tracemalloc import start +import gdsfactory as gf +from gdsfactory.types import Float2 , LayerSpec +from .layers_def import * + +@gf.cell +def via_generator( + x_range : Float2 = (0,1) , + y_range : Float2 = (0,1) , + via_size : Float2 = (0.17,0.17), + via_layer : LayerSpec = (66,44), + via_enclosure : Float2 = (0.06,0.06), + via_spacing : Float2 = (0.17,0.17) + + +) -> gf.Component(): + + """ + return only vias withen the range xrange and yrange while enclosing by via_enclosure + and set number of rows and number of coloumns according to ranges and via size and spacing + + """ + + c = gf.Component() + + width = x_range[1] - x_range[0] + length = y_range[1] - y_range[0] + nr = floor(length / (via_size[1] + via_spacing[1])) + if (length - nr*via_size[1] - (nr-1)*via_spacing[1])/2 < via_enclosure[1]: + nr -= 1 + + if nr <1 : + nr = 1 + + nc = ceil(width / (via_size[0]+via_spacing[0])) + + + if (round(width - nc*via_size[0] - (nc-1)*via_spacing[0],2))/2 < via_enclosure[0]: + nc -= 1 + + if nc<1 : + nc =1 + + + via_sp = (via_size[0]+via_spacing[0],via_size[1]+via_spacing[1]) + + rect_via = gf.components.rectangle(size = via_size , layer= via_layer) + + via_arr = c.add_array(rect_via, rows= nr, columns= nc , spacing=via_sp) + + via_arr.move((x_range[0],y_range[0])) + + via_arr.movex((width - nc*via_size[0] - (nc-1)*via_spacing[0])/2) + via_arr.movey((length - nr*via_size[1] - (nr-1)*via_spacing[1])/2) + + return c + +@gf.cell +def via_stack ( + x_range : Float2 = (0,1), + y_range : Float2 = (0,1), + base_layer : LayerSpec = diff_layer, + slotted_licon : int = 0, + metal_level : int = 1, + li_enc_dir = "V" + +) -> gf.Component : + + """ + return via stack till the metal level indicated where : + metal_level 0 : till li + metal_level 1 : till m1 + metal_level 2 : till m2 + metal_level 3 : till m3 + metal_level 4 : till m4 + metal_level 5 : till m5 + withen the range xrange and yrange and expecting the base_layer to be drawen + + """ + + c = gf.Component() + + # vias dimensions + + if slotted_licon == 1 : + licon_size = (0.19,2) + + else : + licon_size = (0.17,0.17) + + mcon_size = (0.17,0.17) + + + if base_layer == diff_layer or base_layer == tap_layer : + con_enc = (0.06,0.06) + + #elif base_layer == tap_layer: + # con_enc = (0.1,0.06) + + + elif base_layer == poly_layer : + con_enc = (0.05,0.08) + npc_enc = 0.01 + npc = c.add_ref(gf.components.rectangle(size=(x_range[1]-x_range[0]+2*npc_enc, y_range[1]-y_range[0]+2*npc_enc),layer=npc_layer)) + npc.move((x_range[0]-npc_enc, y_range[0]-npc_enc)) + + else : + pass + + if li_enc_dir == "H": + li_enc = (0.08,0) + m1_enc = (0.06,0.03) + elif li_enc_dir == "V" : + li_enc = (0,0.08) + m1_enc = (0.03,0.06) + + con_spacing = (0.19,0.19) + + via1_size = (0.15,0.15) + via1_spacing = (0.17,0.17) + via1_enc = (0.055,0.085) + + via2_size = (0.2,0.2) + via2_enc = (0.04,0.085) + via2_spacing = (0.2,0.2) + + via3_size = (0.2,0.2) + via3_enc = (0.06,0.09) + via3_spacing = (0.2,0.2) + + via4_size = (0.8,0.8) + via4_enc = (0.19,0.19) + via4_spacing = (0.8,0.8) + + + if metal_level >= 0 : + licon_gen = via_generator(x_range=x_range,y_range=y_range,via_size=licon_size,via_enclosure=con_enc,via_layer=licon_layer,via_spacing=con_spacing) + licon = c.add_ref(licon_gen) + + + li = c.add_ref(gf.components.rectangle(size=(licon.xmax-licon.xmin+(2*li_enc[0]),licon.ymax-licon.ymin+(2*li_enc[1])),layer=li_layer)) + li.move((licon.xmin-li_enc[0], licon.ymin-li_enc[1])) + + if metal_level >= 1 : + mcon_gen = via_generator(x_range=x_range,y_range=y_range,via_size=mcon_size,via_enclosure=con_enc,via_layer=mcon_layer,via_spacing=con_spacing) + mcon = c.add_ref(mcon_gen) + + + + if (mcon.xmax-mcon.xmin + 2*m1_enc[0]) < (via1_size[0] + 2*via1_enc[0]) and metal_level >=2: + m1_x = via1_size[0] + 2*via1_enc[0] + + + else : + m1_x = mcon.xmax-mcon.xmin + 2*m1_enc[0] + + + if (mcon.ymax-mcon.ymin + 2*m1_enc[1]) < (via1_size[1] + 2*via1_enc[1]) and metal_level >=2 : + m1_y = via1_size[1] + 2*via1_enc[1] + + else : + m1_y = mcon.ymax-mcon.ymin + 2*m1_enc[1] + + m1_a = 0.084 + + if (m1_x*m1_y)< m1_a : + m1_x = m1_a/m1_y + + + + m1_mx = (m1_x - (mcon.xmax - mcon.xmin))/2 + m1_my = (m1_y - (mcon.ymax - mcon.ymin))/2 + + + m1 = c.add_ref(gf.components.rectangle(size=(m1_x,m1_y),layer=m1_layer)) + m1.move((mcon.xmin - m1_mx, mcon.ymin - m1_my)) + + if metal_level >=2 : + via1_gen = via_generator(x_range= (m1.xmin, m1.xmax), y_range=(m1.ymin,m1.ymax),via_size=via1_size,via_enclosure=via1_enc + ,via_layer=via1_layer,via_spacing=via1_spacing) + via1 = c.add_ref(via1_gen) + + if (via1.xmax-via1.xmin) > (via1.ymax - via1.ymin): + m2_enc = (0.055,0.085) + else : + m2_enc = (0.085,0.055) + + if (via1.xmax-via1.xmin + 2*m2_enc[0]) < (via2_size[0] + 2*via2_enc[0]) and metal_level >=3: + m2_x = via2_size[0] + 2*via2_enc[0] + + + else : + m2_x = via1.xmax-via1.xmin + 2*m2_enc[0] + + + if (via1.ymax-via1.ymin + 2*m2_enc[1]) < (via2_size[1] + 2*via2_enc[1]) and metal_level >=3: + m2_y = via2_size[1] + 2*via2_enc[1] + + + else : + m2_y = via1.ymax-via1.ymin + 2*m2_enc[1] + + m2_mx = (m2_x - (via1.xmax - via1.xmin))/2 + m2_my = (m2_y - (via1.ymax - via1.ymin))/2 + + m2 = c.add_ref(gf.components.rectangle(size=(m2_x,m2_y),layer=m2_layer)) + m2.move((via1.xmin - m2_mx, via1.ymin -m2_my)) + + if metal_level >= 3 : + via2_gen = via_generator(x_range= (m2.xmin, m2.xmax), y_range=(m2.ymin,m2.ymax),via_size=via2_size,via_enclosure=via2_enc + ,via_layer=via2_layer,via_spacing=via2_spacing) + via2 = c.add_ref(via2_gen) + + m3_enc = (0.065,0.065) + + if (via2.xmax-via2.xmin + 2*m3_enc[0]) < (via3_size[0] + 2*via3_enc[0]) and metal_level >= 4: + m3_x = via3_size[0] + 2*via3_enc[0] + + else : + m3_x = via2.xmax-via2.xmin + 2*m3_enc[0] + + + if (via2.ymax-via2.ymin + 2*m3_enc[1]) < (via3_size[1] + 2*via3_enc[1]) and metal_level >=4: + m3_y = via3_size[1] + 2*via3_enc[1] + + else : + m3_y = via2.ymax-via2.ymin + 2*m3_enc[1] + + m3_mx = (m3_x - (via2.xmax - via2.xmin))/2 + m3_my = (m3_y - (via2.ymax - via2.ymin))/2 + + + m3 = c.add_ref(gf.components.rectangle(size=(m3_x,m3_y),layer=m3_layer)) + m3.move((via2.xmin - m3_mx, via2.ymin - m3_my)) + + if metal_level >= 4 : + via3_gen = via_generator(x_range= (m3.xmin, m3.xmax), y_range=(m3.ymin,m3.ymax),via_size=via3_size,via_enclosure=via3_enc + ,via_layer=via3_layer,via_spacing=via3_spacing) + via3 = c.add_ref(via3_gen) + + m4_enc = (0.065,0.065) + + if (via3.xmax-via3.xmin + 2*m4_enc[0]) < (via4_size[0] + 2*via4_enc[0]) and metal_level >=5: + m4_x = via4_size[0] + 2*via4_enc[0] + + else : + m4_x = via3.xmax-via3.xmin + 2*m4_enc[0] + + + if (via3.ymax-via3.ymin + 2*m4_enc[1]) < (via4_size[1] + 2*via4_enc[1]) and metal_level >=5: + m4_y = via4_size[1] + 2*via4_enc[1] + + + else : + m4_y = via3.ymax-via3.ymin + 2*m4_enc[1] + + m4_mx = (m4_x- (via3.xmax - via3.xmin))/2 + m4_my = (m4_y- (via3.ymax - via3.ymin))/2 + + m4 = c.add_ref(gf.components.rectangle(size=(m4_x,m4_y),layer=m4_layer)) + m4.move(( via3.xmin-m4_mx , via3.ymin- m4_my )) + + if metal_level >= 5 : + via4_gen = via_generator(x_range= (m4.xmin, m4.xmax), y_range=(m4.ymin,m4.ymax),via_size=via4_size,via_enclosure=via4_enc + ,via_layer=via4_layer,via_spacing=via4_spacing) + via4 = c.add_ref(via4_gen) + + m5_enc = (0.31,0.31) + m5_min_w = 1.6 + if (via4.xmax-via4.xmin + 2*m5_enc[0]) < m5_min_w: + m5_x = m5_min_w + + else : + m5_x = via4.xmax-via4.xmin + 2*m5_enc[0] + + + if (via4.ymax-via4.ymin + 2*m5_enc[1]) < m5_min_w: + m5_y = m5_min_w + + + else : + m5_y = via4.ymax-via4.ymin + 2*m5_enc[1] + + + + m5_a = 4 + if (m5_x*m5_y)< m5_a : + m5_x = m5_a/m5_y + + m5_mx = (m5_x - (via4.xmax - via4.xmin))/2 + m5_my = (m5_y - (via4.ymax - via4.ymin))/2 + + m5 = c.add_ref(gf.components.rectangle(size=(m5_x,m5_y),layer=m5_layer)) + m5.move((via4.xmin - m5_mx, via4.ymin - m5_my)) + + return c + +#@gf.cell +def vias_gen_draw( + layout, + l : float = 1.0, + w : float = 1.0, + start_layer = "poly", + end_layer = "metal5" + + +) : #-> gf.Component : + ''' + draws a vias stack from the start_layer to the end_layer and also draws the start and end layers where : + l : float of the length that vias will be drawn in + w : float of the width that vias will drawn in + start_layer : string of the first layer to be drawn that takes input of (poly,p_tap,n_tap,p_diff,n_diff,li,metal1:5) + end_layer : string of the last layer to be drawn that takes input of (poly,p_tap,n_tap,p_diff,n_diff,li,metal1:5) + + ''' + c = gf.Component("via") + + base_layers = ["poly","n_diff","p_diff","n_tap","p_tap"] + metal_layers = ["li","metal1","metal2","metal3","metal4","metal5"] + + + if start_layer in base_layers : + level_1 = -1 + else : + for i in range(len(metal_layers)): + if start_layer == metal_layers[i]: + level_1 = i + + if end_layer in base_layers : + level_2 = -1 + else : + for i in range(len(metal_layers)): + if end_layer == metal_layers[i]: + level_2 = i + + + if level_1 <= -1 and level_2 >= -1 : + if start_layer == "poly" or end_layer == "poly": + npc_enc = 0.05 + poly = c.add_ref(gf.components.rectangle(size=(l,w),layer = poly_layer)) + npc = c.add_ref(gf.components.rectangle(size=(l+2*npc_enc,w+2*npc_enc),layer=npc_layer)).move((-npc_enc, -npc_enc)) + if "diff" in start_layer or "diff" in end_layer: + n_p_enc = 0.125 + nwell_enc = 0.18 + diff = c.add_ref(gf.components.rectangle(size=(l,w),layer = diff_layer)) + if "n_" in start_layer or "n_" in end_layer : + nsdm = c.add_ref(gf.components.rectangle(size=(l+2*n_p_enc,w+2*n_p_enc),layer=nsdm_layer)).move((-n_p_enc,-n_p_enc)) + else : + psdm = c.add_ref(gf.components.rectangle(size=(l+2*n_p_enc,w+2*n_p_enc),layer=psdm_layer)).move((-n_p_enc,-n_p_enc)) + nwell = c.add_ref(gf.components.rectangle(size=(l+2*nwell_enc,w+2*nwell_enc),layer=nwell_layer)).move((-nwell_enc,-nwell_enc)) + if "tap" in start_layer or "tap" in end_layer: + n_p_enc = 0.125 + nwell_enc = 0.18 + tap = c.add_ref(gf.components.rectangle(size=(l,w),layer = tap_layer)) + if "n_" in start_layer or "n_" in end_layer: + nsdm = c.add_ref(gf.components.rectangle(size=(l+2*n_p_enc,w+2*n_p_enc),layer=nsdm_layer)).move((-n_p_enc,-n_p_enc)) + nwell = c.add_ref(gf.components.rectangle(size=(l+2*nwell_enc,w+2*nwell_enc),layer=nwell_layer)).move((-nwell_enc,-nwell_enc)) + else : + psdm = c.add_ref(gf.components.rectangle(size=(l+2*n_p_enc,w+2*n_p_enc),layer=psdm_layer)).move((-n_p_enc,-n_p_enc)) + + if level_1 <= 0 and level_2 >= 0: + li = c.add_ref(gf.components.rectangle(size=(l,w),layer = li_layer)) + + if level_1 <= 1 and level_2 >= 1: + m1 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m1_layer)) + + if level_1 <= 2 and level_2 >= 2: + m2 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m2_layer)) + + if level_1 <= 3 and level_2 >= 3: + m3 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m3_layer)) + + if level_1 <= 4 and level_2 >= 4: + m4 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m4_layer)) + + if level_1 <= 5 and level_2 >= 5: + m5 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m5_layer)) + + if level_1 <= -1 and level_2 > -1 : + + + licon_size = (0.17,0.17) + + licon_spacing = (0.17,0.17) + + if start_layer == "poly": + licon_enc = (0.08,0.05) + elif "diff" in start_layer : + licon_enc = (0.12,0.06) #(0.06,0.04) + elif "tap" in start_layer : + licon_enc = (0.12,0.06) + + + + licon = via_generator(x_range=(0,l),y_range=(0,w),via_size=licon_size,via_layer=licon_layer,via_enclosure=licon_enc,via_spacing=licon_spacing) + c.add_ref(licon) + + if level_1 <= 0 and level_2 > 0 : + mcon_size = (0.17,0.17) + mcon_enc = (0.06,0.03) + mcon_spacing = (0.19,0.19) + + + mcon = via_generator(x_range=(0,l),y_range=(0,w),via_size=mcon_size,via_layer=mcon_layer,via_enclosure=mcon_enc,via_spacing=mcon_spacing) + c.add_ref(mcon) + + if level_1 <= 1 and level_2 > 1 : + via1_size = (0.15,0.15) + via1_enc = (0.085,0.055) + via1_spacing = (0.17,0.17) + + + + via1 = via_generator(x_range=(0,l),y_range=(0,w),via_size=via1_size,via_layer=via1_layer,via_enclosure=via1_enc,via_spacing=via1_spacing) + c.add_ref(via1) + + if level_1 <= 2 and level_2 > 2 : + via2_size = (0.2,0.2) + via2_enc = (0.085,0.065) + via2_spacing = (0.2,0.2) + + + via2 = via_generator(x_range=(0,l),y_range=(0,w),via_size=via2_size,via_layer=via2_layer,via_enclosure=via2_enc,via_spacing=via2_spacing) + c.add_ref(via2) + + if level_1 <= 3 and level_2 > 3 : + via3_size = (0.2,0.2) + via3_enc = (0.09,0.065) + via3_spacing = (0.2,0.2) + + + via3 = via_generator(x_range=(0,l),y_range=(0,w),via_size=via3_size,via_layer=via3_layer,via_enclosure=via3_enc,via_spacing=via3_spacing) + c.add_ref(via3) + + if level_1 <= 4 and level_2 > 4 : + via4_size = (0.8,0.8) + via4_enc = (0.31,0.31) + via4_spacing = (0.8,0.8) + + via4 = via_generator(x_range=(0,l),y_range=(0,w),via_size=via4_size,via_layer=via4_layer,via_enclosure=via4_enc,via_spacing=via4_spacing) + c.add_ref(via4) + + # creating layout and cell in klayout + c.write_gds("vias_temp.gds") + layout.read("vias_temp.gds") + cell_name = "via" + + return layout.cell(cell_name) + #return c + +# testing the generated methods +if __name__ == "__main__": + c = vias_gen_draw(start_layer="li",end_layer="poly") + c.show() + \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/vias.py b/sky130/cells/klayout/pymacros/cells/vias.py new file mode 100644 index 000000000..704a4da23 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/vias.py @@ -0,0 +1,208 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# Vias Generator for skywater130 +######################################################################################################################## + +import pya +from .via_generator import * + +licon_size = (0.17,0.17) + +licon_spacing = (0.17,0.17) + +mcon_size = (0.17,0.17) +mcon_enc = (0.06,0.03) +mcon_spacing = (0.19,0.19) + +via1_size = (0.15,0.15) +via1_enc = (0.085,0.055) +via1_spacing = (0.17,0.17) + +via2_size = (0.2,0.2) +via2_enc = (0.085,0.065) +via2_spacing = (0.2,0.2) + +via3_size = (0.2,0.2) +via3_enc = (0.09,0.065) +via3_spacing = (0.2,0.2) + +via4_size = (0.8,0.8) +via4_enc = (0.31,0.31) +via4_spacing = (0.8,0.8) + + +class vias_gen(pya.PCellDeclarationHelper): + """ + Vias Generator for Skywater130 + """ + def __init__(self): + # Initialize super class. + super(vias_gen, self).__init__() + + #===================== PARAMETERS DECLARATIONS ===================== + + self.param("l", self.TypeDouble, "length", default=1, unit="um") + self.param("w", self.TypeDouble, "width", default=1, unit="um") + + self.Type_handle = self.param("start_layer", self.TypeList, "Start Layer") + self.Type_handle.add_choice("poly","poly") + self.Type_handle.add_choice("p_tap","p_tap") + self.Type_handle.add_choice("n_tap","n_tap") + self.Type_handle.add_choice("p_diff","p_diff") + self.Type_handle.add_choice("n_diff","n_diff") + self.Type_handle.add_choice("li","li") + self.Type_handle.add_choice("metal1","metal1") + self.Type_handle.add_choice("metal2","metal2") + self.Type_handle.add_choice("metal3","metal3") + self.Type_handle.add_choice("metal4","metal4") + + self.Type_handle = self.param("end_layer", self.TypeList, "End Layer") + self.Type_handle.add_choice("li","li") + self.Type_handle.add_choice("metal1","metal1") + self.Type_handle.add_choice("metal2","metal2") + self.Type_handle.add_choice("metal3","metal3") + self.Type_handle.add_choice("metal4","metal4") + self.Type_handle.add_choice("metal5","metal5") + + + + def display_text_impl(self): + # Provide a descriptive text for the cell + return "via (L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" + + def coerce_parameters_impl(self): + # We employ coerce_parameters_impl to decide whether the handle or the + # numeric parameter has changed (by comparing against the effective + # radius ru) and set ru to the effective radius. We also update the + # numerical value or the shape, depending on which on has not changed. + + base_layers = ["poly","n_diff","p_diff","n_tap","p_tap"] + metal_layers = ["li","metal1","metal2","metal3","metal4","metal5"] + + if self.start_layer in base_layers : + level_1 = -1 + else : + for i in range(len(metal_layers)): + if self.start_layer == metal_layers[i]: + level_1 = i + + if self.end_layer in base_layers : + level_2 = -1 + else : + for i in range(len(metal_layers)): + if self.end_layer == metal_layers[i]: + level_2 = i + + #if level_1 < level_2 : + # temp_layer = self.start_layer + # self.start_layer = self.end_layer + # self.end_layer = temp_layer + + if level_1 <= -1 and level_2 > -1 : + + if self.start_layer == "poly": + licon_enc = (0.08,0.05) + elif "diff" in self.start_layer : + licon_enc = (0.12,0.06) #(0.06,0.04) + elif "tap" in self.start_layer : + licon_enc = (0.12,0.06) + else : + licon_enc = (0.12,0.12) + + if self.l < (licon_size[0]+2*licon_enc[0]): + self.l = licon_size[0]+2*licon_enc[0] + + + if self.w < (licon_size[1]+2*licon_enc[1]): + self.w = licon_size[1]+2*licon_enc[1] + + if level_1 <= 0 and level_2 > 0 : + + if self.l < (mcon_size[0]+2*mcon_enc[0]): + self.l = mcon_size[0]+2*mcon_enc[0] + + + if self.w < (mcon_size[1]+2*mcon_enc[1]): + self.w = mcon_size[1]+2*mcon_enc[1] + + if level_1 <= 1 and level_2 > 1 : + + if self.l < (via1_size[0]+2*via1_enc[0]): + self.l = via1_size[0]+2*via1_enc[0] + + + if self.w < (via1_size[1]+2*via1_enc[1]): + self.w = via1_size[1]+2*via1_enc[1] + + if level_1 <= 2 and level_2 > 2 : + + if self.l < (via2_size[0]+2*via2_enc[0]): + self.l = via2_size[0]+2*via2_enc[0] + + + if self.w < (via2_size[1]+2*via2_enc[1]): + self.w = via2_size[1]+2*via2_enc[1] + + if level_1 <= 3 and level_2 > 3 : + + if self.l < (via3_size[0]+2*via3_enc[0]): + self.l = (via3_size[0]+2*via3_enc[0]) + + + if self.w < (via3_size[1]+2*via3_enc[1]): + self.w = via3_size[1]+2*via3_enc[1] + + if level_1 <= 4 and level_2 > 4 : + + if self.l < (via4_size[0]+2*via4_enc[0]): + self.l = via4_size[0]+2*via4_enc[0] + + + if self.w < (via4_size[1]+2*via4_enc[1]): + self.w = via4_size[1]+2*via4_enc[1] + + + + + + def can_create_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we can use any shape which + # has a finite bounding box + return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() + + def parameters_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we set r and l from the shape's + # bounding box width and layer + self.r = self.shape.bbox().width() * self.layout.dbu / 2 + self.l = self.layout.get_info(self.layer) + + def transformation_from_shape_impl(self): + # Implement the "Create PCell from shape" protocol: we use the center of the shape's + # bounding box to determine the transformation + return pya.Trans(self.shape.bbox().center()) + + def produce_impl(self): + instance = vias_gen_draw(layout= self.layout , l=self.l, w=self.w, start_layer=self.start_layer, end_layer=self.end_layer) + write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + self.cell.insert(write_cells) + self.cell.flatten(1) + + + + + \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/vpp.py b/sky130/cells/klayout/pymacros/cells/vpp.py new file mode 100644 index 000000000..120d8b4b6 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/vpp.py @@ -0,0 +1,57 @@ +# Copyright 2022 Skywater 130nm pdk development +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +######################################################################################################################## +# VPP CAP Generator for skywater130 +######################################################################################################################## + + +import pya +from .draw_vpp import * +from .globals import * + +class cap_vpp(pya.PCellDeclarationHelper): + """ + VPP Cap Generator for Skywater130 + """ + + def __init__(self): + + # Important: initialize the super class + super(cap_vpp, self).__init__() + self.Type_handle = self.param("Type", self.TypeList, "Type") + + + for i in range(len(VPP_CAP_DEV)) : + self.Type_handle.add_choice(VPP_CAP_DEV[i], VPP_CAP_DEV[i]) + + + self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__cap_vpp",readonly=True) + + def display_text_impl(self): + # Provide a descriptive text for the cell + return str(self.Type) + + def produce_impl(self): + + # This is the main part of the implementation: create the layout + + self.percision = 1/self.layout.dbu + vpp_instance = draw_vpp(layout=self.layout,device_name=self.Type) + write_cells = pya.CellInstArray(vpp_instance.cell_index(), pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.cell.flatten(1) + self.cell.insert(write_cells) + self.layout.cleanup() \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/sky130.lym b/sky130/cells/klayout/pymacros/sky130.lym new file mode 100644 index 000000000..7916c66fb --- /dev/null +++ b/sky130/cells/klayout/pymacros/sky130.lym @@ -0,0 +1,50 @@ + + + + + + pymacros + + + + true + false + + false + + + python + + + +import sys +import os + +technology_macros_path = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, technology_macros_path) + +from cells import sky130 + +# Instantiate and register the library +sky130() + +print("## Sky130 PDK Pcells loaded.") +print(sys.path) + + + From 2227047e70169c2c4d7cc05ad3a6e43927b0ca9e Mon Sep 17 00:00:00 2001 From: RehabSayed-G Date: Thu, 14 Dec 2023 11:33:55 +0200 Subject: [PATCH 02/11] fixing pre-commit issues --- .../cells/klayout/pymacros/cells/__init__.py | 84 +- sky130/cells/klayout/pymacros/cells/bjt.py | 80 +- sky130/cells/klayout/pymacros/cells/cap.py | 155 +- sky130/cells/klayout/pymacros/cells/diode.py | 206 +- .../cells/klayout/pymacros/cells/draw_bjt.py | 45 +- .../cells/klayout/pymacros/cells/draw_cap.py | 65 +- .../klayout/pymacros/cells/draw_diode.py | 510 ++-- .../cells/klayout/pymacros/cells/draw_fet.py | 2200 ++++++++++++----- .../klayout/pymacros/cells/draw_guard_ring.py | 161 +- .../cells/klayout/pymacros/cells/draw_rf.py | 67 +- .../cells/klayout/pymacros/cells/draw_vpp.py | 23 +- sky130/cells/klayout/pymacros/cells/fet.py | 316 ++- ...fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl | 4 +- ..._02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl | 4 +- ..._02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl | 4 +- ..._02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl | 4 +- ..._02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl | 4 +- ...02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl | 4 +- ...ap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl | 4 +- ..._pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl | 4 +- ...pp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl | 6 +- ..._vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl | 4 +- ...fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl | 4 +- ...pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl | 4 +- ...fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl | 4 +- ..._pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl | 4 +- ...pp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl | 4 +- ...4p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl | 4 +- ..._05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl | 4 +- ..._cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl | 4 +- ..._vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl | 4 +- ...r__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl | 4 +- ...ap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl | 4 +- ..._pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl | 4 +- ...pp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl | 6 +- ..._vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl | 4 +- ...fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl | 4 +- ...fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl | 4 +- ..._pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl | 4 +- ...pp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl | 4 +- ...8p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl | 4 +- ..._11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl | 4 +- ..._vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl | 4 +- ...p_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl | 4 +- ..._pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl | 4 +- ...r__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl | 4 +- ...r__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl | 4 +- ...ap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl | 4 +- ..._cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl | 4 +- ..._vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl | 4 +- ..._cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl | 4 +- ..._vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl | 4 +- ...ap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl | 4 +- ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl | 4 +- ..._vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl | 4 +- ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl | 4 +- ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl | 4 +- ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl | 4 +- ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl | 4 +- ...p_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl | 4 +- ...fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl | 4 +- ...fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl | 4 +- ..._pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl | 4 +- ...pp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl | 4 +- ...1p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl | 4 +- ..._cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl | 4 +- ..._vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl | 4 +- ...r__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl | 4 +- ...fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl | 4 +- ..._vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl | 6 +- ..._vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl | 6 +- ..._vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl | 6 +- ..._vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl | 6 +- ..._vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl | 6 +- ..._vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl | 6 +- ..._vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl | 6 +- ..._vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl | 4 +- ..._vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl | 6 +- ...x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl | 6 +- ..._vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl | 6 +- ...x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl | 6 +- ...55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl | 6 +- .../cells/klayout/pymacros/cells/globals.py | 47 +- sky130/cells/klayout/pymacros/cells/gr.py | 69 +- .../klayout/pymacros/cells/layers_def.py | 105 +- .../klayout/pymacros/cells/parent_res.py | 52 +- .../klayout/pymacros/cells/res_diff_child.py | 32 +- .../pymacros/cells/res_diff_klayout_panel.py | 4 +- .../pymacros/cells/res_klayout_panel.py | 12 +- .../klayout/pymacros/cells/res_metal_child.py | 17 +- .../pymacros/cells/res_metal_klayout_panel.py | 4 +- .../klayout/pymacros/cells/res_poly_child.py | 158 +- .../pymacros/cells/res_poly_klayout_panel.py | 11 +- sky130/cells/klayout/pymacros/cells/rf.py | 114 +- .../klayout/pymacros/cells/via_generator.py | 782 +++--- sky130/cells/klayout/pymacros/cells/vias.py | 253 +- sky130/cells/klayout/pymacros/cells/vpp.py | 50 +- 97 files changed, 3686 insertions(+), 2244 deletions(-) diff --git a/sky130/cells/klayout/pymacros/cells/__init__.py b/sky130/cells/klayout/pymacros/cells/__init__.py index a6b2da74d..34a47f40a 100644 --- a/sky130/cells/klayout/pymacros/cells/__init__.py +++ b/sky130/cells/klayout/pymacros/cells/__init__.py @@ -1,38 +1,36 @@ - -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -#============================================================================ +# ============================================================================ # ---------------- Pcells Generators for Klayout of sky ---------------- -#============================================================================ +# ============================================================================ import pya + from cells.vias import vias_gen -from .fet import * -from .diode import * -from .bjt import * -from .vpp import * -from .rf import * -from .cap import * -from .gr import * -from .res_poly_klayout_panel import res_poly +from .bjt import npn_bjt, pnp_bjt +from .cap import cap_var, mim_cap +from .diode import n_diode, p_diode, photo_diode +from .fet import nfet, pfet +from .gr import guard_ring_gen from .res_diff_klayout_panel import res_diff from .res_metal_klayout_panel import res_metal - - +from .res_poly_klayout_panel import res_poly +from .rf import rf_bjt, rf_coils, rf_mosfet +from .vpp import cap_vpp # It's a Python class that inherits from the pya.Library class @@ -45,43 +43,45 @@ def __init__(self): # Set the description self.description = "sky130 Pcells" - # Create the PCell declarations + # Create the PCell declarations # MOS DEVICES self.layout().register_pcell("pfet", pfet()) self.layout().register_pcell("nfet", nfet()) # BJT - self.layout().register_pcell("npn_bjt", npn_bjt()) # npn_05v5_1p00x1p00, npn_05v5_1p00x2p00 , npn_11v0_1p00x1p00 - self.layout().register_pcell("pnp_bjt", pnp_bjt()) # pnp_05v5_0p68x0p68 , pnp_05v5_3p40x3p40 - - - # CAP Devices - self.layout().register_pcell("cap_vpp", cap_vpp()) # VPP devices - self.layout().register_pcell("cap_var", cap_var()) # varactor devices - self.layout().register_pcell("mim_cap", mim_cap()) # mim cap devices - + self.layout().register_pcell( + "npn_bjt", npn_bjt() + ) # npn_05v5_1p00x1p00, npn_05v5_1p00x2p00 , npn_11v0_1p00x1p00 + self.layout().register_pcell( + "pnp_bjt", pnp_bjt() + ) # pnp_05v5_0p68x0p68 , pnp_05v5_3p40x3p40 + + # CAP Devices + self.layout().register_pcell("cap_vpp", cap_vpp()) # VPP devices + self.layout().register_pcell("cap_var", cap_var()) # varactor devices + self.layout().register_pcell("mim_cap", mim_cap()) # mim cap devices # DIODE DEVICES self.layout().register_pcell("photodiode", photo_diode()) self.layout().register_pcell("n_diode", n_diode()) self.layout().register_pcell("p_diode", p_diode()) - - - # RF Devices - self.layout().register_pcell("rf_mosfet", rf_mosfet()) # rf mosfets - self.layout().register_pcell("rf_bjt", rf_bjt()) # rf bjt - self.layout().register_pcell("rf_coils", rf_coils()) # rf coils - - - # vias - self.layout().register_pcell("vias_gen", vias_gen()) # vias generator - self.layout().register_pcell("guard_ring_gen", guard_ring_gen()) # vias generator - - # Resistor - self.layout().register_pcell("res_diff", res_diff()) # Res diff generator - self.layout().register_pcell("res_poly", res_poly()) # Res poly generator - self.layout().register_pcell("res_metal", res_metal()) # Res metal generator + + # RF Devices + self.layout().register_pcell("rf_mosfet", rf_mosfet()) # rf mosfets + self.layout().register_pcell("rf_bjt", rf_bjt()) # rf bjt + self.layout().register_pcell("rf_coils", rf_coils()) # rf coils + + # vias + self.layout().register_pcell("vias_gen", vias_gen()) # vias generator + self.layout().register_pcell( + "guard_ring_gen", guard_ring_gen() + ) # vias generator + + # Resistor + self.layout().register_pcell("res_diff", res_diff()) # Res diff generator + self.layout().register_pcell("res_poly", res_poly()) # Res poly generator + self.layout().register_pcell("res_metal", res_metal()) # Res metal generator # Register us with the name "skywater130". self.register("skywater130") diff --git a/sky130/cells/klayout/pymacros/cells/bjt.py b/sky130/cells/klayout/pymacros/cells/bjt.py index fc0d7e818..f83986788 100644 --- a/sky130/cells/klayout/pymacros/cells/bjt.py +++ b/sky130/cells/klayout/pymacros/cells/bjt.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -19,9 +19,9 @@ import pya -from .draw_bjt import * -from .globals import * +from .draw_bjt import draw_npn, draw_pnp +from .globals import BJT_NPN_DEV, BJT_PNP_DEV class npn_bjt(pya.PCellDeclarationHelper): @@ -30,64 +30,82 @@ class npn_bjt(pya.PCellDeclarationHelper): """ def __init__(self): - # Important: initialize the super class - super(npn_bjt, self).__init__() + super().__init__() self.Type_handle = self.param("type", self.TypeList, "type") - - for i in BJT_NPN_DEV : + + for i in BJT_NPN_DEV: self.Type_handle.add_choice(i, i) - - - self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__npn",readonly=True) + self.param( + "Model", + self.TypeString, + "Model", + default="sky130_fd_pr__npn", + readonly=True, + ) def display_text_impl(self): # Provide a descriptive text for the cell return str(self.type) - - def produce_impl(self): + def produce_impl(self): # This is the main part of the implementation: create the layout - self.percision = 1/self.layout.dbu - #self.cell.flatten(1) - npn_instance = draw_npn(layout=self.layout,device_name=self.type) - write_cells = pya.CellInstArray(npn_instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.percision = 1 / self.layout.dbu + # self.cell.flatten(1) + npn_instance = draw_npn(layout=self.layout, device_name=self.type) + write_cells = pya.CellInstArray( + npn_instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.flatten(1) self.cell.insert(write_cells) self.layout.cleanup() - + + class pnp_bjt(pya.PCellDeclarationHelper): """ PNP BJT Generator for Skywater130 """ def __init__(self): - # Important: initialize the super class - super(pnp_bjt, self).__init__() + super().__init__() self.Type_handle = self.param("Type", self.TypeList, "Type") - for i in BJT_PNP_DEV : + for i in BJT_PNP_DEV: self.Type_handle.add_choice(i, i) - - self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__pnp",readonly=True) + self.param( + "Model", + self.TypeString, + "Model", + default="sky130_fd_pr__pnp", + readonly=True, + ) def display_text_impl(self): # Provide a descriptive text for the cell return str(self.Type) - - def produce_impl(self): + def produce_impl(self): # This is the main part of the implementation: create the layout - self.percision = 1/self.layout.dbu - pnp_instance = draw_pnp(layout=self.layout,device_name=self.Type) - write_cells = pya.CellInstArray(pnp_instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.percision = 1 / self.layout.dbu + pnp_instance = draw_pnp(layout=self.layout, device_name=self.Type) + write_cells = pya.CellInstArray( + pnp_instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.flatten(1) self.cell.insert(write_cells) diff --git a/sky130/cells/klayout/pymacros/cells/cap.py b/sky130/cells/klayout/pymacros/cells/cap.py index a929d6721..1757b202b 100644 --- a/sky130/cells/klayout/pymacros/cells/cap.py +++ b/sky130/cells/klayout/pymacros/cells/cap.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -20,16 +20,15 @@ import pya -from .draw_cap import * -from .globals import * +from .draw_cap import draw_cap_var, draw_mim_cap - -l_min = 0.18 +l_min = 0.18 w_min = 1 -grw_min = 0.17 +grw_min = 0.17 + +l_mim = 2 +l_mim2 = 2.16 -l_mim = 2 -l_mim2 = 2.16 class cap_var(pya.PCellDeclarationHelper): """ @@ -38,52 +37,56 @@ class cap_var(pya.PCellDeclarationHelper): def __init__(self): # Initialize super class. - super(cap_var, self).__init__() + super().__init__() - #===================== PARAMETERS DECLARATIONS ===================== + # ===================== PARAMETERS DECLARATIONS ===================== - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice("sky130_fd_pr__cap_var_lvt","sky130_fd_pr__cap_var_lvt") - self.Type_handle.add_choice("sky130_fd_pr__cap_var_hvt","sky130_fd_pr__cap_var_hvt") - + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice( + "sky130_fd_pr__cap_var_lvt", "sky130_fd_pr__cap_var_lvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__cap_var_hvt", "sky130_fd_pr__cap_var_hvt" + ) self.param("l", self.TypeDouble, "length", default=l_min, unit="um") self.param("w", self.TypeDouble, "width", default=w_min, unit="um") self.param("tap_con_col", self.TypeInt, "tap Contacts Columns", default=1) self.param("gr", self.TypeBoolean, "Gaurd Ring", default=0) - self.param("grw", self.TypeDouble, "Gaurd Ring Width", default=grw_min, unit="um") + self.param( + "grw", self.TypeDouble, "Gaurd Ring Width", default=grw_min, unit="um" + ) self.param("nf", self.TypeDouble, "Number of Fingers", default=1) - #self.param("n", self.TypeDouble, "instance number", default=1) + # self.param("n", self.TypeDouble, "instance number", default=1) - self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") - self.param("cap_value", self.TypeDouble,"Cap Value", readonly=True, unit="fF") + self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") + self.param("cap_value", self.TypeDouble, "Cap Value", readonly=True, unit="fF") - def display_text_impl(self): # Provide a descriptive text for the cell - return "Varactor(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" - + return "Varactor(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" + def coerce_parameters_impl(self): # We employ coerce_parameters_impl to decide whether the handle or the # numeric parameter has changed (by comparing against the effective # radius ru) and set ru to the effective radius. We also update the # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2*(self.w + self.l) - self.cap_value = 4.4* self.area + self.area = self.w * self.l + self.perim = 2 * (self.w + self.l) + self.cap_value = 4.4 * self.area + + if self.l < l_min: + self.l = l_min - if self.l < l_min : - self.l = l_min - if self.w < w_min: self.w = w_min - + if self.grw < grw_min: self.grw = grw_min - + def can_create_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we can use any shape which # has a finite bounding box @@ -99,11 +102,26 @@ def transformation_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we use the center of the shape's # bounding box to determine the transformation return pya.Trans(self.shape.bbox().center()) - + def produce_impl(self): - instance = draw_cap_var(layout= self.layout , l=self.l, w=self.w, type=self.type,tap_con_col=self.tap_con_col, gr= self.gr , grw= self.grw, nf=self.nf) - write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + instance = draw_cap_var( + layout=self.layout, + l_c=self.l, + w=self.w, + type=self.type, + tap_con_col=self.tap_con_col, + gr=self.gr, + grw=self.grw, + nf=self.nf, + ) + write_cells = pya.CellInstArray( + instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.insert(write_cells) self.cell.flatten(1) @@ -115,50 +133,53 @@ class mim_cap(pya.PCellDeclarationHelper): def __init__(self): # Initialize super class. - super(mim_cap, self).__init__() + super().__init__() - #===================== PARAMETERS DECLARATIONS ===================== + # ===================== PARAMETERS DECLARATIONS ===================== - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice("sky130_fd_pr__model__cap_mim","sky130_fd_pr__model__cap_mim") - self.Type_handle.add_choice("sky130_fd_pr__model__cap_mim_m4","sky130_fd_pr__model__cap_mim_m4") - + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice( + "sky130_fd_pr__model__cap_mim", "sky130_fd_pr__model__cap_mim" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__model__cap_mim_m4", "sky130_fd_pr__model__cap_mim_m4" + ) self.param("l", self.TypeDouble, "length", default=l_mim, unit="um") self.param("w", self.TypeDouble, "width", default=l_mim, unit="um") - - #self.param("n", self.TypeInt, "instance number", default=1) - self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") - self.param("cap_value", self.TypeDouble,"Cap Value", readonly=True, unit="fF") + # self.param("n", self.TypeInt, "instance number", default=1) + + self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") + self.param("cap_value", self.TypeDouble, "Cap Value", readonly=True, unit="fF") def display_text_impl(self): # Provide a descriptive text for the cell - return "mimcap(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" + return "mimcap(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" def coerce_parameters_impl(self): # We employ coerce_parameters_impl to decide whether the handle or the # numeric parameter has changed (by comparing against the effective # radius ru) and set ru to the effective radius. We also update the # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2*(self.w + self.l) - self.cap_value = 2*self.area + self.area = self.w * self.l + self.perim = 2 * (self.w + self.l) + self.cap_value = 2 * self.area if self.type == "sky130_fd_pr__model__cap_mim_m4": - if self.l < l_mim2 : - self.l = l_mim2 - + if self.l < l_mim2: + self.l = l_mim2 + if self.w < l_mim2: self.w = l_mim2 - else : - if self.l < l_mim : - self.l = l_mim - + else: + if self.l < l_mim: + self.l = l_mim + if self.w < l_mim: self.w = l_mim - + def can_create_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we can use any shape which # has a finite bounding box @@ -174,10 +195,18 @@ def transformation_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we use the center of the shape's # bounding box to determine the transformation return pya.Trans(self.shape.bbox().center()) - + def produce_impl(self): - instance = draw_mim_cap(layout= self.layout , l=self.l, w=self.w, type=self.type) - write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + instance = draw_mim_cap( + layout=self.layout, l_c=self.l, w=self.w, type=self.type + ) + write_cells = pya.CellInstArray( + instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.insert(write_cells) self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/diode.py b/sky130/cells/klayout/pymacros/cells/diode.py index 6db22965d..522ddba1c 100644 --- a/sky130/cells/klayout/pymacros/cells/diode.py +++ b/sky130/cells/klayout/pymacros/cells/diode.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -20,8 +20,8 @@ import pya -from .draw_diode import * -from .globals import * +from .draw_diode import draw_diode, draw_photodiode +from .globals import PHOTO_D_DEV class photo_diode(pya.PCellDeclarationHelper): @@ -30,38 +30,49 @@ class photo_diode(pya.PCellDeclarationHelper): """ def __init__(self): - # Important: initialize the super class - super(photo_diode, self).__init__() + super().__init__() self.Type_handle = self.param("Type", self.TypeList, "Type") - - for i in PHOTO_D_DEV : + + for i in PHOTO_D_DEV: self.Type_handle.add_choice(i, i) - - - self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__photodiode",readonly=True) + + self.param( + "Model", + self.TypeString, + "Model", + default="sky130_fd_pr__photodiode", + readonly=True, + ) def display_text_impl(self): # Provide a descriptive text for the cell return str(self.Type) - - def produce_impl(self): + def produce_impl(self): # This is the main part of the implementation: create the layout - self.percision = 1/self.layout.dbu - ph_d_instance = draw_photodiode(layout=self.layout,device_name=self.Type) - - write_cells = pya.CellInstArray(ph_d_instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.percision = 1 / self.layout.dbu + ph_d_instance = draw_photodiode(layout=self.layout, device_name=self.Type) + + write_cells = pya.CellInstArray( + ph_d_instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.flatten(1) self.cell.insert(write_cells) - + self.layout.cleanup() + d_min = 0.45 grw_min = 0.17 + class n_diode(pya.PCellDeclarationHelper): """ N-Diode Generator for Skywater130 @@ -69,46 +80,56 @@ class n_diode(pya.PCellDeclarationHelper): def __init__(self): # Initialize super class. - super(n_diode, self).__init__() - - #===================== PARAMETERS DECLARATIONS ===================== - - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice("sky130_fd_pr__diode_pw2nd_05v5", "sky130_fd_pr__diode_pw2nd_05v5") - self.Type_handle.add_choice("sky130_fd_pr__diode_pw2nd_05v5_lvt", "sky130_fd_pr__diode_pw2nd_05v5_lvt") - self.Type_handle.add_choice("sky130_fd_pr__diode_pw2nd_05v5_nvt", "sky130_fd_pr__diode_pw2nd_05v5_nvt") - self.Type_handle.add_choice("sky130_fd_pr__diode_pw2nd_11v0", "sky130_fd_pr__diode_pw2nd_11v0") + super().__init__() + + # ===================== PARAMETERS DECLARATIONS ===================== + + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice( + "sky130_fd_pr__diode_pw2nd_05v5", "sky130_fd_pr__diode_pw2nd_05v5" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__diode_pw2nd_05v5_lvt", "sky130_fd_pr__diode_pw2nd_05v5_lvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__diode_pw2nd_05v5_nvt", "sky130_fd_pr__diode_pw2nd_05v5_nvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__diode_pw2nd_11v0", "sky130_fd_pr__diode_pw2nd_11v0" + ) self.param("w", self.TypeDouble, "width", default=d_min, unit="um") self.param("l", self.TypeDouble, "length", default=d_min, unit="um") - self.param("cath_w", self.TypeDouble, "Cathode Width", default=grw_min, unit="um") + self.param( + "cath_w", self.TypeDouble, "Cathode Width", default=grw_min, unit="um" + ) - self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") - #self.param("n", self.TypeInt, "n", default=1) + # self.param("n", self.TypeInt, "n", default=1) def display_text_impl(self): # Provide a descriptive text for the cell - return "n_diode(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" - + return "n_diode(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" + def coerce_parameters_impl(self): # We employ coerce_parameters_impl to decide whether the handle or the # numeric parameter has changed (by comparing against the effective # radius ru) and set ru to the effective radius. We also update the # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2*(self.w + self.l) + self.area = self.w * self.l + self.perim = 2 * (self.w + self.l) - if self.l < d_min : + if self.l < d_min: self.l = d_min - - if self.w < d_min : + + if self.w < d_min: self.w = d_min - + if self.cath_w < grw_min: self.cath_w = grw_min - + def can_create_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we can use any shape which # has a finite bounding box @@ -124,11 +145,24 @@ def transformation_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we use the center of the shape's # bounding box to determine the transformation return pya.Trans(self.shape.bbox().center()) - + def produce_impl(self): - instance = draw_diode(layout= self.layout ,d_type="n", l=self.l, w=self.w, type=self.type,cath_w=self.cath_w) - write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + instance = draw_diode( + layout=self.layout, + d_type="n", + l_d=self.l, + w=self.w, + type=self.type, + cath_w=self.cath_w, + ) + write_cells = pya.CellInstArray( + instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.insert(write_cells) self.cell.flatten(1) @@ -140,50 +174,62 @@ class p_diode(pya.PCellDeclarationHelper): def __init__(self): # Initialize super class. - super(p_diode, self).__init__() + super().__init__() + + # ===================== PARAMETERS DECLARATIONS ===================== + + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice( + "sky130_fd_pr__diode_pd2nw_05v5", "sky130_fd_pr__diode_pd2nw_05v5" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__diode_pd2nw_05v5_lvt", "sky130_fd_pr__diode_pd2nw_05v5_lvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__diode_pd2nw_05v5_hvt", "sky130_fd_pr__diode_pd2nw_05v5_hvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__diode_pd2nw_11v0", "sky130_fd_pr__diode_pd2nw_11v0" + ) - #===================== PARAMETERS DECLARATIONS ===================== - - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice("sky130_fd_pr__diode_pd2nw_05v5", "sky130_fd_pr__diode_pd2nw_05v5") - self.Type_handle.add_choice("sky130_fd_pr__diode_pd2nw_05v5_lvt", "sky130_fd_pr__diode_pd2nw_05v5_lvt") - self.Type_handle.add_choice("sky130_fd_pr__diode_pd2nw_05v5_hvt", "sky130_fd_pr__diode_pd2nw_05v5_hvt") - self.Type_handle.add_choice("sky130_fd_pr__diode_pd2nw_11v0", "sky130_fd_pr__diode_pd2nw_11v0") - self.param("w", self.TypeDouble, "width", default=d_min, unit="um") self.param("l", self.TypeDouble, "length", default=d_min, unit="um") - self.param("cath_w", self.TypeDouble, "Cathode width", default=grw_min, unit="um") - self.param("grw", self.TypeDouble, "Gaurd Ring width", default=grw_min, unit="um") + self.param( + "cath_w", self.TypeDouble, "Cathode width", default=grw_min, unit="um" + ) + self.param( + "grw", self.TypeDouble, "Gaurd Ring width", default=grw_min, unit="um" + ) - self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") - #self.param("n", self.TypeInt, "n", default=1) + # self.param("n", self.TypeInt, "n", default=1) def display_text_impl(self): # Provide a descriptive text for the cell - return "p_diode(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" - + return "p_diode(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" + def coerce_parameters_impl(self): # We employ coerce_parameters_impl to decide whether the handle or the # numeric parameter has changed (by comparing against the effective # radius ru) and set ru to the effective radius. We also update the # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2*(self.w + self.l) + self.area = self.w * self.l + self.perim = 2 * (self.w + self.l) - if self.l < d_min : + if self.l < d_min: self.l = d_min - - if self.w < d_min : + + if self.w < d_min: self.w = d_min - + if self.grw < grw_min: self.grw = grw_min if self.cath_w < grw_min: self.cath_w = grw_min - + def can_create_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we can use any shape which # has a finite bounding box @@ -199,10 +245,24 @@ def transformation_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we use the center of the shape's # bounding box to determine the transformation return pya.Trans(self.shape.bbox().center()) - + def produce_impl(self): - instance = draw_diode(layout= self.layout ,d_type="p", l=self.l, w=self.w, type=self.type,grw=self.grw, cath_w=self.cath_w) - write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + instance = draw_diode( + layout=self.layout, + d_type="p", + l_d=self.l, + w=self.w, + type=self.type, + grw=self.grw, + cath_w=self.cath_w, + ) + write_cells = pya.CellInstArray( + instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.insert(write_cells) self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/draw_bjt.py b/sky130/cells/klayout/pymacros/cells/draw_bjt.py index fb72fb8e6..23955898e 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_bjt.py +++ b/sky130/cells/klayout/pymacros/cells/draw_bjt.py @@ -1,16 +1,15 @@ - -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -19,48 +18,40 @@ ######################################################################################################################## -import pya import os -from .globals import * -import gdsfactory as gf +from .globals import BJT_NPN_DEV, BJT_PNP_DEV -gds_p_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices/bjt" )# parent file path +gds_p_path = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "fixed_devices/bjt" +) # parent file path def draw_npn(layout, device_name): - - ''' - drawing NPN devices - ''' + """ + drawing NPN devices + """ gds_path = f"{gds_p_path}/npn" - if device_name in BJT_NPN_DEV : + if device_name in BJT_NPN_DEV: layout.read(f"{gds_path}/{device_name}.gds") - cell_name = device_name - else : + cell_name = device_name + else: cell_name = device_name - - return layout.cell(cell_name) - def draw_pnp(layout, device_name): - - ''' + """ drawing PNP devices - ''' + """ gds_path = f"{gds_p_path}/pnp" - - if device_name in BJT_PNP_DEV : + + if device_name in BJT_PNP_DEV: layout.read(f"{gds_path}/{device_name}.gds") cell_name = device_name - else : + else: cell_name = device_name - return layout.cell(cell_name) - - diff --git a/sky130/cells/klayout/pymacros/cells/draw_cap.py b/sky130/cells/klayout/pymacros/cells/draw_cap.py index 4d85a6f23..46d982f49 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_cap.py +++ b/sky130/cells/klayout/pymacros/cells/draw_cap.py @@ -1,26 +1,41 @@ import gdsfactory as gf -from .via_generator import * -from .layers_def import * +from .layers_def import ( + cap2m_layer, + capm_layer, + hvtp_layer, + li_layer, + licon_layer, + m3_layer, + m4_layer, + m5_layer, + nsdm_layer, + nwell_layer, + poly_layer, + psdm_layer, + tap_layer, + via3_layer, + via4_layer, +) +from .via_generator import via_generator, via_stack def draw_cap_var( layout, type="sky130_fd_pr__cap_var_lvt", - l: float = 0.18, + l_c: float = 0.18, w: float = 1, tap_con_col: int = 1, gr: int = 1, grw: float = 0.17, nf: int = 1, ): - """ Retern varactor Args: layout : layout object - l : float of gate length + l_c : float of gate length w : float of gate width tap_con_col : int of tap contacts columns gr : boolaen of having guard ring @@ -58,7 +73,7 @@ def draw_cap_var( tap_w = gate_con_spacing + tap_con tap = c_inst.add_ref( - gf.components.rectangle(size=(l + 2 * tap_w, w), layer=tap_layer) + gf.components.rectangle(size=(l_c + 2 * tap_w, w), layer=tap_layer) ) # adding nsdm @@ -80,18 +95,21 @@ def draw_cap_var( metal_level=1, ) c_inst.add_array( - component=tap_con, columns=2, rows=1, spacing=(tap_w + l + gate_con_spacing, 0) + component=tap_con, + columns=2, + rows=1, + spacing=(tap_w + l_c + gate_con_spacing, 0), ) poly = c_inst.add_ref( - gf.components.rectangle(size=(l, w + 2 * end_cap), layer=poly_layer) + gf.components.rectangle(size=(l_c, w + 2 * end_cap), layer=poly_layer) ) poly.move((tap_w, -end_cap)) - if l < (con_size[0] + 2 * con_enc[0]): + if l_c < (con_size[0] + 2 * con_enc[0]): pc_x = con_size[0] + 2 * con_enc[0] else: - pc_x = l + pc_x = l_c pc_y = con_size[1] + 2 * con_enc[1] @@ -111,7 +129,7 @@ def draw_cap_var( pc = c_inst.add_array( component=c_pc, rows=2, columns=1, spacing=(0, pc_y + w + 2 * end_cap) ) - pc.move((tap_w - ((pc_x - l) / 2), -pc_y - end_cap)) + pc.move((tap_w - ((pc_x - l_c) / 2), -pc_y - end_cap)) # adding nwell nwell = c_inst.add_ref( @@ -154,11 +172,11 @@ def draw_cap_var( ) ) g_r_out.move((g_r_in.xmin - grw, g_r_in.ymin - grw)) - g_r = c.add_ref( + c.add_ref( gf.geometry.boolean(A=g_r_out, B=g_r_in, operation="A-B", layer=tap_layer) ) - g_r_li = c.add_ref( + c.add_ref( gf.geometry.boolean(A=g_r_out, B=g_r_in, operation="A-B", layer=li_layer) ) @@ -183,7 +201,7 @@ def draw_cap_var( ) g_psdm_out.move((g_r_out.xmin - tap_nsdm_enc, g_r_out.ymin - tap_nsdm_enc)) - g_psdm = c.add_ref( + c.add_ref( gf.geometry.boolean( A=g_psdm_out, B=g_psdm_in, operation="A-B", layer=psdm_layer ) @@ -194,7 +212,7 @@ def draw_cap_var( else: g_con_range = (g_r_out.ymin, g_r_out.ymax) - g_licon_u = c.add_ref( + c.add_ref( via_generator( x_range=(g_r_in.xmin + 0.17, g_r_in.xmax - 0.17), y_range=(g_r_in.ymax, g_r_out.ymax), @@ -205,7 +223,7 @@ def draw_cap_var( ) ) - g_licon_d = c.add_ref( + c.add_ref( via_generator( x_range=(g_r_in.xmin + 0.17, g_r_in.xmax - 0.17), y_range=(g_r_out.ymin, g_r_in.ymin), @@ -216,7 +234,7 @@ def draw_cap_var( ) ) - g_licon_l = c.add_ref( + c.add_ref( via_generator( x_range=(g_r_out.xmin, g_r_in.xmin), y_range=g_con_range, @@ -227,7 +245,7 @@ def draw_cap_var( ) ) - g_licon_r = c.add_ref( + c.add_ref( via_generator( x_range=(g_r_in.xmax, g_r_out.xmax), y_range=g_con_range, @@ -241,7 +259,7 @@ def draw_cap_var( if type == "sky130_fd_pr__cap_var_hvt": hvtp = c_inst.add_ref( gf.components.rectangle( - size=(l + 2 * hv_enc, w + 2 * hv_enc), layer=hvtp_layer + size=(l_c + 2 * hv_enc, w + 2 * hv_enc), layer=hvtp_layer ) ) hvtp.move((poly.xmin - hv_enc, tap.ymin - hv_enc)) @@ -256,16 +274,15 @@ def draw_cap_var( def draw_mim_cap( layout, type="sky130_fd_pr__model__cap_mim", - l: float = 2, + l_c: float = 2, w: float = 2, ): - """ Retern mim cap Args: layout : layout object - l : float of capm length + l_c : float of capm length w : float of capm width @@ -277,7 +294,6 @@ def draw_mim_cap( bottom_layer = m3_layer upper_layer = m4_layer - lbl = m4_lbl via_layer = via3_layer via_size = (0.2, 0.2) via_enc = (0.09, 0.065) @@ -291,7 +307,6 @@ def draw_mim_cap( if type == "sky130_fd_pr__model__cap_mim_m4": bottom_layer = m4_layer upper_layer = m5_layer - lbl = m5_lbl via_layer = via4_layer via_size = (0.8, 0.8) via_enc = (0.31, 0.31) @@ -305,7 +320,7 @@ def draw_mim_cap( side_enc = (0.02, 0.06) # drawing cap identifier and bottom , upper layers - cap = c.add_ref(gf.components.rectangle(size=(w, l), layer=cap_layer)) + cap = c.add_ref(gf.components.rectangle(size=(w, l_c), layer=cap_layer)) m_up1 = c.add_ref( gf.components.rectangle( diff --git a/sky130/cells/klayout/pymacros/cells/draw_diode.py b/sky130/cells/klayout/pymacros/cells/draw_diode.py index 5afa5f6f1..47b5f6d5c 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_diode.py +++ b/sky130/cells/klayout/pymacros/cells/draw_diode.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -20,83 +20,93 @@ import os -from .via_generator import * -from .globals import * -from .layers_def import * import gdsfactory as gf - -gds_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices/photodiode" ) # parent file path +from .globals import PHOTO_D_DEV +from .layers_def import ( + areaid_dio_layer, + diff_layer, + hvi_layer, + hvntm_layer, + hvtp_layer, + li_layer, + licon_layer, + lvtn_layer, + m1_layer, + mcon_layer, + nsdm_layer, + nwell_layer, + psdm_layer, + tap_layer, +) +from .via_generator import via_generator + +gds_path = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "fixed_devices/photodiode" +) # parent file path def draw_photodiode(layout, device_name): + """ + drawing photo diode device + """ - ''' - drawing photo diode device - ''' - - if device_name in PHOTO_D_DEV : + if device_name in PHOTO_D_DEV: layout.read(f"{gds_path}/{device_name}.gds") cell_name = device_name - else : - cell_name = device_name + else: + cell_name = device_name return layout.cell(cell_name) -def draw_diode ( - layout , - d_type = "n", - w : float = 0.45, - l: float = 0.45, - type = "sky130_fd_pr__diode_pw2nd_05v5", - cath_w : float = 0.17, - grw : float = 0.17, -) : - - ''' - Retern diode - - Args: - layout : layout object + +def draw_diode( + layout, + d_type="n", + w: float = 0.45, + l_d: float = 0.45, + type="sky130_fd_pr__diode_pw2nd_05v5", + cath_w: float = 0.17, + grw: float = 0.17, +): + """ + Retern diode + + Args: + layout : layout object d_type : string of the diode type [n,p] w : float of the diode width - l: float of the diode length + l_d: float of the diode length type : string of the device type cath_w : float of cathode width in case of p_diode - grw : float of the gaurd ring width + grw : float of the gaurd ring width - ''' + """ c = gf.Component("sky_diode_dev") c_inst = gf.Component("dev inst") - - # used dimensions and layers + # used dimensions and layers npsd_enc = 0.125 - diff_tap_spacing : float = 0.37 - - - - con_size = (0.17,0.17) - con_spacing = (0.19,0.19) - d_con_enc = (0.06,0.06) - t_con_enc = (0.12,0.12) + diff_tap_spacing: float = 0.37 + con_size = (0.17, 0.17) + con_spacing = (0.19, 0.19) + d_con_enc = (0.06, 0.06) + t_con_enc = (0.12, 0.12) li_enc = 0.08 m1_enc = 0.03 con_layer = [licon_layer, mcon_layer] - lvt_enc : float = 0.18 + lvt_enc: float = 0.18 - hv_enc = 0.185 + hv_enc = 0.185 - nwell_enc = 0.185 - - + nwell_enc = 0.185 if d_type == "n": d_npsd_layer = nsdm_layer @@ -104,136 +114,342 @@ def draw_diode ( elif d_type == "p": d_npsd_layer = psdm_layer t_npsd_layer = nsdm_layer - - # generating diff and areaid_diode and its contacts - diff = c_inst.add_ref(gf.components.rectangle(size=(w,l),layer=diff_layer)) - diode = c_inst.add_ref(gf.components.rectangle(size=(w,l),layer=areaid_dio_layer)) + # generating diff and areaid_diode and its contacts + c_inst.add_ref(gf.components.rectangle(size=(w, l_d), layer=diff_layer)) + diode = c_inst.add_ref( + gf.components.rectangle(size=(w, l_d), layer=areaid_dio_layer) + ) - d_npsd = c_inst.add_ref(gf.components.rectangle(size=(w+ 2*npsd_enc, l+ 2*npsd_enc),layer=d_npsd_layer)) - d_npsd.move((-npsd_enc,-npsd_enc)) + d_npsd = c_inst.add_ref( + gf.components.rectangle( + size=(w + 2 * npsd_enc, l_d + 2 * npsd_enc), layer=d_npsd_layer + ) + ) + d_npsd.move((-npsd_enc, -npsd_enc)) - for i in range(2): - d_con = c_inst.add_ref(via_generator(x_range=(0,w),y_range=(0,l),via_enclosure=d_con_enc,via_layer=con_layer[i],via_size=con_size,via_spacing=con_spacing)) - - d_li = c_inst.add_ref(gf.components.rectangle(size=(diode.xmax - diode.xmin + 2*(li_enc-d_con_enc[0]),d_con.ymax - d_con.ymin + 2*li_enc),layer=li_layer)) - d_li.move((-(li_enc-d_con_enc[0]) , d_con.ymin -li_enc)) - d_m1 = c_inst.add_ref(gf.components.rectangle(size=(w,d_li.ymax - d_li.ymin + 2*m1_enc),layer=m1_layer)) + d_con = c_inst.add_ref( + via_generator( + x_range=(0, w), + y_range=(0, l_d), + via_enclosure=d_con_enc, + via_layer=con_layer[i], + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + d_li = c_inst.add_ref( + gf.components.rectangle( + size=( + diode.xmax - diode.xmin + 2 * (li_enc - d_con_enc[0]), + d_con.ymax - d_con.ymin + 2 * li_enc, + ), + layer=li_layer, + ) + ) + d_li.move((-(li_enc - d_con_enc[0]), d_con.ymin - li_enc)) + d_m1 = c_inst.add_ref( + gf.components.rectangle( + size=(w, d_li.ymax - d_li.ymin + 2 * m1_enc), layer=m1_layer + ) + ) d_m1.movey(d_li.ymin - m1_enc) - # generating gaurd ring and its contacts + # generating gaurd ring and its contacts c_temp = gf.Component("temp store") - tap_in = c_temp.add_ref(gf.components.rectangle(size=(w +2*diff_tap_spacing,l +2*diff_tap_spacing) - ,layer=tap_layer)) - tap_in.move((-diff_tap_spacing,-diff_tap_spacing)) - tap_out = c_temp.add_ref(gf.components.rectangle(size=(tap_in.xmax - tap_in.xmin + 2*cath_w, tap_in.ymax - tap_in.ymin + 2*cath_w),layer=tap_layer)) - tap_out.move((tap_in.xmin - cath_w, tap_in.ymin-cath_w)) - tap = c_inst.add_ref(gf.geometry.boolean(A=tap_out, B = tap_in, operation="A-B",layer=tap_layer)) - - - t_npsd_in = c_temp.add_ref(gf.components.rectangle(size=(tap_in.xmax - tap_in.xmin - 2*npsd_enc, tap_in.ymax - tap_in.ymin - 2*npsd_enc) - ,layer=t_npsd_layer)) + tap_in = c_temp.add_ref( + gf.components.rectangle( + size=(w + 2 * diff_tap_spacing, l_d + 2 * diff_tap_spacing), layer=tap_layer + ) + ) + tap_in.move((-diff_tap_spacing, -diff_tap_spacing)) + tap_out = c_temp.add_ref( + gf.components.rectangle( + size=( + tap_in.xmax - tap_in.xmin + 2 * cath_w, + tap_in.ymax - tap_in.ymin + 2 * cath_w, + ), + layer=tap_layer, + ) + ) + tap_out.move((tap_in.xmin - cath_w, tap_in.ymin - cath_w)) + c_inst.add_ref( + gf.geometry.boolean(A=tap_out, B=tap_in, operation="A-B", layer=tap_layer) + ) + + t_npsd_in = c_temp.add_ref( + gf.components.rectangle( + size=( + tap_in.xmax - tap_in.xmin - 2 * npsd_enc, + tap_in.ymax - tap_in.ymin - 2 * npsd_enc, + ), + layer=t_npsd_layer, + ) + ) t_npsd_in.move((tap_in.xmin + npsd_enc, tap_in.ymin + npsd_enc)) - t_npsd_out = c_temp.add_ref(gf.components.rectangle(size=(tap_out.xmax - tap_out.xmin + 2*npsd_enc, tap_out.ymax - tap_out.ymin + 2*npsd_enc) - ,layer=t_npsd_layer)) + t_npsd_out = c_temp.add_ref( + gf.components.rectangle( + size=( + tap_out.xmax - tap_out.xmin + 2 * npsd_enc, + tap_out.ymax - tap_out.ymin + 2 * npsd_enc, + ), + layer=t_npsd_layer, + ) + ) t_npsd_out.move((tap_out.xmin - npsd_enc, tap_out.ymin - npsd_enc)) - t_npsd = c_inst.add_ref(gf.geometry.boolean(A=t_npsd_out, B=t_npsd_in, operation="A-B",layer=t_npsd_layer)) - - if cath_w < con_size[0] + 2*t_con_enc[0]: + c_inst.add_ref( + gf.geometry.boolean( + A=t_npsd_out, B=t_npsd_in, operation="A-B", layer=t_npsd_layer + ) + ) + + if cath_w < con_size[0] + 2 * t_con_enc[0]: t_con_range = (tap_in.xmin, tap_in.xmax) - else : + else: t_con_range = (tap_out.xmin, tap_out.xmax) - t_licon_u = c_inst.add_ref(via_generator(x_range=t_con_range,y_range=(tap_in.ymax,tap_out.ymax),via_enclosure=t_con_enc - , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) - - t_licon_d = c_inst.add_ref(via_generator(x_range=t_con_range,y_range=(tap_out.ymin,tap_in.ymin),via_enclosure=t_con_enc - , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) - - t_licon_l = c_inst.add_ref(via_generator(x_range=(tap_out.xmin, tap_in.xmin),y_range=(tap_in.ymin +0.17,tap_in.ymax-0.17),via_enclosure=t_con_enc - , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) - - t_licon_r = c_inst.add_ref(via_generator(x_range=(tap_in.xmax, tap_out.xmax),y_range=(tap_in.ymin +0.17,tap_in.ymax-0.17),via_enclosure=t_con_enc - , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) - - tap_li_in = c_temp.add_ref(gf.components.rectangle(size=(w+2*diff_tap_spacing,l+2*diff_tap_spacing),layer=li_layer)) - tap_li_in.move((-diff_tap_spacing,-diff_tap_spacing)) - tap_li_out = c_temp.add_ref(gf.components.rectangle(size=(tap_in.xmax - tap_in.xmin + 2*cath_w, tap_in.ymax - tap_in.ymin + 2*cath_w),layer=li_layer)) - tap_li_out.move((tap_in.xmin - cath_w, tap_in.ymin-cath_w)) - tap_li = c_inst.add_ref(gf.geometry.boolean(A=tap_li_out, B = tap_li_in, operation="A-B",layer=li_layer)) - - if type == "sky130_fd_pr__diode_pw2nd_05v5_lvt" or type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" or type == "sky130_fd_pr__diode_pd2nw_05v5_lvt": - lvt = c_inst.add_ref(gf.components.rectangle(size=(w+2*lvt_enc,l+2*lvt_enc),layer=lvtn_layer)) - lvt.move((-lvt_enc,-lvt_enc)) - - if type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" or type == "sky130_fd_pr__diode_pw2nd_11v0" : - hvntm = c_inst.add_ref(gf.components.rectangle(size=(w+2*hv_enc,l+2*hv_enc),layer=hvntm_layer)) - hvntm.move((diode.xmin - hv_enc, diode.ymin - hv_enc)) - - if type == "sky130_fd_pr__diode_pd2nw_05v5_hvt" : - hvt = c_inst.add_ref(gf.components.rectangle(size=(w+2*lvt_enc,l+2*lvt_enc),layer=hvtp_layer)) - hvt.move((-lvt_enc,-lvt_enc)) - - if type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" or type == "sky130_fd_pr__diode_pw2nd_11v0" : - hvi = c_inst.add_ref(gf.components.rectangle(size=(tap_out.xmax - tap_out.xmin + 2*hv_enc, tap_out.ymax - tap_out.ymin + 2*hv_enc),layer=hvi_layer)) + c_inst.add_ref( + via_generator( + x_range=t_con_range, + y_range=(tap_in.ymax, tap_out.ymax), + via_enclosure=t_con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + c_inst.add_ref( + via_generator( + x_range=t_con_range, + y_range=(tap_out.ymin, tap_in.ymin), + via_enclosure=t_con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + c_inst.add_ref( + via_generator( + x_range=(tap_out.xmin, tap_in.xmin), + y_range=(tap_in.ymin + 0.17, tap_in.ymax - 0.17), + via_enclosure=t_con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + c_inst.add_ref( + via_generator( + x_range=(tap_in.xmax, tap_out.xmax), + y_range=(tap_in.ymin + 0.17, tap_in.ymax - 0.17), + via_enclosure=t_con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + tap_li_in = c_temp.add_ref( + gf.components.rectangle( + size=(w + 2 * diff_tap_spacing, l_d + 2 * diff_tap_spacing), layer=li_layer + ) + ) + tap_li_in.move((-diff_tap_spacing, -diff_tap_spacing)) + tap_li_out = c_temp.add_ref( + gf.components.rectangle( + size=( + tap_in.xmax - tap_in.xmin + 2 * cath_w, + tap_in.ymax - tap_in.ymin + 2 * cath_w, + ), + layer=li_layer, + ) + ) + tap_li_out.move((tap_in.xmin - cath_w, tap_in.ymin - cath_w)) + c_inst.add_ref( + gf.geometry.boolean(A=tap_li_out, B=tap_li_in, operation="A-B", layer=li_layer) + ) + + if ( + type == "sky130_fd_pr__diode_pw2nd_05v5_lvt" + or type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" + or type == "sky130_fd_pr__diode_pd2nw_05v5_lvt" + ): + lvt = c_inst.add_ref( + gf.components.rectangle( + size=(w + 2 * lvt_enc, l_d + 2 * lvt_enc), layer=lvtn_layer + ) + ) + lvt.move((-lvt_enc, -lvt_enc)) + + if ( + type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" + or type == "sky130_fd_pr__diode_pw2nd_11v0" + ): + hvntm = c_inst.add_ref( + gf.components.rectangle( + size=(w + 2 * hv_enc, l_d + 2 * hv_enc), layer=hvntm_layer + ) + ) + hvntm.move((diode.xmin - hv_enc, diode.ymin - hv_enc)) + + if type == "sky130_fd_pr__diode_pd2nw_05v5_hvt": + hvt = c_inst.add_ref( + gf.components.rectangle( + size=(w + 2 * lvt_enc, l_d + 2 * lvt_enc), layer=hvtp_layer + ) + ) + hvt.move((-lvt_enc, -lvt_enc)) + + if ( + type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" + or type == "sky130_fd_pr__diode_pw2nd_11v0" + ): + hvi = c_inst.add_ref( + gf.components.rectangle( + size=( + tap_out.xmax - tap_out.xmin + 2 * hv_enc, + tap_out.ymax - tap_out.ymin + 2 * hv_enc, + ), + layer=hvi_layer, + ) + ) hvi.move((tap_out.xmin - hv_enc, tap_out.ymin - hv_enc)) - # drawing nwell and outer gaurd ring in case of p-diode + # drawing nwell and outer gaurd ring in case of p-diode if d_type == "p": - if type == "sky130_fd_pr__diode_pd2nw_11v0": - nwell_enc = 0.34 - - nwell = c_inst.add_ref(gf.components.rectangle(size=(tap_out.xmax - tap_out.xmin + 2*nwell_enc, tap_out.ymax - tap_out.ymin + 2*nwell_enc),layer=nwell_layer)) + nwell_enc = 0.34 + + nwell = c_inst.add_ref( + gf.components.rectangle( + size=( + tap_out.xmax - tap_out.xmin + 2 * nwell_enc, + tap_out.ymax - tap_out.ymin + 2 * nwell_enc, + ), + layer=nwell_layer, + ) + ) nwell.move((tap_out.xmin - nwell_enc, tap_out.ymin - nwell_enc)) - gr_in = c_temp.add_ref(gf.components.rectangle(size = (c_inst.xmax-c_inst.xmin + 2*diff_tap_spacing,c_inst.ymax - c_inst.ymin + 2*diff_tap_spacing ) - , layer= tap_layer)) + gr_in = c_temp.add_ref( + gf.components.rectangle( + size=( + c_inst.xmax - c_inst.xmin + 2 * diff_tap_spacing, + c_inst.ymax - c_inst.ymin + 2 * diff_tap_spacing, + ), + layer=tap_layer, + ) + ) gr_in.move((c_inst.xmin - diff_tap_spacing, c_inst.ymin - diff_tap_spacing)) - gr_out = c_temp.add_ref(gf.components.rectangle(size=(gr_in.xmax - gr_in.xmin + 2*grw, gr_in.ymax - gr_in.ymin + 2*grw),layer=tap_layer)) + gr_out = c_temp.add_ref( + gf.components.rectangle( + size=( + gr_in.xmax - gr_in.xmin + 2 * grw, + gr_in.ymax - gr_in.ymin + 2 * grw, + ), + layer=tap_layer, + ) + ) gr_out.move((gr_in.xmin - grw, gr_in.ymin - grw)) - gr = c.add_ref(gf.geometry.boolean(A=gr_out, B=gr_in , operation= "A-B", layer=tap_layer)) - - gr_li = c.add_ref(gf.geometry.boolean(A=gr_out, B=gr_in , operation= "A-B", layer=li_layer)) - - g_psdm_in = c.add_ref(gf.components.rectangle(size=(gr_in.xmax - gr_in.xmin - 2*npsd_enc, gr_in.ymax - gr_in.ymin - 2*npsd_enc),layer=psdm_layer)) + c.add_ref( + gf.geometry.boolean(A=gr_out, B=gr_in, operation="A-B", layer=tap_layer) + ) + + c.add_ref( + gf.geometry.boolean(A=gr_out, B=gr_in, operation="A-B", layer=li_layer) + ) + + g_psdm_in = c.add_ref( + gf.components.rectangle( + size=( + gr_in.xmax - gr_in.xmin - 2 * npsd_enc, + gr_in.ymax - gr_in.ymin - 2 * npsd_enc, + ), + layer=psdm_layer, + ) + ) g_psdm_in.move((gr_in.xmin + npsd_enc, gr_in.ymin + npsd_enc)) - g_psdm_out = c.add_ref(gf.components.rectangle(size=(gr_out.xmax - gr_out.xmin + 2*npsd_enc, gr_out.ymax - gr_out.ymin + 2*npsd_enc),layer=psdm_layer)) + g_psdm_out = c.add_ref( + gf.components.rectangle( + size=( + gr_out.xmax - gr_out.xmin + 2 * npsd_enc, + gr_out.ymax - gr_out.ymin + 2 * npsd_enc, + ), + layer=psdm_layer, + ) + ) g_psdm_out.move((gr_out.xmin - npsd_enc, gr_out.ymin - npsd_enc)) - - if grw < con_size[0] + 2*t_con_enc[0] : - g_con_range = (gr_in.ymin , gr_in.ymax ) - else : - g_con_range = (gr_out.ymin , gr_out.ymax ) - - g_licon_u = c.add_ref(via_generator(x_range=(gr_in.xmin + 0.17, gr_in.xmax-0.17),y_range=(gr_in.ymax,gr_out.ymax),via_enclosure=t_con_enc - , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) - - g_licon_d = c.add_ref(via_generator(x_range=(gr_in.xmin + 0.17, gr_in.xmax-0.17),y_range=(gr_out.ymin,gr_in.ymin),via_enclosure=t_con_enc - , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) - - g_licon_l = c.add_ref(via_generator(x_range=(gr_out.xmin, gr_in.xmin),y_range=g_con_range,via_enclosure=t_con_enc - , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) - - g_licon_r = c.add_ref(via_generator(x_range=(gr_in.xmax, gr_out.xmax),y_range=g_con_range,via_enclosure=t_con_enc - , via_layer=licon_layer,via_size=con_size,via_spacing=con_spacing)) - + if grw < con_size[0] + 2 * t_con_enc[0]: + g_con_range = (gr_in.ymin, gr_in.ymax) + else: + g_con_range = (gr_out.ymin, gr_out.ymax) + + c.add_ref( + via_generator( + x_range=(gr_in.xmin + 0.17, gr_in.xmax - 0.17), + y_range=(gr_in.ymax, gr_out.ymax), + via_enclosure=t_con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + c.add_ref( + via_generator( + x_range=(gr_in.xmin + 0.17, gr_in.xmax - 0.17), + y_range=(gr_out.ymin, gr_in.ymin), + via_enclosure=t_con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + c.add_ref( + via_generator( + x_range=(gr_out.xmin, gr_in.xmin), + y_range=g_con_range, + via_enclosure=t_con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + c.add_ref( + via_generator( + x_range=(gr_in.xmax, gr_out.xmax), + y_range=g_con_range, + via_enclosure=t_con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) if type == "sky130_fd_pr__diode_pd2nw_11v0": - hvi = c.add_ref(gf.components.rectangle(size=(gr_out.xmax - gr_out.xmin + 2*hv_enc, gr_out.ymax - gr_out.ymin + 2*hv_enc),layer=hvi_layer)) + hvi = c.add_ref( + gf.components.rectangle( + size=( + gr_out.xmax - gr_out.xmin + 2 * hv_enc, + gr_out.ymax - gr_out.ymin + 2 * hv_enc, + ), + layer=hvi_layer, + ) + ) hvi.move((gr_out.xmin - hv_enc, gr_out.ymin - hv_enc)) - - - c.add_ref(c_inst) c.write_gds("diode_temp.gds") layout.read("diode_temp.gds") cell_name = "sky_diode_dev" - return layout.cell(cell_name) - diff --git a/sky130/cells/klayout/pymacros/cells/draw_fet.py b/sky130/cells/klayout/pymacros/cells/draw_fet.py index a636d6533..dcd2051a9 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_fet.py +++ b/sky130/cells/klayout/pymacros/cells/draw_fet.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -18,242 +18,298 @@ ######################################################################################################################## from math import ceil, floor -import numpy as np import gdsfactory as gf -from gdsfactory.types import Float2, LayerSpec -from .via_generator import * -from .layers_def import * - -#@gf.cell +from .layers_def import ( + areaid_lvn_layer, + diff_layer, + hvi_layer, + hvntm_layer, + hvtp_layer, + li_layer, + licon_layer, + lvtn_layer, + m1_layer, + m1_lbl, + m2_layer, + nsdm_layer, + nwell_layer, + poly_layer, + psdm_layer, + tap_layer, + via1_layer, +) +from .via_generator import via_generator, via_stack + + +# @gf.cell def draw_nfet( - layout , - l : float = 0.15, - w : float = 0.42, - sd_con_col : int = 1, - inter_sd_l : float = 0.3,#0.21 , - nf : int = 1, - grw : float = 0.17 , - type = "sky130_fd_pr__nfet_01v8", - bulk = "None", - con_bet_fin : int = 1, - gate_con_pos = "alternating", - interdig : int = 0, - patt = "", - #n = 1 - - -) : #-> gf.Component: - - ''' + layout, + l_gate: float = 0.15, + w: float = 0.42, + sd_con_col: int = 1, + inter_sd_l: float = 0.3, # 0.21 , + nf: int = 1, + grw: float = 0.17, + type="sky130_fd_pr__nfet_01v8", + bulk="None", + con_bet_fin: int = 1, + gate_con_pos="alternating", + interdig: int = 0, + patt="", + # n = 1 +): # -> gf.Component: + """ Retern nfet - Args: - layout : layout object - l : Float of gate length + Args: + layout : layout object + l : Float of gate length w : Float of gate width sd_l : Float of source and drain diffusion length - inter_sd_l : Float of source and drain diffusion length between fingers - nf : integer of number of fingers - M : integer of number of multipliers - grw : gaurd ring width when enabled - type : string of the device type + inter_sd_l : Float of source and drain diffusion length between fingers + nf : integer of number of fingers + M : integer of number of multipliers + grw : gaurd ring width when enabled + type : string of the device type bulk : String of bulk connection type (None, Bulk Tie, Guard Ring) con_bet_fin : boolean of having contacts for diffusion between fingers gate_con_pos : string of choosing the gate contact position (bottom, top, alternating ) - ''' - # used layers and dimensions - + """ + # used layers and dimensions + end_cap: float = 0.2 - diff_tap_spacing : float = 0.32 - poly_tap_spacing : float = 0.27 - - diff_nsdm_enc : float = 0.125 - tap_psdm_enc : float = 0.125 - - - gate_npc_ext = 0.11 - npc_spacing = 0.27 - - - gate_lvt_enc : float = 0.18 - - - hv_enclosing : float = 0.185 - - - areaid_lvn_enc : float = 0.1 - - #m1_m1lic_sp = 0.28+ mcon_enc[0] - end_cap - - licon_size = (0.17,0.17) - licon_spacing = (0.19,0.19) - licon_dt_enc = (0.04,0.06) - - licon_p_enc = (0.05,0.08) - - - sd_l_con = ((sd_con_col)*licon_size[0]) + ((sd_con_col-1)*licon_spacing[0]) + 2*licon_dt_enc[0] - sd_l = sd_l_con + 0.05 - - # gds components to store a single instance and the generated device - c = gf.Component("sky_nfet_dev") + diff_tap_spacing: float = 0.32 + poly_tap_spacing: float = 0.27 - c_inst = gf.Component("dev_temp") + diff_nsdm_enc: float = 0.125 + tap_psdm_enc: float = 0.125 - # generating sd diffusion - - - if interdig == 1 and nf >1 and nf != len(patt) and patt !="": - nf = len(patt) + gate_npc_ext = 0.11 + npc_spacing = 0.27 - l_d = sd_l + nf*l + (nf-1)*inter_sd_l + sd_l # diffution total length - rect_d = gf.components.rectangle(size = (l_d,w), layer= diff_layer) - sd_diff = c_inst.add_ref(rect_d) + gate_lvt_enc: float = 0.18 - # generatin sd contacts + hv_enclosing: float = 0.185 - sd_con = via_stack(x_range = (0,sd_l),y_range=(0,w),base_layer=diff_layer,metal_level=1) - c_inst.add_array(component=sd_con,columns=2,rows=1,spacing=(sd_l+ nf*l + (nf-1)*inter_sd_l,0)) + areaid_lvn_enc: float = 0.1 + # m1_m1lic_sp = 0.28+ mcon_enc[0] - end_cap + licon_size = (0.17, 0.17) + licon_spacing = (0.19, 0.19) + licon_dt_enc = (0.04, 0.06) - if con_bet_fin == 1 and nf>1: - inter_sd_con = via_stack(x_range = (sd_l + l,sd_l + l+ inter_sd_l),y_range=(0,w),base_layer=diff_layer,metal_level=1) - c_inst.add_array(component=inter_sd_con,columns=nf-1,rows=1,spacing=(l+inter_sd_l,0)) - + licon_p_enc = (0.05, 0.08) + sd_l_con = ( + ((sd_con_col) * licon_size[0]) + + ((sd_con_col - 1) * licon_spacing[0]) + + 2 * licon_dt_enc[0] + ) + sd_l = sd_l_con + 0.05 - # generating poly + # gds components to store a single instance and the generated device + c = gf.Component("sky_nfet_dev") - if (l <= licon_size[0]+ 2*licon_p_enc[0]) : - pc_x = licon_p_enc[0] +licon_size[0] + licon_p_enc[0] - - else : - pc_x = l - - pc_size = (pc_x, licon_p_enc[1] +licon_size[1] + licon_p_enc[1]) + c_inst = gf.Component("dev_temp") - c_pc = gf.Component("poly con") + # generating sd diffusion - rect_pc = c_pc.add_ref(gf.components.rectangle(size=pc_size,layer=poly_layer)) + if interdig == 1 and nf > 1 and nf != len(patt) and patt != "": + nf = len(patt) + l_d = sd_l + nf * l_gate + (nf - 1) * inter_sd_l + sd_l # diffution total length + rect_d = gf.components.rectangle(size=(l_d, w), layer=diff_layer) + sd_diff = c_inst.add_ref(rect_d) - poly_con = via_stack(x_range=(rect_pc.xmin, rect_pc.xmax),y_range=(rect_pc.ymin, rect_pc.ymax),base_layer=poly_layer,metal_level=1,li_enc_dir="H") + # generatin sd contacts + + sd_con = via_stack( + x_range=(0, sd_l), y_range=(0, w), base_layer=diff_layer, metal_level=1 + ) + c_inst.add_array( + component=sd_con, + columns=2, + rows=1, + spacing=(sd_l + nf * l_gate + (nf - 1) * inter_sd_l, 0), + ) + + if con_bet_fin == 1 and nf > 1: + inter_sd_con = via_stack( + x_range=(sd_l + l_gate, sd_l + l_gate + inter_sd_l), + y_range=(0, w), + base_layer=diff_layer, + metal_level=1, + ) + c_inst.add_array( + component=inter_sd_con, + columns=nf - 1, + rows=1, + spacing=(l_gate + inter_sd_l, 0), + ) + + # generating poly + + if l_gate <= licon_size[0] + 2 * licon_p_enc[0]: + pc_x = licon_p_enc[0] + licon_size[0] + licon_p_enc[0] + + else: + pc_x = l_gate + + pc_size = (pc_x, licon_p_enc[1] + licon_size[1] + licon_p_enc[1]) + + c_pc = gf.Component("poly con") + + rect_pc = c_pc.add_ref(gf.components.rectangle(size=pc_size, layer=poly_layer)) + + poly_con = via_stack( + x_range=(rect_pc.xmin, rect_pc.xmax), + y_range=(rect_pc.ymin, rect_pc.ymax), + base_layer=poly_layer, + metal_level=1, + li_enc_dir="H", + ) c_pc.add_ref(poly_con) - if nf == 1 : - poly = c_inst.add_ref(gf.components.rectangle(size=(l,w+2*end_cap),layer=poly_layer)) - poly.move((sd_l,-end_cap)) + if nf == 1: + poly = c_inst.add_ref( + gf.components.rectangle(size=(l_gate, w + 2 * end_cap), layer=poly_layer) + ) + poly.move((sd_l, -end_cap)) if gate_con_pos == "bottom": mv = 0 nr = 1 - elif gate_con_pos == "top" : - mv = pc_size[1]+ w + 2*end_cap + elif gate_con_pos == "top": + mv = pc_size[1] + w + 2 * end_cap nr = 1 - else : - mv = 0 + else: + mv = 0 nr = 2 - - pc = c_inst.add_array(component=c_pc,rows=nr,columns=1, spacing=(0,pc_size[1]+w+2*end_cap)) - pc.move((sd_l- ((pc_x - l)/2), -pc_size[1] - end_cap + mv)) - - + pc = c_inst.add_array( + component=c_pc, + rows=nr, + columns=1, + spacing=(0, pc_size[1] + w + 2 * end_cap), + ) + pc.move((sd_l - ((pc_x - l_gate) / 2), -pc_size[1] - end_cap + mv)) - else : - + else: w_p1 = end_cap + w + end_cap # poly total width - if inter_sd_l < (npc_spacing + 2*gate_npc_ext) : - + if inter_sd_l < (npc_spacing + 2 * gate_npc_ext): if gate_con_pos == "alternating": w_p1 += 0.2 w_p2 = w_p1 e_c = 0.2 - else : - w_p2 = w_p1 + licon_p_enc[1] +licon_size[1] + licon_p_enc[1] + npc_spacing + 0.1 + else: + w_p2 = ( + w_p1 + + licon_p_enc[1] + + licon_size[1] + + licon_p_enc[1] + + npc_spacing + + 0.1 + ) e_c = 0 - if gate_con_pos == "bottom" : - p_mv = -end_cap - (w_p2-w_p1) - else : + if gate_con_pos == "bottom": + p_mv = -end_cap - (w_p2 - w_p1) + else: p_mv = -end_cap - else : + else: w_p2 = w_p1 p_mv = -end_cap e_c = 0 - - rect_p1 = gf.components.rectangle(size = (l,w_p1), layer= poly_layer) - rect_p2 = gf.components.rectangle(size = (l,w_p2), layer= poly_layer) - poly1 = c_inst.add_array(rect_p1, rows= 1 , columns= ceil(nf/2) , spacing= [2*(inter_sd_l+l), 0 ]) - poly1.move((sd_l,-end_cap - e_c)) - - poly2 = c_inst.add_array(rect_p2, rows= 1 , columns= floor(nf/2) , spacing= [2*(inter_sd_l+l), 0 ]) - poly2.move((sd_l+l+inter_sd_l,p_mv)) - - - #generating poly contacts setups + rect_p1 = gf.components.rectangle(size=(l_gate, w_p1), layer=poly_layer) + rect_p2 = gf.components.rectangle(size=(l_gate, w_p2), layer=poly_layer) + poly1 = c_inst.add_array( + rect_p1, + rows=1, + columns=ceil(nf / 2), + spacing=[2 * (inter_sd_l + l_gate), 0], + ) + poly1.move((sd_l, -end_cap - e_c)) + + poly2 = c_inst.add_array( + rect_p2, + rows=1, + columns=floor(nf / 2), + spacing=[2 * (inter_sd_l + l_gate), 0], + ) + poly2.move((sd_l + l_gate + inter_sd_l, p_mv)) + + # generating poly contacts setups if gate_con_pos == "bottom": mv_1 = 0 - mv_2 = - (w_p2-w_p1) - elif gate_con_pos == "top" : - mv_1 = pc_size[1]+ w_p1 - mv_2 = pc_size[1]+ w_p2 - else : + mv_2 = -(w_p2 - w_p1) + elif gate_con_pos == "top": + mv_1 = pc_size[1] + w_p1 + mv_2 = pc_size[1] + w_p2 + else: mv_1 = -e_c - mv_2 = pc_size[1]+ w_p2 - - - nc1 = ceil(nf/2) - nc2 = floor(nf/2) - - pc_spacing = 2*(inter_sd_l + l) - - # generating poly contacts - - pc1 = c_inst.add_array(component=c_pc,rows=1,columns=nc1,spacing=(pc_spacing,0)) - pc1.move((sd_l- ((pc_x - l)/2), -pc_size[1] - end_cap + mv_1)) - - pc2 = c_inst.add_array(component=c_pc,rows=1,columns=nc2,spacing=(pc_spacing,0)) - pc2.move((sd_l- ((pc_x - l)/2) + (inter_sd_l + l), -pc_size[1] - end_cap + mv_2)) - - - - if interdig == 1 : - if nf == len(patt): + mv_2 = pc_size[1] + w_p2 + + nc1 = ceil(nf / 2) + nc2 = floor(nf / 2) + + pc_spacing = 2 * (inter_sd_l + l_gate) + + # generating poly contacts + + pc1 = c_inst.add_array( + component=c_pc, rows=1, columns=nc1, spacing=(pc_spacing, 0) + ) + pc1.move((sd_l - ((pc_x - l_gate) / 2), -pc_size[1] - end_cap + mv_1)) + + pc2 = c_inst.add_array( + component=c_pc, rows=1, columns=nc2, spacing=(pc_spacing, 0) + ) + pc2.move( + ( + sd_l - ((pc_x - l_gate) / 2) + (inter_sd_l + l_gate), + -pc_size[1] - end_cap + mv_2, + ) + ) + + if interdig == 1: + if nf == len(patt): pat = list(patt) - nt = [] # list to store the symbols of transistors and thier number nt(number of transistors) + nt = ( + [] + ) # list to store the symbols of transistors and thier number nt(number of transistors) [nt.append(x) for x in pat if x not in nt] nl = int(len(nt)) m2_spacing = 0.14 - via1_size = (0.15,0.15) - via1_enc = (0.085,0.055) - via1_spacing = (0.17,0.17) - via2_size = (0.2,0.2) - via2_enc = (0.085,0.065) - via2_spacing = (0.2,0.2) + via1_size = (0.15, 0.15) + via1_enc = (0.085, 0.055) + via1_spacing = (0.17, 0.17) + via2_size = (0.2, 0.2) + via2_enc = (0.085, 0.065) - m2_y = via1_size[1]+2*via1_enc[1] - m2 = gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin, m2_y),layer=m2_layer) + m2_y = via1_size[1] + 2 * via1_enc[1] + m2 = gf.components.rectangle( + size=(sd_diff.xmax - sd_diff.xmin, m2_y), layer=m2_layer + ) if gate_con_pos == "alternating": pat_o = [] pat_e = [] for i in range(int(nf)): - if i%2 == 0 : + if i % 2 == 0: pat_e.append(pat[i]) - else : + else: pat_o.append(pat[i]) - + nt_o = [] [nt_o.append(x) for x in pat_o if x not in nt_o] @@ -262,473 +318,894 @@ def draw_nfet( nl_b = len(nt_e) nl_u = len(nt_o) - - m2_y = via2_size[1]+2*via2_enc[1] - m2 = gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin, m2_y),layer=m2_layer) - m2_arrb = c_inst.add_array(component=m2, columns=1, rows=nl_b,spacing= (0, -m2_y - m2_spacing)) + m2_y = via2_size[1] + 2 * via2_enc[1] + m2 = gf.components.rectangle( + size=(sd_diff.xmax - sd_diff.xmin, m2_y), layer=m2_layer + ) + + m2_arrb = c_inst.add_array( + component=m2, + columns=1, + rows=nl_b, + spacing=(0, -m2_y - m2_spacing), + ) m2_arrb.movey(pc1.ymin - m2_spacing - m2_y) - m2_arru = c_inst.add_array(component=m2, columns=1, rows=nl_u,spacing= (0, m2_y + m2_spacing)) + m2_arru = c_inst.add_array( + component=m2, + columns=1, + rows=nl_u, + spacing=(0, m2_y + m2_spacing), + ) m2_arru.movey(pc2.ymax + m2_spacing) - for i in range(nl_u): - for j in range(floor(nf/2)): + for j in range(floor(nf / 2)): if pat_o[j] == nt_o[i]: - m1 = c_inst.add_ref(gf.components.rectangle( - size=(poly_con.xmax - poly_con.xmin , ((pc2.ymax + (i+1)*(m2_spacing+ m2_y)) - pc2.ymin )),layer=m1_layer)) - m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + (2*j +1)*(l+inter_sd_l)) - , (pc2.ymin+0.06))) - via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arru.ymin + i*(m2_y+m2_spacing),m2_arru.ymin + i*(m2_y+m2_spacing)+m2_y) - , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + m1 = c_inst.add_ref( + gf.components.rectangle( + size=( + poly_con.xmax - poly_con.xmin, + ( + ( + pc2.ymax + + (i + 1) * (m2_spacing + m2_y) + ) + - pc2.ymin + ), + ), + layer=m1_layer, + ) + ) + m1.move( + ( + ( + sd_l + - ( + (poly_con.xmax - poly_con.xmin - l_gate) + / 2 + ) + + (2 * j + 1) * (l_gate + inter_sd_l) + ), + (pc2.ymin + 0.06), + ) + ) + via1_dr = via_generator( + x_range=(m1.xmin, m1.xmax), + y_range=( + m2_arru.ymin + i * (m2_y + m2_spacing), + m2_arru.ymin + i * (m2_y + m2_spacing) + m2_y, + ), + via_enclosure=via1_enc, + via_layer=via1_layer, + via_size=via1_size, + via_spacing=via1_spacing, + ) via1 = c_inst.add_ref(via1_dr) - c_inst.add_label(f"{pat_o[j]}",position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) - - - + c_inst.add_label( + f"{pat_o[j]}", + position=( + (via1.xmax + via1.xmin) / 2, + (via1.ymax + via1.ymin) / 2, + ), + layer=m1_lbl, + ) + for i in range(nl_b): - for j in range(ceil(nf/2)): + for j in range(ceil(nf / 2)): if pat_e[j] == nt_e[i]: - - m1 = c_inst.add_ref(gf.components.rectangle( - size=(poly_con.xmax - poly_con.xmin , ((pc1.ymax + (i+1)*(m2_spacing+ m2_y)) -pc1.ymin )),layer=m1_layer)) - m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + (2*j)*(l+inter_sd_l)), -(m1.ymax - m1.ymin) + (pc1.ymax-0.06))) - via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arrb.ymax - i*(m2_spacing+m2_y) - m2_y,m2_arrb.ymax - i*(m2_spacing+m2_y)) - , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + m1 = c_inst.add_ref( + gf.components.rectangle( + size=( + poly_con.xmax - poly_con.xmin, + ( + ( + pc1.ymax + + (i + 1) * (m2_spacing + m2_y) + ) + - pc1.ymin + ), + ), + layer=m1_layer, + ) + ) + m1.move( + ( + ( + sd_l + - ( + (poly_con.xmax - poly_con.xmin - l_gate) + / 2 + ) + + (2 * j) * (l_gate + inter_sd_l) + ), + -(m1.ymax - m1.ymin) + (pc1.ymax - 0.06), + ) + ) + via1_dr = via_generator( + x_range=(m1.xmin, m1.xmax), + y_range=( + m2_arrb.ymax - i * (m2_spacing + m2_y) - m2_y, + m2_arrb.ymax - i * (m2_spacing + m2_y), + ), + via_enclosure=via1_enc, + via_layer=via1_layer, + via_size=via1_size, + via_spacing=via1_spacing, + ) via1 = c_inst.add_ref(via1_dr) - c_inst.add_label(f"{pat_e[j]}",position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) - - - - m3_x = via2_size[0] + 2*via2_enc[0] + c_inst.add_label( + f"{pat_e[j]}", + position=( + (via1.xmax + via1.xmin) / 2, + (via1.ymax + via1.ymin) / 2, + ), + layer=m1_lbl, + ) + + m3_x = via2_size[0] + 2 * via2_enc[0] m3_spacing = 0.3 - + for i in range(nl_b): for j in range(nl_u): if nt_e[i] == nt_o[j]: - - m2_join_b = c_inst.add_ref(gf.components.rectangle(size=(m2_y+ (i+1)*(m3_spacing+m3_x),m2_y),layer=m2_layer) - .move((m2_arrb.xmin -(m2_y + (i+1)*(m3_spacing+m3_x)),m2_arrb.ymax - i*(m2_spacing+m2_y) - m2_y))) - m2_join_u = c_inst.add_ref(gf.components.rectangle(size=(m2_y+ (i+1)*(m3_spacing+m3_x),m2_y),layer=m2_layer) - .move((m2_arru.xmin -( m2_y + (i+1)*(m3_spacing+m3_x) ),m2_arru.ymin + j*(m2_spacing+m2_y)))) - m3 = c_inst.add_ref(gf.components.rectangle(size=(m3_x, m2_join_u.ymax - m2_join_b.ymin),layer=m1_layer)) - m3.move((m2_join_b.xmin,m2_join_b.ymin)) - via2_dr = via_generator(x_range=(m3.xmin,m3.xmax),y_range=(m2_join_b.ymin,m2_join_b.ymax),via_enclosure=via1_enc,via_size=via1_size - ,via_layer=via1_layer,via_spacing=via1_spacing) - via2 = c_inst.add_array(component=via2_dr,columns=1,rows=2,spacing=(0,m2_join_u.ymin-m2_join_b.ymin)) - - - - elif gate_con_pos == "top" : - - m2_arr = c_inst.add_array(component=m2, columns=1, rows=nl , spacing=(0,m2.ymax-m2.ymin + m2_spacing)) + m2_join_b = c_inst.add_ref( + gf.components.rectangle( + size=( + m2_y + (i + 1) * (m3_spacing + m3_x), + m2_y, + ), + layer=m2_layer, + ).move( + ( + m2_arrb.xmin + - (m2_y + (i + 1) * (m3_spacing + m3_x)), + m2_arrb.ymax + - i * (m2_spacing + m2_y) + - m2_y, + ) + ) + ) + m2_join_u = c_inst.add_ref( + gf.components.rectangle( + size=( + m2_y + (i + 1) * (m3_spacing + m3_x), + m2_y, + ), + layer=m2_layer, + ).move( + ( + m2_arru.xmin + - (m2_y + (i + 1) * (m3_spacing + m3_x)), + m2_arru.ymin + j * (m2_spacing + m2_y), + ) + ) + ) + m3 = c_inst.add_ref( + gf.components.rectangle( + size=(m3_x, m2_join_u.ymax - m2_join_b.ymin), + layer=m1_layer, + ) + ) + m3.move((m2_join_b.xmin, m2_join_b.ymin)) + via2_dr = via_generator( + x_range=(m3.xmin, m3.xmax), + y_range=(m2_join_b.ymin, m2_join_b.ymax), + via_enclosure=via1_enc, + via_size=via1_size, + via_layer=via1_layer, + via_spacing=via1_spacing, + ) + c_inst.add_array( + component=via2_dr, + columns=1, + rows=2, + spacing=(0, m2_join_u.ymin - m2_join_b.ymin), + ) + + elif gate_con_pos == "top": + m2_arr = c_inst.add_array( + component=m2, + columns=1, + rows=nl, + spacing=(0, m2.ymax - m2.ymin + m2_spacing), + ) m2_arr.movey(pc2.ymax + m2_spacing) - + for i in range(nl): for j in range(int(nf)): if pat[j] == nt[i]: - m1 = c_inst.add_ref(gf.components.rectangle( - size=(poly_con.xmax - poly_con.xmin , ((pc2.ymax + (i+1)*(m2_spacing+ m2_y)) - ((1-j%2)*pc1.ymin) - (j%2)*pc2.ymin )),layer=m1_layer)) - m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + j*(l+inter_sd_l)) - , (1-j%2)*(pc1.ymin+0.06) + (j%2)*(pc2.ymin+0.06))) - via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arr.ymin + i*(m2_spacing+m2_y),m2_arr.ymin + i*(m2_spacing+m2_y)+m2_y) - , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + m1 = c_inst.add_ref( + gf.components.rectangle( + size=( + poly_con.xmax - poly_con.xmin, + ( + ( + pc2.ymax + + (i + 1) * (m2_spacing + m2_y) + ) + - ((1 - j % 2) * pc1.ymin) + - (j % 2) * pc2.ymin + ), + ), + layer=m1_layer, + ) + ) + m1.move( + ( + ( + sd_l + - ( + (poly_con.xmax - poly_con.xmin - l_gate) + / 2 + ) + + j * (l_gate + inter_sd_l) + ), + (1 - j % 2) * (pc1.ymin + 0.06) + + (j % 2) * (pc2.ymin + 0.06), + ) + ) + via1_dr = via_generator( + x_range=(m1.xmin, m1.xmax), + y_range=( + m2_arr.ymin + i * (m2_spacing + m2_y), + m2_arr.ymin + i * (m2_spacing + m2_y) + m2_y, + ), + via_enclosure=via1_enc, + via_layer=via1_layer, + via_size=via1_size, + via_spacing=via1_spacing, + ) via1 = c_inst.add_ref(via1_dr) - c_inst.add_label(f"{pat[j]}",position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) - - - - elif gate_con_pos == "bottom" : - - m2_arr = c_inst.add_array(component=m2, columns=1, rows=nl , spacing=(0,-m2_y - m2_spacing)) + c_inst.add_label( + f"{pat[j]}", + position=( + (via1.xmax + via1.xmin) / 2, + (via1.ymax + via1.ymin) / 2, + ), + layer=m1_lbl, + ) + + elif gate_con_pos == "bottom": + m2_arr = c_inst.add_array( + component=m2, + columns=1, + rows=nl, + spacing=(0, -m2_y - m2_spacing), + ) m2_arr.movey(pc2.ymin - m2_spacing - m2_y) - + for i in range(nl): for j in range(int(nf)): if pat[j] == nt[i]: - - m1 = c_inst.add_ref(gf.components.rectangle( - size=(poly_con.xmax - poly_con.xmin , ((pc1.ymax + (i+1)*(m2_spacing+ m2_y)) - (j%2)*pc1.ymin - (1-j%2)*pc2.ymin)),layer=m1_layer)) - m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + j*(l+inter_sd_l)), -(m1.ymax - m1.ymin) + (1-j%2)*(pc1.ymax-0.06)+ (j%2)*(pc2.ymax-0.06))) - via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arr.ymax - i*(m2_spacing+m2_y) -m2_y,m2_arr.ymax - i*(m2_spacing+m2_y) ) - , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + m1 = c_inst.add_ref( + gf.components.rectangle( + size=( + poly_con.xmax - poly_con.xmin, + ( + ( + pc1.ymax + + (i + 1) * (m2_spacing + m2_y) + ) + - (j % 2) * pc1.ymin + - (1 - j % 2) * pc2.ymin + ), + ), + layer=m1_layer, + ) + ) + m1.move( + ( + ( + sd_l + - ( + (poly_con.xmax - poly_con.xmin - l_gate) + / 2 + ) + + j * (l_gate + inter_sd_l) + ), + -(m1.ymax - m1.ymin) + + (1 - j % 2) * (pc1.ymax - 0.06) + + (j % 2) * (pc2.ymax - 0.06), + ) + ) + via1_dr = via_generator( + x_range=(m1.xmin, m1.xmax), + y_range=( + m2_arr.ymax - i * (m2_spacing + m2_y) - m2_y, + m2_arr.ymax - i * (m2_spacing + m2_y), + ), + via_enclosure=via1_enc, + via_layer=via1_layer, + via_size=via1_size, + via_spacing=via1_spacing, + ) via1 = c_inst.add_ref(via1_dr) - c_inst.add_label(f"{pat[j]}",position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) - - - - - - - # generating bulk + c_inst.add_label( + f"{pat[j]}", + position=( + (via1.xmax + via1.xmin) / 2, + (via1.ymax + via1.ymin) / 2, + ), + layer=m1_lbl, + ) + + # generating bulk if bulk == "None": - nsdm = c_inst.add_ref(gf.components.rectangle(size=(l_d+ 2*diff_nsdm_enc, w+ 2*diff_nsdm_enc),layer= nsdm_layer)) - nsdm.move((-diff_nsdm_enc,-diff_nsdm_enc)) - - if type=="sky130_fd_pr__nfet_g5v0d10v5" or type== "sky130_fd_pr__nfet_05v0_nvt" or type == "sky130_fd_pr__nfet_03v3_nvt": - hvntm = c_inst.add_ref(gf.components.rectangle(size=(l_d+2*hv_enclosing,w+2*hv_enclosing),layer=hvntm_layer)) - hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin- hv_enclosing)) + nsdm = c_inst.add_ref( + gf.components.rectangle( + size=(l_d + 2 * diff_nsdm_enc, w + 2 * diff_nsdm_enc), layer=nsdm_layer + ) + ) + nsdm.move((-diff_nsdm_enc, -diff_nsdm_enc)) + + if ( + type == "sky130_fd_pr__nfet_g5v0d10v5" + or type == "sky130_fd_pr__nfet_05v0_nvt" + or type == "sky130_fd_pr__nfet_03v3_nvt" + ): + hvntm = c_inst.add_ref( + gf.components.rectangle( + size=(l_d + 2 * hv_enclosing, w + 2 * hv_enclosing), + layer=hvntm_layer, + ) + ) + hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin - hv_enclosing)) - elif bulk == "bulk tie": - rect_bulk = c_inst.add_ref(gf.components.rectangle(size=(sd_l*1.5,w),layer=tap_layer)) - rect_bulk.connect("e1",destination=sd_diff.ports["e3"]) - nsdm = c_inst.add_ref(gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin +diff_nsdm_enc,w + 2*diff_nsdm_enc),layer=nsdm_layer)) - nsdm.move((-diff_nsdm_enc,-diff_nsdm_enc)) - psdm = c_inst.add_ref(gf.components.rectangle(size=(rect_bulk.xmax - rect_bulk.xmin +tap_psdm_enc, w+ 2*tap_psdm_enc), layer= psdm_layer)) - psdm.connect("e1",destination = nsdm.ports["e3"]) - - bulk_con = via_stack(x_range= (rect_bulk.xmin+0.1,rect_bulk.xmax-0.1),y_range=(rect_bulk.ymin,rect_bulk.ymax),base_layer=tap_layer,metal_level=0) + rect_bulk = c_inst.add_ref( + gf.components.rectangle(size=(sd_l * 1.5, w), layer=tap_layer) + ) + rect_bulk.connect("e1", destination=sd_diff.ports["e3"]) + nsdm = c_inst.add_ref( + gf.components.rectangle( + size=( + sd_diff.xmax - sd_diff.xmin + diff_nsdm_enc, + w + 2 * diff_nsdm_enc, + ), + layer=nsdm_layer, + ) + ) + nsdm.move((-diff_nsdm_enc, -diff_nsdm_enc)) + psdm = c_inst.add_ref( + gf.components.rectangle( + size=( + rect_bulk.xmax - rect_bulk.xmin + tap_psdm_enc, + w + 2 * tap_psdm_enc, + ), + layer=psdm_layer, + ) + ) + psdm.connect("e1", destination=nsdm.ports["e3"]) + + bulk_con = via_stack( + x_range=(rect_bulk.xmin + 0.1, rect_bulk.xmax - 0.1), + y_range=(rect_bulk.ymin, rect_bulk.ymax), + base_layer=tap_layer, + metal_level=0, + ) c_inst.add_ref(bulk_con) - - - if type=="sky130_fd_pr__nfet_g5v0d10v5" or type== "sky130_fd_pr__nfet_05v0_nvt" or type == "sky130_fd_pr__nfet_03v3_nvt": - hvntm = c_inst.add_ref(gf.components.rectangle(size=(l_d+hv_enclosing,w+2*hv_enclosing),layer=hvntm_layer)) - hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin- hv_enclosing)) - - - + if ( + type == "sky130_fd_pr__nfet_g5v0d10v5" + or type == "sky130_fd_pr__nfet_05v0_nvt" + or type == "sky130_fd_pr__nfet_03v3_nvt" + ): + hvntm = c_inst.add_ref( + gf.components.rectangle( + size=(l_d + hv_enclosing, w + 2 * hv_enclosing), layer=hvntm_layer + ) + ) + hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin - hv_enclosing)) elif bulk == "Gaurd Ring": - - nsdm = c_inst.add_ref(gf.components.rectangle(size=(l_d+ 2*diff_nsdm_enc, w+ 2*diff_nsdm_enc),layer= nsdm_layer)) - nsdm.move((-diff_nsdm_enc,-diff_nsdm_enc)) + nsdm = c_inst.add_ref( + gf.components.rectangle( + size=(l_d + 2 * diff_nsdm_enc, w + 2 * diff_nsdm_enc), layer=nsdm_layer + ) + ) + nsdm.move((-diff_nsdm_enc, -diff_nsdm_enc)) c.add_ref(c_inst) c_temp = gf.Component("temp_store") - rect_bulk_in = c_temp.add_ref(gf.components.rectangle(size=((c_inst.xmax - c_inst.xmin) + 2*diff_tap_spacing, - (c_inst.ymax - c_inst.ymin) + 2*poly_tap_spacing ) - , layer= tap_layer)) - rect_bulk_in.move((c_inst.xmin -diff_tap_spacing,c_inst.ymin - poly_tap_spacing)) - rect_bulk_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) + 2*grw,(rect_bulk_in.ymax - rect_bulk_in.ymin) + 2*grw ) - , layer= tap_layer)) - rect_bulk_out.move((rect_bulk_in.xmin - grw , rect_bulk_in.ymin -grw )) - B = c.add_ref(gf.geometry.boolean(A= rect_bulk_out , B = rect_bulk_in , operation= "A-B", layer= tap_layer) ) - - psdm_in = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) - 2*tap_psdm_enc, (rect_bulk_in.ymax - rect_bulk_in.ymin) - 2*tap_psdm_enc ) - , layer= psdm_layer)) - psdm_in.move((rect_bulk_in.xmin + tap_psdm_enc, rect_bulk_in.ymin + tap_psdm_enc)) - psdm_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_out.xmax - rect_bulk_out.xmin) + 2*tap_psdm_enc, (rect_bulk_out.ymax - rect_bulk_out.ymin) + 2*tap_psdm_enc ) - , layer= nsdm_layer)) - psdm_out.move((rect_bulk_out.xmin - tap_psdm_enc, rect_bulk_out.ymin - tap_psdm_enc)) - psdm = c.add_ref(gf.geometry.boolean(A= psdm_out , B = psdm_in , operation= "A-B", layer= psdm_layer) ) - - + rect_bulk_in = c_temp.add_ref( + gf.components.rectangle( + size=( + (c_inst.xmax - c_inst.xmin) + 2 * diff_tap_spacing, + (c_inst.ymax - c_inst.ymin) + 2 * poly_tap_spacing, + ), + layer=tap_layer, + ) + ) + rect_bulk_in.move( + (c_inst.xmin - diff_tap_spacing, c_inst.ymin - poly_tap_spacing) + ) + rect_bulk_out = c_temp.add_ref( + gf.components.rectangle( + size=( + (rect_bulk_in.xmax - rect_bulk_in.xmin) + 2 * grw, + (rect_bulk_in.ymax - rect_bulk_in.ymin) + 2 * grw, + ), + layer=tap_layer, + ) + ) + rect_bulk_out.move((rect_bulk_in.xmin - grw, rect_bulk_in.ymin - grw)) + c.add_ref( + gf.geometry.boolean( + A=rect_bulk_out, B=rect_bulk_in, operation="A-B", layer=tap_layer + ) + ) + + psdm_in = c_temp.add_ref( + gf.components.rectangle( + size=( + (rect_bulk_in.xmax - rect_bulk_in.xmin) - 2 * tap_psdm_enc, + (rect_bulk_in.ymax - rect_bulk_in.ymin) - 2 * tap_psdm_enc, + ), + layer=psdm_layer, + ) + ) + psdm_in.move( + (rect_bulk_in.xmin + tap_psdm_enc, rect_bulk_in.ymin + tap_psdm_enc) + ) + psdm_out = c_temp.add_ref( + gf.components.rectangle( + size=( + (rect_bulk_out.xmax - rect_bulk_out.xmin) + 2 * tap_psdm_enc, + (rect_bulk_out.ymax - rect_bulk_out.ymin) + 2 * tap_psdm_enc, + ), + layer=nsdm_layer, + ) + ) + psdm_out.move( + (rect_bulk_out.xmin - tap_psdm_enc, rect_bulk_out.ymin - tap_psdm_enc) + ) + psdm = c.add_ref( + gf.geometry.boolean( + A=psdm_out, B=psdm_in, operation="A-B", layer=psdm_layer + ) + ) # generating contacts - - ring_con_bot = c.add_ref(via_generator(x_range=(rect_bulk_in.xmin + 0.17,rect_bulk_in.xmax-0.17),y_range=(rect_bulk_out.ymin,rect_bulk_in.ymin) - , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) - - ring_con_up = c.add_ref(via_generator(x_range=(rect_bulk_in.xmin+0.17,rect_bulk_in.xmax-0.17),y_range=(rect_bulk_in.ymax,rect_bulk_out.ymax) - , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) - - ring_con_r = c.add_ref(via_generator(x_range=(rect_bulk_out.xmin,rect_bulk_in.xmin),y_range=(rect_bulk_in.ymin+0.17,rect_bulk_in.ymax-0.17) - , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) - - ring_con_l = c.add_ref(via_generator(x_range=(rect_bulk_in.xmax,rect_bulk_out.xmax),y_range=(rect_bulk_in.ymin+0.17,rect_bulk_in.ymax-0.17) - , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) - - tap_li_in = c_temp.add_ref(gf.components.rectangle(size=((l_d ) + 2*diff_tap_spacing, - (c_inst.ymax - c_inst.ymin) + 2*poly_tap_spacing ) - , layer= li_layer)) - tap_li_in.move((-diff_tap_spacing,c_inst.ymin - poly_tap_spacing)) - tap_li_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) + 2*grw,(rect_bulk_in.ymax - rect_bulk_in.ymin) + 2*grw ) - , layer= li_layer)) - tap_li_out.move((rect_bulk_in.xmin - grw , rect_bulk_in.ymin -grw )) - li = c.add_ref(gf.geometry.boolean(A= rect_bulk_out , B = rect_bulk_in , operation= "A-B", layer= li_layer) ) - - - - # generating hvi for high voltage - if type=="sky130_fd_pr__nfet_g5v0d10v5" or type== "sky130_fd_pr__nfet_05v0_nvt" or type == "sky130_fd_pr__nfet_03v3_nvt": - hvi = c.add_ref(gf.components.rectangle(size=(rect_bulk_out.xmax-rect_bulk_out.xmin + 2*hv_enclosing - , rect_bulk_out.ymax - rect_bulk_out.ymin + 2*hv_enclosing),layer=hvi_layer)) - hvi.move((rect_bulk_out.xmin-hv_enclosing, rect_bulk_out.ymin-hv_enclosing)) - - - hvntm = c_inst.add_ref(gf.components.rectangle(size=(l_d+2*hv_enclosing,w+2*hv_enclosing),layer=hvntm_layer)) - hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin- hv_enclosing)) - - + c.add_ref( + via_generator( + x_range=(rect_bulk_in.xmin + 0.17, rect_bulk_in.xmax - 0.17), + y_range=(rect_bulk_out.ymin, rect_bulk_in.ymin), + via_enclosure=licon_dt_enc, + via_layer=licon_layer, + via_size=licon_size, + via_spacing=licon_spacing, + ) + ) + + c.add_ref( + via_generator( + x_range=(rect_bulk_in.xmin + 0.17, rect_bulk_in.xmax - 0.17), + y_range=(rect_bulk_in.ymax, rect_bulk_out.ymax), + via_enclosure=licon_dt_enc, + via_layer=licon_layer, + via_size=licon_size, + via_spacing=licon_spacing, + ) + ) + + c.add_ref( + via_generator( + x_range=(rect_bulk_out.xmin, rect_bulk_in.xmin), + y_range=(rect_bulk_in.ymin + 0.17, rect_bulk_in.ymax - 0.17), + via_enclosure=licon_dt_enc, + via_layer=licon_layer, + via_size=licon_size, + via_spacing=licon_spacing, + ) + ) + + c.add_ref( + via_generator( + x_range=(rect_bulk_in.xmax, rect_bulk_out.xmax), + y_range=(rect_bulk_in.ymin + 0.17, rect_bulk_in.ymax - 0.17), + via_enclosure=licon_dt_enc, + via_layer=licon_layer, + via_size=licon_size, + via_spacing=licon_spacing, + ) + ) + + tap_li_in = c_temp.add_ref( + gf.components.rectangle( + size=( + (l_d) + 2 * diff_tap_spacing, + (c_inst.ymax - c_inst.ymin) + 2 * poly_tap_spacing, + ), + layer=li_layer, + ) + ) + tap_li_in.move((-diff_tap_spacing, c_inst.ymin - poly_tap_spacing)) + tap_li_out = c_temp.add_ref( + gf.components.rectangle( + size=( + (rect_bulk_in.xmax - rect_bulk_in.xmin) + 2 * grw, + (rect_bulk_in.ymax - rect_bulk_in.ymin) + 2 * grw, + ), + layer=li_layer, + ) + ) + tap_li_out.move((rect_bulk_in.xmin - grw, rect_bulk_in.ymin - grw)) + c.add_ref( + gf.geometry.boolean( + A=rect_bulk_out, B=rect_bulk_in, operation="A-B", layer=li_layer + ) + ) + + # generating hvi for high voltage + if ( + type == "sky130_fd_pr__nfet_g5v0d10v5" + or type == "sky130_fd_pr__nfet_05v0_nvt" + or type == "sky130_fd_pr__nfet_03v3_nvt" + ): + hvi = c.add_ref( + gf.components.rectangle( + size=( + rect_bulk_out.xmax - rect_bulk_out.xmin + 2 * hv_enclosing, + rect_bulk_out.ymax - rect_bulk_out.ymin + 2 * hv_enclosing, + ), + layer=hvi_layer, + ) + ) + hvi.move( + (rect_bulk_out.xmin - hv_enclosing, rect_bulk_out.ymin - hv_enclosing) + ) + + hvntm = c_inst.add_ref( + gf.components.rectangle( + size=(l_d + 2 * hv_enclosing, w + 2 * hv_enclosing), + layer=hvntm_layer, + ) + ) + hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin - hv_enclosing)) if bulk != "Gaurd Ring": c.add_ref(c_inst) + # generating hvi and hvntm for high voltage + if ( + type == "sky130_fd_pr__nfet_g5v0d10v5" + or type == "sky130_fd_pr__nfet_05v0_nvt" + or type == "sky130_fd_pr__nfet_03v3_nvt" + ): + hvi = c.add_ref( + gf.components.rectangle( + size=( + c_inst.xmax - c_inst.xmin + 2 * hv_enclosing, + (c_inst.ymax - c_inst.ymin) + 2 * hv_enclosing, + ), + layer=hvi_layer, + ) + ) + hvi.move((c_inst.xmin - hv_enclosing, c_inst.ymin - hv_enclosing)) - # generating hvi and hvntm for high voltage - if type=="sky130_fd_pr__nfet_g5v0d10v5" or type== "sky130_fd_pr__nfet_05v0_nvt" or type == "sky130_fd_pr__nfet_03v3_nvt" : - hvi = c.add_ref(gf.components.rectangle(size=(c_inst.xmax-c_inst.xmin + 2*hv_enclosing - , (c_inst.ymax - c_inst.ymin )+ 2*hv_enclosing),layer=hvi_layer)) - hvi.move((c_inst.xmin-hv_enclosing, c_inst.ymin-hv_enclosing)) - - - - if type == "sky130_fd_pr__nfet_01v8_lvt": - lvt = c_inst.add_ref(gf.components.rectangle(size= (nf*l + (nf-1)*inter_sd_l + 2*gate_lvt_enc, w + 2*gate_lvt_enc) - , layer= lvtn_layer)) - lvt.move((sd_l - gate_lvt_enc,-gate_lvt_enc)) - - if type == "sky130_fd_pr__nfet_03v3_nvt" or type == "sky130_fd_pr__nfet_05v0_nvt": - - nvt = c_inst.add_ref(gf.components.rectangle(size= (nf*l + (nf-1)*inter_sd_l + 2*gate_lvt_enc, w + 2*gate_lvt_enc) - , layer= lvtn_layer)) - nvt.move((sd_l - gate_lvt_enc,-gate_lvt_enc)) - - if type == "sky130_fd_pr__nfet_03v3_nvt" : - areaid_lvn = gf.components.rectangle(size=(l+2*areaid_lvn_enc,w+2*areaid_lvn_enc),layer=areaid_lvn_layer) - areaid_lvn_arr = c_inst.add_array(component=areaid_lvn,columns=nf,rows=1,spacing=[l+inter_sd_l,0]) - areaid_lvn_arr.move((sd_l-areaid_lvn_enc , sd_diff.ymin - areaid_lvn_enc)) - - - # creating layout and cell in klayout - c.write_gds(f"nfet_temp.gds") - layout.read(f"nfet_temp.gds") + lvt = c_inst.add_ref( + gf.components.rectangle( + size=( + nf * l_gate + (nf - 1) * inter_sd_l + 2 * gate_lvt_enc, + w + 2 * gate_lvt_enc, + ), + layer=lvtn_layer, + ) + ) + lvt.move((sd_l - gate_lvt_enc, -gate_lvt_enc)) + + if type == "sky130_fd_pr__nfet_03v3_nvt" or type == "sky130_fd_pr__nfet_05v0_nvt": + nvt = c_inst.add_ref( + gf.components.rectangle( + size=( + nf * l_gate + (nf - 1) * inter_sd_l + 2 * gate_lvt_enc, + w + 2 * gate_lvt_enc, + ), + layer=lvtn_layer, + ) + ) + nvt.move((sd_l - gate_lvt_enc, -gate_lvt_enc)) + + if type == "sky130_fd_pr__nfet_03v3_nvt": + areaid_lvn = gf.components.rectangle( + size=(l_gate + 2 * areaid_lvn_enc, w + 2 * areaid_lvn_enc), + layer=areaid_lvn_layer, + ) + areaid_lvn_arr = c_inst.add_array( + component=areaid_lvn, + columns=nf, + rows=1, + spacing=[l_gate + inter_sd_l, 0], + ) + areaid_lvn_arr.move((sd_l - areaid_lvn_enc, sd_diff.ymin - areaid_lvn_enc)) + + # creating layout and cell in klayout + c.write_gds("nfet_temp.gds") + layout.read("nfet_temp.gds") cell_name = "sky_nfet_dev" - return layout.cell(cell_name) - #return c + # return c -#@gf.cell +# @gf.cell def draw_pfet( - layout , - l : float = 0.15, - w : float = 0.42, - sd_con_col : int = 1, - inter_sd_l : float = 0.5,#0.21 , - nf : int = 5, - grw : float = 0.17 , - type = "sky130_fd_pr__pfet_01v8", - bulk = "None", - con_bet_fin : int = 1, - gate_con_pos = "alternating", - interdig : int = 1, - patt = "", - #n = 1 - - -) -> gf.Component: - - ''' + layout, + l_gate: float = 0.15, + w: float = 0.42, + sd_con_col: int = 1, + inter_sd_l: float = 0.5, # 0.21 , + nf: int = 5, + grw: float = 0.17, + type="sky130_fd_pr__pfet_01v8", + bulk="None", + con_bet_fin: int = 1, + gate_con_pos="alternating", + interdig: int = 1, + patt="", + # n = 1 +) -> gf.Component: + """ Retern pfet - Args: - layout : layout object - l : Float of gate length + Args: + layout : layout object + l : Float of gate length w : Float of gate width - sd_con_col : integer of number of contacts columns contained in source and drain area - inter_sd_l : Float of source and drain diffusion length between fingers - nf : integer of number of fingers - M : integer of number of multipliers - grw : gaurd ring width when enabled - type : string of the device type + sd_con_col : integer of number of contacts columns contained in source and drain area + inter_sd_l : Float of source and drain diffusion length between fingers + nf : integer of number of fingers + M : integer of number of multipliers + grw : gaurd ring width when enabled + type : string of the device type bulk : String of bulk connection type (None, Bulk Tie, Guard Ring) con_bet_fin : boolean of having contacts for diffusion between fingers gate_con_pos : string of choosing the gate contact position (bottom, top, alternating ) - ''' + """ - # used layers and dimensions + # used layers and dimensions - end_cap: float = 0.2 # may be increases to solve the met1 drc prob - diff_tap_spacing : float = 0.32 - poly_tap_spacing : float = 0.27 + end_cap: float = 0.2 # may be increases to solve the met1 drc prob + diff_tap_spacing: float = 0.32 + poly_tap_spacing: float = 0.27 - diff_psdm_enc : float = 0.125 - tap_nsdm_enc : float = 0.125 - - nwell_enclosing : float = 0.18 + diff_psdm_enc: float = 0.125 + tap_nsdm_enc: float = 0.125 - if type == "sky130_fd_pr__pfet_g5v0d10v5" : + nwell_enclosing: float = 0.18 + + if type == "sky130_fd_pr__pfet_g5v0d10v5": nwell_enclosing = 0.34 - gate_npc_ext = 0.11 - npc_spacing = 0.27 - - - gate_lvt_enc : float = 0.18 - - gate_hvt_enc : float = 0.18 + npc_spacing = 0.27 + + gate_lvt_enc: float = 0.18 - licon_size = (0.17,0.17) - licon_spacing = (0.19,0.19) - licon_dt_enc = (0.04,0.06) + gate_hvt_enc: float = 0.18 + + licon_size = (0.17, 0.17) + licon_spacing = (0.19, 0.19) + licon_dt_enc = (0.04, 0.06) licon_t_enc = 0.12 - licon_p_enc = (0.05,0.08) + licon_p_enc = (0.05, 0.08) + # m1_m1lic_sp = 0.28+ mcon_enc[0] - end_cap - #m1_m1lic_sp = 0.28+ mcon_enc[0] - end_cap - - sd_l_con = ((sd_con_col)*licon_size[0]) + ((sd_con_col-1)*licon_spacing[0]) + 2*licon_dt_enc[0] + sd_l_con = ( + ((sd_con_col) * licon_size[0]) + + ((sd_con_col - 1) * licon_spacing[0]) + + 2 * licon_dt_enc[0] + ) sd_l = sd_l_con + 0.05 - - - # gds components to store a single instance and the generated device + # gds components to store a single instance and the generated device c = gf.Component("sky_pfet_dev") c_inst = gf.Component("dev_temp") - - - # generating sd diffusion + # generating sd diffusion - if interdig == 1 and nf >1 and nf != len(patt) and patt !="": + if interdig == 1 and nf > 1 and nf != len(patt) and patt != "": nf = len(patt) - - l_d = sd_l + nf*l + (nf-1)*inter_sd_l + sd_l # diffution total length - rect_d = gf.components.rectangle(size = (l_d,w), layer= diff_layer) - sd_diff = c_inst.add_ref(rect_d) - - - # generatin sd contacts - - sd_con = via_stack(x_range = (0,sd_l),y_range=(0,w),base_layer=diff_layer,metal_level=1) - c_inst.add_array(component=sd_con,columns=2,rows=1,spacing=(sd_l+ nf*l + (nf-1)*inter_sd_l,0)) - - if con_bet_fin == 1 and nf>1: - inter_sd_con = via_stack(x_range = (sd_l + l,sd_l + l+ inter_sd_l),y_range=(0,w),base_layer=diff_layer,metal_level=1) - c_inst.add_array(component=inter_sd_con,columns=nf-1,rows=1,spacing=(l+inter_sd_l,0)) - - - - # generating poly - - if (l <= licon_size[0] +2*licon_p_enc[0]) : - pc_x = licon_p_enc[0] +licon_size[0] + licon_p_enc[0] - - else : - pc_x = l - - pc_size = (pc_x, licon_p_enc[1] +licon_size[1] + licon_p_enc[1]) - - c_pc = gf.Component("poly con") - - rect_pc = c_pc.add_ref(gf.components.rectangle(size=pc_size,layer=poly_layer)) + l_d = sd_l + nf * l_gate + (nf - 1) * inter_sd_l + sd_l # diffution total length + rect_d = gf.components.rectangle(size=(l_d, w), layer=diff_layer) + sd_diff = c_inst.add_ref(rect_d) - poly_con = via_stack(x_range=(rect_pc.xmin, rect_pc.xmax),y_range=(rect_pc.ymin, rect_pc.ymax),base_layer=poly_layer,metal_level=1,li_enc_dir="H") + # generatin sd contacts + + sd_con = via_stack( + x_range=(0, sd_l), y_range=(0, w), base_layer=diff_layer, metal_level=1 + ) + c_inst.add_array( + component=sd_con, + columns=2, + rows=1, + spacing=(sd_l + nf * l_gate + (nf - 1) * inter_sd_l, 0), + ) + + if con_bet_fin == 1 and nf > 1: + inter_sd_con = via_stack( + x_range=(sd_l + l_gate, sd_l + l_gate + inter_sd_l), + y_range=(0, w), + base_layer=diff_layer, + metal_level=1, + ) + c_inst.add_array( + component=inter_sd_con, + columns=nf - 1, + rows=1, + spacing=(l_gate + inter_sd_l, 0), + ) + + # generating poly + + if l_gate <= licon_size[0] + 2 * licon_p_enc[0]: + pc_x = licon_p_enc[0] + licon_size[0] + licon_p_enc[0] + + else: + pc_x = l_gate + + pc_size = (pc_x, licon_p_enc[1] + licon_size[1] + licon_p_enc[1]) + + c_pc = gf.Component("poly con") + + rect_pc = c_pc.add_ref(gf.components.rectangle(size=pc_size, layer=poly_layer)) + + poly_con = via_stack( + x_range=(rect_pc.xmin, rect_pc.xmax), + y_range=(rect_pc.ymin, rect_pc.ymax), + base_layer=poly_layer, + metal_level=1, + li_enc_dir="H", + ) c_pc.add_ref(poly_con) - if nf == 1 : - poly = c_inst.add_ref(gf.components.rectangle(size=(l,w+2*end_cap),layer=poly_layer)) - poly.move((sd_l,-end_cap)) + if nf == 1: + poly = c_inst.add_ref( + gf.components.rectangle(size=(l_gate, w + 2 * end_cap), layer=poly_layer) + ) + poly.move((sd_l, -end_cap)) if gate_con_pos == "bottom": mv = 0 nr = 1 - elif gate_con_pos == "top" : - mv = pc_size[1]+ w + 2*end_cap + elif gate_con_pos == "top": + mv = pc_size[1] + w + 2 * end_cap nr = 1 - else : - mv = 0 + else: + mv = 0 nr = 2 - - pc = c_inst.add_array(component=c_pc,rows=nr,columns=1, spacing=(0,pc_size[1]+w+2*end_cap)) - pc.move((sd_l- ((pc_x - l)/2), -pc_size[1] - end_cap + mv)) - + pc = c_inst.add_array( + component=c_pc, + rows=nr, + columns=1, + spacing=(0, pc_size[1] + w + 2 * end_cap), + ) + pc.move((sd_l - ((pc_x - l_gate) / 2), -pc_size[1] - end_cap + mv)) - else : - + else: w_p1 = end_cap + w + end_cap # poly total width - if inter_sd_l < (npc_spacing + 2*gate_npc_ext) : - + if inter_sd_l < (npc_spacing + 2 * gate_npc_ext): if gate_con_pos == "alternating": w_p1 += 0.2 w_p2 = w_p1 e_c = 0.2 - else : - w_p2 = w_p1 + licon_p_enc[1] +licon_size[1] + licon_p_enc[1] + npc_spacing + 0.1 + else: + w_p2 = ( + w_p1 + + licon_p_enc[1] + + licon_size[1] + + licon_p_enc[1] + + npc_spacing + + 0.1 + ) e_c = 0 - if gate_con_pos == "bottom" : - p_mv = -end_cap - (w_p2-w_p1) - else : + if gate_con_pos == "bottom": + p_mv = -end_cap - (w_p2 - w_p1) + else: p_mv = -end_cap - else : + else: w_p2 = w_p1 p_mv = -end_cap e_c = 0 - - rect_p1 = gf.components.rectangle(size = (l,w_p1), layer= poly_layer) - rect_p2 = gf.components.rectangle(size = (l,w_p2), layer= poly_layer) - poly1 = c_inst.add_array(rect_p1, rows= 1 , columns= ceil(nf/2) , spacing= [2*(inter_sd_l+l), 0 ]) - poly1.move((sd_l,-end_cap - e_c)) - - poly2 = c_inst.add_array(rect_p2, rows= 1 , columns= floor(nf/2) , spacing= [2*(inter_sd_l+l), 0 ]) - poly2.move((sd_l+l+inter_sd_l,p_mv)) - - - #generating poly contacts setups + rect_p1 = gf.components.rectangle(size=(l_gate, w_p1), layer=poly_layer) + rect_p2 = gf.components.rectangle(size=(l_gate, w_p2), layer=poly_layer) + poly1 = c_inst.add_array( + rect_p1, + rows=1, + columns=ceil(nf / 2), + spacing=[2 * (inter_sd_l + l_gate), 0], + ) + poly1.move((sd_l, -end_cap - e_c)) + + poly2 = c_inst.add_array( + rect_p2, + rows=1, + columns=floor(nf / 2), + spacing=[2 * (inter_sd_l + l_gate), 0], + ) + poly2.move((sd_l + l_gate + inter_sd_l, p_mv)) + + # generating poly contacts setups if gate_con_pos == "bottom": mv_1 = 0 - mv_2 = - (w_p2-w_p1) - elif gate_con_pos == "top" : - mv_1 = pc_size[1]+ w_p1 - mv_2 = pc_size[1]+ w_p2 - else : + mv_2 = -(w_p2 - w_p1) + elif gate_con_pos == "top": + mv_1 = pc_size[1] + w_p1 + mv_2 = pc_size[1] + w_p2 + else: mv_1 = -e_c - mv_2 = pc_size[1]+ w_p2 - - - nc1 = ceil(nf/2) - nc2 = floor(nf/2) - - pc_spacing = 2*(inter_sd_l + l) - - # generating poly contacts - - pc1 = c_inst.add_array(component=c_pc,rows=1,columns=nc1,spacing=(pc_spacing,0)) - pc1.move((sd_l- ((pc_x - l)/2), -pc_size[1] - end_cap + mv_1)) - - pc2 = c_inst.add_array(component=c_pc,rows=1,columns=nc2,spacing=(pc_spacing,0)) - pc2.move((sd_l- ((pc_x - l)/2) + (inter_sd_l + l), -pc_size[1] - end_cap + mv_2)) - - - - if interdig == 1 : - if nf == len(patt) : + mv_2 = pc_size[1] + w_p2 + + nc1 = ceil(nf / 2) + nc2 = floor(nf / 2) + + pc_spacing = 2 * (inter_sd_l + l_gate) + + # generating poly contacts + + pc1 = c_inst.add_array( + component=c_pc, rows=1, columns=nc1, spacing=(pc_spacing, 0) + ) + pc1.move((sd_l - ((pc_x - l_gate) / 2), -pc_size[1] - end_cap + mv_1)) + + pc2 = c_inst.add_array( + component=c_pc, rows=1, columns=nc2, spacing=(pc_spacing, 0) + ) + pc2.move( + ( + sd_l - ((pc_x - l_gate) / 2) + (inter_sd_l + l_gate), + -pc_size[1] - end_cap + mv_2, + ) + ) + + if interdig == 1: + if nf == len(patt): pat = list(patt) - nt = [] # list to store the symbols of transistors and thier number nt(number of transistors) + nt = ( + [] + ) # list to store the symbols of transistors and thier number nt(number of transistors) [nt.append(x) for x in pat if x not in nt] nl = len(nt) m2_spacing = 0.14 - via1_size = (0.15,0.15) - via1_enc = (0.085,0.055) - via1_spacing = (0.17,0.17) - via2_size = (0.2,0.2) - via2_enc = (0.085,0.065) - via2_spacing = (0.2,0.2) + via1_size = (0.15, 0.15) + via1_enc = (0.085, 0.055) + via1_spacing = (0.17, 0.17) + via2_size = (0.2, 0.2) + via2_enc = (0.085, 0.065) - m2_y = via1_size[1]+2*via1_enc[1] - m2 = gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin, m2_y),layer=m2_layer) + m2_y = via1_size[1] + 2 * via1_enc[1] + m2 = gf.components.rectangle( + size=(sd_diff.xmax - sd_diff.xmin, m2_y), layer=m2_layer + ) if gate_con_pos == "alternating": pat_o = [] pat_e = [] for i in range(int(nf)): - if i%2 == 0 : + if i % 2 == 0: pat_e.append(pat[i]) - else : + else: pat_o.append(pat[i]) - + nt_o = [] [nt_o.append(x) for x in pat_o if x not in nt_o] @@ -737,221 +1214,580 @@ def draw_pfet( nl_b = len(nt_e) nl_u = len(nt_o) - - m2_y = via2_size[1]+2*via2_enc[1] - m2 = gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin, m2_y),layer=m2_layer) - m2_arrb = c_inst.add_array(component=m2, columns=1, rows=nl_b,spacing= (0, -m2_y - m2_spacing)) + m2_y = via2_size[1] + 2 * via2_enc[1] + m2 = gf.components.rectangle( + size=(sd_diff.xmax - sd_diff.xmin, m2_y), layer=m2_layer + ) + + m2_arrb = c_inst.add_array( + component=m2, + columns=1, + rows=nl_b, + spacing=(0, -m2_y - m2_spacing), + ) m2_arrb.movey(pc1.ymin - m2_spacing - m2_y) - m2_arru = c_inst.add_array(component=m2, columns=1, rows=nl_u,spacing= (0, m2_y + m2_spacing)) + m2_arru = c_inst.add_array( + component=m2, + columns=1, + rows=nl_u, + spacing=(0, m2_y + m2_spacing), + ) m2_arru.movey(pc2.ymax + m2_spacing) - for i in range(nl_u): - for j in range(floor(nf/2)): + for j in range(floor(nf / 2)): if pat_o[j] == nt_o[i]: - m1 = c_inst.add_ref(gf.components.rectangle( - size=(poly_con.xmax - poly_con.xmin , ((pc2.ymax + (i+1)*(m2_spacing+ m2_y)) - pc2.ymin )),layer=m1_layer)) - m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + (2*j +1)*(l+inter_sd_l)) - , (pc2.ymin+0.06))) - via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arru.ymin + i*(m2_y+m2_spacing),m2_arru.ymin + i*(m2_y+m2_spacing)+m2_y) - , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + m1 = c_inst.add_ref( + gf.components.rectangle( + size=( + poly_con.xmax - poly_con.xmin, + ( + ( + pc2.ymax + + (i + 1) * (m2_spacing + m2_y) + ) + - pc2.ymin + ), + ), + layer=m1_layer, + ) + ) + m1.move( + ( + ( + sd_l + - ( + (poly_con.xmax - poly_con.xmin - l_gate) + / 2 + ) + + (2 * j + 1) * (l_gate + inter_sd_l) + ), + (pc2.ymin + 0.06), + ) + ) + via1_dr = via_generator( + x_range=(m1.xmin, m1.xmax), + y_range=( + m2_arru.ymin + i * (m2_y + m2_spacing), + m2_arru.ymin + i * (m2_y + m2_spacing) + m2_y, + ), + via_enclosure=via1_enc, + via_layer=via1_layer, + via_size=via1_size, + via_spacing=via1_spacing, + ) via1 = c_inst.add_ref(via1_dr) - c_inst.add_label(f'{pat_o[j]}',position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) - #c_inst.add_label(f'G_{pat_o[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) + c_inst.add_label( + f"{pat_o[j]}", + position=( + (via1.xmax + via1.xmin) / 2, + (via1.ymax + via1.ymin) / 2, + ), + layer=m1_lbl, + ) + # c_inst.add_label(f'G_{pat_o[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) - - for i in range(nl_b): - for j in range(ceil(nf/2)): + for j in range(ceil(nf / 2)): if pat_e[j] == nt_e[i]: - - m1 = c_inst.add_ref(gf.components.rectangle( - size=(poly_con.xmax - poly_con.xmin , ((pc1.ymax + (i+1)*(m2_spacing+ m2_y)) -pc1.ymin )),layer=m1_layer)) - m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + (2*j)*(l+inter_sd_l)), -(m1.ymax - m1.ymin) + (pc1.ymax-0.06))) - via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arrb.ymax - i*(m2_spacing+m2_y) - m2_y,m2_arrb.ymax - i*(m2_spacing+m2_y)) - , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + m1 = c_inst.add_ref( + gf.components.rectangle( + size=( + poly_con.xmax - poly_con.xmin, + ( + ( + pc1.ymax + + (i + 1) * (m2_spacing + m2_y) + ) + - pc1.ymin + ), + ), + layer=m1_layer, + ) + ) + m1.move( + ( + ( + sd_l + - ( + (poly_con.xmax - poly_con.xmin - l_gate) + / 2 + ) + + (2 * j) * (l_gate + inter_sd_l) + ), + -(m1.ymax - m1.ymin) + (pc1.ymax - 0.06), + ) + ) + via1_dr = via_generator( + x_range=(m1.xmin, m1.xmax), + y_range=( + m2_arrb.ymax - i * (m2_spacing + m2_y) - m2_y, + m2_arrb.ymax - i * (m2_spacing + m2_y), + ), + via_enclosure=via1_enc, + via_layer=via1_layer, + via_size=via1_size, + via_spacing=via1_spacing, + ) via1 = c_inst.add_ref(via1_dr) - c_inst.add_label(f'{pat_e[j]}',position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) - #c_inst.add_label(f'G_{pat_e[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc1.ymin + pc1.ymax)/2),layer=m1_lbl) - - - m3_x = via2_size[0] + 2*via2_enc[0] + c_inst.add_label( + f"{pat_e[j]}", + position=( + (via1.xmax + via1.xmin) / 2, + (via1.ymax + via1.ymin) / 2, + ), + layer=m1_lbl, + ) + # c_inst.add_label(f'G_{pat_e[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc1.ymin + pc1.ymax)/2),layer=m1_lbl) + + m3_x = via2_size[0] + 2 * via2_enc[0] m3_spacing = 0.3 - + for i in range(nl_b): for j in range(nl_u): if nt_e[i] == nt_o[j]: - - m2_join_b = c_inst.add_ref(gf.components.rectangle(size=(m2_y+ (i+1)*(m3_spacing+m3_x),m2_y),layer=m2_layer) - .move((m2_arrb.xmin -(m2_y + (i+1)*(m3_spacing+m3_x)),m2_arrb.ymax - i*(m2_spacing+m2_y) - m2_y))) - m2_join_u = c_inst.add_ref(gf.components.rectangle(size=(m2_y+ (i+1)*(m3_spacing+m3_x),m2_y),layer=m2_layer) - .move((m2_arru.xmin -( m2_y + (i+1)*(m3_spacing+m3_x) ),m2_arru.ymin + j*(m2_spacing+m2_y)))) - m3 = c_inst.add_ref(gf.components.rectangle(size=(m3_x, m2_join_u.ymax - m2_join_b.ymin),layer=m1_layer)) - m3.move((m2_join_b.xmin,m2_join_b.ymin)) - via2_dr = via_generator(x_range=(m3.xmin,m3.xmax),y_range=(m2_join_b.ymin,m2_join_b.ymax),via_enclosure=via1_enc,via_size=via1_size - ,via_layer=via1_layer,via_spacing=via1_spacing) - via2 = c_inst.add_array(component=via2_dr,columns=1,rows=2,spacing=(0,m2_join_u.ymin-m2_join_b.ymin)) - - - - elif gate_con_pos == "top" : - - m2_arr = c_inst.add_array(component=m2, columns=1, rows=nl , spacing=(0,m2.ymax-m2.ymin + m2_spacing)) + m2_join_b = c_inst.add_ref( + gf.components.rectangle( + size=( + m2_y + (i + 1) * (m3_spacing + m3_x), + m2_y, + ), + layer=m2_layer, + ).move( + ( + m2_arrb.xmin + - (m2_y + (i + 1) * (m3_spacing + m3_x)), + m2_arrb.ymax + - i * (m2_spacing + m2_y) + - m2_y, + ) + ) + ) + m2_join_u = c_inst.add_ref( + gf.components.rectangle( + size=( + m2_y + (i + 1) * (m3_spacing + m3_x), + m2_y, + ), + layer=m2_layer, + ).move( + ( + m2_arru.xmin + - (m2_y + (i + 1) * (m3_spacing + m3_x)), + m2_arru.ymin + j * (m2_spacing + m2_y), + ) + ) + ) + m3 = c_inst.add_ref( + gf.components.rectangle( + size=(m3_x, m2_join_u.ymax - m2_join_b.ymin), + layer=m1_layer, + ) + ) + m3.move((m2_join_b.xmin, m2_join_b.ymin)) + via2_dr = via_generator( + x_range=(m3.xmin, m3.xmax), + y_range=(m2_join_b.ymin, m2_join_b.ymax), + via_enclosure=via1_enc, + via_size=via1_size, + via_layer=via1_layer, + via_spacing=via1_spacing, + ) + c_inst.add_array( + component=via2_dr, + columns=1, + rows=2, + spacing=(0, m2_join_u.ymin - m2_join_b.ymin), + ) + + elif gate_con_pos == "top": + m2_arr = c_inst.add_array( + component=m2, + columns=1, + rows=nl, + spacing=(0, m2.ymax - m2.ymin + m2_spacing), + ) m2_arr.movey(pc2.ymax + m2_spacing) - + for i in range(nl): for j in range(int(nf)): if pat[j] == nt[i]: - m1 = c_inst.add_ref(gf.components.rectangle( - size=(poly_con.xmax - poly_con.xmin , ((pc2.ymax + (i+1)*(m2_spacing+ m2_y)) - ((1-j%2)*pc1.ymin) - (j%2)*pc2.ymin )),layer=m1_layer)) - m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + j*(l+inter_sd_l)) - , (1-j%2)*(pc1.ymin+0.06) + (j%2)*(pc2.ymin+0.06))) - via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arr.ymin + i*(m2_spacing+m2_y),m2_arr.ymin + i*(m2_spacing+m2_y)+m2_y) - , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + m1 = c_inst.add_ref( + gf.components.rectangle( + size=( + poly_con.xmax - poly_con.xmin, + ( + ( + pc2.ymax + + (i + 1) * (m2_spacing + m2_y) + ) + - ((1 - j % 2) * pc1.ymin) + - (j % 2) * pc2.ymin + ), + ), + layer=m1_layer, + ) + ) + m1.move( + ( + ( + sd_l + - ( + (poly_con.xmax - poly_con.xmin - l_gate) + / 2 + ) + + j * (l_gate + inter_sd_l) + ), + (1 - j % 2) * (pc1.ymin + 0.06) + + (j % 2) * (pc2.ymin + 0.06), + ) + ) + via1_dr = via_generator( + x_range=(m1.xmin, m1.xmax), + y_range=( + m2_arr.ymin + i * (m2_spacing + m2_y), + m2_arr.ymin + i * (m2_spacing + m2_y) + m2_y, + ), + via_enclosure=via1_enc, + via_layer=via1_layer, + via_size=via1_size, + via_spacing=via1_spacing, + ) via1 = c_inst.add_ref(via1_dr) - c_inst.add_label(f'{pat[j]}',position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) - #c_inst.add_label(f'G_{pat[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) - - - elif gate_con_pos == "bottom" : - - m2_arr = c_inst.add_array(component=m2, columns=1, rows=nl , spacing=(0,-m2_y - m2_spacing)) + c_inst.add_label( + f"{pat[j]}", + position=( + (via1.xmax + via1.xmin) / 2, + (via1.ymax + via1.ymin) / 2, + ), + layer=m1_lbl, + ) + # c_inst.add_label(f'G_{pat[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) + + elif gate_con_pos == "bottom": + m2_arr = c_inst.add_array( + component=m2, + columns=1, + rows=nl, + spacing=(0, -m2_y - m2_spacing), + ) m2_arr.movey(pc2.ymin - m2_spacing - m2_y) - + for i in range(nl): for j in range(int(nf)): if pat[j] == nt[i]: - - m1 = c_inst.add_ref(gf.components.rectangle( - size=(poly_con.xmax - poly_con.xmin , ((pc1.ymax + (i+1)*(m2_spacing+ m2_y)) - (j%2)*pc1.ymin - (1-j%2)*pc2.ymin)),layer=m1_layer)) - m1.move(((sd_l- ((poly_con.xmax - poly_con.xmin - l)/2) + j*(l+inter_sd_l)), -(m1.ymax - m1.ymin) + (1-j%2)*(pc1.ymax-0.06)+ (j%2)*(pc2.ymax-0.06))) - via1_dr = via_generator(x_range=(m1.xmin,m1.xmax),y_range=(m2_arr.ymax - i*(m2_spacing+m2_y) -m2_y,m2_arr.ymax - i*(m2_spacing+m2_y) ) - , via_enclosure=via1_enc,via_layer=via1_layer,via_size=via1_size,via_spacing=via1_spacing) + m1 = c_inst.add_ref( + gf.components.rectangle( + size=( + poly_con.xmax - poly_con.xmin, + ( + ( + pc1.ymax + + (i + 1) * (m2_spacing + m2_y) + ) + - (j % 2) * pc1.ymin + - (1 - j % 2) * pc2.ymin + ), + ), + layer=m1_layer, + ) + ) + m1.move( + ( + ( + sd_l + - ( + (poly_con.xmax - poly_con.xmin - l_gate) + / 2 + ) + + j * (l_gate + inter_sd_l) + ), + -(m1.ymax - m1.ymin) + + (1 - j % 2) * (pc1.ymax - 0.06) + + (j % 2) * (pc2.ymax - 0.06), + ) + ) + via1_dr = via_generator( + x_range=(m1.xmin, m1.xmax), + y_range=( + m2_arr.ymax - i * (m2_spacing + m2_y) - m2_y, + m2_arr.ymax - i * (m2_spacing + m2_y), + ), + via_enclosure=via1_enc, + via_layer=via1_layer, + via_size=via1_size, + via_spacing=via1_spacing, + ) via1 = c_inst.add_ref(via1_dr) - c_inst.add_label(f'{pat[j]}',position=((via1.xmax+via1.xmin)/2, (via1.ymax+via1.ymin)/2),layer=m1_lbl) - #c_inst.add_label(f'G_{pat[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) - - - # generating bulk + c_inst.add_label( + f"{pat[j]}", + position=( + (via1.xmax + via1.xmin) / 2, + (via1.ymax + via1.ymin) / 2, + ), + layer=m1_lbl, + ) + # c_inst.add_label(f'G_{pat[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) + + # generating bulk if bulk == "None": - psdm = c_inst.add_ref(gf.components.rectangle(size=(l_d+ 2*diff_psdm_enc, w+ 2*diff_psdm_enc),layer= psdm_layer)) - psdm.move((-diff_psdm_enc,-diff_psdm_enc)) - + psdm = c_inst.add_ref( + gf.components.rectangle( + size=(l_d + 2 * diff_psdm_enc, w + 2 * diff_psdm_enc), layer=psdm_layer + ) + ) + psdm.move((-diff_psdm_enc, -diff_psdm_enc)) elif bulk == "bulk tie": - rect_bulk = c_inst.add_ref(gf.components.rectangle(size=(1.3*sd_l,w),layer=tap_layer)) - rect_bulk.connect("e1",destination=sd_diff.ports["e3"]) - psdm = c_inst.add_ref(gf.components.rectangle(size=(sd_diff.xmax - sd_diff.xmin + diff_psdm_enc,w + 2*diff_psdm_enc),layer=psdm_layer)) - psdm.move((-diff_psdm_enc,-diff_psdm_enc)) - nsdm = c_inst.add_ref(gf.components.rectangle(size=(rect_bulk.xmax - rect_bulk.xmin +tap_nsdm_enc, w+ 2*tap_nsdm_enc), layer= nsdm_layer)) - nsdm.move((rect_bulk.xmin,rect_bulk.ymin - tap_nsdm_enc)) - - bulk_con = via_stack(x_range= (rect_bulk.xmin+0.1,rect_bulk.xmax-0.1),y_range=(rect_bulk.ymin,rect_bulk.ymax),base_layer=tap_layer,metal_level=0) + rect_bulk = c_inst.add_ref( + gf.components.rectangle(size=(1.3 * sd_l, w), layer=tap_layer) + ) + rect_bulk.connect("e1", destination=sd_diff.ports["e3"]) + psdm = c_inst.add_ref( + gf.components.rectangle( + size=( + sd_diff.xmax - sd_diff.xmin + diff_psdm_enc, + w + 2 * diff_psdm_enc, + ), + layer=psdm_layer, + ) + ) + psdm.move((-diff_psdm_enc, -diff_psdm_enc)) + nsdm = c_inst.add_ref( + gf.components.rectangle( + size=( + rect_bulk.xmax - rect_bulk.xmin + tap_nsdm_enc, + w + 2 * tap_nsdm_enc, + ), + layer=nsdm_layer, + ) + ) + nsdm.move((rect_bulk.xmin, rect_bulk.ymin - tap_nsdm_enc)) + + bulk_con = via_stack( + x_range=(rect_bulk.xmin + 0.1, rect_bulk.xmax - 0.1), + y_range=(rect_bulk.ymin, rect_bulk.ymax), + base_layer=tap_layer, + metal_level=0, + ) c_inst.add_ref(bulk_con) - - elif bulk == "Gaurd Ring": - - psdm = c_inst.add_ref(gf.components.rectangle(size=(l_d+ 2*diff_psdm_enc, w+ 2*diff_psdm_enc),layer= psdm_layer)) - psdm.move((-diff_psdm_enc,-diff_psdm_enc)) + psdm = c_inst.add_ref( + gf.components.rectangle( + size=(l_d + 2 * diff_psdm_enc, w + 2 * diff_psdm_enc), layer=psdm_layer + ) + ) + psdm.move((-diff_psdm_enc, -diff_psdm_enc)) c.add_ref(c_inst) - - c_temp = gf.Component("temp_store") - rect_bulk_in = c_temp.add_ref(gf.components.rectangle(size=((c_inst.xmax - c_inst.xmin) + 2*diff_tap_spacing, - (c_inst.ymax - c_inst.ymin) + 2*poly_tap_spacing ) - , layer= tap_layer)) - - rect_bulk_in.move((c_inst.xmin-diff_tap_spacing,c_inst.ymin - poly_tap_spacing)) - rect_bulk_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) + 2*grw,(rect_bulk_in.ymax - rect_bulk_in.ymin) + 2*grw ) - , layer= tap_layer)) - rect_bulk_out.move((rect_bulk_in.xmin - grw , rect_bulk_in.ymin -grw )) - B = c.add_ref(gf.geometry.boolean(A= rect_bulk_out , B = rect_bulk_in , operation= "A-B", layer= tap_layer) ) - - nsdm_in = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) - 2*tap_nsdm_enc, (rect_bulk_in.ymax - rect_bulk_in.ymin) - 2*tap_nsdm_enc ) - , layer= nsdm_layer)) - nsdm_in.move((rect_bulk_in.xmin + tap_nsdm_enc, rect_bulk_in.ymin + tap_nsdm_enc)) - nsdm_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_out.xmax - rect_bulk_out.xmin) + 2*tap_nsdm_enc, (rect_bulk_out.ymax - rect_bulk_out.ymin) + 2*tap_nsdm_enc ) - , layer= nsdm_layer)) - nsdm_out.move((rect_bulk_out.xmin - tap_nsdm_enc, rect_bulk_out.ymin - tap_nsdm_enc)) - nsdm = c.add_ref(gf.geometry.boolean(A= nsdm_out , B = nsdm_in , operation= "A-B", layer= nsdm_layer) ) - - # adding contacts - - if grw < licon_size[0] + 2*licon_t_enc : - g_con_range = (B.ymin , B.ymax ) - else : - g_con_range = (B.ymin , B.ymax ) - - ring_con_bot = c.add_ref(via_generator(x_range=(rect_bulk_in.xmin+0.17,rect_bulk_in.xmax-0.17),y_range=(rect_bulk_out.ymin,rect_bulk_in.ymin) - , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) - - ring_con_up = c.add_ref(via_generator(x_range=(rect_bulk_in.xmin+0.17,rect_bulk_in.xmax-0.17),y_range=(rect_bulk_in.ymax,rect_bulk_out.ymax) - , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) - - ring_con_r = c.add_ref(via_generator(x_range=(rect_bulk_out.xmin,rect_bulk_in.xmin),y_range=g_con_range - , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) - - ring_con_l = c.add_ref(via_generator(x_range=(rect_bulk_in.xmax,rect_bulk_out.xmax),y_range=g_con_range - , via_enclosure=licon_dt_enc, via_layer=licon_layer,via_size=licon_size,via_spacing=licon_spacing)) - - tap_li_in = c_temp.add_ref(gf.components.rectangle(size=((l_d ) + 2*diff_tap_spacing, - (c_inst.ymax - c_inst.ymin) + 2*poly_tap_spacing ) - , layer= li_layer)) - tap_li_in.move((-diff_tap_spacing,c_inst.ymin - poly_tap_spacing)) - tap_li_out = c_temp.add_ref(gf.components.rectangle(size=((rect_bulk_in.xmax - rect_bulk_in.xmin) + 2*grw,(rect_bulk_in.ymax - rect_bulk_in.ymin) + 2*grw ) - , layer= li_layer)) - tap_li_out.move((rect_bulk_in.xmin - grw , rect_bulk_in.ymin -grw )) - li = c.add_ref(gf.geometry.boolean(A= rect_bulk_out , B = rect_bulk_in , operation= "A-B", layer= li_layer) ) - - - # generating nwell - nwell = c.add_ref(gf.components.rectangle(size=(nsdm_out.xmax-nsdm_out.xmin + 2*nwell_enclosing, nsdm_out.ymax-nsdm_out.ymin + 2*nwell_enclosing) - , layer=nwell_layer)) - nwell.move((nsdm_out.xmin - nwell_enclosing, nsdm_out.ymin - nwell_enclosing )) - - - + c_temp = gf.Component("temp_store") + rect_bulk_in = c_temp.add_ref( + gf.components.rectangle( + size=( + (c_inst.xmax - c_inst.xmin) + 2 * diff_tap_spacing, + (c_inst.ymax - c_inst.ymin) + 2 * poly_tap_spacing, + ), + layer=tap_layer, + ) + ) + + rect_bulk_in.move( + (c_inst.xmin - diff_tap_spacing, c_inst.ymin - poly_tap_spacing) + ) + rect_bulk_out = c_temp.add_ref( + gf.components.rectangle( + size=( + (rect_bulk_in.xmax - rect_bulk_in.xmin) + 2 * grw, + (rect_bulk_in.ymax - rect_bulk_in.ymin) + 2 * grw, + ), + layer=tap_layer, + ) + ) + rect_bulk_out.move((rect_bulk_in.xmin - grw, rect_bulk_in.ymin - grw)) + B = c.add_ref( + gf.geometry.boolean( + A=rect_bulk_out, B=rect_bulk_in, operation="A-B", layer=tap_layer + ) + ) + + nsdm_in = c_temp.add_ref( + gf.components.rectangle( + size=( + (rect_bulk_in.xmax - rect_bulk_in.xmin) - 2 * tap_nsdm_enc, + (rect_bulk_in.ymax - rect_bulk_in.ymin) - 2 * tap_nsdm_enc, + ), + layer=nsdm_layer, + ) + ) + nsdm_in.move( + (rect_bulk_in.xmin + tap_nsdm_enc, rect_bulk_in.ymin + tap_nsdm_enc) + ) + nsdm_out = c_temp.add_ref( + gf.components.rectangle( + size=( + (rect_bulk_out.xmax - rect_bulk_out.xmin) + 2 * tap_nsdm_enc, + (rect_bulk_out.ymax - rect_bulk_out.ymin) + 2 * tap_nsdm_enc, + ), + layer=nsdm_layer, + ) + ) + nsdm_out.move( + (rect_bulk_out.xmin - tap_nsdm_enc, rect_bulk_out.ymin - tap_nsdm_enc) + ) + nsdm = c.add_ref( + gf.geometry.boolean( + A=nsdm_out, B=nsdm_in, operation="A-B", layer=nsdm_layer + ) + ) + + # adding contacts + + if grw < licon_size[0] + 2 * licon_t_enc: + g_con_range = (B.ymin, B.ymax) + else: + g_con_range = (B.ymin, B.ymax) + + c.add_ref( + via_generator( + x_range=(rect_bulk_in.xmin + 0.17, rect_bulk_in.xmax - 0.17), + y_range=(rect_bulk_out.ymin, rect_bulk_in.ymin), + via_enclosure=licon_dt_enc, + via_layer=licon_layer, + via_size=licon_size, + via_spacing=licon_spacing, + ) + ) + + c.add_ref( + via_generator( + x_range=(rect_bulk_in.xmin + 0.17, rect_bulk_in.xmax - 0.17), + y_range=(rect_bulk_in.ymax, rect_bulk_out.ymax), + via_enclosure=licon_dt_enc, + via_layer=licon_layer, + via_size=licon_size, + via_spacing=licon_spacing, + ) + ) + + c.add_ref( + via_generator( + x_range=(rect_bulk_out.xmin, rect_bulk_in.xmin), + y_range=g_con_range, + via_enclosure=licon_dt_enc, + via_layer=licon_layer, + via_size=licon_size, + via_spacing=licon_spacing, + ) + ) + + c.add_ref( + via_generator( + x_range=(rect_bulk_in.xmax, rect_bulk_out.xmax), + y_range=g_con_range, + via_enclosure=licon_dt_enc, + via_layer=licon_layer, + via_size=licon_size, + via_spacing=licon_spacing, + ) + ) + + tap_li_in = c_temp.add_ref( + gf.components.rectangle( + size=( + (l_d) + 2 * diff_tap_spacing, + (c_inst.ymax - c_inst.ymin) + 2 * poly_tap_spacing, + ), + layer=li_layer, + ) + ) + tap_li_in.move((-diff_tap_spacing, c_inst.ymin - poly_tap_spacing)) + tap_li_out = c_temp.add_ref( + gf.components.rectangle( + size=( + (rect_bulk_in.xmax - rect_bulk_in.xmin) + 2 * grw, + (rect_bulk_in.ymax - rect_bulk_in.ymin) + 2 * grw, + ), + layer=li_layer, + ) + ) + tap_li_out.move((rect_bulk_in.xmin - grw, rect_bulk_in.ymin - grw)) + c.add_ref( + gf.geometry.boolean( + A=rect_bulk_out, B=rect_bulk_in, operation="A-B", layer=li_layer + ) + ) + + # generating nwell + nwell = c.add_ref( + gf.components.rectangle( + size=( + nsdm_out.xmax - nsdm_out.xmin + 2 * nwell_enclosing, + nsdm_out.ymax - nsdm_out.ymin + 2 * nwell_enclosing, + ), + layer=nwell_layer, + ) + ) + nwell.move((nsdm_out.xmin - nwell_enclosing, nsdm_out.ymin - nwell_enclosing)) if bulk != "Gaurd Ring": c.add_ref(c_inst) - # nwell generation - nwell = c.add_ref(gf.components.rectangle(size=(c_inst.xmax - c_inst.xmin + 2*nwell_enclosing - , (c_inst.ymax-c_inst.ymin) + 2*nwell_enclosing),layer=nwell_layer)) - nwell.move((c_inst.xmin-nwell_enclosing,c_inst.ymin-nwell_enclosing)) - + # nwell generation + nwell = c.add_ref( + gf.components.rectangle( + size=( + c_inst.xmax - c_inst.xmin + 2 * nwell_enclosing, + (c_inst.ymax - c_inst.ymin) + 2 * nwell_enclosing, + ), + layer=nwell_layer, + ) + ) + nwell.move((c_inst.xmin - nwell_enclosing, c_inst.ymin - nwell_enclosing)) if type == "sky130_fd_pr__pfet_01v8_lvt": - lvt = c_inst.add_ref(gf.components.rectangle(size= (nf*l + (nf-1)*inter_sd_l + 2*gate_lvt_enc, w + 2*gate_lvt_enc) - , layer= lvtn_layer)) - lvt.move((sd_l - gate_lvt_enc,-gate_lvt_enc)) - + lvt = c_inst.add_ref( + gf.components.rectangle( + size=( + nf * l_gate + (nf - 1) * inter_sd_l + 2 * gate_lvt_enc, + w + 2 * gate_lvt_enc, + ), + layer=lvtn_layer, + ) + ) + lvt.move((sd_l - gate_lvt_enc, -gate_lvt_enc)) if type == "sky130_fd_pr__pfet_01v8_hvt": - hvt = c_inst.add_ref(gf.components.rectangle(size= (nf*l + (nf-1)*inter_sd_l + 2*gate_hvt_enc, w + 2*gate_hvt_enc) - , layer= hvtp_layer)) - hvt.move((sd_l - gate_hvt_enc,-gate_hvt_enc)) - - if type == "sky130_fd_pr__pfet_g5v0d10v5" : - hvi = c.add_ref(gf.components.rectangle(size=(nwell.xmax-nwell.xmin,nwell.ymax-nwell.ymin),layer=hvi_layer)) - hvi.move((nwell.xmin,nwell.ymin)) - - - # creating layout and cell in klayout - c.write_gds(f"pfet_temp.gds") - layout.read(f"pfet_temp.gds") + hvt = c_inst.add_ref( + gf.components.rectangle( + size=( + nf * l_gate + (nf - 1) * inter_sd_l + 2 * gate_hvt_enc, + w + 2 * gate_hvt_enc, + ), + layer=hvtp_layer, + ) + ) + hvt.move((sd_l - gate_hvt_enc, -gate_hvt_enc)) + + if type == "sky130_fd_pr__pfet_g5v0d10v5": + hvi = c.add_ref( + gf.components.rectangle( + size=(nwell.xmax - nwell.xmin, nwell.ymax - nwell.ymin), layer=hvi_layer + ) + ) + hvi.move((nwell.xmin, nwell.ymin)) + + # creating layout and cell in klayout + c.write_gds("pfet_temp.gds") + layout.read("pfet_temp.gds") cell_name = "sky_pfet_dev" - - + return layout.cell(cell_name) - #return c + # return c if __name__ == "__main__": c = draw_pfet() c.show() - \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py b/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py index d7d8aacae..0566bc190 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py +++ b/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -18,29 +18,23 @@ ######################################################################################################################## -from .via_generator import * -from .globals import * -from .layers_def import * import gdsfactory as gf -def draw_gr ( - layout , - in_l : float = 1, - in_w : float = 1, - grw : float = 0.17, - con_lev = "li" -) : +from .layers_def import li_layer, licon_layer, m1_layer, mcon_layer, tap_layer +from .via_generator import via_generator + - ''' - layout : layout object +def draw_gr(layout, in_l: float = 1, in_w: float = 1, grw: float = 0.17, con_lev="li"): + """ + layout : layout object in_l : float of the inner length of the ring - in_w : float of the inner width of the ring - grw : float of the guard ring width + in_w : float of the inner width of the ring + grw : float of the guard ring width con_lev : connection level of (li, metal1) - ''' + """ - con_size = (0.17,0.17) + con_size = (0.17, 0.17) con_spacing = (0.19, 0.19) con_enc = (0.12, 0.12) @@ -48,48 +42,115 @@ def draw_gr ( c_temp = gf.Component("temp_store") inner = c_temp.add_ref(gf.components.rectangle(size=(in_w, in_l), layer=tap_layer)) - outer = c_temp.add_ref(gf.components.rectangle(size=(inner.xmax - inner.xmin + 2*grw , inner.ymax - inner.ymin + 2*grw), layer=tap_layer)) + outer = c_temp.add_ref( + gf.components.rectangle( + size=(inner.xmax - inner.xmin + 2 * grw, inner.ymax - inner.ymin + 2 * grw), + layer=tap_layer, + ) + ) outer.move((-grw, -grw)) - gr = c.add_ref(gf.geometry.boolean(A=outer, B=inner , operation="A-B", layer=tap_layer)) + c.add_ref(gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=tap_layer)) if con_lev == "li" or con_lev == "metal1": - li = c.add_ref(gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=li_layer)) + c.add_ref( + gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=li_layer) + ) - if grw < con_size[0] + 2*con_enc[0]: + if grw < con_size[0] + 2 * con_enc[0]: con_range = (inner.xmin, inner.xmax) - else : + else: con_range = (outer.xmin, outer.xmax) - licon_l = c.add_ref(via_generator(x_range=(outer.xmin, inner.xmin), y_range=(inner.ymin + 0.17 , inner.ymax - 0.17), via_enclosure=con_enc, via_layer=licon_layer - , via_size=con_size, via_spacing=con_spacing)) - licon_r = c.add_ref(via_generator(x_range=(inner.xmax, outer.xmax), y_range=(inner.ymin + 0.17 , inner.ymax - 0.17), via_enclosure=con_enc, via_layer=licon_layer - , via_size=con_size, via_spacing=con_spacing)) - licon_t = c.add_ref(via_generator(x_range=con_range, y_range=(inner.ymax, outer.ymax), via_enclosure=con_enc, via_layer=licon_layer - , via_size=con_size, via_spacing=con_spacing)) - licon_b = c.add_ref(via_generator(x_range=con_range, y_range=(outer.ymin, inner.ymin), via_enclosure=con_enc, via_layer=licon_layer - , via_size=con_size, via_spacing=con_spacing)) - - - - if con_lev == "metal1" : - m1 = c.add_ref(gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=m1_layer)) - - mcon_l = c.add_ref(via_generator(x_range=(outer.xmin, inner.xmin), y_range=(inner.ymin + 0.17 , inner.ymax - 0.17), via_enclosure=con_enc, via_layer=mcon_layer - , via_size=con_size, via_spacing=con_spacing)) - mcon_r = c.add_ref(via_generator(x_range=(inner.xmax, outer.xmax), y_range=(inner.ymin + 0.17 , inner.ymax - 0.17), via_enclosure=con_enc, via_layer=mcon_layer - , via_size=con_size, via_spacing=con_spacing)) - mcon_t = c.add_ref(via_generator(x_range=con_range, y_range=(inner.ymax, outer.ymax), via_enclosure=con_enc, via_layer=mcon_layer - , via_size=con_size, via_spacing=con_spacing)) - mcon_b = c.add_ref(via_generator(x_range=con_range, y_range=(outer.ymin, inner.ymin), via_enclosure=con_enc, via_layer=mcon_layer - , via_size=con_size, via_spacing=con_spacing)) - - + c.add_ref( + via_generator( + x_range=(outer.xmin, inner.xmin), + y_range=(inner.ymin + 0.17, inner.ymax - 0.17), + via_enclosure=con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + c.add_ref( + via_generator( + x_range=(inner.xmax, outer.xmax), + y_range=(inner.ymin + 0.17, inner.ymax - 0.17), + via_enclosure=con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + c.add_ref( + via_generator( + x_range=con_range, + y_range=(inner.ymax, outer.ymax), + via_enclosure=con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + c.add_ref( + via_generator( + x_range=con_range, + y_range=(outer.ymin, inner.ymin), + via_enclosure=con_enc, + via_layer=licon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + + if con_lev == "metal1": + c.add_ref( + gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=m1_layer) + ) + + c.add_ref( + via_generator( + x_range=(outer.xmin, inner.xmin), + y_range=(inner.ymin + 0.17, inner.ymax - 0.17), + via_enclosure=con_enc, + via_layer=mcon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + c.add_ref( + via_generator( + x_range=(inner.xmax, outer.xmax), + y_range=(inner.ymin + 0.17, inner.ymax - 0.17), + via_enclosure=con_enc, + via_layer=mcon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + c.add_ref( + via_generator( + x_range=con_range, + y_range=(inner.ymax, outer.ymax), + via_enclosure=con_enc, + via_layer=mcon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) + c.add_ref( + via_generator( + x_range=con_range, + y_range=(outer.ymin, inner.ymin), + via_enclosure=con_enc, + via_layer=mcon_layer, + via_size=con_size, + via_spacing=con_spacing, + ) + ) c.write_gds("ring_temp.gds") layout.read("ring_temp.gds") cell_name = "sky_ring_gen" - - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_rf.py b/sky130/cells/klayout/pymacros/cells/draw_rf.py index 5205dbb25..04cc7a820 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_rf.py +++ b/sky130/cells/klayout/pymacros/cells/draw_rf.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -18,66 +18,57 @@ ######################################################################################################################## -import pya import os -from .globals import * -import gdsfactory as gf - - -gds_p_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices/rf" ) # parent file path +from .globals import RF_BJT_DEV, RF_COILS_DEV, RF_MOSFET_DEV +gds_p_path = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "fixed_devices/rf" +) # parent file path def draw_rf_mosfet(layout, device_name): + """ + drawing rf mosfet devices + """ + gds_path = f"{gds_p_path}/rf_mosfet" # gds file path - ''' - drawing rf mosfet devices - ''' - gds_path = f"{gds_p_path}/rf_mosfet" # gds file path - - - if device_name in RF_MOSFET_DEV : + if device_name in RF_MOSFET_DEV: layout.read(f"{gds_path}/{device_name}.gds") cell_name = device_name - else : - cell_name = device_name - + else: + cell_name = device_name return layout.cell(cell_name) -def draw_rf_bjt(layout, device_name): - ''' - drawing rf mosfet devices - ''' - gds_path = f"{gds_p_path}/rf_bjt" # gds file path +def draw_rf_bjt(layout, device_name): + """ + drawing rf mosfet devices + """ + gds_path = f"{gds_p_path}/rf_bjt" # gds file path - - if device_name in RF_BJT_DEV : + if device_name in RF_BJT_DEV: layout.read(f"{gds_path}/{device_name}.gds") cell_name = device_name - else : - cell_name = device_name - + else: + cell_name = device_name return layout.cell(cell_name) def draw_rf_coils(layout, device_name): - ''' - drawing rf coils devices - ''' + """ + drawing rf coils devices + """ - gds_path = f"{gds_p_path}/rf_coils" # gds file path + gds_path = f"{gds_p_path}/rf_coils" # gds file path - - - if device_name in RF_COILS_DEV : + if device_name in RF_COILS_DEV: layout.read(f"{gds_path}/{device_name}.gds") cell_name = device_name - else : - cell_name = device_name + else: + cell_name = device_name return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_vpp.py b/sky130/cells/klayout/pymacros/cells/draw_vpp.py index 865958d8f..4b364d91a 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_vpp.py +++ b/sky130/cells/klayout/pymacros/cells/draw_vpp.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -19,23 +19,20 @@ import os -from .globals import * -import gdsfactory as gf +from .globals import VPP_CAP_DEV -gds_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices/VPP" ) +gds_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "fixed_devices/VPP") def draw_vpp(layout, device_name): - ''' - drawing VPP Capacitors devices - ''' - - if device_name in VPP_CAP_DEV : + """ + drawing VPP Capacitors devices + """ + + if device_name in VPP_CAP_DEV: layout.read(f"{gds_path}/{device_name}.gds") cell_name = device_name else: cell_name = device_name return layout.cell(cell_name) - - diff --git a/sky130/cells/klayout/pymacros/cells/fet.py b/sky130/cells/klayout/pymacros/cells/fet.py index 01ea21ac8..d4c217afb 100644 --- a/sky130/cells/klayout/pymacros/cells/fet.py +++ b/sky130/cells/klayout/pymacros/cells/fet.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -17,9 +17,9 @@ # MOSFET (PFET) Generator for skywater130 ######################################################################################################################## -from select import select import pya -from .draw_fet import * + +from .draw_fet import draw_nfet, draw_pfet fet_01v8_l = 0.15 fet_g5v0_l = 0.5 @@ -32,7 +32,7 @@ pfet_g5v0_grw = 0.3 pfet_01v8_lvt_l = 0.35 -nfet_g5v0_nvt_l = 0.9 +nfet_g5v0_nvt_l = 0.9 class pfet(pya.PCellDeclarationHelper): @@ -42,89 +42,107 @@ class pfet(pya.PCellDeclarationHelper): def __init__(self): # Initialize super class. - super(pfet, self).__init__() - - #===================== PARAMETERS DECLARATIONS ===================== - - self.param("con_bet_fin", self.TypeBoolean, "Contact Between Fingers", default=1) - - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice("sky130_fd_pr__pfet_01v8", "sky130_fd_pr__pfet_01v8") - self.Type_handle.add_choice("sky130_fd_pr__pfet_01v8_lvt", "sky130_fd_pr__pfet_01v8_lvt") - self.Type_handle.add_choice("sky130_fd_pr__pfet_01v8_hvt", "sky130_fd_pr__pfet_01v8_hvt") - self.Type_handle.add_choice("sky130_fd_pr__pfet_g5v0d10v5", "sky130_fd_pr__pfet_g5v0d10v5") - self.Type_handle = self.param("bulk", self.TypeList, "Bulk Type") + super().__init__() + + # ===================== PARAMETERS DECLARATIONS ===================== + + self.param( + "con_bet_fin", self.TypeBoolean, "Contact Between Fingers", default=1 + ) + + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice( + "sky130_fd_pr__pfet_01v8", "sky130_fd_pr__pfet_01v8" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__pfet_01v8_lvt", "sky130_fd_pr__pfet_01v8_lvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__pfet_01v8_hvt", "sky130_fd_pr__pfet_01v8_hvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__pfet_g5v0d10v5", "sky130_fd_pr__pfet_g5v0d10v5" + ) + self.Type_handle = self.param("bulk", self.TypeList, "Bulk Type") self.Type_handle.add_choice("None", "None") self.Type_handle.add_choice("bulk tie", "bulk tie") self.Type_handle.add_choice("Gaurd Ring", "Gaurd Ring") - self.Type_handle = self.param("gate_con_pos", self.TypeList, "Gate Contact Position") + self.Type_handle = self.param( + "gate_con_pos", self.TypeList, "Gate Contact Position" + ) self.Type_handle.add_choice("top", "top") self.Type_handle.add_choice("bottom", "bottom") self.Type_handle.add_choice("alternating", "alternating") - - self.param("l", self.TypeDouble, "length", default=fet_01v8_l, unit="um") self.param("w", self.TypeDouble, "Width", default=fet_w, unit="um") self.param("sd_con_col", self.TypeInt, "Diffusion Contacts Columns", default=1) - self.param("inter_sd_l", self.TypeDouble, "Between Fingers Diffusion Length", default=fet_inter_ld, unit="um") + self.param( + "inter_sd_l", + self.TypeDouble, + "Between Fingers Diffusion Length", + default=fet_inter_ld, + unit="um", + ) self.param("nf", self.TypeInt, "Number of Fingers", default=1) - self.param("grw", self.TypeDouble, "Guard Ring Width", default=fet_01v8_grw, unit="um") - self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + self.param( + "grw", self.TypeDouble, "Guard Ring Width", default=fet_01v8_grw, unit="um" + ) + self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") self.param("interdig", self.TypeBoolean, "Interdigitation", default=0) - self.param("patt", self.TypeString,"Pattern in case of Interdigitation", default= "") + self.param( + "patt", self.TypeString, "Pattern in case of Interdigitation", default="" + ) + + # self.param("n", self.TypeInt, "inst_num", default=1) - #self.param("n", self.TypeInt, "inst_num", default=1) - def display_text_impl(self): # Provide a descriptive text for the cell - return "pfet(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" - + return "pfet(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" + def coerce_parameters_impl(self): # We employ coerce_parameters_impl to decide whether the handle or the # numeric parameter has changed (by comparing against the effective # radius ru) and set ru to the effective radius. We also update the # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2*(self.w + self.l) + self.area = self.w * self.l + self.perim = 2 * (self.w + self.l) # w,l must be larger or equal than min. values. - if self.type == "sky130_fd_pr__pfet_g5v0d10v5": + if self.type == "sky130_fd_pr__pfet_g5v0d10v5": if (self.l) < fet_g5v0_l: - self.l = fet_g5v0_l + self.l = fet_g5v0_l if (self.w) < fet_w: self.w = fet_w - if (self.grw) < pfet_g5v0_grw : - self.grw = pfet_g5v0_grw - else : + if (self.grw) < pfet_g5v0_grw: + self.grw = pfet_g5v0_grw + else: if (self.l) < fet_01v8_l: - self.l = fet_01v8_l + self.l = fet_01v8_l if (self.w) < fet_w: self.w = fet_w - if (self.grw) < fet_01v8_grw : - self.grw = fet_01v8_grw - - if self.type == "sky130_fd_pr__pfet_01v8_lvt": - if (self.l) < pfet_01v8_lvt_l : - self.l = pfet_01v8_lvt_l - else : - if (self.l) < fet_01v8_l : - self.l = fet_01v8_l - - if (self.sd_con_col) < 1 : - self.sd_con_col = 1 - - if (self.inter_sd_l) < fet_inter_ld and self.con_bet_fin == 1: + if (self.grw) < fet_01v8_grw: + self.grw = fet_01v8_grw + + if self.type == "sky130_fd_pr__pfet_01v8_lvt": + if (self.l) < pfet_01v8_lvt_l: + self.l = pfet_01v8_lvt_l + else: + if (self.l) < fet_01v8_l: + self.l = fet_01v8_l + + if (self.sd_con_col) < 1: + self.sd_con_col = 1 + + if (self.inter_sd_l) < fet_inter_ld and self.con_bet_fin == 1: self.inter_sd_l = fet_inter_ld - elif (self.inter_sd_l) < 0.21 and self.con_bet_fin == 0: + elif (self.inter_sd_l) < 0.21 and self.con_bet_fin == 0: self.inter_sd_l = 0.21 if self.interdig == 1 and self.gate_con_pos != "alternating": - self.inter_sd_l = 0.5 - - - + self.inter_sd_l = 0.5 + def can_create_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we can use any shape which # has a finite bounding box @@ -135,21 +153,40 @@ def parameters_from_shape_impl(self): # bounding box width and layer self.r = self.shape.bbox().width() * self.layout.dbu / 2 self.l = self.layout.get_info(self.layer) - + def transformation_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we use the center of the shape's # bounding box to determine the transformation return pya.Trans(self.shape.bbox().center()) - + def produce_impl(self): - instance = draw_pfet(layout= self.layout , l=self.l, w=self.w, sd_con_col=self.sd_con_col, inter_sd_l=self.inter_sd_l, nf=self.nf, grw=self.grw - , type = self.type, bulk=self.bulk, con_bet_fin=self.con_bet_fin,gate_con_pos= self.gate_con_pos, interdig=self.interdig, patt=self.patt) - write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + instance = draw_pfet( + layout=self.layout, + l_gate=self.l, + w=self.w, + sd_con_col=self.sd_con_col, + inter_sd_l=self.inter_sd_l, + nf=self.nf, + grw=self.grw, + type=self.type, + bulk=self.bulk, + con_bet_fin=self.con_bet_fin, + gate_con_pos=self.gate_con_pos, + interdig=self.interdig, + patt=self.patt, + ) + write_cells = pya.CellInstArray( + instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.insert(write_cells) self.cell.flatten(1) - - + + class nfet(pya.PCellDeclarationHelper): """ NMOS Generator for Skywater130 @@ -157,86 +194,117 @@ class nfet(pya.PCellDeclarationHelper): def __init__(self): # Initialize super class. - super(nfet, self).__init__() - - #===================== PARAMETERS DECLARATIONS ===================== - - self.param("con_bet_fin", self.TypeBoolean, "Contact Between Fingers", default=1) - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice("sky130_fd_pr__nfet_01v8", "sky130_fd_pr__nfet_01v8") - self.Type_handle.add_choice("sky130_fd_pr__nfet_01v8_lvt", "sky130_fd_pr__nfet_01v8_lvt") - self.Type_handle.add_choice("sky130_fd_pr__nfet_03v3_nvt","sky130_fd_pr__nfet_03v3_nvt") - self.Type_handle.add_choice("sky130_fd_pr__nfet_05v0_nvt","sky130_fd_pr__nfet_05v0_nvt") - self.Type_handle.add_choice("sky130_fd_pr__nfet_g5v0d10v5","sky130_fd_pr__nfet_g5v0d10v5") - self.Type_handle = self.param("bulk", self.TypeList, "Bulk Type") + super().__init__() + + # ===================== PARAMETERS DECLARATIONS ===================== + + self.param( + "con_bet_fin", self.TypeBoolean, "Contact Between Fingers", default=1 + ) + self.Type_handle = self.param("type", self.TypeList, "Device Type") + self.Type_handle.add_choice( + "sky130_fd_pr__nfet_01v8", "sky130_fd_pr__nfet_01v8" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__nfet_01v8_lvt", "sky130_fd_pr__nfet_01v8_lvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__nfet_03v3_nvt", "sky130_fd_pr__nfet_03v3_nvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__nfet_05v0_nvt", "sky130_fd_pr__nfet_05v0_nvt" + ) + self.Type_handle.add_choice( + "sky130_fd_pr__nfet_g5v0d10v5", "sky130_fd_pr__nfet_g5v0d10v5" + ) + self.Type_handle = self.param("bulk", self.TypeList, "Bulk Type") self.Type_handle.add_choice("None", "None") self.Type_handle.add_choice("bulk tie", "bulk tie") self.Type_handle.add_choice("Gaurd Ring", "Gaurd Ring") - self.Type_handle = self.param("gate_con_pos", self.TypeList, "Gate Contact Position") + self.Type_handle = self.param( + "gate_con_pos", self.TypeList, "Gate Contact Position" + ) self.Type_handle.add_choice("top", "top") self.Type_handle.add_choice("bottom", "bottom") self.Type_handle.add_choice("alternating", "alternating") - self.param("l", self.TypeDouble, "length", default=fet_01v8_l, unit="um") self.param("w", self.TypeDouble, "Width", default=fet_w, unit="um") - self.param("sd_con_col", self.TypeDouble, "Diffusion Contacts Columns", default=fet_ld, unit="um") - self.param("inter_sd_l", self.TypeDouble, "Between Fingers Diffusion Length", default=fet_inter_ld, unit="um") + self.param( + "sd_con_col", + self.TypeDouble, + "Diffusion Contacts Columns", + default=fet_ld, + unit="um", + ) + self.param( + "inter_sd_l", + self.TypeDouble, + "Between Fingers Diffusion Length", + default=fet_inter_ld, + unit="um", + ) self.param("nf", self.TypeInt, "Number of Fingers", default=1) - self.param("grw", self.TypeDouble, "Guard Ring Width", default=fet_01v8_grw, unit="um") - self.param("area", self.TypeDouble,"Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble,"Perimeter", readonly=True, unit="um") + self.param( + "grw", self.TypeDouble, "Guard Ring Width", default=fet_01v8_grw, unit="um" + ) + self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") + self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") self.param("interdig", self.TypeBoolean, "Interdigitation", default=0) - self.param("patt", self.TypeString,"Pattern in case of Interdigitation", default= "") + self.param( + "patt", self.TypeString, "Pattern in case of Interdigitation", default="" + ) + + # self.param("n", self.TypeInt, "inst_num", default=1) - #self.param("n", self.TypeInt, "inst_num", default=1) - def display_text_impl(self): # Provide a descriptive text for the cell - return "nfet(L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" + return "nfet(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" def coerce_parameters_impl(self): # We employ coerce_parameters_impl to decide whether the handle or the # numeric parameter has changed (by comparing against the effective # radius ru) and set ru to the effective radius. We also update the # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2*(self.w + self.l) + self.area = self.w * self.l + self.perim = 2 * (self.w + self.l) # w,l must be larger or equal than min. values. - if self.type == "sky130_fd_pr__nfet_03v3_nvt" or self.type == "sky130_fd_pr__nfet_05v0_nvt" or self.type == "sky130_fd_pr__nfet_g5v0d10v5": + if ( + self.type == "sky130_fd_pr__nfet_03v3_nvt" + or self.type == "sky130_fd_pr__nfet_05v0_nvt" + or self.type == "sky130_fd_pr__nfet_g5v0d10v5" + ): if (self.l) < fet_g5v0_l: - self.l = fet_g5v0_l + self.l = fet_g5v0_l if (self.w) < fet_w: self.w = fet_w - if (self.grw) < pfet_g5v0_grw : - self.grw = pfet_g5v0_grw + if (self.grw) < pfet_g5v0_grw: + self.grw = pfet_g5v0_grw if self.type == "sky130_fd_pr__nfet_05v0_nvt": if (self.l) < nfet_g5v0_nvt_l: - self.l = nfet_g5v0_nvt_l + self.l = nfet_g5v0_nvt_l - else : + else: if (self.l) < fet_01v8_l: - self.l = fet_01v8_l + self.l = fet_01v8_l if (self.w) < fet_w: self.w = fet_w - if (self.grw) < fet_01v8_grw : - self.grw = fet_01v8_grw - - - if (self.sd_con_col) < 1 : - self.sd_con_col = 1 - - if (self.inter_sd_l) < fet_inter_ld and self.con_bet_fin == 1: + if (self.grw) < fet_01v8_grw: + self.grw = fet_01v8_grw + + if (self.sd_con_col) < 1: + self.sd_con_col = 1 + + if (self.inter_sd_l) < fet_inter_ld and self.con_bet_fin == 1: self.inter_sd_l = fet_inter_ld - elif self.inter_sd_l < 0.21 and self.con_bet_fin == 0 : + elif self.inter_sd_l < 0.21 and self.con_bet_fin == 0: self.inter_sd_l = 0.21 - + if self.interdig == 1 and self.gate_con_pos != "alternating": - self.inter_sd_l = 0.5 - - + self.inter_sd_l = 0.5 + def can_create_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we can use any shape which # has a finite bounding box @@ -254,10 +322,28 @@ def transformation_from_shape_impl(self): return pya.Trans(self.shape.bbox().center()) def produce_impl(self): - instance = draw_nfet(layout= self.layout , l=self.l, w=self.w, sd_con_col=self.sd_con_col, inter_sd_l=self.inter_sd_l, nf=self.nf, grw=self.grw - , type= self.type , bulk=self.bulk, con_bet_fin=self.con_bet_fin,gate_con_pos= self.gate_con_pos, interdig=self.interdig, patt=self.patt) - write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + instance = draw_nfet( + layout=self.layout, + l_gate=self.l, + w=self.w, + sd_con_col=self.sd_con_col, + inter_sd_l=self.inter_sd_l, + nf=self.nf, + grw=self.grw, + type=self.type, + bulk=self.bulk, + con_bet_fin=self.con_bet_fin, + gate_con_pos=self.gate_con_pos, + interdig=self.interdig, + patt=self.patt, + ) + write_cells = pya.CellInstArray( + instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.insert(write_cells) self.cell.flatten(1) - diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl index 114de0abe..11eeba181 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB cap_1 cap_2 sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl index ee30b4a89..518ce4d4e 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl index 83b45be80..dd2386ea1 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl index 000dfb10a..c0967eccd 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl index 080a4658c..54f76bfff 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl index 18b2e8314..9d2c3bd40 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl index 3965f884f..99f60b116 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl index adb43a060..111459af2 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl index 042ef2e47..fca65f021 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell +.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell Cx sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl index 96adada27..27c980304 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl index 19ca911c6..7f414f417 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl index 63c868cd8..2fc44f5b1 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl index dc02ad934..fa4e6b86f 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl index f1f28b284..136d1fc4e 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl index 383a2350c..ed0cacadf 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl index cfeb92366..a938dd141 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl index 76eab20c1..0b6348eb8 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl index a3a85155e..01b50a16a 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl index 999a954f6..4646039fa 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl index 30a40ebcc..2668d2879 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl index 9f6ba2f57..5fa88d550 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl index af6616c7f..d1b88291b 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl index 2b0f03fe7..52d9efdd9 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell +.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell Cx sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl index d5dd8e5d1..c25671d11 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl index 6547dcc6c..be024e591 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl index c9ba3646c..d371ed437 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl index cb9af6ffa..ee42d6c67 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl index 01e77925a..ef3855f80 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl index 39317c244..4396a41e3 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl index e0ef11ed0..efc1a7b40 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl index bf41c3d59..e5fbb6aeb 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET5 sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl index d69c34001..e8351cf70 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 M5 SUB sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl index ebda933f5..800d32907 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl index b6a595819..e2fe693ab 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl index b42fc7395..5a8acc878 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl index 6135313f4..d4d0ba68e 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl index c7d887cac..44119b570 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl index f287d5d9d..1920407f4 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl index 378846e00..da38c67bd 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl index a251f532b..814c371da 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl index 1e7a65af3..48627283b 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl index 1c6f0bd7f..f0c0cb0ed 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl index 7859be710..0c50a9ec9 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl index 63f772b1c..6b3e7a551 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl index c79ffe642..88080e11d 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl index c8c6bee4e..b1e5188c8 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl index 590bfe64a..14d8a0a64 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl index cfae9c0d2..898cfd780 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl index eeda60108..3941b7713 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl index 2d4fe8b53..54be7e2f5 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl index 31df834e1..999d41fa8 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl index 05a96bf86..8e1964500 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl index 448c673f1..da62a0dea 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl index 622d8d03b..7ab4718a2 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl index 6a367a93e..7cbe7504a 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl index 89d8a74a1..0149bf1f8 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl index 8d8752ddb..33184d9a0 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl index 213183970..a0fd54a09 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield Cx sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl index d3c559df1..1b24bd6ee 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield +.SUBCKT sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield Cx sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl index db21025de..b7ddf7ad7 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield +.SUBCKT sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield Cx sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl index 03f4a547e..b2989951b 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield +.SUBCKT sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield Cx sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl index 55ff8bd45..eef7614b6 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield +.SUBCKT sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield Cx sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl index d99baedbe..5a966c42e 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield +.SUBCKT sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield Cx sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl index f3801ae20..9c615a309 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield +.SUBCKT sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield Cx sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl index b70df97c5..80ec3c196 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,4 +19,4 @@ Cx C0 C1 SUB sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl index c06fd1233..269a677dd 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield +.SUBCKT sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield Cx sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl index 5bbce2cfe..b4da70ef8 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin +.SUBCKT sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin Cx sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl index 646715bfa..1913ea38a 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield +.SUBCKT sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield Cx sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl index f7a852ad4..242509984 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin +.SUBCKT sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin Cx sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl index b49f28adb..1005a491c 100644 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl @@ -1,4 +1,4 @@ - + # Copyright 2022 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,8 @@ # # SPDX-License-Identifier: Apache-2.0 -.SUBCKT sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test +.SUBCKT sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test Cx sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test -.ENDS +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/globals.py b/sky130/cells/klayout/pymacros/cells/globals.py index c5a0765b2..7c8c5ed40 100644 --- a/sky130/cells/klayout/pymacros/cells/globals.py +++ b/sky130/cells/klayout/pymacros/cells/globals.py @@ -1,67 +1,70 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . ######################################################################################################################## -# Global parameters generation +# Global parameters generation ######################################################################################################################## -import glob +import glob import os -# Listing device names -fixed_dev_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),"fixed_devices" ) # parent file path +# Listing device names + +fixed_dev_path = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "fixed_devices" +) # parent file path -BJT_NPN_DEV = glob.glob (f"{fixed_dev_path}/bjt/npn/*") +BJT_NPN_DEV = glob.glob(f"{fixed_dev_path}/bjt/npn/*") for i in range(len(BJT_NPN_DEV)): - BJT_NPN_DEV[i] = BJT_NPN_DEV[i].split("/")[-1] + BJT_NPN_DEV[i] = BJT_NPN_DEV[i].split("/")[-1] BJT_NPN_DEV[i] = BJT_NPN_DEV[i][:-4] -BJT_PNP_DEV = glob.glob (f"{fixed_dev_path}/bjt/pnp/*") +BJT_PNP_DEV = glob.glob(f"{fixed_dev_path}/bjt/pnp/*") for i in range(len(BJT_PNP_DEV)): - BJT_PNP_DEV[i] = BJT_PNP_DEV[i].split("/")[-1] + BJT_PNP_DEV[i] = BJT_PNP_DEV[i].split("/")[-1] BJT_PNP_DEV[i] = BJT_PNP_DEV[i][:-4] -VPP_CAP_DEV= glob.glob (f"{fixed_dev_path}/VPP/*") +VPP_CAP_DEV = glob.glob(f"{fixed_dev_path}/VPP/*") for i in range(len(VPP_CAP_DEV)): - VPP_CAP_DEV[i] = VPP_CAP_DEV[i].split("/")[-1] + VPP_CAP_DEV[i] = VPP_CAP_DEV[i].split("/")[-1] VPP_CAP_DEV[i] = VPP_CAP_DEV[i][:-4] -PHOTO_D_DEV = glob.glob (f"{fixed_dev_path}/photodiode/*") +PHOTO_D_DEV = glob.glob(f"{fixed_dev_path}/photodiode/*") for i in range(len(PHOTO_D_DEV)): - PHOTO_D_DEV[i] = PHOTO_D_DEV[i].split("/")[-1] + PHOTO_D_DEV[i] = PHOTO_D_DEV[i].split("/")[-1] PHOTO_D_DEV[i] = PHOTO_D_DEV[i][:-4] -RF_MOSFET_DEV = glob.glob (f"{fixed_dev_path}/rf/rf_mosfet/*") +RF_MOSFET_DEV = glob.glob(f"{fixed_dev_path}/rf/rf_mosfet/*") for i in range(len(RF_MOSFET_DEV)): - RF_MOSFET_DEV[i] = RF_MOSFET_DEV[i].split("/")[-1] + RF_MOSFET_DEV[i] = RF_MOSFET_DEV[i].split("/")[-1] RF_MOSFET_DEV[i] = RF_MOSFET_DEV[i][:-4] -RF_BJT_DEV = glob.glob (f"{fixed_dev_path}/rf/rf_bjt/*") +RF_BJT_DEV = glob.glob(f"{fixed_dev_path}/rf/rf_bjt/*") for i in range(len(RF_BJT_DEV)): - RF_BJT_DEV[i] = RF_BJT_DEV[i].split("/")[-1] + RF_BJT_DEV[i] = RF_BJT_DEV[i].split("/")[-1] RF_BJT_DEV[i] = RF_BJT_DEV[i][:-4] -RF_COILS_DEV = glob.glob (f"{fixed_dev_path}/rf/rf_coils/*") +RF_COILS_DEV = glob.glob(f"{fixed_dev_path}/rf/rf_coils/*") for i in range(len(RF_COILS_DEV)): - RF_COILS_DEV[i] = RF_COILS_DEV[i].split("/")[-1] + RF_COILS_DEV[i] = RF_COILS_DEV[i].split("/")[-1] RF_COILS_DEV[i] = RF_COILS_DEV[i][:-4] -#print (VPP_CAP_DEV) +# print (VPP_CAP_DEV) diff --git a/sky130/cells/klayout/pymacros/cells/gr.py b/sky130/cells/klayout/pymacros/cells/gr.py index 9f3425190..6aee3af27 100644 --- a/sky130/cells/klayout/pymacros/cells/gr.py +++ b/sky130/cells/klayout/pymacros/cells/gr.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -18,13 +18,15 @@ ######################################################################################################################## import pya -from .draw_guard_ring import * + +from .draw_guard_ring import draw_gr min_s = 0.27 min_w = 0.17 min_w_m1 = 0.23 min_s_m1 = 0.38 + class guard_ring_gen(pya.PCellDeclarationHelper): """ Guard Ring Generator for Skywater130 @@ -32,16 +34,15 @@ class guard_ring_gen(pya.PCellDeclarationHelper): def __init__(self): # Initialize super class. - super(guard_ring_gen, self).__init__() + super().__init__() - #===================== PARAMETERS DECLARATIONS ===================== + # ===================== PARAMETERS DECLARATIONS ===================== self.param("in_w", self.TypeDouble, "Inner Width", default=min_s, unit="um") self.param("in_l", self.TypeDouble, "Inner Length", default=min_s, unit="um") self.param("grw", self.TypeDouble, "Guard Ring Width", default=min_w, unit="um") - - self.Type_handle = self.param("con_lev", self.TypeList, "Connection Level") + self.Type_handle = self.param("con_lev", self.TypeList, "Connection Level") self.Type_handle.add_choice("None", "None") self.Type_handle.add_choice("li", "li") self.Type_handle.add_choice("metal1", "metal1") @@ -49,34 +50,33 @@ def __init__(self): def display_text_impl(self): # Provide a descriptive text for the cell return f"Guard Ring(Ring Width = {self.grw})" - + def coerce_parameters_impl(self): # We employ coerce_parameters_impl to decide whether the handle or the # numeric parameter has changed (by comparing against the effective # radius ru) and set ru to the effective radius. We also update the - # numerical value or the shape, depending on which on has not changed. + # numerical value or the shape, depending on which on has not changed. # w,l must be larger or equal than min. values. - if self.con_lev == "metal1": - if self.grw < min_w_m1 : + if self.grw < min_w_m1: self.grw = min_w_m1 - if self.in_l < min_s_m1 : + if self.in_l < min_s_m1: self.in_l = min_s_m1 - - if self.in_w < min_s_m1 : - self.in_w = min_s_m1 - else : - if self.grw < min_w : + + if self.in_w < min_s_m1: + self.in_w = min_s_m1 + else: + if self.grw < min_w: self.grw = min_w - if self.in_l < min_s : + if self.in_l < min_s: self.in_l = min_s - - if self.in_w < min_s : - self.in_w = min_s - + + if self.in_w < min_s: + self.in_w = min_s + def can_create_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we can use any shape which # has a finite bounding box @@ -87,16 +87,27 @@ def parameters_from_shape_impl(self): # bounding box width and layer self.r = self.shape.bbox().width() * self.layout.dbu / 2 self.l = self.layout.get_info(self.layer) - + def transformation_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we use the center of the shape's # bounding box to determine the transformation return pya.Trans(self.shape.bbox().center()) - + def produce_impl(self): - instance = draw_gr(layout=self.layout, in_l=self.in_l, in_w=self.in_w , grw= self.grw , con_lev=self.con_lev) - write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + instance = draw_gr( + layout=self.layout, + in_l=self.in_l, + in_w=self.in_w, + grw=self.grw, + con_lev=self.con_lev, + ) + write_cells = pya.CellInstArray( + instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.insert(write_cells) self.cell.flatten(1) - \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/layers_def.py b/sky130/cells/klayout/pymacros/cells/layers_def.py index d9d751a6c..c5fb15bfc 100644 --- a/sky130/cells/klayout/pymacros/cells/layers_def.py +++ b/sky130/cells/klayout/pymacros/cells/layers_def.py @@ -1,101 +1,100 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . ######################################################################################################################## -# Skywater 130nm Layers parameters generation +# Skywater 130nm Layers parameters generation ######################################################################################################################## -from importlib.util import LazyLoader from gdsfactory.types import LayerSpec -diff_layer : LayerSpec = (65,20) -diff_lbl : LayerSpec = (65,6) +diff_layer: LayerSpec = (65, 20) +diff_lbl: LayerSpec = (65, 6) -tap_layer : LayerSpec = (65,44) -tap_lbl : LayerSpec = (65,5) +tap_layer: LayerSpec = (65, 44) +tap_lbl: LayerSpec = (65, 5) -nwell_layer : LayerSpec = (64,20) +nwell_layer: LayerSpec = (64, 20) -dnwell_layer : LayerSpec = (64,18) +dnwell_layer: LayerSpec = (64, 18) -hvtp_layer : LayerSpec = (78,44) # high_vt PMOS +hvtp_layer: LayerSpec = (78, 44) # high_vt PMOS -hvi_layer : LayerSpec = (75,20) # high voltage layer for voltages higher than 1.8v +hvi_layer: LayerSpec = (75, 20) # high voltage layer for voltages higher than 1.8v -lvtn_layer : LayerSpec = (125,44) # low_vt NMOS +lvtn_layer: LayerSpec = (125, 44) # low_vt NMOS -poly_layer : LayerSpec = (66,20) +poly_layer: LayerSpec = (66, 20) -hvntm_layer : LayerSpec = (125,20) # high voltage n-implant +hvntm_layer: LayerSpec = (125, 20) # high voltage n-implant -nsdm_layer : LayerSpec = (93,44) +nsdm_layer: LayerSpec = (93, 44) -psdm_layer : LayerSpec = (94,20) +psdm_layer: LayerSpec = (94, 20) -npc_layer : LayerSpec = (95,20) +npc_layer: LayerSpec = (95, 20) -licon_layer : LayerSpec = (66,44) +licon_layer: LayerSpec = (66, 44) -li_layer : LayerSpec = (67,20) -li_lbl : LayerSpec = (67,5) +li_layer: LayerSpec = (67, 20) +li_lbl: LayerSpec = (67, 5) -mcon_layer : LayerSpec = (67,44) +mcon_layer: LayerSpec = (67, 44) -m1_layer : LayerSpec = (68,20) -m1_lbl : LayerSpec = (68,5) +m1_layer: LayerSpec = (68, 20) +m1_lbl: LayerSpec = (68, 5) -via1_layer : LayerSpec = (68,44) +via1_layer: LayerSpec = (68, 44) -m2_layer : LayerSpec = (69,20) -m2_lbl : LayerSpec = (69,5) +m2_layer: LayerSpec = (69, 20) +m2_lbl: LayerSpec = (69, 5) -via2_layer : LayerSpec = (69,44) +via2_layer: LayerSpec = (69, 44) -m3_layer : LayerSpec = (70,20) -m3_lbl : LayerSpec = (70,5) +m3_layer: LayerSpec = (70, 20) +m3_lbl: LayerSpec = (70, 5) -via3_layer : LayerSpec = (70,44) +via3_layer: LayerSpec = (70, 44) -m4_layer : LayerSpec = (71,20) -m4_lbl : LayerSpec = (71,5) +m4_layer: LayerSpec = (71, 20) +m4_lbl: LayerSpec = (71, 5) -via4_layer : LayerSpec = (71,44) +via4_layer: LayerSpec = (71, 44) -m5_layer : LayerSpec = (72,20) -m5_lbl : LayerSpec = (72,5) +m5_layer: LayerSpec = (72, 20) +m5_lbl: LayerSpec = (72, 5) -pr_bound_layer : LayerSpec = (235,4) +pr_bound_layer: LayerSpec = (235, 4) -areaid_lvn_layer : LayerSpec = (81,60) +areaid_lvn_layer: LayerSpec = (81, 60) -areaid_dio_layer : LayerSpec = (81,23) +areaid_dio_layer: LayerSpec = (81, 23) -capm_layer : LayerSpec = (89,44) +capm_layer: LayerSpec = (89, 44) -cap2m_layer : LayerSpec = (97,44) +cap2m_layer: LayerSpec = (97, 44) ######res -diff_res : LayerSpec = (65,13) -poly_res : LayerSpec = (66,13) -rpm_drawing : LayerSpec = (86,20) -rpm_high_drawing : LayerSpec = (79,20) -pwell_res : LayerSpec = (64,13) -li1_res : LayerSpec = (67,13) -met1_res : LayerSpec = (68,13) -met2_res : LayerSpec = (69,13) -met3_res : LayerSpec = (70,13) -met4_res : LayerSpec = (71,13) -met5_res : LayerSpec = (72,13) +diff_res: LayerSpec = (65, 13) +poly_res: LayerSpec = (66, 13) +rpm_drawing: LayerSpec = (86, 20) +rpm_high_drawing: LayerSpec = (79, 20) +pwell_res: LayerSpec = (64, 13) +li1_res: LayerSpec = (67, 13) +met1_res: LayerSpec = (68, 13) +met2_res: LayerSpec = (69, 13) +met3_res: LayerSpec = (70, 13) +met4_res: LayerSpec = (71, 13) +met5_res: LayerSpec = (72, 13) diff --git a/sky130/cells/klayout/pymacros/cells/parent_res.py b/sky130/cells/klayout/pymacros/cells/parent_res.py index be3e74bd2..a1d4ba83b 100644 --- a/sky130/cells/klayout/pymacros/cells/parent_res.py +++ b/sky130/cells/klayout/pymacros/cells/parent_res.py @@ -15,17 +15,19 @@ # res Generator for skywater130 -import gdsfactory as gf import math - from abc import ABC, abstractmethod +import gdsfactory as gf + # ##############CONSTANT############3 -CONTACT_SPACE=0.19 -CONTACT_S=0.18 -CONTACT_N=10 +CONTACT_SPACE = 0.19 +CONTACT_S = 0.18 +CONTACT_N = 10 + + ############################3 class draw_res(ABC): """parent abstracted class for the backend of the res @@ -57,10 +59,10 @@ def draw_rect_layer(self, layer_names, l_space, w_space): [0.5*width of the layers - 0.5*width of the marked layer] """ - for layer_, l, w in zip(layer_names, l_space, w_space): + for layer_, l_rect, w in zip(layer_names, l_space, w_space): self.c.add_ref( gf.components.rectangle( - size=(self.w_res + 2 * w, self.l_res + 2 * l), + size=(self.w_res + 2 * w, self.l_res + 2 * l_rect), layer=layer_, centered=True, ) @@ -79,36 +81,28 @@ def draw_frame_layer(self, lay_nm, l_sp, w_sp, thi): list of the thickness of the frame """ - for layer_, l, w, thick in zip(lay_nm, l_sp, w_sp, thi): + for layer_, l_frame, w, thick in zip(lay_nm, l_sp, w_sp, thi): l_h = thick w_h = self.w_res + 2 * w - l_v = self.l_res + 2 * l - 2 * thick + l_v = self.l_res + 2 * l_frame - 2 * thick w_v = thick res1 = self.c.add_ref( - gf.components.rectangle( - size=(w_h, l_h), layer=layer_, centered=True - ) + gf.components.rectangle(size=(w_h, l_h), layer=layer_, centered=True) ) res2 = self.c.add_ref( - gf.components.rectangle( - size=(w_h, l_h), layer=layer_, centered=True - ) + gf.components.rectangle(size=(w_h, l_h), layer=layer_, centered=True) ) res1.movey(0.5 * l_v + 0.5 * l_h) res2.movey(-1 * (0.5 * l_v + 0.5 * l_h)) res1 = self.c.add_ref( - gf.components.rectangle( - size=(w_v, l_v), layer=layer_, centered=True - ) + gf.components.rectangle(size=(w_v, l_v), layer=layer_, centered=True) ) res2 = self.c.add_ref( - gf.components.rectangle( - size=(w_v, l_v), layer=layer_, centered=True - ) + gf.components.rectangle(size=(w_v, l_v), layer=layer_, centered=True) ) res1.movex(0.5 * w_h - 0.5 * w_v) @@ -133,10 +127,9 @@ def draw_contact_layer_h( list of the spaces btw the contacts """ - for layer_, l, size_l, size_w, space_fit, space_btw in zip( + for layer_, l_h, size_l, size_w, space_fit, space_btw in zip( layer_names, l_space, sizes_l, sizes_w, s_fit_in, s_btw ): - counts = math.floor((space_fit) / (size_w + space_btw)) if counts < 1: counts = 1 @@ -156,8 +149,8 @@ def draw_contact_layer_h( spacing=(size_w + space_btw, size_w + space_btw), ) - res_ar1.movey(size_l * 0.5 + l + self.l_res * 0.5) - res_ar2.movey(-1 * (size_l * 0.5 + l + self.l_res * 0.5)) + res_ar1.movey(size_l * 0.5 + l_h + self.l_res * 0.5) + res_ar2.movey(-1 * (size_l * 0.5 + l_h + self.l_res * 0.5)) res_ar1.movex(-(counts - 1) * (size_w + space_btw) * 0.5) res_ar2.movex(-(counts - 1) * (size_w + space_btw) * 0.5) @@ -188,7 +181,7 @@ def draw_contact_layer_v( """ if spaces_btw is None: spaces_btw = sizes_w - for layer_, l, size_l, size_w, space_fit, space_btw in zip( + for layer_, l_v, size_l, size_w, space_fit, space_btw in zip( layer_names, l_space, sizes_l, @@ -196,7 +189,6 @@ def draw_contact_layer_v( space_fit_in, spaces_btw, ): - counts = math.floor((space_fit) / (size_w + space_btw)) res = gf.components.rectangle( size=(size_w, size_l), layer=layer_, centered=True @@ -217,8 +209,8 @@ def draw_contact_layer_v( res_ar1.movey(-(counts - 1) * size_l) res_ar2.movey(-(counts - 1) * size_l) - res_ar1.movex(0.5 * self.w_res + l + 0.5 * size_w) - res_ar2.movex(-(0.5 * self.w_res + l + 0.5 * size_w)) + res_ar1.movex(0.5 * self.w_res + l_v + 0.5 * size_w) + res_ar2.movex(-(0.5 * self.w_res + l_v + 0.5 * size_w)) def draw_2dArr_layer(self, layer_names, mcon_d, l_up=0, l_down=0, n=0): """draw the 2d contact layers of the res @@ -233,7 +225,7 @@ def draw_2dArr_layer(self, layer_names, mcon_d, l_up=0, l_down=0, n=0): size=(mcon_d, mcon_d), layer=layer_names, centered=True ) - counts_arr = math.floor(self.w_res / (2*CONTACT_S)) + counts_arr = math.floor(self.w_res / (2 * CONTACT_S)) if counts_arr <= 0: counts_arr = 1 if counts_arr % 2 == 0 and counts_arr > CONTACT_N: diff --git a/sky130/cells/klayout/pymacros/cells/res_diff_child.py b/sky130/cells/klayout/pymacros/cells/res_diff_child.py index 6977e64d6..757f2dd9b 100644 --- a/sky130/cells/klayout/pymacros/cells/res_diff_child.py +++ b/sky130/cells/klayout/pymacros/cells/res_diff_child.py @@ -19,16 +19,16 @@ from .layers_def import ( diff_layer, diff_res, - nsdm_layer, - tap_layer, - psdm_layer, + hvi_layer, + hvntm_layer, li_layer, licon_layer, m1_layer, mcon_layer, - hvi_layer, - hvntm_layer, + nsdm_layer, nwell_layer, + psdm_layer, + tap_layer, ) from .parent_res import draw_res @@ -93,7 +93,7 @@ def your_res( self, layout, type="sky130_fd_pr__res_nd_lvt", - l: float = 2.1, + l_res: float = 2.1, w: float = 0.42, gr: int = 1, ): @@ -102,14 +102,13 @@ def your_res( Args: layout(layout): drawing layout type(float): type of the resistor - l(float): length of the resistor + l_res(float): length of the resistor w(float): width of the resistor gr(int): guard ring of the resistor """ - self.set_l_w(l, w) + self.set_l_w(l_res, w) if type == "sky130_fd_pr__res_nd_lvt": - # rects layer_names = [diff_res, diff_layer, nsdm_layer] l1 = [DIFF_RES, DIFF_LAYER_ND[0], NSDM_LAYER_ND[0]] @@ -229,7 +228,7 @@ def your_res( l1 = [LICON3_ND_LVT[0]] sizes_l = [LICON3_ND_LVT[1]] sizes_w = [LICON3_ND_LVT[2]] - space_fit_in = [l + LICON3_ND_LVT[3]] + space_fit_in = [l_res + LICON3_ND_LVT[3]] spaces = [LICON3_ND_LVT[4]] self.draw_contact_layer_v( layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces @@ -404,7 +403,7 @@ def your_res( l1 = [LICON3_ND_HVT] sizes_l = [LICON3_ND_LVT[1]] sizes_w = [LICON3_ND_LVT[2]] - space_fit_in = [l + LICON3_ND_LVT[3]] + space_fit_in = [l_res + LICON3_ND_LVT[3]] spaces = [LICON3_ND_LVT[4]] if gr: @@ -418,7 +417,6 @@ def your_res( cell_name = type return layout.cell(cell_name) elif type == "sky130_fd_pr__res_pd_lvt": - # rects layer_names = [ diff_res, @@ -448,7 +446,6 @@ def your_res( thick = [TAP_ND_LVT[2], PSDM_ND_LVT[2], LI_ND_LVT[2]] if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) # countacts @@ -503,7 +500,6 @@ def your_res( ] if gr == 0: - layer_names = [ licon_layer, mcon_layer, @@ -555,10 +551,9 @@ def your_res( l1 = [LICON3_ND_LVT[0]] sizes_l = [LICON3_ND_LVT[1]] sizes_w = [LICON3_ND_LVT[2]] - space_fit_in = [l + LICON3_ND_LVT[3]] + space_fit_in = [l_res + LICON3_ND_LVT[3]] spaces = [LICON3_ND_LVT[4]] if gr: - self.draw_contact_layer_v( layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces ) @@ -569,7 +564,6 @@ def your_res( cell_name = type return layout.cell(cell_name) elif type == "sky130_fd_pr__res_pd_hvt": - # rects layer_names = [ diff_res, @@ -611,7 +605,6 @@ def your_res( thick = [TAP_PD_HVT[2], PSDM_PD_HVT[2], LI_PD_HVT[2]] if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) # countacts @@ -716,10 +709,9 @@ def your_res( l1 = [LICON3_ND_HVT] sizes_l = [LICON3_ND_LVT[1]] sizes_w = [LICON3_ND_LVT[2]] - space_fit_in = [l + LICON3_ND_LVT[3]] + space_fit_in = [l_res + LICON3_ND_LVT[3]] spaces = [LICON3_ND_LVT[4]] if gr: - self.draw_contact_layer_v( layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces ) diff --git a/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py index a08a3501e..f60422013 100644 --- a/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py +++ b/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py @@ -12,8 +12,8 @@ # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from .res_klayout_panel import res from .res_diff_child import res_diff_draw +from .res_klayout_panel import res # ################constants################ L_MIN = 2.1 @@ -82,6 +82,6 @@ def produce_impl(self): """ drw = res_diff_draw(self.type) instance = drw.your_res( - self.layout, l=self.len, w=self.w, type=self.type, gr=self.gr + self.layout, l_res=self.len, w=self.w, type=self.type, gr=self.gr ) super().produce_impl(instance) diff --git a/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py index 41060cbfe..61d899a38 100644 --- a/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py +++ b/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py @@ -27,7 +27,7 @@ class res(pya.PCellDeclarationHelper): def __init__(self, l_min, w_min): # Initialize super class. - super(res, self).__init__() + super().__init__() # ===================== PARAMETERS DECLARATIONS ===================== @@ -37,9 +37,7 @@ def __init__(self, l_min, w_min): self.param("w", self.TypeDouble, "width", default=w_min, unit="um") self.param("gr", self.TypeBoolean, "Gaurd Ring", default=1) - self.param( - "area", self.TypeDouble, "Area", readonly=True, unit="um^2" - ) + self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") self.param( "res_value", self.TypeDouble, @@ -92,11 +90,7 @@ def can_create_from_shape_impl(self): we can use any shape which has a finite bounding box """ - return ( - self.shape.is_box() - or self.shape.is_polygon() - or self.shape.is_path() - ) + return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() def parameters_from_shape_impl(self): """Implement the "Create PCell from shape" protocol: diff --git a/sky130/cells/klayout/pymacros/cells/res_metal_child.py b/sky130/cells/klayout/pymacros/cells/res_metal_child.py index 018ca4f02..7838ac397 100644 --- a/sky130/cells/klayout/pymacros/cells/res_metal_child.py +++ b/sky130/cells/klayout/pymacros/cells/res_metal_child.py @@ -16,22 +16,23 @@ # res Generator for skywater130 +from gdsfactory.types import LayerSpec + from .layers_def import ( li1_res, li_layer, - met1_res, - met2_res, - met3_res, - met4_res, - met5_res, m1_layer, m2_layer, m3_layer, m4_layer, m5_layer, + met1_res, + met2_res, + met3_res, + met4_res, + met5_res, ) from .parent_res import draw_res -from gdsfactory.types import LayerSpec # ########constants########## # ONLY FOR GENERIC RES @@ -71,7 +72,7 @@ def your_res( self, layout, type="sky130_fd_pr__res_generic_l1", - l: float = L_MIN_G, + l_res: float = L_MIN_G, w: float = W_MIN_G, ): """draw the res with calling the parent func with right data @@ -83,7 +84,7 @@ def your_res( w(float): width of the resistor """ - self.set_l_w(l, w) + self.set_l_w(l_res, w) if type == "sky130_fd_pr__res_generic_l1": self.gen_res(li1_res, li_layer) diff --git a/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py index 94b4c951d..32169d2d4 100644 --- a/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py +++ b/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py @@ -113,7 +113,5 @@ def produce_impl(self): """ drw = res_metal_draw(self.type) - instance = drw.your_res( - self.layout, l=self.len, w=self.w, type=self.type - ) + instance = drw.your_res(self.layout, l_res=self.len, w=self.w, type=self.type) super().produce_impl(instance) diff --git a/sky130/cells/klayout/pymacros/cells/res_poly_child.py b/sky130/cells/klayout/pymacros/cells/res_poly_child.py index 4119e62bc..91f943732 100644 --- a/sky130/cells/klayout/pymacros/cells/res_poly_child.py +++ b/sky130/cells/klayout/pymacros/cells/res_poly_child.py @@ -17,25 +17,23 @@ # res Generator for skywater130 import math -from .layers_def import ( - tap_layer, - psdm_layer, - nsdm_layer, +from .layers_def import ( + dnwell_layer, li_layer, licon_layer, m1_layer, mcon_layer, - rpm_drawing, - rpm_high_drawing, npc_layer, + nsdm_layer, + nwell_layer, poly_layer, poly_res, + psdm_layer, pwell_res, - dnwell_layer, - nwell_layer, - - + rpm_drawing, + rpm_high_drawing, + tap_layer, ) from .parent_res import draw_res @@ -69,22 +67,22 @@ W_MIN_ISO = 2.65 # react -DNWELL=[1.82,1.03] +DNWELL = [1.82, 1.03] # FRAME -NWELL=[2.22,1.43,1.43] +NWELL = [2.22, 1.43, 1.43] TAP_LI_LAYER_ISO = [1.59, 0.8, 0.17] NSDM_LAYER_ISO = [1.715, 0.925, 0.42] # CONTACTS H -TAP_ISO=[0,0.53,0,0,0] -PSDM_ISO=[-0.125,0.78,0,0,0] -LI_ISO=[0,0.53,0,0,0] -M1_ISO=[0.055,0.325,0,0,0] -LICON_ISO=[0.01,0.17,0.17,0,0.17] -LICON_ISO2=0.35 -LICON_ISO3=1.42 -MCON_ISO=[0.13,0.17,0.17,0,0.19] +TAP_ISO = [0, 0.53, 0, 0, 0] +PSDM_ISO = [-0.125, 0.78, 0, 0, 0] +LI_ISO = [0, 0.53, 0, 0, 0] +M1_ISO = [0.055, 0.325, 0, 0, 0] +LICON_ISO = [0.01, 0.17, 0.17, 0, 0.17] +LICON_ISO2 = 0.35 +LICON_ISO3 = 1.42 +MCON_ISO = [0.13, 0.17, 0.17, 0, 0.19] # CONTACTS H -LICON_ISO_H=[0.63,0.17,0.17,2.1,0.17] +LICON_ISO_H = [0.63, 0.17, 0.17, 2.1, 0.17] # ############################### # THE REST OF THE RES L_MIN = 0.5 @@ -136,7 +134,7 @@ def __init__(self, type_): def poly_res( self, - l: float = L_MIN, + l_res: float = L_MIN, w: float = W_MIN, gr: int = GR, n_mcon: int = 0, @@ -146,7 +144,7 @@ def poly_res( """draw the res the specific res with right data Args: - l(float): length of the resistor + l_res(float): length of the resistor w(float): width of the resistor gr(int): guard ring of the resistor n_mcon(float): mcon_layer number of columns @@ -155,7 +153,7 @@ def poly_res( """ # rects - self.set_l_w(l + EXTRA_LEN, w) + self.set_l_w(l_res + EXTRA_LEN, w) rpm_layer = rpm_drawing if xhigh: rpm_layer = rpm_high_drawing @@ -180,7 +178,6 @@ def poly_res( w1 = [TAP_LI_LAYER[1], TAP_LI_LAYER[1]] thick = [TAP_LI_LAYER[2], TAP_LI_LAYER[2]] if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) # countacts @@ -210,11 +207,10 @@ def poly_res( l1 = [LICON_LAYER[0]] sizes_l = [LICON_LAYER[1]] sizes_w = [LICON_LAYER[2]] - space_fit_in = [l + LICON_LAYER[3]] + space_fit_in = [l_res + LICON_LAYER[3]] spaces = [LICON_LAYER[4]] if gr: - self.draw_contact_layer_v( layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces ) @@ -228,7 +224,7 @@ def your_res( self, layout, type="sky130_fd_pr__res_generic_po", - l: float = L_MIN_G, + l_res: float = L_MIN_G, w: float = W_MIN_G, gr: int = GR, ): @@ -237,12 +233,12 @@ def your_res( Args: layout(layout): drawing layout type(str): type of the resistor - l(float): length of the resistor + l_res(float): length of the resistor w(float): width of the resistor gr(int): guard ring of the resistor """ - self.set_l_w(l, w) + self.set_l_w(l_res, w) if type == "sky130_fd_pr__res_generic_po": # rects @@ -258,7 +254,6 @@ def your_res( w1 = [TAP_LI_LAYER_G[1], PSDM_LAYER_G[1], TAP_LI_LAYER_G[1]] thick = [TAP_LI_LAYER_G[2], PSDM_LAYER_G[2], TAP_LI_LAYER_G[2]] if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) # countacts @@ -359,11 +354,10 @@ def your_res( l1 = [LICON_LAYER_G[0]] sizes_l = [LICON_LAYER_G[1]] sizes_w = [LICON_LAYER_G[2]] - space_fit_in = [l + LICON_LAYER_G[3]] + space_fit_in = [l_res + LICON_LAYER_G[3]] spaces = [LICON_LAYER_G[4]] if gr: - self.draw_contact_layer_v( layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces ) @@ -377,13 +371,13 @@ def your_res( layout.read("res_temp.gds") cell_name = type return layout.cell(cell_name) - + elif type == "sky130_fd_pr__res_iso_pw": # rects layer_names = [pwell_res, dnwell_layer] l1 = [0, DNWELL[0]] w1 = [0, DNWELL[1]] - if gr==0: + if gr == 0: layer_names = [pwell_res] l1 = [0] w1 = [0] @@ -391,13 +385,17 @@ def your_res( self.draw_rect_layer(layer_names, l1, w1) # frams - layer_names = [nwell_layer, tap_layer,nsdm_layer ,li_layer] - l1 = [NWELL[0], TAP_LI_LAYER_ISO[0], NSDM_LAYER_ISO[0],TAP_LI_LAYER_ISO[0]] - w1 = [NWELL[1], TAP_LI_LAYER_ISO[1], NSDM_LAYER_ISO[1],TAP_LI_LAYER_ISO[1]] - thick = [NWELL[2], TAP_LI_LAYER_ISO[2], NSDM_LAYER_ISO[2],TAP_LI_LAYER_ISO[2]] - - if gr: + layer_names = [nwell_layer, tap_layer, nsdm_layer, li_layer] + l1 = [NWELL[0], TAP_LI_LAYER_ISO[0], NSDM_LAYER_ISO[0], TAP_LI_LAYER_ISO[0]] + w1 = [NWELL[1], TAP_LI_LAYER_ISO[1], NSDM_LAYER_ISO[1], TAP_LI_LAYER_ISO[1]] + thick = [ + NWELL[2], + TAP_LI_LAYER_ISO[2], + NSDM_LAYER_ISO[2], + TAP_LI_LAYER_ISO[2], + ] + if gr: self.draw_frame_layer(layer_names, l1, w1, thick) # countacts @@ -410,7 +408,7 @@ def your_res( licon_layer, licon_layer, licon_layer, - mcon_layer + mcon_layer, ] l1 = [ @@ -421,7 +419,7 @@ def your_res( LICON_ISO[0], LICON_ISO2, LICON_ISO3, - MCON_ISO[0] + MCON_ISO[0], ] sizes_l = [ TAP_ISO[1], @@ -431,18 +429,27 @@ def your_res( LICON_ISO[1], LICON_ISO[1], LICON_ISO[1], - MCON_ISO[1] + MCON_ISO[1], + ] + sizes_w = [ + w - 0.4, + w - 0.15, + w - 0.48, + w - 0.4, + LICON_ISO[2], + LICON_ISO[2], + LICON_ISO[2], + MCON_ISO[2], ] - sizes_w = [w-0.4, w-0.15, w-0.48, w - 0.4, LICON_ISO[2],LICON_ISO[2],LICON_ISO[2],MCON_ISO[2]] space_fit_in = [ TAP_ISO[3], PSDM_ISO[3], LI_ISO[3], M1_ISO[3], - w-0.6, - w-0.6, - w+0.76, - w-0.49 + w - 0.6, + w - 0.6, + w + 0.76, + w - 0.49, ] spaces = [ TAP_ISO[4], @@ -452,7 +459,7 @@ def your_res( LICON_ISO[4], LICON_ISO[4], LICON_ISO[4], - MCON_ISO[4] + MCON_ISO[4], ] if gr == 0: @@ -463,7 +470,7 @@ def your_res( m1_layer, licon_layer, licon_layer, - mcon_layer + mcon_layer, ] l1 = [ @@ -473,7 +480,7 @@ def your_res( M1_ISO[0], LICON_ISO[0], LICON_ISO2, - MCON_ISO[0] + MCON_ISO[0], ] sizes_l = [ TAP_ISO[1], @@ -482,17 +489,25 @@ def your_res( M1_ISO[1], LICON_ISO[1], LICON_ISO[1], - MCON_ISO[1] + MCON_ISO[1], + ] + sizes_w = [ + w - 0.4, + w - 0.15, + w - 0.48, + w - 0.4, + LICON_ISO[2], + LICON_ISO[2], + MCON_ISO[2], ] - sizes_w = [w-0.4, w-0.15, w-0.48, w - 0.4, LICON_ISO[2],LICON_ISO[2],MCON_ISO[2]] space_fit_in = [ TAP_ISO[3], PSDM_ISO[3], LI_ISO[3], M1_ISO[3], - w-0.6, - w-0.6, - w-0.49 + w - 0.6, + w - 0.6, + w - 0.49, ] spaces = [ TAP_ISO[4], @@ -501,8 +516,8 @@ def your_res( M1_ISO[4], LICON_ISO[4], LICON_ISO[4], - MCON_ISO[4] - ] + MCON_ISO[4], + ] self.draw_contact_layer_h( layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces @@ -512,45 +527,42 @@ def your_res( l1 = [LICON_ISO_H[0]] sizes_l = [LICON_ISO_H[1]] sizes_w = [LICON_ISO_H[2]] - space_fit_in = [l + LICON_ISO_H[3]] + space_fit_in = [l_res + LICON_ISO_H[3]] spaces = [LICON_ISO_H[4]] if gr: - self.draw_contact_layer_v( layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces ) - c = self.get_c() c.write_gds("res_temp.gds") layout.read("res_temp.gds") cell_name = type return layout.cell(cell_name) - elif type == "sky130_fd_pr__res_high_po_0p35": - self.poly_res(l, W_MIN_0P35, gr, 0, RPM_FOR_LAYERS[0]) + self.poly_res(l_res, W_MIN_0P35, gr, 0, RPM_FOR_LAYERS[0]) elif type == "sky130_fd_pr__res_high_po_0p69": - self.poly_res(l, W_MIN_0P69, gr, 1, RPM_FOR_LAYERS[1]) + self.poly_res(l_res, W_MIN_0P69, gr, 1, RPM_FOR_LAYERS[1]) elif type == "sky130_fd_pr__res_high_po_1p41": - self.poly_res(l, W_MIN_1P41, gr, 1, RPM_FOR_LAYERS[2]) + self.poly_res(l_res, W_MIN_1P41, gr, 1, RPM_FOR_LAYERS[2]) elif type == "sky130_fd_pr__res_high_po_2p85": - self.poly_res(l, W_MIN_2P85, gr, 1, RPM_FOR_LAYERS[3]) + self.poly_res(l_res, W_MIN_2P85, gr, 1, RPM_FOR_LAYERS[3]) elif type == "sky130_fd_pr__res_high_po_5p73": - self.poly_res(l, W_MIN_5P73, gr, 1, RPM_FOR_LAYERS[4]) + self.poly_res(l_res, W_MIN_5P73, gr, 1, RPM_FOR_LAYERS[4]) # high elif type == "sky130_fd_pr__res_xhigh_po_0p35": - self.poly_res(l, W_MIN_0P35, gr, 0, RPM_FOR_LAYERS[0], 1) + self.poly_res(l_res, W_MIN_0P35, gr, 0, RPM_FOR_LAYERS[0], 1) elif type == "sky130_fd_pr__res_xhigh_po_0p69": - self.poly_res(l, W_MIN_0P69, gr, 1, RPM_FOR_LAYERS[1], 1) + self.poly_res(l_res, W_MIN_0P69, gr, 1, RPM_FOR_LAYERS[1], 1) elif type == "sky130_fd_pr__res_xhigh_po_1p41": - self.poly_res(l, W_MIN_1P41, gr, 1, RPM_FOR_LAYERS[2], 1) + self.poly_res(l_res, W_MIN_1P41, gr, 1, RPM_FOR_LAYERS[2], 1) elif type == "sky130_fd_pr__res_xhigh_po_2p85": - self.poly_res(l, W_MIN_2P85, gr, 1, RPM_FOR_LAYERS[3], 1) + self.poly_res(l_res, W_MIN_2P85, gr, 1, RPM_FOR_LAYERS[3], 1) elif type == "sky130_fd_pr__res_xhigh_po_5p73": - self.poly_res(l, W_MIN_5P73, gr, 1, RPM_FOR_LAYERS[4], 1) + self.poly_res(l_res, W_MIN_5P73, gr, 1, RPM_FOR_LAYERS[4], 1) c = self.get_c() c.write_gds("res_temp.gds") diff --git a/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py index 6fccc4712..696c23345 100644 --- a/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py +++ b/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py @@ -14,11 +14,12 @@ # along with this program. If not, see . from .res_klayout_panel import res from .res_poly_child import res_poly_draw + # ################constants################ L_MIN = 1.65 W_MIN = 0.33 -L_MIN_ISO=26.5 -W_MIN_ISO=2.65 +L_MIN_ISO = 26.5 +W_MIN_ISO = 2.65 L_MIN_PO = 0.5 W_MIN_0P35 = 0.35 W_MIN_0P69 = 0.69 @@ -65,7 +66,7 @@ def __init__(self): ) self.Type_handle.add_choice( "sky130_fd_pr__res_iso_pw", "sky130_fd_pr__res_iso_pw" - ) + ) self.Type_handle.add_choice( "sky130_fd_pr__res_high_po_0p35", "sky130_fd_pr__res_high_po_0p35" ) @@ -119,7 +120,7 @@ def coerce_parameters_impl(self): if self.type == "sky130_fd_pr__res_generic_po": super().coerce_parameters_impl(L_MIN, W_MIN) # (l_min,w_min) self.res_value = RES_GEN * self.area - + elif self.type == "sky130_fd_pr__res_iso_pw": super().coerce_parameters_impl(L_MIN_ISO, W_MIN_ISO) self.res_value = RES_ISO * self.area @@ -167,6 +168,6 @@ def produce_impl(self): """ drw = res_poly_draw(self.type) instance = drw.your_res( - self.layout, l=self.len, w=self.w, type=self.type, gr=self.gr + self.layout, l_res=self.len, w=self.w, type=self.type, gr=self.gr ) super().produce_impl(instance) diff --git a/sky130/cells/klayout/pymacros/cells/rf.py b/sky130/cells/klayout/pymacros/cells/rf.py index 2beee027e..0de2ddfe7 100644 --- a/sky130/cells/klayout/pymacros/cells/rf.py +++ b/sky130/cells/klayout/pymacros/cells/rf.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -18,8 +18,10 @@ ######################################################################################################################## import pya -from .draw_rf import * -from .globals import * + +from .draw_rf import draw_rf_bjt, draw_rf_coils, draw_rf_mosfet +from .globals import RF_BJT_DEV, RF_COILS_DEV, RF_MOSFET_DEV + class rf_mosfet(pya.PCellDeclarationHelper): """ @@ -27,68 +29,78 @@ class rf_mosfet(pya.PCellDeclarationHelper): """ def __init__(self): - # Important: initialize the super class - super(rf_mosfet, self).__init__() + super().__init__() self.Type_handle = self.param("Type", self.TypeList, "Type") - - for i in RF_MOSFET_DEV : + + for i in RF_MOSFET_DEV: self.Type_handle.add_choice(i, i) - - - self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__",readonly=True) + + self.param( + "Model", self.TypeString, "Model", default="sky130_fd_pr__", readonly=True + ) def display_text_impl(self): # Provide a descriptive text for the cell return str(self.Type) def produce_impl(self): - # This is the main part of the implementation: create the layout - self.percision = 1/self.layout.dbu - rf_mos_instance = draw_rf_mosfet(layout=self.layout,device_name=self.Type) - - write_cells = pya.CellInstArray(rf_mos_instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.percision = 1 / self.layout.dbu + rf_mos_instance = draw_rf_mosfet(layout=self.layout, device_name=self.Type) + + write_cells = pya.CellInstArray( + rf_mos_instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.flatten(1) self.cell.insert(write_cells) - + self.layout.cleanup() - + + class rf_bjt(pya.PCellDeclarationHelper): """ rf bjt Generator for Skywater130 """ - - def __init__(self): + def __init__(self): # Important: initialize the super class - super(rf_bjt, self).__init__() + super().__init__() self.Type_handle = self.param("Type", self.TypeList, "Type") - for i in RF_BJT_DEV : + for i in RF_BJT_DEV: self.Type_handle.add_choice(i, i) - - - self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__",readonly=True) - + + self.param( + "Model", self.TypeString, "Model", default="sky130_fd_pr__", readonly=True + ) def display_text_impl(self): # Provide a descriptive text for the cell return str(self.Type) def produce_impl(self): - # This is the main part of the implementation: create the layout - self.percision = 1/self.layout.dbu - rf_bjt_instance = draw_rf_bjt(layout=self.layout,device_name=self.Type) - - write_cells = pya.CellInstArray(rf_bjt_instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.percision = 1 / self.layout.dbu + rf_bjt_instance = draw_rf_bjt(layout=self.layout, device_name=self.Type) + + write_cells = pya.CellInstArray( + rf_bjt_instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.flatten(1) self.cell.insert(write_cells) - + self.layout.cleanup() @@ -98,31 +110,35 @@ class rf_coils(pya.PCellDeclarationHelper): """ def __init__(self): - # Important: initialize the super class - super(rf_coils, self).__init__() + super().__init__() self.Type_handle = self.param("Type", self.TypeList, "Type") - for i in RF_COILS_DEV : + for i in RF_COILS_DEV: self.Type_handle.add_choice(i, i) - - - self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__",readonly=True) + + self.param( + "Model", self.TypeString, "Model", default="sky130_fd_pr__", readonly=True + ) def display_text_impl(self): # Provide a descriptive text for the cell return str(self.Type) def produce_impl(self): - # This is the main part of the implementation: create the layout - self.percision = 1/self.layout.dbu - rf_coils_instance = draw_rf_coils(layout=self.layout,device_name=self.Type) - - write_cells = pya.CellInstArray(rf_coils_instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.percision = 1 / self.layout.dbu + rf_coils_instance = draw_rf_coils(layout=self.layout, device_name=self.Type) + + write_cells = pya.CellInstArray( + rf_coils_instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.flatten(1) self.cell.insert(write_cells) - + self.layout.cleanup() - \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/via_generator.py b/sky130/cells/klayout/pymacros/cells/via_generator.py index c82c26782..59c5bdfd7 100644 --- a/sky130/cells/klayout/pymacros/cells/via_generator.py +++ b/sky130/cells/klayout/pymacros/cells/via_generator.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -19,74 +19,92 @@ from math import ceil, floor -from tracemalloc import start + import gdsfactory as gf -from gdsfactory.types import Float2 , LayerSpec -from .layers_def import * +from gdsfactory.types import Float2, LayerSpec + +from .layers_def import ( + diff_layer, + li_layer, + licon_layer, + m1_layer, + m2_layer, + m3_layer, + m4_layer, + m5_layer, + mcon_layer, + npc_layer, + nsdm_layer, + nwell_layer, + poly_layer, + psdm_layer, + tap_layer, + via1_layer, + via2_layer, + via3_layer, + via4_layer, +) + @gf.cell def via_generator( - x_range : Float2 = (0,1) , - y_range : Float2 = (0,1) , - via_size : Float2 = (0.17,0.17), - via_layer : LayerSpec = (66,44), - via_enclosure : Float2 = (0.06,0.06), - via_spacing : Float2 = (0.17,0.17) - - + x_range: Float2 = (0, 1), + y_range: Float2 = (0, 1), + via_size: Float2 = (0.17, 0.17), + via_layer: LayerSpec = (66, 44), + via_enclosure: Float2 = (0.06, 0.06), + via_spacing: Float2 = (0.17, 0.17), ) -> gf.Component(): - """ - return only vias withen the range xrange and yrange while enclosing by via_enclosure - and set number of rows and number of coloumns according to ranges and via size and spacing + return only vias withen the range xrange and yrange while enclosing by via_enclosure + and set number of rows and number of coloumns according to ranges and via size and spacing """ - + c = gf.Component() width = x_range[1] - x_range[0] length = y_range[1] - y_range[0] nr = floor(length / (via_size[1] + via_spacing[1])) - if (length - nr*via_size[1] - (nr-1)*via_spacing[1])/2 < via_enclosure[1]: + if (length - nr * via_size[1] - (nr - 1) * via_spacing[1]) / 2 < via_enclosure[1]: nr -= 1 - if nr <1 : + if nr < 1: nr = 1 - - nc = ceil(width / (via_size[0]+via_spacing[0])) - - if (round(width - nc*via_size[0] - (nc-1)*via_spacing[0],2))/2 < via_enclosure[0]: + nc = ceil(width / (via_size[0] + via_spacing[0])) + + if ( + round(width - nc * via_size[0] - (nc - 1) * via_spacing[0], 2) + ) / 2 < via_enclosure[0]: nc -= 1 - - if nc<1 : - nc =1 - - via_sp = (via_size[0]+via_spacing[0],via_size[1]+via_spacing[1]) + if nc < 1: + nc = 1 - rect_via = gf.components.rectangle(size = via_size , layer= via_layer) + via_sp = (via_size[0] + via_spacing[0], via_size[1] + via_spacing[1]) - via_arr = c.add_array(rect_via, rows= nr, columns= nc , spacing=via_sp) + rect_via = gf.components.rectangle(size=via_size, layer=via_layer) - via_arr.move((x_range[0],y_range[0])) + via_arr = c.add_array(rect_via, rows=nr, columns=nc, spacing=via_sp) - via_arr.movex((width - nc*via_size[0] - (nc-1)*via_spacing[0])/2) - via_arr.movey((length - nr*via_size[1] - (nr-1)*via_spacing[1])/2) + via_arr.move((x_range[0], y_range[0])) - return c + via_arr.movex((width - nc * via_size[0] - (nc - 1) * via_spacing[0]) / 2) + via_arr.movey((length - nr * via_size[1] - (nr - 1) * via_spacing[1]) / 2) -@gf.cell -def via_stack ( - x_range : Float2 = (0,1), - y_range : Float2 = (0,1), - base_layer : LayerSpec = diff_layer, - slotted_licon : int = 0, - metal_level : int = 1, - li_enc_dir = "V" + return c -) -> gf.Component : +@gf.cell +def via_stack( + x_range: Float2 = (0, 1), + y_range: Float2 = (0, 1), + base_layer: LayerSpec = diff_layer, + slotted_licon: int = 0, + metal_level: int = 1, + li_enc_dir="V", +) -> gf.Component: """ return via stack till the metal level indicated where : metal_level 0 : till li @@ -95,382 +113,486 @@ def via_stack ( metal_level 3 : till m3 metal_level 4 : till m4 metal_level 5 : till m5 - withen the range xrange and yrange and expecting the base_layer to be drawen + withen the range xrange and yrange and expecting the base_layer to be drawen """ c = gf.Component() - # vias dimensions + # vias dimensions - if slotted_licon == 1 : - licon_size = (0.19,2) + if slotted_licon == 1: + licon_size = (0.19, 2) - else : - licon_size = (0.17,0.17) - - mcon_size = (0.17,0.17) - + else: + licon_size = (0.17, 0.17) - if base_layer == diff_layer or base_layer == tap_layer : - con_enc = (0.06,0.06) - - #elif base_layer == tap_layer: + mcon_size = (0.17, 0.17) + + if base_layer == diff_layer or base_layer == tap_layer: + con_enc = (0.06, 0.06) + + # elif base_layer == tap_layer: # con_enc = (0.1,0.06) - - elif base_layer == poly_layer : - con_enc = (0.05,0.08) - npc_enc = 0.01 - npc = c.add_ref(gf.components.rectangle(size=(x_range[1]-x_range[0]+2*npc_enc, y_range[1]-y_range[0]+2*npc_enc),layer=npc_layer)) - npc.move((x_range[0]-npc_enc, y_range[0]-npc_enc)) - - else : - pass + elif base_layer == poly_layer: + con_enc = (0.05, 0.08) + npc_enc = 0.01 + npc = c.add_ref( + gf.components.rectangle( + size=( + x_range[1] - x_range[0] + 2 * npc_enc, + y_range[1] - y_range[0] + 2 * npc_enc, + ), + layer=npc_layer, + ) + ) + npc.move((x_range[0] - npc_enc, y_range[0] - npc_enc)) + + else: + pass if li_enc_dir == "H": - li_enc = (0.08,0) - m1_enc = (0.06,0.03) - elif li_enc_dir == "V" : - li_enc = (0,0.08) - m1_enc = (0.03,0.06) + li_enc = (0.08, 0) + m1_enc = (0.06, 0.03) + elif li_enc_dir == "V": + li_enc = (0, 0.08) + m1_enc = (0.03, 0.06) + + con_spacing = (0.19, 0.19) + + via1_size = (0.15, 0.15) + via1_spacing = (0.17, 0.17) + via1_enc = (0.055, 0.085) + + via2_size = (0.2, 0.2) + via2_enc = (0.04, 0.085) + via2_spacing = (0.2, 0.2) + + via3_size = (0.2, 0.2) + via3_enc = (0.06, 0.09) + via3_spacing = (0.2, 0.2) + + via4_size = (0.8, 0.8) + via4_enc = (0.19, 0.19) + via4_spacing = (0.8, 0.8) + + if metal_level >= 0: + licon_gen = via_generator( + x_range=x_range, + y_range=y_range, + via_size=licon_size, + via_enclosure=con_enc, + via_layer=licon_layer, + via_spacing=con_spacing, + ) + licon = c.add_ref(licon_gen) - con_spacing = (0.19,0.19) + li = c.add_ref( + gf.components.rectangle( + size=( + licon.xmax - licon.xmin + (2 * li_enc[0]), + licon.ymax - licon.ymin + (2 * li_enc[1]), + ), + layer=li_layer, + ) + ) + li.move((licon.xmin - li_enc[0], licon.ymin - li_enc[1])) + + if metal_level >= 1: + mcon_gen = via_generator( + x_range=x_range, + y_range=y_range, + via_size=mcon_size, + via_enclosure=con_enc, + via_layer=mcon_layer, + via_spacing=con_spacing, + ) + mcon = c.add_ref(mcon_gen) + + if (mcon.xmax - mcon.xmin + 2 * m1_enc[0]) < ( + via1_size[0] + 2 * via1_enc[0] + ) and metal_level >= 2: + m1_x = via1_size[0] + 2 * via1_enc[0] + + else: + m1_x = mcon.xmax - mcon.xmin + 2 * m1_enc[0] + + if (mcon.ymax - mcon.ymin + 2 * m1_enc[1]) < ( + via1_size[1] + 2 * via1_enc[1] + ) and metal_level >= 2: + m1_y = via1_size[1] + 2 * via1_enc[1] + + else: + m1_y = mcon.ymax - mcon.ymin + 2 * m1_enc[1] - via1_size = (0.15,0.15) - via1_spacing = (0.17,0.17) - via1_enc = (0.055,0.085) + m1_a = 0.084 - via2_size = (0.2,0.2) - via2_enc = (0.04,0.085) - via2_spacing = (0.2,0.2) + if (m1_x * m1_y) < m1_a: + m1_x = m1_a / m1_y - via3_size = (0.2,0.2) - via3_enc = (0.06,0.09) - via3_spacing = (0.2,0.2) + m1_mx = (m1_x - (mcon.xmax - mcon.xmin)) / 2 + m1_my = (m1_y - (mcon.ymax - mcon.ymin)) / 2 - via4_size = (0.8,0.8) - via4_enc = (0.19,0.19) - via4_spacing = (0.8,0.8) + m1 = c.add_ref(gf.components.rectangle(size=(m1_x, m1_y), layer=m1_layer)) + m1.move((mcon.xmin - m1_mx, mcon.ymin - m1_my)) + if metal_level >= 2: + via1_gen = via_generator( + x_range=(m1.xmin, m1.xmax), + y_range=(m1.ymin, m1.ymax), + via_size=via1_size, + via_enclosure=via1_enc, + via_layer=via1_layer, + via_spacing=via1_spacing, + ) + via1 = c.add_ref(via1_gen) - if metal_level >= 0 : - licon_gen = via_generator(x_range=x_range,y_range=y_range,via_size=licon_size,via_enclosure=con_enc,via_layer=licon_layer,via_spacing=con_spacing) - licon = c.add_ref(licon_gen) - - - li = c.add_ref(gf.components.rectangle(size=(licon.xmax-licon.xmin+(2*li_enc[0]),licon.ymax-licon.ymin+(2*li_enc[1])),layer=li_layer)) - li.move((licon.xmin-li_enc[0], licon.ymin-li_enc[1])) - - if metal_level >= 1 : - mcon_gen = via_generator(x_range=x_range,y_range=y_range,via_size=mcon_size,via_enclosure=con_enc,via_layer=mcon_layer,via_spacing=con_spacing) - mcon = c.add_ref(mcon_gen) - - - - if (mcon.xmax-mcon.xmin + 2*m1_enc[0]) < (via1_size[0] + 2*via1_enc[0]) and metal_level >=2: - m1_x = via1_size[0] + 2*via1_enc[0] - - - else : - m1_x = mcon.xmax-mcon.xmin + 2*m1_enc[0] - - - if (mcon.ymax-mcon.ymin + 2*m1_enc[1]) < (via1_size[1] + 2*via1_enc[1]) and metal_level >=2 : - m1_y = via1_size[1] + 2*via1_enc[1] - - else : - m1_y = mcon.ymax-mcon.ymin + 2*m1_enc[1] - - m1_a = 0.084 - - if (m1_x*m1_y)< m1_a : - m1_x = m1_a/m1_y - - - - m1_mx = (m1_x - (mcon.xmax - mcon.xmin))/2 - m1_my = (m1_y - (mcon.ymax - mcon.ymin))/2 + if (via1.xmax - via1.xmin) > (via1.ymax - via1.ymin): + m2_enc = (0.055, 0.085) + else: + m2_enc = (0.085, 0.055) + + if (via1.xmax - via1.xmin + 2 * m2_enc[0]) < ( + via2_size[0] + 2 * via2_enc[0] + ) and metal_level >= 3: + m2_x = via2_size[0] + 2 * via2_enc[0] + + else: + m2_x = via1.xmax - via1.xmin + 2 * m2_enc[0] + + if (via1.ymax - via1.ymin + 2 * m2_enc[1]) < ( + via2_size[1] + 2 * via2_enc[1] + ) and metal_level >= 3: + m2_y = via2_size[1] + 2 * via2_enc[1] + + else: + m2_y = via1.ymax - via1.ymin + 2 * m2_enc[1] + + m2_mx = (m2_x - (via1.xmax - via1.xmin)) / 2 + m2_my = (m2_y - (via1.ymax - via1.ymin)) / 2 + + m2 = c.add_ref(gf.components.rectangle(size=(m2_x, m2_y), layer=m2_layer)) + m2.move((via1.xmin - m2_mx, via1.ymin - m2_my)) + + if metal_level >= 3: + via2_gen = via_generator( + x_range=(m2.xmin, m2.xmax), + y_range=(m2.ymin, m2.ymax), + via_size=via2_size, + via_enclosure=via2_enc, + via_layer=via2_layer, + via_spacing=via2_spacing, + ) + via2 = c.add_ref(via2_gen) + m3_enc = (0.065, 0.065) - m1 = c.add_ref(gf.components.rectangle(size=(m1_x,m1_y),layer=m1_layer)) - m1.move((mcon.xmin - m1_mx, mcon.ymin - m1_my)) + if (via2.xmax - via2.xmin + 2 * m3_enc[0]) < ( + via3_size[0] + 2 * via3_enc[0] + ) and metal_level >= 4: + m3_x = via3_size[0] + 2 * via3_enc[0] - if metal_level >=2 : - via1_gen = via_generator(x_range= (m1.xmin, m1.xmax), y_range=(m1.ymin,m1.ymax),via_size=via1_size,via_enclosure=via1_enc - ,via_layer=via1_layer,via_spacing=via1_spacing) - via1 = c.add_ref(via1_gen) + else: + m3_x = via2.xmax - via2.xmin + 2 * m3_enc[0] - if (via1.xmax-via1.xmin) > (via1.ymax - via1.ymin): - m2_enc = (0.055,0.085) - else : - m2_enc = (0.085,0.055) - - if (via1.xmax-via1.xmin + 2*m2_enc[0]) < (via2_size[0] + 2*via2_enc[0]) and metal_level >=3: - m2_x = via2_size[0] + 2*via2_enc[0] - - - else : - m2_x = via1.xmax-via1.xmin + 2*m2_enc[0] - - - if (via1.ymax-via1.ymin + 2*m2_enc[1]) < (via2_size[1] + 2*via2_enc[1]) and metal_level >=3: - m2_y = via2_size[1] + 2*via2_enc[1] - - - else : - m2_y = via1.ymax-via1.ymin + 2*m2_enc[1] - - m2_mx = (m2_x - (via1.xmax - via1.xmin))/2 - m2_my = (m2_y - (via1.ymax - via1.ymin))/2 - - m2 = c.add_ref(gf.components.rectangle(size=(m2_x,m2_y),layer=m2_layer)) - m2.move((via1.xmin - m2_mx, via1.ymin -m2_my)) - - if metal_level >= 3 : - via2_gen = via_generator(x_range= (m2.xmin, m2.xmax), y_range=(m2.ymin,m2.ymax),via_size=via2_size,via_enclosure=via2_enc - ,via_layer=via2_layer,via_spacing=via2_spacing) - via2 = c.add_ref(via2_gen) + if (via2.ymax - via2.ymin + 2 * m3_enc[1]) < ( + via3_size[1] + 2 * via3_enc[1] + ) and metal_level >= 4: + m3_y = via3_size[1] + 2 * via3_enc[1] + + else: + m3_y = via2.ymax - via2.ymin + 2 * m3_enc[1] + + m3_mx = (m3_x - (via2.xmax - via2.xmin)) / 2 + m3_my = (m3_y - (via2.ymax - via2.ymin)) / 2 - m3_enc = (0.065,0.065) - - if (via2.xmax-via2.xmin + 2*m3_enc[0]) < (via3_size[0] + 2*via3_enc[0]) and metal_level >= 4: - m3_x = via3_size[0] + 2*via3_enc[0] - - else : - m3_x = via2.xmax-via2.xmin + 2*m3_enc[0] - - - if (via2.ymax-via2.ymin + 2*m3_enc[1]) < (via3_size[1] + 2*via3_enc[1]) and metal_level >=4: - m3_y = via3_size[1] + 2*via3_enc[1] - - else : - m3_y = via2.ymax-via2.ymin + 2*m3_enc[1] - - m3_mx = (m3_x - (via2.xmax - via2.xmin))/2 - m3_my = (m3_y - (via2.ymax - via2.ymin))/2 - - - m3 = c.add_ref(gf.components.rectangle(size=(m3_x,m3_y),layer=m3_layer)) + m3 = c.add_ref(gf.components.rectangle(size=(m3_x, m3_y), layer=m3_layer)) m3.move((via2.xmin - m3_mx, via2.ymin - m3_my)) - if metal_level >= 4 : - via3_gen = via_generator(x_range= (m3.xmin, m3.xmax), y_range=(m3.ymin,m3.ymax),via_size=via3_size,via_enclosure=via3_enc - ,via_layer=via3_layer,via_spacing=via3_spacing) + if metal_level >= 4: + via3_gen = via_generator( + x_range=(m3.xmin, m3.xmax), + y_range=(m3.ymin, m3.ymax), + via_size=via3_size, + via_enclosure=via3_enc, + via_layer=via3_layer, + via_spacing=via3_spacing, + ) via3 = c.add_ref(via3_gen) - m4_enc = (0.065,0.065) - - if (via3.xmax-via3.xmin + 2*m4_enc[0]) < (via4_size[0] + 2*via4_enc[0]) and metal_level >=5: - m4_x = via4_size[0] + 2*via4_enc[0] - - else : - m4_x = via3.xmax-via3.xmin + 2*m4_enc[0] - - - if (via3.ymax-via3.ymin + 2*m4_enc[1]) < (via4_size[1] + 2*via4_enc[1]) and metal_level >=5: - m4_y = via4_size[1] + 2*via4_enc[1] - - - else : - m4_y = via3.ymax-via3.ymin + 2*m4_enc[1] - - m4_mx = (m4_x- (via3.xmax - via3.xmin))/2 - m4_my = (m4_y- (via3.ymax - via3.ymin))/2 - - m4 = c.add_ref(gf.components.rectangle(size=(m4_x,m4_y),layer=m4_layer)) - m4.move(( via3.xmin-m4_mx , via3.ymin- m4_my )) - - if metal_level >= 5 : - via4_gen = via_generator(x_range= (m4.xmin, m4.xmax), y_range=(m4.ymin,m4.ymax),via_size=via4_size,via_enclosure=via4_enc - ,via_layer=via4_layer,via_spacing=via4_spacing) + m4_enc = (0.065, 0.065) + + if (via3.xmax - via3.xmin + 2 * m4_enc[0]) < ( + via4_size[0] + 2 * via4_enc[0] + ) and metal_level >= 5: + m4_x = via4_size[0] + 2 * via4_enc[0] + + else: + m4_x = via3.xmax - via3.xmin + 2 * m4_enc[0] + + if (via3.ymax - via3.ymin + 2 * m4_enc[1]) < ( + via4_size[1] + 2 * via4_enc[1] + ) and metal_level >= 5: + m4_y = via4_size[1] + 2 * via4_enc[1] + + else: + m4_y = via3.ymax - via3.ymin + 2 * m4_enc[1] + + m4_mx = (m4_x - (via3.xmax - via3.xmin)) / 2 + m4_my = (m4_y - (via3.ymax - via3.ymin)) / 2 + + m4 = c.add_ref(gf.components.rectangle(size=(m4_x, m4_y), layer=m4_layer)) + m4.move((via3.xmin - m4_mx, via3.ymin - m4_my)) + + if metal_level >= 5: + via4_gen = via_generator( + x_range=(m4.xmin, m4.xmax), + y_range=(m4.ymin, m4.ymax), + via_size=via4_size, + via_enclosure=via4_enc, + via_layer=via4_layer, + via_spacing=via4_spacing, + ) via4 = c.add_ref(via4_gen) - m5_enc = (0.31,0.31) - m5_min_w = 1.6 - if (via4.xmax-via4.xmin + 2*m5_enc[0]) < m5_min_w: + m5_enc = (0.31, 0.31) + m5_min_w = 1.6 + if (via4.xmax - via4.xmin + 2 * m5_enc[0]) < m5_min_w: m5_x = m5_min_w - - else : - m5_x = via4.xmax-via4.xmin + 2*m5_enc[0] - - if (via4.ymax-via4.ymin + 2*m5_enc[1]) < m5_min_w: + else: + m5_x = via4.xmax - via4.xmin + 2 * m5_enc[0] + + if (via4.ymax - via4.ymin + 2 * m5_enc[1]) < m5_min_w: m5_y = m5_min_w - - - else : - m5_y = via4.ymax-via4.ymin + 2*m5_enc[1] - - - - m5_a = 4 - if (m5_x*m5_y)< m5_a : - m5_x = m5_a/m5_y - - m5_mx = (m5_x - (via4.xmax - via4.xmin))/2 - m5_my = (m5_y - (via4.ymax - via4.ymin))/2 - - m5 = c.add_ref(gf.components.rectangle(size=(m5_x,m5_y),layer=m5_layer)) + + else: + m5_y = via4.ymax - via4.ymin + 2 * m5_enc[1] + + m5_a = 4 + if (m5_x * m5_y) < m5_a: + m5_x = m5_a / m5_y + + m5_mx = (m5_x - (via4.xmax - via4.xmin)) / 2 + m5_my = (m5_y - (via4.ymax - via4.ymin)) / 2 + + m5 = c.add_ref(gf.components.rectangle(size=(m5_x, m5_y), layer=m5_layer)) m5.move((via4.xmin - m5_mx, via4.ymin - m5_my)) return c -#@gf.cell + +# @gf.cell def vias_gen_draw( - layout, - l : float = 1.0, - w : float = 1.0, - start_layer = "poly", - end_layer = "metal5" - - -) : #-> gf.Component : - ''' + layout, l_vias: float = 1.0, w: float = 1.0, start_layer="poly", end_layer="metal5" +): # -> gf.Component : + """ draws a vias stack from the start_layer to the end_layer and also draws the start and end layers where : - l : float of the length that vias will be drawn in - w : float of the width that vias will drawn in + l_vias : float of the length that vias will be drawn in + w : float of the width that vias will drawn in start_layer : string of the first layer to be drawn that takes input of (poly,p_tap,n_tap,p_diff,n_diff,li,metal1:5) end_layer : string of the last layer to be drawn that takes input of (poly,p_tap,n_tap,p_diff,n_diff,li,metal1:5) - ''' + """ c = gf.Component("via") - base_layers = ["poly","n_diff","p_diff","n_tap","p_tap"] - metal_layers = ["li","metal1","metal2","metal3","metal4","metal5"] - + base_layers = ["poly", "n_diff", "p_diff", "n_tap", "p_tap"] + metal_layers = ["li", "metal1", "metal2", "metal3", "metal4", "metal5"] - if start_layer in base_layers : - level_1 = -1 - else : + if start_layer in base_layers: + level_1 = -1 + else: for i in range(len(metal_layers)): if start_layer == metal_layers[i]: level_1 = i - - if end_layer in base_layers : + + if end_layer in base_layers: level_2 = -1 - else : + else: for i in range(len(metal_layers)): if end_layer == metal_layers[i]: level_2 = i - - - if level_1 <= -1 and level_2 >= -1 : + + if level_1 <= -1 and level_2 >= -1: if start_layer == "poly" or end_layer == "poly": npc_enc = 0.05 - poly = c.add_ref(gf.components.rectangle(size=(l,w),layer = poly_layer)) - npc = c.add_ref(gf.components.rectangle(size=(l+2*npc_enc,w+2*npc_enc),layer=npc_layer)).move((-npc_enc, -npc_enc)) + c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=poly_layer)) + c.add_ref( + gf.components.rectangle( + size=(l_vias + 2 * npc_enc, w + 2 * npc_enc), layer=npc_layer + ) + ).move((-npc_enc, -npc_enc)) if "diff" in start_layer or "diff" in end_layer: n_p_enc = 0.125 nwell_enc = 0.18 - diff = c.add_ref(gf.components.rectangle(size=(l,w),layer = diff_layer)) - if "n_" in start_layer or "n_" in end_layer : - nsdm = c.add_ref(gf.components.rectangle(size=(l+2*n_p_enc,w+2*n_p_enc),layer=nsdm_layer)).move((-n_p_enc,-n_p_enc)) - else : - psdm = c.add_ref(gf.components.rectangle(size=(l+2*n_p_enc,w+2*n_p_enc),layer=psdm_layer)).move((-n_p_enc,-n_p_enc)) - nwell = c.add_ref(gf.components.rectangle(size=(l+2*nwell_enc,w+2*nwell_enc),layer=nwell_layer)).move((-nwell_enc,-nwell_enc)) + c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=diff_layer)) + if "n_" in start_layer or "n_" in end_layer: + c.add_ref( + gf.components.rectangle( + size=(l_vias + 2 * n_p_enc, w + 2 * n_p_enc), layer=nsdm_layer + ) + ).move((-n_p_enc, -n_p_enc)) + else: + c.add_ref( + gf.components.rectangle( + size=(l_vias + 2 * n_p_enc, w + 2 * n_p_enc), layer=psdm_layer + ) + ).move((-n_p_enc, -n_p_enc)) + c.add_ref( + gf.components.rectangle( + size=(l_vias + 2 * nwell_enc, w + 2 * nwell_enc), + layer=nwell_layer, + ) + ).move((-nwell_enc, -nwell_enc)) if "tap" in start_layer or "tap" in end_layer: n_p_enc = 0.125 nwell_enc = 0.18 - tap = c.add_ref(gf.components.rectangle(size=(l,w),layer = tap_layer)) + c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=tap_layer)) if "n_" in start_layer or "n_" in end_layer: - nsdm = c.add_ref(gf.components.rectangle(size=(l+2*n_p_enc,w+2*n_p_enc),layer=nsdm_layer)).move((-n_p_enc,-n_p_enc)) - nwell = c.add_ref(gf.components.rectangle(size=(l+2*nwell_enc,w+2*nwell_enc),layer=nwell_layer)).move((-nwell_enc,-nwell_enc)) - else : - psdm = c.add_ref(gf.components.rectangle(size=(l+2*n_p_enc,w+2*n_p_enc),layer=psdm_layer)).move((-n_p_enc,-n_p_enc)) + c.add_ref( + gf.components.rectangle( + size=(l_vias + 2 * n_p_enc, w + 2 * n_p_enc), layer=nsdm_layer + ) + ).move((-n_p_enc, -n_p_enc)) + c.add_ref( + gf.components.rectangle( + size=(l_vias + 2 * nwell_enc, w + 2 * nwell_enc), + layer=nwell_layer, + ) + ).move((-nwell_enc, -nwell_enc)) + else: + c.add_ref( + gf.components.rectangle( + size=(l_vias + 2 * n_p_enc, w + 2 * n_p_enc), layer=psdm_layer + ) + ).move((-n_p_enc, -n_p_enc)) if level_1 <= 0 and level_2 >= 0: - li = c.add_ref(gf.components.rectangle(size=(l,w),layer = li_layer)) + c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=li_layer)) if level_1 <= 1 and level_2 >= 1: - m1 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m1_layer)) + c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m1_layer)) if level_1 <= 2 and level_2 >= 2: - m2 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m2_layer)) + c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m2_layer)) if level_1 <= 3 and level_2 >= 3: - m3 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m3_layer)) + c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m3_layer)) if level_1 <= 4 and level_2 >= 4: - m4 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m4_layer)) + c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m4_layer)) if level_1 <= 5 and level_2 >= 5: - m5 = c.add_ref(gf.components.rectangle(size=(l,w),layer = m5_layer)) + c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m5_layer)) - if level_1 <= -1 and level_2 > -1 : + if level_1 <= -1 and level_2 > -1: + licon_size = (0.17, 0.17) + + licon_spacing = (0.17, 0.17) - - licon_size = (0.17,0.17) - - licon_spacing = (0.17,0.17) - if start_layer == "poly": - licon_enc = (0.08,0.05) - elif "diff" in start_layer : - licon_enc = (0.12,0.06) #(0.06,0.04) - elif "tap" in start_layer : - licon_enc = (0.12,0.06) - - - - licon = via_generator(x_range=(0,l),y_range=(0,w),via_size=licon_size,via_layer=licon_layer,via_enclosure=licon_enc,via_spacing=licon_spacing) + licon_enc = (0.08, 0.05) + elif "diff" in start_layer: + licon_enc = (0.12, 0.06) # (0.06,0.04) + elif "tap" in start_layer: + licon_enc = (0.12, 0.06) + + licon = via_generator( + x_range=(0, l_vias), + y_range=(0, w), + via_size=licon_size, + via_layer=licon_layer, + via_enclosure=licon_enc, + via_spacing=licon_spacing, + ) c.add_ref(licon) - - if level_1 <= 0 and level_2 > 0 : - mcon_size = (0.17,0.17) - mcon_enc = (0.06,0.03) - mcon_spacing = (0.19,0.19) - - - mcon = via_generator(x_range=(0,l),y_range=(0,w),via_size=mcon_size,via_layer=mcon_layer,via_enclosure=mcon_enc,via_spacing=mcon_spacing) - c.add_ref(mcon) - if level_1 <= 1 and level_2 > 1 : - via1_size = (0.15,0.15) - via1_enc = (0.085,0.055) - via1_spacing = (0.17,0.17) - - + if level_1 <= 0 and level_2 > 0: + mcon_size = (0.17, 0.17) + mcon_enc = (0.06, 0.03) + mcon_spacing = (0.19, 0.19) + + mcon = via_generator( + x_range=(0, l_vias), + y_range=(0, w), + via_size=mcon_size, + via_layer=mcon_layer, + via_enclosure=mcon_enc, + via_spacing=mcon_spacing, + ) + c.add_ref(mcon) - via1 = via_generator(x_range=(0,l),y_range=(0,w),via_size=via1_size,via_layer=via1_layer,via_enclosure=via1_enc,via_spacing=via1_spacing) + if level_1 <= 1 and level_2 > 1: + via1_size = (0.15, 0.15) + via1_enc = (0.085, 0.055) + via1_spacing = (0.17, 0.17) + + via1 = via_generator( + x_range=(0, l_vias), + y_range=(0, w), + via_size=via1_size, + via_layer=via1_layer, + via_enclosure=via1_enc, + via_spacing=via1_spacing, + ) c.add_ref(via1) - if level_1 <= 2 and level_2 > 2 : - via2_size = (0.2,0.2) - via2_enc = (0.085,0.065) - via2_spacing = (0.2,0.2) - - - via2 = via_generator(x_range=(0,l),y_range=(0,w),via_size=via2_size,via_layer=via2_layer,via_enclosure=via2_enc,via_spacing=via2_spacing) + if level_1 <= 2 and level_2 > 2: + via2_size = (0.2, 0.2) + via2_enc = (0.085, 0.065) + via2_spacing = (0.2, 0.2) + + via2 = via_generator( + x_range=(0, l_vias), + y_range=(0, w), + via_size=via2_size, + via_layer=via2_layer, + via_enclosure=via2_enc, + via_spacing=via2_spacing, + ) c.add_ref(via2) - if level_1 <= 3 and level_2 > 3 : - via3_size = (0.2,0.2) - via3_enc = (0.09,0.065) - via3_spacing = (0.2,0.2) - - - via3 = via_generator(x_range=(0,l),y_range=(0,w),via_size=via3_size,via_layer=via3_layer,via_enclosure=via3_enc,via_spacing=via3_spacing) + if level_1 <= 3 and level_2 > 3: + via3_size = (0.2, 0.2) + via3_enc = (0.09, 0.065) + via3_spacing = (0.2, 0.2) + + via3 = via_generator( + x_range=(0, l_vias), + y_range=(0, w), + via_size=via3_size, + via_layer=via3_layer, + via_enclosure=via3_enc, + via_spacing=via3_spacing, + ) c.add_ref(via3) - if level_1 <= 4 and level_2 > 4 : - via4_size = (0.8,0.8) - via4_enc = (0.31,0.31) - via4_spacing = (0.8,0.8) - - via4 = via_generator(x_range=(0,l),y_range=(0,w),via_size=via4_size,via_layer=via4_layer,via_enclosure=via4_enc,via_spacing=via4_spacing) + if level_1 <= 4 and level_2 > 4: + via4_size = (0.8, 0.8) + via4_enc = (0.31, 0.31) + via4_spacing = (0.8, 0.8) + + via4 = via_generator( + x_range=(0, l_vias), + y_range=(0, w), + via_size=via4_size, + via_layer=via4_layer, + via_enclosure=via4_enc, + via_spacing=via4_spacing, + ) c.add_ref(via4) - - # creating layout and cell in klayout + + # creating layout and cell in klayout c.write_gds("vias_temp.gds") layout.read("vias_temp.gds") cell_name = "via" - + return layout.cell(cell_name) - #return c + # return c + -# testing the generated methods +# testing the generated methods if __name__ == "__main__": - c = vias_gen_draw(start_layer="li",end_layer="poly") + c = vias_gen_draw(start_layer="li", end_layer="poly") c.show() - \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/vias.py b/sky130/cells/klayout/pymacros/cells/vias.py index 704a4da23..7a8af67fe 100644 --- a/sky130/cells/klayout/pymacros/cells/vias.py +++ b/sky130/cells/klayout/pymacros/cells/vias.py @@ -1,15 +1,15 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . @@ -18,166 +18,150 @@ ######################################################################################################################## import pya -from .via_generator import * -licon_size = (0.17,0.17) - -licon_spacing = (0.17,0.17) +from .via_generator import vias_gen_draw + +licon_size = (0.17, 0.17) -mcon_size = (0.17,0.17) -mcon_enc = (0.06,0.03) -mcon_spacing = (0.19,0.19) +licon_spacing = (0.17, 0.17) -via1_size = (0.15,0.15) -via1_enc = (0.085,0.055) -via1_spacing = (0.17,0.17) +mcon_size = (0.17, 0.17) +mcon_enc = (0.06, 0.03) +mcon_spacing = (0.19, 0.19) -via2_size = (0.2,0.2) -via2_enc = (0.085,0.065) -via2_spacing = (0.2,0.2) +via1_size = (0.15, 0.15) +via1_enc = (0.085, 0.055) +via1_spacing = (0.17, 0.17) -via3_size = (0.2,0.2) -via3_enc = (0.09,0.065) -via3_spacing = (0.2,0.2) +via2_size = (0.2, 0.2) +via2_enc = (0.085, 0.065) +via2_spacing = (0.2, 0.2) -via4_size = (0.8,0.8) -via4_enc = (0.31,0.31) -via4_spacing = (0.8,0.8) +via3_size = (0.2, 0.2) +via3_enc = (0.09, 0.065) +via3_spacing = (0.2, 0.2) + +via4_size = (0.8, 0.8) +via4_enc = (0.31, 0.31) +via4_spacing = (0.8, 0.8) class vias_gen(pya.PCellDeclarationHelper): """ Vias Generator for Skywater130 """ + def __init__(self): # Initialize super class. - super(vias_gen, self).__init__() + super().__init__() - #===================== PARAMETERS DECLARATIONS ===================== + # ===================== PARAMETERS DECLARATIONS ===================== self.param("l", self.TypeDouble, "length", default=1, unit="um") self.param("w", self.TypeDouble, "width", default=1, unit="um") - - self.Type_handle = self.param("start_layer", self.TypeList, "Start Layer") - self.Type_handle.add_choice("poly","poly") - self.Type_handle.add_choice("p_tap","p_tap") - self.Type_handle.add_choice("n_tap","n_tap") - self.Type_handle.add_choice("p_diff","p_diff") - self.Type_handle.add_choice("n_diff","n_diff") - self.Type_handle.add_choice("li","li") - self.Type_handle.add_choice("metal1","metal1") - self.Type_handle.add_choice("metal2","metal2") - self.Type_handle.add_choice("metal3","metal3") - self.Type_handle.add_choice("metal4","metal4") - - self.Type_handle = self.param("end_layer", self.TypeList, "End Layer") - self.Type_handle.add_choice("li","li") - self.Type_handle.add_choice("metal1","metal1") - self.Type_handle.add_choice("metal2","metal2") - self.Type_handle.add_choice("metal3","metal3") - self.Type_handle.add_choice("metal4","metal4") - self.Type_handle.add_choice("metal5","metal5") - - + + self.Type_handle = self.param("start_layer", self.TypeList, "Start Layer") + self.Type_handle.add_choice("poly", "poly") + self.Type_handle.add_choice("p_tap", "p_tap") + self.Type_handle.add_choice("n_tap", "n_tap") + self.Type_handle.add_choice("p_diff", "p_diff") + self.Type_handle.add_choice("n_diff", "n_diff") + self.Type_handle.add_choice("li", "li") + self.Type_handle.add_choice("metal1", "metal1") + self.Type_handle.add_choice("metal2", "metal2") + self.Type_handle.add_choice("metal3", "metal3") + self.Type_handle.add_choice("metal4", "metal4") + + self.Type_handle = self.param("end_layer", self.TypeList, "End Layer") + self.Type_handle.add_choice("li", "li") + self.Type_handle.add_choice("metal1", "metal1") + self.Type_handle.add_choice("metal2", "metal2") + self.Type_handle.add_choice("metal3", "metal3") + self.Type_handle.add_choice("metal4", "metal4") + self.Type_handle.add_choice("metal5", "metal5") def display_text_impl(self): # Provide a descriptive text for the cell - return "via (L=" + ('%.3f' % self.l) + ",W=" + ('%.3f' % self.w) + ")" - + return "via (L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" + def coerce_parameters_impl(self): # We employ coerce_parameters_impl to decide whether the handle or the # numeric parameter has changed (by comparing against the effective # radius ru) and set ru to the effective radius. We also update the # numerical value or the shape, depending on which on has not changed. - - base_layers = ["poly","n_diff","p_diff","n_tap","p_tap"] - metal_layers = ["li","metal1","metal2","metal3","metal4","metal5"] - if self.start_layer in base_layers : - level_1 = -1 - else : + base_layers = ["poly", "n_diff", "p_diff", "n_tap", "p_tap"] + metal_layers = ["li", "metal1", "metal2", "metal3", "metal4", "metal5"] + + if self.start_layer in base_layers: + level_1 = -1 + else: for i in range(len(metal_layers)): if self.start_layer == metal_layers[i]: level_1 = i - - if self.end_layer in base_layers : + + if self.end_layer in base_layers: level_2 = -1 - else : + else: for i in range(len(metal_layers)): if self.end_layer == metal_layers[i]: level_2 = i - - #if level_1 < level_2 : + + # if level_1 < level_2 : # temp_layer = self.start_layer # self.start_layer = self.end_layer # self.end_layer = temp_layer - - if level_1 <= -1 and level_2 > -1 : + if level_1 <= -1 and level_2 > -1: if self.start_layer == "poly": - licon_enc = (0.08,0.05) - elif "diff" in self.start_layer : - licon_enc = (0.12,0.06) #(0.06,0.04) - elif "tap" in self.start_layer : - licon_enc = (0.12,0.06) - else : - licon_enc = (0.12,0.12) - - if self.l < (licon_size[0]+2*licon_enc[0]): - self.l = licon_size[0]+2*licon_enc[0] - - - if self.w < (licon_size[1]+2*licon_enc[1]): - self.w = licon_size[1]+2*licon_enc[1] - - if level_1 <= 0 and level_2 > 0 : - - if self.l < (mcon_size[0]+2*mcon_enc[0]): - self.l = mcon_size[0]+2*mcon_enc[0] - - - if self.w < (mcon_size[1]+2*mcon_enc[1]): - self.w = mcon_size[1]+2*mcon_enc[1] - - if level_1 <= 1 and level_2 > 1 : - - if self.l < (via1_size[0]+2*via1_enc[0]): - self.l = via1_size[0]+2*via1_enc[0] - - - if self.w < (via1_size[1]+2*via1_enc[1]): - self.w = via1_size[1]+2*via1_enc[1] - - if level_1 <= 2 and level_2 > 2 : - - if self.l < (via2_size[0]+2*via2_enc[0]): - self.l = via2_size[0]+2*via2_enc[0] - - - if self.w < (via2_size[1]+2*via2_enc[1]): - self.w = via2_size[1]+2*via2_enc[1] - - if level_1 <= 3 and level_2 > 3 : - - if self.l < (via3_size[0]+2*via3_enc[0]): - self.l = (via3_size[0]+2*via3_enc[0]) - - - if self.w < (via3_size[1]+2*via3_enc[1]): - self.w = via3_size[1]+2*via3_enc[1] - - if level_1 <= 4 and level_2 > 4 : - - if self.l < (via4_size[0]+2*via4_enc[0]): - self.l = via4_size[0]+2*via4_enc[0] - - - if self.w < (via4_size[1]+2*via4_enc[1]): - self.w = via4_size[1]+2*via4_enc[1] - - + licon_enc = (0.08, 0.05) + elif "diff" in self.start_layer: + licon_enc = (0.12, 0.06) # (0.06,0.04) + elif "tap" in self.start_layer: + licon_enc = (0.12, 0.06) + else: + licon_enc = (0.12, 0.12) + + if self.l < (licon_size[0] + 2 * licon_enc[0]): + self.l = licon_size[0] + 2 * licon_enc[0] + + if self.w < (licon_size[1] + 2 * licon_enc[1]): + self.w = licon_size[1] + 2 * licon_enc[1] + if level_1 <= 0 and level_2 > 0: + if self.l < (mcon_size[0] + 2 * mcon_enc[0]): + self.l = mcon_size[0] + 2 * mcon_enc[0] + if self.w < (mcon_size[1] + 2 * mcon_enc[1]): + self.w = mcon_size[1] + 2 * mcon_enc[1] + + if level_1 <= 1 and level_2 > 1: + if self.l < (via1_size[0] + 2 * via1_enc[0]): + self.l = via1_size[0] + 2 * via1_enc[0] + + if self.w < (via1_size[1] + 2 * via1_enc[1]): + self.w = via1_size[1] + 2 * via1_enc[1] + + if level_1 <= 2 and level_2 > 2: + if self.l < (via2_size[0] + 2 * via2_enc[0]): + self.l = via2_size[0] + 2 * via2_enc[0] + + if self.w < (via2_size[1] + 2 * via2_enc[1]): + self.w = via2_size[1] + 2 * via2_enc[1] + + if level_1 <= 3 and level_2 > 3: + if self.l < (via3_size[0] + 2 * via3_enc[0]): + self.l = via3_size[0] + 2 * via3_enc[0] + + if self.w < (via3_size[1] + 2 * via3_enc[1]): + self.w = via3_size[1] + 2 * via3_enc[1] + + if level_1 <= 4 and level_2 > 4: + if self.l < (via4_size[0] + 2 * via4_enc[0]): + self.l = via4_size[0] + 2 * via4_enc[0] + + if self.w < (via4_size[1] + 2 * via4_enc[1]): + self.w = via4_size[1] + 2 * via4_enc[1] def can_create_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we can use any shape which @@ -189,20 +173,27 @@ def parameters_from_shape_impl(self): # bounding box width and layer self.r = self.shape.bbox().width() * self.layout.dbu / 2 self.l = self.layout.get_info(self.layer) - + def transformation_from_shape_impl(self): # Implement the "Create PCell from shape" protocol: we use the center of the shape's # bounding box to determine the transformation return pya.Trans(self.shape.bbox().center()) def produce_impl(self): - instance = vias_gen_draw(layout= self.layout , l=self.l, w=self.w, start_layer=self.start_layer, end_layer=self.end_layer) - write_cells = pya.CellInstArray(instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0), 1, 1) + instance = vias_gen_draw( + layout=self.layout, + l_vias=self.l, + w=self.w, + start_layer=self.start_layer, + end_layer=self.end_layer, + ) + write_cells = pya.CellInstArray( + instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.insert(write_cells) self.cell.flatten(1) - - - - - \ No newline at end of file diff --git a/sky130/cells/klayout/pymacros/cells/vpp.py b/sky130/cells/klayout/pymacros/cells/vpp.py index 120d8b4b6..7724e25bf 100644 --- a/sky130/cells/klayout/pymacros/cells/vpp.py +++ b/sky130/cells/klayout/pymacros/cells/vpp.py @@ -1,26 +1,28 @@ -# Copyright 2022 Skywater 130nm pdk development +# Copyright 2022 Skywater 130nm pdk development # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . ######################################################################################################################## -# VPP CAP Generator for skywater130 +# VPP CAP Generator for skywater130 ######################################################################################################################## import pya -from .draw_vpp import * -from .globals import * + +from .draw_vpp import draw_vpp +from .globals import VPP_CAP_DEV + class cap_vpp(pya.PCellDeclarationHelper): """ @@ -28,30 +30,38 @@ class cap_vpp(pya.PCellDeclarationHelper): """ def __init__(self): - # Important: initialize the super class - super(cap_vpp, self).__init__() + super().__init__() self.Type_handle = self.param("Type", self.TypeList, "Type") - - for i in range(len(VPP_CAP_DEV)) : + for i in range(len(VPP_CAP_DEV)): self.Type_handle.add_choice(VPP_CAP_DEV[i], VPP_CAP_DEV[i]) - - - self.param("Model", self.TypeString, "Model", default="sky130_fd_pr__cap_vpp",readonly=True) + + self.param( + "Model", + self.TypeString, + "Model", + default="sky130_fd_pr__cap_vpp", + readonly=True, + ) def display_text_impl(self): # Provide a descriptive text for the cell return str(self.Type) def produce_impl(self): - # This is the main part of the implementation: create the layout - self.percision = 1/self.layout.dbu - vpp_instance = draw_vpp(layout=self.layout,device_name=self.Type) - write_cells = pya.CellInstArray(vpp_instance.cell_index(), pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), pya.Vector(0, 0),1 , 1) + self.percision = 1 / self.layout.dbu + vpp_instance = draw_vpp(layout=self.layout, device_name=self.Type) + write_cells = pya.CellInstArray( + vpp_instance.cell_index(), + pya.Trans(pya.Point(0, 0)), + pya.Vector(0, 0), + pya.Vector(0, 0), + 1, + 1, + ) self.cell.flatten(1) - self.cell.insert(write_cells) - self.layout.cleanup() \ No newline at end of file + self.cell.insert(write_cells) + self.layout.cleanup() From 41224c5a00887e593ae6dfeaae9b184fc8c1dfc6 Mon Sep 17 00:00:00 2001 From: RehabSayed-G Date: Thu, 14 Dec 2023 11:40:49 +0200 Subject: [PATCH 03/11] fix sky130.lym triailing whitspaces --- sky130/cells/klayout/pymacros/sky130.lym | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sky130/cells/klayout/pymacros/sky130.lym b/sky130/cells/klayout/pymacros/sky130.lym index 7916c66fb..713cc161c 100644 --- a/sky130/cells/klayout/pymacros/sky130.lym +++ b/sky130/cells/klayout/pymacros/sky130.lym @@ -6,12 +6,12 @@ # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. -# +# # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . --> From 1176d9f65676967288025246d7d43741fc3ed520 Mon Sep 17 00:00:00 2001 From: daquintero Date: Wed, 22 May 2024 12:05:18 +0200 Subject: [PATCH 04/11] :arrow_up: Latest efabless PDK and compatibility with latest gdsfactory --- .gitignore | 1 + .gitmodules | 6 + .python-version | 1 + docs/notebooks/intro.py | 51 +- scratch.py | 0 sky130/cells/klayout/pymacros/README.md | 3 - .../cells/klayout/pymacros/cells/draw_bjt.py | 57 - .../cells/klayout/pymacros/cells/draw_cap.py | 383 - .../klayout/pymacros/cells/draw_diode.py | 455 - .../klayout/pymacros/cells/draw_guard_ring.py | 156 - .../cells/klayout/pymacros/cells/draw_vpp.py | 38 - ...fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds | Bin 4314 -> 0 bytes ..._02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds | Bin 6406 -> 0 bytes ..._02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds | Bin 7942 -> 0 bytes ..._02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds | Bin 11142 -> 0 bytes ..._02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds | Bin 17542 -> 0 bytes ...02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds | Bin 8998 -> 0 bytes ...ap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds | Bin 4426 -> 0 bytes ..._pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds | Bin 11614 -> 0 bytes ...pp_04p4x04p6_l1m1m2_noshield_o2subcell.gds | Bin 10830 -> 0 bytes ..._vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds | Bin 17742 -> 0 bytes ...fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds | Bin 9594 -> 0 bytes ...pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds | Bin 6508 -> 0 bytes ...fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds | Bin 10410 -> 0 bytes ..._pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds | Bin 14238 -> 0 bytes ...pp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds | Bin 15042 -> 0 bytes ...4p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds | Bin 15720 -> 0 bytes ..._05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds | Bin 14358 -> 0 bytes ..._cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds | Bin 27076 -> 0 bytes ..._vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds | Bin 27742 -> 0 bytes ...r__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds | Bin 20560 -> 0 bytes ...ap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds | Bin 21222 -> 0 bytes ..._pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds | Bin 22942 -> 0 bytes ...pp_08p6x07p8_l1m1m2_noshield_o2subcell.gds | Bin 15830 -> 0 bytes ..._vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds | Bin 34958 -> 0 bytes ...fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds | Bin 12456 -> 0 bytes ...fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds | Bin 20650 -> 0 bytes ..._pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds | Bin 26974 -> 0 bytes ...pp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds | Bin 28438 -> 0 bytes ...8p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds | Bin 29116 -> 0 bytes ..._11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds | Bin 37750 -> 0 bytes ..._vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds | Bin 103952 -> 0 bytes ...p_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds | Bin 104478 -> 0 bytes ..._pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds | Bin 33484 -> 0 bytes ...r__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds | Bin 50480 -> 0 bytes ...r__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds | Bin 50528 -> 0 bytes ...ap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds | Bin 51190 -> 0 bytes ..._cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds | Bin 59108 -> 0 bytes ..._vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds | Bin 59774 -> 0 bytes ..._cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds | Bin 61716 -> 0 bytes ..._vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds | Bin 62382 -> 0 bytes ...ap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds | Bin 70296 -> 0 bytes ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds | Bin 70966 -> 0 bytes ..._vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds | Bin 70300 -> 0 bytes ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds | Bin 71306 -> 0 bytes ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds | Bin 71242 -> 0 bytes ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds | Bin 71562 -> 0 bytes ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds | Bin 71498 -> 0 bytes ...p_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds | Bin 70966 -> 0 bytes ...fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds | Bin 25320 -> 0 bytes ...fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds | Bin 29656 -> 0 bytes ..._pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds | Bin 40972 -> 0 bytes ...pp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds | Bin 43424 -> 0 bytes ...1p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds | Bin 44102 -> 0 bytes ..._cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds | Bin 55252 -> 0 bytes ..._vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds | Bin 55918 -> 0 bytes ...r__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds | Bin 48080 -> 0 bytes ...fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds | Bin 47560 -> 0 bytes ..._vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 32786 -> 0 bytes ..._vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 32786 -> 0 bytes ..._vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 62994 -> 0 bytes ..._vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 62994 -> 0 bytes ..._vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 94290 -> 0 bytes ..._vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 94290 -> 0 bytes ..._vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 124882 -> 0 bytes ..._vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 125244 -> 0 bytes ..._vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds | Bin 156242 -> 0 bytes ...x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds | Bin 156258 -> 0 bytes ..._vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds | Bin 156242 -> 0 bytes ...x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds | Bin 156258 -> 0 bytes ...55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds | Bin 156250 -> 0 bytes .../npn/sky130_fd_pr__npn_05v5_W1p00L1p00.gds | Bin 21918 -> 0 bytes .../npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds | Bin 24414 -> 0 bytes .../npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds | Bin 24372 -> 0 bytes .../pnp/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds | Bin 7866 -> 0 bytes .../pnp/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds | Bin 28274 -> 0 bytes .../photodiode/sky130_fd_pr__photodiode.gds | Bin 31608 -> 0 bytes .../sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds | Bin 47088 -> 0 bytes .../sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds | Bin 60208 -> 0 bytes .../sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds | Bin 44464 -> 0 bytes .../sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds | Bin 52336 -> 0 bytes .../sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds | Bin 69488 -> 0 bytes .../sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds | Bin 77040 -> 0 bytes .../rf_coils/sky130_fd_pr__rf_test_coil1.gds | Bin 6616 -> 0 bytes .../rf_coils/sky130_fd_pr__rf_test_coil2.gds | Bin 18400 -> 0 bytes .../rf_coils/sky130_fd_pr__rf_test_coil3.gds | Bin 26784 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds | Bin 7778 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds | Bin 7778 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds | Bin 7778 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds | Bin 11042 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds | Bin 11042 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds | Bin 11042 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds | Bin 15202 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds | Bin 15586 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds | Bin 15586 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds | Bin 10574 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds | Bin 10574 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds | Bin 10958 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds | Bin 15612 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds | Bin 15740 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds | Bin 15996 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds | Bin 22076 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds | Bin 22204 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds | Bin 22460 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds | Bin 11138 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds | Bin 11218 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds | Bin 11218 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds | Bin 14706 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds | Bin 14706 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds | Bin 14706 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds | Bin 20210 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds | Bin 20210 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds | Bin 20210 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds | Bin 15038 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds | Bin 15550 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds | Bin 15614 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds | Bin 20492 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds | Bin 21004 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds | Bin 21068 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds | Bin 27724 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds | Bin 28236 -> 0 bytes ...130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds | Bin 28300 -> 0 bytes ...30_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds | Bin 22374 -> 0 bytes ...30_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds | Bin 32292 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds | Bin 3828 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds | Bin 4276 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds | Bin 4808 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds | Bin 6516 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds | Bin 5720 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds | Bin 7344 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds | Bin 8152 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds | Bin 10992 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds | Bin 7800 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds | Bin 9464 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds | Bin 11256 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds | Bin 15032 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds | Bin 10200 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds | Bin 12808 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds | Bin 14168 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds | Bin 19464 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds | Bin 7850 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds | Bin 7850 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds | Bin 7850 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds | Bin 11114 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds | Bin 11114 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds | Bin 11114 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds | Bin 15658 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds | Bin 15658 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds | Bin 15082 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds | Bin 10646 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds | Bin 10646 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds | Bin 11030 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds | Bin 15684 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds | Bin 15812 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds | Bin 16068 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds | Bin 22148 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds | Bin 22276 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds | Bin 22532 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds | Bin 11210 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds | Bin 11290 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds | Bin 11290 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds | Bin 14778 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds | Bin 14778 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds | Bin 14778 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds | Bin 20282 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds | Bin 20282 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds | Bin 20282 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds | Bin 15110 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds | Bin 15622 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds | Bin 15686 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds | Bin 20564 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds | Bin 21076 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds | Bin 21140 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds | Bin 27796 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds | Bin 28308 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds | Bin 28372 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds | Bin 10058 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds | Bin 10138 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds | Bin 10138 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds | Bin 13050 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds | Bin 13050 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds | Bin 13050 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds | Bin 17594 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds | Bin 17594 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds | Bin 17594 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds | Bin 12902 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds | Bin 13190 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds | Bin 13254 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds | Bin 17428 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds | Bin 17684 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds | Bin 17748 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds | Bin 23060 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds | Bin 23316 -> 0 bytes ...fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds | Bin 23380 -> 0 bytes ...30_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds | Bin 20390 -> 0 bytes ...30_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds | Bin 29682 -> 0 bytes .../sky130_fd_pr__rf_nfet_20v0_aup.gds | Bin 105426 -> 0 bytes .../sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds | Bin 181086 -> 0 bytes .../sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds | Bin 106004 -> 0 bytes ...130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds | Bin 181162 -> 0 bytes ...ky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds | Bin 120878 -> 0 bytes ...0_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds | Bin 241710 -> 0 bytes .../sky130_fd_pr__rf_nfet_20v0_withptap.gds | Bin 120174 -> 0 bytes ...ky130_fd_pr__rf_nfet_20v0_withptap_iso.gds | Bin 241526 -> 0 bytes ...ky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds | Bin 91840 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds | Bin 17836 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds | Bin 23148 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds | Bin 29906 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds | Bin 31640 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds | Bin 42882 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds | Bin 56638 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds | Bin 16910 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds | Bin 22838 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds | Bin 22740 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds | Bin 30588 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds | Bin 38370 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds | Bin 41216 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds | Bin 53522 -> 0 bytes ...d_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds | Bin 68622 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds | Bin 4262 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds | Bin 5222 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds | Bin 5178 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds | Bin 6502 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds | Bin 8614 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds | Bin 6986 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds | Bin 8482 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds | Bin 8778 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds | Bin 10698 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds | Bin 13898 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds | Bin 9642 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds | Bin 11242 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds | Bin 12138 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds | Bin 14826 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds | Bin 12106 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds | Bin 14154 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds | Bin 7830 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds | Bin 7830 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds | Bin 7830 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds | Bin 11094 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds | Bin 11094 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds | Bin 11094 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds | Bin 15638 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds | Bin 15638 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds | Bin 15702 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds | Bin 10626 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds | Bin 10626 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds | Bin 11010 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds | Bin 15616 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds | Bin 15744 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds | Bin 16000 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds | Bin 22080 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds | Bin 22208 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds | Bin 22464 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds | Bin 11190 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds | Bin 11270 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds | Bin 11270 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds | Bin 14758 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds | Bin 14758 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds | Bin 14758 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds | Bin 20262 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds | Bin 20262 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds | Bin 20262 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds | Bin 15090 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds | Bin 15602 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds | Bin 15666 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds | Bin 20544 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds | Bin 21056 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds | Bin 21120 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds | Bin 27776 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds | Bin 28288 -> 0 bytes ...130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds | Bin 28352 -> 0 bytes ...30_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds | Bin 22432 -> 0 bytes ...30_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds | Bin 32256 -> 0 bytes ...fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds | Bin 11294 -> 0 bytes ...fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds | Bin 11678 -> 0 bytes ...fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds | Bin 15838 -> 0 bytes ...fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds | Bin 16222 -> 0 bytes ...fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds | Bin 15690 -> 0 bytes ...fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds | Bin 16202 -> 0 bytes ...fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds | Bin 22154 -> 0 bytes ...fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds | Bin 22666 -> 0 bytes ...30_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds | Bin 20972 -> 0 bytes ...30_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds | Bin 29100 -> 0 bytes ...fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds | Bin 4334 -> 0 bytes .../sky130_fd_pr__rf_pfet_20v0_withptap.gds | Bin 271496 -> 0 bytes .../klayout/pymacros/cells/parent_res.py | 265 - .../klayout/pymacros/cells/res_diff_child.py | 723 - .../klayout/pymacros/cells/res_metal_child.py | 110 - .../klayout/pymacros/cells/res_poly_child.py | 571 - .../klayout/pymacros/cells/via_generator.py | 598 - sky130/cells/klayout/pymacros/sky130.lym | 50 - sky130/compile_components.py | 106 + sky130/components.py | 9093 +++----- sky130/config.py | 22 +- sky130/gds/sky130_fd_sc_hd__a2111o_1.gds | Bin 8838 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2111o_2.gds | Bin 9206 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2111o_4.gds | Bin 12500 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2111oi_0.gds | Bin 7594 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2111oi_1.gds | Bin 7928 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2111oi_2.gds | Bin 8374 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2111oi_4.gds | Bin 14310 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a211o_1.gds | Bin 6490 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a211o_2.gds | Bin 6708 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a211o_4.gds | Bin 9204 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a211oi_1.gds | Bin 6794 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a211oi_2.gds | Bin 9088 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a211oi_4.gds | Bin 10726 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21bo_1.gds | Bin 7690 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21bo_2.gds | Bin 6440 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21bo_4.gds | Bin 8392 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21boi_0.gds | Bin 5322 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21boi_1.gds | Bin 6382 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21boi_2.gds | Bin 6778 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21boi_4.gds | Bin 9578 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21o_1.gds | Bin 6134 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21o_2.gds | Bin 5698 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21o_4.gds | Bin 8308 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21oi_1.gds | Bin 4814 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21oi_2.gds | Bin 6008 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a21oi_4.gds | Bin 8678 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a221o_1.gds | Bin 7276 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a221o_2.gds | Bin 7820 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a221o_4.gds | Bin 12334 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a221oi_1.gds | Bin 6716 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a221oi_2.gds | Bin 9320 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a221oi_4.gds | Bin 13368 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a222oi_1.gds | Bin 7222 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a22o_1.gds | Bin 6732 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a22o_2.gds | Bin 6892 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a22o_4.gds | Bin 9818 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a22oi_1.gds | Bin 5758 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a22oi_2.gds | Bin 8630 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a22oi_4.gds | Bin 12136 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2bb2o_1.gds | Bin 7314 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2bb2o_2.gds | Bin 7874 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2bb2o_4.gds | Bin 11550 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2bb2oi_1.gds | Bin 6994 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2bb2oi_2.gds | Bin 8944 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a2bb2oi_4.gds | Bin 14388 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a311o_1.gds | Bin 6652 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a311o_2.gds | Bin 7464 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a311o_4.gds | Bin 11866 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a311oi_1.gds | Bin 6300 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a311oi_2.gds | Bin 10464 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a311oi_4.gds | Bin 15692 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a31o_1.gds | Bin 6630 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a31o_2.gds | Bin 6632 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a31o_4.gds | Bin 10006 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a31oi_1.gds | Bin 5390 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a31oi_2.gds | Bin 9146 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a31oi_4.gds | Bin 13010 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a32o_1.gds | Bin 7518 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a32o_2.gds | Bin 8526 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a32o_4.gds | Bin 12280 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a32oi_1.gds | Bin 6110 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a32oi_2.gds | Bin 11378 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a32oi_4.gds | Bin 16306 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a41o_1.gds | Bin 8026 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a41o_2.gds | Bin 8398 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a41o_4.gds | Bin 12610 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a41oi_1.gds | Bin 6866 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a41oi_2.gds | Bin 10214 -> 0 bytes sky130/gds/sky130_fd_sc_hd__a41oi_4.gds | Bin 16690 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and2_0.gds | Bin 4566 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and2_1.gds | Bin 4986 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and2_2.gds | Bin 5530 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and2_4.gds | Bin 5830 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and2b_1.gds | Bin 5620 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and2b_2.gds | Bin 5748 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and2b_4.gds | Bin 5802 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and3_1.gds | Bin 7250 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and3_2.gds | Bin 5956 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and3_4.gds | Bin 6980 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and3b_1.gds | Bin 6486 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and3b_2.gds | Bin 6680 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and3b_4.gds | Bin 6728 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and4_1.gds | Bin 6498 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and4_2.gds | Bin 7362 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and4_4.gds | Bin 7534 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and4b_1.gds | Bin 7698 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and4b_2.gds | Bin 8356 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and4b_4.gds | Bin 7822 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and4bb_1.gds | Bin 8486 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and4bb_2.gds | Bin 8082 -> 0 bytes sky130/gds/sky130_fd_sc_hd__and4bb_4.gds | Bin 8804 -> 0 bytes sky130/gds/sky130_fd_sc_hd__buf_1.gds | Bin 4050 -> 0 bytes sky130/gds/sky130_fd_sc_hd__buf_12.gds | Bin 11278 -> 0 bytes sky130/gds/sky130_fd_sc_hd__buf_16.gds | Bin 15620 -> 0 bytes sky130/gds/sky130_fd_sc_hd__buf_2.gds | Bin 4578 -> 0 bytes sky130/gds/sky130_fd_sc_hd__buf_4.gds | Bin 5490 -> 0 bytes sky130/gds/sky130_fd_sc_hd__buf_6.gds | Bin 7120 -> 0 bytes sky130/gds/sky130_fd_sc_hd__buf_8.gds | Bin 8974 -> 0 bytes sky130/gds/sky130_fd_sc_hd__bufbuf_16.gds | Bin 18348 -> 0 bytes sky130/gds/sky130_fd_sc_hd__bufbuf_8.gds | Bin 10618 -> 0 bytes sky130/gds/sky130_fd_sc_hd__bufinv_16.gds | Bin 16972 -> 0 bytes sky130/gds/sky130_fd_sc_hd__bufinv_8.gds | Bin 10298 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkbuf_1.gds | Bin 3896 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkbuf_16.gds | Bin 12806 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkbuf_2.gds | Bin 4680 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkbuf_4.gds | Bin 5302 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkbuf_8.gds | Bin 7900 -> 0 bytes .../gds/sky130_fd_sc_hd__clkdlybuf4s15_1.gds | Bin 6272 -> 0 bytes .../gds/sky130_fd_sc_hd__clkdlybuf4s15_2.gds | Bin 6718 -> 0 bytes .../gds/sky130_fd_sc_hd__clkdlybuf4s18_1.gds | Bin 6380 -> 0 bytes .../gds/sky130_fd_sc_hd__clkdlybuf4s18_2.gds | Bin 6262 -> 0 bytes .../gds/sky130_fd_sc_hd__clkdlybuf4s25_1.gds | Bin 6272 -> 0 bytes .../gds/sky130_fd_sc_hd__clkdlybuf4s25_2.gds | Bin 6764 -> 0 bytes .../gds/sky130_fd_sc_hd__clkdlybuf4s50_1.gds | Bin 6304 -> 0 bytes .../gds/sky130_fd_sc_hd__clkdlybuf4s50_2.gds | Bin 6752 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkinv_1.gds | Bin 3920 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkinv_16.gds | Bin 13134 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkinv_2.gds | Bin 4388 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkinv_4.gds | Bin 5952 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkinv_8.gds | Bin 9336 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkinvlp_2.gds | Bin 3738 -> 0 bytes sky130/gds/sky130_fd_sc_hd__clkinvlp_4.gds | Bin 5188 -> 0 bytes sky130/gds/sky130_fd_sc_hd__conb_1.gds | Bin 6766 -> 0 bytes sky130/gds/sky130_fd_sc_hd__decap_12.gds | Bin 4224 -> 0 bytes sky130/gds/sky130_fd_sc_hd__decap_3.gds | Bin 2750 -> 0 bytes sky130/gds/sky130_fd_sc_hd__decap_4.gds | Bin 2878 -> 0 bytes sky130/gds/sky130_fd_sc_hd__decap_6.gds | Bin 3230 -> 0 bytes sky130/gds/sky130_fd_sc_hd__decap_8.gds | Bin 3614 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfbbn_1.gds | Bin 19682 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfbbn_2.gds | Bin 20130 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfbbp_1.gds | Bin 19150 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfrbp_1.gds | Bin 17770 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfrbp_2.gds | Bin 18498 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfrtn_1.gds | Bin 15246 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfrtp_1.gds | Bin 15372 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfrtp_2.gds | Bin 16228 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfrtp_4.gds | Bin 18008 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfsbp_1.gds | Bin 17898 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfsbp_2.gds | Bin 19000 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfstp_1.gds | Bin 15674 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfstp_2.gds | Bin 16244 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfstp_4.gds | Bin 17806 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfxbp_1.gds | Bin 14106 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfxbp_2.gds | Bin 15214 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfxtp_1.gds | Bin 12206 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfxtp_2.gds | Bin 12638 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dfxtp_4.gds | Bin 14238 -> 0 bytes sky130/gds/sky130_fd_sc_hd__diode_2.gds | Bin 3586 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlclkp_1.gds | Bin 10112 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlclkp_2.gds | Bin 10400 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlclkp_4.gds | Bin 12932 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrbn_1.gds | Bin 13888 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrbn_2.gds | Bin 13486 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrbp_1.gds | Bin 13368 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrbp_2.gds | Bin 14986 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrtn_1.gds | Bin 11712 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrtn_2.gds | Bin 11538 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrtn_4.gds | Bin 12858 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrtp_1.gds | Bin 10882 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrtp_2.gds | Bin 11326 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlrtp_4.gds | Bin 12854 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlxbn_1.gds | Bin 13134 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlxbn_2.gds | Bin 13000 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlxbp_1.gds | Bin 12630 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlxtn_1.gds | Bin 10746 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlxtn_2.gds | Bin 10216 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlxtn_4.gds | Bin 11836 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlxtp_1.gds | Bin 10294 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlygate4sd1_1.gds | Bin 5552 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlygate4sd2_1.gds | Bin 6010 -> 0 bytes sky130/gds/sky130_fd_sc_hd__dlygate4sd3_1.gds | Bin 6070 -> 0 bytes .../gds/sky130_fd_sc_hd__dlymetal6s2s_1.gds | Bin 7928 -> 0 bytes .../gds/sky130_fd_sc_hd__dlymetal6s4s_1.gds | Bin 7928 -> 0 bytes .../gds/sky130_fd_sc_hd__dlymetal6s6s_1.gds | Bin 7676 -> 0 bytes sky130/gds/sky130_fd_sc_hd__ebufn_1.gds | Bin 6962 -> 0 bytes sky130/gds/sky130_fd_sc_hd__ebufn_2.gds | Bin 7340 -> 0 bytes sky130/gds/sky130_fd_sc_hd__ebufn_4.gds | Bin 9578 -> 0 bytes sky130/gds/sky130_fd_sc_hd__ebufn_8.gds | Bin 14044 -> 0 bytes sky130/gds/sky130_fd_sc_hd__edfxbp_1.gds | Bin 19118 -> 0 bytes sky130/gds/sky130_fd_sc_hd__edfxtp_1.gds | Bin 17568 -> 0 bytes sky130/gds/sky130_fd_sc_hd__einvn_0.gds | Bin 4386 -> 0 bytes sky130/gds/sky130_fd_sc_hd__einvn_1.gds | Bin 5210 -> 0 bytes sky130/gds/sky130_fd_sc_hd__einvn_2.gds | Bin 6430 -> 0 bytes sky130/gds/sky130_fd_sc_hd__einvn_4.gds | Bin 7922 -> 0 bytes sky130/gds/sky130_fd_sc_hd__einvn_8.gds | Bin 12408 -> 0 bytes sky130/gds/sky130_fd_sc_hd__einvp_1.gds | Bin 4656 -> 0 bytes sky130/gds/sky130_fd_sc_hd__einvp_2.gds | Bin 6332 -> 0 bytes sky130/gds/sky130_fd_sc_hd__einvp_4.gds | Bin 8108 -> 0 bytes sky130/gds/sky130_fd_sc_hd__einvp_8.gds | Bin 12766 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fa_1.gds | Bin 13092 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fa_2.gds | Bin 13746 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fa_4.gds | Bin 15828 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fah_1.gds | Bin 19582 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fahcin_1.gds | Bin 19430 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fahcon_1.gds | Bin 18950 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fill_1.gds | Bin 1384 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fill_2.gds | Bin 1512 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fill_4.gds | Bin 1768 -> 0 bytes sky130/gds/sky130_fd_sc_hd__fill_8.gds | Bin 2280 -> 0 bytes sky130/gds/sky130_fd_sc_hd__ha_1.gds | Bin 9028 -> 0 bytes sky130/gds/sky130_fd_sc_hd__ha_2.gds | Bin 9718 -> 0 bytes sky130/gds/sky130_fd_sc_hd__ha_4.gds | Bin 14160 -> 0 bytes sky130/gds/sky130_fd_sc_hd__inv_1.gds | Bin 3636 -> 0 bytes sky130/gds/sky130_fd_sc_hd__inv_12.gds | Bin 10452 -> 0 bytes sky130/gds/sky130_fd_sc_hd__inv_16.gds | Bin 11632 -> 0 bytes sky130/gds/sky130_fd_sc_hd__inv_2.gds | Bin 7652 -> 0 bytes sky130/gds/sky130_fd_sc_hd__inv_4.gds | Bin 5132 -> 0 bytes sky130/gds/sky130_fd_sc_hd__inv_6.gds | Bin 6092 -> 0 bytes sky130/gds/sky130_fd_sc_hd__inv_8.gds | Bin 7642 -> 0 bytes .../gds/sky130_fd_sc_hd__lpflow_bleeder_1.gds | Bin 3134 -> 0 bytes .../sky130_fd_sc_hd__lpflow_clkbufkapwr_1.gds | Bin 4242 -> 0 bytes ...sky130_fd_sc_hd__lpflow_clkbufkapwr_16.gds | Bin 14752 -> 0 bytes .../sky130_fd_sc_hd__lpflow_clkbufkapwr_2.gds | Bin 4934 -> 0 bytes .../sky130_fd_sc_hd__lpflow_clkbufkapwr_4.gds | Bin 6080 -> 0 bytes .../sky130_fd_sc_hd__lpflow_clkbufkapwr_8.gds | Bin 9014 -> 0 bytes .../sky130_fd_sc_hd__lpflow_clkinvkapwr_1.gds | Bin 4284 -> 0 bytes ...sky130_fd_sc_hd__lpflow_clkinvkapwr_16.gds | Bin 15400 -> 0 bytes .../sky130_fd_sc_hd__lpflow_clkinvkapwr_2.gds | Bin 4862 -> 0 bytes .../sky130_fd_sc_hd__lpflow_clkinvkapwr_4.gds | Bin 6778 -> 0 bytes .../sky130_fd_sc_hd__lpflow_clkinvkapwr_8.gds | Bin 10626 -> 0 bytes .../sky130_fd_sc_hd__lpflow_decapkapwr_12.gds | Bin 5274 -> 0 bytes .../sky130_fd_sc_hd__lpflow_decapkapwr_3.gds | Bin 3224 -> 0 bytes .../sky130_fd_sc_hd__lpflow_decapkapwr_4.gds | Bin 3416 -> 0 bytes .../sky130_fd_sc_hd__lpflow_decapkapwr_6.gds | Bin 3896 -> 0 bytes .../sky130_fd_sc_hd__lpflow_decapkapwr_8.gds | Bin 4408 -> 0 bytes .../sky130_fd_sc_hd__lpflow_inputiso0n_1.gds | Bin 5018 -> 0 bytes .../sky130_fd_sc_hd__lpflow_inputiso0p_1.gds | Bin 5650 -> 0 bytes .../sky130_fd_sc_hd__lpflow_inputiso1n_1.gds | Bin 5062 -> 0 bytes .../sky130_fd_sc_hd__lpflow_inputiso1p_1.gds | Bin 4340 -> 0 bytes ...ky130_fd_sc_hd__lpflow_inputisolatch_1.gds | Bin 9080 -> 0 bytes .../sky130_fd_sc_hd__lpflow_isobufsrc_1.gds | Bin 4422 -> 0 bytes .../sky130_fd_sc_hd__lpflow_isobufsrc_16.gds | Bin 23764 -> 0 bytes .../sky130_fd_sc_hd__lpflow_isobufsrc_2.gds | Bin 6098 -> 0 bytes .../sky130_fd_sc_hd__lpflow_isobufsrc_4.gds | Bin 8674 -> 0 bytes .../sky130_fd_sc_hd__lpflow_isobufsrc_8.gds | Bin 13458 -> 0 bytes ...130_fd_sc_hd__lpflow_isobufsrckapwr_16.gds | Bin 22078 -> 0 bytes ...c_hd__lpflow_lsbuf_lh_hl_isowell_tap_1.gds | Bin 13400 -> 0 bytes ...c_hd__lpflow_lsbuf_lh_hl_isowell_tap_2.gds | Bin 13432 -> 0 bytes ...c_hd__lpflow_lsbuf_lh_hl_isowell_tap_4.gds | Bin 14664 -> 0 bytes ...30_fd_sc_hd__lpflow_lsbuf_lh_isowell_4.gds | Bin 13068 -> 0 bytes ...d_sc_hd__lpflow_lsbuf_lh_isowell_tap_1.gds | Bin 13396 -> 0 bytes ...d_sc_hd__lpflow_lsbuf_lh_isowell_tap_2.gds | Bin 13428 -> 0 bytes ...d_sc_hd__lpflow_lsbuf_lh_isowell_tap_4.gds | Bin 14660 -> 0 bytes .../gds/sky130_fd_sc_hd__macro_sparecell.gds | Bin 4066 -> 0 bytes sky130/gds/sky130_fd_sc_hd__maj3_1.gds | Bin 6268 -> 0 bytes sky130/gds/sky130_fd_sc_hd__maj3_2.gds | Bin 6592 -> 0 bytes sky130/gds/sky130_fd_sc_hd__maj3_4.gds | Bin 8014 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux2_1.gds | Bin 6972 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux2_2.gds | Bin 7334 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux2_4.gds | Bin 8478 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux2_8.gds | Bin 12804 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux2i_1.gds | Bin 7040 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux2i_2.gds | Bin 8158 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux2i_4.gds | Bin 12286 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux4_1.gds | Bin 15620 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux4_2.gds | Bin 14382 -> 0 bytes sky130/gds/sky130_fd_sc_hd__mux4_4.gds | Bin 15752 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand2_1.gds | Bin 4036 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand2_2.gds | Bin 10118 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand2_4.gds | Bin 7726 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand2_8.gds | Bin 12436 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand2b_1.gds | Bin 4676 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand2b_2.gds | Bin 6708 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand2b_4.gds | Bin 9202 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand3_1.gds | Bin 4486 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand3_2.gds | Bin 7370 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand3_4.gds | Bin 11280 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand3b_1.gds | Bin 5680 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand3b_2.gds | Bin 7094 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand3b_4.gds | Bin 11932 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand4_1.gds | Bin 5348 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand4_2.gds | Bin 8872 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand4_4.gds | Bin 13550 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand4b_1.gds | Bin 5960 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand4b_2.gds | Bin 10202 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand4b_4.gds | Bin 15074 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand4bb_1.gds | Bin 7302 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand4bb_2.gds | Bin 10534 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nand4bb_4.gds | Bin 15134 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor2_1.gds | Bin 3750 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor2_2.gds | Bin 9642 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor2_4.gds | Bin 7190 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor2_8.gds | Bin 11542 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor2b_1.gds | Bin 4398 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor2b_2.gds | Bin 6074 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor2b_4.gds | Bin 8650 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor3_1.gds | Bin 4324 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor3_2.gds | Bin 6692 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor3_4.gds | Bin 9460 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor3b_1.gds | Bin 4888 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor3b_2.gds | Bin 7960 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor3b_4.gds | Bin 10244 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor4_1.gds | Bin 4864 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor4_2.gds | Bin 7794 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor4_4.gds | Bin 12462 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor4b_1.gds | Bin 5350 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor4b_2.gds | Bin 9414 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor4b_4.gds | Bin 13638 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor4bb_1.gds | Bin 6506 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor4bb_2.gds | Bin 9470 -> 0 bytes sky130/gds/sky130_fd_sc_hd__nor4bb_4.gds | Bin 13670 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2111a_1.gds | Bin 8548 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2111a_2.gds | Bin 8254 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2111a_4.gds | Bin 11072 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2111ai_1.gds | Bin 6182 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2111ai_2.gds | Bin 9610 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2111ai_4.gds | Bin 15556 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o211a_1.gds | Bin 6928 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o211a_2.gds | Bin 6468 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o211a_4.gds | Bin 9140 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o211ai_1.gds | Bin 5542 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o211ai_2.gds | Bin 7542 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o211ai_4.gds | Bin 10166 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21a_1.gds | Bin 5716 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21a_2.gds | Bin 5652 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21a_4.gds | Bin 8068 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21ai_0.gds | Bin 4406 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21ai_1.gds | Bin 4862 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21ai_2.gds | Bin 6588 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21ai_4.gds | Bin 8198 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21ba_1.gds | Bin 6248 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21ba_2.gds | Bin 6432 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21ba_4.gds | Bin 9144 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21bai_1.gds | Bin 5658 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21bai_2.gds | Bin 7202 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o21bai_4.gds | Bin 10954 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o221a_1.gds | Bin 7374 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o221a_2.gds | Bin 7620 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o221a_4.gds | Bin 10954 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o221ai_1.gds | Bin 6552 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o221ai_2.gds | Bin 8812 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o221ai_4.gds | Bin 13560 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o22a_1.gds | Bin 6162 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o22a_2.gds | Bin 6738 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o22a_4.gds | Bin 9770 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o22ai_1.gds | Bin 4980 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o22ai_2.gds | Bin 8020 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o22ai_4.gds | Bin 10748 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2bb2a_1.gds | Bin 6538 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2bb2a_2.gds | Bin 7194 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2bb2a_4.gds | Bin 11278 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2bb2ai_1.gds | Bin 6316 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2bb2ai_2.gds | Bin 8644 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o2bb2ai_4.gds | Bin 14908 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o311a_1.gds | Bin 7760 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o311a_2.gds | Bin 8494 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o311a_4.gds | Bin 12436 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o311ai_0.gds | Bin 7572 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o311ai_1.gds | Bin 6994 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o311ai_2.gds | Bin 10542 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o311ai_4.gds | Bin 15998 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o31a_1.gds | Bin 6708 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o31a_2.gds | Bin 7410 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o31a_4.gds | Bin 11256 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o31ai_1.gds | Bin 6418 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o31ai_2.gds | Bin 9072 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o31ai_4.gds | Bin 14628 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o32a_1.gds | Bin 7188 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o32a_2.gds | Bin 7878 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o32a_4.gds | Bin 12392 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o32ai_1.gds | Bin 6820 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o32ai_2.gds | Bin 10070 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o32ai_4.gds | Bin 16122 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o41a_1.gds | Bin 8298 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o41a_2.gds | Bin 9224 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o41a_4.gds | Bin 13248 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o41ai_1.gds | Bin 7390 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o41ai_2.gds | Bin 11188 -> 0 bytes sky130/gds/sky130_fd_sc_hd__o41ai_4.gds | Bin 18202 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or2_0.gds | Bin 4036 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or2_1.gds | Bin 4308 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or2_2.gds | Bin 4500 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or2_4.gds | Bin 5844 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or2b_1.gds | Bin 5032 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or2b_2.gds | Bin 5608 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or2b_4.gds | Bin 6920 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or3_1.gds | Bin 5212 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or3_2.gds | Bin 5756 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or3_4.gds | Bin 7200 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or3b_1.gds | Bin 6350 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or3b_2.gds | Bin 5934 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or3b_4.gds | Bin 6578 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or4_1.gds | Bin 6164 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or4_2.gds | Bin 6692 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or4_4.gds | Bin 7388 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or4b_1.gds | Bin 7368 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or4b_2.gds | Bin 6638 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or4b_4.gds | Bin 8576 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or4bb_1.gds | Bin 7192 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or4bb_2.gds | Bin 7752 -> 0 bytes sky130/gds/sky130_fd_sc_hd__or4bb_4.gds | Bin 8902 -> 0 bytes sky130/gds/sky130_fd_sc_hd__probe_p_8.gds | Bin 10154 -> 0 bytes sky130/gds/sky130_fd_sc_hd__probec_p_8.gds | Bin 12944 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfbbn_1.gds | Bin 23076 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfbbn_2.gds | Bin 23508 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfbbp_1.gds | Bin 22448 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfrbp_1.gds | Bin 21054 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfrbp_2.gds | Bin 20788 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfrtn_1.gds | Bin 18978 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfrtp_1.gds | Bin 18974 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfrtp_2.gds | Bin 19486 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfrtp_4.gds | Bin 20574 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfsbp_1.gds | Bin 21818 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfsbp_2.gds | Bin 22778 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfstp_1.gds | Bin 19738 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfstp_2.gds | Bin 20650 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfstp_4.gds | Bin 21592 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfxbp_1.gds | Bin 17148 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfxbp_2.gds | Bin 18028 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfxtp_1.gds | Bin 15352 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfxtp_2.gds | Bin 15944 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdfxtp_4.gds | Bin 16604 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdlclkp_1.gds | Bin 11122 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdlclkp_2.gds | Bin 11746 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sdlclkp_4.gds | Bin 13554 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sedfxbp_1.gds | Bin 22832 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sedfxbp_2.gds | Bin 23984 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sedfxtp_1.gds | Bin 21282 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sedfxtp_2.gds | Bin 21858 -> 0 bytes sky130/gds/sky130_fd_sc_hd__sedfxtp_4.gds | Bin 23010 -> 0 bytes sky130/gds/sky130_fd_sc_hd__tap_1.gds | Bin 1958 -> 0 bytes sky130/gds/sky130_fd_sc_hd__tap_2.gds | Bin 2406 -> 0 bytes sky130/gds/sky130_fd_sc_hd__tapvgnd2_1.gds | Bin 1968 -> 0 bytes sky130/gds/sky130_fd_sc_hd__tapvgnd_1.gds | Bin 1966 -> 0 bytes sky130/gds/sky130_fd_sc_hd__tapvpwrvgnd_1.gds | Bin 1758 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xnor2_1.gds | Bin 5448 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xnor2_2.gds | Bin 8824 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xnor2_4.gds | Bin 14184 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xnor3_1.gds | Bin 11750 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xnor3_2.gds | Bin 12322 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xnor3_4.gds | Bin 13330 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xor2_1.gds | Bin 5526 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xor2_2.gds | Bin 9222 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xor2_4.gds | Bin 14550 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xor3_1.gds | Bin 11956 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xor3_2.gds | Bin 12450 -> 0 bytes sky130/gds/sky130_fd_sc_hd__xor3_4.gds | Bin 13442 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2111o_1.gds | Bin 9062 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2111o_2.gds | Bin 9080 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2111o_4.gds | Bin 13964 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2111oi_1.gds | Bin 6816 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2111oi_2.gds | Bin 10046 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2111oi_4.gds | Bin 16246 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a211o_1.gds | Bin 7314 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a211o_2.gds | Bin 7536 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a211o_4.gds | Bin 11728 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a211oi_1.gds | Bin 5798 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a211oi_2.gds | Bin 9072 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a211oi_4.gds | Bin 14822 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21bo_1.gds | Bin 7384 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21bo_2.gds | Bin 6860 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21bo_4.gds | Bin 10170 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21boi_1.gds | Bin 6936 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21boi_2.gds | Bin 8126 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21boi_4.gds | Bin 13102 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21o_1.gds | Bin 6532 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21o_2.gds | Bin 7074 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21o_4.gds | Bin 9972 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21oi_1.gds | Bin 5046 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21oi_2.gds | Bin 7058 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a21oi_4.gds | Bin 10398 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a221o_1.gds | Bin 8604 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a221o_2.gds | Bin 8450 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a221o_4.gds | Bin 13584 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a221oi_1.gds | Bin 7992 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a221oi_2.gds | Bin 10096 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a221oi_4.gds | Bin 18014 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a222o_1.gds | Bin 9100 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a222o_2.gds | Bin 8818 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a222oi_1.gds | Bin 8968 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a222oi_2.gds | Bin 11714 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a22o_1.gds | Bin 7592 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a22o_2.gds | Bin 7360 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a22o_4.gds | Bin 11488 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a22oi_1.gds | Bin 5858 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a22oi_2.gds | Bin 8374 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a22oi_4.gds | Bin 13672 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2bb2o_1.gds | Bin 8276 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2bb2o_2.gds | Bin 8708 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2bb2o_4.gds | Bin 11684 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2bb2oi_1.gds | Bin 6766 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2bb2oi_2.gds | Bin 9084 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a2bb2oi_4.gds | Bin 14706 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a311o_1.gds | Bin 7712 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a311o_2.gds | Bin 7348 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a311o_4.gds | Bin 12498 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a311oi_1.gds | Bin 6622 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a311oi_2.gds | Bin 10382 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a311oi_4.gds | Bin 16532 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a31o_1.gds | Bin 7150 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a31o_2.gds | Bin 7138 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a31o_4.gds | Bin 12970 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a31oi_1.gds | Bin 6208 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a31oi_2.gds | Bin 8372 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a31oi_4.gds | Bin 14192 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a32o_1.gds | Bin 7170 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a32o_2.gds | Bin 7108 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a32o_4.gds | Bin 13552 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a32oi_1.gds | Bin 6658 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a32oi_2.gds | Bin 10626 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a32oi_4.gds | Bin 17348 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a41o_1.gds | Bin 8176 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a41o_2.gds | Bin 8876 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a41o_4.gds | Bin 13542 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a41oi_1.gds | Bin 6118 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a41oi_2.gds | Bin 10286 -> 0 bytes sky130/gds/sky130_fd_sc_hs__a41oi_4.gds | Bin 16672 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and2_1.gds | Bin 5204 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and2_2.gds | Bin 5334 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and2_4.gds | Bin 7706 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and2b_1.gds | Bin 6250 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and2b_2.gds | Bin 5582 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and2b_4.gds | Bin 8556 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and3_1.gds | Bin 6146 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and3_2.gds | Bin 6546 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and3_4.gds | Bin 10552 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and3b_1.gds | Bin 7096 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and3b_2.gds | Bin 7872 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and3b_4.gds | Bin 10858 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and4_1.gds | Bin 7430 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and4_2.gds | Bin 7336 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and4_4.gds | Bin 11062 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and4b_1.gds | Bin 8018 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and4b_2.gds | Bin 6730 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and4b_4.gds | Bin 11374 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and4bb_1.gds | Bin 8078 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and4bb_2.gds | Bin 8762 -> 0 bytes sky130/gds/sky130_fd_sc_hs__and4bb_4.gds | Bin 14658 -> 0 bytes sky130/gds/sky130_fd_sc_hs__buf_1.gds | Bin 4452 -> 0 bytes sky130/gds/sky130_fd_sc_hs__buf_16.gds | Bin 18612 -> 0 bytes sky130/gds/sky130_fd_sc_hs__buf_2.gds | Bin 4822 -> 0 bytes sky130/gds/sky130_fd_sc_hs__buf_4.gds | Bin 5850 -> 0 bytes sky130/gds/sky130_fd_sc_hs__buf_8.gds | Bin 9922 -> 0 bytes sky130/gds/sky130_fd_sc_hs__bufbuf_16.gds | Bin 21314 -> 0 bytes sky130/gds/sky130_fd_sc_hs__bufbuf_8.gds | Bin 11088 -> 0 bytes sky130/gds/sky130_fd_sc_hs__bufinv_16.gds | Bin 20254 -> 0 bytes sky130/gds/sky130_fd_sc_hs__bufinv_8.gds | Bin 9306 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkbuf_1.gds | Bin 4930 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkbuf_16.gds | Bin 16060 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkbuf_2.gds | Bin 4300 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkbuf_4.gds | Bin 5630 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkbuf_8.gds | Bin 8876 -> 0 bytes .../gds/sky130_fd_sc_hs__clkdlyinv3sd1_1.gds | Bin 5952 -> 0 bytes .../gds/sky130_fd_sc_hs__clkdlyinv3sd2_1.gds | Bin 5952 -> 0 bytes .../gds/sky130_fd_sc_hs__clkdlyinv3sd3_1.gds | Bin 5936 -> 0 bytes .../gds/sky130_fd_sc_hs__clkdlyinv5sd1_1.gds | Bin 8112 -> 0 bytes .../gds/sky130_fd_sc_hs__clkdlyinv5sd2_1.gds | Bin 8112 -> 0 bytes .../gds/sky130_fd_sc_hs__clkdlyinv5sd3_1.gds | Bin 8064 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkinv_1.gds | Bin 4134 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkinv_16.gds | Bin 18546 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkinv_2.gds | Bin 4236 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkinv_4.gds | Bin 6184 -> 0 bytes sky130/gds/sky130_fd_sc_hs__clkinv_8.gds | Bin 10004 -> 0 bytes sky130/gds/sky130_fd_sc_hs__conb_1.gds | Bin 4476 -> 0 bytes sky130/gds/sky130_fd_sc_hs__decap_4.gds | Bin 2994 -> 0 bytes sky130/gds/sky130_fd_sc_hs__decap_8.gds | Bin 4082 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfbbn_1.gds | Bin 20744 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfbbn_2.gds | Bin 21584 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfbbp_1.gds | Bin 20052 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfrbp_1.gds | Bin 17626 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfrbp_2.gds | Bin 19776 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfrtn_1.gds | Bin 16856 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfrtp_1.gds | Bin 16474 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfrtp_2.gds | Bin 17522 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfrtp_4.gds | Bin 18906 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfsbp_1.gds | Bin 18242 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfsbp_2.gds | Bin 19460 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfstp_1.gds | Bin 17482 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfstp_2.gds | Bin 17252 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfstp_4.gds | Bin 18930 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfxbp_1.gds | Bin 15130 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfxbp_2.gds | Bin 16412 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfxtp_1.gds | Bin 12764 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfxtp_2.gds | Bin 13500 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dfxtp_4.gds | Bin 14984 -> 0 bytes sky130/gds/sky130_fd_sc_hs__diode_2.gds | Bin 3950 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlclkp_1.gds | Bin 10900 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlclkp_2.gds | Bin 12624 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlclkp_4.gds | Bin 13088 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrbn_1.gds | Bin 13742 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrbn_2.gds | Bin 14132 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrbp_1.gds | Bin 12896 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrbp_2.gds | Bin 13922 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrtn_1.gds | Bin 11104 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrtn_2.gds | Bin 11760 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrtn_4.gds | Bin 14376 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrtp_1.gds | Bin 10418 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrtp_2.gds | Bin 11154 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlrtp_4.gds | Bin 13924 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlxbn_1.gds | Bin 13118 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlxbn_2.gds | Bin 13966 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlxbp_1.gds | Bin 13180 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlxtn_1.gds | Bin 11300 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlxtn_2.gds | Bin 11436 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlxtn_4.gds | Bin 12508 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlxtp_1.gds | Bin 11848 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlygate4sd1_1.gds | Bin 6620 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlygate4sd2_1.gds | Bin 6620 -> 0 bytes sky130/gds/sky130_fd_sc_hs__dlygate4sd3_1.gds | Bin 6588 -> 0 bytes .../gds/sky130_fd_sc_hs__dlymetal6s2s_1.gds | Bin 8188 -> 0 bytes .../gds/sky130_fd_sc_hs__dlymetal6s4s_1.gds | Bin 8236 -> 0 bytes .../gds/sky130_fd_sc_hs__dlymetal6s6s_1.gds | Bin 8236 -> 0 bytes sky130/gds/sky130_fd_sc_hs__ebufn_1.gds | Bin 6522 -> 0 bytes sky130/gds/sky130_fd_sc_hs__ebufn_2.gds | Bin 7324 -> 0 bytes sky130/gds/sky130_fd_sc_hs__ebufn_4.gds | Bin 9612 -> 0 bytes sky130/gds/sky130_fd_sc_hs__ebufn_8.gds | Bin 14906 -> 0 bytes sky130/gds/sky130_fd_sc_hs__edfxbp_1.gds | Bin 20468 -> 0 bytes sky130/gds/sky130_fd_sc_hs__edfxtp_1.gds | Bin 18594 -> 0 bytes sky130/gds/sky130_fd_sc_hs__einvn_1.gds | Bin 4956 -> 0 bytes sky130/gds/sky130_fd_sc_hs__einvn_2.gds | Bin 7078 -> 0 bytes sky130/gds/sky130_fd_sc_hs__einvn_4.gds | Bin 9292 -> 0 bytes sky130/gds/sky130_fd_sc_hs__einvn_8.gds | Bin 14230 -> 0 bytes sky130/gds/sky130_fd_sc_hs__einvp_1.gds | Bin 5128 -> 0 bytes sky130/gds/sky130_fd_sc_hs__einvp_2.gds | Bin 6854 -> 0 bytes sky130/gds/sky130_fd_sc_hs__einvp_4.gds | Bin 9576 -> 0 bytes sky130/gds/sky130_fd_sc_hs__einvp_8.gds | Bin 14452 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fa_1.gds | Bin 14168 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fa_2.gds | Bin 13544 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fa_4.gds | Bin 17172 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fah_1.gds | Bin 20584 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fah_2.gds | Bin 19798 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fah_4.gds | Bin 22438 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fahcin_1.gds | Bin 19264 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fahcon_1.gds | Bin 18432 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fill_1.gds | Bin 1424 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fill_2.gds | Bin 1552 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fill_4.gds | Bin 1808 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fill_8.gds | Bin 2320 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fill_diode_2.gds | Bin 2088 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fill_diode_4.gds | Bin 2600 -> 0 bytes sky130/gds/sky130_fd_sc_hs__fill_diode_8.gds | Bin 3880 -> 0 bytes sky130/gds/sky130_fd_sc_hs__ha_1.gds | Bin 9352 -> 0 bytes sky130/gds/sky130_fd_sc_hs__ha_2.gds | Bin 9138 -> 0 bytes sky130/gds/sky130_fd_sc_hs__ha_4.gds | Bin 15250 -> 0 bytes sky130/gds/sky130_fd_sc_hs__inv_1.gds | Bin 4062 -> 0 bytes sky130/gds/sky130_fd_sc_hs__inv_16.gds | Bin 14252 -> 0 bytes sky130/gds/sky130_fd_sc_hs__inv_2.gds | Bin 4478 -> 0 bytes sky130/gds/sky130_fd_sc_hs__inv_4.gds | Bin 5284 -> 0 bytes sky130/gds/sky130_fd_sc_hs__inv_8.gds | Bin 7702 -> 0 bytes sky130/gds/sky130_fd_sc_hs__maj3_1.gds | Bin 7028 -> 0 bytes sky130/gds/sky130_fd_sc_hs__maj3_2.gds | Bin 7956 -> 0 bytes sky130/gds/sky130_fd_sc_hs__maj3_4.gds | Bin 12438 -> 0 bytes sky130/gds/sky130_fd_sc_hs__mux2_1.gds | Bin 6994 -> 0 bytes sky130/gds/sky130_fd_sc_hs__mux2_2.gds | Bin 8132 -> 0 bytes sky130/gds/sky130_fd_sc_hs__mux2_4.gds | Bin 12544 -> 0 bytes sky130/gds/sky130_fd_sc_hs__mux2i_1.gds | Bin 7112 -> 0 bytes sky130/gds/sky130_fd_sc_hs__mux2i_2.gds | Bin 10010 -> 0 bytes sky130/gds/sky130_fd_sc_hs__mux2i_4.gds | Bin 14492 -> 0 bytes sky130/gds/sky130_fd_sc_hs__mux4_1.gds | Bin 14562 -> 0 bytes sky130/gds/sky130_fd_sc_hs__mux4_2.gds | Bin 15604 -> 0 bytes sky130/gds/sky130_fd_sc_hs__mux4_4.gds | Bin 25202 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand2_1.gds | Bin 4388 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand2_2.gds | Bin 5224 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand2_4.gds | Bin 8050 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand2_8.gds | Bin 12224 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand2b_1.gds | Bin 4846 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand2b_2.gds | Bin 5982 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand2b_4.gds | Bin 9482 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand3_1.gds | Bin 5456 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand3_2.gds | Bin 6760 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand3_4.gds | Bin 10832 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand3b_1.gds | Bin 5770 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand3b_2.gds | Bin 8264 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand3b_4.gds | Bin 10450 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand4_1.gds | Bin 5512 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand4_2.gds | Bin 9054 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand4_4.gds | Bin 14382 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand4b_1.gds | Bin 6140 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand4b_2.gds | Bin 10308 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand4b_4.gds | Bin 14142 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand4bb_1.gds | Bin 7662 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand4bb_2.gds | Bin 10750 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nand4bb_4.gds | Bin 16040 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor2_1.gds | Bin 3960 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor2_2.gds | Bin 5380 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor2_4.gds | Bin 8288 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor2_8.gds | Bin 12336 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor2b_1.gds | Bin 4954 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor2b_2.gds | Bin 6540 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor2b_4.gds | Bin 8586 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor3_1.gds | Bin 4914 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor3_2.gds | Bin 7010 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor3_4.gds | Bin 10124 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor3b_1.gds | Bin 5338 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor3b_2.gds | Bin 8854 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor3b_4.gds | Bin 11926 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor4_1.gds | Bin 5742 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor4_2.gds | Bin 8252 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor4_4.gds | Bin 14130 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor4b_1.gds | Bin 6134 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor4b_2.gds | Bin 10352 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor4b_4.gds | Bin 16104 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor4bb_1.gds | Bin 7596 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor4bb_2.gds | Bin 12042 -> 0 bytes sky130/gds/sky130_fd_sc_hs__nor4bb_4.gds | Bin 16138 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2111a_1.gds | Bin 7934 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2111a_2.gds | Bin 8436 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2111a_4.gds | Bin 13056 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2111ai_1.gds | Bin 6994 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2111ai_2.gds | Bin 11050 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2111ai_4.gds | Bin 15894 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o211a_1.gds | Bin 8144 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o211a_2.gds | Bin 7412 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o211a_4.gds | Bin 11204 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o211ai_1.gds | Bin 6462 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o211ai_2.gds | Bin 9316 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o211ai_4.gds | Bin 13998 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21a_1.gds | Bin 6732 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21a_2.gds | Bin 7120 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21a_4.gds | Bin 9846 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21ai_1.gds | Bin 5158 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21ai_2.gds | Bin 6662 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21ai_4.gds | Bin 10192 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21ba_1.gds | Bin 7460 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21ba_2.gds | Bin 6954 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21ba_4.gds | Bin 10150 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21bai_1.gds | Bin 6500 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21bai_2.gds | Bin 7722 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o21bai_4.gds | Bin 12418 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o221a_1.gds | Bin 8082 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o221a_2.gds | Bin 8466 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o221a_4.gds | Bin 13182 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o221ai_1.gds | Bin 7598 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o221ai_2.gds | Bin 10328 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o221ai_4.gds | Bin 16248 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o22a_1.gds | Bin 7682 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o22a_2.gds | Bin 7254 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o22a_4.gds | Bin 11140 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o22ai_1.gds | Bin 5812 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o22ai_2.gds | Bin 8818 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o22ai_4.gds | Bin 12830 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2bb2a_1.gds | Bin 8008 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2bb2a_2.gds | Bin 8186 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2bb2a_4.gds | Bin 11528 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2bb2ai_1.gds | Bin 6734 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2bb2ai_2.gds | Bin 9994 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o2bb2ai_4.gds | Bin 17300 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o311a_1.gds | Bin 7984 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o311a_2.gds | Bin 8108 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o311a_4.gds | Bin 13778 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o311ai_1.gds | Bin 6910 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o311ai_2.gds | Bin 10888 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o311ai_4.gds | Bin 17046 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o31a_1.gds | Bin 6498 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o31a_2.gds | Bin 6946 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o31a_4.gds | Bin 12418 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o31ai_1.gds | Bin 6304 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o31ai_2.gds | Bin 8912 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o31ai_4.gds | Bin 13844 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o32a_1.gds | Bin 7216 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o32a_2.gds | Bin 8472 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o32a_4.gds | Bin 12894 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o32ai_1.gds | Bin 6812 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o32ai_2.gds | Bin 11062 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o32ai_4.gds | Bin 18084 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o41a_1.gds | Bin 8404 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o41a_2.gds | Bin 8856 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o41a_4.gds | Bin 13274 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o41ai_1.gds | Bin 6892 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o41ai_2.gds | Bin 10848 -> 0 bytes sky130/gds/sky130_fd_sc_hs__o41ai_4.gds | Bin 16862 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or2_1.gds | Bin 4900 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or2_2.gds | Bin 5454 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or2_4.gds | Bin 7446 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or2b_1.gds | Bin 6072 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or2b_2.gds | Bin 5786 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or2b_4.gds | Bin 10298 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or3_1.gds | Bin 5396 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or3_2.gds | Bin 6622 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or3_4.gds | Bin 9566 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or3b_1.gds | Bin 7346 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or3b_2.gds | Bin 6502 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or3b_4.gds | Bin 10324 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or4_1.gds | Bin 6160 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or4_2.gds | Bin 7558 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or4_4.gds | Bin 11670 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or4b_1.gds | Bin 7616 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or4b_2.gds | Bin 7568 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or4b_4.gds | Bin 12512 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or4bb_1.gds | Bin 8468 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or4bb_2.gds | Bin 8202 -> 0 bytes sky130/gds/sky130_fd_sc_hs__or4bb_4.gds | Bin 12948 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfbbn_1.gds | Bin 24580 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfbbn_2.gds | Bin 26280 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfbbp_1.gds | Bin 23670 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfrbp_1.gds | Bin 21900 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfrbp_2.gds | Bin 21876 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfrtn_1.gds | Bin 20580 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfrtp_1.gds | Bin 20632 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfrtp_2.gds | Bin 21136 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfrtp_4.gds | Bin 21380 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfsbp_1.gds | Bin 21582 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfsbp_2.gds | Bin 25042 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfstp_1.gds | Bin 20846 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfstp_2.gds | Bin 21784 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfstp_4.gds | Bin 23098 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfxbp_1.gds | Bin 19098 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfxbp_2.gds | Bin 19818 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfxtp_1.gds | Bin 16784 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfxtp_2.gds | Bin 17176 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdfxtp_4.gds | Bin 17596 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdlclkp_1.gds | Bin 11910 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdlclkp_2.gds | Bin 12598 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sdlclkp_4.gds | Bin 13494 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sedfxbp_1.gds | Bin 22998 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sedfxbp_2.gds | Bin 24322 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sedfxtp_1.gds | Bin 22398 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sedfxtp_2.gds | Bin 22344 -> 0 bytes sky130/gds/sky130_fd_sc_hs__sedfxtp_4.gds | Bin 23366 -> 0 bytes sky130/gds/sky130_fd_sc_hs__tap_1.gds | Bin 2830 -> 0 bytes sky130/gds/sky130_fd_sc_hs__tap_2.gds | Bin 3982 -> 0 bytes sky130/gds/sky130_fd_sc_hs__tapmet1_2.gds | Bin 2962 -> 0 bytes sky130/gds/sky130_fd_sc_hs__tapvgnd2_1.gds | Bin 2040 -> 0 bytes sky130/gds/sky130_fd_sc_hs__tapvgnd_1.gds | Bin 2038 -> 0 bytes sky130/gds/sky130_fd_sc_hs__tapvpwrvgnd_1.gds | Bin 1758 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xnor2_1.gds | Bin 6092 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xnor2_2.gds | Bin 8426 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xnor2_4.gds | Bin 13058 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xnor3_1.gds | Bin 12680 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xnor3_2.gds | Bin 13416 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xnor3_4.gds | Bin 15998 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xor2_1.gds | Bin 6424 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xor2_2.gds | Bin 7828 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xor2_4.gds | Bin 12988 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xor3_1.gds | Bin 14044 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xor3_2.gds | Bin 14716 -> 0 bytes sky130/gds/sky130_fd_sc_hs__xor3_4.gds | Bin 15794 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__a21o_1.gds | Bin 11766 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__a21oi_1.gds | Bin 9658 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__a22o_1.gds | Bin 13980 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__a22oi_1.gds | Bin 10616 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__and2_1.gds | Bin 9098 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__and3_1.gds | Bin 10302 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__buf_1.gds | Bin 7688 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__buf_16.gds | Bin 39408 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__buf_2.gds | Bin 8694 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__buf_32.gds | Bin 59888 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__buf_4.gds | Bin 11338 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__buf_8.gds | Bin 20202 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__conb_1.gds | Bin 6942 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__decap_4.gds | Bin 4884 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__decap_8.gds | Bin 6964 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__dfrbp_1.gds | Bin 31398 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__dfrtp_1.gds | Bin 29300 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__dfsbp_1.gds | Bin 33566 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__dfstp_1.gds | Bin 29300 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__dfxbp_1.gds | Bin 28546 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__dfxtp_1.gds | Bin 24170 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__diode_2.gds | Bin 5168 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__dlclkp_1.gds | Bin 24070 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__dlrtp_1.gds | Bin 19870 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__dlxtp_1.gds | Bin 16574 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__einvn_1.gds | Bin 9902 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__einvp_1.gds | Bin 9690 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__fill_1.gds | Bin 2512 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__fill_2.gds | Bin 2896 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__fill_4.gds | Bin 3664 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__fill_8.gds | Bin 5200 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__inv_1.gds | Bin 5838 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__inv_16.gds | Bin 29772 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__inv_2.gds | Bin 7110 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__inv_4.gds | Bin 10288 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__inv_8.gds | Bin 17150 -> 0 bytes .../gds/sky130_fd_sc_hvl__lsbufhv2hv_hl_1.gds | Bin 12836 -> 0 bytes .../gds/sky130_fd_sc_hvl__lsbufhv2hv_lh_1.gds | Bin 21610 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__lsbufhv2lv_1.gds | Bin 18828 -> 0 bytes .../sky130_fd_sc_hvl__lsbufhv2lv_simple_1.gds | Bin 13082 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__lsbuflv2hv_1.gds | Bin 23376 -> 0 bytes ...30_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3.gds | Bin 53092 -> 0 bytes ...30_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1.gds | Bin 29020 -> 0 bytes ...y130_fd_sc_hvl__lsbuflv2hv_symmetric_1.gds | Bin 23514 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__mux2_1.gds | Bin 12504 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__mux4_1.gds | Bin 25182 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__nand2_1.gds | Bin 6892 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__nand3_1.gds | Bin 9498 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__nor2_1.gds | Bin 7454 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__nor3_1.gds | Bin 8292 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__o21a_1.gds | Bin 11886 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__o21ai_1.gds | Bin 9088 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__o22a_1.gds | Bin 12868 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__o22ai_1.gds | Bin 9922 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__or2_1.gds | Bin 8814 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__or3_1.gds | Bin 10460 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__probe_p_8.gds | Bin 20954 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__probec_p_8.gds | Bin 23282 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__schmittbuf_1.gds | Bin 11536 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__sdfrbp_1.gds | Bin 34228 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__sdfrtp_1.gds | Bin 36482 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__sdfsbp_1.gds | Bin 38850 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__sdfstp_1.gds | Bin 35086 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__sdfxbp_1.gds | Bin 37804 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__sdfxtp_1.gds | Bin 29122 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__sdlclkp_1.gds | Bin 23000 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__sdlxtp_1.gds | Bin 24080 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__xnor2_1.gds | Bin 12322 -> 0 bytes sky130/gds/sky130_fd_sc_hvl__xor2_1.gds | Bin 12192 -> 0 bytes sky130/layers.py | 1 + sky130/spice/sky130_fd_sc_hd.spice | 18435 ---------------- sky130/spice/sky130_fd_sc_hs.spice | 17801 --------------- sky130/spice/sky130_fd_sc_hvl.spice | 2727 --- sky130/src/sky130_fd_pr | 1 + sky130/src/sky130_fd_sc_hd | 1 + 1206 files changed, 3087 insertions(+), 48568 deletions(-) create mode 100644 .gitmodules create mode 100644 .python-version create mode 100644 scratch.py create mode 100644 sky130/compile_components.py delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2111o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2111o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2111o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2111oi_0.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2111oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2111oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2111oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a211o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a211o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a211o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a211oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a211oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a211oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21bo_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21bo_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21bo_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21boi_0.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21boi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21boi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21boi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a21oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a221o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a221o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a221o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a221oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a221oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a221oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a222oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a22o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a22o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a22o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a22oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a22oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a22oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2bb2o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2bb2o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2bb2o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2bb2oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2bb2oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a2bb2oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a311o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a311o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a311o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a311oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a311oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a311oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a31o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a31o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a31o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a31oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a31oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a31oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a32o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a32o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a32o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a32oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a32oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a32oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a41o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a41o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a41o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a41oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a41oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__a41oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and2_0.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and2b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and2b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and2b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and3b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and3b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and3b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and4b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and4b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and4b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and4bb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and4bb_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__and4bb_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__buf_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__buf_12.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__buf_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__buf_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__buf_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__buf_6.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__buf_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__bufbuf_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__bufbuf_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__bufinv_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__bufinv_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkbuf_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkbuf_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkbuf_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkbuf_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkbuf_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkdlybuf4s15_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkdlybuf4s15_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkdlybuf4s18_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkdlybuf4s18_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkdlybuf4s25_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkdlybuf4s25_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkdlybuf4s50_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkdlybuf4s50_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkinv_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkinv_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkinv_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkinv_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkinv_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkinvlp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__clkinvlp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__conb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__decap_12.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__decap_3.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__decap_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__decap_6.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__decap_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfbbn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfbbn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfbbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfrbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfrbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfrtn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfrtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfrtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfrtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfsbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfsbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfstp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfstp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfstp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfxbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfxtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dfxtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__diode_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlclkp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlclkp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlclkp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrbn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrbn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrtn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrtn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrtn_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlrtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlxbn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlxbn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlxtn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlxtn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlxtn_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlygate4sd1_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlygate4sd2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlygate4sd3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlymetal6s2s_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlymetal6s4s_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__dlymetal6s6s_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__ebufn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__ebufn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__ebufn_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__ebufn_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__edfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__edfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__einvn_0.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__einvn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__einvn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__einvn_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__einvn_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__einvp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__einvp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__einvp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__einvp_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fa_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fa_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fa_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fah_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fahcin_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fahcon_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fill_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fill_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fill_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__fill_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__ha_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__ha_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__ha_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__inv_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__inv_12.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__inv_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__inv_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__inv_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__inv_6.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__inv_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_bleeder_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkbufkapwr_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkbufkapwr_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkbufkapwr_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkbufkapwr_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkbufkapwr_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_12.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_3.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_6.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_inputiso0n_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_inputiso0p_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_inputiso1n_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_inputiso1p_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_inputisolatch_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrc_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrc_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrc_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrc_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrc_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrckapwr_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__macro_sparecell.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__maj3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__maj3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__maj3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux2_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux2i_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux2i_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux2i_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__mux4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand2_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand2b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand2b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand2b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand3b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand3b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand3b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand4b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand4b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand4b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand4bb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand4bb_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nand4bb_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor2_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor2b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor2b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor2b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor3b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor3b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor3b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor4b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor4b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor4b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor4bb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor4bb_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__nor4bb_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2111a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2111a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2111a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2111ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2111ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2111ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o211a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o211a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o211a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o211ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o211ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o211ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21ai_0.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21ba_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21ba_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21ba_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21bai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21bai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o21bai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o221a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o221a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o221a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o221ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o221ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o221ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o22a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o22a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o22a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o22ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o22ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o22ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2bb2a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2bb2a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2bb2a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2bb2ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2bb2ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o2bb2ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o311a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o311a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o311a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o311ai_0.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o311ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o311ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o311ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o31a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o31a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o31a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o31ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o31ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o31ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o32a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o32a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o32a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o32ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o32ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o32ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o41a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o41a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o41a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o41ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o41ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__o41ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or2_0.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or2b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or2b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or2b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or3b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or3b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or3b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or4b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or4b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or4b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or4bb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or4bb_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__or4bb_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__probe_p_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__probec_p_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfbbn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfbbn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfbbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfrbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfrbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfrtn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfrtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfrtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfrtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfsbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfsbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfstp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfstp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfstp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfxbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfxtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdfxtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdlclkp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdlclkp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sdlclkp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sedfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sedfxbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sedfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sedfxtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__sedfxtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__tap_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__tap_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__tapvgnd2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__tapvgnd_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__tapvpwrvgnd_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xnor2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xnor2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xnor2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xnor3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xnor3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xnor3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xor2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xor2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xor2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xor3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xor3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hd__xor3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2111o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2111o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2111o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2111oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2111oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2111oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a211o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a211o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a211o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a211oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a211oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a211oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21bo_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21bo_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21bo_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21boi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21boi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21boi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a21oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a221o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a221o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a221o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a221oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a221oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a221oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a222o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a222o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a222oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a222oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a22o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a22o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a22o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a22oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a22oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a22oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2bb2o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2bb2o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2bb2o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2bb2oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2bb2oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a2bb2oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a311o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a311o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a311o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a311oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a311oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a311oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a31o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a31o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a31o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a31oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a31oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a31oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a32o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a32o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a32o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a32oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a32oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a32oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a41o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a41o_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a41o_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a41oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a41oi_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__a41oi_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and2b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and2b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and2b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and3b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and3b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and3b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and4b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and4b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and4b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and4bb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and4bb_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__and4bb_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__buf_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__buf_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__buf_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__buf_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__buf_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__bufbuf_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__bufbuf_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__bufinv_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__bufinv_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkbuf_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkbuf_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkbuf_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkbuf_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkbuf_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkdlyinv3sd1_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkdlyinv3sd2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkdlyinv3sd3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkdlyinv5sd1_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkdlyinv5sd2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkdlyinv5sd3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkinv_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkinv_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkinv_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkinv_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__clkinv_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__conb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__decap_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__decap_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfbbn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfbbn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfbbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfrbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfrbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfrtn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfrtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfrtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfrtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfsbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfsbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfstp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfstp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfstp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfxbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfxtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dfxtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__diode_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlclkp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlclkp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlclkp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrbn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrbn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrtn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrtn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrtn_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlrtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlxbn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlxbn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlxtn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlxtn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlxtn_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlygate4sd1_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlygate4sd2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlygate4sd3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlymetal6s2s_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlymetal6s4s_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__dlymetal6s6s_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__ebufn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__ebufn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__ebufn_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__ebufn_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__edfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__edfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__einvn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__einvn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__einvn_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__einvn_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__einvp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__einvp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__einvp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__einvp_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fa_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fa_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fa_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fah_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fah_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fah_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fahcin_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fahcon_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fill_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fill_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fill_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fill_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fill_diode_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fill_diode_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__fill_diode_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__ha_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__ha_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__ha_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__inv_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__inv_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__inv_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__inv_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__inv_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__maj3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__maj3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__maj3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__mux2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__mux2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__mux2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__mux2i_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__mux2i_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__mux2i_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__mux4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__mux4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__mux4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand2_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand2b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand2b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand2b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand3b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand3b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand3b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand4b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand4b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand4b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand4bb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand4bb_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nand4bb_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor2_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor2b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor2b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor2b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor3b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor3b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor3b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor4b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor4b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor4b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor4bb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor4bb_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__nor4bb_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2111a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2111a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2111a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2111ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2111ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2111ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o211a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o211a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o211a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o211ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o211ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o211ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21ba_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21ba_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21ba_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21bai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21bai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o21bai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o221a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o221a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o221a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o221ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o221ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o221ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o22a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o22a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o22a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o22ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o22ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o22ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2bb2a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2bb2a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2bb2a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2bb2ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2bb2ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o2bb2ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o311a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o311a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o311a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o311ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o311ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o311ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o31a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o31a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o31a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o31ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o31ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o31ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o32a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o32a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o32a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o32ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o32ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o32ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o41a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o41a_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o41a_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o41ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o41ai_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__o41ai_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or2b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or2b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or2b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or3b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or3b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or3b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or4_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or4_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or4b_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or4b_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or4b_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or4bb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or4bb_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__or4bb_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfbbn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfbbn_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfbbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfrbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfrbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfrtn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfrtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfrtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfrtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfsbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfsbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfstp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfstp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfstp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfxbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfxtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdfxtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdlclkp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdlclkp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sdlclkp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sedfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sedfxbp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sedfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sedfxtp_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__sedfxtp_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__tap_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__tap_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__tapmet1_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__tapvgnd2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__tapvgnd_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__tapvpwrvgnd_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xnor2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xnor2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xnor2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xnor3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xnor3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xnor3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xor2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xor2_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xor2_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xor3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xor3_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hs__xor3_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__a21o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__a21oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__a22o_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__a22oi_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__and2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__and3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__buf_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__buf_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__buf_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__buf_32.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__buf_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__buf_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__conb_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__decap_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__decap_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__dfrbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__dfrtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__dfsbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__dfstp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__dfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__dfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__diode_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__dlclkp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__dlrtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__dlxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__einvn_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__einvp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__fill_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__fill_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__fill_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__fill_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__inv_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__inv_16.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__inv_2.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__inv_4.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__inv_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__lsbufhv2hv_hl_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__lsbufhv2hv_lh_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__lsbufhv2lv_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__lsbufhv2lv_simple_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__lsbuflv2hv_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__mux2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__mux4_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__nand2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__nand3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__nor2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__nor3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__o21a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__o21ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__o22a_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__o22ai_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__or2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__or3_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__probe_p_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__probec_p_8.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__schmittbuf_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__sdfrbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__sdfrtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__sdfsbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__sdfstp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__sdfxbp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__sdfxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__sdlclkp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__sdlxtp_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__xnor2_1.gds delete mode 100644 sky130/gds/sky130_fd_sc_hvl__xor2_1.gds delete mode 100644 sky130/spice/sky130_fd_sc_hd.spice delete mode 100755 sky130/spice/sky130_fd_sc_hs.spice delete mode 100644 sky130/spice/sky130_fd_sc_hvl.spice create mode 160000 sky130/src/sky130_fd_pr create mode 160000 sky130/src/sky130_fd_sc_hd diff --git a/.gitignore b/.gitignore index be397e24d..b5429306e 100644 --- a/.gitignore +++ b/.gitignore @@ -144,3 +144,4 @@ cython_debug/ *.DS_Store .DS_Store *Thumbs.db +.idea/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..1fca8964c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "sky130/src/sky130_fd_pr"] + path = sky130/src/sky130_fd_pr + url = https://github.com/efabless/skywater-pdk-libs-sky130_fd_pr.git +[submodule "sky130/src/sky130_fd_sc_hd"] + path = sky130/src/sky130_fd_sc_hd + url = https://github.com/efabless/skywater-pdk-libs-sky130_fd_sc_hd.git diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..3b5883ed3 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +sky130 diff --git a/docs/notebooks/intro.py b/docs/notebooks/intro.py index 85d371531..bbf2a4721 100644 --- a/docs/notebooks/intro.py +++ b/docs/notebooks/intro.py @@ -6,7 +6,7 @@ # extension: .py # format_name: percent # format_version: '1.3' -# jupytext_version: 1.11.2 +# jupytext_version: 1.16.2 # kernelspec: # display_name: Python 3 (ipykernel) # language: python @@ -22,11 +22,60 @@ # %% import gdsfactory as gf +from gdsfactory.config import rich_output +gf.config.rich_output() # %% +import sky130 import sky130.components as sc import sky130.tech as st +# %% [markdown] +# If you want to see what are the cells available: + +# %% +# sky130.cells + +# %% +# sky130.cross_sections + +# %% [markdown] +# Let's explore the available layers: + +# %% +# help(gf.pdk) +# help(gf.get_active_pdk().get_layer_stack) +# gf.pdk.get_layer_stack() + +# %% [markdown] +# You can also verify this is the active PDK on `gdsfactory`: + +# %% +gf.pdk.get_active_pdk().name + +# %% [markdown] +# Now, let's explore available symbols for the components: + +# %% +# dir(sky130) +sky130 + +# %% [markdown] +# Let's try exploring an example basic `nfet`: + +# %% +c = sc.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() +c + +# %% [markdown] +# Explore it's ports: + +# %% +c.ports + +# %% [markdown] +# We can also explore the digital cells: + # %% c = sc.sky130_fd_sc_hd__a2111o_1() c diff --git a/scratch.py b/scratch.py new file mode 100644 index 000000000..e69de29bb diff --git a/sky130/cells/klayout/pymacros/README.md b/sky130/cells/klayout/pymacros/README.md index cd122659b..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/README.md +++ b/sky130/cells/klayout/pymacros/README.md @@ -1,3 +0,0 @@ -# Skywater130_PCells - -Contains klayout pcells generator. diff --git a/sky130/cells/klayout/pymacros/cells/draw_bjt.py b/sky130/cells/klayout/pymacros/cells/draw_bjt.py index 23955898e..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_bjt.py +++ b/sky130/cells/klayout/pymacros/cells/draw_bjt.py @@ -1,57 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -## BJT Pcells Generators for Klayout of skywater130 -######################################################################################################################## - - -import os - -from .globals import BJT_NPN_DEV, BJT_PNP_DEV - -gds_p_path = os.path.join( - os.path.dirname(os.path.abspath(__file__)), "fixed_devices/bjt" -) # parent file path - - -def draw_npn(layout, device_name): - """ - drawing NPN devices - """ - gds_path = f"{gds_p_path}/npn" - - if device_name in BJT_NPN_DEV: - layout.read(f"{gds_path}/{device_name}.gds") - cell_name = device_name - else: - cell_name = device_name - - return layout.cell(cell_name) - - -def draw_pnp(layout, device_name): - """ - drawing PNP devices - """ - gds_path = f"{gds_p_path}/pnp" - - if device_name in BJT_PNP_DEV: - layout.read(f"{gds_path}/{device_name}.gds") - cell_name = device_name - else: - cell_name = device_name - - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_cap.py b/sky130/cells/klayout/pymacros/cells/draw_cap.py index 46d982f49..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_cap.py +++ b/sky130/cells/klayout/pymacros/cells/draw_cap.py @@ -1,383 +0,0 @@ -import gdsfactory as gf - -from .layers_def import ( - cap2m_layer, - capm_layer, - hvtp_layer, - li_layer, - licon_layer, - m3_layer, - m4_layer, - m5_layer, - nsdm_layer, - nwell_layer, - poly_layer, - psdm_layer, - tap_layer, - via3_layer, - via4_layer, -) -from .via_generator import via_generator, via_stack - - -def draw_cap_var( - layout, - type="sky130_fd_pr__cap_var_lvt", - l_c: float = 0.18, - w: float = 1, - tap_con_col: int = 1, - gr: int = 1, - grw: float = 0.17, - nf: int = 1, -): - """ - Retern varactor - - Args: - layout : layout object - l_c : float of gate length - w : float of gate width - tap_con_col : int of tap contacts columns - gr : boolaen of having guard ring - grw : float of guard ring width - nf : integer of number of fingers - - - """ - - c = gf.Component("sky_cap_var_dev") - - c_inst = gf.Component("dev inst") - - # used dimensions and layers - - end_cap = 0.15 - con_size = (0.17, 0.17) - con_enc = (0.05, 0.08) - con_spacing = (0.17, 0.17) - con_t_enc = (0.06, 0.12) - gate_con_spacing = 0.195 - tap_nsdm_enc = 0.125 - nwell_enclosing = 0.18 - tap_spacing = 0.27 - hv_enc = 0.18 - nwell_spacing = 1.27 - - # draw the channel tap and poly and thier contacts - - tap_con = ( - (tap_con_col * con_size[0]) - + ((tap_con_col - 1) * con_size[0]) - + 3 * con_t_enc[0] - ) - tap_w = gate_con_spacing + tap_con - - tap = c_inst.add_ref( - gf.components.rectangle(size=(l_c + 2 * tap_w, w), layer=tap_layer) - ) - - # adding nsdm - nsdm = c_inst.add_ref( - gf.components.rectangle( - size=( - tap.xmax - tap.xmin + 2 * tap_nsdm_enc, - tap.ymax - tap.ymin + 2 * tap_nsdm_enc, - ), - layer=nsdm_layer, - ) - ) - nsdm.move((tap.xmin - tap_nsdm_enc, tap.ymin - tap_nsdm_enc)) - - tap_con = via_stack( - x_range=(0, tap_w - gate_con_spacing), - y_range=(0.06, w - 0.06), - base_layer=tap_layer, - metal_level=1, - ) - c_inst.add_array( - component=tap_con, - columns=2, - rows=1, - spacing=(tap_w + l_c + gate_con_spacing, 0), - ) - - poly = c_inst.add_ref( - gf.components.rectangle(size=(l_c, w + 2 * end_cap), layer=poly_layer) - ) - poly.move((tap_w, -end_cap)) - - if l_c < (con_size[0] + 2 * con_enc[0]): - pc_x = con_size[0] + 2 * con_enc[0] - else: - pc_x = l_c - - pc_y = con_size[1] + 2 * con_enc[1] - - c_pc = gf.Component("poly con") - - rect_pc = c_pc.add_ref(gf.components.rectangle(size=(pc_x, pc_y), layer=poly_layer)) - - poly_con = via_stack( - x_range=(rect_pc.xmin, rect_pc.xmax), - y_range=(rect_pc.ymin, rect_pc.ymax), - base_layer=poly_layer, - metal_level=1, - li_enc_dir="H", - ) - c_pc.add_ref(poly_con) - - pc = c_inst.add_array( - component=c_pc, rows=2, columns=1, spacing=(0, pc_y + w + 2 * end_cap) - ) - pc.move((tap_w - ((pc_x - l_c) / 2), -pc_y - end_cap)) - - # adding nwell - nwell = c_inst.add_ref( - gf.components.rectangle( - size=(tap.xmax - tap.xmin + 2 * nwell_enclosing, pc.ymax - pc.ymin), - layer=nwell_layer, - ) - ) - nwell.move((tap.xmin - nwell_enclosing, pc.ymin)) - - # c.add_ref(c_inst) - c.add_array( - component=c_inst, - columns=1, - rows=nf, - spacing=(0, (c_inst.ymax - c_inst.ymin) + nwell_spacing), - ) - - if gr == 1: - c_temp = gf.Component("gr form") - g_r_in = c_temp.add_ref( - gf.components.rectangle( - size=( - (c_inst.xmax - c_inst.xmin) + 2 * tap_spacing, - nf * (c_inst.ymax - c_inst.ymin) - + (nf - 1) * nwell_spacing - + 2 * tap_spacing, - ), - layer=tap_layer, - ) - ) - g_r_in.move((c_inst.xmin - tap_spacing, c_inst.ymin - tap_spacing)) - g_r_out = c_temp.add_ref( - gf.components.rectangle( - size=( - g_r_in.xmax - g_r_in.xmin + 2 * grw, - g_r_in.ymax - g_r_in.ymin + 2 * grw, - ), - layer=tap_layer, - ) - ) - g_r_out.move((g_r_in.xmin - grw, g_r_in.ymin - grw)) - c.add_ref( - gf.geometry.boolean(A=g_r_out, B=g_r_in, operation="A-B", layer=tap_layer) - ) - - c.add_ref( - gf.geometry.boolean(A=g_r_out, B=g_r_in, operation="A-B", layer=li_layer) - ) - - g_psdm_in = c_temp.add_ref( - gf.components.rectangle( - size=( - g_r_in.xmax - g_r_in.xmin - 2 * tap_nsdm_enc, - g_r_in.ymax - g_r_in.ymin - 2 * tap_nsdm_enc, - ), - layer=psdm_layer, - ) - ) - g_psdm_in.move((g_r_in.xmin + tap_nsdm_enc, g_r_in.ymin + tap_nsdm_enc)) - g_psdm_out = c_temp.add_ref( - gf.components.rectangle( - size=( - g_r_out.xmax - g_r_out.xmin + 2 * tap_nsdm_enc, - g_r_out.ymax - g_r_out.ymin + 2 * tap_nsdm_enc, - ), - layer=psdm_layer, - ) - ) - g_psdm_out.move((g_r_out.xmin - tap_nsdm_enc, g_r_out.ymin - tap_nsdm_enc)) - - c.add_ref( - gf.geometry.boolean( - A=g_psdm_out, B=g_psdm_in, operation="A-B", layer=psdm_layer - ) - ) - - if grw < con_size[0] + 2 * con_t_enc[0]: - g_con_range = (g_r_in.ymin, g_r_in.ymax) - else: - g_con_range = (g_r_out.ymin, g_r_out.ymax) - - c.add_ref( - via_generator( - x_range=(g_r_in.xmin + 0.17, g_r_in.xmax - 0.17), - y_range=(g_r_in.ymax, g_r_out.ymax), - via_enclosure=con_t_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(g_r_in.xmin + 0.17, g_r_in.xmax - 0.17), - y_range=(g_r_out.ymin, g_r_in.ymin), - via_enclosure=con_t_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(g_r_out.xmin, g_r_in.xmin), - y_range=g_con_range, - via_enclosure=con_t_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(g_r_in.xmax, g_r_out.xmax), - y_range=g_con_range, - via_enclosure=con_t_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - if type == "sky130_fd_pr__cap_var_hvt": - hvtp = c_inst.add_ref( - gf.components.rectangle( - size=(l_c + 2 * hv_enc, w + 2 * hv_enc), layer=hvtp_layer - ) - ) - hvtp.move((poly.xmin - hv_enc, tap.ymin - hv_enc)) - - c.write_gds("cap_var_temp.gds") - layout.read("cap_var_temp.gds") - cell_name = "sky_cap_var_dev" - - return layout.cell(cell_name) - - -def draw_mim_cap( - layout, - type="sky130_fd_pr__model__cap_mim", - l_c: float = 2, - w: float = 2, -): - """ - Retern mim cap - - Args: - layout : layout object - l_c : float of capm length - w : float of capm width - - - """ - - c = gf.Component("sky_mim_cap_dev") - - # used dimensions and layers - - bottom_layer = m3_layer - upper_layer = m4_layer - via_layer = via3_layer - via_size = (0.2, 0.2) - via_enc = (0.09, 0.065) - via_spacing = (0.2, 0.2) - cap_layer = capm_layer - cap_enc = 0.195 - m_dn_enc = 0.2 - m_up_spacing = 1.355 - m_up_w = 0.48 - - if type == "sky130_fd_pr__model__cap_mim_m4": - bottom_layer = m4_layer - upper_layer = m5_layer - via_layer = via4_layer - via_size = (0.8, 0.8) - via_enc = (0.31, 0.31) - via_spacing = (0.8, 0.8) - cap_layer = cap2m_layer - cap_enc = 0.08 - m_dn_enc = 0.4 - m_up_spacing = 1.68 - m_up_w = 1.6 - - side_enc = (0.02, 0.06) - - # drawing cap identifier and bottom , upper layers - cap = c.add_ref(gf.components.rectangle(size=(w, l_c), layer=cap_layer)) - - m_up1 = c.add_ref( - gf.components.rectangle( - size=(cap.xmax - cap.xmin - 2 * cap_enc, cap.ymax - cap.ymin - 2 * cap_enc), - layer=upper_layer, - ) - ) - m_up1.move((cap.xmin + cap_enc, cap.ymin + cap_enc)) - - m_dn = c.add_ref( - gf.components.rectangle( - size=( - m_dn_enc - + cap_enc - + m_up1.xmax - - m_up1.xmin - + m_up_spacing - + m_up_w - + side_enc[0], - cap.ymax - cap.ymin + 2 * m_dn_enc, - ), - layer=bottom_layer, - ) - ) - m_dn.move((cap.xmin - m_dn_enc, cap.ymin - m_dn_enc)) - - m_up2 = c.add_ref( - gf.components.rectangle( - size=(m_up_w, m_dn.ymax - m_dn.ymin - 2 * side_enc[1]), layer=upper_layer - ) - ) - m_up2.move((m_up1.xmax + m_up_spacing, m_dn.ymin + side_enc[1])) - - # generating vias - - via_1 = via_generator( - x_range=(m_up1.xmin, m_up1.xmax), - y_range=(m_up1.ymin, m_up1.ymax), - via_enclosure=via_enc, - via_layer=via_layer, - via_size=via_size, - via_spacing=via_spacing, - ) - c.add_ref(via_1) - - via_2 = via_generator( - x_range=(m_up2.xmin, m_up2.xmax), - y_range=(m_up2.ymin, m_up2.ymax), - via_enclosure=via_enc, - via_layer=via_layer, - via_size=via_size, - via_spacing=via_spacing, - ) - c.add_ref(via_2) - - c.write_gds("mim_cap_temp.gds") - layout.read("mim_cap_temp.gds") - cell_name = "sky_mim_cap_dev" - - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_diode.py b/sky130/cells/klayout/pymacros/cells/draw_diode.py index 47b5f6d5c..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_diode.py +++ b/sky130/cells/klayout/pymacros/cells/draw_diode.py @@ -1,455 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -## Diode Pcells Generators for Klayout of skywater130 -######################################################################################################################## - - -import os - -import gdsfactory as gf - -from .globals import PHOTO_D_DEV -from .layers_def import ( - areaid_dio_layer, - diff_layer, - hvi_layer, - hvntm_layer, - hvtp_layer, - li_layer, - licon_layer, - lvtn_layer, - m1_layer, - mcon_layer, - nsdm_layer, - nwell_layer, - psdm_layer, - tap_layer, -) -from .via_generator import via_generator - -gds_path = os.path.join( - os.path.dirname(os.path.abspath(__file__)), "fixed_devices/photodiode" -) # parent file path - - -def draw_photodiode(layout, device_name): - """ - drawing photo diode device - """ - - if device_name in PHOTO_D_DEV: - layout.read(f"{gds_path}/{device_name}.gds") - cell_name = device_name - else: - cell_name = device_name - - return layout.cell(cell_name) - - -def draw_diode( - layout, - d_type="n", - w: float = 0.45, - l_d: float = 0.45, - type="sky130_fd_pr__diode_pw2nd_05v5", - cath_w: float = 0.17, - grw: float = 0.17, -): - """ - Retern diode - - Args: - layout : layout object - d_type : string of the diode type [n,p] - w : float of the diode width - l_d: float of the diode length - type : string of the device type - cath_w : float of cathode width in case of p_diode - grw : float of the gaurd ring width - - """ - - c = gf.Component("sky_diode_dev") - - c_inst = gf.Component("dev inst") - - # used dimensions and layers - - npsd_enc = 0.125 - diff_tap_spacing: float = 0.37 - - con_size = (0.17, 0.17) - con_spacing = (0.19, 0.19) - d_con_enc = (0.06, 0.06) - t_con_enc = (0.12, 0.12) - - li_enc = 0.08 - m1_enc = 0.03 - - con_layer = [licon_layer, mcon_layer] - - lvt_enc: float = 0.18 - - hv_enc = 0.185 - - nwell_enc = 0.185 - - if d_type == "n": - d_npsd_layer = nsdm_layer - t_npsd_layer = psdm_layer - elif d_type == "p": - d_npsd_layer = psdm_layer - t_npsd_layer = nsdm_layer - - # generating diff and areaid_diode and its contacts - c_inst.add_ref(gf.components.rectangle(size=(w, l_d), layer=diff_layer)) - diode = c_inst.add_ref( - gf.components.rectangle(size=(w, l_d), layer=areaid_dio_layer) - ) - - d_npsd = c_inst.add_ref( - gf.components.rectangle( - size=(w + 2 * npsd_enc, l_d + 2 * npsd_enc), layer=d_npsd_layer - ) - ) - d_npsd.move((-npsd_enc, -npsd_enc)) - - for i in range(2): - d_con = c_inst.add_ref( - via_generator( - x_range=(0, w), - y_range=(0, l_d), - via_enclosure=d_con_enc, - via_layer=con_layer[i], - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - d_li = c_inst.add_ref( - gf.components.rectangle( - size=( - diode.xmax - diode.xmin + 2 * (li_enc - d_con_enc[0]), - d_con.ymax - d_con.ymin + 2 * li_enc, - ), - layer=li_layer, - ) - ) - d_li.move((-(li_enc - d_con_enc[0]), d_con.ymin - li_enc)) - d_m1 = c_inst.add_ref( - gf.components.rectangle( - size=(w, d_li.ymax - d_li.ymin + 2 * m1_enc), layer=m1_layer - ) - ) - d_m1.movey(d_li.ymin - m1_enc) - - # generating gaurd ring and its contacts - c_temp = gf.Component("temp store") - tap_in = c_temp.add_ref( - gf.components.rectangle( - size=(w + 2 * diff_tap_spacing, l_d + 2 * diff_tap_spacing), layer=tap_layer - ) - ) - tap_in.move((-diff_tap_spacing, -diff_tap_spacing)) - tap_out = c_temp.add_ref( - gf.components.rectangle( - size=( - tap_in.xmax - tap_in.xmin + 2 * cath_w, - tap_in.ymax - tap_in.ymin + 2 * cath_w, - ), - layer=tap_layer, - ) - ) - tap_out.move((tap_in.xmin - cath_w, tap_in.ymin - cath_w)) - c_inst.add_ref( - gf.geometry.boolean(A=tap_out, B=tap_in, operation="A-B", layer=tap_layer) - ) - - t_npsd_in = c_temp.add_ref( - gf.components.rectangle( - size=( - tap_in.xmax - tap_in.xmin - 2 * npsd_enc, - tap_in.ymax - tap_in.ymin - 2 * npsd_enc, - ), - layer=t_npsd_layer, - ) - ) - t_npsd_in.move((tap_in.xmin + npsd_enc, tap_in.ymin + npsd_enc)) - t_npsd_out = c_temp.add_ref( - gf.components.rectangle( - size=( - tap_out.xmax - tap_out.xmin + 2 * npsd_enc, - tap_out.ymax - tap_out.ymin + 2 * npsd_enc, - ), - layer=t_npsd_layer, - ) - ) - t_npsd_out.move((tap_out.xmin - npsd_enc, tap_out.ymin - npsd_enc)) - c_inst.add_ref( - gf.geometry.boolean( - A=t_npsd_out, B=t_npsd_in, operation="A-B", layer=t_npsd_layer - ) - ) - - if cath_w < con_size[0] + 2 * t_con_enc[0]: - t_con_range = (tap_in.xmin, tap_in.xmax) - else: - t_con_range = (tap_out.xmin, tap_out.xmax) - - c_inst.add_ref( - via_generator( - x_range=t_con_range, - y_range=(tap_in.ymax, tap_out.ymax), - via_enclosure=t_con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c_inst.add_ref( - via_generator( - x_range=t_con_range, - y_range=(tap_out.ymin, tap_in.ymin), - via_enclosure=t_con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c_inst.add_ref( - via_generator( - x_range=(tap_out.xmin, tap_in.xmin), - y_range=(tap_in.ymin + 0.17, tap_in.ymax - 0.17), - via_enclosure=t_con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c_inst.add_ref( - via_generator( - x_range=(tap_in.xmax, tap_out.xmax), - y_range=(tap_in.ymin + 0.17, tap_in.ymax - 0.17), - via_enclosure=t_con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - tap_li_in = c_temp.add_ref( - gf.components.rectangle( - size=(w + 2 * diff_tap_spacing, l_d + 2 * diff_tap_spacing), layer=li_layer - ) - ) - tap_li_in.move((-diff_tap_spacing, -diff_tap_spacing)) - tap_li_out = c_temp.add_ref( - gf.components.rectangle( - size=( - tap_in.xmax - tap_in.xmin + 2 * cath_w, - tap_in.ymax - tap_in.ymin + 2 * cath_w, - ), - layer=li_layer, - ) - ) - tap_li_out.move((tap_in.xmin - cath_w, tap_in.ymin - cath_w)) - c_inst.add_ref( - gf.geometry.boolean(A=tap_li_out, B=tap_li_in, operation="A-B", layer=li_layer) - ) - - if ( - type == "sky130_fd_pr__diode_pw2nd_05v5_lvt" - or type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" - or type == "sky130_fd_pr__diode_pd2nw_05v5_lvt" - ): - lvt = c_inst.add_ref( - gf.components.rectangle( - size=(w + 2 * lvt_enc, l_d + 2 * lvt_enc), layer=lvtn_layer - ) - ) - lvt.move((-lvt_enc, -lvt_enc)) - - if ( - type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" - or type == "sky130_fd_pr__diode_pw2nd_11v0" - ): - hvntm = c_inst.add_ref( - gf.components.rectangle( - size=(w + 2 * hv_enc, l_d + 2 * hv_enc), layer=hvntm_layer - ) - ) - hvntm.move((diode.xmin - hv_enc, diode.ymin - hv_enc)) - - if type == "sky130_fd_pr__diode_pd2nw_05v5_hvt": - hvt = c_inst.add_ref( - gf.components.rectangle( - size=(w + 2 * lvt_enc, l_d + 2 * lvt_enc), layer=hvtp_layer - ) - ) - hvt.move((-lvt_enc, -lvt_enc)) - - if ( - type == "sky130_fd_pr__diode_pw2nd_05v5_nvt" - or type == "sky130_fd_pr__diode_pw2nd_11v0" - ): - hvi = c_inst.add_ref( - gf.components.rectangle( - size=( - tap_out.xmax - tap_out.xmin + 2 * hv_enc, - tap_out.ymax - tap_out.ymin + 2 * hv_enc, - ), - layer=hvi_layer, - ) - ) - hvi.move((tap_out.xmin - hv_enc, tap_out.ymin - hv_enc)) - - # drawing nwell and outer gaurd ring in case of p-diode - if d_type == "p": - if type == "sky130_fd_pr__diode_pd2nw_11v0": - nwell_enc = 0.34 - - nwell = c_inst.add_ref( - gf.components.rectangle( - size=( - tap_out.xmax - tap_out.xmin + 2 * nwell_enc, - tap_out.ymax - tap_out.ymin + 2 * nwell_enc, - ), - layer=nwell_layer, - ) - ) - nwell.move((tap_out.xmin - nwell_enc, tap_out.ymin - nwell_enc)) - - gr_in = c_temp.add_ref( - gf.components.rectangle( - size=( - c_inst.xmax - c_inst.xmin + 2 * diff_tap_spacing, - c_inst.ymax - c_inst.ymin + 2 * diff_tap_spacing, - ), - layer=tap_layer, - ) - ) - gr_in.move((c_inst.xmin - diff_tap_spacing, c_inst.ymin - diff_tap_spacing)) - gr_out = c_temp.add_ref( - gf.components.rectangle( - size=( - gr_in.xmax - gr_in.xmin + 2 * grw, - gr_in.ymax - gr_in.ymin + 2 * grw, - ), - layer=tap_layer, - ) - ) - gr_out.move((gr_in.xmin - grw, gr_in.ymin - grw)) - c.add_ref( - gf.geometry.boolean(A=gr_out, B=gr_in, operation="A-B", layer=tap_layer) - ) - - c.add_ref( - gf.geometry.boolean(A=gr_out, B=gr_in, operation="A-B", layer=li_layer) - ) - - g_psdm_in = c.add_ref( - gf.components.rectangle( - size=( - gr_in.xmax - gr_in.xmin - 2 * npsd_enc, - gr_in.ymax - gr_in.ymin - 2 * npsd_enc, - ), - layer=psdm_layer, - ) - ) - g_psdm_in.move((gr_in.xmin + npsd_enc, gr_in.ymin + npsd_enc)) - g_psdm_out = c.add_ref( - gf.components.rectangle( - size=( - gr_out.xmax - gr_out.xmin + 2 * npsd_enc, - gr_out.ymax - gr_out.ymin + 2 * npsd_enc, - ), - layer=psdm_layer, - ) - ) - g_psdm_out.move((gr_out.xmin - npsd_enc, gr_out.ymin - npsd_enc)) - - if grw < con_size[0] + 2 * t_con_enc[0]: - g_con_range = (gr_in.ymin, gr_in.ymax) - else: - g_con_range = (gr_out.ymin, gr_out.ymax) - - c.add_ref( - via_generator( - x_range=(gr_in.xmin + 0.17, gr_in.xmax - 0.17), - y_range=(gr_in.ymax, gr_out.ymax), - via_enclosure=t_con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(gr_in.xmin + 0.17, gr_in.xmax - 0.17), - y_range=(gr_out.ymin, gr_in.ymin), - via_enclosure=t_con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(gr_out.xmin, gr_in.xmin), - y_range=g_con_range, - via_enclosure=t_con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(gr_in.xmax, gr_out.xmax), - y_range=g_con_range, - via_enclosure=t_con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - if type == "sky130_fd_pr__diode_pd2nw_11v0": - hvi = c.add_ref( - gf.components.rectangle( - size=( - gr_out.xmax - gr_out.xmin + 2 * hv_enc, - gr_out.ymax - gr_out.ymin + 2 * hv_enc, - ), - layer=hvi_layer, - ) - ) - hvi.move((gr_out.xmin - hv_enc, gr_out.ymin - hv_enc)) - - c.add_ref(c_inst) - - c.write_gds("diode_temp.gds") - layout.read("diode_temp.gds") - cell_name = "sky_diode_dev" - - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py b/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py index 0566bc190..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py +++ b/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py @@ -1,156 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -## Guard Ring Pcells Generators for Klayout of skywater130 -######################################################################################################################## - - -import gdsfactory as gf - -from .layers_def import li_layer, licon_layer, m1_layer, mcon_layer, tap_layer -from .via_generator import via_generator - - -def draw_gr(layout, in_l: float = 1, in_w: float = 1, grw: float = 0.17, con_lev="li"): - """ - layout : layout object - in_l : float of the inner length of the ring - in_w : float of the inner width of the ring - grw : float of the guard ring width - con_lev : connection level of (li, metal1) - - """ - - con_size = (0.17, 0.17) - con_spacing = (0.19, 0.19) - con_enc = (0.12, 0.12) - - c = gf.Component("sky_ring_gen") - c_temp = gf.Component("temp_store") - - inner = c_temp.add_ref(gf.components.rectangle(size=(in_w, in_l), layer=tap_layer)) - outer = c_temp.add_ref( - gf.components.rectangle( - size=(inner.xmax - inner.xmin + 2 * grw, inner.ymax - inner.ymin + 2 * grw), - layer=tap_layer, - ) - ) - outer.move((-grw, -grw)) - - c.add_ref(gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=tap_layer)) - - if con_lev == "li" or con_lev == "metal1": - c.add_ref( - gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=li_layer) - ) - - if grw < con_size[0] + 2 * con_enc[0]: - con_range = (inner.xmin, inner.xmax) - else: - con_range = (outer.xmin, outer.xmax) - - c.add_ref( - via_generator( - x_range=(outer.xmin, inner.xmin), - y_range=(inner.ymin + 0.17, inner.ymax - 0.17), - via_enclosure=con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - c.add_ref( - via_generator( - x_range=(inner.xmax, outer.xmax), - y_range=(inner.ymin + 0.17, inner.ymax - 0.17), - via_enclosure=con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - c.add_ref( - via_generator( - x_range=con_range, - y_range=(inner.ymax, outer.ymax), - via_enclosure=con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - c.add_ref( - via_generator( - x_range=con_range, - y_range=(outer.ymin, inner.ymin), - via_enclosure=con_enc, - via_layer=licon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - if con_lev == "metal1": - c.add_ref( - gf.geometry.boolean(A=outer, B=inner, operation="A-B", layer=m1_layer) - ) - - c.add_ref( - via_generator( - x_range=(outer.xmin, inner.xmin), - y_range=(inner.ymin + 0.17, inner.ymax - 0.17), - via_enclosure=con_enc, - via_layer=mcon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - c.add_ref( - via_generator( - x_range=(inner.xmax, outer.xmax), - y_range=(inner.ymin + 0.17, inner.ymax - 0.17), - via_enclosure=con_enc, - via_layer=mcon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - c.add_ref( - via_generator( - x_range=con_range, - y_range=(inner.ymax, outer.ymax), - via_enclosure=con_enc, - via_layer=mcon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - c.add_ref( - via_generator( - x_range=con_range, - y_range=(outer.ymin, inner.ymin), - via_enclosure=con_enc, - via_layer=mcon_layer, - via_size=con_size, - via_spacing=con_spacing, - ) - ) - - c.write_gds("ring_temp.gds") - layout.read("ring_temp.gds") - cell_name = "sky_ring_gen" - - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_vpp.py b/sky130/cells/klayout/pymacros/cells/draw_vpp.py index 4b364d91a..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/draw_vpp.py +++ b/sky130/cells/klayout/pymacros/cells/draw_vpp.py @@ -1,38 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -## VPP CAP Pcells Generators for Klayout of skywater130 -######################################################################################################################## - - -import os - -from .globals import VPP_CAP_DEV - -gds_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "fixed_devices/VPP") - - -def draw_vpp(layout, device_name): - """ - drawing VPP Capacitors devices - """ - - if device_name in VPP_CAP_DEV: - layout.read(f"{gds_path}/{device_name}.gds") - cell_name = device_name - else: - cell_name = device_name - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds index ff5d63ec95b79a4a9eb0616e00e2d94d9ac78667..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 4314 zcmbuC&x;#n7{{NPNhUuw+09CcP3=VwJxIaqS`-mv)~+B39@Gt1gjlT7s?}gYS`Q^y zFM{XA>P18l3+~y2hv0$-=}lSiAMl_e;vZoAKEINz?K9iDbJ)-3`@Y}#zR%1%$upEw zn!ZTKleG3LHRvcEq5ElN@qb!R^Gk1DS$nuYeEr;T^zLx@>em2{CpJEM^qC*N`s=aHZy);nvzK0=3VXLDyu}HpXc*=R{tcbeK)7;ot?-}`;Mf* z0xMXLabYmX$NU{$zY;l;?{qz0KZ<%q^O&6n@cEB9c^x($=BIu2GufY_ekc2FJoFO| zp2r9K=;JwE2Sb1LvewV!y7~G!xqcfD{h8cYvedD$lP^)ZZAW-|0FSuD`mA=MC3Ucpc|CgU?Rav)Es`hDB~+fz01=p56jo-zxWW zKKnVB{WH2=lAoQ{d?E6)Uo>Bcd>aqz=W)&#BAmKgArbUx@q^UcL@O*GuYW zALk30+e zy|~8tM&wdY^M$S-kY5{Xe!Z*v-|0FS*3awC3-#xF>Yvf|qTFA_viUq!t9wS*!}`^i zO_Y^^<~v;nOV^){?L1b0W^^44{fB*i?fKH@?0-Cehkbr*f9pQK>-~?u<3rxR#%=7w zWBBZJJ-mPFYfqHR1NA#yZ-@6!eXX&br>p+9(e?QEM}13$aZmkAPS=a*{;RJ^#%=XC zovt5He|@6<#z6f}*W=$G_0`78dRP5U*W>3`eR*NrQ-AJs{eb$br2gu*`e$_gfcmqE z`YQwVJ6(^TU-hM9W!6={)Aj#6zfT>q|GvfVefAyp-wS?x@9f~W0(}~j`#0|2ovwq6 z-#`2O(q9(%?&SUx{j2n!#>8|m^hW8GpFmJ9vM3 zPWE46?|*;8cmw+vT;0U|zh_R@>4xUFaC*Ey;{JD2s#1P$LUn3!7oXy-Vf71Y_HusD zUBhML_r-XA_8?N9_4(`Ze54#pFt>GIwdh^v<5Nw{K0)dml=t$}{V*+br&sVR@qxJ4 zZgXur`fifFjEoc5gUoNh9~bEQiP)dwdai81!`xNxjIM9&^S>|m#`2Tzi5gdNUztC_ mk9#wt>sR+xU&y_AT<%R+eS%)6@io$>I zC%+C_6tpN65vkCFc=2E_20SRed6OboFCs`mP*4i~|L-%;&dg@^$+}HRf9*5R?|t5R z=Y3{p$HgvmCATXG-J%Qdhd)8?-}7O-cKZD6T&sQRM7z7%ZXbW4+dkLrwp;tU2VQC2 z-<@rDW;^>jbDjO|wU<^-o;h)5wtZ^l?29K?k?CBc6dhc6{lL-hKEL(Ak+1h&zO?+5 z+Z7r0;ybHXt~wWwg>K5l+d|iJGvg(k(tG~QT=nmi%^xMM#F6p@e(T~t>f));MJ{dz z{Cfx2roJok9NDl=a>CKjKOp&-%x_ zKQHrlm?M8{zocy5EB{vFc-BAc{f79pPmqhBEk{%GnlY}#k%7Kj5YPRdk{;vAK7Ya2 zpBcG+&L5%vq5k@JevIxUHpb}kL}-eQGDg(BjPI&H|tNJ zS9tw;yej^LvSj<)*Th$jWB>B{D-k#AkKGhsx$SN7m57^ueM$TtZ;M}7F4_K;b@7#3 zJK`%5H|y8t#P9Kj_%-F6?N>e(Us-)Zd?n&${qk$#E2I0wS0Zlu!Ey1G;h6YJ#7#e* z6u-x7;>XHK+YkQ~Us?J{d?n%o>$88^cf5Zn*>{X9t^Q*k`;LB(*TrZ5CCAPB>^u5O z_8mQ?)ql)m-_h^!s`%``6(`VnYzLI@MUupFp^Uz=3 zSF-OIS0ZlKXWy}YkJrR!|8X3|O`m;7U&+3sr|j#$#q8%_>6qk}ccctza1mExtZe<9 zU*>ZMYVlb~Nsn=*<;SbyRUS-9k8!2tSHH)7;s@-VcT+Ym;@Tsw#PNaiXI=W$FeN?4 zm6jiTEAtNDNXdCKuC(Uw{*k)O=R8Q(Wn5|1=e)V@JYOa2GOo1hbKb1W>#by6#+6om z?i+f%-b#9mD=nYW)Z2>UPRkFfu8{s{e-^Y3*1 zN7(rTxs}Kd~fCat6yda&&QRPe-nN8EAF4?Q#LQaM_h^H+52bi{3}c1RenoJk8!2t zN9*Fn&!nWsxYF{2N%4X!Dd{n;H2t4s-NKhM#JUBHE0guZZI$mn9`pOB;i}t9$a~y1 z{5ueQhj*W09iR8~>s6RPBl(q&@x1#S)(ONIo92gqNIp4Ce(f);2kzlycy9CY`3{8n zq?w&KZ^7|QYDdqYKv)8xqe2x8< z%h&OP!Tlol_rCrrV;}qdwsAg%`NNK{`^{L--1wSrtY=}qe;&env4Z_jm~ZTd!hB=@ z7v>xNRhVz=|H6EuzY6n>{gcbr{iFM{ba2D{N4}rv{z>k)#`P-9H|A5AZ>(owKCdtP zm+b4`!hEhL^GP#b`*-mDIX}Mf`Bj(CyLtbv{-F);>gW8=etB0PJ&f=BS6p>EUV8cv NwmIMRSMXbQ{{bT7T($rJ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds index 79d36483093429a6ba00cff6f0e3ff5c504123d2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7942 zcmbuEU5Hd=7{}jpX6DR{&g!nat*xt>ntiM*?Kpx|B)hH|C_=b(krY$-QHySDE=UGl zdDVx|2L%;|ArS>$WEXX_Hwj$?UUgUOO+pZ12tq-z)boFz^FJSY=2@Lq)}KD-{hjAM zXU=*5XJ%aFLRWHYgV619f&9Twko)&|7|k6!)ohKmj~;H%o@loZJwMw%IXl}P+cvx7 zm1c9c*`8_6Y@2D#Y;VuKIDO>!;p5Hr(dn07IC4TpIyX?N?3{Rg$G-1BzxL4XZy!AO z@xdqE+KSOH`hWe(HRqz9&<(n1Md-%dXm3dl>3x4>uJ%{TEzfA3lr7~x`E98Gn2QEO zS8>tm0DrH+xoHen#)m${&quC-{f0j|SDALvP&7Gq`*!7D+2@zuZmJ#6U3$yhdv)&N zH_~IPbEUxy-;v&^lUqCcl@FxL6LL^{QwC*mrB2Frf9!GpSF`;qqAl;2@zW_AG7xoA zwrBkV-XGWb%Ms!zUHzAoBNz4Gq-@XnlinXtzy7I=m7it%QsOm3os=ydeK(<=`#mK* z)X5wC3EzLT>;5^vi~hT^{ox0PWQH<-GVIa$lTyzf|4n{)U4622R((?Hre8j-K8foQ z^CG2g`jK2en18}~^&>KW{oFMF>Us6a+J5y(shj=lE%g&Fs9z^rw!iF>`sDH%^+~Cl z{Toy2CtOs&K~C9z&lUB_6=&2ZrEd0LIj26^yH0&l>ZadUQa|AZ_4~+@?XP-IeX{>i z^+~Cl{RcLwpYXE!1LP*#zvFB5$-!sUC#7!oUp=XQ!mH}9CMRwG&L7n$hh9^kl)Bk} z%^~&4;U4u#shj@rb@j=$XVoXAZu;v^t54pwRee(GroX;l{e<)CuP6I$|L*hZlNI`v7Zcl437k}p1gN#qXdq|{9xxr6*Bkvs57D}OK!xdWd>?x0Ru`GaxD9ry|7 z)kprs+s*k)zIdNR?!Y6ZZu-a_^iQ~;KJo|qk-F(4ci@xA9eAXbKNyGHfuC?uedJHP z-RzItflnfL;E`7TU>tG>K8f5xowV`?6JAgs`4ew9=a1ZhPa=2Vkyid-9C8PK z!prI-f8y zb+bQm2mMLp4t&zeAB>ZH@ji*%L7kMk*&n%s{t4&RNB&?xQa63c7w?nE9eAYFO&_^~ z{s|YLl~0E=#n$cYi#7|5saClI+>*2K;;YQOT^&#Cy)u&$n>=sE)6GBK>}K4wQW?IX?VD z$Ah;rzW%3kBdcUS!tmtM`>*WL@t`?AK3+LWHzM!xm%Zh=ZCP)_qX=Nc+3MtU(`vfKjw|| zj^icK7j@F=k9ngnUT+e8Q75hbxNhL#^(Nt=PFg;$8+drVNqDG}^l@3pdZ5?efXl51 za`c_ArzR2gc;0^g)xPRk*DIAa25%UMF{mZtco<|DzZ`|*N z`N4gJ`GeN{`Fa`aRc<~!URj0xdRyA*nSCB99AC!s5uRVv%jWU!?DI%Po^3~t%XRZ~ z$}N&*sFSk2qhFOQfnWVCB|Owg%dg3^E&Teal<-g|O&{5PP{x0i;Wha`>g2)B^DiA! zuN-73p0AUJU;alud>4dyc#7xiq~S+zs#o2Rp?JPd8h-Gzdg03%is$R3<@f7(557o= z^Bzc@(>H zm%Z(3L($Yz OyW}+Y$!}GD%kDqZ4Cht= diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds index 71a2bdae5e68e9bf66261f55576c171eca22a877..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11142 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 TJ>}USoUq}z(|)_`w;28pq91Q` diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds index fd71f1faa6578830abd57de74cc3aa15ee1058bb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 17542 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds index daf9bb77a88c21931eb2b20f3857b111c31bd531..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 4426 zcmcIoO^X#*5Utn!x>X#5fgv*LLU82=WX30c6DEEIMg&o_nN4FHC6XC@I6)IPZj*(O zjSJ1@fv70?0q$ZpF8l%R6m%oFkXajHJm=n9-PQW;9n6@Pe&@cbd#X-Vb@!WAO35Ub zjh#%6N(cXVbXx0uSvmjHuM@rT>ikUAzf@Ic&-AOy{eCsx>+k)AAJyE%+>UDg#|!6X zXJ#j=^RpMv{5;na8O@7tzWsgovB&oo_8xxt_2AFx)3UKhWGeq_rtV6Sat$MwUu3dY zwy(`ax_d>l)XMfkhi(&CSjzqt7C3!WmYS1HPEbrqx?27PP{z;dA()UjuKq1a@ zvO&8Je#^gV^><&Pv3HTXYOuJ2HSCJ;TfXn#cAwwX4gJ{}ZgD+7(lL>X#EvArvEX~@|mA|6`7NKMcAW!a(MDyRn(dkm*P`5`HEHxV-D3H ze*g2W(7FYC9vS=_-)UFeGDLsi7kE~5pJ7&iG+4}|AFwOJ|8f0>-?`%XirE^^SA;#v zr_OAf*I(m5UVo;zEzYNQtCgB;$XU>?nBrr< zO#5Efi03HdiQ;rTKYLCd_0|ZUvnwvaFEDGJ6_NeZSrXxo_K!JRT9K18pj{FEB)_E< z{8lZ91Ha|_zyHnq1Mf3FYZQ4O@lb?4%I6;5WA>i2_hRr5;~(Jrle_Py5W}3b@ldqu zuzy%Q_ddpa_Sr>UJZV>iKgwq<_Swar*xG_W$>$#O6rE<;!ZQx`VSLvQr+t8&=A@1D zQMBu@KN`=?6?qwt`HAc`d5VIA`xLP+8c#XIV$j57Y#W2IOpamk+`QN)9-NP&(`>Fu z*d2caDg68QSD6%2uIun~J^w#pWJ57Ic9X{~8FBCB*AeqCSvgi7KXSU);^X=s%I~>j ur{}x-cS_2!^3eFFv-4|^>e&-5_N2?bKdrskjNWdh_EX;<47INScI7?liud*a diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds index d683bc6c1800b7080fa679a1820e4d266a240e6a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11614 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 IJ;dkX|8}z=9smFU diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds index 0e9f487d7cff9772826545e8f2bfbdda7ee1b9c9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 17742 zcmc(n3#?^VS;zNz-+S&k=iaG=j#6cP!n-}?4{?Q`zT{ziLE zJd-=WbN+k(&$sqk-}?4C`|Nw0X)|m_%@u=Tb8R!wKOTdP=g%2V?|#(}oH%)W|CP7x zpSx>+|GREIxBuF6=k||Zb?&Oy>AzF^cbvHM#GOyyzx#W>_x3w(JNN4SSKjgJTVHeM z$)-6vnmqS;Z+^y${`l9U)Z z9gn`F&+()9$4!mHcf|8xd7k)n>~F>2 z@v>p~O>OV-H_h%JIO}M|@LyzhCipjz#=R%?J8#$2^w! z6=(a;BEC6)UBow~_r~A-D@Gvt-=zQ1P3gUUj&t_fh;ME^G2)xj`~5o3>Eq(~D?bv) zKQ$kh_!WQrp@?rzZj1P)^fdnHOfsk|$?ndBdF$UEYjo7c6 zKehS7{5=-u@4Y80_Wi2CpXj)EvtCO#wLSH(&V;{G=VSaU^GxnvXq`iRbNQz5o6^(x zJ9mZOT<9D`d{cVrpU=Zz`GN4y&3W$MdQbSx?H7mNl-?V^xiR{^`ASFn9o@|OfAAUY z_a)7hw{$%6Zsmh?^T7Hq&cE&WkFF2j=)XGRLpL-3`1is$+3$!C-OT*cuMgk!Pdeg5 zH#7h2$HTYvw2t`D&CI{``S7v+)P7|hiVxk){PUNFZ~jO}eCTH8-}!^^Exx-WK6Eql zFP{>=<)3%Nhi+#6)z5}+_Zc1Wp_`e1>siV@?Z5R;9Y-(FYw4!8_vSzQQRnbi{!aME z<}~+DzCZjXb)5G#rKj=v{6Tzk_QT;f4}AXEm_NjsxAD!LHohr6jn8?O_~xRGZ%Xg= zQ|D$^YwT1%EB{%q(ao!K|3v2={O0tH;WwqH@yFj6esgj({HFBOKN^O=@;AdjGKaZ; z@Q(1C!?WQxrT4~X{Fcv+{;&LOj6dtKc6;hyy)XRcu4*?vQ+ltTI!&#oepl*TP;~Rg zem`{@AN9LZzM`9npE`|?`duks(apq9oyJG~u9UCnX5yz#D8 zAC;er_hS9lZtu-swzF=-Z?bMfH?#E{`>}4rZ?bMH@7pq4zp)?dHvE+z2tVt$c6-`> z)@}Gr)@}IAORe9iyZ9?rckxqy3zPcGcIqyEle&v;X7!i-sJr-0>TY@8mRbE}Kk6?2 zO4Z$>n@Rm;Kk6=ile&v;9;m-(H?Chj6mxg}lO6YT{@j*sYHqKO--dtqEgH9P)Bca? zNG(7&wY}G0u7B}4SN=gu;-Z_JVbv-s0rjJUHWbtEpjnZ;jTqkcOb_1m0%T(6~@(tF##xKe)Q-QxE< zGM?yWmVY~66Y+O`r6Y0C%`86ijQGqylep++7N36RxaohBxaejUpK&HG<8Kld-OS>X zXT&A{OyZ)OS$ygQafc6fB(Cd9yS;b(=x6eu{x``xbTi98#+iA__?zS%x_PPmBQEO) zlepxcnZ;kdEaFl>h!2U2Zf5aoomKzgryud5o0*?D^gnS;`XAlQ#$V;PJl4N|qK@$} z^|W{VydV4ehdRu|l-}#7PS9@Zhe^B9&5O3bz5cTMA_cld_4XgucwVp3&08)K-`DSs zY24qdwtl4J&a?Gex~c6Kwtvk({oU}JvloWnl%D!0cZc7k77*W*p8Cfp!(aKa@Q=-t zxqtW{;WtNb4!XUHGP-?uZZF%>2u*hL7($ zv|oJZAwN3)c6)F87atDa@}`dX(9JCV&KtwGxU3^SbTjkMpA){h)=RV>;zKtx|CZ|X z=vDIS{AG>@dM(|Q-h2FIzuyS|xaH(|;WwqH{>i_E-<1jJ@U4EeBR+I9^AFnigEl_Ihi+zm+R6HX_E&1%P;@g{KMdax?H(QJ zNL+L?i_dw6xSW3~6}RYS5`XkS#2tTYN8+NJS$y^*F8)fzExMV+KkWIFej+aYSE;x~ zH%|G&lxa3Wx;uhUZ;x9fP{l2`lBmItUX8r&Fo&Sf;-^1n~=ZWE!QU5C+jQY)I zp>}(3{ipvJH|j^F#;xdPGJdSHciZ*9xu={!H>LN+XPk-4_*W`!(alT5U+J?tpFb)e ziufz@_Wt;sXNb%Br&4i?ZeAjO`3_X^D<6pXOYdT;+9_WXO;{5kCSA9nl>+yD4gpUU`|)Gc%~t6v;HzDHaC4txInzc_!Aw~zMx zci8jSVb4Fbow`-7b+n{zp_^I#Vn6B*{>q2KPyK1P_s&1IQ#bHeJ`g_YN4q`sGw<=6 z%zJ#M^wiJw8~i5MZSb4f^&9r%x($Al>o(|ScKwF^xNd{rx($Al>o)k!1J`fj{`>a+b-w4|dqb`tn!fMVl)fH+ z!>>r?I^j%X&h&4d0d{B+S&CUClH`-79)oUWYxvK`Fo6>vRUk+OT(S9BfFAq~sd;N?*<5uROd2fvW+)Tz# z?_Iw4A=cn@#4O*tOE;zW#>c;PF7n^p{vlMgp{4X*zrQ!;-tRIO#NjIqiiBs;|SNuxVt)iPr{bJrwcbT`9s=Gxuv-+$0!?;uLDmCr{ zbTb)$;*fX5uT;5z4{uh7$_GIn*uyXwq9r?Wn?%y;I{QkoQe#Wib|7m_X{4;ZN{5Jf)M{D)XO8Of$ z2jEwf%Wqoa=KW(E{`udBZ|5i0D1Xt-#Lw?35_juUYm~3(X5ycyX5gQmTBCeLHxvI* zH3I+W=hi4+(apraI3B)o@0;Go_rMih{&sus_;3GI_~%bwqkKg-llaq5hi`Vz8s#gx znfS-g4Bz-4*C=1n&BQ-=Yxss&uTj3Dn~9%1=e|4g*W7+_DEV))I~yTWfuPyL*G=)cPI z;pg`^d4K7tfBe4in-k?RK2v(?pQxXRZ%*$EzbQTSk8TQoelGfw*bgog1m z%kM2nHxK;&!bbj3=kQVYOnm5O=BJ-_bgtm|EA@UwH#hGe*@#c=q5hZqCtFhY(ao&> zvmben-z4wR%`E@fk9mjRWZsqcZJEtK_T&76zw*oB=ls)d?;U@(lQ;NH@&?_^@`wG% zTl^+@Ti&;2mcQ&r-r=uQ-WANsQ)JO2Hni&59e8YoPSMx=w{~UJcW<*mx&ME%>1kq z@Uea{@u8cUpYtp}&c7x;bTjkUzu)kw@UsrWSN?uO%goO@fw-(6O#J9(=4YLTkM*00 z58cfCtZ(qK?lJM9n-}#zioYMRP`572-{1J!VKZr_j~(#;*A0}di^oq+U;fKH-q9@h zyBy2wl|##B>+mU%@?`^Lx*K z?f?0&z1G^#e$RR*RjHeLX-B7FA{r7EdJ-oU3#e26l zzqYltxqIK%zDMla{>>wMj$FO@<*yul;K9RRx-X?|y}_rifAZQ}|M08RpWJx<6UTpc z@UFCD5F}LZG@-weQZ?1e_S}&!+Z&R8avW7hiJkjXlq10bb>4N^1eJRa; zpVG>ITh1S`pG_C7ebIkMoqxdd)6+I~_OR^En54c|Ix+%uYT0}{`Zttf828T zH~ZOi(b^aN8?}F%=dYe|@90}C*FJ2oO&9HV7yaF9>{>r>=U>v2zMzZNUi7aFZRyZ| z^NZx7i>4R-Hd1Nr8S~!Ka{Ud|ltgQf{lBntcbLDSe4^<^KmFwTXRo&8y3xhx`saW3 zzLU>2)cvsQLFc-f_F{hTwvJ^Gq)DFOrKcM)|BWa#?>Ox#(h) zPn{sQd#WY5sw+)3W&Mfdvi`&~vt&~NI8NWam=3-*7PKmX>pTF^nOv;SV;Y5N&nJa~cp#=o}9=KYt}*B4rj zud|;`7p?vL{xA5eXWcIjZ+5?Edgvb;` ztGC~8x&A||pQek}Ud$hiJa=%sCAsKglwaNAzUp5s@u7>6fBJv-&5pIihb~6`$?x1Z zy`v>QbTRUezu~^g2U_Ao7bE}ZQ|=qt`z1RsL44?9)kJ!9{LBbyI-uHaKC7J=pXKMf95Io55=9ae{_}mGhcN7NW3cckB_)t zob=o;njZFla>D&0&rZfwG(GfB|Komf_D%PTricD{bN!hwx_>SP*Uxi;`=95B$bFA4 zM)&{tyY8D@(GnlJ82Oidel6SoQFHyH=K3N1Mi-<0S3E0i{HnjS#D^|M{@K`lv!A!b zhb~6`PLtnh@*zHSG4j(--apX)Oncu@>tgW!q5GKkySLtwTy!zY=Q%?z&!0@ot#vWT z@16AA{%2c~i!Mg_oJTJHOv|lxG00!``N=qu%lKtlZmo+!{<7oR=wBJkh+B~M)iyH zs5|&G&$yrZ)3g`wKia7q_%lzskNVNHhkovR{37=~KGF2h&;AX5k$oHdVzht5dFA6Gk_Of5&#<(+nHIFyrDF*XLKgaf7iT-Ck@BJT(yUO|aIQaZfWZcn3 z(~H+n|0f&X@611Y|0m)`;J5xy@A16M*S!Bz@t(kM`LnNjzBsoI(=XBVV*l%lwr`9( z2gJ)E+RLJ!`DfmAAJ#nX^FI=U`Lo|$=a8i@)(wYfdNH5#R_^!pFRp$Y)%wuT^rBy% z8_#dDeC`Ef_mHm#(e$$4uD{#V8?pDOU%zO2*>CHvUwLlkG0*RdRp7V$!R0>wnNNHE zK)gKgTYk0Q^E2&l0mh{g_s4$f2jeDEH}H#5{b0Q?@A}*aGVkbOH2-9`k(Gf74#Pf5_p!BVXjcLl;di z`z@ag@L8nbTk*e+0 zjl18ud*uhVBDUA=J!iQOq{_0dJ1=|tPdI++*{gTkc-)y*wpVw4?uMpzGraxuHcv*n A-T(jq diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds index acfdf465c6ce2dbf3ab249b83d827e80ef041eef..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 6508 zcmbuDU5Hd=7{}lFIx{;vvmYQ^YhH|Abz!vX;$}ijWg?UprtU>Ilew!cwIA$eT9$Yb zL{ZR22-;0S&X;z z&&(5&kPn5hC6^ETLk|DAKwMmb4 zqvu!F)EjuNO?s>wJwN$Kz4Dee>9KC~{Nju175{3J9_vQW&rhhA|FKPatQ$Q)V8i<% ze9$I6Zbr|qVN&zD*FI^J*PV5vcl`(cP_K&l$Il_@v2OJI@>l9rCflUPy3zAXXVgoI zZPH`i==p^M>J@%(lOF3v&(A%mUha!F>9KCSufLt^2kx_vajm!F{(CsX%du|UdY}6* z;}?#ppYoRa1>-T_FMh7Ru{5Q=5%qiT|4e@APxXz-Y4we$yM8&2Kjmfh%SLDX<+CA- z;yhNcz^1&2`NO)g&^^w;-L(YD|Mrj&;6K7KP7UdZgleVXEnDlnjvzfZgldwA9Lxa zM6T40PJV8$=H{+th+L@~oqX=cT>2@ID|KVne0*=Xt+`<}!yB<~?3%CpF_(VIi?MF( zny>d+C9WSSZ^gQ?$NDi4*AHWLN_`{h?)_hl>xXghwE9NWUB4FBkCd0yuNj^7gX?cS zjz8rs_3OqS;~$FSHx5s!Z$!Q8@z*eax&G8gGsL`;y0Po^*Zp|i>8HfJqtEq6=v@Cn z%wOgYUds@g2RQzBRDMkjyZw&qq>GeoY`jZQxIV=n!a$d$U$$*)||+<`+G zB3J50C!hN^Et)y&*xW4qdON!0plb`&qt!>VEY#^^HT*S~u3$e7|;H zePewrer{y#yzdX<_co6|<#qK3jZNRL#_^}Tpnlbev3ujM#PJ&krqwrAdW^pu$8W5R zsc$Uz7=IGSpYpo;iLuA{OL6=uFQ{KK_85O5j^9|ER^M3YG5&lUzp*f;zA@ip{L=ry z^-pEA_iKCy1RtAEjP{-u8hPx^O}^rU|m>G_p4 z&6oZie3CxvM$ec29X#pZMbeZ0U8Ltr{|=t??;`0-|1Q$=rGE!c`gf7^rGFRc`2ic= z*Zy53eQw6P{O4u;XvY5Yzu55`+=oB3Il2$)59&s|FZWLkrv?4%!yy^VhwUMGAQws@ z*_?w}d#KbLzsT)UsIf1V{DbOh*gc-?UtDgSIQ818<=Mu}?8@B9g~syi@x}T1*@c9=ugt`&+>`L{fT&b8} tejKy=9Q^k){0*;JH=gSleN)ceUjN*cUxNR2sEj9vk3JR8eHko<{{d+Rl}-Qv diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds index 1de0ae822e1876493fe93ed34977b7fb49b4133e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 10410 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 Y-3N>Q*6QGO`>YJ?pT-?4uTH1<4~%egwg3PC diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds index 828d5213835b59eb6b9f272947d17722bd41a657..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 14238 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 V2B%lU{rab$X-5gE?gL}D`XA9Q=f?m5 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds index dce4d90f04947bb38a9edaf204b761cd6fed3b7a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15042 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 HjIH8-n#M%E diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds index 477b1d8938da4afd4757705029240cd68b024198..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15720 zcmc(md8}Mj9mnsR{mu5?gF-1**@7mv1Zsf_m`kDFu?)U!A zJ?ot_GexVY74>52RINC+n6iI7rpBJHskJV@`28zZ9yEX91@jv(o1cHzc^l_9ZQMA2 z(7_uIzS90XbbiB%4R6`7a{ls*-n0Ia3oco);gIfWFf5oL6i(*l|x%#LZ zR-N?2J6}3%?fnOC`O;bIilxo!jH_EapRp(!{i0|MYQ-5vYxi2Qyl5?+Dmq1LPp+;1 zy5^BfZsxJM=+D+o_-;`QK3(*ew5+h9&_!czC(hA0cd~Psf8ug*jvbYwoK>~pTW5o!PAS z7fm0{e@v*q=x^RQ>2~eosFnxzi-KIdAt!>JKy6XW#zg>%0T^y=+wW6kM!(NLv-a=izozbC{u}<$`_=I5lG8WYSo^k}Gm`$-U*>U$-u+m~&~LYTeA-By_7aJ! zA4Bx^J|&5_zTkdHyz$qP#2f294vE(uEJ?g}h{qxQg1Fduhx{iL&>uwl!QgT8N46ia*GJnm zMWXk<>T!tP+qER|*0jeV@#eK9iPwMWaY(#=N=f3Qf6Vv9#qNIY7tuMth)!M+o$`t3 zlv_mS`b2cDUqq*VMCvJwjYy3X(c+`^?e{Co{eEZG%F&&-bN#Ah?@jjFbkX9K{^BUR zwjWvj*!79+&sb*DMboqX<|_9mzT*C-xGL|j-|2p_ajE-7)3f<&i`}32Tld$*#nt|) zug7CIm834vMXQU-{PoqbtgVvx(8Zj8X!Gdov(_KpS90!N8*iqI7O%|Tc+B%QzgUvI z=wdE^>z(dvzp*4fbTQ|rpHc7hzeKC|po^LM=Q!FOzeu~Ii@EmaIQkv_#8=!;|BLa; z`XfFwr{;4JL zp^G{H^uOHK{eDS&=wi-K`}O|f?I*I9qKl?i)_>2|CfcvROG)YtUCh;A-|pe?4{j@o z4_(apCvCshX3yI`za)9l#f9>>>*lrolW6NV7n&-z*GDZe=ExnDFr>!eZ$Ky_OG_r zRxZ)>%Ij}-J#X`glH^4f7s}6l74?_+oagU~`&H+kwEkXezs*fy{bH_S{R*^oE9hco z{o***9eg6|4!W3Ie>jeL55LH~hc4#kKkl=*|EX;%$$byHn7jYsJ_|qZtwnt3V$RQf z5-6218!k3-_Lw>bJ|Wm z3;iUr`(yWu#5uo+PF_*(^Tb#Aeoxoy`y+SQIKR^B_o|Z9w^)0xw7*E=?LT`QqStRL zNu2Q}@|?KXIo^( z+u!VECFj=qbJ60X{;PsN?(a|UWn=3}yPlg$wtsG~O&2Xb>i6>N{kF9;dvUXmmYiK@ zuWA2Ci)a1AHSSM*-u**yP2SJF9r?w7D&-LCr+?{j}w z?B@NQ+uScspX`3o^ve9jX5}=e}Zdf$8ElpU;f7 zf7mxNU;W?ihxpLNoWJo+_cd+JAV0*1F6R8L*Sjyg*EB!Ghc4#)?d#p&Ij|%?bTQ}e zyx=~@59NpW(8Zj;d#3xkuav}xF6R7vjz`}9yG!Cj7jyo>{_bNxj`Ki#=wi-4{FM7< zR+YquF6R7$HThKx|8_4 zpNsW7#w+_Tan^18BI`D~m|MR&j&&Qq$hsZQ8<|_bIgWK3f8u@aXZ?=xZ24KY@r$h6 z_{4?QZ{|Jxi8k-yXZ{P!%zwn0_wb9%d+1_r{^L02J^Ui`UN~=LZvNvq<~{t0Htz*p z%*=lr$GnGMWZpv;x0(O^^U-+!IdhU7dzSUz-;MAkdyOuhH8%f^`Dd3~yMN8*+lNZ_ zY`+X$wD@TIZ|85>eh+@JeS-T%)3bi|>F|quwnlz&oBg`&@;B_g2>!%}-QN&b=JVJ7 z?tZa;gZo9(v*n+P*DuyiaKC7JrN8!Z8#mTZ>U)=*USn-E32Ebs3g z;QquPxW6kNkoWgCxL@qo-7lJ+Er0)B_lsfQ-|9~^J?kI5;C^v+i$5D0iaWHw0bG+&|Q=_Wbp^ zlH^4fbNN|k$jkbZXnBJ!X7bk`@Vt$;mn1K`n9I*`|Cou74vysSTomN)3)0{O!ppyf||!1E8p{j2k{PLP*%Bhm5(U0fi4?^(Zo zk~%ykZ=s91`HSP2ckm}}bwBe@j8~37;>;WP6CZFN^GA$l{fvA3 zBI6#PXnNMq{tbSSeH;8@ZvTek*tfwivTuVf=Jszmj(r>aBKtPsypg&68;)b&27lti z?q~ld#`_mLs@5&5$7J*)N^ zl>Lk|Z7U+wUAxHsl61`kza;hFuIkev|2DgRy=S{X`+UnshPdx>_S$sO^wHKG^LOm7 zWUqC8ca`|Gy+#+;jrqsE9kAFgdk^b{iw_&&R(p*uK0M|h`}N_jR(->_7R7GUC1>oD z5_Hkxq5M1SU46dOvS>d$dI^2ul<}T4-kRaq#d}-Hem~xJ3-r5_9}N%xoo;Wl)$G)( z=yzl8&X=uTHwSm@cfF!my~`xOGVbhJvtLfvilx+q9(&!cXVyQC_xiIYX*7!e0ip1t Am;e9( diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds index 6ca8d242d02008f5be4f123cf50603c2690ffaaa..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 14358 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds index 2f410580c762d31f8d4d1be6bd4b7067be6dc9a3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 27076 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 E2TE^31poj5 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds index ce99b1d15c8541d97ca22889b41a407a2f0f2a52..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20560 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds index 778513d365775fa629e33209b73d08603a2668bd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 22942 zcmeI4eT;2aS;qIAubDY>=Htxw_uPt-lwxkLr4(tTQ)wZskph(xs$_~#1l!uHO{oPH zs-gixVnu7(+BgZphJuz#8YIS0q(WL_j4{2$i4$KHGGHFKxxRjsOBZBMkSS5*`CAAcs!`1&QS-c8rtdg8ou58nQ^ zgOk5IuZh3;arYtqMz<#Z`mOFm{ME;5;;&xjKEz-CSWW!p z4fi4b;>|VjhhKLe;t%t2ApXLIHSy=~_Rm55`T3gov)8!~@dsb6i9ch<6Y=}^yARQ) zXKLb4z1Mw+-}_2U{N5GrL;TJsYT|eH+=uwB_teCnc+!11amsyh?o*x@(K)_|PF)e5 z^ApiIZxNmLiRiRjM5lj5box(3r(Z>M`d>t6TtsxnPef;2MRdkpL}z}8=*$}to%toA zGw(!n=BJ3xycN-z-y%BmUPR~m5Yf4AM0Bn%5uNK#MCZB`ZG1aJ8?x`Yet(YZ_pINp zs@=n?I`;CK6PMf9zi#==xgWNAPuuY`(YJrveTcsG`I`8fJMKgLjoWMDula-t^w(uduL_)B&t74heO%YBGG`(HKj2Uofe@n^nN6Tklg_aXlDAJxR4 z{FeI=fASY<;&;E`KE&@{P!qrX5%(c}d$K0}=--{I+!q&q&GRBU#~0D5E249LB0A?S zqSHPRopy`p^pA*6zlrGduZT{+i|CAxh|ai)=!~z3&bW){%nuQrc_X4TzeIHAoruo- z6w#TtB0BS1L}&hs=v*Hn*9(6{zUDd-O&`79Ug^)v*7fOm`Fl2YZ}j_**nOv6ucnK= zCHKXtA926%AKahH?0?ODapptri?jE*FV4N%eR1JU?u)~=`{L4y`-Pu#e<^e2AKe#M z-{ZcxZevaR#0{IP+<(O_`x?K{=H|qI+W(8@bN|MN-Ma~<)(AtMj z`ylPc7wH#tk$%G$=~sM_e#aLX7krU%!!NY)#b6$y=@vlYu%xM1I zDZk+P;k)eGnYO<8X3e1$LKn>+&0jj2UwDVz_y5#B`@)*L2X-veMe`f;gF7wvIlDJ( z)!co9jiu?L`J;J%UcA`Pf8hojmp57cwVJEeFX*EAjrn6Aw6XaUdp^CSX6rJW-=>S^ zH|A5F&wKsV%(d&hzG!-5o;s{;s9*Si*KdoH&3WptpY8Pv|HxV3c>dI9Z9)Hwn-_Y0(e%bV^}Ap8`eN@kuP>V3n5X{ccfG#2^--@cn%I~yk0f2ZD9%sa>v?hdb)FYZ59{~mJzw})&-caoI6rfX=f%NUo)=9I>+|kN`^DK0 zcwRI;%=4TlU--1==fqbx=d0J+_&sU&tN*UKb*KHm>7x0K^%?&~J74CXxOAS6zi4`6 zo;vgQdwr3047zA~W1jj;)=uh+%XfQy(e%bVb;#2GLc5P7U0jRvi|_TkxOBGXMbpFj zOaJD1art)7i>8P9l`A}7_+8Jhh*!k<)z5fd8P5*Y`YM_=xA%#l1Mc@w=WE zH&1w8G(D`p{YKA=I}@H4O>fLkeB7U#tt)HpTHDdZ?|FWn@%(EKJ=gxLn&i;MDBro& zbKMuzB!@0W`R>;|*ZWXSa_C}|pS;X-yl>m*Do74pjPg?tcy9VSnF~eNDf_$^7Ehd+`?OHl0z4x z{O~N#4gantIdn0~bI<0yxmSzi(8VavJ(nE!T9F*O80A?zl4GqXl0z4xJZnC3to1~4 z=wg&-%|?#3nn(^^jPhw;$MUST$U}1IVw7jiM2@wRNDf_$@~o41Zu0yWd2XVMM?F7h z>>0|lPaN3SJXb~28}FagAxr&2>-(gO!SjyK#MzDF#c2JqZGFXczcW*l>mFS^>iTEhLw%8T5B0@p z{j+0zME%{HYElbQ$E=KiPr?FOL{Z?pe`J{`l zZ5}_?Y2;YH60*#)okouJTcPEWE(UqlY2;Y96%K8gX}ln z|G0k+9`pOBIBU;ibkX$2JjZ9>gZd)-9_V7U|G_$w&$9k3v|}Y*Jfi*V+fZL*-zJ?` zX0(69I+f3|el4_PC0#tCe&3#V)Gy3)iv1^!X?kP-vCic)tbYsbSVDkGbq+b!KZTY{x)|hHr;ua)QfRrPi$R`s207Lrg_cXY zcxK*zzAS(LWA{G0*W3Hc-u?*fUX*n4%=ecw^6QV=xqiy}+sw_oISw;vjz)lIq>)Zcou*X4WZoCl;X zx){~p{CBUr^}Z2W-K2{_{q1|a?#_8Nsf#W~^*8ePZ|3n&w7N+bgZev7Dw)R8n zqKi@e^*sLEsu=%7tDAH&sK2-4_4htqle*|)RDbav&!zn%JAX(HU5xT;dH$^B`IBhp zopdoc|E0&hKHn?0I_Z1H)I}Gg`YU<U|3T`ai&6dMJbza5 z{7JOBNf(3qt8e!DtKX_gU34+3zm(_Ca-KhlRyXNlP=DDTHn_1 z!`Yfc+YeqaT{OS3KA+qAs^`V+n>{a@9_BZ5eUYE-PRGqOy)i#^-0z=Le_NCLKDrp) z|9ek*Zu0##$)Sr;zI(stdY9HDhb~5W-ucY0y0&%_$)Sr;zJ1(t?c9Dy4qc4${CfuK zw%%Wp9J(0g8K;c{AOFH{`}l2$2hHP0o_%xXU*UtEUl;e{{A!+m;@Zug7fo-RKh$5z z^G{qo-}9pBVSYKczwq0hUlxyO|59#$;e(!E5`*^7-RR@S+M97q?_f55=!{?X8_$34 zVb9E8JwjV|C0z{GU$e)(?rffakhZzJbwthetqxB=7W8Fx;@X+(D zAG6Wfi+(dzQdTYPAQ_S{Ok7(Bmtf29`tpM`cVNf)nfK7Za{$+3S~ zXt|_|L7w+la_l=6S}y5gkmvoC9Q%ibmP@)Azd{?x#N9}Lt_KTgXJTICa=3BY_Vtdu|qUm9NBDcTr zl;`>P{fv+4jd|YxTj%)xL!tdlL(;`_;(Yr$&x@T2&x@vq_4!>9?0<;ei#;!z9_G8> z@Vv;+9dQ1l>0y2{x4$sAdr}PAKV|=}oAuZ9<_K-wm2@#!fARjubC3PILc4D#T@3Eu zlb3ki$q-r)lIq>)K5QiVp;Ydsh?Ly(b>a$NtUEY5St!~oA zpnfZlf9tf@Pqey87lZojb5fW6&qAx4bTO#UbvBi+e{p)kuRqcB@cNt1*T2}m*z=<4 zVZNWQf03VEdcMxxD|q>I7)VgHW0?0Xhk-K2{_{Xw3;gVSC=(ds5$ z4C=E_N?rC%3$1R_#i0I7$Lr4AHA1VKbTO#UJ}Y(Ee=W4SNf(3q(+_*yz8!-xOtiX5 z7lZoj(^8jx+d`|GbTOzu_WT)h{Kp-?vHO3_{u}rCJ?`^&?B{20|8su+yvTbK zx){Ab@i}`xN_mm@rgYp))5H3`ea{!3@;vWP9LMx9&#i~^FTBHZyg!jQJ>Uey`K~m+kp~Sxx>e z!rq_TGdy#6+I?~9H{2Kbz5#i0#j@nZ)t9?3uKla~B0pzwj>iH#4_i;eO$x z?z8{Radr>w+%K$&PG1yS9-lnqxcG%uKk1pA7rw}OjmBK?9d(r@_U@U;6P z{f;j(KKv2q9&x|$Cp-`ZFLGUTd~xa-_Y2?d{#0h~Z`?0@sr$Xm&hNWl z*mJ*=+4_0+Mf!sJB5h;bM0DnlNDg1*xcG%uAD{ZLXXk}qXy>2wOxlHCXzj2k$%M&>396XM{GaFt}DhTUtiC1{Z;>>-&aMB-`6A#?CarUcKpm4tA#K2Z9d_P z(>9;*Mc$?H3t!{@WM=n1_X~I3?`F2&?Y`Lhru!nl3yI^4j2rC~tsRZ+oxk7S3#^~X zip$pD=;Dg?H@>)P{f#fKz21Fs{X6c98^7tkxb;H!3;)9XtxSH86UP^K54|lS*CFR4 zF53J_?GT@7ZZG}9ap*6RI*gaddEgh?`QmfFkapmU>(*X$k$%7z=_h=Ve#95)XMAz- z8TSjVUHG&U(r(%zT06q=rLRW+GH>WFk$HtLGVkyU?{lB|$>%0*-r^UY&Uz;E9$)0T zASZI&;EP;W_#)RGe?-3K^P+t=wRd2*6x%=EuX?Mk>cXnGHepMH-ln}RSA(tY{>GjB zxvLs*T@P(c7k;Oj+UQ;RhM%-s6Z@|@Z_i)LTQbToe97jE)!XR3^2GO_<}Gx$pVH@g L+Wv`Ar&IkOJ8{a$ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds index 289ba685920da27f00a797d6dff47d99bc435936..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15830 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 hb1J`zu--ra>>cURO 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 g^@Ki8)OXLIL&0!FBb9RL6T diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds index 53c24fe9669baa7d44201ba91e1e2b313061e7b3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 104478 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds index 1ee3f03f386fdbd469a2bca340e09c5431ca63c9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 50528 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

~Huzu5U) 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds index 06e53e0bb1cc9a3095d9b49d2819fd96eb0c32a1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 59108 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 aT6)5+mS$I3`k(*09l+^mu?E=Q-uS=j0+CJt diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds index 999555559ccbc49a60e77fcc601d99aea1a83a4b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 59774 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 B?{xqG diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds index 08df3df8030049504b48bc3ed4fb51d00f972257..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 61716 zcmeI5d$46?d8hX|r_Z&|{nCAIeeU<}7TSaa8MRtNGw2Kv3854v#0V5Rpsg_}r8Gq> zp){q&u@XxlOtqSxiBzI!VMZ;aCe}1%9MLc()*!(WrDrrH2&uu6F16-;zW4imYoF7s zw~KQ!l|Q7X%)|V?{p@$Gwbx$nx7S*GpGHTcwb9m?ZfR{?&}gy$$G?_M|9x(2$M64# zcO3eav#-47sw|GJ}B{^8N1R~|Za^qjZb|M~SRuRC=8q3fT2{jXgAt5^R1 zwQsokx~r}~r_mT~Yk%=e-uLVO?%x0M#0$><{8`6tyZq9|bbC;zV|#UWbu}6teXWfP z8y)?vjlsr&!L~+Y_Wnkr=k1Ng{Cg_){+8#Wjqe(2H2$UhBdPuYufOkejmDn0G#WGS zs<`(BjRv`BeX-BJ!|N~39&ul^Jgh(cnEN989d961D4kT3%b9ZA4wRy+~bh@l5q6?(_QM3`{YGo${;%_#(XrPmKB>kE8G5 zi}XEmG3tLj&iYgGMfz5H-b~BG<)`mZU!?Egi&6jKan@gwFVc6&Ma#qb^d0Jp^c{RL z>OVY=zJp)*u>16%JRa7k@8FB{9Xv7WKRk}UgD=u|$i=At@VNe~-52RQ>3K6P50{_5 zLw%9HgD*z?hsV)(@J0F#xoCMUDW!}VlUu51yE=KbwjuChqdqg~P zG4hvha*tylKExvzBcEd>-s-~@@yNx<=NOI8v0ua^7bBnTOy6ev7e40OpZ=Z4!`F|# zjW2dy;hq@vZ=RpNjbC`5`}FTT9@eLC>U*kzQMM=<)V$(F8_qp!JoAHA|AOI`IGm%H+4%zJaRGer(fsZzV(WDxh zk-z+R?ybD9A|AOI`KzyVZ*8I?9=RC#Ymd0M{>h4X#3L6YzoXl|j{7U(k&BVvd5e2pud9ehE=GR$ zx_jMER>UJ0BfsYh?(P2Lig@H=K~&*0I2L_Bga^64{p^dAwAT#S7B3?BVQ#3L6Yf6P8R@ws!4eP$B*+(|A* zpFepVweiKVPr5H!UfaL$S$BMqWlztWX?f_g?eRsn9lmIJ=nvX!k6-w-`@DuckL97y zzK1We@8F4+hd%o}e&K`evk&t;mWMv?J$#Y(4xVUv==0vk7kTgEi#q!X{lW*m{)#vh`%8KM5tsA+BU&ETUwG2%i;G|I`l98bKcDv>aUt(NqUE8_ zJrult;@mA>U$i{*XY&3d&gT6`v^?~uKjZbqeedx4qUE7KHSd1m58a;<=VO23Ke{hY zzS@1!^05ARi~EIt@BX;h68q{KqWXpy^^dk?tNj*x?>$x#k6euWU7vHW{aqFD$i>L- zIO1MsUqw7}G4eYfaIfq3ig@H=Fm}xY+j{9~XPi^Ko(ar+i%O>G5%~`;UBF?EJQm7yhP?cV@QV;p2rf zKHi?$c7uu4j8h-7T#Sn>H@V1qF)p&+jEig+#znRp=%rS>_3c)yq8ibus?SK4ZKjhyYdtZ$44@U zKI`L!D?UDyIq+^D7yEzW<6_?>J}&m&>*M0?1s@lCKH}qI*FXDs;Wa+qmDyqY3frgf z*L=JqbJvG`ys*Q^cV)Kzo{x(>7yF->wxR8xB02l7h{yX=O2V{VyLMpW*mf^()@@?7QND-}U#pNNx7{!n1vRBXjNjK3-@q9LEZK zyCtsJbK{H49D8hBTsq+6;^HwM7w3QGd`o}Rs|JaWF%iA;D-t5=>6ZhKd#Pb*0>q&iHPsr=cxX6A$ zF0!96F0vmnUTFIp0eZaWL`-EKNeZ;uP`;2jM z&DNdq!uR_)?^hnj`2(da{lWy-_CEP^%r&COSC*(emlRFd{O7UM9V{8=eCeI+fwc!ujQr}?_>BI>$}xaIoG zX@0rxa>$pXTzARGk1f|hN?LwV*Ih)*!`H7|cNy~MDc4={@ng&Nm(%L&x{Ijm zF5;H!FQ@ss?jq{Ci@4?b%W1w{UrFmP>bi?)dAR<%?jq{Ci@4?b%W3s>-9^-O7jet= zm(%>V&-n6-y6z%c9xlJ$H{!E-|7_#@-KOQ=#`(id{?IwL?r*Wr5Tl!x{U(1K*AF)N+qizQ$!DI%cH8d!jql$wUpny0 zCO%^48_30p`t8r-m?z;tMUt}IeE?OS?%#-j%=40u3Gc6B&=1cgZ z&9{;-S|0k$lki36W7HQd4}IoI_#*Q#e9`jIXP$&#_@w*Y;(F{ePr?_Ohf!a&Jgm<= z3BT}u_nD9JJeG$(^CWzcc^IB(dFZEm@XZ&QhvAEshknbey}ro3nE0aQp`X5kVD&}r z1;rOF5B;@AyuP^pN%uv|Lx0t3v;9Qwg{8h|dFXSmExyRTxcH*wp}%y<{lcf+UlI?+ z{=&!H7r7Ui`l97w{q!9iTmHfa-JchSVxN1hS$~mxv8gXw9@bCaK{8+DUT}QT^3YG; zfihp@UUYoX^3YG;!7^XuUU+=b^3b1niLbxNz4-W|<)NRxgJ$(bz6*daT3+intakIg zp6Q;?N9>Fpxi}H~^c~%63h6ueV$^?l9DN5*r0!3-5QI{=@S`{fBY-4!%g=As3_m!{eIowdZ;0JLF>2e|TKWtG&KR-$~D#X?eK* z&EGYke)D$`c%G>LFizjW6X`qTqUB+I`VPL>{9O#5$MVpp@8FB{9Xv7WKRk}UgJ1Zx z`%B`XxITRcUu^y^49{?c8UR$5@2KbzZ5UH!*GRfn$ zKKI?>>9hqf=`1-99h^OB&$>X*4`OOmi@>?YjyI+3G#K&uWezOE$zf}UMuirAs-S&ne)DgZ;FF8?{Ix#6SwemNRtdz@Z<*xrTA$x6!PjqxsXkxzfXqi=|K(|k&BT}pTMJk zhv(eV{eS+3Mw9o6mYQAx! z%ic$Jue-Qn_l=W_%iM2nrwtd{k#k38kJ=-vn?|Hl;9=XW#GA>e=agpU> zTx7W!7g;aHMb?{fk?q2`$aZ5~WVlW}p;o{MpD_MJX1?)#CCi<8&- zxH$fweOw&d<>TVWOMP4%xW~uE{^$9)*mH-Ei`-Al@`>%Id|cf1bsrbG*R=V6MYb#BBHNvDk=KQBQTOAD zysnIkyzclS`vw2R^xw~X-)!^#=JVCj*7AKb?yKc>5UH{H-@O)OeOEqOk@581noP#$ zf8gVg@tLbCGQRIzABT)j+*Ofr_FIv0)>|YW{*I4B@`1}MGR|u#GOpJclCuwpjB6i( z*?js>t|sua85BYJ z^gfZid7i+3t7oPjdA9rXEuM#Q_1x4OEvG)?ka6|w)Eg~lxfzFyvwk9Z^SpqZz9llw z_7ln3t|B?xUnJ*s5y_YA^%Kc?T}5(Uf03O1LbUDEy#HL1=2wUF_XF&G)v*8VxBXc> zX#dH7i}v5m{td~`f8S!yPwl;959Iqq;^cxYi{+x_$+uPJ?_=2Cm)O(VXm51vZQ=h; zwpg{^srJJYxA5=QMlavn9euvlzqrvc(eWE+KYN>RS{+bntp&hcZD zsP~{~dGoq&@;RpQ9_G87A|APDd9Ba)XU4wfzPSHyEwfy-yw-2|zqTLT=#LjyUTpO( z7cH;%Z8`bQ=-7D04cl@ozi8w2zSY^V*O}!NS#Ii!me>1Mhwp?^U!46NuP<62`sq8Y z=8LNzc3-r--nZpkd!a9X;VEDKHSvY9KiB1c;l1w9iCuwj>(AVT^)LLEFaMHwAnU^&+T3+v4eZEsh{lfq4^(VwLy#9N?>Gj2N_CH%L(em2*%mMh< z-0QjDkzBOlTA$aQe|jFsdzW0a;aY#s|FC{|oxOK&so1q)$0N%{8?W_K|9!33Z_DI6 zzvQCjwLW#&R@4_;t*?@cme=~!>9_rl^)CF0*XO&vc|7zx?6t=)v~7pScc~M{>+7?e zyYBSm7u(sV`by>r-c_%j*}~{*!VsIQ~*+*!ElYKXGKz z>x-6$^+)XZ%leCaXO{Y+<+VQbIrdP$(2n~l7lZweI(u&P`r=-D|B{QA*VbpbnfGw~ z5t+A;i_!dt6ImeEFHbM-x2e&J8NKJ%YE9{S9C z@C$7j@X~L|z@Y!IoXmSzZjpHpxfsoVcpUQ{e35w%xfsoVSWf0WEWgOShg^*2Kh$B~ zL;XT~-=tg&=0DV7-a~znc@Mc5&3~vfaLntA%zMa1%fr`?c@Omq*?+8l`mG`u%zvoE zyodD{nfH*3(fo%x%zLOWGVdW5qxlbYaH(HteIw;!wEtP1JvX{5GVh_jX!+^eFaK@S z#>MtJP1_OXR1@#D|3A4nUGIjUd3|xWz5dh}EwA;d z(|wuO7kf-k%av()txuh9JASbKg?8LXx%f<<-}CmPPUquZU+ns**B33Xt&gAP`L_MU zv>#h8S|0jC_Byfs#o?n~U$i{*N1o??;s0`fM0{TCkAB2`aqO`BqUE*q+0KKP`t~pU zg>U~s@zU5Iy4!tm_!{>`%ftF3OYRqb-Te`9DfUO-@4lFR2gue-w7j-HuRnc?*H0Wc z=G#xSyw+#?_5aB0iv#w0kc*br`qc0Hpw}1s&-MDE<+VO_`rhO9MXpPw<;t|Y)~9~& ziq|jv2e02NuEaj`OtzoMJeKDbEf4EYS--+Bq#v6lfbR^=HJsFRk~fzhLiI>K5AZFy-PI`tRZ$USC|g)a#3u*DgPG7Vq-<;?nPUebMq- zpY>cG_WFf)d;Mi`xZbD!vh6Rdf8o7ee_1@k{A=X~uP?4Hd419H+U2J{_ZCrKT+PRA z(ehfK^*l(qUE*zew%9!+VUT;_h6wdcgn?J z`FR}kCVY{36S)}8pLiVeCj7#$yU+Y7kB7_8ya``q-h?Mc^Cuq1ya!)o-a{@%^B*3^ zyaium{*sIDYcD z&PUxByFTc?XnFYhb-dGkG2N%a^RD>wSRVTAqwW{p<6gTM^k0_0?XTSzcU|VbXn9z_ z^?dgWA9uf14CX&AA2Rn&J6CmH#eya=?v2BTc;sT_ zbB+S9*Lt{!M=nM_pHcAoZm5VyE=GR;x$gCUuOc3~82JOo+#7s(MLcpb@;S%A@^h|C z#3L6YpK}a&oGTOY$i>L#90T6yyDQ?6i;>Sc2K=#qs)$D}M*g0^a&PY?74gW$$R8hc zZ~TiD@yNxUJ0BY*Y1?yWt)A|AOI`D;(Ow|;9yJaRGeH(ur5{?>|k zk~p?N76 z1D`&NN8c?pFXdw3(`WJMzlG+dTnv0x8;`zQXkN<2z^BjR(SHlgOSu^M^jSRmZ=rc9 z7XzO@i%0)0G%w|1;13*gkN%6FXkN<2z^BjR(SHlgOSu^M^jSRmZ=rc97XzO@i%0)0 zG%w|1;L~UE=)Z;LrCbbr`Yay(x6r(li-Av{#iRcgnwN4h@aeO7^xZ=9QZ5EQeHM@Y zTWDU&#lWY};?aK#%}co$`1Dyk`fs6mDHj8uK8r{HEi^CXV&Kzf@#w#W=A~Q=eEKXN zeYeoOl#78+pT(p97TSNOTnv2rEFS&0(7cq3flr^sqyH9~mvS-i>9ctB-$L_JE(Sh* z7LWd0XkN<2z^BjR(SHlgOSu^M`#^cd z|DPWBsQaA1=Xp49PcBC1?|B^O-SG%$N{0%g|>nHL&>AQfLme{D)uHXi!i zw@rPK`?mQfZn=MZ)B5u`{JJ|9x`UsuNPTiKsy|>WOx=NF6{$-uM)muC=5_nuTamitVpN}d zMycO-v?6uM#i;)7uX)|xS5>4gxfs>wnichTAFfDUaxtpk{TE)Bdrz&7--BxP$*G^m zYxm#%8~!-Hzro`n??ZCY@>;*^J-*!CgB4kBaxq$d?wMw}JMCC4vK;AN>da{SbzJIo zJHA_yy5wS1zx{M9$9}@`Pvp2wE?QpebDZP2J!%Una@-~t zqvJQnIqGu!6RArsM)f()QJ3SNNL_LXM65eO@Q_lMS1{i7W@XXnF1S z<2cFV298x^xyi+7`8iIq+#EkemYZCRmY?G!^*Mfu)Fl_A`Wz>z%kfjBF1Z-h=Qv5- z-G?humt2hMb9|&O$4`;E-UMm$B6Z2ds6NL>>T=u^sY@SYzF zOD;zBmp|)u({DZ4a-{D}T3vFMBahcE|I)2qcX_2Eb;-r3e)^38tGm?i%K@pIzPpzh zt^dLsy)Nfk*bb1oQCI^btiwVB6Z2ds6O9Oq%P+yMe34^QGJdd9Je@rh#a@b#pw9Oaf0I(#}AR?7P%N5 zzc@}%m*a;>U2-w1&vAmf96vy%ke{` zF1Z-h=Qu%Kjvpd*$;GHX-?OIfct=I*l8aG&J}2-vKEH|j-2~C{+WxK2`TE?i=OO3$ z@_4P!a?*cTev#uYxfmUP8}^U$j5_bA^MK@R7yjA!>GkvX2fNO)s^e zw_LRGTEFARR^W1*FW=O}Cv5&pE?yq{)W;X8i!Vm?+du7f`5U1uN21kDxfs;vanwzJ zV>FYxXM65{kF5be%pyATHTb3L46)aU3`(c z3dmgVnelp(o4fjRo4xQ+I`XTaQR#F`iuO%dDdUFJoH=g`WK#b zKmA=GdmhVcedZ^lw(m3l5XWxz`GaVA=#Sj#zBroaAEM=<&%MIb7f15^N3=Zjht77t z@LpejevgFpv%J=4I}hgVSD3fopcrgF{Gt5%iNpEz6D<$x4}Zg6FMAEdk*odn6D<$@ z(E;}hkGr4#E}AW$<+VQBXTWN+{Y8FXn_RTK)*tw^xi<=*g#ig@H=KiZu?c+&9+m6?WpZ0 zo@x7~_po_|wm-97Q%{G%{E7W6y@zjVqWLKo1E2j2pZ%}Uyp)T9&whr-{#R&T%EiD> z>uEmkKm0`Vep%L^<5cU}wh!6yt1ut;TgBk`kKcCGeUaY{Bo{5OJ^rP~-RVBpU|Ej# z3)~ki5B>HhvX{wyuspA5)j~^>)&nrAMZOp|B1Zs$i?XWx6{ur?6dq` zKi;e2%9QWRqUE*gkH2!leR1_Q?u(X({+g{j^$Txve@$$U{q-a67e3_vx_Bh^H}d+6 z`={I&Ef1G}e_ns_z-!zWEwA<2&&KUu0rsE5FZ%vBE-uCX#8vJWo^pReyejr5|I&St z-@#(JM9ahF=XbJLesTH+_eINVefFQ}y#2&|dHac$hyGN4{lw|~`iYi@{^Swge+nP+ z*Kblh68q`z>e~KWc$@nZVtc*McHWm?|H3c&_S+{0uRnd}fIW`BBObii`;TaO?fTPa z@zUQ&%)}!XBcDEtPyZG1$i>K~&*IU4MLcpb@_*UapZ#YezyHMjH~9V|T3-A5D=eIoc`JF0`ABDC*uw1KRu>bS8<-GnPzk@|CT3%b9 z{>gsF`9G2Uj$DlPKhFQ*as5ohBNro|^M80;{}S=Y#mMLUA0F4QL_Bga@;U#9$Mq)> zk6es=&i~oW{YAth7bBl}HXieD5szGq z{O7h`wcWO}{hmAi`u6+RI{q^Mp0RzO&tHXk-Z~=&^H+TSE;@eULq7kV70)n#p1a9? zaem5u(em2kANA)?xGyfe#(mN9&|l2!UwE7Qi{cs9e<`nj;Y02(iNX5s|G3SyUt#;e zxlKH2_bri&!TE0<$9Zpjk@McC?7cH;demsuz-qbHV?mp+g z^LVX4eUbGpJO45L{feCTAQz+aA5(qqO?{#w9=RC#6Zg3{`TB}@X@Yw$f z%}co$`0QtR?0<#krCbdBynes5>%U;z&)#2+McaNN?>lladjBov*KaAmeu=i-Q!WPE zpT|)bPoyrn7}a0y^Vfa(6HTe|;0JZpy`=K98d=zDQkiF{;1O z=XEze(L}48axtjC?*s15*!pw)NHj0y;u(CF8&71p@x^HQXKX#GJ8SD-XmwLA2K9Ly zb@4^&l8aIOxjwHu_lYK2-IR+#eI7?$e3823VpMf7}VeC{3chvZ^({~?d#zC(PG`wr9dW=8iP z^0?ivaKG@R``mw+$7?@-G2WBczwo$w+<%zIL!bK&S$>iG4)Mh3{zD#T_ZKE#H^ttXzeUa;~cw%(@mB(@26<_4KE4dh5f8}vpcf~KX^Cl@5 z&v5>P>#q2Px4F;tSDwf6+V$u259clU{3mkWmt2g_|MEExkI#Q19=RC#e9pt;^Ph-E zE=E3|^YHlmC*qNdk^jrS{`6nA8~s;gyOE30_M`ve(SJoeaxwDhzj%E95%I{y$fy6} z(SJoeaxwDhzj%E95b?;x$fy6}@%clJP+5M$i?XT6OZG% z6JFtM?sNSqkB7_8btnA7huq`(6Tao4&wZcxBKLjbiP8O^>2Z0zx&M>r;l59DF}nYg z$8p~$Ug2%-bN^=^50{_&KJg15a*z8z@huO1?)$_Sx$hHCjPCzTkIU=L{hvG!_kEI! zTkiinl74@6uyJ6p&91TiA3M(X*tN5FHSr@k7kf4>|0aLzq}BPlo%{K(6%W4K?mw|y zwDGk5_LEW_eXWfP8y$OE8|{sby)FFTNq(iEcdGsH#4Y^0wb9FR&HasiuDrI>X75t>1pBeQ+AG|8?5`b~XMVlH)p# diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds index 2f3b2c69e945bb7b1d835bb049379cc9ddcf6c04..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 62382 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds index d5cb6b9fdb348f7062558caf5153d1f79080c8a5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 70966 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 H_QwAMs*D(m diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds index 1847eb88b5d1a53196c3e000fc3bba9ea18d1d0a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 71306 zcmeI5d$46?d8hX|r_cR<>pr*cKKEO93$3EaAk`?%s1v+}Sc*VP1jY+3?Ijja>YyWx z8g(2iu>@iYFF27(B08E;N14P5lySsc#0esfpk&li)YNE6mzQ~;@BMz?+UGRu?csE$ z@`oG?ANYOi+3&jT^{&14+Iu%T8m*1C#!O3VO=&v1iUtB-MebMsJU%AJ9arGwmMax5f z`5gDfm2vk)%R_(hGwzE^*SIfQ9{LOW+%No@`wQZ}*q?ik`{Mj1?u(X(^=JFtFTB(J zS+PI%*>~9f;_id)iV>x-7x z)@L12mvt{vms~tv{mDDLzBu*AUSG7lwm$1=;)(8ylkM({mWTe>P40{1hus$~5BXV!z{$-4{DAa9^}Mtl!@5 ze&HSNw~Otu-}VRYi`$;)zG!(^zvX`S#n!)YU$nf|Z=C6Uucf=2Wio{>OCI-;yt`-sHY$c{u;{J?e|}z4W-5QU7B)>u<>y>3ig&CC(cc?GYcksoi|1h2Pm*k7|9dgm~us(f<`XYS?UyS+>)6sYE z3-58C{*%YU`t%)qk-mc`M*WBB=sWl#eTQ6(`VZ3$T;je+-${>~X?ZyR^d0Jp^c{RL z>OV|J-@zB@JLIC}VSV}zzDVD}7o+~ebCmNYp8F!_P2^&9{=_i?k7JLBM=nPG(lzdJ z?8Aq63_3s@YvEKh)JBD3Zao>w= z-CHi&c`W}jLSk6euWxncL_?y87KE=KHuK zH&?_X7bAb=S?;Y)R>UJ0BY*W?_trjC5szGq{PmZ+x915J@yNxKS z{l0r`AE}5(E=K;gE8S~9vmze382KID?sa^nA|AOI`JLCf*L6`vJaRGeyVu<7{%J)# zaxwCIKIvZX>nq}si;>^=RQLLaE8>xhk>7updjs#Sh(|6){-8~3Yo%8+}$qJaRGe$0pqyySE}9xfuEM8G04{N2HgLiw#P4g(0#Tck7If0v+v=H>^pd( z<)P0$k6(C~`|QI!j^&}xa}QtSxq~NK9{N1@@kO4y_@d>Z-*u7uBF7GV(elve*hhVl zV;8x-6${;s_Lh`aOtBU&E%GavE#;?66*zG!*qPtUnu_$SQ_pi>v^=ao z(c*sL-?={_w#2^rhN!+FM*X90$!fpco_jy4h(|6){a0o{D(nV&r#U;$F|big@H=C|M=nPGz_@z@ z_f*6q7bAc0CijL8SHvS1BY*f5_lAE}5szGq{E^$-8+}_vJaRGe$9~Vf@tqa%$i>K~ z&)9f6eu;SG;{Q*7#~*lo-n*kdq%OG_)#p7vJl;DL@yNx<=RHQe=?g02k&BVfd!6{a zcPiqMix26KwVcoWcYEJy>-w|y`tvDG{EWHQlg2a0UgqQC$me~$@C+Xx$sD@g#|sC1 zd?<6^B|a|pf6K?kzSDeM?EOn07kheqT$&`^`RHxXZ`eGuy86 zak2FQ9~WDmX5;7E>x)c#<&oB-XzTOXelymd?ssH;Y@C#RSp2>D)Tx7fB ziR>4Qi|jv)i#(TGUg7&!qV0eDu^;lc-JTcZg->;Vd*$Hjr4`?%QuY#$f zj~90M__oZ}-}iBm$725z(>k>MQzU2q74dj}iaajkg;t+&>cbA3FUAY4R?0J3F2)OO z`59;VA?t;4k@ZF{vR)Y%S?`RCY!}8wwj1Lj+m-RckNP;rCi+g=sT)5H4#kpVlc;OKrpUd3+1s^Xw;N!b9cm9cw7Y_OO&dlk{d|aIRwvUUG zr~A0L!_Ezu|HAL(^_*$zv37lr+rCJjYyO8mIKJQZ=S=z}<05^O@j}~PjMHynr)_7( z3$0(LJd-}oxJaL8T;x1}agp-`#zoE}7#BIuU|i%pgz>`beVp?ZrsF(@@xssNJd^Vv z#zl^`c!i&Bq(6=k`eQxvm)B>wzS*z&6L;8l;_(Y@ds3h63E9q!i|hyFBKryBBKr~J zg|@#j&i)2>AMo))+h0?j$$pGq_)8yWe`h+L2aJn6Psl}{M~sU+&lne1ZP^(we5;T1 zd}TVG$BY+#I_H@j2UySIrv2MLe=_Eu|7dxKx%SVV){1+l{NF_zZ{A*KH-CPF*D2+? zm(3H`Vaj!{2W>ulJoN4QR`Nt$_Yy4+{c_!F*dM1{_qxmL+j!{fx|gWyUgD%z{&kFR*SFI0i@NS5S{}~7UEfN+sOw&$<)N?ZUZSphiJPu}9W(!SeJj-$ zb=^y}Jgi@?d(HXdl)Uu(pVyu2 z_ad)5gV*oJ)R!kdTwm|Ih5iJjwU+=q!df!Fd^#02+_4U4ssP|pOP4B-P z$OE~4e({OfrmKAh*z7OvlInEx$YKiuFCpJL1Ya(gZDtBTA&xoG3H%fE%| zryJ^T;ri_ce+$=-H~3q)e!aoxIyvj_VO&4o;BVpj{RV#v?;mXNd7py$e;DsyZ1A`6 z{>cV^3-_OI@V9XP`v!jt_up^uw{ZXe2A|Ivu>K#$=MOgcTloCv2A|IeQU76leszP- zXN2(i?2*WEgIu({_V}@d>*pKlZ{hm=27e3hA8hcq@czXHpYt@<+g8ut`1~#BOM9Qy z#Cz@a6uCHAzy6ty^CWzc^DuJJ^4jgkbeu2Yi=2m%i?g+i=2nyiOV}^e6Kx^L*F46qyEEmEzk4%B7G-4Zl>ko z@;86hfcnj!Mc{Fw{=+zZ2T!E$kc*aw_31nKV)JJ)cpS?^pT2`H(s%I0sQ)k>eFwkr zLH8HM{c(Nz4!+p@Sr{JQ@^Jo}KWoF|(0A|(hhyLROR6u@cko5a!}`siHKIO!2Vac( z57RY&)(M}!LoP=Bhv}L>YlYwZS*$!B&cF4SwESZ8XTk6-5B=uPno*y=gC|D)htI7u zZS!}Q@EH0olRREqpU=(Xa~(p&Cl@WR_4&L$Uh{XB;E{`w&-Vu4a~(p&BNro|>jrq` zyGnlM9yxv2p$LGk&97%t{dQ$?<%>|z4BcqK3-d&>jwB-hY+c&?=s2b zwLbUV;pw|dAiloKB#+nn-1mpibqEokT(rE_=e|QceOC#@(|4KV@minz9r5*DB@mxn zjOz29CHVTT5{ReoGRfn$_4&>c{PJBT_qboa%f!cPeZI2X&?-&umM z?<#@#`Yw|^Uh5BB;(qgYmf(|%_V~3v-&sO^eOC#@(|4KV@minnEWy`zl|X!QF{;mZ zmf-8VN+6!T%OsE2*5^An@XL2?{K)+_u(_?;J2q`tn3BahemeCGy!`L2yS zyngvE4j-@e`OXb|eb)x0zP^hikJtKq=LWvMYXjozyEyWAtxtcj&qt^JA?|x|BlQn) z)90r*T)(4F;L$%sJaRGe=@WSL4-t=CjC}e89{oeaBNro|{(wjS5b?;x$fr->(Kkdq zaxwDh6L|Cw5szGqeEI_({X@hf7bBnkfJfgD@yNxK~PvFr%L_Bga^63wF^bHY@T#S7B10H=t#3L6YpFV*{ z{}A!W#mJ{W;L$fkJaRGe=@WSL4H1uAjC}e79(_Z^BNro|K7mL75b?;x$frNxbzV>r zk6es=`UF1xL&PH&BcJ|&N8b?f$i>K~Kj6_fL_BhFlmD;N{bysX>GK4wueR6gk2T-8 z-eu1tyVqS@w)@7(#U<`Hw{daqYd$W{{+W-9Gk@*l;`AT+xVYmg9~ZZCU!Fa_II`Wx z#i1YgxM<%6o#s#M{ko5fU3OnG^DlNT`?%QlJ|7p;I+*cn-AKOufr@zKB9F_sNL|K7 z=8JKW`DR>XxfmB&ZpKB{3*#c|jd79n%DBjSXIx~vFfOv)7#G>DjEih{#zpNH#^&=6 z?LX=BKX&#~?laZ>)8gtk?KnPV=N6eOx7fb+6gyYQL&Q@o{nI4}Dym zdXbNd6Cd<(aeSMPi=$8SadGfg9~TE6<>O+{%|0%2KQZ$swjcFzaoZPtT;yKU=6}e? zuCV8NCLZG=kIT47UB*S`i*a$#=AUtq=Mq#&m24ks2$1>$M=uyZr8ojHl1m zWHLVYJs*dR@4C1m<2z6Fame`O$0{<;ek(H0a*O06-|}%tK6qY5#@U7<A(lXCD$7Z~lk%%ect)#uLeTe36{GB02LXk~9AzIm;!Iv-~1C>qjJK{fXqPSCO3c zFOsueL~^#DNY3^Z$=U8AIs1p$v|ly!$LB=&gEjkG>W>@`IS#J=q$0=TrOW)d3>jZM zP?7Q3Py0AzeD^ylGCtGi>W!9DpK-{zdUooKmNVasL&jM?k-Yi5fSkT1 zGS2!F$yu)=IqP2}XS;~xi?;nla<;2T&h{6{*)K#}FU|e&+3Ec1fPX%qVb3f6*<<^& zxX=ETe;4iFoBgYjpMT$C`!DRdV-xauB5`Wo=EZW+^5okh^ZOX~`x4t*8|{sb9WDI- zREt&Xn{Gcac^!Y(H~RS8?%1Pk-@m2NG1>9tlOMjFK56x)WN&E5aZ9ivzMdq9OqUH6z)#o#@)E9SO z==DX*LqC0n*L-p1o$ia4*ZVe~tEcXSpLGV z`}{A8djsF*f8P2k>t9@WgVz@=uU~$vKX=6Ii}O=nU$ng5xB5Hn_(6SfSC7{hEwA^j z{HulKF~)H}SsIDMAa7cH;%tv;WrqkiE(di_c9INN{6*Sx+s!Tx9S zC0brvpK~Don$LB(-;-Rl;aZ>d&YvC!a_k`&ZMfFo{y*$|;4*veURSYe-Hu0=i#A^C zr}K~Vy?$FJpLr%1EwA;d!@8or*lOn$jrYs@>-wz zJ*!^7(DwV3i>viMb$adjM}3jc=#q<;hxG?<^!nnE9sj8>T3+i@XSmDj7ux=laxpmm zQfI{WTlPP3bjs_CmWTC6?fA>`i+pC7`l98vKJ_{FP`}WQ`zaTL{f|1^ulD-l4txHR zi{ck@FUE zF*<*t4(Bb@7ddYs7o+nR>TupdeUbAPaxpr8VLHxR@I}sB$i?XVh56*Xh50W$>hsU} zOCGP?{)}_pf?s&Mdz`=I@minx^B3xH-a>tm^A>V3I)9-K-_b&Sk@FUE(em2$M;*>vs4q_2{!1=K=P%UZyoLIO zcHB<67@WUQhw~Qdi=4NRi_!Uuom-?o&NcXhoVV~N+P~H=zdT+)@dwG8|FO8%Pv<#y z{*b&(UPqCO(fI@C9Gw3!y~ueFxfq@QFrS?FaO@U2?;#hX^B?N)kCp>+-a{tZzt=85 zbvW;#e&Nr(KIcDqJoGv5!7sFVz)Rny1B3px-QCkc*aw z+mG`e>KC&ASpD=}O)xnBp$_LgEWgNk54jkf|4@hX9_ovn_mGRx`44q)sb6S)BjsYW z|5=^wSGy~6-a~!S@?+Ou{%zRCGi^J~*b(Mv6K}WwCKqSw{c)TBo?C4m{f3)akb42g_e*$BmSW5B2&zuRrQ^ zKH&Amu6KKV(em2*_~|^~)}NU6W6MR$Lx0$|6YF0bIpXz2%R_(kQSKN1gZrc6qhf#T zUG9tH2izAeudUB|9y-_8f8nov{SS%f#{Tf9-4{nLbzihRtUtQwe&HA09~Bp4f9$R9 zi|KoiY`H|sYwNT9=~HY!aqvc8f1>5JKI?DbhhASCwCzDIT3+i@zyIxCUmQ5q>x-7x z`qb%vqt_RCUoOp8rscIh_4}5+e&LtBexJA;`Q35EBr$GvH8>D zX|X@~RrkfI*SIfQ9@d|DiTmQ@nERsTwLa^4=Fffoi#wm=>tD1y^tn#R@vra!_qiU) z<69p3lize-oVwOM(elurc$NF&G7mw3_7jE|Y;^Mhp zU$ne-{;9L@F|RK!Ug-5j%WHj>b7{ou7k=97FNq`dKJ}Mue_{CxZ}<93;&INumap>q z;>x1e7cH-yf9i8@74^lHeB2f-uk~5}mHWKDxcXMFFIryfQ-8(w6Y7hrxqpe4*ZS07 zdz#lTv@GS~)9QWdubu1l3xDnFe@zU|Kd7_*QLiuVIp6Dxme+6~%fs#0@f!EVbe|57yX=o+dFZ!~xnFpz zd+lP-f0_TbKX+f;_8j*`%ftGuXSrYafcvdtaQ?&hYT7+2jn>mD?mN$3e_Jlvcy0aG zU%1CTN<0q4BNroo+Y8)l@2QAKE=GR)=iKYCa~SGFJaRGeJ5P3x@1e(sc;sT_^BNhi z+xA}(k6es=TkPa9_3jQrWF-J4slh(|6)e!7R(=5_v^ z?n69sG4dCl>E6Q8ig@H=K~&vFh;|1CV~{g-pl0p?N761D`&NNB=D}FXdw3 z(`WJMzlG+dTnv2rEFS&0(7cq3flr^sqwf})mvS-i>9ctB-$MKMl#78+pT(p97MhoG zG4ScLc=X>w^HMGbK7AIC{#$5X%EiE^&*IU43(ZTp82I#AJo;~;c_|kIf6u%9{Rgf; z@cskjeFt(edjEmxc;5l9Fu(5R{f9hW+rJs-eFuDz_Z`T^==}$#<9!Ewk@p?a<7P(h zKQJBd8{ik_>lVC!kjKOM=ej?>$aQ}_F}nVrru(k@T)*dWxNc7_M%V9|j_dAth55SC zym*}JM_f0@7rAcE(1n2bp4s>xNeMB_-psMew@d{`RBSXzQ}c7JTbcd%X60NcATqh-yP zn8#~<9>49cyuQe}JGp3its{M5kJtLV=fb>?PgLYLWyr;7{f)lL>yFv- zG9QroXM65{h_^HcjyxpsZTCO^#^T% zsXKUMMe34^QT_g3dffp#4`lfvb;-r3KKG1LzyC-@>XM65{oXHl-M;5mq%OG_)#p7c z>h~U~NL_LG=GH$n%g~w7k~udZW*G_fSRV zn_P_MpL?d6?@l{bi_Ay5mpU_Ae;wy~-HvZpq%OG_)o(xD>(VQ!pL(X%C1*bJcG?fkQynGRp1uJ(&OUh8w5 zV?W{eCvw~-7cH;#InHt19XM65eU6jV<@hO5mt2hMbDX4Z?}3WcB^RUm93QF6aZ{u&xfs>wI7fYse-UMm)B6Z2ds6NL>>T=u^sY@XM65{q!9JR(Em0=L1qVeReN1TK@T$cwMfwupS_F$;GJt+_Syz+_x%HpInUU z&z|OW`K%-LA$7^csQ&JGue;k`bFm*l>XM65eeT(%?yh%Lq%OG_)#ti7b$7n5B6Z2d zsQ&afyzb1U6{$-uM)jwx&rzSxDvH!47o+-wGm6yZnx#lxaxtpU z@q^nE5UEQpM)f&PP?zI}NL_LXM65eU1~<<@g~|mt2hMbDW?q#|@FXUb z7}e)EL0yg;B6Z2ds6NLD>T=u=sY@U2-w1&vAmf96vEwAn0dYzBYeCTn=dAvMc>ocG9ALd`=xJxcZ$KQtiah(xYWIp&4 zEkCw?{`_FqNp_rmi=A)ZR&mFy{kP?!jo11eKej^W+4=G{P5g< zQT_H0dtH7bmH9}tx+xcf`bk1zBtg~ zo@jaK59H+*2hVn2w7k|IxZJnfpzVJ=e-dqdq+ATPAJehl;EC)vo^q=H)x4Qk)cG7keZN5`32J?TS z>;FX8AAOeXPX8^m`A)eQ%>Rk@-xKYhC))o`w11sw|6!dE4%)i6bzOLqZwr3+K9AQP zKN;`;lKUdRD?u(=9{PR%(S5Oh$$ioC(C>YQ`-S(r-zz>N_IvX37vAK4k2o0nU3vM% z?n~SkEf43vGcUi$?^3Y-M9V|JBQJm9{qA>&$65aNy!?eXx!*1xXZhRm@{8LpabL7N zod4Fm{9@aZ`=aHc-;$TV@P7Bx?;_cHw7k~m{AA4bea=6`@oWA3L9{&dM{jXo9Lwh) zqUE8_y~5NNNAvlQXnE)lpX`3&?LPl}9|_B6d9BZWHk8+2VP1bjVzB=3hx7ImNAmU) zEf4FDe95+#Z3A)i65oEJ<)J?|=zif%?x){{v-z{U)@S_;T5Z<9$oGqri#4zd)Or(-xBk*|*t|m9pINV|r^DdbMdHKb?&v#$6yw+zwo3MKY*nbK?<@?`+ zxETAB7rS40)cr~E;@F@1fcqlfgT;J_mWT7t_hd2u;>=a_0Pk{fRsC`V%b= z{pq~@#F@PPM9V{e>Y(pGg?Ib*n-UMke)?Tu+kXphaDP&4ulHHcJM;E0{FJZ1ono;4 z=`(w6I{J>d@0s3zM9XWJpFWG1ej_pyk6es=`Yb;ESHvS1BcDEtNBM2ZC`%& zpY{Cw6Zc%@`;TaO?e@oC%g=vt{WSMQ%R_(lVt@V@9(6z6Lu8L{dFb;!RUAJGZGT|C zR>WZcXS$`l{373jMJ`%iTc7^Pe#iAck^PQbjP^gS|KaienTSU&Mn2d7@Ob}A#3L6Y zpX+~kyniL)k&BVf^*=n`e-iP?#mMLSA0F>NiFo8<MlMF%kM|Goc>h4eBNro|_X+TL|3<_k7bBnd z5Ab;ZMZ_Z)BcJnZJkGyGJaRGeA6b9ZdfUqSd*t}*>+fIc_{;hCF5CBc{Z*LHTX%`U z`71uZ3y)uTx1ay+7LRlOJbR7%;@q_RqUE*6KkCoj=Ds-peD_7mLw_MJf8h=8FNnuk z{>8lfg?GEZCF=Y4jr{S4a&PHp1-cHa`Y7+n8mI<9-;i(L067o+RnX}T}DZ`Zlg z<8a-ZT(rD){V^Tay{TV#llxr%&f~TI%sJM(?E1&dcPet-gItWRe@yqgH~s#Kc;sT_ zPu}6))C()(k&BT(@izA+7b@bBi;=(M9QStQ<%f9WV&p%v{!V=TaSUPqE3{)7>y=|# zVsQPJ{S1%&uh6`di-FI6hR6O_XkN<2z-K?hWB)5OFXdw3=jHpYUH*AnfA;)pEZF)J zdESwW(erO1Z@-_C@kHhu zUySB|mn|oCciZw8THTb3L4Bs9F1|=zaxtnu+wXN}-`_;5n{qLz&vewq7pY4wM)l{; z@w#*0X`3c zhvZ^({~^A|AOI`Ml1<A!fq{t@xW#mJ}s;?aLaJaRGe>A!fq{t)rV#mJ}s;_>=J#3L6YpYumN zUO$L<i@fiI zCr0l-rRi>SpZA}59Nu>#7o+!|n2z_I@Ct8mpZA~gcsT#O?}T4?w|l(*gl~E1bKfVv z$bFx9Vs!s!nl3Ll_kZ#@-1kW?M)!X*9ru0W72e=J_kZT`aQ?aP6Tk3o_qhKP-}2Ds zzE6CS`#$l+=>E?%U0!bP|KxGF?~`2IbpPkU^!=+tjlDx{_8!~+w&`AC@14E2i9gS| z_>v9tzri2B-@HfJwV(gm#QW_26LN9m@Ap2b`TJk(>O=bD`$zeMd=CVFqWx?0`a8zw zduH%NeQ&C0d9Ba)Kk&!*Hi*=1{{A@2L!Y|%qP{mme8~Fw{u}N);X87gMrd>u10JF82oheG|<~x%kY7nE&h#z23dyJxw$(Ty)l#7ASe#df; zuQbuTl#78sy5`>K-#5{`l#78se5ZRO|E`JVrCbdBPTTg(f9L;dqIoG71HbFd?sY$= ziRPtT4E)~x?)BQShWSV|FXdw3ci-b)&wps5c_|kIf18~rQn&r_O*Aj%V&J#m>t4qn zHqpG4i-F(v1oztP{FnJiG%w|1;N!F$FxRFn{DD7Ki+G^^`GenT_r9g?zs_ts!+p`l zYoEVqp1Sa7_Y1%7{7FR7cCF{$yN6Yzv@1}N6$L3JoNdU zdiGy&df7eE^3b3Dvil;R`=PFAd9BZO;&)YKBAU1&)PK`-)_3vgzmUF5E=K*A>C$)g znpbFjH|1i`f0?f19bQ+Y?~;p_*Y3Y*I_tm8H~kmVcge-5|1uqY7f+<`l8aIQWjgvU zzDVCqkDD3wU#6q);ul)qO}QBKU#6q);*0cMa?$c|{n2;vMfz@f+{~!|G97&vzwkcy zyTzdY;%~p&eUZLPE?OSWKYf?_h1PfR>A#6V|7D!Mi!aiD$;GJuG97&vU!?D*$IXoT zFVoR?@e9AOHmk&BVf>tsA$ zKZ|(eV&wBW8IRY`A|AOI`MgfX<8`x$M=nM_uaoh3{Vd{UkWISF!i+JQ>^E=E4*9DDxSo_j|tay^k;wDH>KFVn4G=DxURyZfT$p}#ia ze&J``UlS){f8}r87x^w|=1a6ZtiOE3eQ{;VebMsJ=Xd8=e}%WZ&+pGMAC`wcpWDVS z{Gxk1#l_g)b%pyP-+fG7(ekkV?k~76&c51x(elurn{~hN^Y-6Xe@>jO_qjgGe#`Y! zk^PojjP~Dj->21@?f06Awk}gH2K^(w?`!q(s1K=2E=Kit4Z64MlNIsE#mJxjx9-gh zSHvS1BY)<r1M9SzC$irUVHpuI{FUhpCWxHJ#J>y zf0&NGgI{QUC*@+$f0&NGgD=u|$i=AtFdcmdU!?D($IXoT57W_i@C&W)q+AU857W_i z@C&W)q+AU857W_i@Wu4q`<9DQ|G}s4;EVJfaxv;ZOh@0rFSNdsaxv&XOviOQe39#R zCT(`p) zxo(FiM%VAsbYFI#>vud3*X_u~==vS6^Ehts`cLGzK`ute5BedKG@p{+nDpe}li_PLdJ3+PC-b?aITI7580i zR~9T6ZM?bu27mjA9W}mVSJU27aqs2!-jKZNIQSdu zDwc~j-t2F9CxD~H1!vguexQlA+$k5&*x>v6)A~36{0H0@FSPl=7cEcqA97Fh{q{1O z+sU-wo^od1T6t<)TMxP4|IQcEpYQkEpKfbwtr@#Os*YW+XiT>0C#E7>P+ux&{n zvi8-seEg+(=Qm6)c;CinL6`5TXQnNc-*aia!Pb`^QiEpOgZ7jC}i z==`(H|5NibFT9W0FhA4sDAZEO5r D%hjBO diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds index b772653dc5ec80d31a48fc37c29f4e2cb9723b53..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 71242 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds index 4fbabaed7376f3b36c86a16027e0d035c09a56c9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 71562 zcmeI5dypMxd8f~eG^6WiW~3QObCEP7&5TAjYyl3&>rmoiZX0upLjkd^5NsBR6^qMK z#uc)L#cW6*%Th@S! z@9Q&?`_+1st^5I#avt&f`Z;gkPQQKn^f{+D+#Bqz>CFxd_MY4u(Esr_u;Skr4i3Na z=U#L4QRg0i@fF8UzT)`t7rpT0@mHTbdHm?nljmKd|M!^VR~26Q{$iEH<#)s1XCBG@`FDnI?!7X6 zQ+Zl{ZY2E5&xb!}j^sZ34%^?{b5Z!F^0fZ!H^VpC_t<|-<()n?*ngRKll_+5Jk$O= zb6M0kXBVTssl2m3>xjCndy~54=9%hG-4XT8>0gifrt;4Etf!qn9=6uzlE^(Sr) z-<&)VzNtL*w@rp$d3X5R%*oszzdn3(>&4-l%G3Iz-wod!`)K&4^3>mQW%%akk?>9B zslQpmSQTXQOk?>9BslVYv;hP&@8@{PL_17C|6}Z_;p)99ax?RH zeJ8x#A8v_9Zf5?T*M&Ftw3c|}X6Db2hc|y`OFVKj^Y^|hynS*sT@T`so0-3GG`xlT zTjG(MnZNj_;Vr$XB_6q%`TL(8-ttsSJaRMhm%kF;f!}S3M{Z{R!Iy`3=&>#F$j!_j zcz$?;^DXhn&CDPCyYSY$za<{InfYs96W-9{TjG(MnLoTCyy4Hb#3MH|f87n?t$$%l zJaRMhHyj9W!*^QZk(-&n@x$S5dRggv?U(7nfYV)hd2JGE%C_B%-{N^@U}g>B_6q%`4dy&O?; =VzM^ci{;{l}!2 zk(X6Dmp@aR7#9=VzM^cg(*kBLWaWX6Dmp@aR7#9=VzM^cg(*kBLWaWD`mB3=lXZu0Do_0}ZF~I6`@?4& z@;J&=N`Vva|h2_6smv;UaN)A~!}QNQxesJ~>6=l(*o|Co!-{$nan>+k(e)HnBiIO?0qQ-8kMf6Tqj z{$naneeR)P`hEs$A9GK$|Cq{CfA;-R-`w?@sBbDy{h9gjEB`M18FN1O zr~Xs;=JfN!HK|YuIJu2TjG(MnZNc!;SIgE zB_6q%`NJ25w{D~*9=VzM>pmae`ggX(BR4aD!3X8xAR@V4CD5|7->{L!1k8#~bwkKD}s@$iAQe!|MYkK+o;cbchrZ}B{#GByvK*fdxs_-xtaOA z$A~v`SxY=}GxK?`6QB1^O+0e*A^nMgOS%8<@Y}SmKd#rGPwnGJ<*Fx5Hk|nR7&o_m zGR7+(7vozSj=dwsE4Re>Si>zZi*a-0OEGS4z97cUO@9#M=EjXNZf^L+7&q5_F~%#O z5##F`4&4&tmAhknsNtGxW856PFUHM*r)&IDy}oFuR~}_Onp&Ty_nV2Ka=#<%8~4y$ zAGNNxe?Dr$sZZ$j|3_L*UlQZy%=cs5oYlRPc;@cq7_adagh;eh_k7C?hd{T^?OJ9$1bN{Pi+&r)|#w&k2#t$@PUu5|!Kd14}=zljnqV2~% zYmyIqA;t^kv+tIDTI6xbD^;Iy>Oag+HbH(4&mO_rN+ll8*5$$DelocmggS3WPs zS^rGOcEPV)Zt{j~SH?}YJD$mY!MMr(!??+FdEgbXe-&!~-a)^Pj-FY@BjTkrA|3i#d zzBtC$HyqZ!!uqNFu^1n2xb|%^UO61&Ya0&!Y>b;c7W6K8Zqi2?uhjNpoPG<}X*)AsseWDZhV*g9P5M0JCg%Z+o17;wZgL*MxXF12<0j`J zj90!R#yMYMI?iJlul!__H{?8sag$>$UggJo<&R^8|5%UwHS057-|W}?nLD(dc>GFj zPwKNhA={a8ll_3)WItitWItlOQu`a@>~C<-u^6w^{#x>e?8o?({}|)!?@Y(@fN_)O z3AxGhh;ftW8RO=%mYwm+H^(^7SEl26%y{KTn!F*$0oJp5%KjanKbeTne+;};uKqhT z*z)jn{M*!c|Mq%v|K~?|ol>uRX`Z+aQ?Gm7ulb1a)YtW`;+ekgWhzhodfjV09;aUS zx-;r)JoSCu%k*_G^OWmfr!Bv)dzrrOWu9{V>oi~2x61OHzV2lzPv>9Pw~BB2x|gXu z^?lvT^mQ-ulc_-N}A$^13s5{eD_~d*;LS{l1Io_g&0W-hVl*zTRIc^KYKv z{g=~xzwcuDeHZhT_g_x)>-#Q8V?OHpF3s`dl=ojw^Y#8pnSayoyO_$;?N{G-8IQ-Q z@4Ga|k5k@%Ijz3mcQO6Gi+RfXFQ@r_-^KL%F6Jrkzntdl{gtx(rr&olm8Z+^_gzfC z?_!?v{>y3g{l1Io_g&0W-hVmGU-SN$f79=~n99@n_w&YlIM1I|T)$f}|EsuuxWXSl zPs{#ty_Wc=mdro7sqxO`U&Zy)74=tf{dR@FitEQK{8e1PUg2|{ob~rGuAi^)S8@G* zg};jT4_5fRPr>{@jQ1~A_^WvTWQD(q`_EVStGNGtg};jX?^pP%xc`5J&*uzS{}1Ey z2P^zleExHV&u4_F|1dtky29r(Lil|4$mF;|ZYu9Qeyrm9`HK3hxPHIFU&Z?eEBsZw zf3d>nJdO3X+VeL)f6MvO;b-^pD|$UeZccTtf2QL+3E$*AjNDY-x&4@q^Cf(f^DuH# zdFpeXgl}>_Rvx#Z^3>;i3E$NDR`E^csn2;5zRCF*^-ble&v_EQ$$1#QsXX;LPr|SK zPWT(l1G&$6628fK81+r%X?@O<@GCzXKIdaRj`Gy!JPF_AJPglNp8Dk;eEBBlVfd!< z)E{_$)Hk^o6W>&x`sFhSs&8^HD88vY^_RaA_00pn8@{PL_4lhb>(As~Sn8X~Q=fZn z@lEc<#W$6w{=(7lEAJ0~!91G#d*2nl$-T(bHpx7_f3H1{L*F4c zv;M<$1J958CVi(oZbRki^7nt%fcpKPMc{F={=+zZ2hXJMkekZW`t%)qv;VUgJdX0z zr|;mK^c_4i>px6K-@&iEKl}yrXkMSbgKzeK7KX=Hp3Z;&XKi>K`VL;@c!p z2j5hl*6;tU5%uXi_-59Bn6Ce`PWbd4ax?2cOxOQeEByY?Vm0IG{Hwo|kuYBxv9L<=kxk_{oh%FM{Z_5 z-y49>bqEuW+{}Eg8{pOND*0}B9m2#XHhU{$zO#h-{;m>;=kGFU z#yfq!vjpGYRRZzJ&8$A(S%UBHDuHeEI}F{lml~H#499fJfgj@yN~0r$6A)H%vTo^A!In z<^HpY!SZ>6!B^|``lIEG2iNO)qu0G$$T+xGT)4wEEnS@%gwmSdSTpTy)kaGUKux8?~I#l7sgGt z8{;P1m2s2p&baCQLhL{P@cvUi|D&^)dY`H9pEj5OM#u4Kom({Af2;Pjr|MjxA@_4K zZtl}#F>dbpg%~$?eIv%r>6gT~x%0g-ZceU^adX=fV%!}4Sd5!n9uec_##>_C;S#CUqG%nJ>o8QO!T&Cd-bi{kCzwIx$#3Z^m?N z2a_86|14@jmUrpxEg3JLt!c>k{MTa~GQRtYmW=N@KgJ>BQy*-}IQy;1ILmF4Z~an? zL-NrVv}BxZXfp0?49VFCOvb&BKyvmWlkxulSig*$Y;Qc1oX0oGscVumeKwI$=Tn`0a@KK5V4;cF!z5^4#$0TRcvG&n>-CIrSNbjJs!- z-l&}UW*jok@|ooQ=LO{SEt7H9pGnSoHOX23COO;1Bwx_>Gs)SmCOO;RBxk=cwO;!B z<8#XS)v@?|Ku^yr{yU`o**v0u@^4fB?)R@Pe)Ibl+rO{pjwa;uMCSBf&5LqVdGWQ# z{62<$Ut;@UZ>TrCV}SoZJ)mlvXNHbV-N4^FdYk#&?!+Ut@88-Ro*I7QxewnipS1d= zVy}E}<9M7~vg{8&_~18G<0tgrds`m)SmdV0`2s$1py-YT}cd$~%2NKQ#HN z@XbSis7$%3ywe}}KYAWq7t@7o;Q{&yf>KxR5&itCp zH}y^B-M;GcnON$ZdoGXqrt;J;pW&5n?tfeOrt)rI^SOLs%zxzrG5^cvg}FbsKK#nt z!=E$PC%%@Sb2FB|@(VHl3+Ca(*Zl8QUuFH9`(7XQP37Iouln;RqrSO!I_jIsyM5K) zrQ-+n&D|TLzNx(1SN$3F36|fSeRtG1m3RB9KmFFIZ_Yd^>YK{DebwhPb=0r?+o(Tf zo?-j%_*~RCce4L!zD(tv^*IOPum42jn;P%*%lXHpQGZQCKJ!d&D)02E!@8orIjHjra#MMyPn|8=|5)zI??rt+ z+uV$&{;;+^ex=qO9-k#I+}T~9`CNNz%)dGG^D+OX^3MABo4*#mIr8rCP34_F^S566 zAMT~R&ex;84B{!4( zk2>40i~8mcJ%7nf<(>7JZ_ax-{+OJ%kek{0562n5hBNWV&FuV#<>b7DVbdFT404(Bb@H)pi} zlAGE23w1bep?;-~+a))X^B3xH-a>to^A>V5JAcu+Mfu}ggFnc53xB5m*}44oc>Tm5 zB=^(*zfDY==P|4@hX9_pK%_mG>}`44qQ zZ;JXR=RM@6@^t%g-b4LL_8-+R-_-<@^B?MP-ox^nocEBM+4&E3IPamp$$1aCnVtVo z2bcPl>Ki3Dv;9wXwqF;n$$1a;P35Przvj1Ld(YB#n$;2Jfj-`@|4nYrcKef>|BWBh zJp5M6O)t^>C^t2p*5CNSsBdo4_NTt7ywj)7hUZ3obEEV!Uk#Oa`qbH=;|I%MspCe; z&4+sZ-mE|Bth+Djo9o{m^-blS_3_JjzSf^v_G9Iy^3)&Kc4GaTTTe!PQ+euddqnt^ ze;xid^AWi}@f+crlgGk0m3P)>J&#=y>%Z~`vHr)*OLBkwBjKA{UmU)vJgvWNA^gfu zhri8S$o+{ohi{heLDF)W$~)_`{pnL|KXde^SbwJSPM`I+ODo^Y0d|CMB)I|8E@=l-iJo|gG{>@#_jrDITPkpWv za{Q~jFMO^?^7zVAf9h|-H>ckio~bEsl3yt&fX_P{Yo8=N^U-(+o%3sJzuF?spDbE%`^1h zeYZq?bK#PxZz}Jcf9mY}VAMAkE|2=A@=l-ST-+MtybN@orHdIGHHKrvgl}@*glA^wPfW*o55CEH54oA0|1cfrE%+wqFXeF?X6G+V$LlBjN%Oec=z9$@vf8tEqcbdV?3VJn{m) z{#I^kytDq`_rv2JB_0Rjk(-&n_GiKy+Sn40+|2x;PlPwDa~SGFJaRMh*PR<4-$RcN z@yN~0=QT3k2JOEl9=VzMTI}L+Zy-LzBR4ajYZQ2!)x%9Zax?RJje<9FZA(0IGxN8c zAKsRGTH=wLnLm0{cwxY zGxNE|fIs>7E%C_B%-{Yy;q7=%OFVKj^LLJgxATu%;*pz~KXpxb+$YC!Ks<6Y^SP%G zZ|0X<;*pz~Kl{}1X8)lj9=VzMyHuO{yXBa8p8__HnX$j!`OnhS5~lP&Sc&CK8b zOW`d)vLzn5nfc4#4)4G_TH=wLnSbzk;ql$nny!3DH6FQ{`Se-Nq3OSs4@CdvoVpoL z`!61Sw^APc7r*dX-Tj+Bi%0*hlvi>y@#(X8^xaB%B{vhFK8r`+t&~@CGx6!Oc=X>& zc_lX!pT)+b?^enyxtaL%Sv>l0rM!}xiBF%!qyJXQE4i8Y^jSRmZ>7AFn~6VqQ+V`W z{6cvpHxr*ei%0*hlvi>y@#(X8^xsN(B{vhFK8r{Ht&~@CGx6!Oc=X>&c_lX!pFWF6 z|E-i)ax?Mivv~C1N_izW6Q4edN8hcKS8_A)>9ctB-%5EUHxr*ei%0*hlvi>y@#(X8 z^xsN(B{vhFK8r{Ht&~@CGx6!Oc=X>&c_lX!pFWF6->sBaax?Mivv~C1O8vX!X5!Ol z@#w#m@=9(dK7AIC{#z-pwaav8Y=Jfsl#t5@&0S&C!#**z|DB4PaUos zQor(JQJ?FF&3LEJdyuSkKfq`K?ECQ+en7vz=J~gV(iWy?eVhP~2RnGZ;Pax>fh+;d0$tvU}hsax*FYnas^*S=5Pajid-y5we7f9!D79s8q} z)F(Hy`lDK4>W<#jlDgz(R)6FlqwW@+2eSN-y5we7pL<5BKXS4qb;-@F{-#ew-ObNy zNnLU?tIvB@)ZcWhC3VTotp0}IjJn)=%JP?cP*tCt`ptOf{>y#eOvmRpOrD42rt(gI z{TpJwH;lDpzRAsO{<&wG`Cg}EwaI*xd#M{{>u>mys5|`SmeeITv-(39MqPR(^-IrG zU2^858Sh;FwF^;q?X4}TOKxWM*KCfuYu?_Hy5wfI{2b@_>;L>8%Rz2xxO4v5&P<1I zQrG)MGv4WQoMS)X_-At5CO4IL`W)vtZck_?O^(~-W_JAMI7eNMeXMsTeU6jV-E^!ab;-@FKF3Gua@;hjOKxWM zInGg^k-8i= zP3n@HS$&R^)aUqVQkUG!>T{f=F2_%ky5we7|KL`wYxQ5Ae`a|eDmSy^_p)9$aNIob z#+DpE$xV%SK7YCAi@M7{-;%oJUa*E)eXg5PfB$n^QkUG!>MwpE>Xz?%(0r87OsXz9 z^U;iV&i}$YqVD2SOX`xFS^e@I1FE~QCFTQCw|sW5VYd8xUlw(_*1~##)Fn5w`t#3; zy7OOZNqurNt3P)^)aA2|)Q8k1H?#VC_D0=3ddT{f+F2@a%y5we7 zpW_5|IewVbB{#GB94DyDal@o8xtZ1HI6+;G8zyzh&8$Ah3F>nEFsVy!X7xEvP?zI} zNnLU?tIu(Qx*R`D>XMsTeU1~<<@jMzm)y+ibDW?q#}AXbo=btTz`&^)4#0q?b}-JnA87OZfd;KAO4mKy+G&7*Z1+;I{zg% zUy%FM$2X~qZ)Wv}-WPTGja25NP<2agCiR()y5%=k8&a3t%<8YbI_j41$XESB)h)T1 z)Mq;C47lHW zJoS0)PknRCaCoNj)Zfx9w>kRc@J;2N{+6p_yNzo9XMsT z{f+O7x_lQr^$S(E8OuqQkUG!>TkF@>TVqBqw1F2OzNNQ{xfn;)LrfNFWbr6 z&D4CC+)U>GY}fzUu0Q%L+nxSfsrfFsnauy$_TRJZpJ&_u&bEJ@ZU14NkB(~HYh72~ z9NU85y>G@lkDrW>{6+XCzbip*Do_2*|1o@XWHEeGdFpR^X84u&hQG;tX6|onmcR1m z@Hd*Hxxc;hW0S`Cr#8zsc`Xu>MTtsXyE-f91X551VIL{-I|1D{l^e$UMXH zuW6RwTzh5srt)kogt*?#8MX8W1S)B0QgLfcE*z}$9aY(GQ9V@UwL!*<#*vUf66<3*3YPFv;IxK zU!2@j-sz9NPp-~C#x82fc?Y?foqvpdD?EM+h{u6={2#5qcD-pm^;nNyZ|0fSUwID8tJMC?dM!O2Cg)G=XXQD3 zeIMnQ+)RA-Gko^HN_izW6QBJIkNvMwUdheGFUu*P=O2EdydRe3=QuTZuJ$1vzbc#K z{-Bv0|MAzH4BzB?1IbP0oyWg2-L2vC9xU@Q^yKhO<*7gP?Z#`!eXu;Psqxh3K3VEk zHp{)vOqPFx_CKC?y#6zJ-jSQx^Y3h5zp&5pyM{bh&83;xmrdoJ%a6ZwTlnVwpAO$t zp8CsLcIsE&82++3l=}xR3cvEM@DG?5<^I8D`OQN!;hW0S`9IVwzj^ql!#9<8`s`;r zb*}*XPvsxS{-WA(#+Po(f8k@3{VFvfq)L+5X4%KRn()Gx5mH z%;)+a9`Apdc;sg0bNvsG_peMmax?R}{)fl=PbMC@nfYA*!{hxY6OY`?e74g!|q zdFtrc zTXHk0&vewqH>pc*X7!gYj=D=XMsT{rzu=y370esJbOLlln|Y zU3`zDZqjGpm1aBx$V zQ7EtE<{5nE8_#6E@y%@hcWXJRyGP4ksk$XMlln|YU3`pc*X7%SUj=J+-?W5|J+)U~-9d+?d>XMsTeU5XicaDFRs#|h1seiWn&)IJO zv)z7YyZ+C1{q4IW*86JvM>)=G`>po)f40Z({muTf+T-up9zW0a_{ZxL?mOi5OJ(!A zWz

N- zeUtZH@yzV~SEl2ASA3KAUCGVt{a2>reOLTST{kJYd4}sJyzh!%d1Lsz|H|Vi?_7Rf z|8U)s*MBD0eaX%2`Y*5Z@Ob@a;*pz~&+9xqUjLbRIecpG%H+kO)&&=L`D%0H-KJP#AIK1yfZf5U4F&*za;Z@!kKJPy@~Gbj@;e|0j>beV^p!DffR~RK9<8tao^9joxGX z-O=YC`$zeM zd=CVFrvBN#{!a7xo*6vT-${dawoS8_A)*J;}`|Lgu& zALW(YO#Jn43U9-s`Y5mDX5w!;8r~)yYnYEhc_lX!f5YA3ZTt^?lvi>y@z?4+k-9^V z>7%@on~6X4mGFjtrH}GTZYKVk$A-5?=fBKHp}dltiH|dIOs=M_{QG#U0rOb*^9O%W z_r8_yziznZap9X9?|lB2dH#C%YZ|WQSfs}_m8U-66-fQczYTxLyfF8N-x|KT?t<`5 z+roZ>yRG#{ye-pmR=MGtZQ+ew1-J8@mM;{r!sXX;Z9vyz=m%<-0AD#P~ zz8t=}S?`B1|EBV^{>C?lZ*Kar@J;2Zzd=2p<*!uVrTzx<{M_GuUHImXgW;RX)B2N# z!>{~8_><=0+~4-s;hQUd3rNeMJgvX=4dI*HbUwoJo61vPpARnUukwrGkDKRq`&{Fs z7S~QIwJl0+p5gej_f=8f+_yU(%T%7u|GrOzZ!Wwdd{cSq@AzE!=FVRX-&CIZQ_JC3 z{$=?59zE+sdFt~!_3Xdq%u;x!^3ywhhp@w;#3+IPbvFNp1Dp7Q%| zasJtyKh5d9ms;~L?4y>YB@KY%Bxi0ExDQWU#1&=Yt%LAyX2FB%oCVjU&Zo{nqG97&vzw(RW(|?=s&gDP2CXPD?f4`49?v&h2jz7Fk=J?O+XOrVT zxtSgRd7X^M>t_>>+{}DlC*$$@*~B9^GrwH7ktsA$Kbv^uX6Exc z8IRY`CLXz&`MgfXN3(9=@qO^$+X}zw+bZA24_3{{BA;-{iZXnJ-g$T7T(e_~!oU@J;2Z&+pE${wi+| zpWmNjK9r|EpWDW-{B(G`%!SKBO+WnbqGt8s6>? zx5OhiGk@magf~0h5|7->{Mr8&-mWWK;*pz~zvJh^+d0`1kKD}so&P<&sh76IBR4aD zdRutYA8m<8Zf5?%e+h5#vX*${X6ElZ9^S%+mU!f5=JPsHQSN zk(-&%>qIc|$8DJPAEu-4;8&{el-x}E57W_i@J;#-xtaAJrlarRoAjOXxDB)Z!*ui= z{7UtmlAB5YVLJK_ex>?O$<3tyFdcmd-z?v~uiVV~4?cYd-=y!5n_2&1I{FTNrTR|E z&7}V@9oOyfO|ILKo7wfdGTkS_=lUIw!*x4yGrNArbX>Q?Gr4X@Zf4i-n2zgq_?3Sd zKG*M>@$~t_bvt~M>vni%cKxnQ_nGjye#hf*-HzPMuHW%GkK+cf|4fb>~{6nfUZsJo;~? zypo%VPoKr3|5nN?xtaL%Sv>l0rM!}xiBF%!qyJXQE4kVDoAokjWU%+t-thLp-cWCN z#{mC-dO+spnW1A-H}Ln4-e&HLnA85W=_S4OQ^OZubV+mnz(13JtknNkP5n}B$2r;p zw@~dTe@ah)vbU*$&JGRsp4=PI|M54l;@=kz55Mx~UUT$O=N^CY6~|A$;`s3wz3}Am zSD!q2{OHk>=Ut=!_n6~X9X)aM#3N5U>cpduzw#w7z4EFnPF{WDyyMsCYSj8z6Hn>C z6XWpP9(?diI%|F1H_Tq|nNQKP>TPDp`=1GY{(}$R^4{?LIB`b>IWu3!6JO8RTcV!% z%%_BJDo=eX_5U5YC45t3{l4~uEra^$#BwK$z5Y8vm=FF;{j=YHV*i~q1ABYD%P!Ss z($Tx}>-yj1=A|qA6?f8X)z!|!f2AuguW5PY3SC)IZfd;0{tAElRvk6Js;h~=-16|% z`rpb;jraSp{LP&}dwxY%!Om9~d``>J2h~-Tn;P%;WBI-Q^lZEIJ}vKWx4c}B$5GVO zc)!2mofM|K>~Y~&YQ2@*eB28E@>93prBBkk0KcXB4KKe(zWz+*{q-MT{N|mU-s|P* zjAu}1L+0f_BU!nry!a1!B#7h2Ra#q9<+yR)~mMx+ENc$`#LQje`VhJ4VlZ{z49oemk}3kUG0%Zm*KVz amgCnf$5j9En>hZ{zsnlc(QfV9-v0%H|KINb diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds index 25a469b89df9d14b264c6b7b195cf0300d81c824..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 71498 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 G@qYo2f7{>y diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds index 05dc892737ac2c58d42ebc83cc34bd046d627ec9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 70966 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 H>aYG6M&A@i diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds index 82c08aaff68663f61e1dead3d58f74c97dda88ae..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 29656 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds index a392bff05329fc2f4b85865657177589a9939558..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 40972 zcmeI5d#qh$nTPke?Q_4M)1LeN*3)*{s(4}46s1HQ5kw@2Vntgbj!3;m8Z~N!$YgLF zG8&;WL9sI?TlKJ{f|FQkNWp#G}qtu*H`R$`tJRg9N2&8 zt^4=C{^CRX-+AcJ{ylpRo$@aGzh~{gY|mv+yX@)v-}Z(}55DQZoA%UdBQ0&uKke#g z{nZ`+{M+Z8{^eaa9=Y(m+EiOGM*UA8qqU<}tM@k7_SNcr&9#Brj)9h1ZS;{^ZO5&( z+LnK*xbwN5i&k$PtkoXZAGplC+iJDJp^7{A*J|XV)&I9Y()8*y{xfa4o6}Y--1;lq zq%W@33h%Y|V;gB}=D58->f*%Dye>|@$?M|ufY%E@;q~dv*}Yyb{130sX3ih-df^|u zKA*XGqu0fy9bOlgzvp#v<<(vn*KGA!zrw%u`da4tZm$=9)$8k-J6>yb+m51b&v1LQ z?Kb|?e4oF**mBtGV%v<@3vGYlw`I1!)a!*m_Ii6}=X<>_c6E7O?EakB#hz2WF82P^ z>tf#Tnv-}d@Y=E$49E{=Z9>xJL69b|t-Gtg;dGJfL1^1E)Nbc|=`go>3Q>htx&pDRq%~ zOug`s*O~7u$8kWtaBt2tIgY3o4tSm84WHwXy2x=#E^-`G7dg(U7yin&m2F4P2YGuw z&h~Cg=d-k&ZIA79w!CPsz2z<+1CD>ox3xHNp4Y|6hrBLMebDRT%$nB=zv%Uu%()A^ zUU-k!=Q0;Q5X(+|C#Xghmkn<{f{SfBe~E=ST9wGu_{k zIs6NM{lfFTKAbuD1+N#bczrOl{{vnZ`yTYV*n6(m#hyF7E_N??UF`ap*Ts(Cd%f@y zuXkkDZLY9=3ZLoqdS>gjUN5YBy*0D>bzT>FE#{w?wxP{Wk(~J};&EJyye{=Z8=pGk z!@9jM>V-B|$}?Fn>V>xc)LDPXcA+k^-N;3@D|M0WPF-ZbP#4*6)J66y^};WBo&C>p z%nRy;zsPwe^NRCdq0K+ei_E`#etewsr+*%!&bCj-wrF#mInJDi^hxR>eU!Y=`Ym<( zEu;@qFYL>CCViZ`NT0_O`5Zu9b`))UZrt9dr_bLbt)J!d@A^O5YyH4DRB`J&tk=KUUNe*W zs_k2meC7FGhvds&s7QUO&+Cx-;s+{HpZ}@XA@%ulD^j2RoYx`s*@cSKr{C*!NPX(} z6{%0Y)a#J?1am2q`uL33A^F&~6{*vYMCxfyW|EKC#ucd#zukREKA3$-eb9Q0NWK3? zUk;M@k5r`Id&ujMdXM!Ok$U%DuS4>#FIJ@9IpB3jy~BEpNWK0uuS4?sc@?R*-s*Ko zy>+P~_2&0^9a3-l?~0rk$;BkciRA28k(~W5lH1FrIwWWQh}4;1B02L4cANaD@A^CuP#}lddeaP#Oy!Q_ksrOvqbx6J2 zzT=71yVkr8$vZz$k$U?>UWe4%?K_@Gz3p3GhvaR~tw_D)<6ei^aF9kui1 zTkQ4i`lh(`IX1rKqU8KSzstRj8!F{>;UfX*r;*pDy-?Hpp%e@ux$i>M2zc~KriyXg&|L(`{nAp^~e=+{} z-@7kPywZKq@`n8ne{$aa!e6^TDbC0K)aTt7r>}5dv^*St<}~-k*-rOG%R_(m`|gW# z*SRlR9{TeayDu(mb6>PP^cQ~TzPR`m_eIM?f9d`1i_2%aFIpb@D}(MA{>c3maWM8* zKk2@>cB%WK<>C0-_PAg8u>0G@J+a^NdH2QEE8G_?565rI^GB@b`6F5$`t|So_+tBY zKE7yq=y&A#BX;KbBU&E%oxk((#jdaT_@d>Z-<{`=*pugvXnE-O4*K|oKl1T=#lhI` z%kxL<&+|vLJRE;ukB?vYu#Z0=?uq@uZ@4cGUG2VTc{u*?%iI@7#@!b!5B-s!yD#$n zne(b>dFWezN#}o&zJo7D{fGBhJIy|C*?SP1I_dV|)8?T5*E=K(!2Jy(n$lv;T_r|WMh(|6)K7D4# zC%ylOJ1_PABU&EzA3XYxh)4esBcDElNBK~&*0I2L_Bga^64{p^dAwAT#Wpl zGu@;A;6preG4km%c=R6;k6es=`V1cZN5mr+BcDElNBK~&*0I2L_Bga^64{p z^dAwAT#S7B3?6+)#3L6YpFV>}{}J)X#mJ}6;L(3XJaRGe=`(or9}$mSjC}eG9{oqe zBNro|K7&X95%I{y$fwWXEj?Tjk6es=`V2n(N5mr+BcDElNBK~&*0I2L_Bga z^64{p^dAwAT#S7B3?BVQ#3L6YpFV>}{}J)X#mJ}6;L&$PJaRGe=`(or9}$mSjC^`t zlYLjBSBcGbEsb2XykY-gxt4dhFSb6k_fcxA-=5;I&eeOBqi_2HK zCt4o*-228Cxp&UEqUE8#dbj%`_wMmU%R`@g|BNrLpW?n~dFZeI(S33I?e2?~H}tn( zZSHaFT`#Lh-ys*H{=;(g9elC%dG3o*|G}s4;1}NMKK&=x!}m|$!57;va!-u<53f(( z!7semefm$XhvU3_+r$5SdPAfFVc6&#i;+V9DN7B@NW0%Ke-;hfBFu-NZ-K|qyEEk)?bn@ z(s#&3%fs>MJB%;Vcksoi|FE3(m*k7|9dgm~aD4g>SE{uUnt8WuIZa^0yUv_HfyruN0{-?e#h&pZjV>>a!p5I;1|;Q<3__&%6$)Z@I4` z_0dmz9a86KV?^o$_WYknZa?>&>X5wqhZU)Joa=Q+y?v!3^_EY09a3+8XGQ*tT zeUY5k70DT2BuSm{z7s=T_B02j_BxnDMyUc-S?5gZZ6~}AskeTo zBK3{`@SG}jaqOSm7s+{jk(_Zwa^9av&ifY0SwE4S^%lw5J|a2WO(bXgisWo}k(~V_ zlC%Fra`vxC&VCokH}Smg3;lfM&+FFmpT|7ko6-%>|8AVG=O%w|_HDb??4RwnKBBds z^zWkO8~ww{&%a+`%R{#9Y(aj0Oq^J-W5;sQ@{PW~|NOjh?Hv1@XvbE~=1t)p_TS{< zRP6J!Irw7tYupzt56AC(iTi~Qy5A|jB=!f+bHDHr_XouDVt>%iO}u|`=o0ru%ft6S zyySkN9b0U_VR0$;dG?<1MSj-;zG!(ke&2807yCcvzG!*q_kPfQkza*^P z)91S{S|0k7r@LQxpZk;I>9Ifl6Zgf5tK1hY562&SyZa(Po5lKzmWTd~oqO1Sg}4y&aJpFS{{zi&!scIIR9byMax5fAs>H*`MBd}DA*2`hyG$d{>7!&xF=d3 z`pfzJQ<%>?%i>ASKP!3uimQ44ik64tujb=NT+7FgXnE*w%jciMM|}Oai6=S#@UzzJ zKXLmd?u(W;9Dlp@InH}KUa)~SZpy`Ae3s+9hc9y8BNwCdAIovx!!P`f`<(xBJ$(P^ zXOGMmIq%_#(fN<%IPWpO$a#-kjLv^7$9WH5L-`JQ{dhb!Wdi;>^=Z1?(p zQ4x<^jQsu^-5YpuMLcpb@&`NIJXf0uiFSF`2PcQ!n7G4i<% zgE#p%74gW$$e((Vd;ER@UI*fli;+KV4&ID8A|AOI`Lkp0&3>~Y9=RC#bMJF+e!U_d zxfuEBI)c5|g=^i1c;sT_FP`Jx;)#lQQnn(Y|Pduk_|EAC4(SHlgOSu^M^jSRmZ=rc97XzO@i$~urG%w|1;L~UE=)Z;L zrCbbrRvVALTWDU&#lWY};?aK#%}co$`1Dyk`fs6mDHj8uK8r{HEi^CXV&M1R=pOwS zKheCDi-Av{#iRcgnwN4h@aeO7^xs1BQZ5EQeHM@YTWDU&#lWY};?aK#%}co$`1Dyk z`fj0lDHj8uK8r{HEi^CXV&Kzf@#w#W=A~Q=eEKXN{kPD(l#78+pT(o^7MhoGG4ScL zc=X>w^HMGbK7AIC{#$5X%EiE^&*IImZ=iW87XzO@i%;JzG%w|1;L~UE=)Z;b?`Y+3I-4|a> zzcY^4o$=R+uK(h5-50+wU$@};Z?1>$pXUH@e{uKVH_=Idr$|IPJqe6IWAi(L1`6Qk?D zX}RCH&-GtkhwHxNVs!nN<+$#PSNMqgT>s7W@cnb$7hmMMFP<1(|K*sq>vQR|s>pRa za?$dJj-&viTeLYw#aT)#^UuHRATx*fjAbvtq~x_-xUc6~1S zg?8RZx%lYocmDe^^Zn0`UG`bSdUuCCqatpdv;VeSw0z_GKgzG)Z)06(`@o*@Dg3Q% zOLFnT*k@dPk#X_GX#BQYd|ZCN2;(Q(xG5Kd@mY>>)9)?GWL$DF8o%{&AD3q}89&j+ zO}QA1&vJ~9Co(R%7>(bu%g1fGeFJUWl#9XmEXTO`BIA;a(fCdG`?$?lZlH~uaxoa6 zzaOFFkd6Hh6+7$p`Pp*O>J8^#TJBc&J2Sh^a9^}M^tv(yjEg5SF1Z+u-+jN2%kO7m{6rf!vK!`O~}0 z$9e z@9(#5Z`-=?sP7AYXI!o~JbzN}{jU3B-$D08%R|5C@7x!Am)#dF5B=`5-7h@uez$mb z?04n$FFfjgm)IZs9eMple%Bn^MYKG8|LuAG#g1k7Max6Kp4Y$dxchbSB^Aqz7 zk9k*Ue#*tbXMW)^?+VRJxfuA&Gd$*Bp?N7613#^&`5b@viRL|7)}QlK^KP3%cK#~N z=ly0eIRE3f9CBZ5t^4^;w7lW@1HbiF_rZ{xrEf4)Q zTX)7UJmUVE*cSWS_PJkp%>8ZRzSv*S>o0DfbYHYQeEr!4{+WnJE=E4r|M0l~CE}5b zkmQT7?oHlQ5szGqe169j z<4?T4A|AOI`D53(H@;XAk6euWt!KHnHLpL!BNrq8sqMG zn0G6`+&~*QP z7`^`)TTjNFwe>HwaZ@e^4do{2|MApY49(arb%tFxMM?|DxWN*T3+ndpv)b>!Htc zhrEB0=MM42==npIv*!zwFY??WxoCMfKF=L8e&KQVdH#^su{`v7?hwE5sCztrh;Mo5 z+w+CV7kTawPqaMrdG3($MV>pv7cCEcd%iIFg~#3J`9ogE^3dnLE8~mYcf}K<`>!m= zeOG*u`>y0-bpMs*xbKQzXxB|rE}rE23HM#`3y-+Z{a0Sc@`mfr_aClX^8HWbx-YpH zUH|2K9vJ$M-)Gk6es=zUSfb{ZGUr7bE}4zW(%Iwj2FdWV?}z(e|VN z;?aLaJaRGe>A!e<{}J)X#mJ}s;?aLaJaRGe>A!e<{}A!W#mJ}s;_>}M#3L6YpU;nY ze18z}$i>L#^CKRg|3y4*(R`gdXO+uVQ3^@jbMI`^IM3y-qD?H*p_n&e-eE-~c!Y@4L9`~Q{Ef0O3`@|P{ z?h{Xpp8rhC<@M(IPhN-TKFP)C`A?SPxlg>pBkuG3XRe3upXWaD3y-1JnFvh%aY+1{JR{>wae8foh;`}BBo Xtz*3Y@>jgTzO)S5KkfEUYwdpkK9U8+ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds index c30af6608357773469c55ef703fbb34043b28346..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 43424 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 V%$lD0$`{**o+0~po&DQc`(Fa&V;TSe diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds index 77e58a667e55b94ac9c4f04c2851930a390be207..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 44102 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds index 94e311f4e506954709cdeb7124084153de46ea22..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 55918 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 Ib7$-S0)%0(;Q#;t diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds index d9df5b26f34260232587ad8649b295cd46b22466..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 48080 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds index 0c1209f8968dd5a2976572457dcd6e0dbf96b39c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 32786 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 Hw72#DKQ4AM diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds index 39e57a1d5fcfe0a0c7a88d4550ff328f33eca87b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 32786 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds index f03feb88f19f2949e4c89a324431ba488cd4c8ea..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 62994 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 M{8Qq6II;Kt0cbcgTmS$7 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds index 36e3b6569b35400907ca17503c586ed54504404e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 62994 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 G_x?ZDQKtm} diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds index 582d6c4397605889182a68b061c198dfedee4307..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 94290 zcmbWg53E(yxwpGOL=Z(3MMSC_MFj;#K*WEzK|~b9ts){Kf+B(_q9~%GZvFfk`)L}| zHoc~|Y3PaRrKe4=Ic*wZnuaz_V{eG4k z*?SuEkl!5ddd66L?SJ!~d#ujr&dAPjov9;6c9wNU#D5$ky8eCb$kDsDKYRJSIrneb zeE-fT@4x@SO*`-3y>sXN^XBbbu;=p2cV2n_&c`3U{ISa)oBP)t#xw8`tRJyGD)abVi>%vU5jg^!SmT z{?4ok$HiJ+iT{5U*k3v8{mjKUKkC#@NA>rY`qQcZumAe5kNCgS`5z0!PG|NH^WVwx z?{@tSrG8f9|6#ZW;wjzQ;wSNMa&e%`|KI9oy`A;q>~&c$M&8pu^1}3ve6PjumRvM` z#^I%2#7izZ|8bvB@2G_>hPULR@iPuD^&(z!(fLRHBfZD(Z!x?j7mc5Bc&Qihl8eqi zdP90oh!-cXgTnBZTr_^h;iXQ*OD;P92|rEmn4K+#x8$PnGY&8HB3^RQ`Nv+G-m!en z4Rkt%;Vrpn{EWj(orsrQbp8{+oZfN$Erz$`qVY2hFZCi`a?$z6{VTmE9cVGUB^QmK zad@d0@sf+qfAW^}j-SwCcuOuCKjZLHFXAN^oqzl<(|gLE7Q4u!i^k75ywr<$$wlWs_dDtBTiarIOD-BeMdzRW!}MOdwZ-t3Tr_^h;iX>0 zOD;P9Wf!LRviDjHZ^=dDXB=MYMZDx<xOZ^=dDXB=MYMZDyq^IyFsz1K`=F}x)gjh}INsTc8*i_U+|FVlPNo)*Jf za?$u1hnIR0FS+Ra*DXlzb%$FFZ^=dDXB=MYMZDyq^Dp{ZdaqyJVt7j~8b9OkQZM2q z7oERMdx3buxoG^1!%Mx0mt1uImETG4t!rBhZ^=dD zXB=MYMZDyq^RJqe-c^TM3~$Lr<7XUR>P5WdqVwPOVtNN=v>4u!i^k75ywr<$$wlWM z_)~gs-`8SzOD-Be zMdN22Ug|}>!mRvM`#^I%2#7izZ|C-OH_wG3@hPULR@iPuD^&(z! z(fRNGYkJqd*lJfIUVR%a}8b9OkQYYdi7oC6I57T?^ z))vECa?$u1hnIR0FS+Ra>n}|2`uAE4Z^=dDXB=MYMZDyq^WXRR^ln(#Vt7j~8b9Ok zQZM2q7oC5@Khk^u{uaYqa?$u1hnIR0FS+Ra8#knP)0h^+TXNC(8Hbm85ihyu{F{E7 z-UoKJ7~YbL#?Lss)Qfn@MdyF;()2#~ev9EPxoG^1!%Mx0mt1uI&0kLML;Wp=x8$Pn zGY&8HB3^RQ`5*dMdbb>CF}x)gjh}INsTc8*i_ZV>mh^6&&|-K?E*d}M@KP`0B^RB4 z>o3#0ZBL8gExBm?jKfR4h?iV+{zn$1_mRUbhPULR@iPuD^&(z!(fPN3ExnH}Z!x?j z7mc5Bc&Qihl8es&*y!{=7LUR2|ApZ#xoG^1!%Llrmt1uI9Xrzd_~aJDTXNC(8Hbm8 z5ihyu{Ez=8y*me63~$Lr<7XUR>P5WdqVqqoD7{a7*kX7~E*d}M@KP`0B^RCl$#0~0 z*FcNmExBm?jKfR4h?iV+{-?&L_o;&|hPULR@iPuD^&(z!(fOa=o!;GjErz$`qVY2h zFZCi`a?$yB|1Q1Hyw+lPOD-BeEUzpKicuOuC zKjZLHFXAN^o&SYDrT4{sErz$`qVY2hFZCi`a?$x;T9w|Hjci}&-uM#i0==_YsOTCDfTy*~9K1}bZcn+Bd#7izZKjZLHC*ma+ zo&Wef=^fo)iI-e-e#YUYUc^f-I)Ay}JJx-|d+CRG$wlWc_kD+-I{XkXx#;|3-c0Y< zjg@%GMdxQ6Ug|}>Ks@KP`0B^RB4+`;soG+2q3Ty%cM;iX>0 zOD;P9$;;DQ?!R7~_fg{|7oDGRc+36Q4e^qT&OiSB^q;c75-+*v{EWj-y@;1wbp8oj z(|hWiO1$Kv^D_=F^&(z!(fLn3n%>h6RpKQVou6@dsTc8*i_Smswe+4oP>GjZbbiL+ zrC!8KE;@g??|O0EuY5TD5HGpt{EWj(orsrQbpA;P(tGC4O1$Kv^D_=F^&(z!(fKDY zOz&BN@N^(va?$x2hnG4LFS+RaXT6)=Df=q%l8esIIK0%0c*#ZQKYML@%l*%>eu$S` zbbiL+rB1|4E;|3z57Ymdw=40Ii_XtDywr<$$wlWsXHR<1?XSd3E;>Ks@KP`0B^RB) zZ%lgo-mAn*E;>Ks@KP`0B^RB4+MDS;Z(}81a?$x2hnIR0FS+Ra<-X^|ali19^h3Pl zqVqEjFLfeba?$yxA58BBgOzy6MdxQ6Ug|}>Ks@KP`0B^RCl zqW9A~V}B)Ha?$x2hnIR0FS+RaGqKs@Rs|J8{#Dwo&Vya>A&Pq zC0=sT`5A|wdJ!+V==`%@OYiJ~O1$Kv^D_=F^&(z!(fKc(oZd?hSK=iXou6@dsTc8* zi_U-9f%MMVS&5fibbiL+rC!8KE;@g??|5!&B~~#Y-+aKjZLHFXAN^ zo&ToE>AmT2C0=sT`5A|odJ!+V=={qMr1$2Xm3YZT=Vu&V>P5WdqVwOfFuf}RJpT|c zx#;|i!%Llrmt1uI74N2Z<-SV1O{Qc zqVuo%Fuk|EU5S@mbbiL+rC!8KE;|3fp7h?{Ux}AobbiL+rC!8KE;|1mW72!adzE;} zMdxQ6Ug|}>P5WdqVt#gUKhvxqI1#@@sf+qU+#MiKXv#aUUJd-*B?#qeTORXl8esI zIK0%0c*#ZQ-|$*`?;ohdOD;M;wIuI|p==_YsOPz?9Ty*};@22;meU*60MdxQ6 zUg|}>nB{SYs?==|lr)9_P=AL1n!oqzk7^lpEz5-+*v{EWj(y@;1wbpA)*Oz&eGEAf(x z&d)f!)Qfn@Md#l!BfUG0RN^HUou6@dsTc8*i_ZV}!SwDNti($$IzQv^QZM2q7oGo! z<>`HLLM2{u(fJvNmwFK|x#;{)zMtM*`z!I1i_XtDywr<$$wlXXYHNC*o>PgJTy%cM z;iX>0OD;P9(?`?0`%ooba?$x2hnIR0FS+Ra&%Bo2Jp+|^$wlX99A4^0yyT+uKRY?S z&mOMCOD;M;dPn@Y5-)r2il6d#)sH+ay(2%U#7izZ|MBb6 zJNmpzyyT+ukA5<}CtO{Lmt1uIvG1h!#8)cul8erN;;+&>?kkme$wlWMKPA26|4@mS zTy*|Z=BD?QPb%?}i_U-AbLpM9q!KT===>AEklxeRRpKQVoqy5?={@t`D)Eww&VT0L z(mVN`O1$Kv^PhcndZ&)8#7izZ|I|Cu`VK=mOD;P9)qhLxHSbj7B^RB4(beg_eq<$Ha?$y( zzazc!Rd+XJec*#ZQzwMp$4!lx{mt1uIfnTNf_ODdpB^RB4 z^_29k{zD~Ra?$zknw#FcKB>e@E;|3(=hA!6l1jYfqVwPLh4ijlSBaNgbpG`pr1!pm ztHet#I{$rtOYeqvD)Eww&cEsE^gb}M5-+*v{14ob-Up{t;w2ZI|Dms>cgq8nc*#ZQ z-|`>nefYUbyyT+uZ~G*@kNmh2FS+Ra+fPgH_75uYl8es2V_kY5Kd%xmx#;|lKbhX0 zS6AXC7oGpfchbA-l}fziqVwGjZbpAba)4S)BO1$Kv z^FRMwdiO4=#7izZ|K2a8_l0$pc*#ZQf9Zqt4*pvuUUKnM{-s^Nzy9A*7w!=^ws<7| zO)jqM`uo4G`Vs$M){Xq1Ek<3*MOXiNtoxn#eRo7alJg$@awYR77v20%xFqXN z_)#Twc`JcEe>&C@vj_0p1>PjxU`V~3v6MtXHyibf=bn_qg zde)sZt&%!&(bb>)#hmx}nJvb=OD>xEkNc5rqK4ozw^By0$=;nXQ zU$Sn(%azoTi?06EzvsM9`&^4L?~;pV{uAeA-Nc`@7 zugJR7e_u%*x#;RA-I?>A^ye01-X#~!{LlPi)=i$-V$_vfboJYF-jhdEGVe1Z7v20P ze=Fc`Jeswteg6|7Nf4@qO1RT&U@;nO6Glb7|YUvl0vU#?`{yO}zv|AM_f>yxG3H%z(aitqFJ|2}Gh2+hl8df>d(Qis5tYpQ>c~Ym z|7*ULb=NMgq>fy4_1Aqj=e_9W7GvHe7tQ<^{XOfh|6GevS8~zS|2*e?{iaIhy(n_g z&A)$K*7bkAk~(tH)i0Tt^Ir1J7GvHe7tQ={xHIc+_;ZUAP9C{N@&;uH>Ste?8~Dd|D;*zA19i z&42mNv+m|imDG`ouKt!^=e$>JYcb|sa?#9x<;1L8`OOxiuH>SrU-6fm_sW+mnK!xU z=6~xYS$FG?DybtEUHxtIa^AQ7ti_mj$wf2&fn8a5``8wvuH>StUy<`3_y^S8~zSe=FyG*Wya%y*hHy z&Ht{yWZjyVE2$$FUH#pE&v~!?T#GU9l8a{k_sq+>dw$kp)RkOx_2Y8h_k6vQdEXPc z=;ps}Mb@qReI<3|qN`tjXU=>5pIeN1ms~XSzwe7#w_#?BQCD)&)o;&vZx~U@yzh%# zbo1Zvt*pC$aV2%+qO0Hd-JJKPn_G-|ms~XS-}Lvad*E{|MqSB8SO4>z_XC?MnfIp1 zMK}Kk$7S7vU$3N&Ty*shP0V>e^vxDy-X#~!{I}ehbzA=2V$_vfboH0yytn+Ql6h~5 zTy*n)czf1u9Z^Xgx#;S*?aFySGPcE-cgaOF|3|)?b=z-lG3rV#y8731-rJ{DGVezs z7v21~|2*p+-Bd{(x#;R2`*qHH$F>$@-X#~!{2!l~b&r3u#i%Q}XzF+TCFlM4%azQV zTy*o_c}dpo{81%!h-L9dRirQH4u!i^k75ywr<$$wlWs z?vC^x_sS0Tr_^h z;iX>0OD;P9*ngz=#QiOXx8$PnGY&8HB3^RQ`N!Ro-fMdzRK zN_uC`YB9Ve7mc5Bc&Qihl8eqi^Ec_ec(BFrmRvM`#^I%2#7izZ|0Nfv_mcl?F}x)g zjh}INsTc8*i_Smm#q`de(PDT@E*d}M@KP`0B^RBazw_gDcj?|1!&`FE_!)y~XgBTr_^h;iX>0OD;P9<-bht z+&wLZx8$PnGY&8HB3^RQ`RARN-g&=hF}x)gjh}INsTc8*i_SlPcY3erYcaef7mc5B zc&Qihl8erN#s8Du1y8jY-ja*P&p5o)i+IUJ=fCot^j`UHi{UM~X#9-BOTCDfTy*}0 zPp0>(sV#=LAmJBErz$` zqVY2hFZCi`a?$y(-I3nwCbt;gl8eUAIK0%0c*#ZQzwXEBUG!*+;Vrpn{EWj(y@;1w zbpGonrT6+nErz$`qVY2hFZCi`a?$zwA4%`x(_0L0$wlL59A4^0yyT+uFaBYAmuzh@ zyd@WnpK*Ap7x9vd&VR#c>Am3xErz$`qVY2hFZCi`a?$yhZb|Qr6Iu*!$wlL59A4^0 zyyT+u-}p{?mu+q_yd@WnpK*Ap7x9vd&VSSR^xkx^#qgF~G=9e6rC!8KE;|462hw}< zNiBxA0R-?7QCI0F)fC-cuOuCKjZLHFXAN^o&UDc z=`H(559B`3T>mS%X#9-BTlSA`h?iV+{(%_F??1PXYB9Ve7mc5B_^B81l8erN`*+fN z$J!RdTXNC(8Hbm85ihyu{CAE_@15UnF}x)gjh}INsTc8*i_X7#O?vMN@Np;%Z^=dD zXB=MYM7-pp^WXLF>0PtB#qgF~G=9e6rC!8KE;|33f2H^C11*NPAin{i{UM~X#9-BOTCDfTy*}8x1@LD$1R4pMdN22Ug|}>D~HKi{UM~X#9-BOTCDfTy*|zUrz5M{Vj&KP5WdqVu!w65s!K{;|dImRvOcvTsxPsmBlT zl8es&#OKrd0OD;P9)Bh{IyXUtU-ja*P&p5o)i+IUJ=imLi^p<_Z2XfzUe*Z1G zX#9-BTlNueh?iV+e)ieo^}px0Erz$`qVbpgyTVI7^MH8E{#^~7|Jl!`_qjPOhPULR z@iPuD^&)<9(fObIAidAO+G2Q1E*d}M@KP`0B^RB4@1^P8`+kezExBm?jKfR4h?iV+ z{uf?J?~Aiq3~$Lr<7XUR>P5WdqVvD_oAkak*kX7~E*d}M@KP`0B^RB4@Z$6i{%4Ef zExBm?jKfR4h?iV+{+C}&?<+G}3~$Lr<7XUR>P5Wd;-~z%f7|JuSrd*6XB;E=7{u3a zan?rCc)X1TSN({|QFlxH|5hdULXeAbzGwZ&IWac;BY#kdmt1uIK=9>6LiNMdzRRc6v|0wh}M7==`U@o8B{4SK=iXo&Su(>7Ddw zC0=sT`6nGs@0qVw;w2ZIfAWO%PX1~oUUJd-&zh0mv%Xh}mt1uIDgEi4@{3Bm=}YgNZ&%_a7v1_VUzpy@e^QB;Ty*}q z1L>Xn+e*CTqVvz&n%;RISK=iXoqzsddapRC5-+*v{8zl0-UZVu@sf+qzu@ikUU_XL zUUJd-x$iL^zq4?4C0=sT`4=8e?^Tah;w2ZI|EiDk!I{(Uj>AiJoC4O?z`ENat-c|D}@sf+qzv@tW zZ(CW3mt1uI+ul#_z~)N4}Z-qk;;#7izZ|6K#=z3aD?c*#Y#{xw_EyXNCcyyT+u-#wV#wI@~L zB^RB4?VIVnXL==Ga?$zkc{{!9uC2sNE;|3Zchh_C>Po!iqVwN-IKAs1t;9<%IzRW_ z#N&7Fd$kfTx#;{GCZu=6S1a+7i_U-ljP&0By-K{~qVsR;Pw&QGRN^HUoqyBX^ltiN zC0=sT`FY>>c>K--|E$DIE;|2%ucdeM>6LiNMd#nVKfMpls>Dk!I{!ll)64xI;VJil z;3XHGf6II6eRzE(UUJd-d7pH=Tc4`LOD;P9woZDty-|smTy*|NCa3q2w<__Hi_X7& zPI|Zhpb{^+==_f^Pw%7Q3!+ZO1$Kv^S^X7y@Rh-;w2ZI|K$nkefg`Ec*#ZQr|%n&-}xWs zRpKQVoxjr@)N|-@_&1N+96f*j#8sP=kS;Qb3?r3qVt#jb9hVtxglP1(fLdNIlQI++z>Ch z==`Ps9NyA@Zits$bpFzR4sYo{H^fUWI)CXuhqv^f8{#Dwoxk*#!&~~#4e^qT&R_b^ z;Vu2=hIq+E=RfgCzV1r@Is6bWx#;|*{~X@Ze{P7ETy*}E`_fbbUUJd-OaD2%rT^RzFS+Ra zrT-k>(tmDS_Q=|6`b;w2ZIzx1EOTl&up@sf+qU;5AC zE&b<)c*#ZQFa786mi}`?yyT+um;Q5jOaHkcUUJd-OaD2%rT^RzFS+RarT-k>(tmD< zmt1uI(ti$b=|4BbOD;Np=|6|J^q(8zB^RB)^q<39`p*sVl8eq?`p@Al{pW^w$wlWc z{pawO{&PdTFS+RarT-k>(tmD zAI#TZ=|6`b;w2ZIzx1EOTl&up@sf+qU;5ACE&b<)c*#ZQFa786mi}`?yk$S0hR$F5 z&*3fo=Z1L6MdvU5=kS*Pb3^>(qVt#jb9hVtxglP1(fLdNIlQI++z>Ch==`Ps9NyA@ zZits$bpFzR4sYo{H^fUWI)CXuhqv^f8{#Dwoxk*-!&~~#4e^qT&cAqnzWz)9Is6bW zx#;|*{~X@Ze{P7ETy*}@e-3ZyKR3inE;@hdKZm#UpBv&O7oETKpTk@F&kgaCi_TyA z&*3fo=Z1L6MdvU5=kS*Pb3?r3qVt#jb9hVtxglP1(fLdNIlQI++z>Ch==`Ps9NyA@ zZits$bpFzR4sYo{H^fUWI)CXuhqv^f8{#DwoqyG#eEpaHbNC@%a?$xq|2e#+|J)ES zx#;|*{~X@Ze{P7ETy*}@e-3ZyKR3inE;@hdFNe4EpBv&O7oETKpTk@F&kgaCi_TyA z&*3fo=Z1L6Mdx3$H9mgfE&b<)c*#ZQFa786mi}`?yyT+um;Q5jOaHkcUUJd-OaD2% zrT^RzFS+RarT-k>(tmDCh==?hmP~r9)}otyMNtPKO$b|Jb%33ns~|QPNnp z-s84Z;w2ZIe^h*);~n+OO1$Kv^B=!Iy`vXY;w2ZI|AaB=J>hGWc*#ZQAG0&PV@Frw zB^RB)^nYXhC+&mt1uI zzP0J?`)ehBa?$yx9ZK(cYbx=Qi_U-kjP#!W!%Dp5qVrGRm);95ti($$I{yVn(|ch! z!_$Fy$wlX<&lr#2x#%C2c*#ZQpYd*bXKtv(OD;P9#dFeo@lPx9l8erN$(!k&b!jDD za?$x`chWoi%awS^Md!bCYkDvJS0!F@(fKcXFTHcNRN^HUo&VV1pZ+rayzd9z^7p3= zoqz8B^v+vQiI-e-{`q6lJO68y_{l}*zhY;47mTjNOD;P9g7?#V<&H|c`(8) z-&Eoy7oGpA1L?hbQ6*k-(fR4K#p8Fb`9>vPa?$y(-ILzy##iDc7oGpQ!|7eLyAm(C z==|3&Pw(}=tHet#I)DG$>0P|65-+*v{7WXMcgc4u@sf+qf5TvUmrkn0OD;Np>3_x7 z-5Xy_Kg3HeI{&hP^e+2TC0=sT`ENRy-sP(*@sf+qe{)}Y*)KmlW#4?f+UV zoKuOHTy*{wN7B3Uvz2(sMd!bDZF+D0Yb9QC(fL;$O7CrJD)Eww&Ob0Cy#qh2#7izZ z|LyzId&h;9c*#ZQzvF0n?+j;nIuI|p==`h06_4Lp{f|n#uPDt<8Z&czX7oC6G zp7cI4z7j9F==_fyPVe^Jm3YZT=YMp0dLR8=C0=sT`5${by*rjw;w2ZI|MAJ`ef&F> zc*#ZQ-#M7xCniFS+Ra&#g`GbAPSGOD;P9^M}&A zcTFW;a?$x;n33KWeprc@Ty*{y_oerx3oG%Gi_TxJ|Hs$e!ElDB5HGpt{4a-#=bh{4 zB3^RQ`8&-qgzNWR*S{&pGlc8+%iDiHwkzr{IyYV~Z&c3uR($^OxDDfc`}$c|{nPO} z>HJr`UjA4)`t|7FMJ~qqp7m=ErD){;2Al^z#_oUm3n~h;hE>>*u7w^qh96vhV+m$BJBxdGxG5 zD@^#$?XSd3E;|1O;bEPZ9IC`iE;|3*@ZewAUx}AobpA!*!N2rSC0=sT`B#Jo|Ly&i zc*#ZQ=RPz1_Z_OlOD;M;FB|-i^jG2~7oDGVc+36Y z4e^qT&VTOY^q&8{O1$Kv^H1BE{tM&lC-Z=K$wlWMc{IHze5n#Ix#;}I52SbON0oTV zMd#=B%g;R{W>xaHNF3s)e*Wot{f=B4bB*79j(fF|pGU~WIN$U2H|p*59{=0Q3%AE7 zT;!tj(7B^yC*}e1l8erN#^m%)T3U&hTy*|3cc!=N?`OkL zj=wqI^W%5cyXl?saV1`I(fR4qvhL5Uti($$y7iy4C%xysRf(5ebpB(1Kl;z~PYd$8 zCl{TcJ}IyJ>8mU8l8f&3&(A5W|H5xqvTkzG`7e4u*UjHg#yZR2QQ{>R-TLWM;=g2l zC0=sT`DeYB-r3))#7izZ|D}i1JLjZIyyT+u(Dk!y4U~W{pnrui%Ql_E;|1WM|0gbPOrpEF1q#8r{ej)X>TQ7a?$yh zA4o5MKgIJ8@sf+qzoL`gm9r}Gl8eqyp9t@&S1a+7i_U-B+vy$nZ6#iE(fRp1A^dkn zjfl7X_e0LVI>z$+-}Oc%UUJd-*Bngm-G8jaPcAzDJrmN~{`(nT_vE7U(= zc*#Zg`sepH*1zGSO4dy-I{(JWx$aF%EAf(xZvFHr@IUy~O1$Kv^KX7Py$^j{iI-e- z{)hY0yLDwHUUJd-=@Z1`m%pD7@sf+qzx}=RKKjo}yyT+u@0gMP$5&V4B^RB4=U{rD z_;w{;a?$zuI|0`H)Tm0l?Y|#z{-@`pclY{AUiajp^K+e?*Z-dHRpKWX-Ru9^!|Cn1 ze?Hbv&ib44J-`3$U6|{BVRI#3a?!1y>(sHn&PzY2#7i!^^$&iSUamjzae#QqMd$A{ zNBjB*^WhNVpFP*lI6U$~UH1^mMSoXAbdGpFdsoT<75R!|P4t^OjtUy#4%l)pMN#FRynIFS+Ra zyzcRKy?U#dT&ViTf9wJ_H(fLn1lwPiT;D`9hMYn#gbKvFrhlrP4bbhXH;N|*@Ty%b}bKvFcorsrQbbhXL;N|PBh?iV+e!lMF<@$$+mt1sy zzTV^I`iF>@Ty%b}bKoueM>WJtE;@g?e>?nK|G*FNcHO^iUjJO@z|Zv$5ihyu{9Nb2 z%k>WtKe_1E&vg#GT>lX9l8esIbq>5-{}Az#i_Xt=4!m6d5b=_W&d>D?yj=ef@sf+q z&vg#Ge4iEZl8esIbq>6IzZdb6i_XvYeY{-%5b=_W&cAqndb$3AAL1n!ouBI*c)9)| z;w2ZIzudnYUao)Ohj_d0-!-p)u5;im`^PlIOD;M;*E#TV{X@i0F1qz|odZADKSaFb zqVsc|125M@Ty%b}bKvFrhlrP4bbhXL z;N|*n0Md#-_2VQ>P5%H3X&d={Xc)9)|;w2ZI zpWnCea{WWZOD;M;*E#TV{X@h{E;@g?e=q!8|G*FNcHO^czWxt>m|m_s;D>n0Md$A{ z2X!2J9RAJYHAm0ipE%EasS|bGLyWv#f8(cr|16$28efoo131J_&A+RDM0}lz{Q-uu ze|uN`F!pcnsvpMw?OpYwHs-oVeN@T1$wjyRVeH@DZ8p)sH!p z>mI`X?OpX_buL)gE)%Rh|$+q>#d?o0m=_HXa1A0J<5 zSoaY2Z||xA*zrCw|;@i3IA?)AY zRe$=s`TP%I|Msr>GY+SJ2>Z8p)lWK_{vqt&-c>)0{oA|h&zh0`A?)AYRX?Ra*FWVK zmAvlAMfds}#{TVH{$cFj-c>)0{oA|h&)J{r9>V_ZUG>A*zrCye*!?%_a~{)zJn!V9 zd;W*9e|wjI82h(()lZ)s^Nz1SL)gE)tNwyHx$YtC-`-U}jQ!iY>Mz=u{__6e@%0z- zypxOW`5(sq?Opzv`_eyz{oA|hFK)j7^Rp%&2gvtba?ySN<-YM)-%$2%@AA)jKfOcP zzrCw|_L1}tVgL57`pd?oe+c`xchwJL|Msr>a{V!$_aW@x-c>)0{oA|h=WWgP4`KiI zuKM|d`TP%I|MsqW_G#yJH-!D$yXuFre|uN`F!pcns$Y0G*WY#jS$zJJ^ZDPL@A>oV zRY!CEL)gE)%YV&;^bcYG_OAMCXQY1!`?q)1U)P`hA?)AYRljI$`iHQ8dsqGSJJUae z{oA|hhp~TqSN-Ds=`Z*1$Jar~$DLesU;mdJ%=Hgp|Mo8bF!pcns%M`HKL3WWe|uN` zvQDml2>Z8p)w54K{+r&aLp|1kD%@2bBg=F0cKTjKk^$j6;rbRYj= z?BCwyU%4;6L)gE)tNzvl`MeKd|Msr>Rfp1l+saDTO)k3i4`cuKF8{!h^bTSF_OANU ze~8!L5cY5Hs=u=@{X^Kly{mrp!l)1b5cY5Hs=sR>{X^Kly{mrB*7Ofy|Msr>y9d)h zg#FvQ>dXEevHl_K-`-VU{(dVy|8yS^W8s^dsjVuCZ6{p?BCv1|KMv;AFsb5 z?BCv1zj=T9hp>NpSN%iH_x~a6-`-U}jQ!iY>W8s^dsqFoPOg938I`S_EI?&H7r?eq^}|Msr=4`cuKuKHo@-`-VU_HT*x4`KiIuKJfJ zL$WFMZ>fhx)+eJpax4o*%zXbMXGz9FVVv9Af;lXFdH_4&FaoFgltP|gVMD?x3$a~h)e`cNdMe4}K$a~h)=jAwIY9;GF))(Gb@}BkdUpeT% zimYFK+2(xD`eS|Ok8=I=p_w|I3CGX+A$8=UTR;6@4*IVm>sMd6Ip1^s^j|r6 z|7?-c~a6e)_*0^j}5Rt-f$` zzNer5D+m2ok@c%D+nn!N&*QUx-alMq-sGbD_|t!8-S|c7$VIn)`oA39|1PqA^@W@B zJ?BsVm4p7P$oh}|n}{b!MRlZ$TsdY^FotRGTGF1q#8|K*_XDza|%g`4v| z=THBYgZIxCS-<+S&H0}7JU;8D|12_Za?!0{?-P!n^+W2&MYn$XzZ~>mMb>|;FPw4D z`O|;p;Qg~j)_<%oo9BDhAA6thH*)>Fk2v!t7v1{lKeKN9B6Z}VTmMB-%R&EDWc}n~ zHl)je-&A` z`ohimo__kT9Q0pB)=w@*-m{*^XZ^f?xX8T8MfdTi|IEi7zepXq=+;mFmt*d4D_Q@s zzHnd3d(NN!D+m2ok#!&I%jWr>^>|qKoNre$Z*tMCU;BLEXZ?^ma?!1S{$QsZyni-_ z-bb69=b<^@bN=*SIe7nUk@c%D+nn!N&*QUx`p+WsCKuiM=|8h>{33PaqFX=xT@L!M zBI|DYzJ-zZoIm|n4*IVm>p#|)&GS9$@vv_C&m!|C7v1{lKeKN9B6Z}VTmNu;{Ba+ zEL~s8y2-^j({ujxUpeT%imabpjJ#((9@eeCGi2W6qFX=xXV#5hq>fy4>!<(AvHS;> ztovABIOCr4r~k^q-#>}0`&eH#&-bjy!}{qzi_Du`bn922S^LgF>c~a6e)_x|^j}5R zPcBB@bN=*SIq1KNtY3ZE=6uh3Jgl4kv&g*3MYn#vPdI)){*XFy(XD^gp-wsIzjCM# zOV0Y6^F8NJ|CNLOtH}Dv#mIZs^Z2Zr{k$IDgZvFJ1SvP)>I&#sipZ+fgeOHln zt1sM~?>T?^uN?GWMb@vrY;(S6J&(`2=|79in_P73r~k~l@r%@vi*Eh*9`2Nb_s`~l zte;$rxaa)ozjE;Y*&^#d)|bumJ?rtXZuOlZ^ClPF`t?5H_*p-sj$Cx>r~k`A|5aq& z$NIwkCGI(Y`mY@HUq#lhzHD>8XFVR)PybnD-sGZNzuqStKkJ9ok&ABq^nW=XUSG-j z)faBg_nbfdR}S7kTV(y}%QokG*7NwRoBp%Nyvaqke)`X>8^1^$x#-rvjY-Er|5arD zBe-@cHx#-qU|Cx2;7pWr`-TEJkS`PZJBI_m> zBkwtX`mY@HUq#kWE=Jz79uMoL|12_Za?!0{?-Q=~?S|Bmi*Eh&e>v#CimY3G;pTkL z`9D1->v-R64#>L6#fW>>^Z2Zr{A!OD{@EhyKGv7b^F8Z%eAZ3>S!CYiqFX=xXV#5hq>fy4>!-iVLH|``-RcWB z=X=hd{wv3et1DT*`m)XWp7lIF>!$xKGH-IxtzUg+{Hz~RM=rYc)Bok5Zz{5W^@W@B zJ?Ag4`mPYK=FyyQ*XRCWvpTaT92cK=3*uVcUGec+Q+dhLnTv70XZ`NaN6+?(`1pUP z^7wc>axu>LtY14Rz4tcrfOyG8=U=xYz4tZqfOyG8=fCD3>AyaFJP!~rx#;|hR;7P& z_;?;5UUJd-&;3n$&kG-Zh?iV+{_`$P?*-w*5Al+V&VStZ(>pqR_#s|$(fLP@Pw&|9 R;fHw1Mfp#NufwA{|39|ZBP9R; diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds index 8c4f3a7f01fbc16569c30cb7c01918529c786fee..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 94290 zcmbWg0gRR9*{-`lL=Z(3MWj>*MFmAgP((!>5D^7&R8&NYpr{~c(l$NBH2u$WJ>H5W9)xC#&rGnlCk4=?|9+Lh4UYL zbnAn=o_X-Whqvr{aL=w?4=!A|Yth~X3wK@l;I5~hxbn#>pIq?d!Y8kK^6Ce7KDB$> z_D7!B+UcBm!ih_lede0gKl&fT*RD8x#lio+VO?kDiHU3c=w0I`bUNct9oxC9Gk)^e zPJd_KloRYMpS1t~+;Fh){>71t_WZchJ00~O^!}Oj|KmUY;{*QR>HL>PVyCm=-1zUH z|99QL$@}vf|M$!_V4u=$6+g89CKm^~{Qs$c|CH#rJQDr;#VNh}V=oHt*monE1zU3hznw;^h2J^Lj2Oe%9fo*V4S6i;4fFABA_qu8QXMTul6|!%M%Vc|8{s z|HR9~JMq1W=Ji}m{H()EzomIS7Zd-$#Zt zS%;T?OY?dzCjKdl!aL$#ZtS%;T?OY?dz zCjP18!#j1TqIo?R6F=+l(r;;A&&9-l=Fae*HNB#FJr@%{>+sTVX+sTVX+sTVX9;hm=VEgH{_)}M zAF60x&&9;gI=u8-n%8qN@h{sM-sRIPn%8qN@v{yu{g&qSTul7Se-+-F1}mD^b20I= z4ln(d=Ji}m{417*cg6b^&Fi_C_*sXSeoOOuE++n)zZTw=0~O8dxtRD_hnId!^Lj2O z{#z!8_m;yI&Fi_C_*sXSeoOOuE++m}d%}BbUq$nJE+&4~;iccwyq=4R|JL7z_qNw6 zn%8qN@v{yu{g&qSTul6{SB7`>a7FWaE+&4~;iccwyq=4Rf6ceTd;9u|=Ji}m{H()E zzomIS7Zd;5Y2jUaw4!-E7ZX40@X~K-UeCqEf5*$=9hg(myq=4RpLKZYw=}QkV&Wh8 zV|ed8P|>`ei;16gcb)5yq=4RpLKZYw=}QkV&cF1JK9;hm=VIdj z#OK1hX>mpKdM+k@*5Re!(!8FFiGR~S!u#OCistoPO#H0FOTXoj==1B}Jm2%zfAgmB zZkbTgyq=4RpLKZYw=}QkVsid1KML91&B&&9;gI=u8-n%8qN@jvpf@IHE|qIo?R6F=+l(r;;A z&&9<5*rVayW*>vEe@^pyE+&4~;icEoyq=4Rf7{Q(yM1p(^Lj2Oe%9fo-_pFEi;4g7 zMd5w?SVi-CE+&4~;iccwyq=4Rf5%tC`^2h>=Ji}m{H()EzomIS7Zd-JlKcSJAwli;16gcKL1)p^Lj2O ze%9fo-_pFEi-~{l%JA+Tu4rD*#l+7#y!2a|*K;xPzwoW_?pt5cyq=4RpLKZYw=}Qk zV&Z>sT6kYPTG70oi;16gcnD|fJ8{YB#g?P!u z%+ET!^jn(Ob20Jz`@QY+f6}|*hj_`w%+sTVX1mwOTVRgJr@)I)Yrm$=0G7{axwF>4ln(d z=Ji}m{Qkb{W%hpMW8sH*$;HgiI=u8+n%8qN@lQJx-m`ZV;w2X|KkM+)Z)sl7#l$~- zad^)$n5P5rl8c$2b$IEuG_U7k;y>q|@Xk0;h?iW<{H()EzomIS7Zd--)`!>M|7_=n zc*(`g&pN#HTAJ5$G4aoQKl~pbD#S}JW`5S;rQg!Lo{Ne9+`ZvFufGs4xtRG`hnId! z^Lj2O{=Ny}?R&QnFS(fcS%;T?OY?dzCjMD(hWGr9sVk=VIcYeK@=q4i@4i7c)QW@X~K-UeCqEf6=P&UOc4`FS(fc zS%;T?OY?dzCjN`x3-6qRg?P!u%+ET!^jn(Ob20JH-49;hm=VIbt@J@Ia9w@|1E@pn#;iccwyq=4R|El%jy}GXuFS(fcS%;T?OY?dz zCjP765AUL(LcHW+=4TyV`Yp}txtRE`*&E)){e^hR#mvt-y!2a|*K;xPUppbZ*S=eb zmt4&JtiwycrFlIU6aRH@hWGl-g?P!u%+ET!^jn(Ob20HRnG@b6!-aUs#mvt-y!2a| z*K;xP-*7m*O9u<_l8c$2b$IEwG_U7k;=gfKc>AXm;w2X|KkM+)Z)sl7#l+wLUU-)s zEW}GLW`5S;rQg!Lo{Ncp`L^)hG`|opxtRG`hnId!^Lj2O{+o`6cg4{{yyRl$XB}Sp zEzRq>nD}pgExf#c);#_`TD;_9=4TyV`Yp}txtREGnI7I-juql17c)QW@X~K-UeCqE zzv@tUZ{1ahmt4&JtiwycrFlIU6aQ_C!@JtR=O5xF7c)QW@X~8(UeCqEzxtiWMxtRG`hnHSU^Lj2O{nD__whWF0?LcHW+=4TyV`Yp}txtRFxnh@T*-YvvSE@pn#;iccwyq=4R|L!-# z>+gSE7Vl%lOD<-9*5UQ{zl!GdTul7;%nAQJ!-aUs#mvt-{PbIz*K;xP-+MT`_YD@} zB^NV4>+sTVX_rV}*Fh#mvt-y!2a|*K;xPZ#fj+hjta> zB^NV4>+sTVXP2i<#fwcWQom_?_nUTul5sCWLp#yM=hk#mvt-y!2a|*K;xPKk;UGpWIxC zmt4&JtiwycrFlIU6aUUR;oUi0h?iW<{H()EzomIS7Zd+ehr_#Tun;e~nE6?Umwrq0 zdM+mZr&opdnJI;M$;HgiI=u8-n%8qN@jvrkcy}Kx#7iz_e%9fo-_pFEi;4f)ZQ*@x zej#3RG4rzyFa4J0^;}H+&m9l%o}-0$$;HgiI=u8-n%8qN@jw4sc=rwz;w2X|KkM+) zZ)sl7#l-)@^zgoLtPn4`nE6?Umwrq0dM+mZeTTyP;;urxrbRb@GG4rzyFTIxL^;}H+FTE39fB&WVAzpGZ^Ro^wy_V+nTul70tPlTSUm;#{ zG4rzyFa4J0^;}H+gYSp;)uBSX>*UJr@)I8T-OJb$KCPaxwEy{d{=O z+)&ZHo{Ncp+ONZV_P-V4B^NXQ*?$f1^dl9`>$#ZtKXzSsXO1nzOD<;qnRkWv<1;Fn z*K;xPpZBHk_B~XHmt4&Jeg7WbS^FxQ*K;xPU+`ggXaArOFS(fcFFYf>7yi1Uc|8{s z|C|lsoqK*EUUD(>&wVDmmt0rTyq=4Rf8LSsUiQgCyyRl$zwGDXz5GiR&Fi_C_^+H1 z-Yb7!h?iW<{0kO@cfp4h&Fi_C_^;j<-bKp`@sf*~f6?c|d(DQ5=Ji}m{MY_Eyx09( zAzpGZ^I!MZ@LqqUqIo?R6aUid!h7S`LcHW+=D+c-@b=HBXkO37#J~JY;l1ghLcHW+ z=D+FR!@FW%Me}+tCjONlhWC~q6yhZpGykeH!n^9%70v6pnD|$32=AKn3-OYRnSaeQ z;l2I3istoPO#F8o3Gcus3-OYRnSbEt;l1-q70v6pnE2Pt2=BVz7vd!sGygpc!h6q$ z70v6pnE2Q43-A5Q3-OYRng9OJhj+t%#lc*h0MIV&;G7uJArQqoR2|7Zd*@UkdM|4;A7i7c>8({~q4Q_Ej{m=VIdD z{$Y3@|3M*MaxwGoI3v6}eqGVLo{Ncp=Z5e;b$%gUaxwEi^-OqoU02b(o{Ne9nIqxd z{mDYS{|OD<;qy$iy-_rr?j^;}H+FYXKP{^f;u z$;HgS|MTH}X+uTxdM+mZSAHGd!G9~nOD=xIzoP5kum6|z%suAjio^EbywK!di%%zBzh-osc1dV#iT#(7qRaXw^tmt z?*}9oll_mM8olvfuV_8b#iW1YpJU(SU#&P~|9&SIll`A`Y4lF|ensnfE++kn3uE6C z?X|}1z&UIr7nA*;ygPc6>@`QT1E++j` z--vxro?CI)zWpe{uaHNpQ&g)&&90&li2snEft5XPcA0=|M;Znef+Bx zt>?Lz^v|0b`#$gM6^HHm5xJP`zwhqo_5G=$^*k4|{-v?+zVBBYvOc+(?0?pd=$${N zqV+r%ll}#}W8bqURvfnLSL9-{|JmP;-i5bTw4Uc;*8gnm`@&fjhpbO7Ci}neC(*lT zOGWE>E++kpe-Znhv%TW5eg6@;nCyS<)acFqdPVDbE++jse~x|6eYN6{UB4q2ll@?Lz^so9`?EC7^R2;VNzabZs{V!S=y+uE+Xg$xxtUoFCz38hIhpbO7 zCi}l;b@Z8_~OdZbj>PE@u55vG420R2;HC zxtQ$#`fo&U$+C*p^IS~&H+(zxz4X?K!}k3r?0fmwD-PTBV{$Rs|4nyC@1{Rhw4Uc;*1t6Nebe_V z4q2aEO!mKGNAzwUQ_*^!i%Eaw?%4M&6Dtne^=oo5+5auyj^3(UD_YNUG3$Re_PuIW z#UbmHi^=|1{Umy~ZmDQJ&&8yF+b?3@tG8Diw(q|n7nA+3nHs${U$1CA&&8y_`p>cN zHLq42vg`NcVzU3+FOA;q->+yr&&8yF$HLh69Y3x(Y}fC}#bo~jyQ6pK#ERDQT+I5b zW8VY6t2ktRaxvNeou7@~U9&1$&vP;9-~C4Hd)?fM!}k3Lga9wT}A78E++krcgOxW{;A@y%}>b1WdEOdBYK;f z*N@YBo{L$3N9=pkn2JNzCl{0bZ~8{`9$Z$@dY+3(fAhCv|66XYIBf5~Cl{0bZ~0sF z9%^1cPV0FtX8oVUz8~6Bamf1QVzU2-Cq?h!uU534=VH=-WNPgHk*`-Aw)qjcnC$=2 zyQBB$pDJ3?Lz^q>4i?0e_-io^DPbaFA- z|5H<=_te)bTF-Ma>F@k=?E9%#D-PNGj$BOkzw6TI?fQO2>v=9F{bv@&zMuJV#bKM@ zk&DUxckhngvlA;?&vP;Bua151{$0f(>ywMg{-6D9^q!kl(R!YXNq^59vG3>SRvfnX zW0Q-?{-6Iv^!9GAXg$xxtpAPJ_ugd{hpbO7Ci~y}=jgrgYDMdLE++kbe~W#;_?e2s z_WoybG1>qAh0)vpzWB*g1@7<)|@<{ag z`4M~^%j^5UcJ;^n%hs5G?4gS0^;}H+tiwycrFlIU6aNW!h4+MiRy42YV&Z2VUivM~ z>$#Zt$9*llC)($L&x6yvo{Nc}b$IEuG_U7k;y=+Gc*nn0(K64)#Lqgs^jjW@KEM9W z^F4q4PipR;eA4moJMCk7E+&4~;icEoyq=56`6uwc1v~%5H5JY4xtRD_hnId!^Lj2O z{)ztx@5u)%n%8qN@v{yu{g&qSTul6vZVT_EzgIM`=VIb#9bWn^&Fi_C_)qytcu!qb z(Y&6EiJx_N>9;hm=VIbN^{?Tb{N;+~^;}H+tiwycrFlIU6aQ%|!+Y9rMe}+tCVtl8 zrQg!Lo{Ncp%9p}>`ihF?^;}H+tiwyc<&o&~`@ea<=kNd1{}SFa-mGX|&&9;gI=u8- zn%8qNIlq73#DLBFKM23myq=4RpLKZYwKT8iV&XsZi{U-1zoL0P7ZX40@X~K-UeCqE zf7bsA@3b#eG_U7k;%6OR`Yp}txtRFRUK-xB->+z1&&9;gI=u8-n%8qN@lXGJc+Xi< z(Y&6EiJx_N>9;hm=VIbN=a1p_`{xeCeQ^1Em*-;QXB}R@f39d=&&9;=-#=sCkNqL` z;WV%3V&Z2VetIp<>$#ZtXMQfcA75P2yq=4RpLKZYw=}QkV&eb!@56iU>lMxGxtRD_ zhnId!^Lj2O{__@v_q<~j&Fi_C_*sXSeoOOuE++oI{}$d^S5-8x=VIb#9bWn^&Fi_C z_-Fk#yyw4G(Y&6EiJx_N>9;hm=VIc&U_p2<_)SIgdM+k@*5Re!(!8FFiGTK|!+YWU zistoPO#H0FOTVRgJr@%{-}lAee=qt}Me}+tCVv0EG4s>M?=-LHV&cE}^6+xMUH0KL zujgXoXB}R@U$1Ch&&9+)=ab=`JFlX7Jr@%{>+sWWX$#ZtS%;T?OY?dzCjNOZhxf8M70v6pnD|+Tmwrq0dM+k@ zzR!=>-R1i$n%8qN@v{yu{g&qSTul5|Tom3b-mPd}&&9;gI=u8-n%8qN@z38E-YaKU zG_U7k;%6OR`Yn${pTGY%&-eWM|CK)r?}EJ*&Fi_C_*sXSeoOOuE+*$+cz$>n{+sTVX9;hm=VIc&`hSIY(X$oJ>$#ZtS%;T? zOY?dzCjM*A4evGYR5Y*WV&Z2VUivM~>$#Zt7e5o;YiCw8ujgXoXB}SpEzRq>nE0># zQFyQ0Rnfeji;16gciL3o!wQPI4fi;16gc$#ZtZ~abqZ`)kayq=4RpLKZYw=}QkV&Y$Ya(Gw2UD3Rri;16gc$#Zt2R4NN&T$pZ>$#ZtS%;r~%Ola}&;RE6o`3$| z`K|EYwZ5WxJr@%{>+sTVX@=_EV&Z2VUV1If>$#Zt@A;qMy?0$j^Lj2Oe%9fo-_pFEi;4fIxtRD_ zhnId!^Lj2O{`Gf-cl|#rn%8qN@v{yu{g&qSTul7;e=WQl1}d7@b20I=4ln(d=Ji}m z{2R={>+XTKDq7~bnD|+TmwwA5(dYMn^L)?W{~Ona*Y9I(`*7OF^ju8*ti$W~s}{}c zxtN^a?^|NtO>1HwPV;&$CVtl8r`OWFo{Ncp(?7!d;K7RK^;}H+tiwyc<&o&~`EQ=@ z`T5^`TX;ABy`p(N7ZX40@X~K-UeCqk{9C>f-iKCIG_U7k;%6OR`Yp}txtRDL`fGR} z{&Ge0dM+k@*5Re!(!8FFiGS$#ZtAN@;sAA7T+c|8{sKkM+)Z)sl7#l*jDd3d*dP|>`ei;16gc9;hm=VIdLzDxZ1zv~Yb&Fi_C`2D_3=BJO}Xc|8{sKkM+)Z)sl7#l*kox8e2sh!4blzxnsC=VIb#9bUg*xM*I_#l+8j zws`&T{Y^#ldM+k@zfYHW>9Y@~c|8{s{|lcE@4opJ&Fi_C_*sXSeoOOuE++nczYgz< zpQ>nH&&9;gI=u8-9*I7G|7@P``S;KLmxp)%dlk*=xtRD_hnId!^Lj2O=YQ#w;eB~t zMe}+tCVtl8rQg!Lo{Ne9$#ZtS%;T?OY?dzcKhT0ac6esO*z4w_87yjfqnfJ*B>Rd zf5RVjkk_x@uKt+m*1OIA|5o98`&vjY+Veg8W9Qpi^N;;*AzpGZ^PjLPyeHV_pM5~Q ziAyJ}AUXE@u7{_l9@;xI(<-V&)%zAiO8dEW}GLX8w~7g?EBEIX}cpE@u7- z=Hm0u`}ak>R4LLpvqG4r3=7v599 zS%{Zh%>0uVhj;Q13-OYRng6tb@SbLWe)9Q;c*(`gKV@5Zr~JJTFS(fcPah2L8K)HD zB^NV4?>o1T-pLHy})1D~AOD<;q zX~)BR_NNN*l8c#t`jqfa|8gN-axwFtGbg;~yj_TwT+IA4`olZpr-gXQ#mxV)_2K3H z&*t&>LE|MCGylw8;hp);XU`vLcHW+=0Epfc+ZU$iQ`7yYsjFS(fcFWwy9i$5sDOD<;qIeWu9cU&P}axwGIJrLeY zW)|Wl7c>7Qhr)ZQInC37c*(`gf2q0n{Lfoch?iW<{PW%m?`2yH@sf*~|FYrm^8Qiw z0r8THng5Cj;l1Jug?P!u%s;;`yz{?Vh?iW<{8ugx@0C9+#7iz_{sjZ!UGSSiyyRl$ zU$`y23;$k-mt4&JR}F^u>Qf5wl8c%D>Nmr?Xm%l9axwES8Vc_EXTQtwOxyV&-2pKfJ5HTZorj%>1{m3h%AIEW}GLW`5o`W*@(E+Xsbs z$;HgSdT)5wj4Q-TE@u8U2f};%%tE~6V&=d7PxuBmt4&JYt6;^?^siamt4&J zcf1$gfvtsj$;He+FdW`H_ZQ+N7c>7|6T*Af7Ygx`i<$rKzVPz?B|Z-jFS(fc*DVh3 zx*rzeB^NXQJpk9Fbi<$p{W8vNSL?K>sG4u1j8~ga3PkgEnFS(fc zH%$rerY{%bB^NXQgLA_B;M;|G$;HgSxj(#{e_Du_T+IAi)`xe?9}4l3ifPdu#Y1UUD(>?;Z~Cv-=D2l8c%Dxe4KY z?hA!@$;HgSr!TyFzFCNuT+IB>FAneXKP<#cE@pmy?l+%*=H?<^axwG2ur0hV{Jjt_ zxtRI)4Tkr{Qws5ti<$q$H^aMsb|GGJG4t;q3hzrx3h|PQncsiTw!QvdUKf6dmt4&J zFCPoSB^NXQE62k-_^Cp?C0bthZ}R)^)$?aOuQxs;`{p5jWdB`#pFi90AD=%r zWFJ0%ZupVUUsvDf&*t~}b3?p7e{Puheg14-pFcOm@AKz|ncwHn=Jok=L;OB}ZkYLf z{%l^KKR3kh^XG<{-{;Tf_4#u{{62qfnE8GFY+j!~H^lGr=Z2Zz=g;Q#`Ex`3K7VeQ z`F;LuUY|cV#P9RxhME85;dtHo{Mq~vKe?Fseg14-pFcOm@AKz|ng7(j@caDP{17j> znE8GFY+j!~H^lGr=Z2a8w1M#Z{Mr0Ie>Oik{^t3fzkhxHY+j!~H^lGr=Z2Zz=g;Q# z`Ex_OK7VeQo!{rr=Jok=L;OB}ZkYLf{%l^KKR3kh^XG<{-{;Tf_4#u{{62qfnE8GF zY+j!~H^lGr=Z2Zz=g;Q#`Ex`3K7VeQ`F;LuUY|cV#P9RxhMC{z&*t^{b3^<-e{Puh zXY|MG&*#tPhxp0G%ShrpBv)!`E$d}@AGH#`uw>eexE-# z%=|uoHm}d08{+r*bHmK<^Jnw={J9~1pFcOu{62p+ug{+w;`jM;!_4pVXY=~}xgma^ zKR3+$K7Tf^&z~FO_xW?f%ShrpBv)$`E$d}@AGH#`uw>e zexE-#%={N`j@Q4>pUn^PlZ%<(=g;Q#`Ex`3K7VeQ`R5)8zt5k|5Al+VncwHn=Jok= zL;OB}ZkYLf{%l^KKR3kd^XG<{-{;Tf_4#u{{62qfnE8GFY+j!~H^lGr=Z2Zz=g;Q# z`Ex`3K7VeQ`F;LuUY|cV#P9RxhMC{z&*t^{b3^<-e{Puheg14-pFcOm@AKz|ncwHn z=Jok=L;OB}ZkYM68jRPU&!5c?@so?0-{;Tf_4#u{{62qfnE8GFY+j!~H^l4n=Z2Zz z=g;Q#`Ex`3K7VeQ`F;LuUY|cV#P9RxhMC{z&*t^{b3^<-e{Puheg14-pFcOm@AKz| zncwHn=3Vl({W>ShrpBv)$`E$d}@AGH#`uw>eexE-# z%=|uoHm}d08{+r*bHmJk@3#25@AGH#L;U1o=J)xtd42xe5Wml#8)kl=KbzO*&kgbV z{JCM~_xZDVeg51Kzt5i=W`3VPoA-fr@p*vweg51q^FMGbUjIISHb2BqE@pn8Kbzm@ z&kgbW{JCM~_xZDVeg51Kug{+wW`3VPo7d;h4e|T@xnbsK&TJpQeexE-#%>2xm@%#L_AzpGZ^ZWeSygq+!h~MYW4Ku&bpUvy@=Z1KF{@gJ0`~2Cw zK7VeA-{;Q_Gr!ND&Fk~$hWLH{+%WU|{Mo!de{P81=g$o@zt5k|>+|P^_6eg51q^ZWeSygq+!h~MYW4Ku&bpUvy@=Z5%w{@gJ0 z`~2CwK7VeA-{;Q_Gr!ND&Fk~$hWLH{+%WU+Iuu{`eEw{HpFf+IoP9LU_q=}W^Jnw= z{J9~1pFcOu{62p+ug{+w;`RA+!|eP%e>ShrpBv)$`E$d}|J;N)zt5k|5Al;L?pS$L_)bWjA{v1Dlt(rfNwQHW8FWStvAs>&2XnFnhtE)d|TYUcbd24(g z;eCHGS}uO%^ViiM`)+toc(f2NxtRIKEe`LvpB3UI7c>8f2g5slQ6XM(G4r3q*FQV= zNna_%OD<;q3A@5OaeN_OaxwG!{MY;^?+ic0OD<;qN&VrSWUpQGbRb@GG4r2tD7>dG zEyPPMX8y@j!aMnEg?P!u%zxV6@J^Xrh?iW<{8NsF_w+r5c*(`gf5xitp7Gm4yyRl$ zXU@v!{Y<;yBjT;U|2OlWH9fp%eX9^JxtRH<4TksZX@&U7#ms;9`{AAbav@%FG4r1@ z5MF*>5$A_^$;He+<8XLCwzd#2xtRH9_Jw!mcM9>6iUwAyc7k#b}FS(fcnKN?!i~muG*XNH7Gyj}-!aH|UAzpGZ^ItMQyqEl_5I?z? z`7eDlyz?$E#7iz_{>wVyz3hvHc*(`gfBClXUjDB_yyRl$zvA8S&VRHJFS(fc+wVX9 zS@`+6A9%^d%)j7Zco!}z#7iz_{;MX0_o}ZH;w2X||JA#~yJ&nNUUD(>FM2P$*X%6B zOD<;q#r@%3{HsE|56lVg!1oIAl8c%D&I94S>!L!uv(wY{#+qmaxwF-+Z^6?|0u*uE@u9F z-U;u$n+oxgi<$qv`Qg3qM}>IF#mw*XANzH`|MKudyyRl$-_Qx~hA$T4B^NXQ1KYy; zz`qLdl8c#toWr{j3l#xtRGMJQ&{1iwg0Qi2AzpGZ^FK8`yia|r5HGoy`F9P5_vvYcc*(`g|MdIeedgstyyRl$-#rlC-G3~^ zOD<;qXAg(>xwVCO$;HgSr!TyFzEg;oT+IB>zZTxT=N9567c>9f;qY?5R`d9MTk(>M znSbB<@a{9Gc{&g;xtRH1G#B3e_ZH$M7c>7$bHe-5_X_cni<$rB1L1w;qC&jnV&?bj z|90-d&xIf2B^NXQtDD2i^>aQCx{gkczj?mr_3uve7{T@XuIt~_@yHAHePg0MU;9_p z-#@n7`ggx#ub0;g@1JD9e=Ha6`JVmf>~+%l4|~1*p>X_XZGLCDXwUcT-+L^)yl;bj zK)mE)=D&Y&csKp95HGoy`L8<~-u^X(c*(`g?>~3Y&cFPv@I$=hV&>=j6gc;5fWUw`*n@Bg*0zh@S% zf5X21S}xl2J^RnSYkzJ%Z(o1y>!vt9$i^F^4FAMRKi<$oh`*R+zzyG@-UUD(>pEo_c7rb4Fmt4&Jvv!65BK!Ku zJ|JFlG4qc-9^R9_P>7dY%={+~gm>Zxg?P!u%+KqWzxR!qS9qW8g@^c&zyEZ-e#fr2 zz1qKhPWV(Ie;*+i?fIUszi~t1J@Ge%ciGniaxwEWCqK!4zw`amB3^RQ@}B;Qo5OqZ z>xG<~T+IBF4#&Aq`9mRIaxptUb80^Sr!6VOOD<;qDciz(x^?(dMG4nGg<#j)MT_Ij_F?;><_Y}^5(Kib@H@TSk zFMco1&G%2*IsN-6@sf+#`I%GVzjR|EUUD(>&wDMrm%Uwxmt4&Jmmdr7{8I|?l8c$2 zIU(m>u(c2`xtRGE9tiJM-z~&TE@u9#-w*FKXBOfm7c)P9@8t7efBzg_axwE?_hxwc z`R#ljAYO7Y^Dh|=|I(R-yza@x%+H*R*MI-Bg?P!u?DfCwV0f4Rw2*U?i<$qX<8khr zXBXln7qjy-r{eQ}%l<;V8^_ zzbV8^E@pndPYD0rR~6!|zkew6uiG5ndtNWZOD<;qdk=^AzCRS=Cl@pS z{ZqnQfBy`xdvY=JGbiEoztQ$A;w2Ze*FXPmvyb1|^g$u#CKogR=IL?nEh`G~l8f2- znN#3@_{)WO$;HgS^_}oO^7lf#{SzWyaxwGocsIOH z{Id`*xtRHP&I$ih>k9Fbi&vkNM_j}(i#7{0}um2a0g|~kHJm)4CGynd@aqgG47UCrrv-5ME+CF~gmG2hf zB^NXQ;QQg_`UAfX5HGoy`8&;n9uLTVc!>6&J^%g0Iy~}1UH1^}`JR3KyKmy=@Hy?@ z(VmOlKmV%h-=F-ulYb}szxPDjkLThWz5V=sn{(>#!A|pfE+&5d-jCn^zAc*9b20Jj z?>);7#y*_p^;}H+{`W2O`rmg%^Xl(m&GS7!|N3)Be-1d!>$#Zt`E!r+`=2+W`8^kt z^XvEh3&-O8PV;&$CVsx|;P>C}qIo?RyZtNc>u()<@cV}AA0n@39^yxS|8(`a&cW-4 z*PF=iTXNCz`t#q_=Q;;oUhg7aaxwGsy2o4p{4%`cV&>=f8(yw|h5-_Ym=ti<$onbK&LshlrnC%+Aks4!m6d z5b=_WnV;(%c)9)|;w2X|Ki4_%a{WWZOD<-9u5;k!`iF>@T+IAj=fKO?I}tCrnEAQR zftRnhB3{3LR>REC*Im3^{}Az#it<&Ge6fk@cR9u8sa4vGrzxo+x%Sr zzz^|uy?;A-{d1iIKi5A*yyRl$=Q;;ou78O5$;IsaT<5^c^$!s*xtRI6&ViTfA0l3I zG4pes125MxRT+ICZxsR9Y zA0l3IG4n4w7+$V_;D>n0#mvuj4!m6d5b=_Wncv^PYhJE@;D>m--oKl?{<+S9*Y6+G z5HGoy`MJ)4m+K!QesVE8Ki4_%bNxfaOD<-9u5;k!`iF>@T+IAj=fKPL4-qf9nEBUj z4lma~@I$=hV&>;M2VVZZC*ma+Ge6fk@bdRf5ihxz`T2V%Uao(Lc*(`g&);|Pa{WWZ zOD<-9u5;k!`iF>@T+IAj=fKPL4-qf9nEAQRftTwaB3^Pa^K+d8FV{aryyRl$Z{I)p zR`|J(1YUptWW&tQbq>5-{}Az#i7zdq>1eE@poI-Gi6wA0l3IG4sE0EWBL*!0-1DFh4o|=J}rge&IR? zUao(Lc*(`g@9*C;FV{ctL%dz@-%Gy!bDaaPu3JF7ac7K48+`ql6KZ^UeclAec|Msr_ zxXp3yaUT?NZgMd@|0wR?-sK;~{oA|xCmo8<{|N5i-qoLQG|oMO`?q)XC)(E;e*Jm> zoyhBuT(rFB>+j^@@Q>jB?Opy++`ql6e`;U&M{xi4uKr~EI>Wg~aR2tM{%Hf@=f3Uy zK7_pP$i?jS=hq+1KZ5(Wclk$g|Msr_DDL0h)t@>P=N`fR+q?Q_z7wDS5!}DMtAEz9 z@Q>jB?Opw8$HPB@`?q)XM{)o5uKqc5!asuhw|Dht^vC&U{IrnQ9l4mj{zh^C_AdV@ z?%&?kAI1IKyZYxIjB}6R{_S1;QQW`1tKYu=W@GGQmXXi9Uw>+tef~#r|Mo8bDDL0h z)t^1x_HAE(MsWZ3uKtDd-e|uMd6!&lM>R-G${3E!3dslxH_iyj&&pi^dedGMOGlKiKclGDJXMOwiAHn_GyZV<6hkpe3Z|~|~F(LdTxPN!*Z&1ov<6>Mv>j{9p2R z>;v-mZgSCneR}@=`-cAT-_ZQ|4>>ovn4N#=`tXk6{_S1+zj0UiM{xi4uKp?< zb};<@{(bv82st;on4N$5;W+;Y?%&?!AI1IKyZYRxg5Q55xPNu&`2Z|~~g-5355 z+`ql6zizSh%|C+sw|DjL83_Lf?%&?kzjs^sM{xi4uKs<4;UB^M+q?RH{|-C<2=3qB z)%Wk;ve%#92LyTDk&D^uZ^Jur{s-0-@^yz?%)b6Sa4gQx_x=-`;ip zQQW`1t3QhSw|Dh7_s6+MaR2tM{wVI>-qmN$#OHkk_iyj&Km3~Y?e#Z;`?q)Xw;l}t z2=3qB)qkY<^M3^QZ|~}l;{NSj{ZZV%y{o^y6X)OldLgfSaxr`TKi>TLKZ5(WclmeB z5AO)>-`>^t`jB?OlDJKbm*x<|oJBJm2%*k1xJy zJ^OXvKf91$e{wPV_1`}f-Vxlty=(uYxPN@$Dm!OzbYc|Ejq*?7KZ zpAN6Hj{W%~YHlrB-m}mAnRDV7>5+?;_v|z0<#E!?LeAaJg*SWNv(NmM2lH2v^J^~K zJm0h5&Y3@m^D~EL-{fL;e*K(q{G1=sBNwytGymnm{8i-qnhQ72_uN18S04QQY?1S~ zbJ=*lXP=MHuRHT+k$sbk+4(hR#?Sd7J#sNS|EYZ)e=v9Dp*bu$pNHo8p8IG1%7gi< z$obp3Y&_qy&&TK7?avMWX6&1s{Ws6|>@$Dn-1tR$=Zu}xWaxptU^Ismk|6Sz#nhQ72_uN18 zS02n?Mb6*OW#jpteLgA8RA zuRQqq*&^rHT()_>XCDveX8tU)Z*nm^zkW_Qe$Ef+k&D^+ng8-&?kaL_&4ruid+wk4 zD-V8tw#fN4mu;T!+2`YPZsyM-`z9B&^Xun?Z|A}h_uN18 zS04QQY?1S~bJ=*lXTSY9;jhQ}`8ne3n_SG!&-|Hl;}_|Xi`n@v-psD;`yFN$a(;5r zp6R)N=C3@Mzlxk+bJ^zko_#$0x-)+k**CeEonJpE96#rW^vK2R{LFuOFn<*}x8}ml z^F8;^{FMjuSCR9Ri)$Td+wk4D-V8tw#fN4mu;T!+2`YPe&)|2`z9B&^D}?u-1tR$;uRNH)ikzQZw7h2@59in18M1G3G5hsr{>-`Yi}c9F?EK7sd93s-`700RuOjDe=d$s9&pscYb2EPy**CeEouBzL=f*G6BNwytGymnm+*Rb< znhQ72_uM~oRvr(mE9Cr|%QnyV?DO$CH}hwaeUppX`I$d+Zu}xWaxpvq1IIf4;OA%a zfSjLPw7BQ~nZNSj=VyzYzn#m*^F8}`IJf4`kbRSj+4=Qz!trx{NRM31&d>ap2lH2v zbGLKhevf*Ic%FzGoi~=V$&bvTt%RJHLKTIDXC#>5+@s`I-Oncx+=K z=hs}gdA{fVnZNSj=VyzYUvt^!`JR0~KIdlsEV6HMF*`r=XU>gZq(?4h=iknz?ZNz2 zarbK@83k&D^+pWJLBdoX_$ zIXAgzdC&bbf91j4Rpk8SqUAmNcsMunXOVrAi`n`0bHX+Eh4je9?EK7sc`$z!Ik)D* z&GS9?|J;P=@pH3zK+a7rTHLeG$LHM4pGEdfE@tP~oEa~_{*WHIn4N!5U&kNJUwLQ_ zOU~z^dA{fVnZNSj=VyzYyPeC%^F8}~e9q1MS!CbjVs?J!&zu{-NRM31&cAQ4;}7Pq zJT!+T=lsp{J@?Q2mB-8L3OT>#vd!~7`+R)Pt+_K~-{fL;e$AQjuRj|5phqrR-qX+g zmj`oGk#lP<+&tgA-*`25g?QPI_z{2HKWtuS-joyU_uV4!*eHfo2~NFS(fcH|z}WCz^dgyyRl$zy2TL zztMc==|H^XV&-4EHvG%X$L9g!B^NXQdA|zp`R2n9@sf*~|NP6td!hO8L%if-=0D*( h;T>;2{17j>nEA&~4(~+s;fHw1Mfp#%ufyXy{~u%?(3AiG diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds index 83286101d60b5b89bf58fae0dc53f6ea857c827f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 124882 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 wd)L@!KiW$VyZzVvyzM!8A2d-WI1%&uP+yDRo diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds index e0dddea6d4fffff031e4cca76c01194db99929e7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 125244 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 A%>V!Z diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds index afec93bc2aca5b3697843428bc0bea43a047004d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 156258 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds index 614b8448ef6b5867b022af9d40e149dedf9a4a2e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 24414 zcmchfeT-+-S;sFsFS|Q4JG-;HGqba^v&*owh?Fcy*2V}_DA>|cTU!jiwB4Ykibz38 zOGraVqqV`N(WWsb)&>%z{ih94W6+oeskRj>l8V?ELr@c5G)6SORIO(HexB!i?{8*z z&$GloZ1U@8dCvLV^K#EQ_uPAbzZqtS9Xq~%IC8;`oi7ga!{V@S*g5Rm`tM=aj@g@U zx_%fAPR(3<-9xW`>z6@o?-aGHV@~SINz5jiu?)j-x zr#^7c2Toma@3b*Ke0dnAKBsiEn2_ThyC}_T1IgUBzE84sA+F@9G zbQs{_#bH=}c*1p^wAD8cgXw%?w|;Z)8wP*oUl@k@pVi0IzZdpo3_71!9*=U#OFi&R z>dWy>=d0>R`#2WFrQIV{Pufd;q4Ra>7vq=lK>vH(`8@c%wDfbeZ}elVwQ+^VIDw9L z##i|C2km#i&@TGN=dq=C%O{<7Li)k|0v)f~zxdoR?7d?c;L2sgu>a`^9T&UhM;kQ{ zAmf#`o6L`v-u0OW{NsCGwe+qZ=U?aB^MLctIPy4X>0O^bV!S{+`p|S--0HtE z*00y)`nPvYefB~1p?Kh!_y-d@E_VHWA4wnLFX;<8@LSS9{IBVcbo?!~ ze?ViOdK~;%`ljPzS^vGimj1rCr*Aqgmj06FF6A#hmi|b`_tgH}Bk9kpy^J5zaj{$e z%Cp08(Z!lS@J}^w9^695FYfz?u1P;A|Ikb62j#c)Zux8KJIW8rKde5a9zn;8^4HZz z_(6H=>O=gX%Vj|%MYsDrRTH!pvrIQeP87=ekq4>OZg)m zFUIcyU3c(<@(+A7{h;H8AM;l2gtVLaYtsIf-mO3B%-`TE=`(*h&KNJ|FW$=M(_g(c zJ=1ZqEdS7Q`iCA*f28BfwZHa2`iCz`-*j9o%Rl@=`s+WRzUjDF`bXZD{*iB_Khp8H z)&9nBr+@TR`ljPzS^lw&^pAZd{gIAu^!=3|)|k6g=MX-l^A2YS5B_e>-=OC2 z@{i>F4Ql?j^say8gSq|$wf<}z%k?Ly^{1tGefsavliB{Yd$awf<6_rm-C~{xHSbx! znEye?&olp7zv)NTZPtyEju-1U^=JJHs{a^&te-*0i}i2+XR`l-D*wQnvizXRZ|U9k zADl@)DF5K2=?CSv^sc{rSNcKuE34@T<+t>%Kl5+t2j$N`oPJP#OYizS-;;h&{;r+r z2j#c)uD|O`=?CTSzB~P({FdJJ=Ppk_D1Ywj=?CSv^sYbui|GgDFT5fBp!}BJ^%wpp z{h<6kpG`j~zomEm#oN;l%HO*;{h<7o-u2_Y;kmqj;JVBGgUR)`rFZ>>n{xaIHSQPw zCC7hIr+4Ge^B$D`ZNE7ju-PEkNF!^xpWX$8`(ebiBHLh4*Coto!&T>win{mLK&-fu9 z;|71E>{B88Ry@=3YX8dkVEzU*Zy7(#-=O2g{H0v>zrk;0 z`RsqG#~3g6zj*9(A^ToD({ZsJf9!wp+4tg)biCOAPJbf%Kd646d42YOQ2pQ1%krmh z&+=#XX8ES$V(HIl4W$0F_oZ(-E|&hzlj-k#KK+r7pRD~|pGklBo6UFk2Zrf)hfmgO%zoBo~$(>EO#OMmg2^cP=Bf28Br)IQINIDh-zp1$dL z_56r=x3HP>Z{e#s??yVl*)Jb|&qL`iUX{M-xY%t!{^CEUzxUJWn~sa6zwZaqUz$qa zbX+X`r6gmCyd3d=QU)zv+18vp*#t#ADxTI$rtY@dt0~ z$MMSN`b0j6%XQ0iyz(_RWBfwK?bgqhwC?!h{*-bc<#OL@I$o8}{VDk%9`~)LmMHL9Aw?YHyy9mzwosFLDoHdll8Bqck9n{ z8|FD=-t*kXbiA7XJh!2rA^pzt8`JTs|9L)6K8VM2bJOwCSG`$3s6Xol^&jbYv3^i* z_F0g97xgzCul8TzJ(WKDE_{>yS4;2qKk4khf@(WH`>&wm#r_MAeHLWjg=acm?Z5Em zX3}Thg+J2qV*iEDJ`1w%!Z#hS_Fv&Wn?Cz4e3SiGOE3G6{TKPzcj1q8yx4!?G0q|5 z9^Z8QeB+<-htIgfAL)28{&>E~IERdTo;#Y3SL2`O!*g1{AnO*-jZMeJZvXLol5!yB z^4!vNyegmPljMVVJhwC*ulyCAWAZ^f-and-S3d6-$p`Ux?`S$+`Mh@|AH?Imqv?3% zv+mH(kbYP!6Pgt{ISI``AzD|@l59v zyT{w{A&rmrnb!H4`h8t*8{^;1TVl-PN#5@9Htx=R5O3ojCgixszCDi*IbO@(Kc4)} z+wwS@f1dfx^`q*-}gN8e&Njd-qO$2p8USsP5Hdg?<>xH-`Ra%(aJw_zkcTR zuBCU&=RT9`I$VAw*K5=9b6)TLeOIk@>Vm;^l#k$_&)%lAubpE`~Q3uW+s_8_4|_hKB7I2_6WfzwQo|H2TaG0ZR@|Y{Db$Vzr2yY>9|;yzx@X!eal((=Y0u2?@91SI==mV$u@uKS?$r)en`9bYrkwdUbP>O`Uh2i zeCi)`yr@6#O7Vm8cvp%abiD8nK9GJ;-tr~s2j#c)ZvQWTE&ZVUl@F&Ml;6_3{_1Pe z56WNF{H6Xu`7OQcAG$yNpuDx?=?CSv^sc}5RQf^rhc)jhKPbPYcm4Iv^n>!&znXqf zeoOEA?fXFay&(B#UjNVWeWA0)AM=;-!@OnOjC8!1zcFq#{~+@Y-(>!^^ltr0XZ{2= zfAE<6C-H-1{L-ilm|B>pymfmeY>CAJ; zyvH{kujYSv>Ssv5<6>Ff98o%6cGk$}P7xN#FaS9o?c&6jk_zh3v6f$n{O~!9a zFYC|vB_HD!f28BZ_{C$KLdGq=>3B7M@mN2CS~u`nKZ1^*XZ_&%%lPNI!TcHNcyayZ zzJ>M&)qd_@Xn)Z0qWyTZ6Vh%x)A6eP;c5Ot<}JR-{B7yo^G7=KH>mlG&-@KKUd&%S z<|$;};+c+D^EW)rU&y@0H<`aJy{td;mwe1y{E?0q^B0eK3YoX~rsLK8ZTI)_zK?P9 zD!#9>?fO6SH@W`^%Afssj=!MBUrX<{pLZRM-=KWnbx@C>3%zb014TD8Hq5{rM}?56YkatMr5NTYA@D_-Oh;`Fl>JAC%wHyZ)ZPOg|`p z@u$-d%5UjipX0Os1hwu^F6&Rw@nZeq`1nD2l#3s9yzuv4o_07(YSBi}8cUbpmqTz%v~e%ksJY;d9-?AL)2;{lnur7xmEf51;EFbiBI$G4Clq zsPdWrlpl1wD1T1Reei?w;+=!(_<4NliBG-pO~iUJp_z!CQ;xqn(ju+#f^F}{G`i=8uI$rf(cEJKgy^7f{qvccjo(tSMhzNZRekI z`HmG_+RSoI$HngXr;XFFnCd`{RHVZ z)=<;&s{g`M|3Uf<-=zOqdbj^br~iVQ_xSW*(D9=G@aQKNCi?i*K_2w)AfONoV~Hstx$8zd^@~^%sxx3_0(3 zrsLK54^RCJ>34jS{%`5s`tyE^eunfr@4ZaNtN#B#d|z$b{)y+VlmjW3=dY&YRr!oB z@>0|66)lf95~=nD_W29WUlT9`hVB@9|B?tN9IRA0Y?_XCRi3>OAys6HnywA_AnnFA z9T&Sk<&qELQNHPT|(R`L|PPMq$^*63p*~$m;j{Wt7 zj#oa{hUh2uiuB)A6FOe?ALG>@<_q({bX@G#pZ5DheK`-N<6_t6e31|0(SFnM^ZE1} zKIaYJbX@F~PZ{Kcc+}r?{0#rPHh%xVeqZ47;`as159|8!Ejmx){1?T)pOC*1y81IZ zpN-BZZf*az2uuQ=Y8zgav?>%33BtU22l|6Xn}aZBEA{Wf%sBp<}z_`?Y~E`KlCbUv|v zJo%ff2k>)wT+@Gd*&Oq2UthMJU&0O_Gu;qTV1tNxyO`Ui*E%^iboF88XHJ9p*Lrqp}-_W&>2r>ls1#U#f6#ItMD zdSmJ~)kfd)htt0z|E&``E|&g<|B?Q2{ptbVbX@HEQO2!Vhl{jxq7LR%i;G= z#Jh0+gpS)^$llanM_$=6%nY-u7Yw_G1%6}q;uo}seDkolHv6vcyZ&9byz{zSZd6s4 v^l6U%BK+vg;OPG3FXG(KuFal5@5*D&d;NKjdsJguV@k(;W6Qf!oF4ucAZa4P diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds index ff1993b9aed806635c2e5a8db9fe1479ba88a8dd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 24372 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/photodiode/sky130_fd_pr__photodiode.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/photodiode/sky130_fd_pr__photodiode.gds index 90127dfe93f724124d8b154016ea55140a876a63..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 31608 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�-FfMpJ2_9-Zq6Iid3*bHelU;o1dsE^bl�-y34Rav#|EJng^fy#4%% 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds index c8267e53e896c6cd312cb3c72b3de587577bbed2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 47088 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

H9Q+n9`?1!`8oI5A`P3fVZyrKPy${YGm{v-zZ z!*%ioze(Ppn^FEyF8zBF`AzaB)mt*kAIgz8v|mwqlXNr4AIgz8_)YQ#-Hh@l-M{3Y zy*K+IK6G^V03Qa9C?GUqVgu`W{^LWBX97V=w{S^$`LpIii$hwW)MH+h#$X6+~{T$ zKl4o7%)d$8DKAQf@#~z<{BeFanYVPVFB#1r?a*)9uc&?}-3Ee`A9;$8{5A2Ro9p@c-h#iPzPI4#`%7Z*{e?Vb-z9%d_FZ%{+J7m> zzK`Ez-%s_HjP`%Zao@pTQTLsso5B5ua_l?!P4*phGunU1bNWsGoAevqjQY<$xpbj& zXJ?I1<^6NXEdPymU)AdQ#K`y0nMbm3mOM~BiSi}g4E)5&xD&t0_@{oAjK-gGj642{ z8uz4|!T3{-amQ~m?&xMT{;V^`o%Lrj?&xMT{*Ma@dpK|mYe?|2>>1NP> z@{Dr>`Db!&KsTfF1LK5`@iXzEn~|S5@e#j?58aIXfDrcGde%X&$#0^ z8F&2V*!aJ@s6D?b$`8Mh-~)Lt!N=5pru)adhB@ya`W=gY&C>K6k@0^c-~Ec_^CQK| z#@@agckj7=aLdhm1~=X?_FES1N{3hL^ws~5T07c1{`axY?1^eUsv6hP_fBKaP4m88 zzSr^d_rrLuDgUtk#^;)TZ*)NU^NiNSgG2g#jXCz*bfo?X?`=ln=lzV|*O-1^V~#!d zT~q(qbKlYWH|P5Koe1^A6t{HK^^e>a%l>yR&pys%_#r-Y)BZ{GH{rd}Nc{y_w%DO&UMqq@ToZruVhdP3d9$QT@;1y~oJ>*WY`T z`?7x5p&hiF_T?VGFT72+ApO4ZMSIgH{k~8;ar&fx`_1pVdiNKz`t8!|FWY%RdCGe} WwdqZ~YTL1M`^B#-=XP40D*gjG+m-|X literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..dda05ae2647e3a47885f9d3a5c33a5a84c283d1c GIT binary patch literal 20282 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..3fda625771d2d31b50206328622b58b486c3e6ca GIT binary patch literal 15622 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..1c381b26c2d36ed3add11a42b87a1785e898c16b GIT binary patch literal 15686 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..c5bd736e157e3b4c16ed1987d670c48d3a84e4e3 GIT binary patch literal 20564 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 WO`mvFZ5uYOKl`2K*)$Nxi~j*vCG2(p literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..48d78026e9319cd6edbb446d9032acf8e140d677 GIT binary patch literal 21076 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 Jo0i3;>U*d|{OSMz literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..796ca9de464e1aa27b295fb8ae9635566806960f GIT binary patch literal 21140 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 L%Gop)7n=VAohb~` literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..865e272b417f0d11fa11c88b990f1aa091b5cff6 GIT binary patch literal 28308 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..e4452a38bb80e4ce605b107463786c6f4285ca70 GIT binary patch literal 28372 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..3e7d706bce8b603c8888ebf26908f91b3242ec3b GIT binary patch literal 10138 zcmcJVZHQgP9meOLd(XLd@4YKgqA@m#RB5HgnnYqElIm`fmiSU(6Vck%3pLqD-A&e) z1cC^q&<|EbZBbDPmX;8|h@=g^Kvht&f^9)4wWWo<PIeg(^z*gU>TF&w05!GwUi| zk)QtOJoA5ne%9{3D z;1d;#d1n{VZX=56yL+8pocNd1i?G-A*IWN9o&Wv_e$PiSeq6DC#2DH|v`6*uWcAs( z6{+J-9Mex(|7&ahj~O#~7JASAS>C@V>~;SQz4@KfS^vgrRDLvz-US!dfKFQN7m z#&lnswAQX0JNE2)osvT+aWmWM-vXf4vip$1mfYI?3K>O`$8acq5UtIzNJ|A_A+_`J8`#7~eD>>}Fh z^i?Ap4ooS~p`6s9Eh|_UB=N0|-zEhEY zX%|!ec^&;yUlM+;UG)C_JplE?JpjA^*gatNL;OAL=3Q|i#&oagtuDSXwQIYJe_8sg z?7VO2{r>F6Py0Leq2f_o`>TrGjc$Ju(QfPC@V_D+|M)$ubus#Wn|GX@S5NQUHN%7g zBjO|Kd<#v0J{kL;u+!f{nuS4+_9M%$xLV$l~Jf7^fUOo^Dhqn=KPDW zf2N8IP=HTR5v_6FL$Eir-mPfYHteGI2)~D6jH^A2dr<4fK*fCjoi|Wv{JM`-%pOO^ zu#0H18OQn`&ZYYweA)FcPGbLO|03+k{);!$?b%83cJARRJ@@cbJL@-iA)a6ReK#(g zIUFaF<3hWr@oCIBU;q3?r^8d3)sxiGE~fO|dz`L^XGQuasiR$#J~n>3M}^u0_qfLV zs^23+`Sl-gaoJ}m#78nN+C|0Z^;_%rsMcEKbPRL&j}<4rjsJ&TM0;q+p0m(z=|C;hXAj9<*pa(WT=s6Iafs}Ik+`70G$cqXDdNI@-mQ-qsm)qkqzFt7C6Twai;4Vs9rLDMWZtxksr-2z z^QK;8{ds19rLEXB=WX)F_Ay7W8Tz@%$s&Gl|Qdz-qefC z-}dX7%Af0madX|2MBLUchT`|n2NU1NwVUwoh8mBccC?F|-2Ub7-?;xZpZ~_5U)=ps z&wn_l@Ynri#q25M2fK)t#rtDTKRDg#Mf+R_y$HM2hvH*R$DY5U@rU%;2Y9~7;_+qI zV&DBIuK9UIzEh%IM0+$o_CL5R-9N{H{fmRQUH>BN(fTQl_L(jo%fmiCvH6axF@E+P z6RwkvRE-^oKeh7^(PD*C-lz9Dm|8{k^ z>jVBs)}3}y^$+zwad$Pop>{t1kDV_X^D}>>iZ7@~ELwk|cIs2@%wPU{7^=z4H0sYh zIlq~=$azh>sQDezb05L{aPK%hIiA{ge0y|#uzp&9vHTQ&sJ&j_P<*`4Fh1UYM8-$E zsQDezbDyS;`?p9P?P5yL`#g2L|BKYoE=nKDFL3^B%pc~j{Vx>1tv|+-ac5&?d*3jGfL1*jdNgeHCN@d|8aVeXLRaC z*z5O)M*RKfoZrEXHNvm8i%a+~?sxvh?j_E@2z%7OT|XE%yM8>GH|=6-{FrAx<@}fY zuk)XaQ*r;)qkngQ^Xxq6^kT|?>x-^#t>4y&_^n+`)Q{J3+^82hZnTT3@#A%@JM|*# zZu|92)t}d~Zq%1V-KW!Wg<8NaqCM^(_cxAPe`Q6E8~05yHGaH~<3_#6@uOW#jUU%3 zbzHw9b+n5qz1`n2e)P}rBROugi>dMBb(}ZUmBhTUb}=!3Sm)NWh!yo0v%RkVBJ9!n z+dNT!=Ff2;S$EpSRQ-7!Le>c@Sb^(%>egZ1P7XW868 z?x^2Cad)*p{tcTylIJ4+MEs|%-w;y-&v)4W@i!uTEfD(~(fHq3x@#bO)10)rnBTv9 z&)n$1t$RlM_l%LkMfAcdP*hQV2L;j1`oZs$`D$+0QqWs75 z8#{MkhE(+loNF5Ge6CFC>*uOa{L4AF#q>Jwh&u0xI`@R~51d;X`32r9puHM@j#G>G zC5)eF-gt)T%`XW)Rd4u9A$r?3GqvNJ{+`tZJLY4&w*)Q# literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..137c5dcf8bf69b5bd154b7bbb0439d0cd1ba649f GIT binary patch literal 10138 zcmcJVTZ~;*9mdz$=bU}6(-cyuBQ+8*-YC*mOEsq0nHII)NTwwyMvj4ANa(a9v`rc{ zF}@L>)DUkW5Dmc>V*n#QC?@6-?i``Kdr{!JBsp-+swr=(%rLpxO?S0e;m5;mhR$>mJ{q7 z+s?JW4&ndYhWYZ)spaJ}la&+4&bZD6&b{g$2Zzz)`B;yAALF&I+)%iUZY%wxvabDi z@cR|ZWp5YJZV{#Qy`x?)4*u%(BJ6ejP3C`-_dk3Fey?(F?&6BW`<$a)M0-*XPo^)f zs7M_@;*5U5{BN!Ke*lBAANs)I<-va->~;SQz5A8dnSba>>S-5e^pkr2#Xd~$-=dEn zR&4J@Kd_5vulrx6AAZ^E#c|u~Mc9-2!KV=?^uym(q>grREj{C>US!lktUVaI_ z?{CEC*H@U|T3_SepdMIfq}G)fU0*dl*A;c5)|EK3zV_AUcew}g{TDv}P;u}T{2O)= z?e+Su()WJs^&-d0`VE9Vsqef4_4}e953zh5{tdebdsg3B^!h3P2CH$IQ4F1DC0QJK?0K5OpJz)MD{Cv~TyYh1w)1$6GUw&ZW;I%&f zb?NW2dEd~7{n?M7_IK<<lY6k zTw+3z5eX4>{sZriqk`D+#nzu8fL(-r^^6Gm(Jej`?%2$XWG1wW$|zP5`Wc<|{>AYV z-oFU@|5cF@cEndu5v_5I1^0&5`HHr-VHdSWggp#nTajO6Ev3&odxA^|Wx!?Q#McA|bm*?{B#f9m1?%_E-_wZah>o@vYI=}Y6 z{J3!DaGXev3+gqmr|)0lb%Qrnq>gq``qcR89u;ek+~XSa ztA3A+$%LAChyhjBNK8b(BF2Y{l5mxDY@JaoY zFL-@V+@IHX|Kjzcttt2yVbA(!4e4L(Uhe&iuqXB1Ls)$i_}Wmhg}Fhyi1wtuhoVy7 zd$1yPw2L{t`FYIyZv_^g@%}~Flm4l#xz)N}rmwkJX_=H`F@gFf#5^A#C4?P4x|UdMGy{gha@W*0N-m)9|F z>P5y)ySP^TtQ++r>t_81=IU2ojcc)Qm1iq5Z`#FN{=ANPQ$Hp0HoKU~pVu*O>P6;F zyO_(L*D-JEMdok)2IlhbyvgU?`E^C+O}m)OpVu*O>Ze5BW*0O0^E&2Dy~w<27jyaZ zI_6Ei$o#F}z+C=ZKa88}W=h0ub}<%z_5G5k z`$dtCulP9j-KTKPw=43Q673?|lku_t(TDQ=^H~!67e~+f{zcf6^-~<}OMN^>d}lSg z*nGy-7(aW)gzKauIbZApydTX!vKG^e4YY)WhuJ8uL@gqmr{{g1I^O?9>S!0GkL4FRe>Ub1^Vj|ti{I*x z@#Oe&JdKDajEiU3A7cJFf7~PK_0RE9d+@(lKYv;Mac;Bv2lCuTyEt=xYv`?h&{_Qg zsiR%Y=?9Nu{ve0p@fz_&#_ZzG#{SUoUwqf=+DkP;XLd2CKMh~IQTt14MEnKq;_i%p zT-STr>&5<8yc`==iL`}^wUdM5xUgWsZ zF6PFM*Rk%@i>$l#8kewQ_PJYuj9B; zFLL~77jxssbxIxAuSgy3Voq=SJjRdyIesL^jdn3Ne!PzJhPo*+Z_F-c<`3)K`Uzr1 z{l(&_ufGU;vi_DQ)(`XN`XO0&+QnS`c^%`XZc4;$b}Nmy|!S_4t|M-mvZwsV;Bbxn-slT#BYAC1G}hmbAK8?-pvU5-e&K& ze?dk1rCpT&RDLt(4&+zWCvvW7v`5Z0jrRJvDi;5G&TT2Z&O4&cJEG1#vHTd$d%;l9N26H#v)KN0ri`15?sxYzMqq7h%@+}LQ3Jhy1Xuk-mUd2SJ_U*ufc z=)cXnFhA_QBG2Qri@EWspBtm&|2E(6fa3r^q@DL+7jykb&P9#-Mb1T^s_*N1r%3N8 z>768d$LBt*$t#d+^SOVX~iGJx~( A5C8xG literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..864d1453265e041de0bdfb0d5cbf69394ebb1bb2 GIT binary patch literal 13050 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..c60f58b92d3995391122dc923baeac8fed57feb7 GIT binary patch literal 13050 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..fe96bbc4ffe97b2a0a55183843b6f3830280048a GIT binary patch literal 13050 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 Hai;hWZB*rb literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..e8333d6f009de46270f86cbaddeddac2b10fce7f GIT binary patch literal 17594 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..61bb2fb2c6e9d86a6c65127da4dc080316c9a7e8 GIT binary patch literal 17594 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..7fa16fd67b7f3d063ef29645353df9649dc9895a GIT binary patch literal 12902 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..8db8dc8e18ca39ca3495dd009db84d849f2af854 GIT binary patch literal 13190 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 Z@^flU-~3l=2M+GN_RZz_WKmow{trKb_7(sD literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..147ff9ed2079d903eb3764f4adb39ed3c1c74a3c GIT binary patch literal 17428 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 J(~LM>{SUQno|FIp literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..3dd649484d65875f7548d820d210ac2bc070d95f GIT binary patch literal 17684 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 J7R34H{{WyJA=v-` literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds new file mode 100644 index 0000000000000000000000000000000000000000..9c5b695a67a3645da770fd428da4d322b7b94651 GIT binary patch literal 23316 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds new file mode 100644 index 0000000000000000000000000000000000000000..989f7d15f497ca068953bc4d77c01bebaa178bd1 GIT binary patch literal 23380 zcmcJXYpiBhS;zPLo^#&wp8I7kXU?=JsoaFx&H!VrIMQjSQUZf8ZPQXyPNHowX{Q}7 ztu}^0BE*291c>1lg3%aE4234;^1(6$3Ve`4-~(ce0W<`ZbTH~zM3eFPt!Mq$-us-r zpO-lU$KbE?U+cf0wb$iY>)rdDw;EN$YO1<)Fsy#78rc8wGid$y^M|81-2LF;7aZEU z>yE9{uix5w{asu4-gW02w+0l8y6vXw(wQK_=t3h*FILrPX;>YvM*D}=Of}jV@c$3e{>4jX zuG#zmKOd|XSEs6K{9(JL->=4-qn8}J>H2DVt*S2Azxim}Klb?7SEJ=&wOU?&bfkNxRX-sQuKV-S|b?jV?}V|AAL|`^C*Kc>6`uQ~UG!yEd)A8~fMar8C#w zmL{NGmNhc-A#2Yg)%xb>)O~l{dC%7UZ@6>ozI*R^@ZzpI`>~(LRp)-^=W*2qo7F%2 z9$0$FuKLi=x?iW>8(lT$Fw4P>9QcGeEC&t#tHCdN4piBuTxss#+}?Sz+~!s#8PE zwS51DXWhRhPPqToeE)?HyMI-jaR1Bs{>7Dh-7lKn+y3!M%dZw^{DYc{HeJv~D-Zqi z77xF;FztTP^w2+dh5HL1cmJGtMeLtF>wa9nj?iWoD{WJOg#nH6; zMbkt7biV(>eBYd283)sQ{hW9iza>k?BIAZGM&n04#tpy7xTWi6M&n04#tna=wL9tJ zg!VIT_(jGIzZi`l^%yt&BIAZGM&n04#tpy7xTWi6M&n04#tnbr82AVl;l#W8CnIj9^`q}sJi|l*&#c2Pd9{V2t!n5vY|I6iJeD*#3g%7)r{SUwCp`U#Z zzsSCaPu#Zu`I93(xv`V`@`A;%Pfg;6ee&nYk!X4|{to|?ee%aIF0Hv=G`-h9nzOin zY-?w!CUMb4EARD>FY&l@zgTne1Ge@|7o+%#FLvLO#iacZAG#R%r=D`(^#9hxhb~6` z`Csw-UN~Hn`$iYH-M@cE)c8H&arx9s`ysycotcTvs`4lXeG(tcm3+KartmPF1IJ7;q^D?y?k8m-<}%e z{-d1-?(_DGmt5-Y7ftWIe?Ixr@9D{5CjE~ts{gy{BQYpG5=fs zi=F>n@#%MTG3x)W`^SeaMt<7Q__KaRe9iS6`MbssKe`zCnLorOe~S2;`E#59x{9Y} z`Sai0C#ve;9&7Jy4L)XPA#`z1YyP+VgUhY2-e!5{n>Eu@IMYQdZ?2ym{)MNxzwpcU zZ}TsRPmBF?pLD-CzvX_>^f3PTg!>C^?ht=0o{0UU@3~)`eV6-1)5G{PZ*splvgd`w z7flcS)0SB2|H3owpBDG^`)B^pva|Kq=(3svn^WkbmG{OUeaC&X@2H6nU7X}+{^2jQ zd553*mpEbm?Z4gcU)-4W`xi~`Z9o0I_niC1eIIeZXnN@1^G^4Rd#`f8XnN>hf2R8j zzvljR@tLuI)%uC?7uR0ve$n(W{>shnFFf!574hcS&y!!`i_7nGzi4`IeDVzQkNhJt zZ_veP{)}&M-}paj;zJiB|AL*piM#Omn)uMgN&bQ5Dg5H_b?z5U5APoz_b=k({>8|j z?$i9-KYoZ0U5xx`otuyKk00Vg7bAaK=jLPm;)nRq#mK*6pHs+NtIG|ZvGWtU800VN zkvH*+qi4HcjPfUb@-}{vyp1kK`I~y|8~6)t-$=R`>>t!)-@-4lZ=s9P{zX0ZP5gy6 z4oMe-{gZm^-}puLZFDi(zf(P1|M*$|kadqPM(dw?qK4hjQ{Bev!O~ zE=Ku}dgNXFg_d`dE(ZCRdgOilB6%NOjPie~ch3FnKU{}>2VIQzAL_C1;S<^S(8Xx~ zBTpRo8_yf!ri}->XnJq|lc(^JzeIfKV&o@J;3IE{_|V13PoBa@-V*Vli;f24Zn+)w`CI^+#>G0Gp*BX8gn$s6e6r2N6YiC<*j z#4kqsC-vC3@r&%+=wh^gQ;+il{=zfv=lqb%d-E6N;}h;Le9C=%{>$aP{^@7-{Drpek}d}8k9w>-{37cPU5wV>=vRH**l)<6i8gLY7lZMm9^-~jWZcljX#A+h zxZy9faZ9=wI7$QIB!MFEVcE z;-v8-Z{iopoA|{je=<+-F@HpS=wjqgan5;s@-OWm@1l!Q{!MYrM|}JcAG#R%i9_Bd zu1MZS7o+@59DKwT@u7>6pE%@w;)~>cbTP{R#KA{=5g)o3`H926L41*YBeg3t+CPYc zkN6_~)UM3PPaO6g;uoIr`0PKqJj|c?h+k+v;^R*YKL1iaK4JCDU-*>!*uQdlZ+zN^ zkM|N`IU1&d6ReUg^Lrt4-#`ICC&P5gylc0bR*b9oq_yop~VZ{ic9{JD6K`;;?TKzwnI5XaCCOVgABL{6g~) zAAe%7|4}|Z;r_y>+{gZx%X{O~K76#l(0oZ3gZ+=^G(7j=`Ay+t_HT5t>-kUq{e$Um z*>j&eE#B|e#)pEb&^8Wt)vEAc4;_K57TwmP0%KJq$J-q&b_w<*KUS!V! z^Y5>8jsNU_PA=c}`!lWiGxri}Yy0x;}wt}jOOlj}$Gf8~|Fu2+6ilXZ6VoBdm)-RNS}{;ub*#77sS_EV3zJpUDm zi!Mg-yFULC7hR0vQ;)cOein&~E=KXYKED$eU5w&WkGOpP7m155Dt_1gLH<1Wn*RJk zevit@Z`*$VvX%c+d9Z)6KBDWhK2@IQul?n3{rhXF|7{(n{?D8{3(s=@+*GP^yd28;a~Z#`^D8ib-!qO=wCbH{=#p& ze@#3R``6#@esRwW+%K9Q#^3W#?ics|iTg#Eo`8g-x z#c2Lgk9mh*WZt2R z(fs4@M+T2sd)I3YUu%1T>7teQ&YyICvw4%wZ<)*+bTOJg{EZiRi@zNc$y?}Rl)tFQ z_~92BH*_%?KkAXU@E2O%O1c>2FY1vu@r&e5bTP`G)MMQ7i;O$E7>z&m7`_lKpWOD997o+oEs%Pgv{G9(F=RR~XI{#6Rb05A! z>-VIKLH|>ab02<@b04}Go&Qojn}7J3e~@{HE=Kc@eS&dI&rdSRo9JRRe&l)9E&0FD z)@{ zsmHv-FEa1Y#c2L9PHVUO_=)6QbkX$Q{gZPNKF&`fK6Ekik8f}v=O_FSAG#R%IX~hX zeWxbA^!z6?^0Uw5Xa5)Rql=NBekOm={~~!KjZ0>fKbYstJLbR0yh9hG`A0qGJ^n(Q z_emFn`Ac6i0?|8r2YG3pHW>@^VU-o{V|D~GrJG!X;@A6;B`|B?M)Gc=3 z-}Brq^4v}KYIVwRZjm#<-O1U^ZMXDrrv9cdao&N zd%xKlzvlbRuJ(1jUp0R{zm`sT|E6~Z*3U4-HCtFA0yUMx$sDC=%FSgrf z{lmEP-cr#o1}tF8YZS37?4*h^oL_oi9nboKvt Cc$EbJ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..8d2560679734fb8822d5a283212a75e28c3e8896 GIT binary patch literal 20390 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 MA61WGO&m7=26|SamH+?% literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds new file mode 100644 index 0000000000000000000000000000000000000000..4e78a32c4335d6b6897a0b3587cf0863bbab5a07 GIT binary patch literal 29682 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 MC@U*sL7eaY7jRz^GXMYp literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_aup.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_aup.gds new file mode 100644 index 0000000000000000000000000000000000000000..35572c5b2adc0f54ec8947ce2c287199b6a452c7 GIT binary patch literal 105426 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 W^_$(Sf5RJ>sczaI6Z>&w=l=!I&P(0^ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds new file mode 100644 index 0000000000000000000000000000000000000000..fab064b941f1e42ded2e58ba4336a2d6e0bfc189 GIT binary patch literal 181086 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds new file mode 100644 index 0000000000000000000000000000000000000000..d119d3a9dea7dffdc2c683b76450fa6254b809f6 GIT binary patch literal 106004 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 z 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 A+W-In literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds new file mode 100644 index 0000000000000000000000000000000000000000..7ac0f31ae8048f4d0d261fda370be3b155e5f2e4 GIT binary patch literal 120878 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

1Lh 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 z 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds index ce598ddf57e33ac347a6cca0cff245923ccf6417..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 44464 zcma)_4ajF%UB~Y{GxN-jv-3W)v(L`V?v69h&bV#urY&ZQw9ZQ4W<{%5iH_kLX4$G( zhy;}+L`4wv0#an}YMU&!l$c4yYKv?oK@b*%n-P>E*cJq0-_P%y@A;qW?(a7Vx6iY` zb3XT+d*1H3_x_od?PY80`<8QiwhsK;a&Wn2IklW!Zk_*Lu54|;^R4gx=I7mW?M-jE z_Ru@7U3bA9Ig zH!V zx=^R7uGF3L_5Aty!oc~tL`NZ^k$wRr2`fx6j`f~oko=^GH^Z8tG<#Mj++>|ku{Y>Y(%k$S` zmHD(s6 zG47z_V(NRIdF;m=k?(oe(^H>5qTk$C(Wkv{9T!tS#*TcCefpiTu^MBA&o%lQ=DPQJ z9BrWVwEU@!qRrfPp1VCg^`~oWEsp_BiBIhjDDuQvas+ zG(RZ!%x?38@_TyfpLw$RLHRfTLi2<2dwS~ce?#+w^0$vPKPbPar~dN4%@4}o^E=HC z%J1o^f9WrqAC$lQ!_5!M@9C-koV%JIl>eN6Xns(BPfvaN&V8_Id!5U1vGm;stG1W# zxLEpbgVnXmcU&y}(FXIi(-xbyDSh|hs_*1GE|&fY&%t@_$sh5nweK;w8hi2`7t8WJ zhgWk~zT;x*(?|3(r2pwd)A6eR@o49u+8>{>7j*oty!@$*RoT>Gs#{wBvv1Zq`|ryF z&;OGC*2dm+TulAAZmwMib)JtYE%hnG2j$L(<5l_O@iokK=RA&!W%)Z_YjwEggROki zaWVCG9%%g+RKM*!)%q`}{_E+fPyaDbA@i4hGaawyFKtXdh)4UIj#obQBOk=0-lpS~ zf6GUk5An{vW<&g*o?idCv(1P2=N{V-zo)1E`S&&-;@|p>8{+r$)IY8L6JrQ6W^Q`> zhK^U`@66rJhxljyaYOu`o|b>}uQngz?`Yp^;`j8_pT=l-9=i~~r>8!7+y?WtQwPVz z(jRRwU3;{}rfo{!Z7^RuzT;x*)5o4e^W0%9I4+jH=g>TN@EsRRf6Sq2?%EHff^KbuZ^9LP& zu=X!}y!p?5WAjbN#kBmXjgEUKU)kUMp!}Ym`dquuv2t}T$Hmh3HLU7RTWqea^xcN5 zwv+F;So)(6=f0Ca;umY*V`w#YNm_A#8t@oN7vUE}K7qYZTKo}TvK)W+eDwx}C`Z#>| zeNcW+PyOi{!}qlZH*Hh;oPz^rJ{%WQ|HReiLR{YenfN_D^?64?K8VLV1k>@V{3D-K z8*2{^+4CNK%Z84NY5B)4Hy`33`|O7JJw5f0>%BesApVILZ0LAZ{)zu-KEyxyferC{ zdRqReYt4uFrw?w3-_uk7@Qd4XKIHlTupE=;|DIm@ltVts$2T1pQ~%)Kw|NrOoPE|$ zw7DD9`0eSbf9QqH56VCEh2{t4_w>|1_POQ<XpeXaRC^WvL4`}Xwo`fvR0)_y^?-{F_H z_6w^0dV1>9zwC1%dtdt9biCUC(!b<`c=WsJc;&M`u}%k7f7UPV9YM#7{UhrZeo!9k z7k<$3!l!+xC#2rAo9TE}|09Q*5AlvXx*>i~Puu_KJDU&jkDcETzo(}@^Mia4pLt_C zE~Y;1PCkf7yPJ+*&p-2I^Vv7xn~sZV`Ml%iJ_EV$@DAK`yt@B{r}81?;+vG;)64SN zKar1p6aJv%#r_G8Jql#cf^Rx5mgTcY!DsJ+Kj?U|f5c;t0@<_Rn~sZR`RtSN*+1i( zj#v9}1D@%4_55(dTig5(YTh3_-R6Jru4U=z>GkuC zhvziN^BdoQOvkI|w*!0I{DI7y0}pS={ORdw`P7em5TAORj#u-Kb|W9eqy0?BE1&D$ z{Ytxjo+~b*!SK}X#c^2o<{KIGdLC354hsXR6YX0Lf|AUSf^B<3O2D0wpnT}WM4<74Z z@Tumr{&AiWFV;Ui)>+89i)T7st^ate^KqWt=Cl5D9>=ToACLDG!6%x>yC?h+FWz4; zZ^##v$Na$$I$rpc%l;#%^@noVe*_&b_8(iHX?{@N-gh-WD8Hwt^Kaktnje(E@1L6= zl;6`+fB*ZNAC$lS(&h){_w>|fedGFr@>&15{-EQ<^~ZDPlWqUTxMAOBGJbk`T0Z+L z$`7hs_Ft4Abi62^{S|&t9{Vr+pyP#4{a9xq>n`;-9k143#+?tw+JF(h zzUjDF`s^L?**oH!j*F##;%f8R`{55dezo>#JIbf+@J+|Xw0!QH%st4Q3HRnhwFq~H?HY;b^Um>e^Bj@Px}WQFWMiEeunfrp6Phi z|9FhEIFH63KI0EMUX4FI=5FxO<}r8iNBmIUe|S8*L7v_4OvlBv|M7Ts4Su2dJi~IH z5r1Lr^X!bzvooIQxLB6&F+7i5&f~aP`mDW_&zg%j==k2+XN|{a&Br$#7t8X;9GJ#F z=Na+m)xPK8JooS&7t`{mINmJ@rT1sjXIRr?!kXZEcwPq) zf+~~skNyifUi2Rx;{-B(@Jz?6@e`iLFJ#=}n~dL{Ue=#^LO$jV{-EQ<{NcSZ@3?|` z_r?2T-hl-je{tS^ydTC7%H#bpe$es4=e;q0P#*7(@q>;RKJSO|gYtNPj30Eo@OeLs zAC$-YWBj1wg-^S)&Oz2a+TV1%TK}dsD#otYF39-p>1qE@Yh?Ii?bKMn@9C*e9mxlo zJ6^k?<6`Ph_lWSvy+ij9{GOir(>*GD-@71wPfz`6j;!Vm?bqiHOnvU%a$0{56Wflz&V1B7x#baNE-#!W{e-&Fz9%3{~dE*bA2`U)&HEcr>FIw#%TB+yAZ#p zr~atB>bk1Cu3@^i)Te*R2l2gkhK`G=&mM_<5Z`-e=y>JRcjSZkWACg!biDHEck)4e z`rUNA^2fbrZ}Y~z=izqVo}OMmYnRvX)!MB!%yF^w#~MDb-SS8La_xH!U#;Ep9T&^; zy@s#WZuyRjrSCO-wRX#QTul9Gj~(le_ui28r>Cbrgg~HGUiyQ=f4|K8WvU z59oO1Q!XxyHAm%|j*DgaND=W?{9}e`8_@Lr*DMe``ckqeos&R=^bVCzu#R#`oE{A{`8J6 ze80Pc_&q)K&pg@kLB^lo9YXw`p8Dh6>DlIwcc+gvzo(}@^<$hs)=htVf{s_~C+~>K z2l4&w1Ug>%yt^hJ#2?>IzPgE5KJUo!A-=zzK*uYe_9Y+0r`=7*D}Q`Dd!Tva+u2j? zygfZ_f8J434y0UvJA;l_<&SS?XPZC1ovHuvdwNtz0och`Cc%KYo;W&K%W zDW5f$a!tp@(q|8i&z>3IbX+Wb_L%rQd*BZ`UOa!|vB!k$Iq^-$#jY@dq6* z_Ro0iJt2EeeA98UET26BK6?gy({VBNnfE8Iw)xNAf%!k^c=7x&eItwU<8Nn>@zc}O z^2fKk2iy1?-|n>j;rH~^pS}@B`TlkY@q2pePv3~bAK#9iXns#m{plNL`2O|@DZi(u z{_a;=KFIv@w^xYY(^G%?MjgJtT|@kyp8EVojD0$sf4j$T$Q-Zs?|AIfgWA92jo{M$Wz_U}EtyngoSFI&T=vP3y))&Sj#v9<_C3@;sCu*Sq5eU~i~8eH4y0T> z)A6eO={I_D{r>G3IiSsyK?Vs@2=LH{b9{WH15#O8N|MB=n0^^&%JkxQp9KU?$ z!H?e@$RBjP`2K^(cOJOKmYaxa{ue;Pp`lK{iqM=_g=rNyyBgA zsLXHJ@X9~wp8Q`*H+w$iFVDxhI5-!+IsZ+}`NZ^mH-1TL+X0Pn@%-mCCm!GM+^^}s zzg6jG&!_z9`N+%pg7e>sasK%j`Kt46%3RllI!$%uywkO$_1k|+xYQvvw}?(mUGuP3IHS^KlJ6xIWr{aQ<6q&L^hlV{9@0g7e>sF&^h* zpHY9jxh?T%1L(Mz zmOrhLvF5YyXYCJe*4ENzo#Z?`e|-J(197G2zSc3uuE!SRiLnJ87fXL$E62E%?|8C4 zM*F$%;oSF(g=uW0<+FF>IVbjz$J^e~dvM2}@%iUe`}ddFcajg{vF|h;uYB^1I`ng} zfA#*qr>FIw%2<_+Kh-Vu**p4R?>irki>c4r$2#XVkb6elllpz3r>FijM`Fx-?s(nr z>8T(0KGnhZHSROi0aA8PPyH!RICg#S>*=ZQYlri-`@YcAQ~&tewcqZ?&NaQSpAN^x z)c4$l^W0@F_qhvmzwc9gFNk}F=AQQ|eGaDnv_`JhPS#N7Ur*0{?!lkk+zY(+LC3|^ zpZAZeweNcS$3B0jH7eFDuU(Ket*6iBzeG2ht)>6_YyA6Jv^}KFPk&-V$HmmA{1p}Tes%MM@-Oah zeo%f-PyGv8tEhia{)I=HA9TE^|7{;_eo+4HuW5czeos%!r)>A(s_%3z$HmfjAFldN zzT;x)k3O9HPX36mpI=w~NB!N0tG<)(xLB6&K3w&ke8Z7gL|Qk`Ll>&8Fj(Pg{`>;?WnTg}X9xPvbX+X^k9_nW9{p!JUitJJ z`5+$sXF6W_^c(pg9{p!JUitJJ`5+$sXF6W_gl-Xkc# zr>8!1j&g!3pE*N4f{qvaZ`vF`D33XdA9TF%87uffd9*ox(DA~jpYVh7=x_X>3HQ|c%=Cdk7ouGzo)15pV~OQ(e~;C{GOir4&<5-pWTqQ?dhq1__5|g{3AcQ zA%0I!eZE^zPe{G_ZecnuratY<{0(aU(*DffpyS2-rG4>(@@RkjpyP#4`{D=X(f;^B z#|xk9#t+Kl`tgH~U&m*i!DrpUGaawipYXK)K-L|6ll7;km+enEv_Iw2?xy2a`LsLv zARg^*I$rs-JNY0U?QS|=`CK3CWKho!TtDk*(D7pZ#ABU=te<$MT`b9*`U^6%4ZJ|bi7!9@tEh3`HyEhE|%r9PUEwF zvwpMG@tbw-@MS{Vp%?W49>&e1Aox*V*f|`vQ9zPE!y97yjs8TnEye|dwk}9 z(D7pa<1x-5;~vj+yc+-EX`VyoJ-*5O@9Am#F<;rg2DNu(9mD( zgN_&e@iWa2%3~eE56bW9Y5kA>Rr7=Lj{QjUgYtWN>T|!N{z3UicbXq`yr@6-Tl}DW z?w8a*=y>5D`gHSy^0;5)2j%zlwEoX}XY+&d4xMj)P<~HO{e!nPKPdm;@V%@4}&>8Zc{LHRvB_4i+Feo+4YCz>CW-_uin@832*D1YC( zn;(?l(^G%zJaUR`o@wp#E$Hmm={>b$P z)sEahX}6%`#r~1|1n&tU`#0`4rsLK7L+(@LgLvHUOvfvq`y}}w9`|9>@yh2uO+JXn zKEQOm^4TYl58|8E@o+ zc#I>{@ycg^Nj`|jI5r)xeC`|L&^pL{V;q~bbo}7b=Ru7jT*gw+@tu79;W6eQV;IkL zTrA6H%;U56;hT<&rO(=j&)SDS==kZ{XYIph?ZY=67t`|D-_uW!eq-NnI$rf3`+M?1 zJof#j&N#s%yo}CY_2VBzp0L^y5mpRmio*W z-n~HHy)X|=$HmlVzLF2(u@0DyS3c_n`5+$akm-2kvtE%8;;{~zj#obGCHWv8>#*r~ z<+EOs58`njFdeUa)(-MPJk}1=@ych7ARokI?Jym$eAWo^K|IzD)A7n@?I0h-W9={< zuYA@B@@eos&R=^hcj?;Sz; zJw5fQpAYIhAC8NuPyNUTaT&j+_aE=U=Dip9AIHVg_a1ECd*M4Smj2j-O?xl=5kFu1-h<71FMP+v zvV8Bs=Diob<6`MEUuj3?JKmt<#q%2;>jj+mUYy5qu`HjlhtHV9GaVO8pD~8ddW%2k zc(H!tG0q@k58rgW8h_IoA9D|fIS6A-Z}*0@{#+~hAfDHL=(w2ry!&FEfQ)zEeVL9| z>jxg|M4U(K20rTubi7(W_{Pk&LfVaY)~4fPTL1Ce6}|Jue7L zbi68m`i(^Ny?;9a852D{Er0rrMEL&g1jO&@sXu*ViT?Mu7fAp2^wb~UUQ}Pk&-nK8 zX!Cn|>QCQT!uPiqNclZI^`~zv;rrVQ#P8{;&pUS3pP<$s-o3N_1RXEdA3W9>$ohk4 zI$o_m;c5MW%t3sU^{1zo^=Gbo(&JGG17>O~=Kw{TO#Vrv~*mHm0l3RN!sKdAD1dg{~f_(A#fKYq~hqW<(d zeo!9$j~{fr@VRcrIb{BE-KOJWTL1CeH?8;d`}pnKN87mQ>8U^cMlF2*b`3IqdV1<# zc%}~8yDq3%IDjc>A0Bs({D_o-RIw+(EdF= z^{3yMgzw*;K>VJb`qOVr!XLjqdARvKJ@u#Gn1t`&o8U^c#w2|I_5|Yh^wb}} zJ<)h!++NT)F!6hO>QBEh3D3Vhf%rW=^_e$(CkQ^#=Fj*Il;g$s1HAqlr}b~2G!GpY z%kukgoYud6lJB^f`mFn`A3?1ftpBVZLC1^rgLNN2C~y3BL-&CZFMO__{Z3H(71kg2 zEkVbN_dj^-w;=l^JkxP8y?#8NJL5b%&1XNyc^t3a|1j@)-UxoC&3~R-SO-SDcz=w? z^A6Ghn9?$uZ=YKrY@#^_M zyvLePd*hot|M&Fr`spw7(ck!kju-oHJjM%T9O9dfi)HzYSA6yh_@?7x>9gO!XTO6# z=y~fcj*Dse>`$mCq~7dbOvkJGvu`0E#ADxLI$rtgTgV6T*teLDS3dKW z@fOs0Vcs%sf{qvOU-204knxIVI$phh#be&Zc{GpknK#gJv21_(pZ2HUY5zgTi~gtG z@q_YdfBc~1g-^TV2j$WJ_(8`DpX+A53TnOKx_R#ybbS5(__f*~Z7u!ZPtsj>+4EEU zUpe2cd)9Ak=(sqy-^#!8+~!04JO6G&{GOirQyHtWIT!!y>80;F%w^*{E~Y;DeBjTA z<6`PlNAmGMTJ zp0i(S=eYIfn`=5Qrv8*C%C`%rbEp1P$5q|Amg(A3-}&O&buBIzx=qB?pYp6+>NTA^ z^~vLdGUvl_G4(0m2W8HOlxv%^~@yR@h08JKDeRdV(L$MRxan7 z&Yk+?+4n;&?|~ay`KIGy>Q8y1e7kTucj~j(IKEehxTEI>_Ti@EV(K$rd@z>h!*Mb7 zslN~EJ0FgVsZW2A58}Grq2t%{aoz8DJ{%X*@~1LZWm6aYo<95c_3`(jV`}$vcWeB9 zs`1F{#D~ajwDnZ>2fk_0H!y&UN9OtGZI>&9$WU!y#XA z{#!B5KOZCC-TC$I`%krTKeibI@6%z7Re%FThJw5fOGFD}CuBmRN?>fw7<2x>#-zt$PfyE_G1tf5>~fCj+^J6<#wd*W zrt(e4#nhkjZ02k~$8_%0XANX6gRD14Ubms+V(O1|Q0HLn;v8nIk8Pby{VC7Nv;namR1z-Z>qP zi{T$s*B;(lnty89zObdSd&5zUTJ2Wazb5`{J-z*&vWb`eXnhdl=}dfjZTi(*{1v?o zeM&nz@zUp18~rQ(rsHDjlV_j)6?}N$+nQ@SE~fsJC(5-8r*o%1d3+6X-MI$G#qe)z zt$B6XzG-XOzigk`v)r)U$ev=)P1=XOemSzU{opHK^584J_r6!WRF|a(^?lvBe{%LW t=d|8gT>9^2duRLVb@QJ34n3nkpS;&U@8J*Weag3x_a*(j2gH5L{{g~^kHP=| diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds index 536749acba61bda1b232be713290eeba6a6bdcae..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 52336 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds index 9316015a31f89d10102d566779435295608fd75f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 77040 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�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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil1.gds index 3890733b54c74a951019bd5435429590c12140f5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 6616 zcma)>3uu;Q6vxlLZJ!f2^YW4DROZamTHYchyv>m*xlD9|}~)AF{{`9J49zMK1=w@>)|y`1OyKj%D`^SsaV zj^Y%HjivT!u_kA!DJ7^i41@I`i^P zTz9&{{eowr^6{`!TJA7BJJx%4WvBz4X);<8S^Gm=`vp{h_J5wqbr%LGFa5=QJdf*) zX1_3iy!w3`xbA8#GkD`2<{w9dH2c+BpPpzG*>f z_pb{>V*It-ugAEf9tb_g-)Q!z`9u5YCy4&TztQae`P1=%AB+?HV*HF|kMfW82R|VE zV*MG-?)Q&%!~E|r%G*n@ewdAB7kcKOXnCpXLFiUxhlD;T_v#nrsUC!W@sW_w2jvlZ zUH^;nblopL5)$hl_Nev0yj1ld@@7?bNa%xdum3I=HGe?l%|jbPB7cH%uReDNbL*#x zz&5vu@+O5eyU?pg{-PcTJ@VIR_9#94B2EzT!@tq&{`@EEw_5#!@LO0E68?j7Z~Q2S z9}s?_H<~@l|B%C~2cdgvVMyqMa<6}sBTf+ULvJ*@fBcxM4(t8}V*mPMVMy#>TJD=a z=A)}s4?=&UC?xb+?$__HBs!PQ3|{zx`QXfuW_LsN5xUP&|*wXm+7@{X$=PTJ=A?t9ql^gd<%Owuu2FWD3@GlyY&5&j>wo(VqAHnL@Zxltl|CWOUbV%iCtCPC^FJLx z8NgbibuwH^vpd%JKRUPt-j8w49VR!$&2EhGpWY@*@7O)M;D)&wl$)rWK=q&58^l}B zAAG6C6y=gN?zXCSk3XyJVyzdW*&FzK()CZ*M_POp(M0K={M_^1x8|U{zF*VpsxR00 z&W_XUTPvA^ECjnHTs8`2{?}>t;)aea)?2u&dZ+isccHqavh>>}tjsK=Q?IerO z-Qw^5N^pG^^zJ9^CH)Fu{evDpWo&d#!mkS&gTxY)Cyigmhk0wJ?h4=`8IQA)1IYfI za@`H46oi!BMaD^YkIS!zI@ujO{UbUl?TnnGKRjD|*lF+_lza743NT;LGv~<;b+TM? zeWmV%YmcD~SMJg4JY&9X&hu74uRlENdho@sKH(cNz!!XCw?qtx1u;qgJpPF)WIPLt z^oQq?n>xN2V>}1tUVX_;=H3_db~03U<_cNId-v#EVa|ebj~??2z5eh#RQ9U9d-R8A zE%(Kb`sy1oz?ZEP#DG||JgMHj#V}rY%h7qc_Ht!$3 zSML8-Znt8$IX9wSP~Wu|yj3l}#&1>k%`p2Tw`-;eQ&XWP<##7X**{ZKaov>(x_e!j zfL$mxl||+hsYgg>mg)*Qv()VhDMd(h`xf(01vqOsrlewSH(zJ9-F)XWB^A-08M^lO z%y4;|l1j5{@M_H*VM;3WOTMZc(=(JXC6(?H82|N!ZWdBhh0(eGrKG}2vKf|4JE{?8 z>6y@0ue_Z!o9bs3&cw(r(Ck9zwXt4ySvg}Pn?cKNquI~5^649AA_Wqb$nCJAVB&qG!fa^S1HPV~R$Xj2c`rME<6L zzbgb9Ime48Gt^Mp1M)SB$5K|?c*)?A4QtB`-(9=Q30bkrDBd<++_OQ;N$Pg)E7>~F N)$OHqn@IZ^^dCxC@Pq&W diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil2.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil2.gds index 909999b16eae34a04e450611f474c90aa7b8a66c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 18400 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil3.gds index 0537acb061a37b8e54c9fc0981f8630b295a4a29..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 26784 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds index 46e89059d0e565b5b902e8af2f4ab0878e5099c4..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7778 zcmb`MU8q$>6vyYBv(G-~nudiYrWHNdLy6sM`B6mpnOJ7v2Zc}vK`%t67tO-xp{NIw zsE7!%Ac>&pxreCdj3VeE5Gg2$o(e*u=q04}o0&oy{elZd*Z~@9h0N!1EZOvqtVgn(c$TXPmLz0o?buN|KQ~6 zho@%NuGuj;GquLKMZNyL8(&`cz}XKk-nHe^+t0kSZ;xBvPt2ZQ&g|LHxqLy_ZFTw8 zUANG!T-dXCS3B3e+xS+=?6Y7OZ9KcixmJDulb{!ecLu#^cCTMt_`kL57PAit#lNT?|Gar2eyF&`#`r6G;zlPbZZQ>q|3+KGpSApK@%ddD;>*6X@d=yz z@e1Fw7_o~J?fU!$Ti0vO4VIMbtuU?GMH{c~PtCu7?%Sa6MP>(sUNn2F9v|p>pO-|3 zU7Sl#{OCnLC-cUCQ}L6h!S;~9fEL(bWQFF}+r{WV_LuoD`)l~O{>A)UPW`pb?|y6Fzt;07`fsWq@`7DdewzGq{%Zf5 z#yP*|8rS*WR6o9t#`=r6u#0oWH#Yy~>iO#~S}mNl{ykliHDMQRyxM;?efE{D&psRb z$4cfKtUk>y+IXwJx6GcqWWK&AIrzx_-|V7|x9Ytg)8n6cAUf<~N}oRybc35qqQfrE zrDy%XUD)=vWKKReXRqgp3z8~}xJ1R7tw~GlqapITw z3!2W`#e^O|)F1vu>JGb@sz07%-_eWg8+I|Zf7CfT>R&{MT}Kwn+zleX|7m+FdaXSu~^@VW>4z7zXZM5do}1qvnTc0`k*iPbI@nv`gT2aj$dE@k@&?fru_39 ze$f{+zuqp+;lKY%(2M!npcl>Fx_=|w&#y?iaOzbC$bONMYFf& zpXaC(^dfcO=Z!RbQqT8xf4>y14$)JWp7r-Dv+_^e{_{POxXHhmil66*8@)*U*u_-* z^f`X~{V0-sz%JT&>-zD-`te`T*6r-XPJB8dmPm|8#2v2OGt>-O_Trq<7M z#Erh7#qI54B7XLlK4t$!zV~An&EA?no+Hob3tHWKyO^kd`k&7=`oG|LiyymKzaP%3 zKjLQpMB--u#8mt|N8IQOTHM|)rsB8!e=%{tMc=@z44_6YJ-kLdW@4 z&~)A|M*Vy}BD=YJ!}wpo1Z z+_g*dCyyLBcxZI|*ul|}!-r0Us<_fw`+ucot)2C{Ypk${#^2?>Zn-vlCsKEf#l>37 z?*i4kY}@$QT`bgE#sBa}+vg>=w~=~>Et-9HuS9+S;}B=Qp(OKQ7i}G_`rbc5m%ULE z9d>a{|5){|M(%j0+I^%X@8q$IHeU5#(+})CLC2~lIZ-q&d5f6+&?}K(GSR9Bzo+k^sy`K zw?6AN>oV)LoL+lA^x7@c{?GTCMdkl|uW^U5-?Qc|&A05@xP7M`0Co}1{>yCkcGhOw z{m|ZBo43|xv)=)V*sAA15gWe`(lgc*!=?GQjeFYlS>+rl^yB9U_o?nFceO>cchl}Y YyO{9GBC>C+|4T%^>KY>&SY(;|7szAk5&!@I diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds index 0694b18e8d53374255363f4208213a3ece1aceec..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7778 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 GZTBC$1sBW! diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds index 88d7d19a625f4bcf0d85478b7be1a7fdc8dbeee9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7778 zcmbuEO{`s28HU&S+vnVy+5jn#N(WAKpry7|+G>o@(rOw+Nn3&;ffEzjfdah&F{yQ+ z!lZ>L127Q>Iv~LTLk9*1jOf6GkT58f0TAOvNeCf^5h1+KTI=0E_wKz;!PA^Pz29E% z`hM2WUVEQVg>jgKU88aMUKr^gpHb)kd&bqHKRdVY8+(^$9$0QXvRpoLX8G`$(?4JC z-S>+_%b(o2cmF;6HV)kKgS{L3ZwX4guzb@cCF|I455Jr#D%3cXjK zrT6I~gz5|9a4b~Y$Kjf=`;JNwy56o&M?X6l!u+^md#%NH^fz|%_^=*7ljj|M*6SFB2Vhv!o}^YAwZI^Uo>%%3Le^r+)Z1sT=;y-umVFJ-LwP;{1HW z(XZ5(?55Vh*8E%g#fS1Iy}ACKq&HtpSeSnC*H-}TY4@^$9-+T%U><@G}yT^G}JF&Ne>ahYh2FisF1cGLQy_`HAh^*>X2=(n0S zq+jf2sekJ0{QLY5?q4~-`E|+f;)aI!#cr1Tv;W$EUw(b-gMP7_tNPzmzuVjUZ}n{I zYkq5sS5!~z=AO>{*rMm&h~6CCmh`6V?fKQw&u&h-*_#c~VK-OlsRjC)iW@!gM;79r zyqa{=vn@&&?dA$Sd80Rp8@*YIe{z#*^+{@P&i|^vWjAFXtRL-W@{d2W!ax0H%3jn@ zRX_AK$y@rVS;}AS#+Q=bjAstnP1y(ihYyl|^jt%9*v(aX>W1E=Zs^TY{b)zs(3{i^ zyIHCq?Wi02nyOp0n}zx@KZ%?9YZ5nhvlKt=h#S30+_B%xQv9?dZuB)3ceI-;;%D5^ zn~WQJvowC}8{|FzPeby?ZkF<=9eJZS$v^g+S<0Vwn(?_qc2o9t{kQ1j z^M&;0=y~~<-rV$jc%*&4WSnPDsV(={%<4cIe^d6h|1J9Ip`@?*ucV)vhsyf#zmwja z{4VKD*$4f{bClwx-ozXEuBi1x;zVas2lS@wMgPQ!-lPubP1%cjo{!MiR6WpB zkI3%xb*KJZpI=ORljjcXrtE|M8Gq^&&u5wR6W4#Ht`F*2=hU6`UsL@=yIH6|?eK@* zB<{F>WR~Km9d(Q68&h?QcC%1F+A(hEO~wtoSsK6CPV)yn^9M3-u$!g%!#+mc*xzcZ zZqaTQ>PI{3hTf!paevG#)sJ@6FP@J~)h*i1Lj7n*-O!uV4ZB&YUu>tkp{IV3x?wj< z^<$rA{<43Y)FJNQnWgzlJN%$G8HduW7uQ7y2W-TO~x|Datw*GO-2uEB2le3S3b9X<0L|IGWE@*C}D!T;o+ zNjH7GMd_m5Ea>q=-1s+%8@pMGA3x~uZ=%C)TE9(Y(fL;S-!Kj*Lv`awud%8xj-=dn z)9kjLf8_IA*tTnS*C&RFKNNVQ!#Kdrf>i{|2OB`v!t`_{GKv&_dyH~pv~x{2&&QGY=d+b{p; z8xlu+*PZFJ%us%QR_MzwzUx&y@m+YP-|?D?vz_1l?Xw!O@y>nxvuIo zhu!Se=lQ`thko&;hUl=H*5_5B-}h0)>!^eN9ZGztsb8mW&UdPtn2kO}PeUIlG&B?{i>idUJ zb)&gzy?(z~rJuI;q1ylEeQ50^)%s%CuG-vvh@RrSaY+27+_Jx{}@0%7zX diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds index 39214c44828f89b2706aa0481640ce3da04f6f27..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11042 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 Lg%M3PvvK+l{{SX6 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds index 7a6d1a41aeee41a7fb4af360c4b92ae3a28fb835..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11042 zcmbuFTc{mp6~|}a=InEAEAf&x4@FS4l=hsYZDO?{$w^v^)=HA96zfK5@?uS6tCd30 zK1jV#MKJ`dAW}qMs}@=m#RqR7J}G?=Q4z(UAk~*5i1`0~-~4B0UuNw#o)UgNYv%v0 zHEVrq&7L{CD2skEDE9UG#qC8;|MAnC`u`jH<-;F-bmzeK&+E@m)?|p zUcaaDk8bVuqA;y9m+6Tgz3I5kh4EMZ%O|qmmCrZCFLpEX-~UI}4gS>-9dYByq*6!{peuU*Zfu1kIaLyzW-d- zn}fTu-ju!5|KJTe_Y;c!2Mt#?^}Fn*j)!{UMqg8LqbL5vAbySyUdnotykR$G@AN|?&RO3?kTSoqx!Q?sXzPIr0&?wh4ruI*I>6OwvOrCn;Ty7r2NZn>iB&8Eq$6* z(wn`bjfZm(pU3~Il=%mvx_+^z*x>%PdO)@R!-D$w z{<5GxtV?~&X#L)ac>T+s-gD&)OWwm`R_Vj{JpzA z_;=r#?mKg)|8}SDf8Wy{_?BvPU&FO`Yoo|+>Ug_<=k)7aSzq({tY0^`y7j}qYOfwv z|9!c|OPZh9&BL*t_|cohjoysn=RD#@UsG`>yBWkkxF*Lv_-TuZJK4=3e$FFq^d@m* zH>3DDumAO|HwSOedQ4?BRzhG zW%gh5ne2aPmT~-}b6IbeugiK<_Ri}kPW%#oP5DiBGw{!O_(gBx7rPnxr%&-q{c6f@ zvYSi%v+wa=Q~MtO^lxIY|I52Ie=f@3zZ>?B=y%yo9q-KF`1jfG>StS&-()uf|C~qP zpf~9o>}J$IoX7k@U-MGdGk>b%Vf^e{^d|cjof++4&ZF+=P3n%_jOx#M)E#|I)jiqG zp#Gf4+(2(KH?W)0{3u?`b?ZIVqUx6HW>7!Qqi*O;>W1Bn>c@H14Smf^Sx^0{6 zICVpBQa9{oR6ow6Zs<+wme#Ep)sOS28~U2hWIgk%Iv&PP-O!uV4V@X)kNHXeGQZ8< z5yc|A8TIerQ&~5Bb3=64%}CFj*!rY$ulZqK@h1H)yD59;^%EyL;y2M@HzPf9q9cA2 z9dG4C~;@_lyv71r`F zf9d+kd%J$ro$EFi=D(%y{VnUw&EHh|in4d+k2<^VCVt!f6Zz*n{IY*c{3m_I$Ul9C zU;59)f4l!8|D1rL4^^~@=B%r6sNn%fm4J$;If{x#8KH<#%LU(9-Qcqr>l**oLMPyg1euleV!@0+)F z>$y(y&h?w*9lN=3!a{f%&JM)L0*vY@Swm<7l**o>@bMnmoH_2n_ zi;A*`dh&$6<{z`ZG;itFv(M47|7%K@>}H@R&*;d1P3e-|4D?(l{YU&YwGWfs4Em3K zLf+f|$UAm3%6~df^+!+rA$7-YE~`ItmipI}mVLn*i8poUpL5XRw9!2pYO&p z>-lRge|$dV`b~6PzZvQI{Dp3KTSIi%%}7tqHnwxFYW_Coa>Ly2-aqVfbnO3{(j~hY z=*csF$iKPy>70L4_RjrFp3sp$6CHLl(zDOevHwkU*v(~n<`jC9Jfw9i${xm#j`&UV z>AEULdh&;k{F&%eUMq%r?NdI#vwuxKx3hoEWuM>C5xPlg{a629Xt?=f z`Ip_)@lO5t>8#_sDy#$1VK*1*tNf?u4Cz)bWIaTO-L$^y3Vl~my{0Zxua)%L@Bdj%pZ>Mlsk`qvxqD)2HGPkwj;%ch z>e%>xO7(taytlmL=;_PUtEZOfhpjnO`=6ad%rku_X-ijg&#_adPZCh)6}_w#SJgd> KS6tD`!{UEa;dinC diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds index 9b159cc150a0aaec08beba49aa7557d2c0b91da6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11042 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds index b04f2b648b1137cd6e11dca4a3996e869679e806..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15202 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 R^@u{h?fVh`l+CPL{Rfeg&6WTF diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds index 273792844566bdc48c06baa10a7ffb833cfcc220..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15586 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 NT6bgqS>4&7`X8VZawz}+ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds index c5fc6667717b0ffdeef39ba6cfbd8845b838408e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15586 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds index 0e73812f4523b9873cece82a6fce6119d39b6652..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 10574 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 Qk}~3I(4WyPm z%rWMgb6w6(RT`#I+C3Pi52u0t@focAzIRwX@`cCtzjxpA?0w5~4=?1wPlDd7 zE9reaOR2hUn2x3D`eC{u?YUv3@!p!!hdH>Gd& z?`-4ayY8iwO#963{EQ#J>2aGL|4mK)?;56^X@mS17g8F1rHrrd_*6xUj?ez6PXE2$ zKlxyMd~~kuzn-6?d4Bek`i$PLI!jZ)k7G`@%gPK9N$^&DH&-od4e6 zv^U@%ywIV13Eiyy_4=2;-5)l7uXFcc8DHP=!Lj!E%KEMMx4!YSFQJ>8_O~*A?~gs> z&-{+C|vnV))m^zV5!J+G$ccU}MUZ>+B``=jgMSKr|)WnM=*$CzhG zUC>R}r!RhY|Lr@@{vE~V8b#d6uUirq-HhV*Tpw1>KdvuP{Mm^TcYaq(;-Z^T{Oyazzqa_tdyBu}i^V@S_s0IoQ^jvqw->)DJ&a$yR{ZAl zr^RndU+Yh=>Ri_N2j@G~xU+5s|J zX#N&=7T@AOE%Bk7+xe*<{)Va>e&#o zJ-xRjd83h8&CGYt=Taq`r z8Rbtq^2Xm#d1u`W@~0hn<2T70-Hh_j?UXlu@`vP&Zbtc!|6cN*{IDf?qnlCwv?Fi) z4V8D+%^-i;F>d@O<3=~P8$Wf!Z&J71Z_TKFqnk_Kqu;b7Z*()tpLXPpzoGKZx*6n8 zJI0OQWc=u6G=AM%rMcoS-rb?%X5HK-K6NL)N!^KWM)jYm9r0)KH&ooLn?ZcW$-4>0 zZw{0{x+#6_^@}+8h;QOUHzPm$1U~i+6Cb*{ou9n%H&ovE=Vp-qMEf+piT3S=@@3r& z{G-1X-}t*7%9nLB@Dqo;iEolOx*6q99DKw#@u8dc-=wnW{gm#X!soA*<2}z`<^Idh zCzndzJnvG!O!7uI>-_uTbN{GwZR`2f>7Tsl*UWjTe>2Lj=lN=N{HjwP_onr`?fli_ z%lEHOmixb9&FP=&`@fpf*XGB4625%@R1<%`|Eg(!U;TRS|5xU(=l*=JK?Xy5;9D(mx0?>{|%>;wPM`Jny5oPAUOmu^a5TOY0?__)59_|VPBpZ5{@*&pyj zeCTH6=Q@s$>$-^#-HiO)2jb(t(8PysMt-mF&HHoT`mXE0%+FV@|3#fkw<_NKEeAhQ z{iU0m-Y;$O&wf|@rr$f5(!29_r2Bj~-ci=q_?Zs1FJ#?Z-5%Y!_ z#hayCNZ^<)$ z-d}3!_}clS-Q+vPZ&nA2-;^Hu$A^l);a`e>Y#xgJ!@m{3Ir?7lo6^_Dr~ZtS`Zv6+ z-_gwjv7d3`H>m@DQ+gPmapE_r1AbF_=+EzEki$F z)?dCq&^+b$TQ$iezu&4EoxijrU;GVK$E=&d`k@_l#&5C?&`s%U=Rdc*T>PvT`r$l6 zH>3R{zaLS&{C>n#KUp_}^~XGO-ZTFVRmZHG!TC=+#);qLyhk^sug#x!)Cqq>jXUdR zF#h};DSv*xGv&*=xs9LogWqHx@te{5p&jQNev|VE-Hg@`?WjBchN^qk&7l6Yqwe@k z>W*$k^}pKq^UtKbZWoi5tXp(5TEDc*&j<21)V`5*GuS^k&zU#Qf0KDbH>3HZ9rK3Y zWZrVWHKX~X9rK32q2?{?W-x!WW8Uza%p1BH&EM6==RTXdasO>nH*_r4HIiEImPmbIzjZglL#`rGP@?d(yuIh^q-FN1J<(D5hvwY~m z2OcZC;_L0Ty5(B*I(_9@^g4eo>UHJ0!p~KgR6U-nPPZKVKGdAF4g|&lO@jVqb=zN-PAbN`X|3FzDnOUV7w3?x*7RL|1G}p&syR`HzWW2 zbH%sV*%BYRxyk?8?sF}*=lc=EPq*an&7ZulD0=?neTDmFeRpfIt2%n(@bOP*1HVx} zSJRvRlC0iNe)9B*JC3dNroZVoW9#mD&Di)ZTKz6?wyXNc;Zv{EuXmN(`Ny3-w~4=b l&)v}9OovaT>y^#vBPUOtU_fg#`oDVQZl=G-sd^r#{{bf|95Mg^ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds index c38358f8837ec11b2fa9442e709050e466cced3b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 10958 zcmb`NOQ>B}9me;0pL1WdC05dA;6SBFj7e;h_|8oeCHTUd6s4j^X_JBWaY?HXaUj}B zqtuF8X+PROJicUIdDFtb9P{o0Y3Zg}cB1Nbazu#K>+mCb4{@+$}%jMVm?e(qy zWADB8UMHs*7yV*T?CbT5cNabV$4{^I{|EZxdp>>f(3=m=&)+`ZzA&F(I6uGZ{JDGQ z2M>Mr*!+|4KX~JZ4{aa0>3s*c58qT2dj_L-Zr*?Ny-)t|@>@Cm-ocfNR{zLkXZZ7SAxjqc; z%lGo?k8AcmFTZqCYsk*)$Lovk9j^P{a}8e7T0jT!KgHqxZN%rkM>m(=zg|D6bD{pUZb&!nFV{!aU$2i#)~DQ` za{kpLdHyxUAP!_+baS`)buFg)m&I?cpXK`2ia)s~$DLkVlep++6rcH{_|5fwS^U{+ zbKI31Y7!USjN&tY6u+fK$n)Lz$17PMmR?_)fA*z#e&4sI?^{!P=k>e($GE=Usrq=?-_N}bc#D{K1{=wrKdq8XTryBgV&NI4spgaEPhU^>t zvO)QhZU+AGgV{IHwM8C@@+I92{F8rY-}HM8%9nIA@DHw6td~^p6E!D4(%;fe9q;Tv z<3>7v_|38UpXMzoJ@gM%H~xys8~@PUCI9}D*>9$MT7FY{XZ+C{bKRp~)ue88Gpe6) z)Q#Vy{xomNsD8##H~xyMJLzUnKjWwyznRt?>1I^_>_fTk*^4!)8{LfRXB>6oH>p3( zTQaJjany~!qUuh%8Pv}>>c($UH@X?sKY3Tqd-9i>pk3x|41O^)rsT@tf3*ZbtR5-j?%TTdzsp=w_5Z&E5Q*cl;)O!*53YV;ptkH>n%ljOu3`eaBx>eNVa> z^nd+n$NN)7`I2r1e%^D)oA)1+ zywS}lf8KNO@&04tLpSX&-%s`aR`0)-yg#;%cfLP*e|DSV{59YI=JdXN|C`cxKL1NU z&k1}yKTLe+X5?p`#mD+<;zKthKhJM`JikqR=w{^SJqaK0PbNNe)Ba`s=N?(upS1eF zWdGDUzGQ#bI=*E8**ebt+wrHmZS?u6j_dPN@9!_`zSbT#t5&-*&Fo`6VxF{K$%oE7mGiqCUv8mQT_Cnxb(fE;wIe;;?rk* z^uMBfNjC#OdEz7git;7hjQo0zq|d#cXz)++qnqu|hg;{5ag$3LFTcs>X6gAN-xBiWfWM9SKXaCqd(%pZa z^Tgr#Z!!ERZyypnr^` zZ}?66hHggvOP|jue)@dIRNSPSL43whH-3}4(aos-D-oZ%iEmOj^P0QW&vk>}|Q{6w`KEw0%+zVq(e&)qTq%suDkci(l##hlguI_p$B zq$@w`So^RmKkM*fG;6tURA1}QeU|L2^Lt~t?;mgITtBFDq)nAM{jE-rbW{4y^IrO= zugSjIbv5y!n~|UWY1((HUnY5=o8EVJ)wi%OZq>&;-$gk4PU5VMfYhBfNGZ`C+aX2asYD#tRz diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds index 3ce81e362913e38bf72f4405617d0bfde0a3a7a0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15612 zcmcJWU#O*38OFb}|DAo#*=Mv;%bbdCyb!4o4HHBg9W!%O7{?4NPlXO<=7^)B7nKDT z-b5i0B|%2ezcE5845YeILcHk0uC&Xnz{-d$=&&O4gsl;QZIy$_y$4JTazx^8z-*B+m zJx*GmoJi}VS<_552hAnTJ_g>tJ8D_re$9D zHIrR~=H%vV=B)XduHykMhg&-Qb*q~Xlo?#+AN{Urb{$s3pXu;LO*guExZgj1UVR-= z-}iL*QqzQP9_jaQJR|S@S^)A_{;Fw0H}7BYU$!v*Q*^DDtM5(Fcm(l%D#>v@^>fPMH`lK#e$%Jjvh_

;El& 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds index a8caafca83bbacb65133f851c1b3626f6adb9cfb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 22076 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds index bf1123df94cb263cb27f01645ef0367ab7236206..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 22204 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds index 5e100d47e8759ef9da6ab249a0849a4294dc0793..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 22460 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds index 9b8a81ab93d55675feb1c9abec5f205f51ba203b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11218 zcmcJVZK!2c8OQf|+vnVK?v>F-r>Q9-qasJ0QO22wsqVZK)0=Q-#Io{$&5Px{rHwG( zBItuf^hQO>U=)LX39%#%(#XOBD=;F9B1;I%5QU1O`q2Nk*8ZQp_qlto>lmJhpYyE! z-_Of>*4q25d$K(1X1#1vr<=Vk>*#-cI<^14tef9*)9I~OZkZlFI6Zmubb9mQ>G8vd zJ~rL5_0}EJ8{WO;ifgx?ylUIKww&C$Bg@wJ25(-zZTmYPx$C(%?s?$yuibIofo#(t zargXO?%rR_vV5tV?a%Uyy4mI|-_XehS^hHOUVQoBtsBNWPk!U^akjW=uzi|p%q zS=RevmJN?&=WWano;r5y^z`J3qo=d}`C0aY?>PFs?)a9bJC0(Ed$at!ZniGljDJ-$ z>pdghQ!+mm?WV>8tNv^H>}OFI{7VnfV>jpY(`x?RJ!?0+Yq{VJ(yfuEV_LCwtpDH8&DO{DH#$Gd2A8&v_fMzC^S#RT zu3CI?eHH!f^|i=+YMnu^E3$^%n{9e?Xqm`&PWpCB@FVnT3i1T6QFV(+gH)T)i`@5ok#$QK$-`v%%r!Vk3`anti zVmDL%xemYRXO!PyHw*v8GeGszGeEol+%sU~SNYr?`!2sqb9y8jZOq@kd|+>k|D5z! zYrVa%t}piIIDg*XwGZWY>e_FY9B$K!kloaHsDI7>y7u_zpJAOh>E6%s#Myt%uKfpA zNT^{(iirCEk@w%pyLNoD^IHjIH)UVl5ruyIc+7+yo6I1YU^ksnQ$_GI`9t(?EyNjxv`;Q#r^wFs?z!l?=IQ> zrZSe@)JVv0J^35FK{Y`nLJ=GpcF4;Tc!! zuj(_hDZlZTV_e}KO7TJB!fragLchEEjOuJwPWP&Ze^qkf{rb1;rpBu~!Yci6U)0a| zx2PYQ`_lTsAEVyPKOOa^>`DLBkoe8P#Zhm{-l`wGQmaqzyMv#U?C6~cyQ%S3eg1IN z4Ud*Yhuuu+gCF%K{yPP`AC3M^*<1aipL{6l&BdjtH)U_t6DK<2H_>4?*U~TQoe#aa zbSmmi*<1Y+KRWU^(P1}J`cP-p4gb^+Qa9{os($19V&6}$FG=5HH&gx3b@Uy2lfJ`l zrur{jr~XGz|3ms7yP4{L-V0g3qr)YM8@ri`pX*q+=x5Zr4R$lJez}gg(VN7L-CQev z>W1E=ZsEQKQ}r7>7xT_^2Tna^5;78Mn9wS4t6t+ zgt%EZGb-+2H=E)w-VYW&qHDM7|5sFaR<*-!Zjbv{@%+~Fum1iw_x=)}kADBt_Y^+E zZ9lg5$xs~{ps%yP4la7O4-sy?e!b|Io3U_5BY=C z9lPoJH{E~XGv)j?jr0CL_x+;QpMyKf_!{+!#p|zW9DQn>{Oy0Fsaoo0wfd7M{Y~B` zeU068e>dsbN7NtjjI$u~>3yddZ(SeM&+D%(KgZuRUafCad^~4}kLQm`eArF*caxrd z8Xfz$i4MD&(({~0$MfGrhuyTkDZhsApSAuWfA4=y@rU|rKAB(UGf?q(-iq^9T~eRd#gUY=PgJ71M{!Z|G->s*ONbWqkm26huvJO ze)tXVZ>IdB$A4hLKY5}L??0w=!EUahr|#%yRQ=IY|G=H?`BOjgX8oAtjonP;&voHk zgY~EW3Gd2){4R$l(zk91<)%@{Xo>B7_>}F#AxQ@8do5YRXOvOKbDEgh;SfTs| zySavc`Ud|deG}p;nCc(uOy1OeM)?hPGvS~9rtiY@qab~U-AwIY#L4<2{u#CIg56B4 zKd!?+dK16c&6NMnt7G1spH`^6gWXKz&vnc@dXss_Zl>lxe?aFZKalo@l1n#fK4dpF z-nxGA!@T3)Wd1{31yl3Sb<`dGjH-LEn~C~!9d$=C`sPf%~bxZ z^YK6ATkGGP+?j>-Z_3_UKlUkf>|Z82>}E<&oRedUSMi&R8)E#X?5+NpXLQWJi7xa- z!L{_A2czEX9*KHW_E!JAAJMnt^(E}INexsJX=Z_?-Aw86 zL*L=wr0=ksss7_S`X2p^>ib|f6aCNpQ+MXyr0&?wRQ*Gqsz3QN50JWJH&gZJI^sq* zqv8&BGZ8<1mVH>h)qiH^C7KJ_P1#%f2S3yu|0Z?EZmv~-o;%ckM(w-QpZBN0#Qsa2 ziJSVH#2x0PpyOXuTKayd_hAZ?G(B;A z?zcwgeAmJ87vrwI+g^;jj((H6>xCMOb*-GM>3fyWB^t*o=LVyhUcasK-~9$!Klf`M zzgv>?vw`fU##i^H&)vQsuNyvEGMu-`Zu;D<$$$P>^gH}yN&I3r?Y}L*xpND3NLinT zbCKFO-%C^a>bXo){O5A+)28=%iRtqa)8{5l`8S+<)beXMm(+MU|9#C9ALh>t=dH4v zvbWAZ=WE1$4(FP+_!`cgYU2&(p0)UWzW032J)7#+aIRImfA88NKkdCCPxfH-40ba$ zKji0gr^fj|6YsllWyx?}D7%@uf5W*-t$q#XDj%$#tN1sG{*9x5(-?jucvi7rqFn3e zzVWw(#rhB9`ny`t7vwjEL0{0nEi9f3`t8~5w?{d@KmE8~N%i~F*B%a^@cYyILNm%9 re*bxo_M=O)v3|RA^))NI>%T;LL3h(H4Rp6XE6e-dQ}p&w>}UT2IB9du diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds index 142407f69f2d50990ad9bd43de159782dbe6d87a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11218 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds index 921d9a2ab3375c3784ee2c1a5fa57b6aab765b04..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 14706 zcmcJWeW+zs8OHZH=bm%!J@?L?dq>SiB}Nm?Y0x`~n2P1-Xh>x_qnLtSs&OoJbkZ~@ z3a0)@6eKF5RD|gJlL{m4!!)oD=mSispg_tZD#C)y=!>4;TKm~&?>l?H!%TG}e%@!V zXRUXw_g!o6bN8HLRP>8Maa^xoTvYV*KYn_R|30-py5;(PTTfqE-Mwpd@6D^LH}77( zarZTESzXzB+lyCU|H_pYU2*!}m6cbl?A>}sQ5-oKzGT~-XTJP9pZwEV+aEgZ!}ncv zS#jJj=zVl3z0WKZ#b{l>*jbF8(=WCZqoaGpuoxXf+zZDJ&pUc@?%t37bW$uFH$4BU zG#BYhgQ6IGs3_*{E*3YAcHO#X&%V{YH{GzWm{~50!|rkRe)ag-wjO75jIS+5i~Zur zVhiK*GdQg%`Y)Vv{WDoNbv;GY=AS%2`xY*l5+Ay`#(#Ahe@h*H^$ z`->lH+%J{wO0K^}@k=*#z0;q@m2du?xgUrx#Zj`=U#?$@Pk#4fUy5J;@_K#z3sd|{ z<@#Tg$1c7wh~roXHojj#GE=ReVIm^&rUz2YNUPjvH?mhqRm<6pbSdgrLG z>(~)HFF$|hWjmNqV?`SgQ8{zRX!d`p@r${l=FDTd{WJg2%vXwHtQ}!)&<;a4rPnjs z7@u~OAGivx} zb;hm#rE)r%a(QP_pqsiL`g@OOzd5)d`%USce&SrZGRJQoabk|&l-}v@Z&x*F{J~eI zWL$JJ8lQH|AHT`G(akmU&u2ur{)1-~>rwi@D#M)9@93uVdi)JPX9>OqZ9o$rx_L1F zWPSFV>-9T+Q+nt4!;dR>YCrn)l=#ri$UoLv5%=sBQxZ42xhDR+qsn{C%&GEjmiMt5 zAJy;Z=H^EH2lz+7&wg{fKl@GT_4yy*AATnL&Cz+;Z%PmSGuLImIV`f@l-}uQ-!lK% zO*KB6_XG1UuZMo-jo)P6_{?bjv}4}*P3DbmM)Ri~^Tuy7@6>O}X#PW;ri&+Pteb26 znqomWPwZYl+AaJ#`^|N4%YIXO=lbEF|5)~$3ukA)DLwR0c4dFXzi0o%+|}X_&JXq- z=ZD$4e@Z|5l>Nv4HN9`m$ltbq@u8cM|1i$Ky#LDh+s5~~VMgO0%K61I>2rX_-^??1 zdd44}taE-t&QII*-qWhDv%B**^DEuI-m3MwVajyhl5XmHs-L$0)A-+rulLLN8qa9u z`Y}E~jBoZouUe39N)N~Hy|H_KJnKV{qv|&4W>CMhqi*q=)GfLh)i3R+Tl^JOw@EjH`lTIp zi{GSf(aorSQ#;i!e(D!ex9Db6zqF%n@tM>ux*64PYNz_ePyIsb7Tt{Mmv-bGUq$6T z>1L4s$?ZAs^C#4(yeHiZ@=rVRj^8Bj=w_6E+L3qs6_xj-n?e5Br%MlLZ0%oj`D*bGRHe`rVE@K;pcl5Ph1qaAgF-=uEP&8U88$Nd|BMb&N6&7gj{ z&yzRq|0a1uH>3Q~j=bSF$zSTXWRySJkvIG%c|$j&{LzlQ;Wx=&>bGQ+KiZKu{1uhA zq?wQ;aYyX-3H_I#Cl-{|2+2{D!|0X_kGx9S|v6{y>dvkew zQ+hZ)KE^lkrMOB)e$F}a#`$NGKXfz7UuviN!B71_>IU76>W6mJEk2X_MK`1RP3^RQ z@Uwp)`v%>N_7Cm2Z{e%>MD{P5!TpQ;aqd$;Cg(o7>GQw*e5B{E&DH0#;X4laeAc)= zdOW_4f5YxvA6@+y-|W6l{|CDs^*`eCW%>E8@qAf+ew#a0pQG+jZTz*yXY@O|c}Giq z*ZjOA!e8>rrTcSQO5w)D?_t{jK)8Bbh(scK!iDLw74w)LC4RC&F(J3jj9{U-No z5+}MTJ?y`KSNHX_zRl0?&HB*#`}1>K{C(}Eg>~KW_g|Ca9Bisl>zZ^kSYO(aU;Gud z&Pg{9mS2sN-hq`&_2Rk_mFLd&V|_gTw)&g-new+s`}4Lb)88$mo4VfFKl>}{pU?T! zVOqbE#GgL@mpoYfYyLjbs9)mehxpC@gL=M@Zc0z_x6WVBC&b6|iAj7spO}uX&Ch)l zANN-iAG#U&$NRI7&xiOSK6KOmw)*9K^7^-4KY4mSw#82!vM&c8nUZ~(>bqpLKl}eu z+j4()_0PFN|0d@O{hQJGLjP;dm-8EcA9{h}emJkU*}qo5OE;z0^WX53H+dO7#D{Jk%un3-D=KdM)PG_S zKi63|{3h#%Zbs{u+9`kd$sZ(d=w_5Z+EF+7DynXhZU*&3JL(p{N!_BGQT?WNJm1OB z{(3JV?Nm4TsUJw)pqo+s(2lynS5bA7bTgC(fmZbNuG=wK;xMdKf=G;y3XTzZv-% zpSW4Sii$hwW)S~)f6hD4&E!8(c~80-MU9W_3w|3){@=w5%uVc#>p$-YN7qy0bD`f={CZYJjrx*456wBy{vUs2~?(#_!f zqaF8c{3hovx*46npFDAHlRuMl8{Le~Z`yI+z;ANjNd1qP zM*n`L@%eT3pV>F}i5lfgx*7P1lXWM4ll4#YDjBUm?O1pG6}9e3H-q)39qW$YWZlut zX#J^E)}8t_S$A|ZT7TLxZ~P|nPyLpR=1)83jlZJiopdvpKXt})2lZ$2+<|U}&mUSR ze5{{|kM%PnKXKwCeiI+M8TqL*?qAej#V2$9asMi>cRoMxcM8^huxU!xAKi@BKebc- z@soc@-qFn{|Fq-2jj!TU+0Wk(%IjhLtQ&rlb;D)-gV{WtQ% zS8ILWS8Uig+H=#cYi?M*^_FW^Z@O{KcTsdI99plVfB!#v9cb_V?_*8ho9SGEqpEeC zzBj7B7iyfF<$DkR{rwRBE~yos_TTw;$-{rI(&)eCy-Gg!YyJCuis|<$=9<6T9?-x4 zZriqgE$`hL{`z~hw)LHPME9dTI>)pZ&GbG&y1C}PLZknd_d3n%k5Aw0wT(afI(`1q zc`*Czl<9qzbkpn8<{w;Q`fk|h zf!xpd;wf2YbW`JW_pkL^^WLDbzAf){8siU#dEDWBQ!*~P8I4c>Yu>9i#;?D3ZOhML zytiodUw>~=p3C}PhECA@-K!Db58SU?h`t|q((d$=z90Bya;cy6Z-@C_*XW^QqVF!f e>hc{IluudzO>cS=uim!r*mm(HWo?Ybnc_eG+IF)5 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds index f35f99dd84f77057920601d71b29590c3966705c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 14706 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 Zr?i(-o8F|WwjH~+zv*pdY)4|h_z$SO!D#>h diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds index 836a8db7ad671f02f9685295afaf107d96d30069..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 14706 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds index 720d0b722aecf3e8362a9bcf4fb792cd5bd3811f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20210 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds index 055bf2fd7048f657d8c895498b30646bfe17569b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20210 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 Cw%zvt diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds index f1d88dd846f0c876efcf74239290c6bd09efa8e4..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15038 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 XIrXMrPO7)P`*vOO&N6rN;#~26lq}NY diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds index c88c13402239c3869ac6e6cea6895c3d0915dcc7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20492 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds index ad4c754ce3ee6250a1d101929438b8e91a57819b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 21004 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds index be3552b73175855f12fd073fa3185a79b998ea14..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 21068 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds index dd06de89c7ef66e310d8f94c31eecad73e9975ff..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 27724 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds index a146eb9544a11136ec4920fb79039124a78feba3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 28236 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 QHynT6_td$+EG~Bc2WaXHYXATM diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds index 93452aac27d0b693267fa190864508cf780dad8a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 28300 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 tqVgW$U;1_(;>WwOdhw0-+pbtbJonp9G_i#I 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds index 3865c6620eb35774210b24c405fddbe4f7a7b4ee..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 4276 zcmbuC+iM+F6vo%goEf9UHtO*b%^x5V=}A&)i&k@Mi>M7vQi=r`D@|TZo6y!mD~jNg z2womUs}%(wL_|~&^ic$TYN7a6@Ik@LgLp$k1TlW!-uvs!oMgtHc*5|VtUbTI)?Sx$ z=2&L2B{merw%a27@fB6xkH*>YM^BB6b@Ii-`O2|8Kem`3U0gVkcScTb&zDY~$PexA zj2`H$Y~Ol+XJzCLvv!i+J@L%8`@VSl*B#TJY0My_I{nneEk6S`9jkdu^;SGtk=e$Jm9(H&qB%3E?t)o{mD4d?=F5R=fK4uRPzw}&*v}j z%o920PfFh9FK83b`jKPbNZlO5E)^f<1O6N5qY_{A24Z;`7rqCj={Gnp>{8gv^Vi${ zp?=-@Z>S%hC-5B|zT=qZ9_McjufCJ2@1$M*SK&7>ziW8GK9>6iOToBVHJ{wn^- zGk-mNepGnI&G}1yD%8yl?9#6JsqoP+p5uAB50xD4(k}jqO8wFHe5GF%+WNr1m*T(j z{Cod;MmvYaCvgoF>iQaXDb{QGGC0I@-)9e|uiac*sj(@5#S7DdMW- zBb<|Q<9WMK#O>_T|KJ%nc`5ypmo~+}o_}#t#UDPuP`}2{uWEgJ`1}f=&kt4l>-LbB zy@fI^gI%il*5jkEJ;&TI&s29V*riQ;@|@?=_X{OQyR?b7FFjYTFFD$!O?>>6=Q$sY zUvok``LJH@uL+kwJ-@N9GzUS|CsM4}@|q*(A3T*D?b0S*TzadIgGx^Og!Nkgngf?V z_*b9P&V9mqE&qT0yZXVe;*ek3=|8O3`e*KWt>IyFykB>GzkhxncfX+ST=N@l@C;wC e`seEC1>|s_ZNe|0{gZR^v-}z5t9S*pW&Z+#xb58l diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds index 26ba4259a80db99d1e0ae07b5b858686bea177a1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 4808 zcmb`LO=w(I6vxl|oQcLZg=r;P=uSjZnh&EbMM;{pB~&Y>DFur>70t$~v6ey$f-6A^ zx^fXeXu*ZLDBV;jxDvsYZUh$*7u_g`_(dtDAjb2*_x|U;_h#NrCpcaFC+EK3J^y>| znUi!Rmsk?n8O3r)BK?O~RCzxc=Wo1xZenV@SbnisIb9T|my1`IUpiBaPn_LboH~1^ zc>d7%?%*bN_(P<< zEbY6i)?6LdnxChiXvXdz&3HfVe&#A2x~hAAtsOS!HGf5YX`HI-<@#3m z^swd9zrBJ(oEqZgH_Juudj*F$HN?YbdeZu*W|{R*)p*c9IQXZ6Gv{&|;^7k<{8Pc3 zb2$z1$&>my(D9Y%XQHcL>d%N%w>A5ZezsivUP+ZRacY2v&-jM*Pfb3y{;3)d)(;%& zM+JxaQA0fL4;=cB3J!5;tff-}CHhIrHu9PXbA-qh7; zU!L>H-CzCw``zDm{YdEVSpEFVopgSg z`cchX(>Rs$t)D;KA2{?6)yz@MkK6VhLp+`= z^@D$K1I*t_{^(CP_tXdGC;VV;nmDyO|0+Cuo4NaYNtH8kYJlIw{Hf#zkGVI%{H*Xe zFXtwebCX(|pFKS07S2oEVE$Ej^bhi)|Eb7}I5m_X&v9;2H<+JqRz8243a{)ZudN^L zd#e7_+kgE0U-Wa4bCPqBTAPo0{^0zz_2K^CYW7L3%?n;zpXr%3PSy2he|YWz%XhWL zYdpx;^UGD6zpH`#$$9HL9q|g^h*LxU&2#D>Jp3E2@ge{H^24`@Qv?24XXb^Pd)2y9 z^&I8;JzMUt_$_~K)RFrjj`O?qMqa+ReEt3r2k+J!`Q%;8XIH$Mx@(+TtAE9Rblq~v zKVHEhP7U$0+j8+yuiy};*7(`-?^oPax6fSPp$`zF>ihEft32xGII7`LKkQ@I8+qIp zxa>i%;LJTb4dqAwfH(K&6ujvxry-tPxnIE}P7U$ocnl|Gu0t-yrPo l`3`1u6|WEM|BLbWW9xOTWqPO@*h4*2_FCe diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds index 2724636bc6549e9393cc12a7e2fe42b90a81e3f9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 6516 zcmbW5U5Hgx7>2*S&pF%qIWtZ%7L$r~WrWfE6eUs3_)Anujv@$gFdQM8bWjr%0`Dq< z>ZS`zFz6zJqKksM3xcA+AcHQ1f^G^T`lE{wqUn9tTJPFtpW|L*b3~r;+xyw;U2CsB z-}YExxixG3#U4hQ>X9iES^5q zIlOCf`rypcqOh&a)>M zI>(PKp0VZ)W~;txK9aiXfX{l?iqYK0YzuQ_uOiSn@Y61S8|vb@N~)c1u4BD(ot<%? zyZ!v~pUsB8u%U@!$G*9T_h3$(S4e;>lnL@hv%wdzB1s}2thj>9%l}^C3eN96uy6a$ zRb1gWvypdgV4~PPw?Fvd4)_^_Jz!s9r0r&{wI!F2W4EF%;&}fGXb-)Ean|GZ&XgQ| z0DA~^5yzcB==Y!>f7}MvVh`F+HtzP~EbjPi@Mc|(+Vit5{(P7FO2~bs{`y(dpPyqr zczx2A>(5u7<^_L#^FoITB*Z8|6J=VpPpPx4y!1xX95pfVc>mus4<2QGEulZ+5daR2n-+u94 z_F74Ltcxk1Ig8(YesK+Itc$28^V4H~kskAlDW5s%F~3NUbur~LXX|;NUo574ei8L# zetOI=(qn!xqy zT*1#j^1j$O?0pgSQ<PmlQ{;W0mb$Ar(E^q4;qo~w)3@1N*+Ki`D+!m!CfKN5W(Nn)i>2&z$s_KN7yHi;3}h z9{V2s$gAGZ#A^TR8=rljzNq&Gv8Vr6e9n^|=P&BLL0rjaZu*hP&FeD1V>m|vvFx|s5r zKlc62ejc&!U-tV5$7`QI=A_U3k?>qyO!&-6kNG3vxw=^OpX=^FIMaPv-<2G>)&DHw zU;X*j|1P2L;s4mpv68MYqb}ljt=~9{t517B@*93UZ!d=NMdYE+T#k!rKaLx6 zL@)R_UYkF|Jn838b`iN;01SSQk^i zedE3E`%8~?G3DpyywB$Y=lSOZKI`*U#O*z*K&&Isa-N z%FUX)jz8}5xBc@q>%Kw0zwbNviSzut?!TAh_m1uNY!u%hAJ{g(e;>aD_IHsFThsmn D&(gg? diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds index f8929711976016b0624e8d08a96fbc921bb89520..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 5720 zcmbuDOK4qH6o%J%-WyG8gj9)k)PeYjnxqk1d?n4Jw7xJ&u?TYUl}U?+S_&2g2O^k( z6A`Vg4=5rCI&$Dd2M!$BiBKUTr~^Atd?7+bG5-JBd)>27a_`PfyrukMo&D{#_S$Q& z^N>#$6r$Wdn_%VKJv`y?vd8w)2S=91$L<+f8ofniFe~nyeCgJ^KY#DHz0)7x{Lblz7G!4;@lbBoL*5iAx21AY z%I&EP$nZdhuwN8Om!Y2o`hmBbE=zv7i197u2R;7-xNk)o^OfcgfQQ`_*F%0<`C-Qw zs~9_sz+MgXGZD3$4tM9%vyRL51`1B?rgeTMjKBC4dv^~0zp6C73;tm@#q}`$8lOJu zxa?%5>3v{fH|@y#^=s~TiDYw#-}FbY+!NDX9sFDVE;z3IFi>y>?WUgZcl$ppLA>|sjz3sPuOepti<;$RrU|s zP3t|U#utA&zI;1SaB4S=@Qt&MYu+0uIJKKb`1F+HGSnc~p$bmzrV&2h@3{Q;K*6cq zG{TpUIiHPff&Pq*pxxBhr{CXN{_?*aSG*f2IJKKb`0N$O<#z-MPVJ@e$+7-T$w;|ug}V3ju+F9kbm@kF&&HZ>0$5R6!DN}T&joTeA}=0 z-{w4z>s{k7u0@>S^x5AOajV^Q1D^5gJAx_vl4l&Mk@!3LZ*!iH#jo!gh&vx}>rh49 zYB!C<&vA^OTwCE+?WU3VJNak)As>rBL7g%G`tD?kxYceNiJ#*bx4vVU!oS*0Bk_0g z&-g<=8vo|+KRAEU`_IF*^L?Yw4_>=8Pf*4uu$!)luf`|eIWGIBQe7YHrZGNy*>T1D zm6D^~G{zUVJFbDfVf<8bw428G67Q|#`Yx@M9POqt9`6S0>WduhrZGN!-tpo2B1gMv zjL&a!eAr*e(QX>!3p^X)y7p&NawLgK^{^*r{wLf`{`PcdfXY&}R^$*@(@9Ljx=Kpm( zV$yXWRtL84?R|9n+LgDu>E-FU;{HlRJeCXfFQ&xS&;! diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds index d36481549040af4b2f232e921a4684570d43d588..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7344 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 VpL>p-J$Hsb(n+h>Hrv4<{2yo{pcw!F diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds index 975fec49b3877da7866de38f9c82312f848953c3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7800 zcmbuEO{i5>6vy{H=iGBY-pdqTg&!lESXn(kDy0wK^W%wHNzW%m5tpKDkd&DSN`X-X zIcSuiWmpMC4H`8Ff(8w&K~5S3Mvx71U=&42M$zm4Uu&;>_BrpKt=_K0|MlPJclO$Q zuf6s;_qyCAE_F*9iJNi_{Ntxl`g>)PKmYWB6|2U3yPoLn+1u;w-PL<$*OU8t<16;B z>FwUXulLy0`0Wpl?^(U_-tj#vZgXxdZQe8a+8x_Yeem1bji287&RY-9xFyX<5BZh$ zkhPu5uS(oOm(NSwe7Aglim+dDE;$7KBG6ObH$CLC1gSd5jW4_x}~_$$AO-APJGj)^?Y(zxpX>EaN?Ur z_|AIey4^s*iElcHAJh0di!e{8G0v5RChNe%H%0s0@q0dbT)FgMq2%bB#`xyv%H`h{ zN{+s1h2I#?f9Da5dpqL&Jm8PEG2qch<5Y=Ux;wvYk6LbDq% z1Mp4J9%ev^cc&5Q2Ioe;EOho+uIB8lDca}qmO)q0|24W}(f^Iyv059p$~fizen)G3 zen-1=x}!%>L%6F)W+cu_Uf;T?*S9XluWu~Z`^!9>@$+y-#~X_$JFfT7j$h*bnclzi zzFtpt7wYfd@Ym;<7mk;DIoBt@>h;vv^){c43BA5CQN%xJeK?Qld!_Z?5bogoL$o7* zS~~*$1##0iE$2^(Z%!)L{5eo?;+sbJY_sm%%vTW6zmWU%P0JOa)PHhJd5(dVNEDp- zrV+k*LAm@ypy0$ejqncRX1|Rifr1m?G{Ps(Y0T;3KrwIPn?~j@J)>Oqa-iVEH;wRJ zUqMH(-W-Q0;uhaD5`X6bHL2!HI7g;X4O(+}-N~#kj>cjf}s& zK)Lp3fr1m?bP#X#6Z( zEA&m_hxNV0a~;WXT}{c+H;wV!N94G#Ov%wVjq%(^M2>aIlpK9i;|Hy8Sbv9U=lOx>h}!kF`ccjQNd4$Z{kQyGhjILX zeAroN#<_)WiuSPo^`-OUgyu#Ib0X&m75j$k-PiK|De*(p&k{dG{V(xD)c+Dc#Q9a? z`J~HvOOc;_#r%nH8kxWJPvx?A0|h6(X@qZXQ;ze%{zbuwZyMo;I6q3`AL9Hd@k5*+ zCBB1w%yIJ#rmq;c_@5GOylC)aia+P>Kfiw) zU!xUokMbtyHTe$b1$=x!PS8Jn#_!u} z=U=Wv+`^ew_*ndd`e*#&n?~Z7Z+;MW_bVL-m2uNIjm^JYhq#3^t?;q<2ldbR#W(fw z`{x(b&*J&DbrE}|{C=tRHK%QwGQzFL3jllSeleCx3C)%r)Dyl=1NJ8P7$ z)*t%heS64HhVKuo75q=0L%gEih-ZrST3*%-TzKA+lW(xS#&}sb@Zot!K71aC@v?5< z!}ErGcpk_2?l~Rn$k{^4(>IOrvhL_VJTJ(F=V^?Wbpt=Af7V;Z0gdsJH{ip1PcA$U zWBmW^U-l>ZpOZh_zlg)P*XECLmPeL1^vV17THf-`^2qXrK6&3>%lGq+zocLs{k&PG zyl=1NE$=K3Y~AUzf8SoqTi)0@+Pcvv@7rtn{<>?P6weW;<>Y;PEid(rat{avJi??3PkKM%hk?OeZOW|}_&X%%ciGxr}!U?j@` diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds index c7b17d400c69908ac84f6d531c28705b2b273fc8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 9464 zcmbuFU5Hgx6vy{HU-x4sQy2?JAHsSNu^K-rC8?QFN7PapM~b2@X4*qjjV6LZ5m*oT z5JX8?hJ{pA5EVf|o4@O{MP)S5a(X{@1?f>29+W zI%}PKuO>5*iOr%)WX4QI{^6%mc)cRZo_OTo@|8o)Jr6af_BEUP_B0>cvwMGYX!(KF z&B+7%n>)vbZoYeHYW1o+hNhO^WXwRE-Zt{wEnB{P=eITMKfCdb*Y2G#i_(CHtXB_7 z&6w&HhnZ50|9Qte{J=g$6w&GO# z;9#eQc*I#*tns(>g2rE=E-sHBe!#(hONFy`YJkT&!D0O^70%kJ-FSEY_3MP2Bm5Gt z@$bm18uUK~^c4~0_r{J=g?|*?$raOzmaeZ*`*;3)Gof_b=PHlk{1u4hHkE|d4=4s3c&rJ}-4mGRCKaJ)Gqk*+hQ?<=pIOa@mQT3TN%q8F<7Eo{G4^Q)h}F9O9;eL;Tbbk8{Ghaegh8xUHQU zh(FpZdoB4FFZ7DMft?!4pZKhD$ziYHV5f%ohIA0DyHE0+igm+I4Xq#Zux{`zm33P? zHL(8rUCPz}&Z%(LP7UzYlgicZ%&BnJPMv|ry1`SiZt&F5`Vl8M#7_kWJ2l83)N^ZG z>lNo#7dtg{ezkeZ)jszM4t8o+p8XGX?`1i!5wGbFvKFyZW!%=E`P%=aes=GFuD@%2 zb=SvzAobkdA5`=OTi=|r-go1XN8pfORPZ)GorZYa$KY^(Q^DK&+i8eL9RY{>LIrQ@ zi_;K~JOGFMpn|vg;WWe}55XZnso-sXIt}rt&El_uW9=?^Y?b)4-3D;E6yeoJ5|Q>{Ai*7pHTnROVF51y3s@bFYva{vhPx*?pZsvSpPbB`0t_r6?p71>V6OXyMu@S9{P8IM;?Rk z;rXS5NBliJKNWbqQ$zm7a(_~7-in&GxZTyq@`X^n%{`9}(HTh6qQ{}JD`swO#MLzj4D`XEJ^qM>+IU#nc zj0gGnALXg!sA3QD?f%Ut>c6D{|M-*>d@|Q7{K8HR#gBQ28$6X9H57k0|A^b#se$;@ zB^q~n$}9ZBP7TG6d59Z4l^it`e>eY#-`c5x__Oac?&_ph_=TMsiXZb3H+U*JYAF70 z{t>^mQv>nWp3%7LgI?hmc4{bo%tPGZspP1k_`CT>{MJql#NUwIm-tNMv{(3rof?WC z^AI<9DmiK>{%-yezqM0c{PX2l33qT4k11pk0{>PpgvK> zURq!9KB&j{M}_#hJpbNbsK3|izDHZVB2FWAYTN!7_{uruu=hAeC^*=uAs(O7gG=A@ z3J!K^h)>rlSG~t8IM}HnKD(e?J@X0EpN#`#J33 z-FPW)&rP^|zXO+l9tioj=O%o<-+<5e;}G9CuW|RC^9mkzYKXVzF8=fV0$jeIhIo5! z!gu)3^@9*^^G5i5y@&sNKMe8z*T20##eYZs$o-2r+<58vlVct+Z(s-S#!GqT9rK8J z!#s53rF<*zPU-o#@@9$pcjKiz^NxAIbB7)AyYW( zQp>@+@lxK_H{n|Q;MNU0csE|o weto_fw%_31+VOvO797LRtNOiUMLsW0M$H`g26xBk_K9(P39D7GDw>%807nH04gdfE diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds index 4b8d694dbb12de29b556763593a0f71d23fa0a37..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11256 zcmcJVO{iU07037eIOpE`-m@m~qNFW2sFWa4lhoF*XrG^7y6e zoZne{@3r?n`zANlX_!Xo#=$V1OauFmpF!u(hlcehKK#hRTMlep_~6#X2e-B!ys-7r z3m%hT>4{ts2@IzbgJ9*%?cO1NU+pYH;xOni^lr~4zTaJGAji-O{-9O)c;@Q`K z^K0)qmu{?r4E3rR#?zGQmkraSslINQcBTEhM%L`lr8K$2_>&gDSmNRxX}mk7@kaJf zrur55^(zOdO7->hf8&Pg$SwZ!hP1(R>vQ(IKdtSpPnRz*XLTQ0Lp=rVJR7%y4 zQ(8OSu>MC%#6`Ql=x^p8%q;)t@7Wjeh>I5Q^~r-b`cgyX6(hg;cJ}H&HN+z>%AZ-t zDvr;peE(%)k?koVYqYYnSS>#xN{yWZ;$AIsk8 zOhY{4V&qp>vRD78As%rt@;%S*Y^*GQRaifr^NSYmZNK-^Jo=9h@ra9&@9i{?_Txi5 z;^I=j%(v>2_4}~h`+URtS@SI}+V#cu7k~Ib_C^;Q;t>}k|G${;dHyK>>hrzhuQK1u zdhhtNSLc4O?Q2NCiHqC%f1*AAtE=XH-tK+8VRe&@zr{tn-X8ysKYS{CquU$e5f>wW z_U`P>{?ZVSxET4K=LMVpmcJ^jKalf_7VmAp_tQN3j}PΠ?f`G>`Vm3yczHsZLAiqEot0j&JCCQd z{>z3}KW1+si;H%BaRiG$wAbzA*S2$PHJsWTfVgPa-7he-E{>e+% zcK^D)%^08cbMgIy{ds)6u9r()FX!>uV~@x)@HNA#H4Zh59agKK-0t z>^%Q?dk0E?u$A+3tNY^(>yOx&TU@m3?e=y2HFhfV*T3HokGL55V!xAM0~GnVdPUMJnARndtD17pE}`D zKM~*SS{V7%36J`T_+Hn-$ftgMZlQi6dpB{>;=T1F&+xA~zc~7O&M#WL*QcL&^k2jy zE=E4%jK}zkc*MoXClCE5zevBmU4>EqnJ46B{)pryE=KvekG%LI`Te{ZrY z+Tk?M<6_{~Hg0&6vn`tEaWU|5{nzfDv;F6My?6hZJ(9h(n_4vAR|kK(gV@mRki9&s`9ndf-Se-V$k82Ri|cwNxJ^L}Xl`G&JsnQw8?uDAVT|Ks_)<1)VWdIc7E*m%u_t(uZZXKw=nWqCwQzM5#QHOVdOJU@tD6NzR%yn$Y-Cx>nb&?;nMc&pP4U$NCXD{}C6ro&P%HPyO&#I6roL>V!}I#2wDB9iKYk zQ9lvi>sn~>-uX+N@Ti}N?{zJVeCmX^!smxh`>7K?^%KeObuEnYb06oH70!PP`8jvs zi<~=nuDI>|(edd&`Byl__V_rw0~LtxmWzC{q=8hyC?Q9Zj6J|+U;>M zXg~MSZoD}yugArp{mb&x{iq+Ypbq82M`_v$t`7Lp(9rH z_dnyH_xQe?zg+M2{rzX2>Y#D=_n+l2*L!_`|CsOlMR7J--}0;Onn#*9ng`{2fBq{?zp4Mc{}%WD z=j*+`zjw^jJk-3K&!arAdVS5C`8+K1PV=Z-@AWlrG!HfJ+UKFDe)O5&h52JK`d_Yl x{*8S8IO5-6deg#pR`))^&sX#JN(N7xe}B5pzJYZ9*x7Su_!?8*1t-RF`VY>pk+T2* diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds index 4ab700db7130c2bb9559cbdc66568d1832f92dcb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15032 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds index dab8d1d9c0349750c512ad832bffe3f0e0d5f41f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 10200 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds index 97fa4c9acbc1064a233f40600c60a9c49ab133cb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 19464 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 D7CrK+ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds index 75359b314b56aa306365e0cda25e6f4c50d00ee1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7850 zcmbuEU#O*38OGQC_w9X#Q8Y$lbS^|NP()|O=8tCK%$YHUQekGS5Ns1TbJM5?H9=7l zj53Kzl0dsCB&f@vE~3z@67i-xi7rf{2oglY8zH3Ux7K?0x4wP8Z;d)f4nODl*0a|8 zzU$Ao_CBEr<1h((M&odM80kNLMxFoPKW-lW=41PA+Pge^-*W4rxW3j&1r}3MYHSUi>n4fAnxkfojH}$-%?>7JBFUfCC&m_Moeb7IBPi;38`}Yd| zT$71zZq)tr6Uo2g-;;lCo*4F%Bl%DM*b=S$t>quvDS!Or56K(d?9JcnTXV;}kKQQw ztkx&Gnb&8Y|5X3%U%Zrj8-FS&U)0Ttf3lhO!u&wX(G!Yax~V<5eg5+Jv|IdF^Dn=- zLwf?LJ@_gbk=9bKlyg@O|LB|U)0TtfBNs_n>|-hzNniOKXLMICVq2tTZ-S5 zUY;M@;>Sn)CO+afYkuOyNBkx}bhGAPys5SDs&ap(C3A*u>iJ;&w3}-F@UN)4Mcu5_ zk9IS~kKb$*Ke{QsI)3wE@|*KtC%-9u(BJ$vrU_-RMn_)X$QH*4|7c8VK6@k8Q9H_sP8^M=o4 z-te2X`I}sse3L)7#D{L4&(FN$Ur}|#KQ$}$qaAg_Z&EjOvsS;@PIbdi{UCKiH(kH{ ze$x3{y?=F{_uRkI`R)5re*dh$zxv)kedCw+uk$@$D8-A$p*#Mj&OXkc0|lu&y4hF% zB7WW*>+i3=_s>v#YxlcO{mT2_Q2dM^@0Xdpw}{{DeSi6W_@>tF^XdFI=YPxRf2Q3$icJ&F=o__?ZXx7xS~Cd{H+m{^oPZ*ZixXd{H+m ze&S?*5WgAsg>-Xme{72%AMu;`;=0SM`H2%B@tgS3&6=Nk-1wi${h5}NAEy0j>iOXO z#e3x8PI{3hTo)a=w_{cw4-kLS5)1i zZdU5Ydw@E}`(-9^#P>sHZT-@YI^#EqBlepqeQ^G1N4@c{sQHY#S=qm|W1YtLTPE{} zZr09^ct2E}@qTE&rGM-FMP2gq!T5R3y2Ec$2XwQx{%A*>_)Y2%`^}VI9iMfFe?`>+ zKXr+$tUsPJ-}p_|9lE);{+=w~pWJ_WZ}UB+$$J;w^!t0KN~-&*&X3E-;Z$foJqokX zTrrY!=asYDcE7;Si(%)U+0lEX@e}{X&|Ixr9txk@-Q54+eP_-szxD8$<%18Ldn{Gu zllD6OO0Cy?mr7@y?<)UOUO(16|E4AHpNVu+&$rK2_Rn5RzUGOR_|Q%J^IcTqx1U9N z?#kWxHdQh1Qo8G##2fF*nVyTG{@1?i-PS*G(!Uw+SQ^)qUgrPx@~%frd}luXT1&nY zM>q9+(7(7U`S@E7{Xl%^=9>TBa;dOLRV$ca0(buQI!?oHpruVR}P=Rg@- z=N#ZZIes==tk~{8dg}DaBd2x9Tu_hP*gtZQhdu IGMk3~1N6-v-T(jq diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds index 846a45def0e99e46f18adddca0dfed8c77d88460..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7850 zcmbuEO~_rv9meN=oqOMq1}kYwOcrk1MXND+)g%_N`D_XOBp)b(UIdecrpb$mLQDm1 zx=AX=MOvs`w2MN!=(3Aq7hTmwp$IPG$D#&tqk>2gR}y@FGxMBt?wfPwt<9B}pLxza zGynhp%*>g4Zm7aAjKbEzFnliz^dFzW!v8N1t20lY+i~~y`H9EpD^JbmPo0>bI&u8$ zeEW`PcF#{fb9VmNkG3yAxMOAKy+7Q(vV3m{8%L7|_FmlegV+A_$$ba@cGn+%_wdoM zby66i`m!U8XCYKy8HR(Q+As{aggb5-DemPEhTjo?({TK1(oJ0-e>H?&|KzX9Z_e&X zep7n%f2|(>Tf?w1tY`euivFJMzdreeOrLg)zp;s*ao4>Og6VNhkH3(A%TNCJP3LVo z|E~C_SDN^9{|91y??~}Y52@eFAxz(GIQoYEE#1`hc71Q~k6urHb9_AcP3gV<$u8Az zNwxWRi@(>u(aoi@pIGtNR4(|*De_RipB%}5^!J8n?Y~m~v7PeAPyUd+(ap~MJ-;+Vl}Q+j)SDgI`C4GzY8)O(%vwRE9l{JcJHc6|B|AC>!O5Bgu~lh@xue!c52 z$KQ4T*cZ@EukVHRoBh*U(|w<9YKRZrw7)Mtt&w8=SM6_U{^ju}Dj)N=8aHHIbh9)* z^)HRz-haFDAAX$19cc~{2V`7y)8lvf<2qZl{_vrj_IK5f_)76F{iC^_$KT)He@Fk+ zSbDaNPd6OwQ6ADwU2m_y1%LJH(}&r+Srhq zpqsj0jGwtq{59W7@h_R%`u)U-kN9iK7j?7Xr_T7Oe@*$KZWjFHIhLRNYswdOa}EDQ z_aDDmss8v)>Am%f?XD+(l{x)$@|)6o{nVZNH~pX?_YK`F-9OrqH~yN+JL+a3f7+2Z zev`b>%~Jlco$|&{{*b)U%~Jl%6Y^*NnB9CyrXUw@~0hn<2T70-7MuF z+bM7S+`)&;FJC zX8c|yzbU=_eBakTUs6Zr747l^$B%!!JNawAm;7UMcfY@SL2cQezTKksg{Yg0`@=&1)CoWJt0`a9&4Qo$;iG;v z<%_ym@DnHZjrdLKj&811|H+G~erB~(v8b-5^xpXs+g(fkDsy@%`AzA)e)bRU6Z?lr z9O$O>qMvz!-(()delw*P{d_OPUsLlCzvf-y;`@<>`%gRa#BcJw5Z#ns9G^Plucc;#tsT;aksvqsB8-A1e#eOqO^`jki!(UT%i@I5;AML0cev`VPo2B~E zj=JHmsk%koEYy$Z0CkS%%S_^k&xg#?{G}ar#%~fw>^D<-@BOD8^~PUQ_cQ8dVgI5X z^E5u+GP#fFW@-P7=R?KG^NYA6uZenoQI~wZH-4@&@9>$_0o^RkKiUx|ev>-Helw*P z$7kN*ucOf=HK#pC9K~%+4rzCKJhn(>Q}1eu5jz->Sw1PKYnul^qJ%H z)2B|JOI7)QdmW!E^_tI8X|MBH<#XlrvhMR|4QKyRt)!c}e&fB${%S+=P1QO5Kz!(C z$T%tVedze}_4fFC+kW184zBC( zYQx!z;+Jmfdas}J4Ss%$F!7t_<4(~shvbmYw^mbgm9XP!A(2uor_#HC$ruXD^ zY~$8G(2i|kAK*MUyc9MlwqyH_96h}Es5Y6K>T&7SFVSOruc~9@H_*JUW}B<;6H;G9 OMZea~f`6*a#^DS8_54Tx diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds index de74f0acd42886cefb56c7fd8c64c4ad5197c5c4..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11114 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 h=x>5{YBe_x@ga*7Mo_G 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%0DpLWy@eNC&I+r^-MwBtVY^|6p~!!AbS z=jRxU)6YlZQ{{Xk9$a2O^o%olkvd=(&Azn$v?EURB6aY73(X$tnYZX`S{=|+7iTbk zxz2c_7kRIRT{Qdu&A*?otnREA+&50EyW7Q}{l#yBO7vcGL~MNd3Iu!l-_%il%eBxQ(8=p%lk`d_vGzuCRI*K++vi&xA)cCmXt?d)GB8(BAb zx<%8uT@3Wq*Rzgw$j{f%bZ!>|J#n&sBz|#lB*!mC`#082{IdV7X@1=<2L9P+qGSJA z({yeZ13mjpbnHKCn$GQFpr_8{P5njk#x6$rQ)hJ4Uqpvp+@$|(d;ib-1I`Wnom%AF zfnC)3Va>X=^RwMQ*ALUFRK0v)etUg5Ak_8t?iy1z0GWV{5vw^OP0@} zbltA%j=OF@b8hjeyU#4{y7SznysP+Md#&t^z)Roj%-%P=^u4b9FzU5)F4DQs;$S>@ zZzB%ww|QZ9QR7n1IigvwS-;RFmS6RpR(&z`G!!B;pf4Dub&LA%x7Kf7bJy+O9$rp6ESg)7o;rP! b4wpvsf_mg>@`8H|bF}xRogAkY**N_dY|lGA diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds index 1e6e9304411f34f45f9fd5ad9900de3a0e6c94eb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15684 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds index a60ab13b7a632d2128453a56ba72a412a8363c7c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15812 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 dvYKqG-$F=f{TJle@Bgam@43aYG diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds index d16e55ee03d468f54a4ef0d3821748a37da3b602..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 16068 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds index 682cf326bad4d8aea7e436a249dcbdf5f5dd67d9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 22276 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds index c98b3952e6c760faa05a30b78aa18c75d5e07990..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11210 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 J5B0yF{STe3OLPDL diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds index 98b5d0e49d97717abf423f5e635e7265e2e7f42b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11290 zcmcJVYp5Mp8HQ)yX7982IVG)WV>F6bQL(8_Qqn{u>d8fkw?dLqt=bJWmuhpfZ36ir zh~SSZ;tdsBLPZJfA1T#hE7*!vs!$awVikpIL8_I~f{LR4@O{>rchAf|GwU>!ZjqsxDP)|o8Nx>+yV(CKDx&pP@azfSGHw{-JcZaTC1%1zV52d5`*o=$H*JUxE+ z(5=%=n@?|_9zA{Q^oI9r+H&pYlUHqh_okDZw`bYf-rz0Ew{3gZBX>Rbrri%*@%1~d zJCJP{Bs}Ej>!H7xW%*J!+n?o^bhC|FzOIuEvixPlzxeXO+t!VDoc!kF<7{!mVCQuq zC)wBZvaI(d2_McbSf3v}b?n%g>B$pE&t&}zv+M<5ar9eV@h44J9K{&-WcdZ%Y)!Ti z|Eg@(dq%vcWPU8#O&t#rwdsdPqTXD1D(X$ytNQDM|FzNocq+eFs2HCvIX;(V*i9X8 z)yq@RcP}f6j-NTFUk?5^R{Yf+ zx7zzLUE{kYd%JWU*-ag<`d^_ReAAUdT&C$N7H)U_t_ur^`mgc3J@#FGmB#c)Hd>#*WBI_I z82@?cuhx8fe_da!&vE>`zH1%I@6@^9DLLG#86mr=*r6Wk9RL>Kh7GS(zAxAj#IzM z!|nO?{u#%G&S9J&I_#$PZR6*A zRMYW>dt9x*s`tpI{Kj92afN3n#RrKCyXp7}{jTags-{0m!$8po2mZi zJo*m3N#9{NQ~ejtQ~#r<{~>*k-AwgA&xOq2(czNBjonPe&w0#S^fPMS2D_P4D_g@q9?*F1Bd1E(I`Ewq5qn}ZE2fLZbpYzBYy-D8K%~bxJN8ad7 z@(6efM8_zUa2c z*L|PX-9PD^Zv74@c)AbiVTaItjai0I@-Y;tXIk=;YuTig9JpY=GqfZ?tfBPS4sFu1} zt^VXmf0MUKUt>4j-%Wbf5%ovh<1EN{dfh3Gx6Tjh=lR!`pW|;jUafCaeB5V{(V2`pIx{u?3){8+ZdI;NR``VejosYZo_`o; z`Dgs_5AloLO!@EL9sTz9RVcr~ZYKP9Pb*f9ANS=MHEzLfCdQBRh#S30+}O=j{NsnB z-^q;?%5SintN5pH@Nd#LA+Ca{{-Ms~P2Fdd-(WWr{^@V}F5Eu~(s$U+)cQr7%s=9v zQS&a?&BXlUJp7|K@r&I|`R}|s=H2;Og~~hF%|!m3$GD?68F%bvYW(vDv~Ti5X>TaG zbd$zIc2mb&=P!O3cl?`-e~7DKYWz8mx}%>_bq{tkQGd>(?&wYGj@?YvfAIR4_u!W$ z$s4P{+p9KvoQZn*<0(!I)#q)%S4CWOzDYpa!m0mesghMjNg>K)j#8m zj`26qg}x}bn!fX3)SKNSQE$rL>YwK$`gXjwBz=qBO!Y74(Rb)g`Y&9!V5u=QhTB+@C z)boGi9d3~D>FlEQ`LPoR4;`JJy5-RH#PPXrmCpOBgX1s8ReQI+7*`G7Rkc>&;#plQ z`*M0O^S(yo@yfo#Xr|YK=bc@^}+W_vi~-a-PG}weeHd_AH?&9kCqJkb+Vh@ zw`=mBKNkHCKUEUH*iHLy%WrPqLmg7qr(s{EcAWRxl)k#J(-i;t>>IV|z29Pbzs2;v zOH=+0`zE#g8um4Hyd3|&#)%)}XNLV+*-hD7$DjQ<;y#ak(OP^B`&PB%4g03G_`N^) zeD+P7>esL@R=a-h+9E%#-62obaP`kTn`jo~@PewlKu?;FQ&6N~vDj_dDoL0^z>5`(^=zfCOe3;K3# z_U%&6_p6`K?L^kVh3{AI3(Y8d_r;)xTtVL08k43cA|v Peam~_TlDr&>}UT2ql~7Ti_)Cr*d~F1 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 Ue5rt|9Xz~p=xw352Vl?r4|%3yb^rhX diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds index 2deec9f4e9c5faae2c234b742c7c01a95e6aed74..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 14778 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 X*9}g@`yV6MC!yWWHG79<;D_`dLc;uC diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds index e5a6bc9c804604a6a5f762ab81c7f7692ea4085c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 241710 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

!W)AG$PTqfUK^mO)*SufvQG)lgC%=+vf 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

(Kol0*OR$f<{$m<@Bh-rqi^ET zH7GWhiC@2M{Lzj@In_02Mm*N;cv#G`8_pZ*0G==#kI$E$CadF7GWhh*e?on8Q~7y3=4P44>&K&S;?XsePiNyL>YL|J zRNpM~*vF%9;?XygPyf70>Nh^A{(0u4+{dHeSUmdpmBFX~wesI7zW(Nh&FY(F9Ie(=bZBM#$12n)9RmNPRV^d`i;e-k6#&l z`e#3*zPWyj`evEO>&K&S;?XsePk-H&>YHazRo^W0*vF%9;?XygPyeiG>Nh^C{#oX< z+{dHeSUmdpmBFWf#&hbMXI`bgS?2Nj@#vd)bj{?`KmBU;%`>K}Z z|J51lH$JcaSIrr@k4L|;c=YirgHQjo7t}Y`UZcKQ=JERR=$m+S&E(TxQ-0o@KmX=w zgX)`Q9{YIoO+5N$^68&CQ~kyl)j!ponfrM38;eIDzcTpr>+i`f*Ke-APJOe?3`)F z_03f`sBe~eyna0TCLUcg`Se%bsJ{7?+3K5R9{YIoO+5N$^67thj{1$Ss{dtkPVVE; zZ!8{t{L0|d|I%yfn=5Wo-z@WZ{dn|EJi2D`>7RJB`sSDBs&AHg?Bmfl@#ve$r+>mc z^&4MT{{(Yh?&HyKEFOLQ%HY#K{tflb<=<4_Ec1B%c=Sy?x@Pj}FS|v3^Z5Ddn`IvR zc=Sy?`eyR!AGbjL#y8bJ&RmfDc=Q{KM<2g3`1Ft6roOrKR`ty?kJpb!-^8P9CZGP2 zZ>et{yHI_z%wr#qzKKWQOg{ZDE>geoE%m=>F3Np8`i;e-k6#&l`d@fkeRJ_`>YHUA zuOE-TiAUE=KK(_vt8ac`vHE72$37l?6OX=`eEP>MQNQsW^^Y-^}eh+v(uO7=h_VMVO`1H->(>ZFH`i<|Z zf0Vf__wndA7LPuDW$@`AxkG(({+;TZWgf2|kG_dV*GxYBdEZvwJaW1EW|_x69(@y! zzL|XbpFdIk#`o0!ym?~oXcd2iddAxo+`X(M-Gx_xA+^xR( zxfSZ0Wgh!@^i4eaX7cGDu~PlUUFsiUuFQQr`i;e-k6#&l`iH--zB&6l>YHUAuOE-T ziAUE=KK)tusBa#=N`14;V;_&ciAUc|KK;W^R=@EB^$#;o&V4-kjm4vnUm1M*hkU5M zdFZ|Bn`IuaACJC?N7qa~{h9ZvZyvH*eY4DCACJC?N8e07{m-sZzi~+Y&zfs;ACG=x z@#y1M2A}@mF!dY1tNx%lEcfx~Hx`dBer53K&$wTG^D}GJH_JS}{&@6FJi2D`=^uQ$ z`sR$`>YHUA`*`$CJo;wx=}#Y_e&Yk`Pd7*8J|6wX;?c*i3_ks752|mLpO>lM|CnVS zuOE-TiAUE=KK%pNsc%jjslHj}v5!aJ#G`K}pZ?TQ>Nh^5{#0{R?&HyKEFOLQ%HY$V z^04~m0qfN_%RF8`9(@y!u9;$&#FJt zoR<4|^c#yuAHOpA^hZ3WzPZO$>YHUAuOE-TiAUE=KKkU4666V;_&ciAUc| zKK;?7B-L6sJEc1B%c=Sy?x@Pj}4_vFhIc!jU zv&>^3kG_dV-|Y5>hISP1in4G1i*g=~5B26|=lAbJLqFeN-p@-9zp{9BZU&$J<>lw} z=$l*0K0R}@dw*9QJh~-m{l?Y<`o!`H!gGaxyc=YirgHQkb zC)77Lm7gbNZg%hQ>iBr{O+310^66~6M1Ax8iRzo(`@8Dk(Kqqvo5`nt-X!%KpH%-m zv-A6Rb@1pn7LPuDW$@{L?J4!m4V%?ByZ3i>d_4Ll9$ho}^v}Iaee-LR)i=BMch$k8 zZ{pE6lTZJgDe5;qt^PS?=lAdG;L&d^9)0}E;L|_*8THNeThuqZ_jh%CJo+XcT{HRg z*IlW;dG=KG&F=kOb@1q$c=XNW(?4sP`i;-3f0o(#{kuAN^c#yuAHOpA^v`%see=w# z)Hl2LcXfO``X(M-Gx_vSzgm6sjOpr|-TS-h;L$hn=$px>|J51lH$JcaSIy4v-_^mR z-&j2Q_?5w@f7%P`n`^I8-|XJs)$#G@n|O51P+<;UsV58b7t4yKh(ja-&j2Q_?5w@&+lpHzyIdy>(n>9_jh%CJo+XcT{HRgPrhD# z^OQr?H@o+D)xo20;?XygPyeJ@>Nmcu{z>Mn{QBe3Z!8{t{L0|d|H>=so2zb6-|XJs z)$#G@n|O51a6`eyh3t~z-1O+5N$^68&2PyNQ% z)jz?UmtTK8`i;e-k6#&l`p3VazPbFH>YLsByE;A|eG`wanSA=oZc*Pne!lu<_x`Rr zc=Sy?`eyR!AGbjL#y8bJ&RmdRe?0n)#iNg38GQQ3Zd2b}daL?o_x`Sqk4N9cqiZIg z{*rI0Zyvi)ee?e#?LENktjqlUNkWndA%qY@2q8cSA(SM*(0dO<3%yG3y$oPO>}Bj- z5!7|nb&Kn|j?22Ni!35Ch={1DARtwx!w{O3`91gd^M1ZB`@eqglmCz1>)Pwyea^Yx z`#tBpNoLMGbLigRRR@p0iAUeeeEPfYq<-a})!)_JDS!U)=vRhEAHOj1>F@lA`sOa5 zRp0F1-_`N)=$m+S&CI92)92MUciu&PvwMG69X$Fb9(^F>Ck`jwBVzoWTZ{`}+7 zuMCeqeqrL%=X2uu`p4Yii|U)*`@1?m9(@y!u9^AtxBHU%CZA(p&Z}Yf{;oQB^i6#F zX6Dn`b}#iSpHhEYbFcjQ$D>~v9)0}6#HYXYGwPe$T&2F*y}zsDwef+}2r{DLS`sNmYqrTa_ zzpLZp(Kqqvnwd|3^S@Q!?AuR$vwMG69X$Fb9(^2G#``js!JznOVJ{`}+7uMCeq zeqrL%U;L8#=BD3J-|XJs)$#G@n|O51%%{KT@6_By}zpt9(@y!zM1*-7apvB z<;&_XG!M?7e?0n?;nBx0OnmwqzpB2u$=|DQcJJ@%_;~b9Ji2D))8FVH)i*ajRDH91 ze^(tm`X(NIGxO;DwThSVz0O3=b!4}(XR}TK7L{1(_b(~{mO5vyTBZi z_wndghDR5_F!AZn|Bm|R21lxIcJJ@%_;~b9Ji2D)(_jB+_09R?)Hl2Lch$k8Z{pE6 zGoSvv@#wef+}2r$6_5>YIFyK67*K_wqg-eG`wanfY|qJx+ad z?nL#??)_bL@aUU(^v%qtzs@A}E5EP)I_9MO@#E32439p3VdB%DbG7>B+9#-QcJJ@% z_;~b9Ji2D)(_iZ(_02hx)i=BMch$k8Z{pE6GoSwKDe71LK>gX~l>GU}qhA>wef+}2 zr$6f&_02U;QQz#|-_`N)=$m+S&CI92#%b!Cv!<$VcJJ@1gGb-Qqi<$D{h8C$ul%9< zGtFuF^N&ZrGCcbDg^5pp#%N53*W`uK&3Pk-9=>YJ;cqrTa_zpLZp(Kqqvnwd|3 zmGjg$r_EH~?B3s12ampqN8ikR`cr4AUwMQ2Q_bY(_jK^+SB6*SX5!PIa-;g@$``0_ zcJJ@1gGb-Qqi<$D{gp0K-<&dAeY1OiR~iBr{O+310=F?x{ZR(rj=c#XY z@9(OEN8iMwZ)QIIar4!$yiNUa=KTEm$D>~v9)0}6#HT;zcJ{4jz3IkGYxoKfR-;=gRo=d(*pGUKM|SnVVPM-2MCyZzON{ z*Ddjwo0)%e>@L&)S?nyEc+Abr|5@x_`ykExe8kl&@&CI_&es==zSMfU&CLVJ$ z^M4h;`+@iC_?-_EkGYxoznLTNH}ShF_z;h|nfZ5IB=5KJJ2&_ckGYxozr9i3?=EPG z$K1^P-_Mfw`}kca`Vfz~nfZ5~C-1KKoh^Kb$K1^PyRMh_hjUuuF*h^+?iup#zOE%6 zb2IbrIZNKX(_7*(H#7gc+Abr|I^j-{(M49JmzNR|7DWAzkI(X z9&`g84n46jZ_;`7bf43zbb2IawI9lG5<67b|H#7gq z@5p=V$d-7_&CGv#jJ&76-4c(vnfcEgF7KJqmUzs~%pdtjdCwl&5|6o=`Om&8Z`t3s z#A9w|{&NS*d+z0yc+AbrfBx^}y>MVlJmzNRzwna07r)UGkGYxoFC8H7r59S_F*h^+ zuYW7=<^5XXF*h^+<>%zR@;5EOS&beYPbYb2IZ_`-;5Ly<6fjH#2|q8NB$~ z_o|k7%*}2;zDC|l-k7IaUUjkNX6BFml05!99-IfnV{T?X|J@Hf{(BuJ9&V{T^tw5{Y# z`(sNy=4R%v`eAv~w`hsS+|2yx_sCoALoM-`o0&gjb9poV&=QZinfa@KK;FzvTjDV{ zGk@lt^5VboTmJk)JmzNR&srpJ*6&*4F*h@R&G*Qgy-7y~)T&CFl>a(U}4Xo<(%%=~q3m$&X^E%BI}nLl^Fyt%iv#A9w|{(5hdH*a1` zJmzNR&%0IL`fq88$K1^P`E%vXzojJ}b2IZdxK!SPbz0&vH#2|1&GI%3C+^n+@tB*L zztJ3d8{O0rkGYxo8($=Eli4ltn46iu$&KA*T~!Ul$LnR&CK6!ioET9&=QZinfcqFByWew zE%BI}nZLu;@^(C-B_4A#^LLsgZ>R6K#A9w|{?5nA+ht-)JmzM%&->KzUfGX%|GMQ} z=W1@=`Qz;UYk9-JZizR%QM`xNF!OJY_ulFMEZ%cB@tB*L|Fihn0p2a~GXoQkxtaMt zkDq!n-Yg=49eAH#7g2@v}3$U&hbM zOg!dh=HDJa`@{QH{LIh9V{T^tui`ydykE!nj3yp)GxL8lN8WGZXRY`UkGYxocU&az zxA8M$e2B-~%>3WpDDQU{w8Ud>X8!MI$@~2cE%BI}nSbYb^6rYA1I{1fF*h^+uIuIf z;hdIu%+1WddxpHbuWO0N+|2xY&XRZU^p<$c&CI{|T6upwqa_}5GxP78ChxuNx5Q&^X8tpW%X?4lbf%+1XI>)*X&@tB*LKkf;6 zD}1pf9&V{T^tw5{Y#`(sNy=4R%v`eAv~w`hsS+|2yx_sCoALoM-`o0&gjb9poV&=QZi znfa@KK;FzvTjDV{Gk@lt^454?OFZUg=FeIrZ`SWx;xRWff6e#Eo4rX(JmzNR&%Q(6 zTJLI!$K1^PIUC8F^Xry)%+1VS`*L~fENF?x+|2xSZkM<2Wi9cTo0&g%zP!1&wZvm? zX8w9_lQ(Z(OFZUg=FhuT-uiE8iO1Z`{P}a`&A+839&$cn_A*AH#2|Zi{x!GyCoiTGxImOQQpD}TH-M`Gk?)6d5dmniO1Z` z{KeAX6A1-P2N^NY>CI*%>1oSlef*(mUzs~%-`l3dE1`S5|6o=`P)sAx7`m~;xRWf zfBTcANH;&buYEipIa_Kx3w*8RTl1^MO|ch%gCdFp?Dclni%%m2K&d+vYsN%`jI zu8?oWJnetxO8Mqz_mpqOJoP`lM1JMd@;_}Z$^B1`$TvUrW%*{z)BY#ED&PEMzkD<1 zssHhP%Qru|zkD<1ssG`n@+)7I|6y}!?tkd7 z^3B0-$~R-4_CNS7`R0cXl5fU5^*?Zk{K{A4f51E>_uu!LeDnSPAm5C6+JEmq$v5A3 zn0zzlssElM@%72yr4s$~8zkNu)dD*e@&6ubCw;eCve0#5aGv=xP))nPf{+s-_nk(l1 zoBv(D`IZyqn=w!Om!2%&eDg~3&6ubDB`eFX{15q;m@DW0z<^R$2P2j!cGY$o4~dFmh3C%^J;`3ISOxxe&Y`R0Lx^39m1 z{R2KC-(0$-d^6^$zyH?qEANxPzqxhp@B4s!bH9(tH)Edm_xXf;bKh;{n=w!Q{_W*g zJ|w^2+&=f0{7JsK_ow8WF;Dw@eMY{yWJmdC%u|2Qo#j{lMgE@V&bhz)qw>u?J}2Ld zdD`FY3-Zm~ca?9(JoR_oU4G@`@^>|N&;6aBlyB~Gg?uySX@93H<(oV2Dc_8F>hHKj ze&y5hcQlve{`MpC%^kih-;8g)2&t@oF2#ys`6Tq?ivMfqErOLM>Puky_;zA4{~dD`FnTk_4mgXEhrPyNjf zkze_W{LRcma)0q_^36^ELB1LDw7=+|)X3SH6!36o0|0;ihIU)Dw56L$-I99$H^R&PI z@$$|2z4FbNr~bSZ1{dHEBU-=*M z*D+Vl{W}7Vna6F$JngUaX8Gonb>*8ePyNa3$*=sm{K@8exj*R_^34_BD&LHG+V6e4d~?$J z^39m1{=^OBSN>A|M011OAO9=)=7e|1H)EdmS9qsdbK~3} z^IQ4m*muh}W1jZ;K>^pVIcA}JGvx@x?!R=eeDkk^^39m1{TDwX-+XCH`DV;h|AnpPSKcT8 z1#|1%f9?VK=JOwuZ^k_BFZ+ai^SN#1n=w!QXSbJM`H=i)&FyplnLo)lM?NLrjCtCB z`ZMy)XLgit#ys_(+F5?(U*tb!?wtEiJSyLO@^kXdn5X^6zaZayVpsWQ%v1ld-Q`z4 zF8?ue_uPNvN%`iZSI9SGp7#H8rF`>|J>{D*PyIhHkze_={6CvZa{u8G`R1R#EZ>ZI z+JES)^38|)<(n~2{Rj7zU%5>FgXX@ufB*CH%?G|F-;8+oedbE}=4bb8 zj@z(%|3>%w^b+}%Pd9V3^Ut5|_sJ3Y=BK`_x!Jvcqx*g0tMbiH_BY3E*u8(F`+a<0 z`IXC>x!L*WPxt%i^YYD)eNA(-d;doF`^eYjn;+f3Ic~%5{Ttoy!%O8?zSzvo&Od*; z--rGx-yHm==4SW)jqdlsZ^<`5bWn5LhTZ!&y59#5kze^rGdB;(|NOr1HTmZI|3SXl zy?>+oz4xEwo9{bJbF+K@M)!Nq5%SIV_B6+B*u8(F`@MUt{K|iB=H}S^@xSw5f1~?devEwcohxW=cJJTle(#tdzw%$3xj7*}|F;jxH!nL@zS+Hhqx-$>c=_hr zdo?$^_iuE+x2`C^^52@dxnh3)Z~k}r=37pbZ+7qB=zf=;EZ=+oop-i;^ZeB`H@o+5biZ>~mtXnc&D>l)KmW6TEZ;omT={1A{*CT;*7@?y zv)9nv?B2i8{mxude&tV^xw&S3{-^&`zIn!l^3Cr38{O};0r}?XYiVwF@89Ttr>-r( za=4kBYv<>G^3UX(r(7c6?B2i8{Z4wbeDmaWH8;EWZ*;#C*OOoQ^JZ?Ym!JRfzmRX9 z@K*U|_x_FUcih|Mo5!!Ox!Jvcqx&7Zf&9u}Hgj`>{QQskm3;F}?~reH@89TtN550P zdCZ2Io89|2y5CV7%dh-RGdDNR&;N+u$~TXEw|ujE|3>#a{JrwcBNl3IcJJTleupiV zU-|oHZZ6Kx|B$=nn}@z%zS+Hhqx&8FLHXt(n`v%#@89Tt2ldIXyt|p3efjw>y;r_@ z;Glf7d;doFJK!Vo&81svZg%hA=zjZeEx+=)!Z|=TpbKHjA`!~AZuDi>xe7u>P z%lZC)=O^WxyIdjP?B2i8{dT%izPaxw)M0|F?c#zPZiUf1~?tc8L7SSDLxG zobUe^zb4<@^dID#-TODX-=cq#Z!SJebF+K@M)zBIgnV;RPjlRc-TODX-zH<_SN?M| zH<$DM|3?2J-`w~p`DXY2jqbPMG4jogR?yt+-oMfP7EF*|`LE5~T+a9Z^M~Y{8yqX& z?B2i8{nkHTzB#{FbF+K@M)#YyqWsE#Yv$&1zW<;5@AA#{PLywU@89Tt>z*v%oV$|d zX7~P$?zhg$@+<$NnVZY`{(sJY$~V_ORleE1f1~@Yb-H|W&MKOl-TODX-|SW8SN>Ns zH<$DM|EwR$H`hEl4qd~?Pcnw#DGH@e^SHRV_Sq?wz``Tl>}Pvx7dUMSz}-oMfPRvD0QPFqWJ zvwQzW_nW%5{L0~GZZ7Bh|0zF{Z?1fae6xH1M)zCk&GOAD>uPRx@89Ttlh>19`SWIO zF6aCINxzV9uJ~5@X7~P$?$`Tv`R1hcH8;EWZ*;$j8_2KxWivOI^Zoz$U&%KoyhFa( zy?>+ot?*9y=J*XYH@o+5biZ*M%dh-RGdGv>{r{NX$~VWpTfW)7f1~^LyjQ+CW})V0 z_x=s{WA6t4b^LuZH`DL`S=$7jvmE8qO$F@gwrhm$ua0?B2i8{a)Bwe&v15+)Tg!kI(vhK)(6> z$K;#c`!~AZvQNl2pW9Y*vwQzW_j`7G`IQefb2I(^KR&ANPx8%?PsumC_iuE+r#~a# zd}c?@&F=jh-S4TL1C|BufaeNw*p=oRwK?)@9x?=M%%Hy_zkbF+K@M)&*k68V)+H*+)n{y#qJ zbws}Tr!UJlyZ3K&zlXjm-+Z`VbF+K@M)!MgU-^~Gnz@;N{~w>V`@DSffv?FoyZ3K& zzx%!}-@Jc+&CTxp8{O}ZOXXL-*v!rJ`~Uc?A566Yv+l9*D*eer_9Ys-S7WCc8R>l*M1$tD|0jP=?uhY1<^MzK0$qR;Oe}O zN8iMwZ)QIIi{i76=$ixaSxDu)8eVi#-p8YF;?p-XpU#ExSxxjS>`l4SMp9NOt=Cr(zN53*W`sbR7Pv`9TtTOuMIq_L$%+0f}&HH%tO+5N$ z=F>SVK5LD>dG>Vm&9lzR`*`$CJo;wl(?4^D`jywIf2KJj@8i+0439p3VdB$2{d)Dy zGtN=pJpKB-k4N9cqibe9{nO4<-#mS$`sQip<$XN*CLVn=^XZ>DOa03DEW$E3XXSl7 z`jz3)Kh;cpIw#+#zIn<8>YFFunD_DMn|Soi%%^|SMe3U;&sN_&>7u-kN8iMwZ)QII z6X&R3d6W7lnsf3#9{tMj=;IeAKKsUZytG>`sNY0=Y2f-CLUcg^XVUcx%%c23)D9czdY~b(Kqqvo0(7lu#MEO{I&Xr znH%MOJo=U4(Z?@LeENsnp}u+OyVN%ixg+o6(Kqqvnwd}k;PYMxC zllSrHn|O51%%{K4ht)Ut-9mkHpAYAKJo+XceKYgv_iv?sa2mu#cHx!1?@J|2A&kG`4t^!MCO{mKW` z-_zVK@8i+0439p3VdB%@{bBXZJwBp!XZ3eAcgp*C^ee-ok6)Ph^ml$leRG%3s&DT6NZ!YzZ{pE4GoSuW zpI6`9c^CD~oj#xU@#vd)^v%qtzvFJ|S3aixj^=K8ACG=zc=YiL6QBO}PpEJ1@J02_ z?Vrf|c=Sy?x@P9n-|kE5o7?Z9zPa6(@;)AY6OX=``SiElOa02H)ZfI8}-e;=kh)teG`wanfdfL|6BFVzWvlUH~-tb zk4N9cqi<$D{ml+gzw!n3H!}~&`*`##!=sO1nE3P;zofpo={M9j7r&JE@#vd)bj{4C zzv%DOHy0nMzPae{@;)AY6OX=``SceatbXOo>Mt}8&ii=uE5oCYUzqsxH-1%pbCbVU z-`x1sypKoU#G`9wKK+gUQGIjcL)AAo`p3MFN8iMwZ)QII4G&kpa#Z~d&BOCP9{tMj z=;IeAKK%t_)UW)u`U}i4c^{8{Wq5S)3lpFI{O_o5Zg8af=KSyEeLVUm9$ho@>92pZ z`sVy`>YM8yo%iwRn|Soi%%?wZy!w^jRezp2KJVkvuMCeqeqrL%pZh)a&Gp`-zB%`M zc^{9yiAUGWeERDir@lFNqWb2#$K`!I`X(NIGxO=MGfDl*@2kI#IVtbs(XR}TK7L{1 z)1Py-`sUgvsBg}>I`8ArH}UA2nNNSMlhiloOjh4q>!iGoN8iMwZ)QII*;CZ7{DJzj z%_(^wkA7u%^zjQ5pZ=_C)Hl~WMSXMDHF+P8zKKWI%zXN5oTk1xYpVL@8mHxbJo+Xc zeKYgv&zz=y=gc=Rj7qmN&h`1EI7tG>DV8S0xeuFd;+^i4dvX6Dmh?JV`p z8PnA_S34{3==csQ^yFTyZ z(Kqqvnwd|3mGjg$r_EH~T;;sHk4N9cqi<$D{i(Cmue?G1sphP_k4L{UJo@;BiBEsZ zjp~~#U!cA@<;J{^N8iMwYi2(El`c}>oHAQ|bES*&J|2A&kG`4t^e4|zzw##aC!2Hf zJ|6wb@aW?gCO-X1H>+>1c(MBCq?_|T9(@y!u9^AtdoNYroV1SmX78nWACJC?N8ikR z`V;4>UwMoA6V17KACG=zc=YiL6QBP0Th%uwyhVL;{H=K(kG_dV*UWtSE4)p8bNoE@ z%@y93_wnePc=XN8r$27K`jxk-KhB(=_wndghDRU2F!AY+xm|s8>}BekV{Xs;c=Sy? zx@P9n@3~xkbIbzu&7RBiJ|2A&kG|RM$Jav7cM|=EWzdZ+7qRs)I+@#G`L!KKiBr{O+310=F^Y;+|oDC zpQ^suy}zpt9(@y!zM1*-&z+`zYLsB zyE;A|eG`wanfdf%KezPFv!|-H>iKA+4=RmI(YOe!=sO1nE3Q#Kes%7^OOtJH@o+Db$mSfCLUcg^XbQaZt0sR z&sN{;-rrRRkG_dV-^_gaC(cp7@+S39G&{e3R|k)NWq9=Q3lpDy?B|xpZ=P_m`eyh3 zu8xmK-^8P9Wfq5g@#veGPyeX- z>Q~;T{!wP<*YE1!(XR}TK7L{1(~te!^7zdoFH_&_-rv>n@#vd)bj{4CAN#qbZyvEg zeY1OiR~ zd_4Ll9$ho@>BoL<>6?daqQ2R^zpD-&eG`wqnfde&TBLsE@6*CH!1t+dcJJ@%_;~b9Ji2D)(~te!(l?iGs=nF1zpD-&eG`wqnfdhh-(3C5 zKd8UIxq1Hl1xt;oz530YXxn2JJrU!d{#pH9 z&7Jb+ACG=zc=YiL6Q6$U=a$EB?($jn&F=kO9UqUriAUGWeEPAUTl(hCyQpt=@9(OE zN8iMwZ)QII9d}c|@-g*yGiBr{O+310=F^Y;+|oC<-dlaMdw*9QJo+XceKYgvZ@G{9mCvfbrMXZ3 z{NvHD439p3VdB$|{oL~S%`N^$eY1OiSI5VrZ{pE4GoOC!=a#B5GxLD_`NyMQ86JK7!o;T^`?=-uo11<^eY1OiSI5VrZ{pE4GoOC! z=a#;?_(1i|?)_bL@aUU(^v%qtzwlu7D_>TBp?Prr{NvHD439p3VdB$|{oL~S%}xGZ zeY1OiSI5VrZ{pE4GoOC!=a#;?@uBLQ-TS-h;L$hn=$n~Of5XGouN+l>L-X+b`NyMQ z86JK7!o;V)V2t{e-&TKtIVSJp(XR}TE`DL+(~te!^8A|{9I3w9y}zsD2NX zo76YE_jh%CJo+XcT{H9P$9`_fq5g@#veG zPk;6l^(%j%{%mtf{`}+7uMCeqeqrL%kNw>8_{}v>QQz#|-_`N)=$m+S&CI7C`?;lW z&YG&e*}cE34jz3IkG`4t^k+^}zw(Fb&ormy&p#gh%JAsp7bZUa*v~DG-(39+_08`6 zT^%2fzKKWI%zXN>pIiFojOpr|-TS-h;L$hn=$n~OfBFpdE3Z?3x;Z0%{_*HnhDRU2 zF!AZfer|dE=BnqYZ+7qR>iBr{O+310=F^Y;+|oCv%~ap)-rrRRkG_dV-^_gaQ)j7P zd4u{>&E)6zbnxg`hF9ih;?s})-17L%l`l}=?B3s12ampqN8ikR`mvu|`sS3`>YLsB zyXxT4H}UA3nNNT69Q7-2Qh&0U{QRB{9{tMj%G^wR`mvu|9>2Nb#p;{g`@8Dk(Kqqv zo0(5P_H#?$oV1SmX7~QCI(YO=Jo;wl)1Nq3{mNU^pJ>j_|Ng5rSQe&ucIk2B}z z&p#gh%JAsp7bZUa*v~DG-yD0H`eyh3u8xmK-^8P9W;=H?#V&;PhRlj{{n~C3Z zmAo-~y^i6PxtaKMc%PWQ$@|#M&6uw+EuNCz_#-uCY|rjJ6ILGEv#@93D&y3_qi^ET zH#46O?-SEEc^|u+SHqa6eLVUmK7BLu>F_=={mN(5=l$&F_Oy>jzcM`f_=S6SpFhXv zePa41?_)DJW1jZ$=$m+S&CI96`^5B3-p4NI)iCC1ACJC?Pv6XZI=oLzzw$Ztc|W_k zJ?-PsuMCeqe&K%I=g;wZpP0VM``FCQn5TU_`X(M-GxO>2J~4fh_p!@)HH>-M$D?oJ z(>F7p4(}7wuY5^;-p_7sPy2ZEE5oCYUwB~m`Ez{UC#G-mJ~neR=4l^~zKKWI%zQe$ zPfXwBee7~x4P&16@#vfQ^v%qt!~4YaD_>Qg_p_VZ(>@;k%JAsp7arPu{v4n8iRqiX zkImeSdD_RLZ{pE4GoKFc6Vo?&AG@4a!ofw&6uZsJo+XcT{H8? zM4$JG$HwC~=Z#n2jCtC}qi^ETH#46;?-SFn{GR%A&53y*kA7u%^zjQ5pFZys(>Hk^ zo4FbD^zq}-H}UA2nNNrJiRqiXk6q5IVa(G$9(@y^zM1)Sc%PVl<<;u*es*(v+Q*|` z86JK7!pYs|&+&Pmn7+yT*v!qCr+qy7CLUcg^Xc$DF@2NwvCDZijCtC}qi^EVH#46O z?-SFnyheTA&u(r{`*`##!=sO1IJNuyIX>?b(>Hk^o4FbDw2w#M#G`9wJ{{gCrf>2- zb~&$xF;Dw=^i6#FX6Do3ePa5R*Q(F^+0E@~ACG=zc=YiLr+1$}$LD=w`X=vVGdE+N z_VMVOcy!Ior^EZi^iAH!F6Y%S=4l^~zKKuY%zQe$PfWk^di8lfySY8>CkJ$D?oJ(KR!l4(}7wH+dhsoL9q` zr+qy7CO&;L^Xc$DG5yM$)#v@}=JvFYN53*W`uK(Gbe})R=Y3-OChuc2H)Edm@#vd) zbj{4C!~4YaP2R^Y=hZOgX&;ZiiBI3md^)^OOuzD0^?5(LxjpUU(XR}TK7Qf6?(^sP zyiZKuom@#&kHPlxx3=~v#aKJRBY zx2JtP`jz3)$1hyaef}Ju-xH&6@_TH|&6uZsJo+XcT{H9P@OxtPO@5E9oL9q`r+qy7 zCO&;L^Xc$=V)QHTP@mstYi>{bc=Rj7qmN&>N%#44e11=izRB;gF*jqL_VMVOcy!Io zr^D}w(Kq=$wsKw#W1jZ$=$rWT&CI96?}^c`yip}439p3;ilc^&++*^ zG5RLI$Hv@@dD_RLZ{pE4GoKE>Cr01o_t?sLHH>-M$D?oJ(>F7p4!jzcM`f_=Q_^pFhXv_r&O%{2m)~Gv;X@kG_dV*UWr6{GJ$nliy=2=hZOgX&;Zi ziBI3md^-G|82!ro)#vxwn%mPp9{tMj=;Ie|(|!INpWhRsZ}NL=%*~jmeLVUm9$ho@ z>F|4E^i6(`t(;fGn5TU_`X)YoGxO>2dt&q}A6B2=XKQXx`*`##!=sO1xI_2(b9{bJ zjK0b5u`xGep7!zRn|O51%%{WeiP1OtJ+^XQ4P&16@#vfQ^v%qt!|#dFuY5#(exI$m zJ?-PsuMCeqe&H_N=g;x^Ju&(wzsJVhjCtC}qi^ETH8YCkJ$D?oJ(Kj={ zbZ%3h&#T}(_#6%9X3Wz*9(@y!zM1)S_?!;9mA9(T=ZQ48r+qy7mEqCHFHFAw;`n?{ z34N2#QDJVzJniGrH}UA2nO{1$sL$uMa2|Y)40AK)X&;ZiiAUeed^&ti4c*F{)#vkc zn%mPp9{tMj=;IeA?>}&SKBtGi$>#_$H)Edm@#vd)bj{2!otxC>^NKhRK1YeU8S}J{ zN8iMwZ)QFnKBtLp<&Em|c~Z^oX&;Y%Wq9=Q3ukwqKgZ{Ds_2`1juvw>=4l^~zKKWI z%>2^1L47{2i}T=f#F(2gPy2ZEO+5N$=F{PG%IH>Jum0)g%)F0BzcM`f_=Sm2pU-Kd zZ}K^E%*~jmj~|b|iAUGW{L;BjeLk;_^Wbyzn42+A`*`$CJo;wl)8TXa=vH2tKBthr$>%6CH)Edm@#vd)bj{2!ogb>t=QVO3e2ye@Gv;X@ zkG_dV-^_eEd`>0Z%4^i;^E8{=(>@;k%JAsp7f$Uye~!=RbkaBZ98u~v9)0}6$=&DA z@%fxu`X-;F%iN54+Q*}B;?XrTpFLmpR@whG*;{39X8Wt``QownYvM6CGoKE7tMpCw zR?B%c%=TC5;L$hn%Xu}-d^+r{(yx3*efC$I+dH3sI(YOe!z*)h@9x)+6`4W(lxXFRgRBG-^62XWHd{nh67^!dl5Ul|^K{K5nC=byb*`X+m;bj@skmE+^lH}RO8nNNqkRr)4- ztIW-8f0Yg%eG{*oSHsMw!`>?W%2(BAf3>+ieg5(2SB6I)zwprf`DbsHzRBJyT{GKX z<@k8?O+4mi=F?$smA=W|Dswa2U!{Xb-^45D)iCqvu(wLzTrfs`GuvOKgGb-QE9ccP z^Xapa)Mv+@8Mvc=Rj7qmN%WE`R;!eOG;R{iD@2W1jZ$=$m+S&CKWVvA4?O zH|LF4-^}(`>EO{f@tB*LPoKS2`jy{Pf37((fBbm#E5oCYUzqsx*;}P=vbW0I%=T9~ zJ|2A&kGYxobl6*^Z?d;q&Z}Xzze)#>zKLJXt6}ETVQ-aw<<;u5zuMfMUVnJ>E5oCY zUzmLT&GFe=rEjvg%G}KMS2;c&eG`wlnfY|sTcvNZw_47tVYa_Y2ampqU(Tyx=F?$s zm44+l>a)Mv+@3!Fc=Rj7qmN&heE-Su*;}P=vbW0I%=T9~J|2A&kGYxobl6*^Z?d;q z&Z}Xzze)#>zKLJXt6}ETVQ-aw<+bXwzuMfMKL2?1E5oCYUzoiA!tvQ#rEjvg%G}KM zS2;c&eG`wlnfY|sTcvNZw_47tVYa_Y2ampqU(Tyx=F?$sm44;*>a)Mv+@3!Fc=Rj7 zqmN&hy#L7Y*;}P=vbW0I%=T9~J|2A&kGYxobl6*^Z?d;q&Z}Xzze)#>zKLJXt6}ET zVQ-aw<&EmIzuMfMKL2?1E5oCYUzoiA&hgn>rEjvg%G}KMS2;c&eG`wlnfY|sTcvNZ zw_47tVYa_Y2ampqU(Tyx=F?$sm44;T>a)Mv+@3!Fc=Rj7qmN&h{QQaIv$sm$WN($Z zneDG~d_4Ll9&9Ds--(+vKoL9qaf0Yg%eG|W&SHsMw!`>?W%3IZEf3>+ieg5(2 zSB6I)zcBgvE5~PVmA=W|Dswa2U*-6C^i4eGX6DmjZ9BW7-(>H!oL9qa|CA0MeG|W&SHsMw!`>`E=MjrEju#%G}KMPwC*% zH}T4OHOzcE?48oDykC9xPn+A*=O2%LWq9=Q3%ALifA&u4o9vy^HM9Lwj*my*#A9w| zJ{|T>>6`4GGB>mRQ#yF`O}uhm4Ktq(d#Cg(A6B3J)8_W{`NyMQ86JK7!X5JGpS@H1 zCVQuJ&20aa}&S_Ezbe?5#34v;9?$k4N9cV{T@C>D;6~ z`>UJ>d#lXNY=5`K5D%`s|N#9_)=W zH?#fG(g}|~KEz{gW^ za#!E+@3!Fcyuen zqmN&h{QQICvo}iLWN(zYneC5qd_4Ll9&ptus6!w%=Sl1Cp`N25RbW; z`E=MDrCWK8`s|N3x2MlP9^K0D=;IeAKmX(S?2Xbl*&AhUX8WTYACJC?$K1^P()oe< z?2mFD?2R%vv;EQ136DNL#A9w|J{|T(=~iB?KKrB1?dkK6N4GLO`uK&(&%Zf7d!zJC z_C}eT%iABtqi^ETHM{-M(O2FvI{NHoqoc2G&~n*)&CO>o>-zp9yeH+oc124(=4R%P zo`@Iwwkx*8V{Uf);r&Y9nDRK{J>TH6`1+T*nfYV)ls~pSj(88doOdwh_|5H|um8Az zm%l>uI3ON#GwYAvQ2zMlaX>ugX68@0QvSr|aX>ugX6E;ugX1Cv5XHV$*Th{QoFKTWsdm_L7@VNd=Jgz@8^UHM>fA+Zk;(mpA%*}4Uxz55X z*ImQs;?Ew}pPBjPIt#B{cMb8Fo0(s(v+&Aw*AS1nnfc{93$I*v4e^+pnP0B6@XB@9 z5RbW;`QpFY>1YLjT3zIZApYPoN*L8-+^=IO7 z{h681br!dm>(0buZg%^+&hWVY%opPCf380>^SRFOxc*E$=4R$|o#Ao)nRv|2%;!48 zqg!s$AFqGR&A7eOFP-q|a~z1r+{}DB>&N-i zH|NLsGdE-2+2?*deteV1&D_i$Kj*n&pU%5-Sm(c?*_Ze6=vRhEAHOj1>2ENizPVsf zeKY3i`=eR}+r!|E?Gm-G7L(XR}TK7L{1(_cKGzPV|y`ew}2 z$B#$f#G`9wKK)IH)HgTlSKo|z+Q*}B;?XxVpZ;be>YJMns&B?T?c>om@#veGPrt8E z{mNnW`^@C^qk~7kGQ2W36QBMT1L~Vw_Ns5jJbnCl^i4eaX6Do1a!7r1tA6#(n5TU_ z`X(NIGxOGB*>S{4eLVUm9({9p{=7cb>flF;Dw=^i4eaX6Dmhtxx^RVf9xtlh=<99{tMj%G^wR`m2tp zZ%!Xn-;84eLVUm9(^8~=NzB#Q|eKY21ACJC? zN8ikR`cwPVuN+o?s+qigbnxg`hF9ih;?tipqQ1HEp!#Oa)5niT-^8PDWy(8+IlLpl{W1c>KJo+XceKYgvPaIO;?Cn?IjCtC}qi^ETH#499gaP%GB*>S{5m;!-yGMkz8Ukhk4N9cqi<$D{V@aTn`3*`H)Edm@#vd)^v%qte^8(LmBZ>EWG1g4 z9X$G#;gz|W`1F^KsBa!PsJqiHVer0%NZYDnceMZzb_Z?KYID^t8d0U?c>om z@#veGPk;9T_02tc)i-0F_VMVOc=XN8r@vdD`jx}#?`9^iA00gUmEo1SnfUZ~8ByQd zbx?gX=IP_dqi^ETH#499&O_>(yY#DX#ysug(Kqqvo0(64rvdfNoqN?cW1jZ$=$m-- z&CI92W1sq!!|Ly7Ca)hIJo=U4mARSt^tT^T-`rtPeKY3iEp+vZ{pE4GoSvEL+YDH z^{a2jJniGrH}UA3nNRK|h!uOA&e`jz38 zxtaL%-!!1Ud2FxxX3W#ak4N9cqi<$D{bPsJH;?OA-;8KBI(YOe!z*($@#&vEpuTxduli=p z)5niT-^8PDWlGoh|X0o0(5%+kyDmN%YO_det{$-ue8~!J}{DmGf$t z`SiDm=Z}8nu=?AW$@51CkA7u%Wo{-u{jEmSH@6;C-;8YFi7`*`$CJo;wl)8Ar1eUrV>a$XH%p7!zRoA~t2%%{`Wr+($I`h8~d`q9CoUm0GR zn~6_p%?H&tW1c>KJo+XceKYgvZ#tyDxmmyZX3Wz*9(@y!zM1*-7Z0d!ZrZE9 z8S}J{N8iMwZ)QIIMSbd54y(V&OkO`ac=Rj7D|0jP>2ETkzPWHveKY3i-}>YJPNt8d0U?c>om@#veGPk*BU_05fY)i-0F_VMVOc=XN8r@vvJ`jx}#Z)hg3 zA00gUmEo1SnfUZK7*XF`FsQy6^YroK(Kqqvo0(64{*e0S2L0-rF;Dw=^i4eaX6Dmh ze?Wb6ey{pw%+o#|eG`wqnfdhR^{HPuto}SRdHv|%(XR}z%+187KX*iZbGL+xo0(64 z?LPG@ht*%(OkO`ac=Rj7D|0jP>8~}SzBy-5eKY3id!Kh*N+Y!{mSsl+)RA> zGe^`n*BDgajCuO_@#vd)^v%qtzxt5+=FEQe&6uZsJo+XceKYgv&lphOT)kI)Gv;X@ zkG_dV-^_gatM#d0IjsI_X7c*c!J}UpUYVPTPk+@B_08#n>YFi7A3q*_6OX=``Shm^ zsc){@uf7@cw2w#M#G`L!KK)e&)HkQ~s&B?T?c>om@#veGPk(Bk`jx}#Pc@U*j}9LF z%J9nEOnmxNM$|V~9#r3qdHVSA=$m--&CI92(vbS*lz#Qin5TU_`X(NIGxO`lIk8uLGv;X@kG_dV-^_gaYL;G)i-0F_VMVOc=XN8 zr$1&ueUrWIa$XH%p7!zRoA~t2%%^iupZb-<>K|k#uOA&e`jz38xtaL%myW1!9yqAJ z8T0h<@-36OX=``SkZ5P~YtDRo{$x+Q*}B;?XxVpZ=0Q^(%+fUt%V&A00gUmEo1SnfUbg z98urgYfybN=IP_dqi^ETH#4999z*Jzd-khu#ysug(Kqqvo0(64_W||IJ$ltQW1jZ$ z=$m--&CI92Tc7%s!|Ly5Ca)hIJo=U4mARSt^miFi-`sUjeKY3iYKatt8d0U?c>om@#veGPk*NY_064o)i-0F_VMVOc=XN8r@v#L`jx}#?`S5kA00gU zmEo1SnfUa#A5q`jVNiWD=IP_dqi^ETH<#xhJRsjZq*uNf^Ugl!k2ii+OFZUg=5wBh z45@D(+ONJD^R$mg-^8PDWZtADuJm-q4L zSB6I)zcBIXA2Fc5d1SBpX3W#ak4N9cqibe9{Ue9eH;?L9-;8YFi7`*`$CJo;wl(?7LO{mNnW+5c{CPy2ZEE5oCYU$~st z|FnVV+^PL-czUn8X560k@#&j*bj{4?@tr=TzIjH!`ew}2J|2A&kG`4t^v@Vk-#l|r zeKY21ACJC?N8ikR`e*g2UpcJ)S!VM3(ZQo%8D5#2iBJFR0rkyudet{$o<4p&`X(NI zGxO=6Go-$GZom3w%+o#|eG`wqnfdh39Z}yrZ%}0daczRBJ;b2H{?ACJC?N8il+ z(iu_zqJ{&5>YFi7`*`$CJo;wl)4#Y+{mNnWFE*3cj}9LF%J9nE?DXSv=06z!{e%z1 z=f$tpa@lOn&1XN*_4vbkQQm8xXo<(%%>2=_@nYY-rzIY9v)d2tZh2z{S}vQdxtaN6 zm&zOaP)j`KX6BFkZ+R;m(Grijnfc@U-sah`^|M0KGz>U#N+xiGrwGC;c@-pLpme*NKb{Z)p?^@m@W_*`GlpQY=rGQ2W3JAGYecwB##qs`n*e6BM*uDi_`9q?>laF-*?aExV<`u^UHq&WaXZP)StSS>o4}_UTb;jW}2IE%j^FR{Fma#uNdI} z_>j@j-yIP@Z~2JX)AN--GB?Zo_5ODn|6};K{_E)I1OEnldM=N@e;-_Ej*h+<=drBc z)ZF)jpLtLG-dEgT5!&|;^nC52YzxoZl_&4IgmUzs~%;!48=lV18n48_cuCrxd*Y#&U_kiYR z%+u=+kL%CG(9hvZe~8$86MZ4iO1Z`e6BM*u0IoxxtaM~XLwwHCLVJ$ z^SRFOxc*E$=4Q9A>kNn#3$ zEPwx*%PwrL%ZAzCpIm2nTz@7$b2Ia~&hWVYOuTYkHq3mkGd!+86Te)S4KttX43F#2 z#4p!n!_4P8!{hoh@ym7DF!Q<2@VNd={Bm73?Dln?;c@+${JY2Bi)Q9?o$>D{fB%_y z<+^N``7b{f-X?MV{I2B-M~{v&H{+^s6=i`6-=ktI2_rw48?O!_=jP90`26{N zBmX{>zX#s%zfaBILvQ%sM_qsXyZA=`eJ+0whyO;uJ}CbVg#SjrJ}LhWh5tssJ}UnX zhW|#tJ}cK*_*{QHkC3lRn48`IzU%t)*QKVvE;YNqKGpSy_eQ@y{@;CluIn$(ul)UI z`uhU2`}}qN;c@+$c>McpWM;FLV9T(YxdQlHJZXdwQ;T zh`Cwj9scO(Pvhq$SH3OwE01h>)eV}PaeId!XSQGb@9*O4p-;EG*!xV_V#9?x6P zqWJyFRa;&fuLE;4ZvVge<@MU_3q3toJr?Kxia9!ZSG@mt<9%j4u7h>Ec~yL^_md^u zAC8XRxoc`P z!vaJpb=3unMkouT#vL_bK~fMFjnf4t8Vs>EY41!EQ+oY9-+O+Z^WC}UOU^ljE_ld$ z@B2OXoO|zYX1?>@8NKh7KkBd6w1*sIUFv3OeceyzwzNK*pu4`N_xs_7NB*woQgu_e z7tW9F_lvH_uZ+D(Yn{;h;`WB?&qdv=PIRpwyWge9f6F7R8=vnt*PqktPj$0zxj=ZtV`W2t^di_O6x0Uo?u<&&yx)~FVxNM_4PIBNO}EhPwMA}qxwGT z(+wwg>iaU)%_~Q{pTBF`55Mv`^?$G7WJCR`n=?OOXZgh6n#X_r*A4MfH%tBxejDEF z|7wVrx>@q`x9YXNzJX|nm%3T@os{674P_45Gn zQa4Nfg~!9Y_)0^()XkEA=`-P9s-Fjlm%3Tu@2#H)h?lxq@~_?< z-o4*%h?lzA?XPq0V&vbX=GOC3Hzya%`8PQk`Dbpu7x`ySPImXFoRgRQ!w>ONH%tDM zbMlja_#s~EX33v&?xONS`6o{zUg~DapK|V``jmh2B;uuRcKdaI-f!}z+^f0ueALZu zzwW2}!%O~|Tkl2PEcsK;$(wSoCSK}h$)9pge)11L#7o^Q`BToxn{uxvUg~DapK?xK z@((}6OWiE_Q_jhoa<3*{>SoEGa!y|I4?o09-7NW2&dHl{uO?pVX33v&PG0g4Kg3Jj zEcsK;$(wSoCSK}h$)9pgUh)q=#7o^Q`BToxn{uxvUg~DapK?xK@((}6OWo}DN6u{@ zj{GyPu14M5KHQyOe4n>{W8|O7brtI7_Kn^B z<(`R`x>@p*b6P*;o{5*b+3i=K@((ZhXI@>6y4mg5{gi)r$v^Wd`!TAUB|kZbm;5vF zQa4L}at<%KXX2%9mi*)#Uh>bxOWiE_$vM2_o{5*bS@M%}c*#E#FLkrzC+F~zdnR7$ zX30;^;U)h}ywuH-pPa)>?wNS0nd*JXj^x*)TkC7z>o?kG zd%CI)e6it)m!od#_V#|yj`e5u+h*3+KHE=Ozv16rVtwtS)zs~U^>^&IW$T|+?rq+t zeX~=hj^k$Sw;eaBcdb8nzpb^t_RH=`{neVj-_<%I>ryvM>(AY9%hs>f^!#eiZ%KPr zW|}il-Bi7Bes=7)wbs|Z^E-MC>Fe#~Lk-v8in>|VU+;BT%rmIpub;X5ZLRgSuf~44 z-p{xGuHpJyQ8&BSpS$0dt-tSBth-;ssCXdjQa4NM&)IKlt*?ExyIEKJZR}Uq}9hIpx)CI5hVo6NuX@9-|)&=4@pbz1(v`rsssrnR%hizj|MI_kOD( zUg~DIUpb}x^Bkz@IZ$(EUZmx(bM8#!-=yZ&+fg?sXUh5KIVBTsVV*Vfr<{|Q{KF6N zQa4Nf0rO6oKjqw+$Uk{f4&tS5cKdaIyjSK=IVUgqhacjlZkGH5=EX99 z$~k$-Kl~6cb+hCjFmIOmQ_jgt{^5ssshcJLfO)mdpK?xK@((}6OWo}DNB()v&Gej` zsd=XM^}d!ra&G&M$UpPy15r1(@96F)=X%b|WqxuFFS%#prEZq|1Lo~AKRKuMQ|_5~ zshi#Y$Uo-A$UoC_dS>_ekDS9x?wMB~h`L$wlYe-7%=@*DKXMK)xo6@f|ICtqz`S7Q zC+F~zdnR7$X30Nb-Z1l%b9l);6EAhME@f1kii>$LOIzV!3%fccaUwV&${%*XVYPs#ja`?(IG>)+}6gz32ybLRSZ z<{#HD@A2^Wm``c>$M2=m`KBeU!-%oydF2(d* ziaB$AI`fb1C%?EZUOm{*b17!YKdwLW3xALKl-BW&?y@i-uJ z3DnK*^IzxWh<@@5Z;$zu?D)s_lVA9I%%^1jvHj#1{vPuwnSX3Q`Gvp7d`jjY*B|-i zxfGMRjKX|M%Rj!K{PJ9i>A4hh=K6HzAKOoUab2AJGd-7Lmi*)TBfs$Wm``aP|M-6L z3xALKl*~W2pPa)_?wQObP&ZZY`1vL7=RVVYW~rb2qOZq%N_PBX`^hi-J?2v~|JZ)= z3xALKl*~W2pZvn#V?HJG59mKs|Gb@k{(bH2bb9`E{e27ld~I&(wMX4lz5V)|>DT9o z&e7lS#qZExRis9Jzs(18Hr|)ZDX?kor{m-{e`ly?w z{;E2lejj&`$4%W#w|DyE{AoT#kN^DZusQBH{!)MVH&4g;59&PrGWmbfU zFx}qnzc=|m5&mPno}Nz6oibCs-T&3>^?Oj~_v<=;&zL&@|J3mx zG*i9Z|8V>GFFh3dMEkX0$G*}2r(z%J(nDsdxBJ)X{)2ozxYFlM`M0Fck0xHwe^px& z*I$VGhUN*VCF*~vr+@TD|Gf3n`!ha|s=1?gH4mk%{L8!gxYy3ltIq5Hs6G$t^P$HZ zeyH$^qe~{zm@5h=d&wIQdLciYk*RX0n=lzC!ZkoE;?bqw}Va;iML$Bu_HROC# zH+6f*#6l_4%v0q5a8p{%Yzs3wHSH=YOew{%dY%e|RI_V*n|o!5VTd&lF~ y-!;|Of_eSa>923^>`&{j)&836m%?jmhOnbQ&QrBkpTC;xm!fXEe?{-(#p-|5L-9=j diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap.gds index d7e76442072cfd6ff2208be68feb792e17c62a2d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 120174 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 DJYInP diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds index 460d362f9c15b0d23fbf23e4038a18cd0a362d90..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 241526 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 IWAfnt1q5P5+W-In diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds index 5b133cac1a5320c39803ca58f486bca65ac7fe77..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 17836 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds index 7aa37b834bfa7b979115f232d5c3480f4361c93d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 23148 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds index b46ca3601fb6be31430ee96898ca2d27b8f1e5d0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 29906 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds index 5b0f9c8186ff76e07d69950b5d668ccd4477071a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 31640 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds index bee7bcbfe9df1cf723b9252d7337768a64c0a3e4..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 42882 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 E2G?n#%K!iX diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds index 75b3cbdee8e3aa34405e755926b1a63d85ad7881..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 16910 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds index 35fc5aab506c2fa1c8895e5ffb23746c415dd8a2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 30588 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds index 7048b1a470042f6a8b66ac946ada294865ae8633..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 41216 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 JzhlQX{~y4U+GPL$ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds index 9cd4349cc10f69f1d4e92144eaa068a9fba3790c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 68622 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 I4b+j!e{VA(`2YX_ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds index bda29caeef101ce011cadc00a5c7764ab90f43db..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 5178 zcmbW5PiS0K6vof{GcU;)HNt497F6u2#5$9-*ep@4NSY^WK}uyXj;?_`jn8=L+9=6Zi){pHvC-QMd*`xj1j=bxS5 z=yp$cH+o0RI$7)Z(v`9v*(j$#hs}wT5(ruGd4Gq z!S1Hn)C~09iY|n>bjI>~%<^f^pRnRS^2KaoEi3Nlx~Cs#EiSmvVVmZ>=?y%5)7txr z)iX;^Jq?;O1P7R*bdbJa*1BevT_|<(AsNgN^$oDq6uUK0;cVZ9xjqUCKwzvalpE-YK zCCm_Zz^@>j0lSVTSFn03b^8@F#-$h^t$@zZCvf@%w)a4(?LN*B;!=z|e#)OApTA?1 zcjK(s@78f=v4AmBdHy8#&!@lo`Kh+u{Ji|+SN-$()zZ(s z1OEq8>x8q8`LI)?^$91Gb-3O7g#B5mp3vkc@RxC--Y&KM2&{;S`*UOCvmewm$d% zrNwjJzZCJt`q3vj`j?VpTpHu)lN^0Z$uTaC@${dsdH)0b$NSHvYjOYN=zpN#=%2jP z2v48n=zpN#TwJ;f&v%ZzG`r$?DdN%klcRqrIr^5yc-D^`&##mm}r91MW|L{5c)ALgHS;nP^kNOWh*N=Yb>Mte7 zxK#bL*1vQ^WBuf~eknPwUn)NISM;xFfA#%M{q;liwFlwnP^s-pSTEvIjJx&iY5vfE zhx=!w|Mp$~mcKXQ>kjx^F17t0{2?yIc(wk^)&9@AvHxekl2x z^Xfle;k_?Vzob;x7ZI0Ye6;@rKD&r_ZQk<({Q~u1Tsj};C*SeBlzzxd5g#kRI4OKJ z@(I>S-|5+k!ncb{cj4)qyp(y#OJn|b$}dhT|KWbZ{texK-$d3o#{C!W=NGH@lRX;h z@?@#JuNarg-%fn;gXglpN+rj*G{$Fdd9L+QspJ@!#(4YDbJhJN$G9}cr>}aR?+2dq z?+JLu$%pak`C6*h&v7_Mtv2|eJSU7x5pU%69%&wNjFS)Jjl5eo@@gJ&)$?Vs-yOyHD$SsZ+SK_>tmI j$A|C0z~dVneESvq4vhcbO&#DjILqfxpYr?!=E?1U;YIp? diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds index ab46016e0b275d3d7ac8fa8d5e8ccfe2b0d65605..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 6502 zcmbuEONbm*6ozkAch|gn#wcSXnh*sg5XLx@M2wpxGkKv21~LhOh&F*FAc@YH_#hyt z8=nLe+^8FOZrq5XZj3uoaG@@Qh%a1-AU?pA8^`nAd;hAg?&&*ZoDlxWsrv5uB| zZf0EJa@TO{v)t`>nf>7_t9`#EFD{(DIJ0fKbLLcM@qDLq{!C}_%<0EE(=$)(=$za? zz4iFE#p&ro(~C2AIyc#9?VNq_u7jVx{ny=lKf2?sH%}aO>syJ{i>q0^*>B6*pwA<%%2e-M*={>kI$&rE9Nm&7JVISbR;xx!nF1Q|`KT#ls7yPM_;Me&KXy z;gNF}UGrM!R=sNDU0e0uL8}f2ue)6_k-If+3Ln{%X6SFzmn$7#8{$&C-tB6iuXRmt zt-H7RukEqEZ=DmKv;M~Xy&NWU}+O`{sOYM3;KN%`m z1;5wlpNjlzmiK$hzq!)U3zpyFQoG)rzmFf=5cpEx3;dXLL#>0x+iqF0gG)>QUZI2Y zhmRfEvu_nE*mE8Kzzwe}4$K~ne0&0-g186VWy`e3*~YDOX~A}@#ie$=zXRGsZ&;q& z?D5`O>BIrsLl&3Xb7ZpQl`me`$)xCmjBzaK5gnDITBAjlqAZp9lX<>Bh8wIQ*At9RA_G zCU|_p;lEVld|bK$pMMy5DbosGYVlX^JOLb~xlO^`DSG zlO7)IpFD8nFV#37mnL}n1V{f%HO|MS37$M7pM?C<(T75Qsl}81hok>eIQk+@@%V(p zzZ8zRG{xh8Y*X-G>Q}-4m~>OxKOFu`H4gvqUK2b%;qYIoaXv0xj*s(>``mAVmole` zOD*2t|H$Ld=Ck)Ng(EK2{Ep|7Fu!!dv;M)c|D+RwY)wqP2{J4%x(H7)!di%%VuuXYwf_k9NzHfv z^XckO`&{TxsXe^K2lC7HhrGn4sr>#v%THg)@3n_d<)?n~h(rCk$>LJG-tGUv?(>bi zJ?@KLm9idjX^;OJpRot6|Bc@(g(EIa@r|bg*Lt;5IO5V2@4gOP_x^?>E=}?Iqk*Sy z)S*5ShmY60`!`$bpS=U+dlcU%o+B}-eLtATf8?Z|!$0eU>jQc3+xXUKSOjU%qzFU5+BaS#e;`M>NK8Li9IKQurkJktC@_iNc@2)*RYa3s!%axAb x9KM&@zkL3-9l7lH4aVC~knJ}O_1`zte+HjDYv=VLe*Qam?9jo$57|0R_a7A`nb!aS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds index d5caeab8f6e12234319f8fc1647c3d08a98862b0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 8614 zcmbW7U5Hgx7>3vRopBm+0>Z$Ine|nCu)o+Btou(>ZgjbNblKvz^JQ=Qnqb?3-Nw z_@>j7llv!6Pi+ceywTdW^R@dP{_3Oa_wV`q-VfhDd@!tNIcIOr=j_el5ZVjtVOMA` zt%vE*zM~dep?xR0hnKgue-mHdh2a&gU5DdbtUl5Rp>BVN4u`R2?USdD&Yb8xcXp<8 z>gf~bLUS~P|9#fRCwA7e{mwd=vhE1&MfETeCdg4cV@q_&_-cXIvbuOFrONzH^v5&* z1@peP$h*2+`hfXX7wveQRp#$4`t>J682vbe#*r?^@3Hl&sY^;+-P5MLX!>w6`HvA@F5vi6<>J0E(~ z7KrOwT7m2e%x49%-DWFr3kj~?y!r115==jK=)ms1r8(T%8EjpaoC$-=+7IqLnEBZZ z(ly9t5H8wC%Y$wFE^n^1-EMW!ju%&;(l(Lz{~b;>SFo&l>G2>^7tOXc_Ph= zbemwGvc;pv7Kjt)_{P+-$y6E}j9GFh|bK3WYSQn@L{CMQgX&(6p zM8_v59=UUx7we+qlXLKklwVvhlk$sJch?_}{30ItMb9TE9{EK)>Z0e9e`r<8pYz+4 ze@I;A=f@*|PV>l*AL;ny#3O%B^I~0eeDdG+M#?V^Z%X+^tGnxuM}85H+@j}`6Oa5N z9(B?4$v^ye$}cXwkn)RGck|&&n5Amprp3gYsW?Yfn)I~2p^Bi51=AZLQn*XS{#-BeP85%-`JMC#_t817wh6|e%7C|PS)?n^%G;?Y;{rnaMs_Z{wwpDCm!<` z@u-WQ&pP9={vsZA(et%_)%nl1eoL$+vd{CD{}%dd_3v+54$IP9*X7c?Ew9x@J0ADf zEuPXJiN2fl%XvAiAN@P)X!YX$E%{tOym|EhC7*T1XZ>^9xUnuede$E3K zm%8YUPyW1bo(^#z4ctikCTF>SE{)GRYGLN&0?j0 z?#Yiwei4uSqUVznkNhGYbaO^v|X7$%#jP5s$j)`Q*eSzlcX&^nCKGZx+=zi3@6j z!LG0In{TH>N~|s|5+NJoOt9H@u-WQPfk4Yi+I#U&nLh7eo=kDSn2X*!R@x`r=U+J-_yS@*974iAP=Z{KkvPYrWMa9(B?4!`kH4w|9w0U99*!i|ZHf z3)@Fc)-PjqzgIq=mVDhu`FXfcZNFvrh3>QB{x132$8mq#_}Zu0zSKVN>&NS-`yeCZ z$Lp8T%dc@Y59L;l?0DbtHSg9?T0c0S^<&NXt98)4sl|Du~b|m`Q6J(peJwdkLR4D(x aLirgs&+x~8;`#5cL;D|2{(zmQ8U6!Xv3)@R diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds index 09d6c83b1b1b00a22bedd4e9f2e05dfc97e85843..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 6986 zcmbuEO=w+37>4Kk=BCD4G5%Bo?n}_5jWh~M(xmYxp@Eoc74=flxDYW$5wxI)U9>Bg zwG=@_RIG}MqJnNjx^v@3LS3pG7q*}aMH}CDX5M?wx#ylqZj6g3esi8P-+VLYJ2$r` zH?c{~NEDkn6X8GpM3vufit}fmd|`awSbOEM_Uc-@y|&U`U3vVu_SpFIlkKB(V-xp} ztxirXjIEB}V$5)o-7$S~|NOakFWfr&<;`!Nd2rc`WP!Wq{oFlm8IxZgn<D_FsM%rIAM^PO;cBomeS4%+pO`h5R{Gm7iJDe({F%eXii z_T#UeFDA#GFCt!EZ)N`Yw3|0MS|aAPaWODIuj9P*Mb68(*mHirU;WhEpBI<^_V>H$ zW3Qv@P`~p9lh;u{o&isc*XyVJk2x=Sxgfn5ak0yvE$@H)DX#qx*WOhynZfUfix@A@ zU-9#u&dc8}NRM%GGe3F?*TWZMoL_riPsAJNXP)$!zewM%%TvDZ7|4GM9pmiA#-(+3 zjC&UkFU=fu8T56B@34z=rnNi2b9&kP{sg%Ss^_88us;nPDahTA5En6CuYmW>Psnt} znAVF0H=aiKKwQMQ^?k>1^ZSlresvwAHGnF9g8K~E`)qoBde&W^vQk^Pf3)bXj~2t% zqZ`={X4i$zY1g&hoPU)1j`y#-e+-(9&9BcNaMzQ%zOq053FAI&b$_nL!Nofb_1(jc z?A|@76V5?>|I|Ua*H=Mg2k=bZ@EyPt@kXCdIz8I~Jn7pG;MwKRlska=8$R|X;u9$T zg_`BR_<8EQ{G$@#*|-?+2lxbI-qu4U!n1KP;K%PdFIg%Po{ftEKfTX+8J5gE zEaBO>81Oky`~~Wd`9=FSLR>_=ynnU&(PRBYdaR!q@>wT(te;4aaWUj`o%FbFksjk> z$mcns$MYl7V_XdR`5NZBhxBMe>nE}g+xmHS^(S|Jyw826$Nd-S+x_|i}dXI_YC=Q3%Q=cdJh%Me#88Tix{`($Mc`JXp6q*!i(UP%;F)sG> z_57ZP_Y$7pV+GlFBE&_E*PmbS=f7Z~d!64Q-eEQ_?hX6NKh77K4}B5wzUG%FBCke2 z+wbzvzAq7Z+qk%i&%Ei2oR_{B%D>nA^2AX7$w`-YdSi*m+s4H}{=ANP(-%1}<6zFrvk@GSxhVt(5nJ;ue5&mPSA*`GyvjEi0V zbou;P56@BSIDAh&Cya}Tm-}PYKV5hgA93ru@kZa)4fB@!DZO&P3C(Zo*ULx!?0s0@ zK>m6UsSa8<y?>htLD^!<3FuRg3gXx-|&e!S6FAGGHe^Q+IP@A>gY z-=2SXx{o}@nZF-z_J45euK9>t-;Fo=%3F2Ny0s2J-sr1toqh0iR~`L$qi>%(tY7Cq z``+0{x37)9&P^ZB&s6#OL-p*>;AFw{WB0p=|FiS^?`PrT8{RDZZ$i;4kWTUY*#n0c M=ADnPK-1Lx2Oebhv;Y7A diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds index 2c8d2debd953a34b290749d9ba8a959f2b44dbd2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 8482 zcmc(kO^97*8OPuIan7Ac)L14;YCznUSZA8FCMs<{rU^Agp-CxJ>$T8i)7Hea3Z;UZ zBKXnbLUd82u5_me6?9QIg}6usb)f_cDOL(CDg_Y~wDJFY-uHjcxp(Hi(}aQ(hF|76 z=XajxJnz>{CbempMrrS0n2x7`{_r)J`}@tq_OXYbSl_=kJ^Rq~{DtZC!rAHhvu7Tk zuC0IN;Pk=cYX|OIKY!c7yVuUI-fH$Haq;*Z}vwDF6N{_xrRPp7?2<>~FU zJbk<~rS{#!bTqZ^AEr~O{lFkKslAc9cYd(BCU!N#6ZVKebWi;}h@nQztj*sRx%mbtU)p zaBAN(OuN#)=-GEtnp{%ve$wOL^)qqv(p(3R$GGfT9GAoU_U3io_6D& zBX@mTWibY&0zILtVEFNrnm_99S2|8UoDy+U*TdhD-yr*|Y303)`lr$=Z^HfUSMzhk z&G}aI8*|_ILz*d1b#xw6*O&Uu_p(R5JO|Levu`TiuYb;uUMqk5T+Sa<-iVu({M<)gJd?b{%`Nj^fB$p+#lPd7^D%U?Xem8Y&za?LBQ`h_X=ltf) z?6qI-h)3Mq&L96=_sTb$li4>FUz(pf@u=U#BW~K?sWjTjRlj!f?RJbGrL^))TG`W{ zICA>Vod25qr>|ap>oPmesn6Vd&$04^vg70qmOU^1N_T4Yt$eQI)pIEkH+6k;2fSx$ zv?u@7H#=0}4($X3#ZAS-FFRJwUv{kYTHdiHud6*evnH=c9oybNemdVj=1og|wdW7k z^ZkSM`u&4_xt{3D<fED`ub-U=D9pO^Ta}FZG+(ve)X2#D{pq&6+>a zO2J#Xy(1oRv*r)KnZ410j(Eh)ny*g?k$?Q>j(Eh)njd-op&dZ^hlQgbD{Zt(p(%-nV*u zRX-Cq4^{g2*X;30jOPU9jftBTpHJR+`&Nbd>7~ER^$6NpFfTB-=8o3 zpt>*Vd!yry6RKZvQ`h_ZhyE`@|6(owf@7X=eqY1qhfTiE4b$g_xp02W`HVC98GqB~ zzPWIIZ}Q2DZ<3einzj7Q6Y?^DO!5*pYx(0o<;N#KBrkEZmY;Qk$NDkxh@0E_)QxXa zcRaVSRzK^XysUqdyu{5~e(obLzDfRgZsB(MIXCf5&P{xC;ryH%f8G<1_c!r~n>C+t z!eiV_JmO}}XP)6P|4cmMX3b~);j#WqJmO}}k3PMa`^Wi7A2~OPn+xaXrvBm4KNFAs znKeK9B%l7_Lp9D z@1Ob>pBuj2qdfW^0AJ#3OFj{HD}D zxhwk+kGNU$+dpM*rPL4ch?_M({XYBs`GrT^tog$)Wxv0^@Q9l=pWmwJdh8D-9&xkg zH^0d~`y#&gN8uI)6u|KhIvHv|kH~;2*@8gkQe&m-|_T^yB zkN$fd7m_#nUs&^FeaegRE5wiWSy=O<|MF&iDDNHpmtU?g?O*I~@?-o9$shY$VJ*L| zMc@4%uA6xDAzxpb-|y`@oVUN<)$+UUP4C~^?`yutedTO^4@ljf2j%+G`X^6z9`8K! z6_4lS>r4Ircm46XKy`Z^c;3&}QC?U5`VaTlpWZ&ccHG!;@~`}NQ$K}YenTW*zhP?X Zzmpz3r~X~xH%v$Gz58VLCwk5}{SWpPfUy7o diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds index f492228ada659013737afa4d5374ed3c1af9867a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 8778 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 SCyeg6|DL;(Z?7riad-<+GBzs! diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds index 031c6714da33e707a7642b58b90b126b2d410560..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 13898 zcmbuGO^9As9mdc5Ig^+snUADQ8z{wHTkA}dYW<)lO&Wur6XPLa894 z1gcg9MHi*$LKGJ&1s4s)ZbsTgDWVH2RIrK!QY=J@t4ibl_dn-3_uhBr{->i6`L)lz zzxSN`ob%pk51lkk!!$~V2E%kR4eWpX8Fc>o*5UNa4?Vhecy;~U=hn|ZyuSYMx%Kns zKL5!2>e^TCSby;3>XDD%etvcJ-qrJKx2Lo`n%sHp@%P^I{Linv@5D3j{>hV{Jev+p zf={3BU+Q49ElG6VaBW(LFer?mKc`{-92 zF0Z6SF530Y{&IeT$q!RnxHkJD9=T|Fug^Gmqi;6UxT5@BwE>&|a+=>qgC9xDJTafM z^hlnEu|3}1{=B!8`Mzx9e9`Xval^$UHebs{yB_+B|H;0%^t? zT#Ux|`)quC#)phcE^aw~S+C&(Htr|Pd$8fspUt;iwCkJaul2r|z3Fco;!P|ULx1P{ zC9j|6zk~f!_WOzU`VW6#^Zunh|4j`StwVCruD74R<4>++Z+f929=W)kzxcZCAM?ef zZ)9Jzymx$`r}@kuAL5aV^2-~;=KnU{7(Ywtz=brwGX3zevv=q5cjP~D_3B$s^Ts*z zvHR~kUOu6-0_B~Tp0hizPig+s4X@r{Z!yb7yS}*ry)*4iwfygt=6FLD9<(>ez;e-Y z_sbh2uV8s&q)YjYF?ZP-`g#}QO#2ySeci+xHvcTK=eC{E+mGhs>-tn# z*QYw`cf9ir{8mcu_`2;}d+UjNZnhn4xoCNN{X72TQue0bYlufKM*f_AQy6#t&W3p8 zV&sqS$lmzx4e`ju$WMRC-rzz*JaRGe>1qDy+@HAXQ@KCU@~}TV`V;Z!PmFwe!lOSC zk6es=dcvbW5szGqe0sv8KM{{yjC}f=JC*yZd?WWaC!UJ?!=t}S^XL!X8Tj;sM}L*( zc`gP%J>k(`rFou{mXU{gJrP-yieDWB!%qc`gP%J>k(`rFou< zfzLYOv3`~2c`gP%`v;GopOxl$E(Si&Irv3>esOpvKfh>s@BU*PJjNIC$i>K~Cp`KS z@yNx2U5(w7hr!(Gwp1iFo8<9N&vP;G=?RbiD$Vm;41D_AcQN-T?*DA=PqaMTe|YpK;?bKJ`SgTG zeO7lDy1Altf{(XAQp8u^DU$MU@7uWjx8~-zVoUrma zPV+n$1D}&tyz#9qn&-I~_`^fl8$REnd7g`rZ~JG@<-C8yYrdcNk7#-L{ljDbh#*A|AOI`8+2c&oAPUi;>U!1CM`x6!FN#$Y-7LSbq_ZT#Wp|Yjz%Hr~PxQ4G-RI zeOfNsb>DyGJk0vr`aGQZGQf`pP%VG?@u=G4V(Xoh6g`n^S4~I z>+SE)UG4KX)_I5LUmc%y#%KLSoqLHh=T{w{b;4u)L_Bga^4TYNJ2*e=jL-K3pYNZ@ zxa49qKK*g-#P>(!+=*PAIe+SmPk(syC*qNdkxx%}^e5txi;+)%c=RXYk&BT}Pk8hv z;*pDyPfwgX(O=~oxxYEFd;YYkKRo)YG>`u9oq)c7yxsy0^{?zG@dEzmD5szGqe0sv8KM{{yjC|GykM$Gr$i>KK|KPEI zL_Bga^66RUPU1G_Pn-I~qdyVfdo8rQ_x(#xc=RXYd#{C&PfvLCC*pgrg^^EBc=RXY zd#{Dt`J9{Ji=3O_i!ao!j`#8((DJcw#hv_8H@{|0-=<&&6PT?qghhk#WhzXnejujLZA0 z(#G{%494d^#>E#Imt2g-XMgNo$@`~rBkvo|-^%rH|KPFymFBVj_|ES6RcHUQPI#3Pb0>0f=KQJi{PcrIe5&hGhD zr+<3FqrXb?JQo9>p77|e(mc<_z^5lX`l~e0b20GgXWzx#pUAlrxoCOVA0GXQc=RSl zK0V>lpNK~;Mm{~^(VvJ%E=E2*;nAOnM=nM_J#p^D{;Pa5_s98JxgPe1M}L*((I39^ zbbtT!ghzjs=6Nm#K0V>lU!{4Ti-Av1c=T6kp66oVPv4Wzt){QG_=-IbxwzK<{PcEU z&7Su=Et==K82F>_W{;lv9H)7ni-FI7>4-P{M~mipE(SjPgL5bLkI1zL34S2U;}GbFuj4e9G2;=KSlc z{m(aetvOfIIh)SaM4hjd^Rv9af_|5u%l(Sh|K|5w%U}LrUZ2Vt-|}96tMy@Aaxog; z@3Zk)U&eRN_|f=VtuNz}i_!RgpN-4@V0`C{AC14&{$N~kF&f|RvvJv9jPIQBqw)D3 zF^)Xw`^Iw7uD93kGwt)y^scBNu1p-|+{3$lmDnhIr&++St>ti6BSv-jZqIr9taJ}&#&@?PKPZ(jR-jPLU= zjC{R^H4lid?^U_pJANIPpAXDK?*ZN)_BrKxudkm&zJBKGJ*M|sx!&vhx|yfv(7fwB z^1OO|ja#3i%vG|>L-Qu*`OEcQU%mgY>p%Bcvu`^4$8yFm*L%nRf1h9f z9HJid-2Ps*@yqqz@tHIK*XPJ1WB%oOzt8()E1&lVe!kxJkG8*mc8CAjbzQ^dEBUWQ o`#bl`Zzz~=zu{oN4Hf-P)ZkY({>%J^!(I2^dr$V~>~qHHzYj*9#Q*>R diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds index aa1552eed5ca754b225fcf4991289401296a7b81..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 9642 zcmbuFU8o(^7036PIWyB8~p9&QOUwlwPeDI|r_+SKmP^#(wzxV#1z30rCb#tya$p5nT z{AR7S_nNil+@q^q;YzouSGYZ{hkyL(HGaRasDF3wgIl&OtsK5<<;eXjEB7B>Idb?{ zzh7C}@`p=SZr`)?)0>u#T(bS@r6XG|c5Xvi{bKpi9ee-t!pWcQe)FPdpFVVh+f*5M zujjdYf9PC&M&Wk4`pm+ubDP(d2>0*K^^Zc|$@KYXmmYQf^;ljE{2o{Th@Qyl?%0bL9nYys_TBfBDL5K=TeU0^A`*P#kowc+9!+p`_(;{0_Sm z>ur8R$Y8V%{yz-7lpO6+*gJXpAy+<^RDPuvUmXiv{asRWv`fX0COe4yH@M*scmh|s z4csxG@Ai;KxxEqZWq!Xl$9%5?vl-WI%=Am-OS^P)H(xvzxbpT)!FjvX;H$3!SN|(h zaNaI8c={>c#@@icwET1MFNHlnuU7u#n7@=9^OssY<0QxUrQ~Rr&g5ggRj8HT+2Btk zE&m3dH53)=?f4^KJQTR{k4eeVF17eI)O*-J`9GNITy?KHm#SXl^V;C&srOm@Xj{m8 zydx>|rd>Lf|L#Wp--Eq+1?P`6q~$K~uuEaj_rJl{X9liD=Oa%gN4wPGi+={Lydo(% z+NBoHID7Yn_@xD&f7+$6cg9aYn%6*JUAtx$f{6JVkrlaASS>@(q!X6%+Kzk zy!!}|?s9J7gQTZ^gK~mhiuE?HCuk1;Kg7mj<|6(J*zv<`yxHgJ?;j^Z$S+O=_eq!t z3wPp_|A9E~^l`3w{csSj9}ev6F+Kdm@%wN*?!)nruN6=KrEvfLORLzVLeL>0DoY8?L8X*K0p}`@;3TeJTD%eZ}+j9qKI97duqc@|oD7qQdUa zW7hfd9I9)L`r!n?ef%YMxH_un!Bqc|?)Z!hu;tlKpI*^oa1GGzF@ATil5iHKK0y5FB5ex0o zeKt?O_7##@u}+(xiVt@9h67r5cONy*VJoylu{v+w;C@w1Obtv*98uuEaj z`#bvI?D;*!V~6=3`eVF5p99Pz|9nU}*L;7As(CewXC0AaeM$X$0P7QcTyOVB<@aLX z_XO5WE;REuXFl4E^J$@}_@YVqvjUO&RjsCad=eN%H8t{L@{@#_eLcRs;Qmp6x zFKx_!oGYFWH#nG-&kfI8I`#ZC_%-zZ7SFyh$NX>bYnZ<+p8n^Ue+}NxY4qPY=68#y z|2gJ&gJ&I+pX2?d#dChl@&44{`AL)YQ{wrQvTkUXTJ_Vf1J{2oDLLAu7GE6-9M6IN zspM#vTKpR3cO!rHG49_S^Sj0K{N|XS4W99npX2?d!LyH&pJV>F_&MJ{8vF?L%X8y+ zkn-GUms;mHECM%tIVm~Xr8D{1KYJ(Ocq{hcw@LdC<4j?fV!hozGrs&^;HBcEu$%m} ze|IeSpQz!#d^E(}|4CB%rCn;p&+8aBd8s(575^;%jN99#M*P)|5O?)nQu?J`YQ@j% z7&m#TIH?u?EdPw(+oeYQ^?yU$gNKsRFYQt*eqP78$xFpat@vm8XZ+qSHR2yW5#k=5 zpOk)Sms;`jI>t?2Do$#}Kg&Pk_jaif|9CmXJ^nB${n9SA;^%dYo4iz<)QW$Wf5z|a z(ineye?n{R%FiY2Pg2-B`wKtE=yQ!!pKGL3pKluR&3J#k zHGltfd&9mLw^mtwt>_vZ#KpSR>_ms-3(H}LtqBbUDqSiCM*+-q#KIyx-G*J`XMa z`}+6KC;YeS2hT6#i0hs8BTjXsx}lwXT<_#ncd8@R4ejLPdM7`rJHG!Rk4fF^2z*@c zWpz0X_zeSd?0?St~Bo&Mu`r+@8xi_hL?r~L11^gpD{pT#GW@^1nBk@DB| k_%D8c3?AP=SN8vN)WhFP@m_=Pk1suN_1?e_VCuX71BpKEr~m)} diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds index 060ab5492973c9dba4677e46d14407b1f30ce03b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11242 zcmcJVU5H&*7037eIOpCwGirs25-o@bf+gyV=|@sa&3CB@R{DXc)Uic_Si~4>K`QuC zgj!leib{*7dQ8BY@PnZ)|s&tojc$!lEnqfMW>emj_RcYT>@#|9>uVw#4s^5TLzj2VN zRKJOSuf4fCwBP?+o7Q-5{bBoiHm&TfkKKOw)(@D?8%hQChNgnyjVV*&Gz(>fV>zW!2vk8x+d_1xp?8&=3$?AhNpBoA@X+IxNS;Ex_^ zs5-^SpZ+y_^q2QQJmO-L(8#`9(b9V&v0LJo+!<5f_*GW&X_e znD=q}-1atPE)f^4eP{hwKL2w6i+=_4Z^6If`KSDM=YEgwX-L0^78k?*Kb^h$nTB|k z#l?<)tUdo{r|j9k+j#$>Vf~2xY;n=r+vC6BSFdER{z^kU;$q|vAJ5+Cnud79#mJ}5 z@lSL8Vs$dtFIv2}e)8avU&Qme3L~F>;?aK*-^Zm;{+c~zCx(sRCG7a0vOVmvG~HX@ za`?{Ux&F)YZ@YN$zZW<$?zru)+mDtvloKO=g5}Ig&)So=`d6Q7c=59-5f`m}=Li;m z_;%ZA|6?oogAHf46B8G$-TgiD5x9mE$IrHjor}|NEqT9I$g6yR{aznQ&tFcw+<%>T z`|^qB<8Yyj!-ZVWvggxF`T5o3)|r3V^T&PMdf%_-=_k)mUcR*F$B*Xc$B)L(55~Ek z**Ej^FkS4gU(Yix)B`W&`Qh*K^Duf|{T*!P=Lefj{bl|gZSO$Ud+hT$Xe;KoEpFS- z#KnUP^JBqJ<_-U5Hy2xh;^^B}qs2vwx99JIKR#gYBer^N2NZ|b+0PaiEgt&h#TUto zFGl%?U(I<(*ES?CaWTs8&slza@poV$}cYrJT3^T0`;@7o+^%Ps>mL z$q&g(T-+@`9{EK)@{7CqtUG*>b%!rT>yJ9|s9VG%E=E4%jK}zkc*MoXXP)6P|3p0E zV&r>2&*lEJei;YWEpahgzur&t=s!NhBQ8e1_tQN3j}PΠ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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds index 33dd7319b305fd3f566785b03115374228c7b46b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 12106 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 F{tq1S`*i>S diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds index 2e77923fc638d54fd5902004096a80ffd0508176..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 14154 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds index 12a11734652bae8ed28d85eab7d135bb8ab223f5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7830 zcmb`MU8r5f8HQ*7t-a4NN|e};8Y@EeLM6@7nxrCf5|c_aRfvib(49bXpwyp3qAiwQ zROp2UQ7A?52bA8l^je{{*HsFF7eWxdP{b=QL`uaQ5#MKK-nG^~XRS#M-61^5H}lT- zeKX(8n!R?Y!Z3`&&cQJJJPh=Q&tT!-yN1=7Up=*Q)9(4&$@%)}`TX?Se0}ZI6Z73G zzuq@L@r&IzKCrUB=jJ23*H>;1VcTeO+x}W8-^y*Yj>=}p-;>$ffX zUtUiBq5Ybj{#$zdqBHH+wExTN{I45^ZD9-fPktohe^Y#2?W6S&M!)TEuikCi^ZXu+ z^Lsy%555d&AK+@+rHi_V)a2(vRLtdUJd#=}p;t_4vU5=${R-wf~m<$A0pU z9{&)(*v*pv@%xH(N%Q>67GIMVySdaKKmDeMlfLH1Nk26Ycj$9{6DJ?$-yGbT;x}dA zJbx|y(vOqgTz)L+P1$?(L3@k39Gq+MtUO{j7xzb6|LlLZmUK(cv?yJ)n^~XhSNf*D zXJ2dX_NMr{+6RZq?d|&R(s%5S1^?~+wXi?({_V<-eUIJr{_WCNccyun-rW!#cC(}( zznXND*Bhe4ZkF`JFOqKbpN8nLn(X>xny$~T^<#aO-t4ar*0)qY z=u7R?PpKV!_(#Y7$@Oso`}g+t`8)fw*5YmDc%&gYVK>#@-oKml<6TK#^Mj-xo4d;T ziJq=g8H)SvSuf9!sbNbh$H)ZeDhc8vjihuBOi;6qi%|iV2BX0C2abq`2@yC9O zA3gCy;>K>CFMie!oyoePH%sd`I-$8cuG}wb$Xx-usrKIa8~;1$CTAL=!)})J)k@M; zA2mdW-7M)xSERg0|7u9y*v(@8>c{${uc>uMPyI#~)}MCP9lgoAV>e6dANy(D(X;-L zb;oX&)}MK1-I;%rys?|5{OL#D=xZwPXg3S_(~rE-o8*n%Eae~jDR1=T56K(5S<1iq zP0D+Ebwl#TZkF<=A9f9$8c(UU(UZ|r6%fA(oOso1rD z&A}zgU3OFU;{HX)yqoBlf3u`#pQ2;`n&_~b*5~J|o*%{g*Ft;y{x#FE`hJ$4KfWLF z{Q8s54xV3`(+~6cpDFw1{Qdn%=Ons#erBSN=WnLS`^Ryu<@R*GLC!Vo zrq8zv8ei)yeVl(Yjw`!a8lOF~;r_8O{~h<2h4%LSr7M5xc<_0uYjgGo#Vflhd++*i z4x-~+G|^!h5GjX-nhRC z`+FYmcfKE9s#?}(dVRyeX~i$Qsh0NqZ_>}cNqRHho255pZ|e_ix?g^l_h;tldCfid z%go_tW&LBr{2vVQVh(wo(uq&Hf`-R`gp&~L>JGO z%=77q8@)-~aoo&O{Pbhq(AU(wMY~y;Kl*8X()pOlx?wj<>ot6g~UaM2Foh>8mS~u6m~-I_zdiPy9UBh~JF+UUt*_Kc9aK^-rAWzQ^-*K~J3M ziQmL8cC+L^-Y-=r@qTH3qW|msq@Hto@BDL4v(MuFD3dzGZmPYgr%uqD)L|SqQ}&`> z-|wTors@zqbs4$%erRF-n1AAD{!QY>ZkFPwA915Mi9e2;S&E;2#ErhD;*NH+5I^ff z+^nBT+}O=h{PZJk^d|AgaWhNt(~r2(*HqlmZWiKaeK_ypy*88gHrP$I7uTQj4t-74 zEqdxVa!?~QNrx0F}4+K}4Cn(@-E(-txGGr zDSNM;ce>~X=Nh7m?|L&k^|?OcJw^H{^O%VqySYKX+Ma)Til60M8?x?vO#L&)pLdmh zE7V@qF4bPG*sH%!d-dA2_=$T}S;bG>tNf0r-_w?NR0oglKYaK9VKn{vrqS-b=l-L& zA6ke_zcbXawa<|{Hvhh-?;o=r)gAlqyFk76)cN$|);U)D-*}G28b8Ze2kt*|S8p!= R(^!L5t^0_zo-D%ohLv diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds index cf292a858d8516c9235c6f82ca56a65bb23f0a54..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 7830 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds index 6e78aa646a1e332e69861a4b31dcfa7e1e48070e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11094 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 C79h+3 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds index 8673c5f79208290a2009d7a4e6108447fa198f82..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11094 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 VJJX%ZD>~QU$j);uX@ADm{{U?Sa=`!q diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds index 1ab9a7986868c0f8bb87e9cf63098d7a7d70ab38..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11094 zcmbuFORQa08OQf|?Q`zqTpp=tr2{59K*ZY%(#oK=r4^B)hDS7waMZLNDAHOUrojO| zqSogGO~k}F(uo5gB%&tZL>)OX1|u;-2m^Is(1A>h@&8+E|M%YK-o3w;dIFf86z4D=tb!P394AC?b(`rO_dHW#N(EY6%=EY6-i%KE9$Tdi}GHWxqM+z5J&1 zo&H_9|LK*v-`Q0S=@;GX?7#9))D``f+SsS@K5$-f6d=z|HRxE z`$w;5zd8O^_M6hf{)a!yesgq3_M6gs{lvWfS=C#yn)9jNOE;y5{@@ z{VV^>eslG!*>6e@`=33P{pQN8*>6hk^-pihb)UY}kh-IrQT=I0uJG4XE|YEs^{3tF z_3SsPJGv=7jGwyGze(NGeJgg>zuLb>=Zj+FA+>+B;bqS$Ch4ZG@9e+j*J@3EbMS%e zH>LObi)Zq>AH2}w({iAj%ll_ue^vi0*Jt1Ahg*~{>1LO|+CRGXFZK;|bKCxv`)}=^ zx}Nq=6JLA(jQm~uH-2<8@^{7Webn(H@a#6n-r#= zzv}=N=lMH0s(xO|^Q-In%Ja?j>iNACf7kq>Uvx9-fAU4GlS#+?uI9%judkM0 z*|@0n)ir+ND}KHd-!1LuU-?~KKcV}-x8YzziI#5adVBpY`6utpzR4dO;zKth|LE7* zH$L4EAG#U&iF4!09KU(l@f^P?J&Ye8@tgRF-;DgkiI4bAeCTH6U-^`tyN~Ge%dUp= zYc&6)o4Vc`Kke3(FZ?y1&HgoWBlfTSIQvcZQtoR?5Br}T$o`st&HkBrAoiEq`-$J2 zK9>Ea^sxWQ1KDquZ^?dBdgvdQ*CM>kLDkK<{xC2^>j&b9!sc|RW48~78<~@Fs zd5>;J^PhIid;B#u?~`r@^PhIid;BKz9^H)QKkbmYr< zR56{4&R6Fn(dVN}y1&*9=Pv4H`rKvu{$1lIzI6V5v|&1TN;iG}?2FIm>kD1)>|gPx z{uRIJbFbA3WCHqb3z4gbx z^0n+YSGTg?lpgxam$ToTem(n5>7jpiWA@klOZLyq8)N_Eo7r!cH)X#mJ?wwHKl^LG zlKo?If9xN=n*HYJ+u3hQ@9m%G4|V7BS54JD>1I%W+EI7>CUr+Qqx#d1y5l#gd%ADM zsQ!FTp&vfKn2ZD6l-@gj+R-2Wni@~i&8^taJi%`=4*aI{uz%JWeslii>^G%{e&#uT zlX*=4ru1Gvd1l>^f0O&5o6-8A9sS_1seB~e4Au|(9C>5^Gszpe8Rd_5)D3@4)h+2} zP(Ru+Z}6MU8+0?8KdGJShoAaE>V|Gc^`jkm#%Gd8bW?h7{rKEM-uV1#k~efS${+2> z8~&QgThh%Sf3zcS_)YSLZbtb_?UXnCE_M-`KKNGEbGr?A4fN(_tr19(>{-%{T}ihK{uuM`dMe}`>a2cIMB@t?f=Ayzoz2A zPdtgi^M~uiiQnY8hi*#mjh}f=-kJY3HJ+rKLH=pSIPsf|1KpG!_Rl!+n~Vd$8RegO zM%>K5nupLs@|n0GZ_)_ZjGrZ|82$X`wQ z$RGa1z)zg`h`XkINjEG1x|-4U4;q^34PNnY?`KpwQNF_2l60@AG=1Sl=@_ zd|Vo@^f%t}8@k_%#g)6u&zwGS^8Urc51w3{e&GIdc~qBr*YUaNuCqGU=B!n2Xr0_A zmoAzcA6G-^ru3b2)n~Q;WZ(GT4e^bnoAy^{N#&~fuAt+rozEh^|M`5Mbk^2=p?||+ zs-OP&s7J~o) diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds index 08f29ea9525cce679f266ec6ab949fa388c4fb73..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15638 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds index 151b7ef468dcb06a3130b34809baf44a1dc85056..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15638 zcmbuGZHT5-8OQJEW$t-)c4l^FcV=aCKZKx|EbF+swz(PZx*Db>zLf|%B)j{ewp><| zL@5dBjR++PvM(V-5`G9;!jk$By%Bv#2?>*sSPNnai@wBGbp6hC{^!1*ndiP9-A0z* z`oGWrT<7gN=REhbQ`J?!8dSS`{p!Z5XaDij8~gj-e*NIbAGzYnwe{mi*H4~WUq5wx z{p9gu53R3V@$iB5kA84%-$(YJTwA+k?c@~)s%m90^S(o0diTx0_|BW}Ir75g-}>e~ zcUHS+g4*l1Q~PjKRrNx@x}mBU`_)plXK7&V-B(rpON?J{xb;5QMSDJ6uBuM|{N3&s zSD$phX!>UVN)sR7+>KQw$|p|q(|-J-+AU6Oe~v%=k;VOORn7dQA#u?~d*0dp{@*ubcya7sdc*zV@}uq-O%L0@E%#qsI_Q4U^w7VU`(Jp@ z{fpw1{x9VI7ryBJ1u^LVz`R>5&cMowb5Gg-n=YE(*?!86%!^;#a+~`_(?kF4qwW_+ z%kCFV5B>E)_ZPn8{#ra3`-kV;FU~yWe$n(WK7DWh8Q$i8(Vm6=e(t|GSa!c?dZ)ks zvCrG=9SxZ`bTOJg$}w;FMdmHln;Fd?<(N18BJ-B&&5Y)ca?Bh4!k667{N?9i|Cu-Z zBJ+k%jOLGW%pHD_c|#YY`J){3hF@gfQoWfI=TGO~Y2SByueA8EonPqU`1$AiXZDYt zb>EhswP?Pii-CV|y~VPh+5HWBAF#17U9=~g$3MrX+|Cp37ccmM`$f|?`}6rXsr{UL z=%UV_RU6iYer5f?tY58E^V}b{Tv=6H|Il538plhlFRwJ?OTFk~RDbV=xc>7vzkU94 z|Ig$69`m2~`JLlW@-r^zqQ)oR-^Sw8e|w(pFCxD7{U!2G>OX#TQT|EuKl5Ij%O7^n z|9P+PJU(w{eRs8Q=YPi9cYXW*RJ~bMOQ&poKGSe{xAn<%(Vn;SXOn;1ocjxHZR6i2 z&UO2Tf3Y0;nD3S1+=|Vg>7wbK@hM09*=t4GjV?y*ryT9ZUuf-4x;Ul%I}W?Q@T~iH zh==3$_wRSVIGA_8XnJS=8RrGttC&A=@fII{(e%*IxZ@WYcj^_VjsM`+-hOfTkhfnn zJ&ZqpjmIxM=}zPNg)#}`fSjE}#zzNfP~bM}b)MSI@qAAHu@deq9l zt6^`^&L7i7d*111oLM)Ff1$0Lq>I7&q1^JT?iaT|;eOHdF#g=j?iaT{=6=!iPCw%} zv(Lw`@HHR58F63ir`?RdNV}<5jM`t{YUlrRHi!Rec){)V|E7!fJZwLH;*0o*FGham z86Wd6;zJiBKXF(;#1~mN=wh^fD960v7nwJ7aoYTmclZm>xS#x^9@E3|W8c9qvhUy% zqy2|+qrUqKpLhRA?03g!{o^Bl3eA^vaf+Y($1jri_{AvyDaX3UUuf$->0+?{DaXEv zUu54z7pLu?oE!K>&W%)WW^{fGF7$aH{Jce*_oR!#{8Mhh<{!VvyrYYzcdj4Gv2WuS z*|*WfX#b`h`zHRvv+n2o&CfgIGfu>1{6ylSi__w>?ucLbyvJqz65sUB_&jIb;TKtV z=wh_~D95_PUuf$t>0+?{D965mUu54v7o+`ya@-s6i`*Mhy_wPdfpXm2@Qd8r(8cKf zMmh2ZzewJoi&6eij=aGyl0T{5%xU?c1GH&Q%G=7w0-QX8l zH>uvtX#G%*amQb1aX;rT^+e|{&&gZ-B6*80 zM)^xQ@)o~H{-$~}qx_|u?Qh9n_`Lhs|MK&&|Ll9j7uomliP8Q?IrcsLg|E4v`)7V0 z#%JHaFS2jo6Qliua_k%UMfMMLG1@=s?|a_O-rJD8Ll>j`qa1mMzwoU4$-n%(v;RCN z@9>M{9l99hALW>L{Dn5}Nf(3jk8+F~evxrQ7pILM>lVMr`o%9s>o>)*`Nz-vL*^Y_ zjOL$mtUG*#w(gQH2Inv3Soiov);+oyt$)g~@8K8O|Io!~|DzoH9{$49?&ti;&%^bz z@T~hq_C0)}>7k!}kNAbQ@8M_vOAPLxJZIm-FS75Uixc-hy??ZF8h26SCQcmx>`(ds zbk6_G)r&m;#s1S1`rq=`Pr6@Rw)dITE1JG}{IZ{Ws@3oJ|4ibh`)g(tpZiDeueSE> z{vodZ#{S=Q(e%#vlw;iRi;Nq(sPW71C++=V^ZuOorxV{#=KiJkpU>I+?)T5vFnzAJ z_x|F<&)2Q-VO+W2i;OGdBSz!P=TpXo&$lAuf-XkmLpjC;zsR_tiyEJi6|wIZ{QYWf zKkJydtZ$LH=%V6J8s7=uAB@$X*3bP`x3!V|7jo{T^^>XncT)WmzW*4jf71D=d!?xQ zC-pzQKR@d8&;6G9=U$60>V7+^eeL)2)1FU^pWp9oykAd!zo+$^-w$nkKQ-z7P*?jl z^d)03= zBrnm$4f#3dClBzGA0j?+vaxVO9i__uw|{o>Ld z_lu@?jvxLd`)-i_i_4F@Uo<`RZ@r42 z(l62U&_DmG`^AMP+%K9Q`q^U`KasmQ@kP@^|5p315x+RU=6=!iPCxrFaoL|m;-ZUD ze9G}}pYV&LtK2V|-Wi{m%rmh><`G>qz0*&8`b~V1exr-i`ak@W`^A~BxL-6qj6e9Q z`^Dh__lu^7{{A)YFFfP^zBqn=9NT{wC;G|w720}Cy0{j^w|y?Xcd`9XOz&Mx7j-_3 ztXX!xZ;DTz6JI2c)4XPy-r0Z3u}|R_*@w_Y(>wj-$=p6)|Anvl`kxcWKfi2hKl>c< z3vE9mKKohXp6>WOXP?1eX!}Xh#Ycn6ETowCSXZQz9PCmx9XtaJQg zeYN{U(>uqX`dO#=Me+b$G`-VLo-)tmugE;0i>8Nu<_W*ZI>awV=MVQp;&5*)wEB`R z2J=rG);sYFZ9hx87@S{}W1qt>vX0P2)5HEVPxuR8cYiHj9s4==@Qa*##22IUk8DlR@i~ielK<%lmb?&zZFo#UU%+4$jS z{2=3oE=J==J6Wf+Ut}CozcNklj88e*iNDa=k#sTGe`qK77TPUxZ$THM`wQjBJNzR3 zKo_I@qa1mUUnCDxy_r$|Q!ec_<`>zE&_&Zb$B%N{8;CD*j-rdv{eg0z{ezoMQe&+JP>b-r0W2(NFv$?MU@zn%?Q>{N&u{{wQ+pql?k`PaM_>@kKs|po^w= z#%IpxH*FW`H@X=0pK^HHf9QXzH#6!#?PQ;%{UY~RbkX$A_A}3vWBx_Xadgr2PCs!d zNBlzTQ_{uY{3j0QEb&F|0qCOXo$*sSyC>l1z5uxgpo`J{mvY=&@fF&AAn9Uof2E(a zll~W4JCZI2_ZQ01PW&S0Ai8LJXa6Zjp5rfk)&1;;`FW?GeiDcN7ryTOXFcWToqp=) z-b8$nc|;eZ`xEa8$lKwy4ar+{G0I=^guEqxMDiA0jPjTMQI7r>+I>FhV(|Wfesb@p z|03rAx)|O6X(!`M`$h5)U5xUVdkXW+{Y7LP(8cKdqa6LlUugYFx)}7IeU^5z|BCDb z=%VSJ>xXizJN$(<9!VF2`yb_4XZS_(5M4AqjL*J-UnCFli_!i;Ira_wg_aLV7xVrx zZ(a1ypF8{29aVinubQdqcl2zv%wITj-L7x&^Gr3rd*<*xrty>hjr;J!c9#6I+P!`HVepgTLI{CN$ciTMgZ>WFcFWU1o)~m%I ze%IiiWn1;rY3dhy_u0Jit~t~6u>KAI7JRJ!nO}K5^u|D?7fw;#IcL*s3;-@_WqEAzdN}1<0mhjyq~`HA)Qqw6OQT;4RRz5Y86ox1Y+pM3Y_w;wtCwr@Rg`z_7h ze$e~i_4Gb9(=>yf-R8Pxu+VLmnte+>&G!b0mxwgC)EDQ zA(#H8|Ces+`BwjG9>4q7rs-bTG`+tMIrk@hFWuDhR)1eZ&HqAkpBi%Qk)}a6^}N+T zy^_bB**zrVqMOn9&4KKjdv?ejcW7|w=63%1+ccK^CiBK`N*|s7k#v6h^8WQMXqwqq zw0}6e@{nHO*zd55|VSH11=pS62{guyT|G>OD_D{W% z{bv8s>^G%{|fDYF@ELK*}r055c`+@nEmGR1KDp%59hyF)^9Fdo&Bct(7#aDU-?S* zFPPh`e`i^L<{hpk6)4v~*yhAsm{G%Othucc$m2bzm?Q~K8RkN8!sli%#TH~UTLt^U~$>viI+Vr6cGe^V@>n`hho z%|F!cDP23hIl@;pBD(ohyMOj%_RYO{gz_cboa8UB-;-WHdEG)cH@*Jl*RSI5YpQyl zUcXIz=w{@fbbr8yZrZ=5VRZk|_!oDZ)n=aiPv<(V`?nMJr_8T8ljqlYZbSttKa3mPug3hd`}4ZzZWxkvqnn=pr2U=!QM|veC;uk( z-+xGX`=5M%ZO?VL-I{;pd>NlF^51mcn$k!8*N)!5nwJ%;x~p{_AK?pfpqmF`|Dtjq zf2Cpz|Drh;`{xg4f91LCpEnQ2e(s)(Z|-<7`%UTL`ga}9{>qoKf0uc<-9P)Wyl-=> zBhvZ>~I?*KbM>{mg;= zH(3k)n$kl*>&9=gZv1Ane%dYFll|uM-t0G}hvUz5v%m6m_RpBz*uV4J*>5f!&3;pQ z>-g+h_oI2Q%-($7OH+F2CvMs6%9paA_@#g8p`UZdZ*uPV%;@}S$G+n?*>`j^+JD+n zH}F@U$^Jz%s2}**cl;*%j&5$Z|I{7)mFKdb`a?g`!~LV~;5Vr|_{^yO(2jrj&C&16 z^Kkr`ZuVE6&V3QT_@%e{2Vd9g&-avT?;P^Ho0N;vO+9b*_ura*{a+1<58aIXy&q@a z)ZIhkLpQhcH+SjrO8O@(|%o~5D=ACpisK2yh-uO-Cjc!KsC+?W{ z^q+@h-somDf7&r`{FRz_(#>H0v}4}*P3DbmM)T*KsQa8><(Yhbi)K*&@vFWkze(Lk zH>HR1L)~Zm%5&LI{imO({_~u=kKd&3qnlCvryVr_ze)X1{T50O=db#n{FSG(pZZTf z(nCM@F2*;xci}Um`xota|A4>ph3x13LwO#KPu;?AQn&D#QT?JFbql{q{X#dR`bC}* zcjRBC;x6fC5P!5&d?mk0+@YJ&Th~uJ;*Rkv6?aKDgZl^Vh&%iyaffb3@kcx24!=qK zrG5*e_@kZTEBPxGcS$#c_@f1Oc$i+02vev`OEH>3EY z9dU=>B<@nbg;D%bCy6`iXQkpU>1Ggrv?K2Do5UTuDZMrRXh+=PuT1Ggr zv?K2Do5UTu8O0y%h&%iy@t687jN*?v$@@0yr^)*^bTfMYMx5g#{!M)7X5?p{_?W+m z58aIX+*7%CaDO$qcc7aS?;rmBOzZZ&-Q?cRewe<$uPH?I`KvxZ8-D)Ue@OoF`P_ET z%jc{4^EZ!ws*L}@kZD}$rpIsdr}uC2o9TU%{HEVOwastS=Z{;~=jRj0*FL3jbzY|5 zx0xP)lAoL>ZpnF*b3->Bzmw)a;q%$C{Z0KpR{AeodsFGZu>07A`dH2f|KO4AH<$H! zKe{P>Yke(#;*fQXzQ1x@n$h|ue7--nzSO_gmHIDaeJTD6qxI2_b>TNz7rGg(k2=x$ zOUakQwV&nsVd{D7{@|zXl5Zw?KU#k#*59(f)EUO7{+Nu5ZbswNj&bpuu3Kg_K6Q$5 zsb41JqMOn9v}0WSrt6-$Y5a}!`MvAM{mMIDuf8^9`njKUQ_n~De~VwIo&08p*8}-Y z>7)L`qd!0B{U+!A)aQpxc`x1El>cLX_Mf`J{+syF&B#CaT=q@BWk`JJX5?r7)P3e} zrn)QL+*E(J%pV`~H}NrlGx9S}e9Yg(hi*oG>d@*%xjt1so9ol6c~SfM;otdi_L~d) zv)`27dj6>nem47;3s)}Aep7nrU-)(Qn~M)+zbQTRFYU|zO8u;pc`cdyV*mVl_E$ci z{qyE}yPtEO`a?c{v;UQR{-*TS`Qz^%%>K%A+21wC@84tbm+I#grGA<(=K47>uZYJV z$d~G$DIfE~pBVUgotXWiVpTQFoIB8@*AG*A>-zD}y^#IpjxS`tDLwRaZj4{4bE99* zFEKbj;)HRzf0&GmZbsu%zZr-6ZIVamru5eNbAI@E{WI~Qo7?%Pzm)yv%w^ecN^c#X z{o$O`>wh8rpqqLg`WXj*EVg;@HnV;Wx=6#y6$6j!&HQzM9Y9oVqHXzbQTRQ@4me zle$H}W>mk3bMl1vH_5}47lqQp@u_=^U#Yss_|(6|p#Bl3tdsbw)OwO`Ue!K6?N}#% zlX{45N^hM%?U*NilXE~frMLPyXWDW8ChI^qrMLRoXX-5bU#WVQbaVXkhq2cW+7Wm7 zP2vvSjN*@W#6A8>#eLGvApU7b-r+aNJ9IP3KiZM^_)YRY^;;O_KkcYH_$yU+l5Pg| zhj!ev@SAH7X1^&tJilF^$$pc2Tm4#kJpv*ymkKMH|r+!<+2{0` zc_I72{lSdt2kqGB^!Z02bpYMmu6~gB)Q?K#J@te8Ok$A#Jg08sH>uy~W>mjv$GPD* z*++CUI=|FT`;4FSgPa?>8J!>JOx|+tmCD1L2Wv?Fiuo8%3;8RZZ4 zkvykv2I%mZR z=g)l^Qb*8D>8HPuUZ?PztOLIpz5k&d>%?EFcucw(y#Jvc>&9=g zZgg|I^%E!fD|H{h&wU`V+<)h_ME(3i_rKlU=H_N_UPr&CK6pb%yFGt?|C&AD;Op^b zesBNq?b7&4zhgf5vSRzWW@XRd6L;Tv?5>Ub?>)A0_b2ZiFY7>)G_PkbIZ+{7&V5 z(%)jJU+BNVFf~q^Ut9nFS<=MytAD=6e%D*;;CH}TPx)Q&(e>Xk`dM*TbLu>(I6Xb& z?t{92NH_I-)c>K;&wBZrKK$;-K6L!$d8^;!@^fPPf%wqPP2(RL8~==auj-#(m&~=Z z8dth0eRTXWKfm*jkG};l@uj~7D4ggo=gU0}-^?3_#E))n@?SH$|C(v~+A%dGalx0V zZ`1rsR_SkDm8;6qO}Tn$`nqgut}1?->7C8op25u@xb>!MulqlHdm`Nm)Z3Ap4!!67 z<8#yBSxlVUg~!uZt{r{dMU*o$dj{`5bj$c`UbA0o+Ri^1sbj5sGy8qrk&e>W;aiVh WKejWYb9qgDb@pxTYg+p=)%+KCjpU#J diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds index a84ab8cb7f4fcf9b7bf0d6159a171f0675af1ce3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 10626 zcmcJVU8r409mVH-?Q_oUO^p&Qu|W|(5UFXRZ5n-$Buy-7YsIETDcD;fxgf3WC9z71 zQUzZcL_tI}7Ay!>`mA8}O=v+>`XCe$#2|U{p;S@uLB#c&nRWI)_wMt*mb9mo-(~Gt z^Rf2q*)u06HEEbe>A+x^KAr~pkI!J~?}NkU!owF2fB4YG=Gl#{^BWuIH#fF6&wX*@ z(BUr~-T2%m4&CzU!&^sgz5CGC;agMMH=2Cx_*1vt_2RRye&pmYZhq#658RgyOoG~* z*HZgb4HKm2I%o8w;=zbSpE ze_z`^zCD{Mnf95x`RPA?)BQHx|FnJVDM#-3O>)omRz~^H|6JN#yU>z$(aorR%F!-iW+4)A4IH$bNHhXYrfTSNgB}wfe2~Vf|`{mr}~QxxBuV`S0~j zYXknl%N@#>(9P*58*8 z>mIu4^|P;j)<2K0um8=RCAaB4EvXmX+^v4EuYL9B`>^f)P%paa`uqIzpOk*BJ=YQ+ zx@mvk_2@&-!Fab z^L~ojA3t5%ojlW$cG1nK{hs&VQog)DqxPr&F73|#(~@@4&8YpJ_w!Qw+}~~O-@f$z zeO7bnA&vJ_E!Wnxen~fVy}N!b`6q8GzRB|~@u8cMzxi_UP2bfLAG#U&c}MGdnmyGL zAG#U&=XVs}{O>LCp_`Hay8r6Fy{Ps3r!AS2=%%i(%#U*8gT=q#AB%r%9*q4H?QLn_ zY>pMbDLrhzQ6KP|Q~gc9OzA8A>DAKz!Q~Fs@2s0a|0zem@tgD;-HiI5%c-yU=|803 z=;m(y=lE;MPsF$O)t30s&E5Rmcl-+~H~ifH%pgCmlN)}M+|bP^zg$ka z;U_;xZs=x|AI~Y{=lL}mH@X>(pK^>F|AHEK*3Dr2lw;iZO~#FGM&r-rG;aKiA2M!q zGaCO)drZbXd#NSkMmMAJQ;vS)H|aOJ8TFrXv2$}w*I3u@e1H-qt0j(+1e=|8%;TmQ)oze#TR%_u+i3F)l*uKj~KxL$tgru3EX z5B3T8*gu%~(9OutbBd4W*2ITyMt=4Q_}D*~_|VPB&prVk`v(&rx@mvipKAXUp1+o^ z_ng1V{>$et<*fZlZr^0z(zk!>Yrp6GwOs#`rT(@3Epz?S&EEZy&u^Mr!|&GpQRVbc zb$?N*>pSO1_46LapWn}w`1AX{(*C~jbwVD9@iMePuqZQ}|fFOnm5OEE{5(JSAwG07^7Ed+$9u!Xhi*oG_8Iut zcbNFl&B*WdXZ!QlxBm3qpPuvYj``1X&HOicu1A{xrl0SbV%sxJ8~J?Y``dSZJ}~{ssS9{A2TI>>pk&eslD#;y0zQY(Jk5)ZctQFs~>-J)h)K zuZMp6iQgm#e5Ul!Pe1XSDxPyYFQSxN5r%_x7$kvo2q{L#%Qf69?N z{sonL*3BS)%8@&MlibnGD1Y`j?AzG?nC#oo&29U)rS+fn10U;;i4Wb3{Ooh^vHvmg zp_`GPeGWeMKPEnOGxD>~!NGXQlVkgTz~^#WKQKA*fHXe&HyUGoSD-WETlP0!cZb6aBkzVM<2O( zZM9DR^+wb>*Y`ZHe_y9Rj%uyvs`6a=T=irLFrUlxCmcMe=SsRMdFOqt{^@5*x#=q{ z=X-TerJJf}rGN5V@ioU<;zKth|43&#`Z@kiOMK{NG#|pY5JY`CS%1*JB?#{(60--|h0dDC&Xu z(9Lb_AMdu$?*|5YhWXuvIopz7x+%Te{*s@6zsEOtxh1~*@A{R!{yP8iSxo-5S`WmJ zZf^4*>*lYP@@LQYTXNs{nEEsKzphLAU7Xe>tw>sz8rG$+m38TToB5O1CG{eI^18%t z=JeaIwf)V>dyk*K=XIz}zm!mIXFhrVy|YM(}deOIWXU**PZE4LM98*@8(rkZo w;{LnuT3J_j{aw_>@8atBp7P&u{JzzF3H|!r#BTooYb@)EcKcYSN_(9C2TaxllK=n! diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds index 5804fa99dd188e057839365662fea5ed126f7c1f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 10626 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds index 4cde6f4523cd8560ac55fbdc88b0b9483a584e29..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15744 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds index 9c27d27f4e4f6fc0530d58c3968e96bab3e41373..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 16000 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds index 5d8be3d3de38e43e1fc3d99522e0c4e1288ee80e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 22080 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 =RF%IzKkOpz_bQ+Q5gBuvt~!Gzw$4+ z{x#-~?)vf9ek=Rty6xFFm3Ouuf8nLbWRXP)Ud^Ka6Ba&x)<56{Z=S02gj zADU-%*H8QTFUOcabM}nvo60-ek3aiz_RYEPW#3dD`tzq}zw&VQ=gsl&&&Jk2^{@I) z_RWQz**BGU*3UUJ_(48@OvW*tONGiqzjw4e{}lFrn0-^9cltBG*XgiNV|Z)J^m8ZW z=92Sktp9T#$ljdx5!ZouvK-i|4Q{I<>vNopZQ~)SU;7TkCdCIcKfswkM>u}OSu{N)I-0i-=zQKX4HSq zKjw||+hpFz&1nA8^Y>Zh`P)2_@4wtX%IBTq&*$7XxPP16H^|NC{*lVPoPF*eT!;Gx zxf$I*D93#RukvvAxqp<;!}fFEz&E*X;F;0=BbC$rAD{a_et1sdewp5%Os$)go5Ax3#lw;lCRchU&+zg&SD95_NH(592X0(1%IjtLf)(>Rekeku^p&aW5 zuTtwKRekeku^N$-zZC+YpMkaa+A4v%!NU&^sg z@GG?rQf{6R`>YdulXZY^D(~DsshrjcKIaW&9gv&KL!WhmSNT%*Sr1%CdFZoF@J-eM zo~bb{N7{W~$Ze{)XooXh!PPVdg=hpD`?e%1*d>&C<*HzS|>-1I->>i%c) z98Yd4@2sEp)K2-dA0Oh8o6GsVv$I!uH2b_)a2@4g`|)Uhr99e?pBVUz z6CUGNDKF(_;Ils1=d2%-=OA)Zd1w16$2{X#Y8+E;?v8!N8Qt~$sP1Yg4 zsl3zYdlKHe`2NJ?y^Gw8-oN;s29NJ=OgwTk@>w5vtUD8r+>CtYnSL_=Ci6gUD(~z+ z6=Wuc}djDda zsh9Du)b&zs2KCcU>Y@E6=P zGy493_Z-Uc{$sL^$W7&){pURkkM}PVkKBxW>fxNA{>me{{-GH>zvA7BNXpIN`IT}!r{J4Bhmf1f!}jx>f^YI1f^SC8 zuax6C1;0}3DdlGH{K|Vi_3-|0avgG0d1w16M?di^)t{7`!Sfg8c<#eD8Aoz6dj6vv z^NepYkLkLF%ER`v&hRT=&OYmj>nIO>);Ye(I>s}Vclzuz#+m(Bsd-De8O$H$SU314 z^GI$+>xXiTGrq|@rt20e58Kap<5y}v@tM!WVE^zrG7{_?4PZeC9K8ne&VLKKsw)zR&(Mqx(PC$D@7|kKBy>RF9tXsGsL&$a5UI89hIz zdgM_*KExw8m-Bh<#j8A;eVzxoj`Gg&r=57TyHZ}t&A?}$F;48iO7$b<=A`Fe|NQbU zeQ$n^+RyJd6sDhBDmRrM-~JK5(Vz75)559iG?(&C#hw1#FqfPASxeeMZt6On{*1~} z&&+Er@yN}{@4uP7=^wSkBR3;|@M!ji=eEQnH<$R=jsE<&r?OLbYQFFbw`e_(o61M~ z|GCkh|Jvj4&%lRxp*;RbBTZM==iIq^k?;tTe9x?W9lDM`xkU1=D+_# ze_P^U>ED+4$>-9a=kwnSGJIYB3C--b;YH_NdBHpPXZou3yDRt8-%Ij3{+_EYx%i#e zpMG!axrx61{+s3dKXs+v=daPRFx-3jd7rv;d<5V26^2i6g)2UL)#c}xF`Utrrkno* DB*O++ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds index 22ba8e45e16e4faebfef79877dd3136e337dfe99..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 22208 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 CyQ2>P diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds index 13ee963a1c24fc9a0a13a821854db323bd545239..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11190 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 N-LKdGWBor2{{?FCHKPCk diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds index 21c707f1bca1739a83f1781ccf7b0227b35c12e0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11270 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 GU;G#AnM?5i diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds index e3f25c3d1889621832bb41fd19b703f74319f6f8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 14758 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 i!^ydo6*rSt#DLK!A|JRSnB9_t%*L^ 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 Rz31$C#aX2`&4|;@e*v$!nZ^JB diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds index 630bcd2766fb010f20381d32bdeb912b3ed54ebe..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20262 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds index 1ef07a6b06fb2446f74661a01dee332aefa016d4..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20262 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds index b39e1dc95a662bc25bb44d813023a9d3d7f3c807..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15602 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 Q-~K(9zq6eCoH$$jA3ngu8UO$Q diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds index f8e37b56ac0c9da4282c71cd9b744da59f5161db..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20544 zcmcJXeW+zs8OHZL=bm%!_k5@gqy90*WT}IWY50ZZ=xB*nI4YK4mvkIUog6i-3CXFT zRH(>^J|qaszCcWjG|M!oM6~|U%Koq*tfWNLC@dxF`K`5|z4y89{a$CBZq%>)?Deem zuC?B^*53P^xy7*P75(DCiC%G9F`@tPGcor65AO}HzHH}_M{Qi(wsmpGRf~&PZCl*2 z?cxtEZanhZV;3)c`^KZsJ8H+qjc0D$apaqdV&DGY&6{pK=8Ru_>$&4L-*d#*ZaM#) z;=n;r`*3$^pPVX+;e4;SpcpRniVekvmHncazrHB?M-;`1@77%L&#areKDnwWTK#kx zfA6rG`1moG_)kjh@0;7tC3E}9qd4|ipH)-8rS|7?{F{s6YkI|?7_OP%fA?qH=MEU0 zwD!yVe5IJ9U!&g?#i}0{Q)`EB-E_{Wd*+{b-?+aVzf)8EE6ey#D~iE~6~P@fNB`3A z(oJ1&j^E4tvmeWTbAcYoZ%S|a-_smFkGtm)GVbW+lJVcvod4pNnzuX4`762NYPB!j z)b(cjWB$~xd<(zN^+0?nj*?6Ki_Q2ae^wML-(3_lf2qm5qnoCn=m;I*nPCs$-L;Pm%;T*pyz0*JYj~w^>wwlC^ZbtD_j=1rg z#Eot`{&M}CoYv3T-RtMT!O7?6-sH73`|qNdzPVVvcDVhDtruUuc+J%pFJAG1%Xj8p z?P;z3&;LJa9X_jCzqz+#o%)h$y?1ZdI$)KRx-}GtU@X4`Z;9_&Ue3+q+?&gEm7*Pb$cNZ#8j-mkTWZXOc%rFb;=#hiE~_r;Xn?2A^V&bAFN z8`p!krJuYWCwHpOn~UMv;o0TRQjWwcat~ksYTTTwd*1f+Cti(vZ}nS8!)}lH-s<{qdP%Zs|_m|BPyStXNn(+BDT(M*q@5-Rg8q?YEP+N^- zJ571FIeBE|wie$QUlp!%J3Gw46%=r?|oexsXF|0zem@tgEJ)mt*^Kjr8* zev^KudP_$AAKjGuJ+-dE2NXNH8T6lW^c%lPztPR8|CFQO_)Yqs>Ma@dpK|mYze)d7 zy(OdmPamt(WWCnluNu5pzoVP$yYq)~bAQTybN(aQZ%XgXKm4=b$bNI~`0O{OhyHZe zqWCMmnEf;6)^7jciQMnuRSn*&xj;9A{!@;A<2UIyx*7GKa`YR&NxxIQC8PdRj(+2> z_+s|c|MGfs{PNSDpLS1E-t4D4ebr%3>vx{^OzEM2W<~a!EA%^lQ+lU=aGT;*`QdkJ z;zKth|FoV=@y{sfO?>EPy-luD(r(Ef#t~cjz%+DP; zadW3`GVbYVy<`;s#IssA$LIRH;xB&E-G1Bn(LTEA_Q%fuvj5~6ag%>0zGnVK{U%+HgT`j_4|nT$KS>He!&>-yDOz0UQ;`s9c8Y4&bco6=3`P5&v)w`r5>wZ49; z0y-bf`OEaXbW?ihpViwi{N`Lg`%USgfBO0CH)n3iep7nrpSm&o&FQ1E-;^HuM+aqp zMc#&~|0DCD*gyDT_M5|tvfq>*wm*4R_E%)DSNmzthi7&B2ahVZ4pHJ<*WhE?pU}nt#eM z@AxZf-ji+y^G`YE9ly!EqnqLUYp#n$mDf3APE6;yH>G#x&y?nB^#OS=t@v||1-f}a zx1SutNBb4!OS-v?f8|}-Z?3u^`%USc@ejYC`wIC-Z>fn7-CWL3-1sXhZv6B=F^HdY zmG(K0Oxi^^qxKnRe4I%pK6Eqk(++XdenrKdbTf#5Vnbf{6TfZnG2L&Wo5A|09P1vx z$+|~3qxDZY);)fc^`Gi38LfZHvF`Dktb24bTK|+|-Qzb||Eb=R(fX$x>mGl_hqIsk zzr5a=zg%bC<2PCN=w`J3DaXE#zv4^T&l)VRcec+t!T!(rTT%0#bTgQL@@(S4oPTET z%A9|u^v?E2yK=j{BclC8wVQM^XrFzOezSj8RKJsM2It?*6M5cdKiQz>E$L>ke^ZWm z!*4Qg=w>v3lp}8Z6%}{V%^?2i!?SPtcMZyybaNR$apO0M8^0OFPdV})e?^U3(#>G} zD95_PZ?gW-&1n6la?fW!>z{g9_vmJ{{wc@4gU@9DK{uoQCzaFwhoAiqvhSgr(f&s{ z@*ZDB<$co4Apcn>xPKb6zG<7fUM^Nwyt^G`YE9iPd(qnpwEr*fKi{LDXO-qFoy{@FjdZ{z$nxo=DR zYRTySjr$Y!UG85@_FZ%{+J7lWyZBAoPxY3J+Gn34Z`r>pDsPi+2Kmc<4smn;V-h#I z8O2XI;>K?hf2y}+6n{D+)js#Hv=3<)-Hh6w|8-t}3m*CV{)!K0KldNy_0IE`c_MF_Ka;#gH^cl@Io1t+lXa8oEg7vJ%CTd%x#t+?$#xIrA{NZQ*AoGT9 zM)OBG)-Aq@TDM6z%k`@z#``5b|2N(bAExJ&^8Ihy^}*Ko`qcIH_455`e!tLsf4p5| z`Lv#oO8ULADLv(PTl>_%dRzDPnbYFy>05O{|H^OOb+$j!_(bh9KGAjJi^jM2AC1dB zE%(>u`1RhU>-*?^^{q8|u0%I=y)%C5?_D0(&%R0hW`9+#-)!AK%lLSY-~X!qyRPPn zPiZfgZtD8W_pe6(D2LyqzwS4b9{PzhwQnjOe8iQwDi|NF)w%iZ>&$O&{PU6V{MPdq z?eP3%(hr`$%&7nAJ>OZ`&wXHej?=nrKEFxt>_5**w9E68NxSG~)PCFZ*MizdH>37P zyK=kSH_<+%U34>QpK?p@e`y!pjN0cun|8VXHfa~#jM}Fh?c+CTw|V~_wa+<)kMqmK zk8UpKCvN;EapN}~f7|}Z{uJit{YCm2`+VST#VWm5QUyBq5B5iY{?OXKuKV-1w(IPF zj<4-H`+Ia9e^fu~)7RV1pShdzIL>dW$^L?FYMeXQ7v@^(mVT)fBv}aulQv4&zr|}`{#5Y zvGO97@6}v2ulS{#y58A7=gP|alzShqx$2U9-k7@H>7RO=?k}~Tr~cmHkMujbIlljl z<^S-W>>FL!pnOR;m+=!nev`QIn^F9OH)J386Zj!MbTjfZe)OO5tEjk>ZU*tw4nEqg zC|}aez|S}nH{)*-H@X?c&pt)o^|gOhRNf`s4Dye1tY7>l>lWRN)-UDQ|L~jad#T=% z(f-%_w)(C7?{BF|-lLmQ{!^~ECi^SuIXCI%n(q9cc&)t8=xlqWCi^D38SS5x8*Iw{ zih34Jy16NCKfOy+`(}Dqr+Q84o$Hr&*tdw^WZyzJqy39=oICg{K9&8PKjrnXedZm% z$^7Fpqxnzelz;fiKSnh$)CRR-z0C) z%_x5;N8aGCsJuzK8RQS;$Q%47d4q07`IE{ifAEt(ki0=Rqx_*9d4sQ_@+RqKaR0(S zH&O0?X77@`|C!P|^N(`^ALoaO58aIXoU`m3oWB*dZzSCe_79$;$XlMTO!5}pjPjRq ztQ-6$>n7D(GFm^BW8Cpq)VL?z491^w%sYOQc}F*+`KKJ~4u3_hyQG`J`lB4{4!_B| zLpP)K$2=GB&+~6i?33r;l-`*?oYVL?zfFATX5{BSfxP4X!6fg{%_#p;JMz;$euxj< zjQp%0;^zLrB<{4XN-h^aKH@j=r+$@;{JcjZ?|83NQF)hiGsr*6k@xsb@*mxd@;{Z+ z`oquqgRDDrGg^O?BX99lRNf}t4Dy$92?Azx1z=^>1Hr~lw;iRn~WQ}8I4~mr*Xs2_(8@E-HgVMa*P|kiW;}1 zn?e3kj&Z|pGH&Q*G=8iz?weVECil(gW_15dIqrM$o80%Jo6-F*_Zj%O|1j~Po6GsR zZ^vIz_wD!xW^n&bocM^pqI^j=13&FBZnSSQZs=w-ewKT5apR}| zi9!5aXWa3dj61p+jX(P&akGD##Eou7@l%et@mEybNjHP|DM#G+P2xs3qxjiph@1V# zByMywil1`CjlZJePP!SyPdVboZxT1U8O6^!CvMiiN!;jW6hGyN8-GQ`opdvZpK`>F z-z08yGm1auna)k}kMk39Zlasf`N=wE-(>w(d@`?J&Y$vn=lR2R_I>;&`#!oE?f<-g zX51ETXi(#pbTb$~$}w*EO~wt~Y#qPG=j(j#v>V?a(EH>1`ynmgPss0=%liB0>AC2^ zoLeTJYoVJF0lA*GKv{uC1RBmF>6w`=`5=ANQ-?lByxi?|vG>{P|Md zzrk~L{cYEq-*0KV&gWZ8zTYtx|KRcXddv4)#{4bcKN-7D{Y$=oGIm{mJE4kis_Op& z|2{PRH7&-;-^(%my&QAN_j6uWf7Jfej(UFE+UNTjDQ|AA$>)~k_cjuv{Au}oRPojQ z+nvux+v3CT&uvYAZfpAU+cy8~eYszAXV=7sZZ6k9e?Hrmf6edrv|VR?dHu9qXMUpV ztUrG~-_}3=O*QLm=C+zCkEENr94aImQ%+6cHAD-rf(dow#{2Mo&Jt;?;MGf G#s2_haM7Ru diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds index 3b09a57857c408acbeee8517e7934040d66b3b7b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 21056 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

*H)>XdHkcyIfhM~b)Q^NTsA{RiEY-s_+K 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds index c446cff9121250f7b6556e4d43062359801cc7d5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 28288 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 Ww*CLj*-pIq_#3~sT{{cneDl8`we|G? diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds index 374b61592344b6b388fd70fb9517ceba045c8ab5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 28352 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds index c29d732e30627c1f0ece9cf1c1bc8bed88fbbb4d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 32256 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds index 6c8cea01799c07be90596f5ae2440c0d98890543..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11294 zcmbuFO{iU08HV@y+vnu|rIAz{6Ho^_D23i6wMi?6Bu%W^)JlJ-6zx$-f?#Z8nnnr= zMZ~K3gD8S6iX%G^L5pCEAWqbYf&=LwXf5I&4m3Kb6A|BMt@ZA`Pwv@YVm#&c$$j^F z*SFUCzP0w*=boyrhSjLrGZ}O6lk>CZ=JRu>=Vwo! zIzQjsd*R^x%!Tvw58S=E@4@|NH#bjgp56cEs@gf496IvZ19$!G*-N(_d;aEcJ@e50 z)t*TZq5fYZjAvCJKgEAM`L8Sf zeN{F5pjv#b<&@v0o4OwQXYb8^bDiJiH>Gd&@67S17jxX%OD&0uZZ3^q{KR4Wt53J| zxXs8v{9E>o{@D^Ax*7S2&%B9mdfsL<|H;Yht3T8dAG&#&|5!Kwqc>`-Kdh?Jk6MoI z*6-3yUGJ{{7XRp9*>8@&ko~6g&_6kl{SAMa{S)&*?5{tT{pNH%`%US+@h8t{-M+7l zvA5;6JGFk&OLN+pY6zb zpFP`>yrY{@{!=^UA3ynr^G(N`nSEJb?5xKp~L4?d+6rk`I+~h&)*+p-{8d# z<*U%m;=f)?r1M|?8;8}-YK`-Ma9r#3yCviE`M9M2bS_CZFFW7z_=^7;&c`eIiA%p` z6#tsf$1;BW{$=^$42kk{4fnr=^$kezVqDM8Br=Fn+DG zhxIe3PiDU1L4s*)->!X8_KBNZ!%SDE}+_vTx-#E%Bk7k)Jr!4RKBC2HlM6hj!Erev`UEH>3KY z9d(1hq3R~-W>7!0qi*n<)D5~B)er5c8~hDbH%T{x`k@_lgWsfX(9NiRXh+@PZ>YLS zx*60Dc_we<-z0D7W|TkLvF`XAYTc7=2J25d)*Zjex}%%X`loiPAN8ZQ`dXnKh(#w zul{>WeCTH6AOBX*oyzm%sg~OxQY}a~b-g$K=<)0uzpf=dbTjf3hxrrVWZdXxG=AdX zBfg0b-HiOKGxKNtO~#FGM&oCl@v;6UK6KOm>m}>?SMT4$=imJP-p{|6^1kN%E&CgC zu6LggmhSJa|Et+IEL^{__zR_P&99$-cIUXfzac&(KJRbLC_e25f6YE~{ny1`D7`m6 z_fg_I7VZbtEGM_l|S@sqzWiqAe~-PqqI>xXVe>zDi*fASYH?&L4@_?OkklIQP* z`rtmnx^Vw6=^x#6|Ffq4^!a%z2e z_1tZG|MvCo=j$t7?~BjAO`pFNvTxJpZ-w5!#Xqn3`-S(%&D!@T*__cX!zn?gh&*%6i{h*uD!|{&~W`D!qXaCqd82g8R$bNJ5#q2kw_r_=b z#Nk{tnFqQlJ@gX?zsWpOzlG96|M2$gZ>ag;XFiFy_xoAr*)4hg4PVOh=Wkl&dT;!c zr6e@{hY=48|thlK4*5~zJ5RR zCl2#A=?C4E-Wxx)Qyl!ngR7s;ep7m{pYhR-@tf>pbW?h-pZg%^2KPsk^CR6K3#0Rc zcI;F94OIt8H-r68JN6BJlYN73M*D|$>>KK5IM>X&xZ3I2wvgQS~5{iQgnfBe)xqz=)|sQzh3-QY8+8+0?OAKoWWH@tr^sh{-z zp)jf+=1d%FzoGg|x*6Pmh(p~GzoF_b>1I%Ww4?6uo75e;8Py-{s5|^7^_TiBjOvee z)E)kYs=K6{LH*H=y2Ec$cj#tRf3#z*@i$a1l5Pg|m*S}I@Kb+~x~<<2R`zbW?io`AIw08Gl2qL( zOrJYQH!pksSQtO^#K-*2^tpp{Gx9S}e9YU#hi*oG=82DaoA}U8``4QFfAz4suc}`& zs3ukY+JRPXZTIBxuCMcYx?0;aIjSDgD}6^`{2kT7#p+eN>W@5n^3<96HcM7@@0Nv(DJSxxs@ccGTbvtWHrIe%Ea{;K81`!#9lrmkNyZ(xlURU#7%d)HV zT}$m%?NaU4n!WmD-m7mqonC3LYV_%q_A1}Q)cd8CUG;tUJaF$F$Mb6ZKfUShqu!3) zd*mJOQrA25Q+m_)NSd*A&yi+qe7~sd+1al8&Lj6Pj^?WU+7nmuk2~jB6aVsaY~_>6 b)pPW9^nnw1_0Hw0`WhVG+SgQTGp_y%z=1dM diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds index 93ffc1b5e1501b8dcf31a48c7d736a37efef9908..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 11678 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

K5^Tw&UEkPvaZ!TGJmZV^=DZ97m-3tivR!s diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds index 96e15e41c02429462b2196c2e74678ce73836d79..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15838 zcmbuGYlxgz9me0e?CfN+*-Ns!H8vm$t);|vn_g@al_pITZB%-rrC=8&iK5YlG%b`? z5h>mfZLwc$5v3p%tt~>3NyLBB+c&+nY~IWw~}?>{C^Sbn?D zd!F}P{^#;vSnXWwsNL_Ws)fDc<3lcfFYBhRcbBSay8r#U z={r^anIUICslTP0x<2V&uIt}bRdaV#)#k^BTzOc2>87rS{`SS$Z*IOT`%USM{+UCn z_XV~6Q$tcOx~c1p{`TLhih4W$7;^9@{Vv^%>Ysf%`}%(v5+Ay`!M{JnZ)YCA8O3eO zMQZ;QBRr+{qnj6vwSU4te>nRK&t(6+c{uhj{2=?y#XZ??N*^7+iTW2`%YJj|f$TS> zhyJZ~{|irL|5o!X{ohvizwk`=E|PzH>EeWzoWLdAJF_cHDpJN4c*lB z(2sZYr+ZWOo4OYIyJxcBoOvYsP3fV(w0$l-y8q^; zo3h`O9{M-c{Wk}XWWOoB(N7zRU;oJ=iCb!W%_x4UoZ63{7((KPZbtD-<<$PhNPu%dEct(Gs_@#2EvY+^IAL52?M)6DK&eXn|#0}k?8o&Dd z>s+U^La+X}hirXFv5;=+%4GjX{HsT^-@M>w*>6g3^jH7X+4Z#Q(wSTMrfNhtpKkUK z-j#iWUyo3}q?^pC7gVJkIYie|1vpR_Ax?r6E(^ zA>H)(yP_qc{7L>x+tqS4NB-10pmG20l=uYwgs*DOp_{v#+fTVIPh`J2e=z$^ z>5cuzzc9%DLap7Tn}gWDcs%>fr5)LCN)PL2+~~i_xKY1(w(%ow_zM*`{KPLYh#zNs z`xANonVq>j|4iwP?N2%0bJ^di**%f{ru5K1qxWje|H9v8|BSgS_V?6x{O0Wb>^G%{ z_4nJ^U-(q^_sw?f-}LG1HwVkvZ%PmAADqs9bMu4QZ%S|Uv(AVc>(3-^=w=kZR8Dcj zPy8TpLpP)NQI5FbD^%Q)ZU*tA9C5>M5;t@+iXY{O8~#GYE$L3Ea za*7{*;s=Qvx*5ff^-0`Vzb0`*H>3Eaa*7*%;s=Qvx*5ffa>NZ^q2iWwGl(DMh#P*B zxS^X-{3u7<@E0m>NjHP|QI5FbH;Eg%8O4wNYs(XA`<@{=H_%O8Z(M(rS5hcf1%c0(#;_M?9b+U`#&9$deP0Oe#()z z;V*nW`^n$x>y7c}I(Z|0le`h#jPl39uH5c{_Ikz-(r$D!YCq)|H++Q}x1^iF_)(61 z3%|*}g>FXs7vm6ZbW*f8tEuK>SVe26QvZA5yvJvY-5c`;a%Fn^FEiIr0X4h3ZSv%^-iE9C-tN zle_`ljPeJ{_1oEB_*C|jzt`6rS2I@D-8_>-te@Nv{XFul`_u2~5_!2kb zZxT0jGm2j-r?}xKevr7Kn^F8IN8Iog>i49ZLHsC3-0+*k4c(05M>*n#zff^Yx*6nu zlp}8VP2z@bM)6DKPG>*y<37X<-HhTl`;&a`_irDPb06J|&VR~r?&3E&chSx0{AHf8 zZ!zyo_APWX+P^5b<%#S!*>}-R>EZfe->3dU?fdx2UlW7F--0sTH)$_OE^V=!UN6-2ChUcdf zeqZmG`t|vH-G1^M_6_nMlXH7C|MC7Yt^HG;Kj-I*qxXNbzJJY?chvW<*?x4&{21}~ z9?pJqNzbEcpDBHEemOqMBU^t}Je6OXE6?k1>8AA1&%T7;WL=Err&IT*x_Louk zsTbXh>Zcs_;y0-u-HhsIA0n>oOQ!QOGm7t&=kH_jP4`z^)BS4_Uvx8yFXf0Uev`PO zn^AmO|BNf^-(+0T&1ifn$GGA*z3-VD#&CCY>|1<}STmg)(#;L~*MvXqTk@Of+>qb&{#EZEV}91b z<}c^?t^Yh zZ>&F+Q$6@u!;mk_?yy0 zfA^2sZ_a!p`%USgzr8#A3t!FtwmF{vP0U}~N&E`c9^yuO60dEppX;;}zuCJc`%LML z?Z;0$@tcezx+%TUPn;-6{7m|RZb}dR^b@~HKk%E;_*0H?$6u)aB;5?gpZUW$rToZz zMSr84*Tn6|PyL1RQ9u5~z)wBfzL4uTmoLfno6;M{5C8J%>^D~)%zjgPqn|ia5AiS5 z{gQ58((I>yw445$+y~u^+Mmj)9{jW)(r$D!YCrv-zbyB^@He^t^X6sE?Z?0HrR+Bs zcV@pSy>a~TFTRxh=F%6l-<00yXPmb@l*iwsALyp^&`&>!pGiOPo61HthC`X*|o5TU#lpfYkoba2BBYrcQf0SdK@fRv?NjHP|QI2uL zZ!&J^W;A{&&Z>v_F<&722)Ze~vH#Rd-cSB&lJ}#VQT|V!jF0x3_|VPBPyUXNyxqiy zZbp9IzmfOw{>>!sK{uoPhjQdy_zRVHCEX12uT+onKm6o>kh~AwjPgIqac<)?Ik(Zx z==`P}amH_QZlIge8{WHL zXZ7{a&pN?xvX9_1rH6jjIewFMjNgpl-3<0`%CT?YH$2j9JRC|(c2Ky)F*thYU#1Y+$ z_HW7&C;TRHNcXKNy)pijW1itJ)O<*~8Ju5~W1izT$=lG)D1RePyiXv0h1yS&ZU*mv zD91j7-((%5o6;NmPdVQA;5T_6gKkFef9NOW=)Xxn&`s%$^;3@L4ERmf0lF!@(N8;R z`{)n%K{s_R^s~?7H`6`2Z~Y@Z^s`UmH#x`fn$kl*=N$e*okRFJj}ph9UwnS_`C(PR zHb0+#fjoEQW$M>d|D2kr&oA`;d$nENQuQuqRWnuZtu0-jyKv_E?cd?`ST(m}X5XFo z^-BLoefI4d%a^LH+k2nA`_SQ|>-XMsc>V6r9lihmyKDEy(Ovtct;5ecddHO?-KBAT zVaU}xR8YF9>yu;cXT3aQ)obj#8oFQltf;0ghkok8Z>DFwd{(3}=RVS#{r}GGp3&&i z56FEw(oMI2rSw1itVyvPzrNwKqPs?)b+=Vl>p{))6GN`<*1DH&>iTH=KQ=bkG$--< zKKAilOZ+hMyI#Jl$$cO`baR7$?^yjO<$F^DdY!{s)pu>RR<%kutko;i>#E7MTInoUI9(04 z_x9hs_k$l9U-{>Lw`a84I^6A+kKT6k4F~er*87OQXEL>I7avKlym!=}kM_6sKCt)J r^Ym*@pUvMJ*~c2krnOUN{6X%u@3w)VlZ5IB}QYSfFTBvs6j7`F~kcsqQv)EYrpI4nK}C#m?7k8 z-?QGmzO}yZTYJx*PBo~yRj=CL=~mZP9sS2wXTzTlbq9BT{GN+1SzSMMV*Sk7_4Tu- z*3X?R@Govx4Nbp%y+AW>fl08aeuI?=6^0eKIXz(vu^71{$f>4 z_Ft=uUX}gk^aJ|4bW?iMe}9_)U_HNv@-_PRnCJW`|Jl^vn*JRBQtdw^@2&d(=`oid zlta3y&qIIr{OmX9ZqI&GdaHkCP*wP5XUClVOI4wpk$>txn)}zEHs_H#8W>3jRH}!dQ{w;pI&Hww?XTPb>LVy3&>^G+# z%6?ON=pP)({=#Rne_$So{nPhmzd2mYep7ll|FB-aIdgsXo6%K2{$%zSDjxjv=E>N<`#afhE*!~zQ+gQx!k@F>T)a2?P3fV3 zPrd%ar?P*Kxy}0b*6S~PHT(CP+pK@7Ucb3~B>PS2t?|#iGxy!hb7RtX=w{S^X`I%H zpB{wt9l9CyUmB-%CSOhZ4&99Uk8$)J{=#RnpZ=>q57$rM;Wz0!d}h>tY1~uUPycZp z`VQTU`Y(-pwf5Dd@6gSO{a4>Vd*@cw%4v=N{g~Xh&`o{5b^Q%LcRT!M=e^l)N^kX7 zf2^vx$MpE|l?HV$NxJ!1yMOM}**AJigYqTaoaC?XzdOGF`2PKb>R$KH&hulY`?hq` z_pfD@n4VvB|GBVREmb3)Upm()*56H7Ul1SHC2rH#ub+?d{jK)z;QqYD&-%E(o6Ot1 zzkB{k>zn&wyuP{f@^wdRV{(0T)7PK0z8yTjY*^nUKl7rSo`2H%2KT8}f83rw`iQUB z(;scuU-@5r{WsXZS8sTJQhW<%)vrGtb8&y}UsInq`*(|fbU6D9U(WuKc{uj(dNljZ z`QzDdN)PAXt!G!_FI4Zb@4L;}c7OGXo?8`v=ivqwchb!ue#Q|uev`P-%_x4x5jXxq z#hr9>oA}8eev`c6H@C}Q_ak}#%-$&PpD8`u|K2aM-|XL&{igKLKc(+=$Y0@$**|3- ziv0tv9ltrfmi?ymaQ^G&i`pGkS zBmX9OLpP)RrE$t1e)0#&8@d_gk8$J;U!n4rbTh~w05L&>R-lje&H|Fxs`M?IKLRT z>(T5tIk(VF>8mjvoaz=o^$V$6bTg`7#!X&iUEq;@_MK`1RP2*Iz_^Dq=-J+XO z{mxvH>z3ym>K9VC=w?*EjH7Px6{>ENZU*(sIO-O^N!_BG(p&47anvpTLe*{3&7gjH z$41;EJ)9OQ?xdSR{EQ=R{3daun^F9XBX0bKiaY7%Ht~};{3dzBZ*G@A`j-7O>09>C zjQTf?Q{UpJe<6K~ZbtpfIQkY}q53xIX3)Qkqi^w>^ews>^)KUw>Rf5B7LH{z2 zzQu3Sx9DcnziFKM7C-$9>05L&>R<9q-pId6-q6h`e`%cZhM)XF@`i3k`C}Y;!&j)h zCEX12$2jta-z0D7W|Tk1kvIH>%3IRSAb*S_Z}?5}hHggrOXHL`{NxXkH*_<~-|%00 z);OWLzddGWUTcwV>hsp~Z~E)mH@tF8eCTH6=RU#w+&4^o=w{^a|0MgSJ~}2obTjhz zZppqrKgCiU5Fff3`FT!T`o6}hhRo%gbS>$o^w$03`%HX%|6$@oH@EZeJ(m52f6M;8 z=COGG#TT;Q-1GVDH>J16&pPq3eiI+Mxt*W5@fRv?{KTIa#7~{DZ`6;;zM-4Z{xObu z@fT{|q?_B!&${uOtQ)@>t)Fw2xH)%C;zl>4_!&ps_zM+x(#;@##t}Dulep2%D1Ocv z;^y2ji5uOF;%6N5;y0NW-P~?|){VbV>&8$0BnIo}oLl*x)~oZ+Jm-dd{+ZHS>z{KD zALpNm58aIX)CoT7$Ha$jMt;sYe4KwKK6EqkbI#%8+%xf^n-l%@`(e&0?wif`Cp`C| zn-lM!4S(ma*>5iYGW$*GTlc^Ab3P0n%;$%>sQ1n2ru5L?{YLhi%jadkDLwh?_p5q; z8NPqd?>8Iq@m$3DX3`hLXHI-Rs{Paf`%8V8>?^t%?JwilSNtaXif%^x%Q?WjoDU}R zrgNiaG(Y2*7r)88=w>uO{YzfyZ(}(T zXF9)=>Sx0H{|(po^U3Dtvq{e8785+OEIp=L=in=Umx*zD_z{ zc65EknXa$+&2(-_H#ePM>*?ngjq_(^EwA77&n->q>c6UptrguV&|LKEF)KP5-ei zKR?mW{y0AuYA!yI{igI*KYfgk{xHjIuZ%%zR&u>Z({lk~C-<E>$eUpSckh1yU2 z>}TS^*gyZ<>^FCRF8fUBVf^ef@tgA(WxpxC)lZ(7hx#*F2f8Ue^fM3sLahfs>q)#Q z_75)4{=z?G-@v@Q-Ov7ZU(V|{dtb}zH>J16kDoeY|4iaQH>HRE{uS9@sCvdvJttn# z?q`3xhx7UiwVtG#8{hwJIX{?({Wn<$elzMH#<5TMP1b>KN)OjRyfm-BQ2ofd>Bq!N zV?TLj|IO(yXP+s(b$-qd@|2!WOkFSOW>7zjW8d)?YTuJ?2K&#r*+bc1_+s|Ynj7Cg zZO9*f*2(-P`-pBz57$rL@SEffzZvB(J-=w3>G`E5*FiU<{-I8YoBA<{8{LfJr#{#x z@^8+4A?M$e-nxGLob&ii@{q1uQ+lhPI2lj;g^DNXW{|(MPSrVn>KzgXx*6Sn7{@yC zncRoaP3f)ibD!tF%l+TvK7ejU_g}_w?&CK(_tDMh{AV2JKK??T`$;#0^Ph3_FaARH zZPLx4e;G&L;xAMkC*2JCmvNk%_)X4DbTc|X8AqSsH|e`{-I~(F{Lwe~P5K7E8TAk2 zs9XGns@tTSLH(wARJZu4Ur61en^FBTj=IHXQn%=4RKJ{4)D7oXq3R~-W>7zjqi*q= z)GfLh)i389dFK2xsY7&AdTag|N51hFs-BW=2KRr)k!SpcFJ(XZs6P+q=e~*Gq>k{J z(fyNgb{Rxe~XH33tMK}HZ zD_f+0Ke^%l%fGqBKRhrdK6EqkQ|I`pe-j_N8Tr#Xb$+vc&Tq)Mjc!KgH~Y*!vHyj- zPSVZb`xnO1C-@7W&wjptsXuSse?I3qAHPW-qMOn8FN|ZI_)X4%blsZLTj%dTm-l_@ z{xR8ibTiuj-e7v%X1pUv|xnHRMCnTK)AZ!X`L=QpK?@v~3(P2xz`ttq|L zPoJ@F`ma#yPP!SapK-*E-z08yGm4*a#Esu1{&d}%QT+5dKKkCok8W<~CvN;EapO0m z_!-B(;V;y_CEX16k3OaT>0gs|pqo+sGmg5)ZxTnkZq2Cv8OJ{1FVub{-3;oN`$T$g zsQZV>dqZ?{)BD3M_YZvBKTLewKg`Hao#3N>Onm5O30$+J)Jen#XtU8 z5AW(Xz3a}k(6~N}rkBi)>XWm~lpbDx)9(Uoxc;;j#dU`N9g}sSoBDj~S?Ty{-;~aL zt^@J)q??=kw>RIFcQv-7J(zuD%$39XzDv5P&ztjqsQIqjK7Ln~>p*83t!^;b`1Uq{bHTnFMqHz)e*{ZH>F<>TM= z;D`9o%}xHRn)|Pr(%0+xUE#W`^t;09Rdwm6UcDrJUAnbbt4H+Qc3U;OZ?Ja5(f7Q+ zuGSr2?QvD-ey(=o2X4OM>TB}e)>qT-(M*i({8Q;GpB;724fhS+ee|Xs`qfk0`3H@2 jtaWcXZ_+dFajtdj=Hu73uH|)Ii{Dw>e64BicE9>RFRKh$ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds index 6ed07a1d16f0ec4175816b0a1c9fd794b81a8579..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15690 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 VZ(t+;^SYMK{`J?QZAZUf{12sr@vi^? diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds index 28e4e53721a78c2acd2960b667533001f2eacdf7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 16202 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 DCG{C; diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds index fe1176eb75fca881f108675a790ebec5d0743581..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 22154 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds index 1ea7b4c3d0b77881ddec5ec3feab00fca280f63a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 22666 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 M8SzhPwI`bY0cEMN-v9sr diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds index d176a8914b0158a7e383aee0068aaf91fff5d3f4..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20972 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds index 675a652065ba4f542bd6929ccbc05aa09d5201ab..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 29100 zcmcJYZLDQiS;zN%JNMjs&z-q5bLY-Xt>FuhKw6!uBLYg9PRH7m(!iiZv|QA7BGS^a zP!QzR)`c>-IgY^6%}r|DLWRZt8gIA9zmq zjei#Y0rNSzzr7oNr>RD3Z1&HL5vud4rkpy&Rd?>ge9j;H>C z=Z4>?{>MLHJ~#KbZwtTiiSW10+j9TlAB1o2yd->6@xlDZUypXLy{9MbCT?c!ryT9Z zZ+tL(+Fy^S_0w+r#wWs~{rHNfKJCUgX*ZskwSV;!(eCkyp0t~|nYEvCv>U(i!SHE+ zJwBK}$7wfy;}hZ0{(3z1X*a$}yYbAd{jBrR-^BVcS8t8=V=6vaKmN)uhi{I)J$zH~ z)L*_K{KhYbzii%+`%A0gH-04iC3AJyXPwe+*1t)+iJMvbDM!2UP1;?~TbZ?=an6X{bL|CPN8Hr$)L;9j@Xhr%hHomK z`WpwrZ#*0RhIt_OC#S-1JRknVJeB*Kwf*Lv7ldyrp60)&w%^?Q#_&zWQ-7_#jpxH>{5X%| zgZ;;G#tq+O+=!dm_?2?C-HadSVcdwD+4xb8al>mo8$RP#j}PX*@<@!^=-oXTH{xbC zex;o9#%KH><3`-f#*cE08(yRGE^#v%Kguy~_>JeoXZ-5%wEc`5zR9@Znc4W2a<$!z zALn7*h@08?QI2uLYdjl1<5!Ol=D+;MF>Wizdopgs&20QiIpvMd_(8^vxS5R~{Bal`rx~LkrzXH@ad$$0y&m^7141@$;c>a^=c(uZy#F z6P_{Gp43=;pxb|Bbmv{S-G0aJJ#V>v_pUeJ@s9u9Syy%D|NFBp{n!7;SvS>n!@1Vy z^5gxuXe>Xe|NlzX`+DyDLc~oSpPm=t*XL@U>G2nIZ*JldH#2|lhr`?Yi=KGI%?o_Z zi~haB=!>fRE4qjM$)1OPToXufQ^%+CpYhi;FY(v)Y+~XOH#2|fZ^K)DLr*;7X68@+ zKD^D-J@JT}nNL04Z)*Hhzp3)2epB(m_B&5}>VtUioey*7OF;J<}$Dn97%Js0(Ey}Kv%5;wE@ zDM!8dCiN0Gv-%fR7yY*M!JhORaWm_`<@bd*(z_wf1M!HPnZN!U;Y~i)6OXu=`K#or zde?rxCmwM#^UM7GTAja@3%?%o&+NW7Jbq>V{z>?UDi8li_@?4z{13);Mf3NCyq7H3 zj0Ig&C%-d%e&*rQ^XmMn+&L8U%hd6~^KV_1pTEo>owv-NO3q8%%+9~Iq1;|NoPX=z zS14!tS9HIc?%zxG59dF;ke|QwyUuI6-%a;_z5c}hTdyDN6I&-^|7iS1>>pd^$(i~u z@|Rx~e&dtjFPpE*{gpoq-yGc%zNz^1{&7+Li%*4bF6mtb?J^Zl{qfD=H$E2r*t|LS z*Y*CG{ny;k9zgx3;%WV($HO;QwHM%KP_{vLDoz2waNryj-$-(>C(Hx*CoXPx4ktV4WL@ziIY;WuhM z;IkeIZ_0ht~(fo2&zTQ}NVipTIZS$M8+XQ=fH?Z?cZ?O~q56eGb1- z`vE@tLE$aKKG#Rq9rtf0>yEgYt-n%E>kpsx2U&l_&20Tqj&+A;vhIkR+4`d#>khwB z>#oGjWc_iUMm^lWnVg5XsrX?3Q;vSZZ&W{&xOqJH*(dN##sS|{JguL8#y5Aa4c}CJ z(C57o-bnwOc*M=d6&4E##k@uR;W0H6Id%?;qf69?JzDeH1%`AV)kvD#$@-A^R$$wRA zhrG+*>s69JaWl)Ga^#I~k~eWP%b#-OUH)FuRNf_SCi(OCN8~@zc}(&qZf5yYj=b?r z@+NL(`BRSk@f($QiJM9O>$-O!Z{F*hm>J`Tt7|jJBgdw{U_zPZ^SpbZzOJJ_m7n0z7@Yw_pK#vCikygC#i?) zpUHWMn~D!!|4KR4gU|gkq#uZziVynCQ|e{@n$%0&%<3=YR4+dDL+T}NX7w}Ash9b0 zQZI2ctDkv}$NV?(h@10#^2RsG8{eFlKOXs;c;s(pKI@FUS$`&Z6F0N`OF7k#PyLX3 ziJMvdtW)Y`{hHKE+|24P|^+W0ml2HE&AXOy&>!GL|`|6Gr!`SaX}WAfaHXU=C2l4@^{{VIzsbHu+|2eb%CT?YH$E0V`$s)K zIR7}#y2m$J_r%R?{Zo#82j67hDd(-s_8%wwZYJ%g9PP$8X*Y2*Ykw)H z_T$rjNV|!fS^N3iXZc*#R!=^cRXz_|>Cb14)kX2SXnp>*etv4QKfK9jdg2o|Gk;z0 z38;TV?+;8o;%4Tr{Y-f4+dc7!o0&h}32*$_o_NH~%pZL&ywy8;;t@A9f91{LjSlz3 zBW`B?@)hANf4(OkaWnH7=kmF^t)6^tj<}h9evWa*XZ%e(;%4SE&UlQ!iAUVbe8w4% z@i*~^o0-oz<1zjw9&t1C8D~7k-^3$sWu>(`85?vdrQcX1wwSDu|JGr!cs{;m2~D)|gCaZ~ZMe!Nm| zB_8#gna}5p`F!ohOQ-md<`Z%AdBgQ@=-PqL=a(DhmAIMs)I+~fze)cQH?#hu9z5zd z@raw5U+Pi6Q9u0%={MqL)_&@raw5PtM~nM6TxAUC|a(@xk%OU%xv1#&hAX zn^))l>aF3MQ9~u-{g0R%X3Sm;)6cz-?%sO zHz(KDxlpP2pwF1mZpO-_-NenT{iU4751;Xaj2m$?8$Zf1Zg`Cvw-Ps#@uQ#i+#daB z?%f;xXDXhypMIl$lm4TAGwVP4pLNe#Yt*_gaWh%})PqO;jq*y|OnmC$f9f}<|6Gr! z?WYX&oA}gkDn97rOqa!(K36?H=oeRY;qYfT{pWgo(C7J@dB^j&$-Ew0_!%Z_)?lyp@WlKI4wxsBy>V`cs&UKgU_O_$KR?xS6eA%CYY78_$K${#lQw z`Lk~DP1X&bIdA>2Z_;Nb`zC#9X8R}Cc|5NFCLVD!^SMspaosZUh?|+ueF`4;FD4#w zGxNF5;&I(I@raw5&z!|$u9|qn&CF+<@EAW6kGPrn^fT8j`rq8tb&I%}UB4*DzKw6P zZxc7O{hM*3UdGR)UgBm}Kjo+w-=tpRW>!DrOudZ1Nxj6)tbWQ-FTP2=#LcXJ<_YyO ze@yBnZf5mUj(YJ;>LqSw^|Ma#SidG7adVze-uNbYKPG-zSC#X8^2RsG8{f?GXPxXj7VD?+;aETW%wxmXALcn8^S@DEiJOVf zJjG-FHp(k;Gx3>cc+9^>c_nTpKKFmyE9(0jrucyRj<~rp+AGx+?r%_fUW1L*aA(!+8`>eeQek&GBk@W_JI>`MK}GZ#)-1_doS`T0i$a_$K!~ zcxHD0!|yjS?)?6f>EF9Gv+>7g{^K`l-j}$U&HsuutK!e>KW0aWnC$ zhjFKVlW`|*X5&ve<{f_Hx$v2P_4wfY<2dUc-(=krH?#H6K2P54|0a18H?#aHN8b32 z%DcqPtB2Pw<;WY~ByZy8y!=`B_$KSVoVPMt|MU|c{b%Breyz-Wu2b|I*DsTPBW`B> z$2`Mh{+W2h&3Qg~l*Bz6IapzJ<7%-M>(d>jr+~1L1T3RF4nV&piX}=3c?1-NenT{oFI)anE4l5jW@g zBR@RyH}Qy@na_2Ke&hOO(r?7gtpC`j@z}RbJmTg&pMJw{RKMZV z|Ak5aktZJcH_9ta$kyP1Z8Lsd(yh-NiS#?&6!-^|zG!Lik)iIS;b;q(55^K9N9zL~v$!RNgXp2_xSpo#)snhmGx7Pr#|Zk-(=n3nc4a&<+OhASwE0xXiz8+?;>L)^^PkG~&nnSYl;?_VJA zO^BP>`;(RL3UB3Kd*Tr{Gk^4<@K&$yiAUVb{PALVV|@mR{2?B3GxIOw^LsPzpVt2| z>fLx}PwFLZX7&5~`{?)b`6-dlO%XS<&ri|Mc=W%CN8HSO`WcV@H}Qy@nNL6C(eEZ6 zaWnHTiu=+iy%h@18gs+d0it@)pRf9cHnDBsVl z`CY!BxsrKRzMr|$^XpRQzr^>K&YYj$(UISk?{BW;{KU=d{FnIt(wXxw{hD(9BaP3m z^j!F&##wPw$4mcSD*sD-f9XZ%Kcund{N~{g#Q9Cd%lRkK|N2I9eJ}Y{7kw}J^G}zb z_+D8)KfHN!H##!Xh2>e>+=+$FRl@WSrGDn8d^_&a z&NDp|#`KxCmb53`ZQFe?jvjpd^fyTR8|D2C_5MbB;(W7wJzjdD`Z0oA@h^LIdQ-Fc z&zcSQ_T2LZ<)gT%eKQ3m^xnCQ2SuU=P7XGPc_hMJts$% zvf`$WU+mXA0_tHWF8@+NB|9-c<^?-))L(seeqYJVIajn9|1z#WBQ7CsrFNjamP2gliI~=T$}1%FVY@FU-h2)V(8(O*Iy1iSab2*uIPaN=a<0F1MfCL}^Z8R+JEOi`b_Qvs z4}U4H{j#Vdo|xP>b};$r$XGIY=-}}Wn>F~OYF4+_jb^QFZmrW;#7UIuSw=4*QrcBd z=AznU*4kFT){Se;XPsN$--zTpnb#2yjP`E*29q&cE&|MeY`X~jpW%I(NbqZ_!5Pr7 zt75#!yK2pWA29yAYzF*0@O2%&wxk;L<2&rC7|;4I@ZN;wRee^N^E!n+yIa6xx4bul z)6?&sGK1Sjc8vCKYJP?QDUSxFr6blG*13$yP+`&$R^Qb;|uv6HLzr{1_|D5NI zJqr*I>SV?n%|D0w^k;Xt{A+XTUC!t~$N}xDBRT&$-oI+OU^JuPj9s;Y4|iHFf=kxe zC^%zRt>Ed$zmHtPziP18`d5WLo4;KA^h1t*Rmst=TE#O@f@!ntX^#<&P zRHJj44|Y|Im&PA_Z@Dl|l^pG=4SD@NL!3O%8NVv~%*5|h`@!u$n?J`hPvn?CRq`f( zPOEsPo{bOB6ZnO6zfh)6(Kk)>Z-Li+tE&4}wQm3Bc+=-Rn`htu z1)hGJ=-(VahyE?_Gw06i&Yv95xY@tKf2o?jgI%?*|8l(d&T`Bn=b@6LU9};v`{xaJvFS|dqzRjOsyR+wu47t4gkSgP& zT~*_2vCkhl-g{-aaDJ+0eXy%m@qET%eWIJGlA~RC?Gy8Z!eK25x@gU1^f-qiE& Z>-l$BzRiWd@%^c9$MBG?|3@%|@;}Tr@oNA8 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_20v0_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_20v0_withptap.gds index 8e8762cf5c06363cbb3799c0a914ea4c3232e051..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 271496 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 diff --git a/sky130/cells/klayout/pymacros/cells/parent_res.py b/sky130/cells/klayout/pymacros/cells/parent_res.py index a1d4ba83b..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/parent_res.py +++ b/sky130/cells/klayout/pymacros/cells/parent_res.py @@ -1,265 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# res Generator for skywater130 - -import math -from abc import ABC, abstractmethod - -import gdsfactory as gf - -# ##############CONSTANT############3 - - -CONTACT_SPACE = 0.19 -CONTACT_S = 0.18 -CONTACT_N = 10 - - -############################3 -class draw_res(ABC): - """parent abstracted class for the backend of the res - Args: - type (str): type of the res - """ - - def __init__(self, type): - self.type_ = type - self.c = gf.Component(self.type_) - - def set_l_w(self, len, wid): - """set the length and width of the res - Args: - len(float): length of the resistor - wid(float): width of the resistor - """ - self.l_res = len - self.w_res = wid - - def draw_rect_layer(self, layer_names, l_space, w_space): - """draw the rect layers of the res - Args: - layer_names(list[layers]): - list of the layer names - l_space(list[float]): - [0.5*length of the layers - 0.5*length of the marked layer] - w_space(list[float]): - [0.5*width of the layers - 0.5*width of the marked layer] - - """ - for layer_, l_rect, w in zip(layer_names, l_space, w_space): - self.c.add_ref( - gf.components.rectangle( - size=(self.w_res + 2 * w, self.l_res + 2 * l_rect), - layer=layer_, - centered=True, - ) - ) - - def draw_frame_layer(self, lay_nm, l_sp, w_sp, thi): - """draw the frame layers of the res - Args: - lay_nm(list[layers]): - list of the layer names - l_sp(list[float]): - [0.5*length of the layers - 0.5*length of the marked layer] - w_sp(list[float]): - [0.5*width of the layers - 0.5*width of the marked layer] - thi(list[float]): - list of the thickness of the frame - - """ - for layer_, l_frame, w, thick in zip(lay_nm, l_sp, w_sp, thi): - l_h = thick - w_h = self.w_res + 2 * w - - l_v = self.l_res + 2 * l_frame - 2 * thick - w_v = thick - - res1 = self.c.add_ref( - gf.components.rectangle(size=(w_h, l_h), layer=layer_, centered=True) - ) - res2 = self.c.add_ref( - gf.components.rectangle(size=(w_h, l_h), layer=layer_, centered=True) - ) - - res1.movey(0.5 * l_v + 0.5 * l_h) - res2.movey(-1 * (0.5 * l_v + 0.5 * l_h)) - - res1 = self.c.add_ref( - gf.components.rectangle(size=(w_v, l_v), layer=layer_, centered=True) - ) - res2 = self.c.add_ref( - gf.components.rectangle(size=(w_v, l_v), layer=layer_, centered=True) - ) - - res1.movex(0.5 * w_h - 0.5 * w_v) - res2.movex(-1 * (0.5 * w_h - 0.5 * w_v)) - - def draw_contact_layer_h( - self, layer_names, l_space, sizes_w, sizes_l, s_fit_in, s_btw - ): - """draw the horizontal contact layers of the res - Args: - layer_names(list[layers]): - list of the layer names - l_space(list[float]): - [0.5*length of the layers - 0.5*length of the marked layer] - sizes_w(list[float]): - list of contacts width - sizes_l(list[float]): - list of contacts length - s_fit_in(list[float]): - list of total length to fit contacts in - s_btw(list[float]): - list of the spaces btw the contacts - - """ - for layer_, l_h, size_l, size_w, space_fit, space_btw in zip( - layer_names, l_space, sizes_l, sizes_w, s_fit_in, s_btw - ): - counts = math.floor((space_fit) / (size_w + space_btw)) - if counts < 1: - counts = 1 - res = gf.components.rectangle( - size=(size_w, size_l), layer=layer_, centered=True - ) - res_ar1 = self.c.add_array( - res, - rows=1, - columns=counts, - spacing=(size_w + space_btw, size_w + space_btw), - ) - res_ar2 = self.c.add_array( - res, - rows=1, - columns=counts, - spacing=(size_w + space_btw, size_w + space_btw), - ) - - res_ar1.movey(size_l * 0.5 + l_h + self.l_res * 0.5) - res_ar2.movey(-1 * (size_l * 0.5 + l_h + self.l_res * 0.5)) - - res_ar1.movex(-(counts - 1) * (size_w + space_btw) * 0.5) - res_ar2.movex(-(counts - 1) * (size_w + space_btw) * 0.5) - - def draw_contact_layer_v( - self, - layer_names, - l_space, - sizes_w, - sizes_l, - space_fit_in, - spaces_btw=None, - ): - """draw the vertical contact layers of the res - Args: - layer_names(list[layers]): - list of the layer names - l_space(list[float]): - [0.5*length of the layers - 0.5*length of the marked layer] - sizes_w(list[float]): - list of contacts width - sizes_l(list[float]): - list of contacts length - space_fit_in(list[float]): - list of total length to fit contacts in - spaces_btw(list[float]): - list of the spaces btw the contacts - """ - if spaces_btw is None: - spaces_btw = sizes_w - for layer_, l_v, size_l, size_w, space_fit, space_btw in zip( - layer_names, - l_space, - sizes_l, - sizes_w, - space_fit_in, - spaces_btw, - ): - counts = math.floor((space_fit) / (size_w + space_btw)) - res = gf.components.rectangle( - size=(size_w, size_l), layer=layer_, centered=True - ) - res_ar1 = self.c.add_array( - res, - rows=counts, - columns=1, - spacing=(size_l + space_btw, size_l + space_btw), - ) - res_ar2 = self.c.add_array( - res, - rows=counts, - columns=1, - spacing=(size_l + space_btw, size_l + space_btw), - ) - - res_ar1.movey(-(counts - 1) * size_l) - res_ar2.movey(-(counts - 1) * size_l) - - res_ar1.movex(0.5 * self.w_res + l_v + 0.5 * size_w) - res_ar2.movex(-(0.5 * self.w_res + l_v + 0.5 * size_w)) - - def draw_2dArr_layer(self, layer_names, mcon_d, l_up=0, l_down=0, n=0): - """draw the 2d contact layers of the res - Args: - layer_names(list[layers]): list of the layer names - mcon_d(list[float]): list of contacts thickness - l_up(list[float]): upper contacts array space from marked layer - l_down(list[float]): down contacts array space from marked layer - n(list[float]): list of the 1 for 2d arr and 0 for 1d arr - """ - res = gf.components.rectangle( - size=(mcon_d, mcon_d), layer=layer_names, centered=True - ) - - counts_arr = math.floor(self.w_res / (2 * CONTACT_S)) - if counts_arr <= 0: - counts_arr = 1 - if counts_arr % 2 == 0 and counts_arr > CONTACT_N: - counts_arr = counts_arr - 1 - res_ar1 = self.c.add_array( - res, - rows=6, - columns=counts_arr + n, - spacing=(mcon_d + CONTACT_SPACE, mcon_d + CONTACT_SPACE), - ) - res_ar2 = self.c.add_array( - res, - rows=6, - columns=counts_arr + n, - spacing=(mcon_d + CONTACT_SPACE, mcon_d + CONTACT_SPACE), - ) - - res_ar1.movey(mcon_d * 0.5 + l_up + (self.l_res) * 0.5) - res_ar2.movey(-1 * (mcon_d * 0.5 + l_down + (self.l_res) * 0.5)) - if (counts_arr + n) != 1: - # res_ar1.movex(-1*(mcon_d * 0.5 + 0.5*self.w_res)) - # res_ar2.movex(-1 * (mcon_d * 0.5 +0.5*self.w_res)) - res_ar1.movex(-(counts_arr + n - 1) * CONTACT_S) - res_ar2.movex(-(counts_arr + n - 1) * CONTACT_S) - - def get_c(self): - """get component - - Returns: - c(gf.component): layout creates - """ - return self.c - - @abstractmethod - def your_res(): - """must override in the child class""" - pass diff --git a/sky130/cells/klayout/pymacros/cells/res_diff_child.py b/sky130/cells/klayout/pymacros/cells/res_diff_child.py index 757f2dd9b..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/res_diff_child.py +++ b/sky130/cells/klayout/pymacros/cells/res_diff_child.py @@ -1,723 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - - -# res Generator for skywater130 - -from .layers_def import ( - diff_layer, - diff_res, - hvi_layer, - hvntm_layer, - li_layer, - licon_layer, - m1_layer, - mcon_layer, - nsdm_layer, - nwell_layer, - psdm_layer, - tap_layer, -) -from .parent_res import draw_res - -# ##########constant################# -# [l,w] -# react -DIFF_RES = 0 -DIFF_LAYER_ND = [0.515, 0] -NSDM_LAYER_ND = [0.64, 0.125] -# HVT -HVI_ND = [1.43, 0.915, 0.7, 0.21] -HVNTM_ND = [0.7, 0.185] -# [l,w,thickness] -# frame -TAP_ND_LVT = [1.125, 0.61, 0.17] -PSDM_ND_LVT = [1.25, 0.735, 0.42] -LI_ND_LVT = [1.125, 0.61, 0.17] -# HVT -TAP_ND_HVT = [1.245, 0.73, 0.29] -PSDM_ND_HVT = [1.37, 0.855, 0.54] -LI_ND_HVT = [1.185, 0.67, 0.17] -# [l,w,thickness_l,thickness_w,space] -# CONTACT H -LICON1_ND_LVT = [0.285, 0.17, 0.17, 0, 0.17] -LICON2_ND_LVT = [0.955, 0.17, 0.17, 0, 0.17] -MCON_ND_LVT = [0.185, 0.17, 0.17, 0, 0.19] -M1_ND_LVT = [0.025, 0.49, 0, 0, 0] -LI1_ND_LVT = [0.085, 0.2, 0, 0, 0] -LI2_ND_LVT = [0.285, 0.17, 0, 0, 0] -# HVT -LICON2_ND_HVT = 1.015 - -# CONTACT V -LICON3_ND_LVT = [0.44, 0.17, 0.17, 1.37, 0.17] -# HVT -LICON3_ND_HVT = 0.5 - -# #####PD -NWELL_PD = [1.305, 0.79] -# HVT -NWELL_PD_HVT = [1.575, 1.06] -HVI_PD_HVT = [1.575, 1.06] -# frame -TAP_PD_HVT = [1.245, 0.73, 0.29] -PSDM_PD_HVT = [1.37, 0.855, 0.54] -LI_PD_HVT = [1.185, 0.67, 0.17] - - -################################# - - -class res_diff_draw(draw_res): - """child class for the backend of the diff res - Args: - type_ (str): type of the res - """ - - def __init__(self, type_): - super().__init__(type_) - - def your_res( - self, - layout, - type="sky130_fd_pr__res_nd_lvt", - l_res: float = 2.1, - w: float = 0.42, - gr: int = 1, - ): - """draw the res with calling the parent func with right data - - Args: - layout(layout): drawing layout - type(float): type of the resistor - l_res(float): length of the resistor - w(float): width of the resistor - gr(int): guard ring of the resistor - - """ - self.set_l_w(l_res, w) - if type == "sky130_fd_pr__res_nd_lvt": - # rects - layer_names = [diff_res, diff_layer, nsdm_layer] - l1 = [DIFF_RES, DIFF_LAYER_ND[0], NSDM_LAYER_ND[0]] - w1 = [DIFF_RES, DIFF_LAYER_ND[1], NSDM_LAYER_ND[1]] - - self.draw_rect_layer(layer_names, l1, w1) - - # frams - layer_names = [tap_layer, psdm_layer, li_layer] - l1 = [TAP_ND_LVT[0], PSDM_ND_LVT[0], LI_ND_LVT[0]] - w1 = [TAP_ND_LVT[1], PSDM_ND_LVT[1], LI_ND_LVT[1]] - thick = [TAP_ND_LVT[2], PSDM_ND_LVT[2], LI_ND_LVT[2]] - - if gr == 1: - self.draw_frame_layer(layer_names, l1, w1, thick) - - # countacts - - layer_names = [ - licon_layer, - licon_layer, - mcon_layer, - m1_layer, - li_layer, - li_layer, - ] - l1 = [ - LICON1_ND_LVT[0], - LICON2_ND_LVT[0], - MCON_ND_LVT[0], - M1_ND_LVT[0], - LI1_ND_LVT[0], - LI2_ND_LVT[0], - ] - sizes_l = [ - LICON1_ND_LVT[1], - LICON2_ND_LVT[1], - MCON_ND_LVT[1], - M1_ND_LVT[1], - LI1_ND_LVT[1], - LI2_ND_LVT[1], - ] - sizes_w = [ - LICON1_ND_LVT[2], - LICON2_ND_LVT[2], - MCON_ND_LVT[2], - w - 0.05, - w - 0.12, - w + 0.04, - ] - space_fit_in = [ - w, - w + 0.34, - w - 0.12, - M1_ND_LVT[3], - LI1_ND_LVT[3], - LI2_ND_LVT[3], - ] - spaces = [ - LICON1_ND_LVT[4], - LICON2_ND_LVT[4], - MCON_ND_LVT[4], - M1_ND_LVT[4], - LI1_ND_LVT[4], - LI2_ND_LVT[4], - ] - - if gr == 0: - layer_names = [ - licon_layer, - mcon_layer, - m1_layer, - li_layer, - li_layer, - ] - l1 = [ - LICON1_ND_LVT[0], - MCON_ND_LVT[0], - M1_ND_LVT[0], - LI1_ND_LVT[0], - LI2_ND_LVT[0], - ] - sizes_l = [ - LICON1_ND_LVT[1], - MCON_ND_LVT[1], - M1_ND_LVT[1], - LI1_ND_LVT[1], - LI2_ND_LVT[1], - ] - sizes_w = [ - LICON1_ND_LVT[2], - MCON_ND_LVT[2], - w - 0.05, - w - 0.12, - w + 0.04, - ] - space_fit_in = [ - w, - w - 0.12, - M1_ND_LVT[3], - LI1_ND_LVT[3], - LI2_ND_LVT[3], - ] - spaces = [ - LICON1_ND_LVT[4], - MCON_ND_LVT[4], - M1_ND_LVT[4], - LI1_ND_LVT[4], - LI2_ND_LVT[4], - ] - - self.draw_contact_layer_h( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - if gr: - layer_names = [licon_layer] - l1 = [LICON3_ND_LVT[0]] - sizes_l = [LICON3_ND_LVT[1]] - sizes_w = [LICON3_ND_LVT[2]] - space_fit_in = [l_res + LICON3_ND_LVT[3]] - spaces = [LICON3_ND_LVT[4]] - self.draw_contact_layer_v( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - c = self.get_c() - c.write_gds("res_temp.gds") - layout.read("res_temp.gds") - cell_name = type - return layout.cell(cell_name) - elif type == "sky130_fd_pr__res_nd_hvt": - # rects - layer_names = [ - diff_res, - diff_layer, - nsdm_layer, - hvi_layer, - hvntm_layer, - ] - l1 = [ - DIFF_RES, - DIFF_LAYER_ND[0], - NSDM_LAYER_ND[0], - HVI_ND[0], - HVNTM_ND[0], - ] - w1 = [ - DIFF_RES, - DIFF_LAYER_ND[1], - NSDM_LAYER_ND[1], - HVI_ND[1], - HVNTM_ND[1], - ] - - if gr == 0: - layer_names = [ - diff_res, - diff_layer, - nsdm_layer, - hvi_layer, - hvntm_layer, - ] - l1 = [ - DIFF_RES, - DIFF_LAYER_ND[0], - NSDM_LAYER_ND[0], - HVI_ND[2], - HVNTM_ND[0], - ] - w1 = [ - DIFF_RES, - DIFF_LAYER_ND[1], - NSDM_LAYER_ND[1], - HVI_ND[3], - HVNTM_ND[1], - ] - - self.draw_rect_layer(layer_names, l1, w1) - - # frams - layer_names = [tap_layer, psdm_layer, li_layer] - - l1 = [TAP_ND_HVT[0], PSDM_ND_HVT[0], LI_ND_HVT[0]] - w1 = [TAP_ND_HVT[1], PSDM_ND_HVT[1], LI_ND_HVT[1]] - thick = [TAP_ND_HVT[2], PSDM_ND_HVT[2], LI_ND_HVT[2]] - - if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) - - # countacts - - layer_names = [ - licon_layer, - licon_layer, - mcon_layer, - m1_layer, - li_layer, - li_layer, - ] - - l1 = [ - LICON1_ND_LVT[0], - LICON2_ND_HVT, - MCON_ND_LVT[0], - M1_ND_LVT[0], - LI1_ND_LVT[0], - LI2_ND_LVT[0], - ] - sizes_l = [ - LICON1_ND_LVT[1], - LICON2_ND_LVT[1], - MCON_ND_LVT[1], - M1_ND_LVT[1], - LI1_ND_LVT[1], - LI2_ND_LVT[1], - ] - sizes_w = [ - LICON1_ND_LVT[2], - LICON2_ND_LVT[2], - MCON_ND_LVT[2], - w - 0.05, - w - 0.12, - w + 0.04, - ] - space_fit_in = [ - w, - w + 0.34, - w - 0.12, - M1_ND_LVT[3], - LI1_ND_LVT[3], - LI2_ND_LVT[3], - ] - spaces = [ - LICON1_ND_LVT[4], - LICON2_ND_LVT[4], - MCON_ND_LVT[4], - M1_ND_LVT[4], - LI1_ND_LVT[4], - LI2_ND_LVT[4], - ] - - if gr == 0: - layer_names = [ - licon_layer, - mcon_layer, - m1_layer, - li_layer, - li_layer, - ] - - l1 = [ - LICON1_ND_LVT[0], - MCON_ND_LVT[0], - M1_ND_LVT[0], - LI1_ND_LVT[0], - LI2_ND_LVT[0], - ] - sizes_l = [ - LICON1_ND_LVT[1], - MCON_ND_LVT[1], - M1_ND_LVT[1], - LI1_ND_LVT[1], - LI2_ND_LVT[1], - ] - sizes_w = [ - LICON1_ND_LVT[2], - MCON_ND_LVT[2], - w - 0.05, - w - 0.12, - w + 0.04, - ] - space_fit_in = [ - w, - w - 0.12, - M1_ND_LVT[3], - LI1_ND_LVT[3], - LI2_ND_LVT[3], - ] - spaces = [ - LICON1_ND_LVT[4], - MCON_ND_LVT[4], - M1_ND_LVT[4], - LI1_ND_LVT[4], - LI2_ND_LVT[4], - ] - - self.draw_contact_layer_h( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - layer_names = [licon_layer] - l1 = [LICON3_ND_HVT] - sizes_l = [LICON3_ND_LVT[1]] - sizes_w = [LICON3_ND_LVT[2]] - space_fit_in = [l_res + LICON3_ND_LVT[3]] - spaces = [LICON3_ND_LVT[4]] - - if gr: - self.draw_contact_layer_v( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - c = self.get_c() - c.write_gds("res_temp.gds") - layout.read("res_temp.gds") - cell_name = type - return layout.cell(cell_name) - elif type == "sky130_fd_pr__res_pd_lvt": - # rects - layer_names = [ - diff_res, - diff_layer, - psdm_layer, - nwell_layer, - ] - - l1 = [DIFF_RES, DIFF_LAYER_ND[0], NSDM_LAYER_ND[0], NWELL_PD[0]] - w1 = [DIFF_RES, DIFF_LAYER_ND[1], NSDM_LAYER_ND[1], NWELL_PD[1]] - - if gr == 0: - layer_names = [ - diff_res, - diff_layer, - psdm_layer, - ] - l1 = [DIFF_RES, DIFF_LAYER_ND[0], NSDM_LAYER_ND[0]] - w1 = [DIFF_RES, DIFF_LAYER_ND[1], NSDM_LAYER_ND[1]] - - self.draw_rect_layer(layer_names, l1, w1) - - # frams - layer_names = [tap_layer, nsdm_layer, li_layer] - l1 = [TAP_ND_LVT[0], PSDM_ND_LVT[0], LI_ND_LVT[0]] - w1 = [TAP_ND_LVT[1], PSDM_ND_LVT[1], LI_ND_LVT[1]] - thick = [TAP_ND_LVT[2], PSDM_ND_LVT[2], LI_ND_LVT[2]] - - if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) - - # countacts - - layer_names = [ - licon_layer, - licon_layer, - mcon_layer, - m1_layer, - li_layer, - li_layer, - ] - l1 = [ - LICON1_ND_LVT[0], - LICON2_ND_LVT[0], - MCON_ND_LVT[0], - M1_ND_LVT[0], - LI1_ND_LVT[0], - LI2_ND_LVT[0], - ] - sizes_l = [ - LICON1_ND_LVT[1], - LICON2_ND_LVT[1], - MCON_ND_LVT[1], - M1_ND_LVT[1], - LI1_ND_LVT[1], - LI2_ND_LVT[1], - ] - sizes_w = [ - LICON1_ND_LVT[2], - LICON2_ND_LVT[2], - MCON_ND_LVT[2], - w - 0.05, - w - 0.12, - w + 0.04, - ] - space_fit_in = [ - w, - w + 0.34, - w - 0.12, - M1_ND_LVT[3], - LI1_ND_LVT[3], - LI2_ND_LVT[3], - ] - spaces = [ - LICON1_ND_LVT[4], - LICON2_ND_LVT[4], - MCON_ND_LVT[4], - M1_ND_LVT[4], - LI1_ND_LVT[4], - LI2_ND_LVT[4], - ] - - if gr == 0: - layer_names = [ - licon_layer, - mcon_layer, - m1_layer, - li_layer, - li_layer, - ] - l1 = [ - LICON1_ND_LVT[0], - MCON_ND_LVT[0], - M1_ND_LVT[0], - LI1_ND_LVT[0], - LI2_ND_LVT[0], - ] - sizes_l = [ - LICON1_ND_LVT[1], - MCON_ND_LVT[1], - M1_ND_LVT[1], - LI1_ND_LVT[1], - LI2_ND_LVT[1], - ] - sizes_w = [ - LICON1_ND_LVT[2], - MCON_ND_LVT[2], - w - 0.05, - w - 0.12, - w + 0.04, - ] - space_fit_in = [ - w, - w - 0.12, - M1_ND_LVT[3], - LI1_ND_LVT[3], - LI2_ND_LVT[3], - ] - spaces = [ - LICON1_ND_LVT[4], - MCON_ND_LVT[4], - M1_ND_LVT[4], - LI1_ND_LVT[4], - LI2_ND_LVT[4], - ] - - self.draw_contact_layer_h( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - layer_names = [licon_layer] - l1 = [LICON3_ND_LVT[0]] - sizes_l = [LICON3_ND_LVT[1]] - sizes_w = [LICON3_ND_LVT[2]] - space_fit_in = [l_res + LICON3_ND_LVT[3]] - spaces = [LICON3_ND_LVT[4]] - if gr: - self.draw_contact_layer_v( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - c = self.get_c() - c.write_gds("res_temp.gds") - layout.read("res_temp.gds") - cell_name = type - return layout.cell(cell_name) - elif type == "sky130_fd_pr__res_pd_hvt": - # rects - layer_names = [ - diff_res, - diff_layer, - psdm_layer, - hvi_layer, - nwell_layer, - ] - l1 = [ - DIFF_RES, - DIFF_LAYER_ND[0], - NSDM_LAYER_ND[0], - HVI_PD_HVT[0], - NWELL_PD_HVT[0], - ] - w1 = [ - DIFF_RES, - DIFF_LAYER_ND[1], - NSDM_LAYER_ND[1], - HVI_PD_HVT[1], - NWELL_PD_HVT[1], - ] - - if gr == 0: - layer_names = [ - diff_res, - diff_layer, - psdm_layer, - hvi_layer, - ] - l1 = [DIFF_RES, DIFF_LAYER_ND[0], NSDM_LAYER_ND[0], HVI_ND[2]] - w1 = [DIFF_RES, DIFF_LAYER_ND[1], NSDM_LAYER_ND[1], HVI_ND[3]] - self.draw_rect_layer(layer_names, l1, w1) - - # frams - layer_names = [tap_layer, nsdm_layer, li_layer] - l1 = [TAP_PD_HVT[0], PSDM_PD_HVT[0], LI_PD_HVT[0]] - w1 = [TAP_PD_HVT[1], PSDM_PD_HVT[1], LI_PD_HVT[1]] - thick = [TAP_PD_HVT[2], PSDM_PD_HVT[2], LI_PD_HVT[2]] - - if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) - - # countacts - - layer_names = [ - licon_layer, - licon_layer, - mcon_layer, - m1_layer, - li_layer, - li_layer, - ] - l1 = [ - LICON1_ND_LVT[0], - LICON2_ND_HVT, - MCON_ND_LVT[0], - M1_ND_LVT[0], - LI1_ND_LVT[0], - LI2_ND_LVT[0], - ] - sizes_l = [ - LICON1_ND_LVT[1], - LICON2_ND_LVT[1], - MCON_ND_LVT[1], - M1_ND_LVT[1], - LI1_ND_LVT[1], - LI2_ND_LVT[1], - ] - sizes_w = [ - LICON1_ND_LVT[2], - LICON2_ND_LVT[2], - MCON_ND_LVT[2], - w - 0.05, - w - 0.12, - w + 0.04, - ] - space_fit_in = [ - w, - w + 0.34, - w - 0.12, - M1_ND_LVT[3], - LI1_ND_LVT[3], - LI2_ND_LVT[3], - ] - spaces = [ - LICON1_ND_LVT[4], - LICON2_ND_LVT[4], - MCON_ND_LVT[4], - M1_ND_LVT[4], - LI1_ND_LVT[4], - LI2_ND_LVT[4], - ] - - if gr == 0: - layer_names = [ - licon_layer, - mcon_layer, - m1_layer, - li_layer, - li_layer, - ] - l1 = [ - LICON1_ND_LVT[0], - MCON_ND_LVT[0], - M1_ND_LVT[0], - LI1_ND_LVT[0], - LI2_ND_LVT[0], - ] - sizes_l = [ - LICON1_ND_LVT[1], - MCON_ND_LVT[1], - M1_ND_LVT[1], - LI1_ND_LVT[1], - LI2_ND_LVT[1], - ] - sizes_w = [ - LICON1_ND_LVT[2], - MCON_ND_LVT[2], - w - 0.05, - w - 0.12, - w + 0.04, - ] - space_fit_in = [ - w, - w - 0.12, - M1_ND_LVT[3], - LI1_ND_LVT[3], - LI2_ND_LVT[3], - ] - spaces = [ - LICON1_ND_LVT[4], - MCON_ND_LVT[4], - M1_ND_LVT[4], - LI1_ND_LVT[4], - LI2_ND_LVT[4], - ] - - self.draw_contact_layer_h( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - layer_names = [licon_layer] - l1 = [LICON3_ND_HVT] - sizes_l = [LICON3_ND_LVT[1]] - sizes_w = [LICON3_ND_LVT[2]] - space_fit_in = [l_res + LICON3_ND_LVT[3]] - spaces = [LICON3_ND_LVT[4]] - if gr: - self.draw_contact_layer_v( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - c = self.get_c() - c.write_gds("res_temp.gds") - layout.read("res_temp.gds") - cell_name = type - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/res_metal_child.py b/sky130/cells/klayout/pymacros/cells/res_metal_child.py index 7838ac397..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/res_metal_child.py +++ b/sky130/cells/klayout/pymacros/cells/res_metal_child.py @@ -1,110 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - - -# res Generator for skywater130 - -from gdsfactory.types import LayerSpec - -from .layers_def import ( - li1_res, - li_layer, - m1_layer, - m2_layer, - m3_layer, - m4_layer, - m5_layer, - met1_res, - met2_res, - met3_res, - met4_res, - met5_res, -) -from .parent_res import draw_res - -# ########constants########## -# ONLY FOR GENERIC RES -L_MIN_G = 0.17 -W_MIN_G = 0.17 -# REACT -LI_LYAER_G = [0.285, 0] - - -# ########################## -class res_metal_draw(draw_res): - """child class for the backend of the metal res - Args: - type_ (str): type of the res - """ - - def __init__(self, type_): - super().__init__(type_) - # self.l=l - # self.w=w - # self.your_res() - - def gen_res(self, ly1: LayerSpec, ly2: LayerSpec): - """draw the different metal res - - Args: - ly1(LayerSpec): marked layer - ly2(LayerSpec): overlapping layer - - """ - layer_names = [ly1, ly2] - l1 = [0, LI_LYAER_G[0]] - w1 = [0, LI_LYAER_G[1]] - self.draw_rect_layer(layer_names, l1, w1) - - def your_res( - self, - layout, - type="sky130_fd_pr__res_generic_l1", - l_res: float = L_MIN_G, - w: float = W_MIN_G, - ): - """draw the res with calling the parent func with right data - - Args: - layout(layout): drawing layout - type(str): type of the resistor - l(float): length of the resistor - w(float): width of the resistor - - """ - self.set_l_w(l_res, w) - - if type == "sky130_fd_pr__res_generic_l1": - self.gen_res(li1_res, li_layer) - - elif type == "sky130_fd_pr__res_generic_m1": - self.gen_res(met1_res, m1_layer) - - elif type == "sky130_fd_pr__res_generic_m2": - self.gen_res(met2_res, m2_layer) - - elif type == "sky130_fd_pr__res_generic_m3": - self.gen_res(met3_res, m3_layer) - - elif type == "sky130_fd_pr__res_generic_m4": - self.gen_res(met4_res, m4_layer) - - elif type == "sky130_fd_pr__res_generic_m5": - self.gen_res(met5_res, m5_layer) - c = self.get_c() - c.write_gds("res_temp.gds") - layout.read("res_temp.gds") - cell_name = type - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/res_poly_child.py b/sky130/cells/klayout/pymacros/cells/res_poly_child.py index 91f943732..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/res_poly_child.py +++ b/sky130/cells/klayout/pymacros/cells/res_poly_child.py @@ -1,571 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - - -# res Generator for skywater130 - -import math - -from .layers_def import ( - dnwell_layer, - li_layer, - licon_layer, - m1_layer, - mcon_layer, - npc_layer, - nsdm_layer, - nwell_layer, - poly_layer, - poly_res, - psdm_layer, - pwell_res, - rpm_drawing, - rpm_high_drawing, - tap_layer, -) -from .parent_res import draw_res - -# ########constants########## -# ONLY FOR GENERIC RES -L_MIN_G = 1.65 -W_MIN_G = 0.42 - -# react -POLY_LAYER_G = [2.15, 0] -# FRAME -TAP_LI_LAYER_G = [2.8, 0.65, 0.17] -PSDM_LAYER_G = [2.925, 0.775, 0.42] - -# CONTACTS H -LICON1_LAYER_G = [1.9, 0.17, 0.17, 0, 0.17] -LICON2_LAYER_G = [2.63, 0.17, 0.17, 0, 0.17] -NPC_LAYER_G = [1.8, 0.37, 0, 0, 0] -LI1_LAYER_G = [0.085, 1.815, 0, 0, 0] -LI2_LAYER_G = [1.9, 0.17, 0, 0, 0] -M1_LAYER_G = [0.025, 2.105, 0, 0, 0] -# CONTACT V -LICON_LAYER_G = [0.48, 0.17, 0.17, 4.98, 0.17] -# 2D ARRAY -MCON_LAYER_G = [0.17, 0.09, 1.89] -# ################################### - - -# ONLY FOR ISO RES -L_MIN_ISO = 26.5 -W_MIN_ISO = 2.65 - -# react -DNWELL = [1.82, 1.03] -# FRAME -NWELL = [2.22, 1.43, 1.43] -TAP_LI_LAYER_ISO = [1.59, 0.8, 0.17] -NSDM_LAYER_ISO = [1.715, 0.925, 0.42] -# CONTACTS H -TAP_ISO = [0, 0.53, 0, 0, 0] -PSDM_ISO = [-0.125, 0.78, 0, 0, 0] -LI_ISO = [0, 0.53, 0, 0, 0] -M1_ISO = [0.055, 0.325, 0, 0, 0] -LICON_ISO = [0.01, 0.17, 0.17, 0, 0.17] -LICON_ISO2 = 0.35 -LICON_ISO3 = 1.42 -MCON_ISO = [0.13, 0.17, 0.17, 0, 0.19] -# CONTACTS H -LICON_ISO_H = [0.63, 0.17, 0.17, 2.1, 0.17] -# ############################### -# THE REST OF THE RES -L_MIN = 0.5 -W_MIN = 0.35 -W_MIN_0P35 = 0.35 -W_MIN_0P69 = 0.69 -W_MIN_1P41 = 1.41 -W_MIN_2P85 = 2.85 -W_MIN_5P73 = 5.73 -GR = 1 -RPM_LAYER = 0.29 -EXTRA_LEN = 0.12 - -# REACT -POLY_RES = [0, 0] -POLY_LAYER = [2.1, 0] -PSDM_LAYER = [2.875, 0.775] -PSDM_LAYER_NO_GR = [2.21, 0.11] -NPC_LAYER = [2.195, 0.095] -RPM_LAUER = [2.3, 0] -RPM_FOR_LAYERS = [0.46, 0.29, 0.2, 0.2, 0.2] -# FRAME -TAP_LI_LAYER = [2.75, 0.65, 0.17] -# CONTACTS H -LICON1_LAYER = [0.02, 2, 0.19, 0, 0.52] -LICON2_LAYER = [2.58, 0.17, 0.17, 0, 0.17] -LI_LAYER = [-0.06, 2.16, 0, 0, 0] -M1_LAYER = [-0.035, 2.105, 0, 0, 0] -LICON1_LAYER_NO_GR = 2 - -# CONTACT V -LICON_LAYER = [0.48, 0.17, 0.17, 4.31, 0.17] -# 2D ARRAY -MCON_LAYER = [0.17, 0.035, 1.83] - - -# ########################## -class res_poly_draw(draw_res): - """child class for the backend of the poly res - Args: - type_ (str): type of the res - """ - - def __init__(self, type_): - super().__init__(type_) - # self.l=l - # self.w=w - # self.your_res() - - def poly_res( - self, - l_res: float = L_MIN, - w: float = W_MIN, - gr: int = GR, - n_mcon: int = 0, - rpm: float = RPM_LAYER, - xhigh: int = 0, - ): - """draw the res the specific res with right data - - Args: - l_res(float): length of the resistor - w(float): width of the resistor - gr(int): guard ring of the resistor - n_mcon(float): mcon_layer number of columns - rpm(float): rpm layer width - xhigh(int): select high or xhigh poly res - - """ - # rects - self.set_l_w(l_res + EXTRA_LEN, w) - rpm_layer = rpm_drawing - if xhigh: - rpm_layer = rpm_high_drawing - layer_names = [poly_res, poly_layer, psdm_layer, npc_layer, rpm_layer] - l1 = [POLY_RES[0], POLY_LAYER[0], PSDM_LAYER[0], NPC_LAYER[0], RPM_LAUER[0]] - w1 = [POLY_RES[1], POLY_LAYER[1], PSDM_LAYER[1], NPC_LAYER[1], rpm] - if gr == 0: - layer_names = [poly_res, poly_layer, psdm_layer, npc_layer, rpm_layer] - l1 = [ - POLY_RES[0], - POLY_LAYER[0], - PSDM_LAYER_NO_GR[0], - NPC_LAYER[0], - RPM_LAUER[0], - ] - w1 = [POLY_RES[1], POLY_LAYER[1], PSDM_LAYER_NO_GR[1], NPC_LAYER[1], rpm] - self.draw_rect_layer(layer_names, l1, w1) - - # frams - layer_names = [tap_layer, li_layer] - l1 = [TAP_LI_LAYER[0], TAP_LI_LAYER[0]] - w1 = [TAP_LI_LAYER[1], TAP_LI_LAYER[1]] - thick = [TAP_LI_LAYER[2], TAP_LI_LAYER[2]] - if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) - - # countacts - - layer_names = [licon_layer, licon_layer, li_layer, m1_layer] - l1 = [LICON1_LAYER[0], LICON2_LAYER[0], LI_LAYER[0], M1_LAYER[0]] - sizes_l = [LICON1_LAYER[1], LICON2_LAYER[1], LI_LAYER[1], M1_LAYER[1]] - sizes_w = [LICON1_LAYER[2], LICON2_LAYER[2], w, w - 0.1] - space_fit_in = [w + 0.1, w + 0.34, LI_LAYER[3], M1_LAYER[3]] - spaces = [LICON1_LAYER[4], LICON2_LAYER[4], LI_LAYER[4], M1_LAYER[4]] - - if gr == 0: - layer_names = [licon_layer, li_layer, m1_layer] - l1 = [LICON1_LAYER[0], LI_LAYER[0], M1_LAYER[0]] - sizes_l = [LICON1_LAYER_NO_GR, LI_LAYER[1], M1_LAYER[1]] - sizes_w = [LICON1_LAYER[2], w, w - 0.1] - space_fit_in = [w + 0.1, LI_LAYER[3], M1_LAYER[3]] - spaces = [LICON1_LAYER[4], LI_LAYER[4], M1_LAYER[4]] - - self.draw_contact_layer_h( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - # vertical contacts - - layer_names = [licon_layer] - l1 = [LICON_LAYER[0]] - sizes_l = [LICON_LAYER[1]] - sizes_w = [LICON_LAYER[2]] - space_fit_in = [l_res + LICON_LAYER[3]] - spaces = [LICON_LAYER[4]] - - if gr: - self.draw_contact_layer_v( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - # 2d arr - self.draw_2dArr_layer( - mcon_layer, MCON_LAYER[0], MCON_LAYER[1], MCON_LAYER[2], n_mcon - ) - - def your_res( - self, - layout, - type="sky130_fd_pr__res_generic_po", - l_res: float = L_MIN_G, - w: float = W_MIN_G, - gr: int = GR, - ): - """draw the res with calling the parent func with right data - - Args: - layout(layout): drawing layout - type(str): type of the resistor - l_res(float): length of the resistor - w(float): width of the resistor - gr(int): guard ring of the resistor - - """ - self.set_l_w(l_res, w) - - if type == "sky130_fd_pr__res_generic_po": - # rects - layer_names = [poly_res, poly_layer] - l1 = [POLY_RES[0], POLY_LAYER_G[0]] - w1 = [POLY_RES[1], POLY_LAYER_G[1]] - - self.draw_rect_layer(layer_names, l1, w1) - - # frams - layer_names = [tap_layer, psdm_layer, li_layer] - l1 = [TAP_LI_LAYER_G[0], PSDM_LAYER_G[0], TAP_LI_LAYER_G[0]] - w1 = [TAP_LI_LAYER_G[1], PSDM_LAYER_G[1], TAP_LI_LAYER_G[1]] - thick = [TAP_LI_LAYER_G[2], PSDM_LAYER_G[2], TAP_LI_LAYER_G[2]] - if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) - - # countacts - - layer_names = [ - licon_layer, - licon_layer, - npc_layer, - li_layer, - li_layer, - m1_layer, - ] - # npc - counts_arr = math.floor(w / 0.36) - if counts_arr <= 0: - counts_arr = 1 - w_met = w - 0.21 - if counts_arr == 1: - w_met = 0.37 - ## - l1 = [ - LICON1_LAYER_G[0], - LICON2_LAYER_G[0], - NPC_LAYER_G[0], - LI1_LAYER_G[0], - LI2_LAYER_G[0], - M1_LAYER_G[0], - ] - sizes_l = [ - LICON1_LAYER_G[1], - LICON2_LAYER_G[1], - NPC_LAYER_G[1], - LI1_LAYER_G[1], - LI2_LAYER_G[1], - M1_LAYER_G[1], - ] - sizes_w = [LICON1_LAYER_G[2], LICON2_LAYER_G[2], w_met, w - 0.16, w, w] - space_fit_in = [ - w, - w + 0.68, - NPC_LAYER_G[3], - LI1_LAYER_G[3], - LI2_LAYER_G[3], - M1_LAYER_G[3], - ] - spaces = [ - LICON1_LAYER_G[4], - LICON2_LAYER_G[4], - NPC_LAYER_G[4], - LI1_LAYER_G[4], - LI2_LAYER_G[4], - M1_LAYER_G[4], - ] - - if gr == 0: - layer_names = [ - licon_layer, - npc_layer, - li_layer, - li_layer, - m1_layer, - ] - l1 = [ - LICON1_LAYER_G[0], - NPC_LAYER_G[0], - LI1_LAYER_G[0], - LI2_LAYER_G[0], - M1_LAYER_G[0], - ] - sizes_l = [ - LICON1_LAYER_G[1], - NPC_LAYER_G[1], - LI1_LAYER_G[1], - LI2_LAYER_G[1], - M1_LAYER_G[1], - ] - sizes_w = [LICON1_LAYER_G[2], w_met, w - 0.16, w, w] - space_fit_in = [ - w, - w + 0.68, - LI1_LAYER_G[3], - LI2_LAYER_G[3], - M1_LAYER_G[3], - ] - spaces = [ - LICON1_LAYER_G[4], - NPC_LAYER_G[4], - LI1_LAYER_G[4], - LI2_LAYER_G[4], - M1_LAYER_G[4], - ] - - self.draw_contact_layer_h( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - layer_names = [licon_layer] - l1 = [LICON_LAYER_G[0]] - sizes_l = [LICON_LAYER_G[1]] - sizes_w = [LICON_LAYER_G[2]] - space_fit_in = [l_res + LICON_LAYER_G[3]] - spaces = [LICON_LAYER_G[4]] - - if gr: - self.draw_contact_layer_v( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - # 2d arr - self.draw_2dArr_layer( - mcon_layer, MCON_LAYER_G[0], MCON_LAYER_G[1], MCON_LAYER_G[2] - ) # 0.09,1.9 - c = self.get_c() - c.write_gds("res_temp.gds") - layout.read("res_temp.gds") - cell_name = type - return layout.cell(cell_name) - - elif type == "sky130_fd_pr__res_iso_pw": - # rects - layer_names = [pwell_res, dnwell_layer] - l1 = [0, DNWELL[0]] - w1 = [0, DNWELL[1]] - if gr == 0: - layer_names = [pwell_res] - l1 = [0] - w1 = [0] - - self.draw_rect_layer(layer_names, l1, w1) - - # frams - layer_names = [nwell_layer, tap_layer, nsdm_layer, li_layer] - l1 = [NWELL[0], TAP_LI_LAYER_ISO[0], NSDM_LAYER_ISO[0], TAP_LI_LAYER_ISO[0]] - w1 = [NWELL[1], TAP_LI_LAYER_ISO[1], NSDM_LAYER_ISO[1], TAP_LI_LAYER_ISO[1]] - thick = [ - NWELL[2], - TAP_LI_LAYER_ISO[2], - NSDM_LAYER_ISO[2], - TAP_LI_LAYER_ISO[2], - ] - - if gr: - self.draw_frame_layer(layer_names, l1, w1, thick) - - # countacts - - layer_names = [ - tap_layer, - psdm_layer, - li_layer, - m1_layer, - licon_layer, - licon_layer, - licon_layer, - mcon_layer, - ] - - l1 = [ - TAP_ISO[0], - PSDM_ISO[0], - LI_ISO[0], - M1_ISO[0], - LICON_ISO[0], - LICON_ISO2, - LICON_ISO3, - MCON_ISO[0], - ] - sizes_l = [ - TAP_ISO[1], - PSDM_ISO[1], - LI_ISO[1], - M1_ISO[1], - LICON_ISO[1], - LICON_ISO[1], - LICON_ISO[1], - MCON_ISO[1], - ] - sizes_w = [ - w - 0.4, - w - 0.15, - w - 0.48, - w - 0.4, - LICON_ISO[2], - LICON_ISO[2], - LICON_ISO[2], - MCON_ISO[2], - ] - space_fit_in = [ - TAP_ISO[3], - PSDM_ISO[3], - LI_ISO[3], - M1_ISO[3], - w - 0.6, - w - 0.6, - w + 0.76, - w - 0.49, - ] - spaces = [ - TAP_ISO[4], - PSDM_ISO[4], - LI_ISO[4], - M1_ISO[4], - LICON_ISO[4], - LICON_ISO[4], - LICON_ISO[4], - MCON_ISO[4], - ] - - if gr == 0: - layer_names = [ - tap_layer, - psdm_layer, - li_layer, - m1_layer, - licon_layer, - licon_layer, - mcon_layer, - ] - - l1 = [ - TAP_ISO[0], - PSDM_ISO[0], - LI_ISO[0], - M1_ISO[0], - LICON_ISO[0], - LICON_ISO2, - MCON_ISO[0], - ] - sizes_l = [ - TAP_ISO[1], - PSDM_ISO[1], - LI_ISO[1], - M1_ISO[1], - LICON_ISO[1], - LICON_ISO[1], - MCON_ISO[1], - ] - sizes_w = [ - w - 0.4, - w - 0.15, - w - 0.48, - w - 0.4, - LICON_ISO[2], - LICON_ISO[2], - MCON_ISO[2], - ] - space_fit_in = [ - TAP_ISO[3], - PSDM_ISO[3], - LI_ISO[3], - M1_ISO[3], - w - 0.6, - w - 0.6, - w - 0.49, - ] - spaces = [ - TAP_ISO[4], - PSDM_ISO[4], - LI_ISO[4], - M1_ISO[4], - LICON_ISO[4], - LICON_ISO[4], - MCON_ISO[4], - ] - - self.draw_contact_layer_h( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - layer_names = [licon_layer] - l1 = [LICON_ISO_H[0]] - sizes_l = [LICON_ISO_H[1]] - sizes_w = [LICON_ISO_H[2]] - space_fit_in = [l_res + LICON_ISO_H[3]] - spaces = [LICON_ISO_H[4]] - - if gr: - self.draw_contact_layer_v( - layer_names, l1, sizes_w, sizes_l, space_fit_in, spaces - ) - - c = self.get_c() - c.write_gds("res_temp.gds") - layout.read("res_temp.gds") - cell_name = type - return layout.cell(cell_name) - - elif type == "sky130_fd_pr__res_high_po_0p35": - self.poly_res(l_res, W_MIN_0P35, gr, 0, RPM_FOR_LAYERS[0]) - elif type == "sky130_fd_pr__res_high_po_0p69": - self.poly_res(l_res, W_MIN_0P69, gr, 1, RPM_FOR_LAYERS[1]) - elif type == "sky130_fd_pr__res_high_po_1p41": - self.poly_res(l_res, W_MIN_1P41, gr, 1, RPM_FOR_LAYERS[2]) - elif type == "sky130_fd_pr__res_high_po_2p85": - self.poly_res(l_res, W_MIN_2P85, gr, 1, RPM_FOR_LAYERS[3]) - elif type == "sky130_fd_pr__res_high_po_5p73": - self.poly_res(l_res, W_MIN_5P73, gr, 1, RPM_FOR_LAYERS[4]) - # high - - elif type == "sky130_fd_pr__res_xhigh_po_0p35": - self.poly_res(l_res, W_MIN_0P35, gr, 0, RPM_FOR_LAYERS[0], 1) - elif type == "sky130_fd_pr__res_xhigh_po_0p69": - self.poly_res(l_res, W_MIN_0P69, gr, 1, RPM_FOR_LAYERS[1], 1) - elif type == "sky130_fd_pr__res_xhigh_po_1p41": - self.poly_res(l_res, W_MIN_1P41, gr, 1, RPM_FOR_LAYERS[2], 1) - elif type == "sky130_fd_pr__res_xhigh_po_2p85": - self.poly_res(l_res, W_MIN_2P85, gr, 1, RPM_FOR_LAYERS[3], 1) - elif type == "sky130_fd_pr__res_xhigh_po_5p73": - self.poly_res(l_res, W_MIN_5P73, gr, 1, RPM_FOR_LAYERS[4], 1) - - c = self.get_c() - c.write_gds("res_temp.gds") - layout.read("res_temp.gds") - cell_name = type - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/via_generator.py b/sky130/cells/klayout/pymacros/cells/via_generator.py index 59c5bdfd7..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/cells/via_generator.py +++ b/sky130/cells/klayout/pymacros/cells/via_generator.py @@ -1,598 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# via Generator for skywater130 -######################################################################################################################## - - -from math import ceil, floor - -import gdsfactory as gf -from gdsfactory.types import Float2, LayerSpec - -from .layers_def import ( - diff_layer, - li_layer, - licon_layer, - m1_layer, - m2_layer, - m3_layer, - m4_layer, - m5_layer, - mcon_layer, - npc_layer, - nsdm_layer, - nwell_layer, - poly_layer, - psdm_layer, - tap_layer, - via1_layer, - via2_layer, - via3_layer, - via4_layer, -) - - -@gf.cell -def via_generator( - x_range: Float2 = (0, 1), - y_range: Float2 = (0, 1), - via_size: Float2 = (0.17, 0.17), - via_layer: LayerSpec = (66, 44), - via_enclosure: Float2 = (0.06, 0.06), - via_spacing: Float2 = (0.17, 0.17), -) -> gf.Component(): - """ - return only vias withen the range xrange and yrange while enclosing by via_enclosure - and set number of rows and number of coloumns according to ranges and via size and spacing - - """ - - c = gf.Component() - - width = x_range[1] - x_range[0] - length = y_range[1] - y_range[0] - nr = floor(length / (via_size[1] + via_spacing[1])) - if (length - nr * via_size[1] - (nr - 1) * via_spacing[1]) / 2 < via_enclosure[1]: - nr -= 1 - - if nr < 1: - nr = 1 - - nc = ceil(width / (via_size[0] + via_spacing[0])) - - if ( - round(width - nc * via_size[0] - (nc - 1) * via_spacing[0], 2) - ) / 2 < via_enclosure[0]: - nc -= 1 - - if nc < 1: - nc = 1 - - via_sp = (via_size[0] + via_spacing[0], via_size[1] + via_spacing[1]) - - rect_via = gf.components.rectangle(size=via_size, layer=via_layer) - - via_arr = c.add_array(rect_via, rows=nr, columns=nc, spacing=via_sp) - - via_arr.move((x_range[0], y_range[0])) - - via_arr.movex((width - nc * via_size[0] - (nc - 1) * via_spacing[0]) / 2) - via_arr.movey((length - nr * via_size[1] - (nr - 1) * via_spacing[1]) / 2) - - return c - - -@gf.cell -def via_stack( - x_range: Float2 = (0, 1), - y_range: Float2 = (0, 1), - base_layer: LayerSpec = diff_layer, - slotted_licon: int = 0, - metal_level: int = 1, - li_enc_dir="V", -) -> gf.Component: - """ - return via stack till the metal level indicated where : - metal_level 0 : till li - metal_level 1 : till m1 - metal_level 2 : till m2 - metal_level 3 : till m3 - metal_level 4 : till m4 - metal_level 5 : till m5 - withen the range xrange and yrange and expecting the base_layer to be drawen - - """ - - c = gf.Component() - - # vias dimensions - - if slotted_licon == 1: - licon_size = (0.19, 2) - - else: - licon_size = (0.17, 0.17) - - mcon_size = (0.17, 0.17) - - if base_layer == diff_layer or base_layer == tap_layer: - con_enc = (0.06, 0.06) - - # elif base_layer == tap_layer: - # con_enc = (0.1,0.06) - - elif base_layer == poly_layer: - con_enc = (0.05, 0.08) - npc_enc = 0.01 - npc = c.add_ref( - gf.components.rectangle( - size=( - x_range[1] - x_range[0] + 2 * npc_enc, - y_range[1] - y_range[0] + 2 * npc_enc, - ), - layer=npc_layer, - ) - ) - npc.move((x_range[0] - npc_enc, y_range[0] - npc_enc)) - - else: - pass - - if li_enc_dir == "H": - li_enc = (0.08, 0) - m1_enc = (0.06, 0.03) - elif li_enc_dir == "V": - li_enc = (0, 0.08) - m1_enc = (0.03, 0.06) - - con_spacing = (0.19, 0.19) - - via1_size = (0.15, 0.15) - via1_spacing = (0.17, 0.17) - via1_enc = (0.055, 0.085) - - via2_size = (0.2, 0.2) - via2_enc = (0.04, 0.085) - via2_spacing = (0.2, 0.2) - - via3_size = (0.2, 0.2) - via3_enc = (0.06, 0.09) - via3_spacing = (0.2, 0.2) - - via4_size = (0.8, 0.8) - via4_enc = (0.19, 0.19) - via4_spacing = (0.8, 0.8) - - if metal_level >= 0: - licon_gen = via_generator( - x_range=x_range, - y_range=y_range, - via_size=licon_size, - via_enclosure=con_enc, - via_layer=licon_layer, - via_spacing=con_spacing, - ) - licon = c.add_ref(licon_gen) - - li = c.add_ref( - gf.components.rectangle( - size=( - licon.xmax - licon.xmin + (2 * li_enc[0]), - licon.ymax - licon.ymin + (2 * li_enc[1]), - ), - layer=li_layer, - ) - ) - li.move((licon.xmin - li_enc[0], licon.ymin - li_enc[1])) - - if metal_level >= 1: - mcon_gen = via_generator( - x_range=x_range, - y_range=y_range, - via_size=mcon_size, - via_enclosure=con_enc, - via_layer=mcon_layer, - via_spacing=con_spacing, - ) - mcon = c.add_ref(mcon_gen) - - if (mcon.xmax - mcon.xmin + 2 * m1_enc[0]) < ( - via1_size[0] + 2 * via1_enc[0] - ) and metal_level >= 2: - m1_x = via1_size[0] + 2 * via1_enc[0] - - else: - m1_x = mcon.xmax - mcon.xmin + 2 * m1_enc[0] - - if (mcon.ymax - mcon.ymin + 2 * m1_enc[1]) < ( - via1_size[1] + 2 * via1_enc[1] - ) and metal_level >= 2: - m1_y = via1_size[1] + 2 * via1_enc[1] - - else: - m1_y = mcon.ymax - mcon.ymin + 2 * m1_enc[1] - - m1_a = 0.084 - - if (m1_x * m1_y) < m1_a: - m1_x = m1_a / m1_y - - m1_mx = (m1_x - (mcon.xmax - mcon.xmin)) / 2 - m1_my = (m1_y - (mcon.ymax - mcon.ymin)) / 2 - - m1 = c.add_ref(gf.components.rectangle(size=(m1_x, m1_y), layer=m1_layer)) - m1.move((mcon.xmin - m1_mx, mcon.ymin - m1_my)) - - if metal_level >= 2: - via1_gen = via_generator( - x_range=(m1.xmin, m1.xmax), - y_range=(m1.ymin, m1.ymax), - via_size=via1_size, - via_enclosure=via1_enc, - via_layer=via1_layer, - via_spacing=via1_spacing, - ) - via1 = c.add_ref(via1_gen) - - if (via1.xmax - via1.xmin) > (via1.ymax - via1.ymin): - m2_enc = (0.055, 0.085) - else: - m2_enc = (0.085, 0.055) - - if (via1.xmax - via1.xmin + 2 * m2_enc[0]) < ( - via2_size[0] + 2 * via2_enc[0] - ) and metal_level >= 3: - m2_x = via2_size[0] + 2 * via2_enc[0] - - else: - m2_x = via1.xmax - via1.xmin + 2 * m2_enc[0] - - if (via1.ymax - via1.ymin + 2 * m2_enc[1]) < ( - via2_size[1] + 2 * via2_enc[1] - ) and metal_level >= 3: - m2_y = via2_size[1] + 2 * via2_enc[1] - - else: - m2_y = via1.ymax - via1.ymin + 2 * m2_enc[1] - - m2_mx = (m2_x - (via1.xmax - via1.xmin)) / 2 - m2_my = (m2_y - (via1.ymax - via1.ymin)) / 2 - - m2 = c.add_ref(gf.components.rectangle(size=(m2_x, m2_y), layer=m2_layer)) - m2.move((via1.xmin - m2_mx, via1.ymin - m2_my)) - - if metal_level >= 3: - via2_gen = via_generator( - x_range=(m2.xmin, m2.xmax), - y_range=(m2.ymin, m2.ymax), - via_size=via2_size, - via_enclosure=via2_enc, - via_layer=via2_layer, - via_spacing=via2_spacing, - ) - via2 = c.add_ref(via2_gen) - - m3_enc = (0.065, 0.065) - - if (via2.xmax - via2.xmin + 2 * m3_enc[0]) < ( - via3_size[0] + 2 * via3_enc[0] - ) and metal_level >= 4: - m3_x = via3_size[0] + 2 * via3_enc[0] - - else: - m3_x = via2.xmax - via2.xmin + 2 * m3_enc[0] - - if (via2.ymax - via2.ymin + 2 * m3_enc[1]) < ( - via3_size[1] + 2 * via3_enc[1] - ) and metal_level >= 4: - m3_y = via3_size[1] + 2 * via3_enc[1] - - else: - m3_y = via2.ymax - via2.ymin + 2 * m3_enc[1] - - m3_mx = (m3_x - (via2.xmax - via2.xmin)) / 2 - m3_my = (m3_y - (via2.ymax - via2.ymin)) / 2 - - m3 = c.add_ref(gf.components.rectangle(size=(m3_x, m3_y), layer=m3_layer)) - m3.move((via2.xmin - m3_mx, via2.ymin - m3_my)) - - if metal_level >= 4: - via3_gen = via_generator( - x_range=(m3.xmin, m3.xmax), - y_range=(m3.ymin, m3.ymax), - via_size=via3_size, - via_enclosure=via3_enc, - via_layer=via3_layer, - via_spacing=via3_spacing, - ) - via3 = c.add_ref(via3_gen) - - m4_enc = (0.065, 0.065) - - if (via3.xmax - via3.xmin + 2 * m4_enc[0]) < ( - via4_size[0] + 2 * via4_enc[0] - ) and metal_level >= 5: - m4_x = via4_size[0] + 2 * via4_enc[0] - - else: - m4_x = via3.xmax - via3.xmin + 2 * m4_enc[0] - - if (via3.ymax - via3.ymin + 2 * m4_enc[1]) < ( - via4_size[1] + 2 * via4_enc[1] - ) and metal_level >= 5: - m4_y = via4_size[1] + 2 * via4_enc[1] - - else: - m4_y = via3.ymax - via3.ymin + 2 * m4_enc[1] - - m4_mx = (m4_x - (via3.xmax - via3.xmin)) / 2 - m4_my = (m4_y - (via3.ymax - via3.ymin)) / 2 - - m4 = c.add_ref(gf.components.rectangle(size=(m4_x, m4_y), layer=m4_layer)) - m4.move((via3.xmin - m4_mx, via3.ymin - m4_my)) - - if metal_level >= 5: - via4_gen = via_generator( - x_range=(m4.xmin, m4.xmax), - y_range=(m4.ymin, m4.ymax), - via_size=via4_size, - via_enclosure=via4_enc, - via_layer=via4_layer, - via_spacing=via4_spacing, - ) - via4 = c.add_ref(via4_gen) - - m5_enc = (0.31, 0.31) - m5_min_w = 1.6 - if (via4.xmax - via4.xmin + 2 * m5_enc[0]) < m5_min_w: - m5_x = m5_min_w - - else: - m5_x = via4.xmax - via4.xmin + 2 * m5_enc[0] - - if (via4.ymax - via4.ymin + 2 * m5_enc[1]) < m5_min_w: - m5_y = m5_min_w - - else: - m5_y = via4.ymax - via4.ymin + 2 * m5_enc[1] - - m5_a = 4 - if (m5_x * m5_y) < m5_a: - m5_x = m5_a / m5_y - - m5_mx = (m5_x - (via4.xmax - via4.xmin)) / 2 - m5_my = (m5_y - (via4.ymax - via4.ymin)) / 2 - - m5 = c.add_ref(gf.components.rectangle(size=(m5_x, m5_y), layer=m5_layer)) - m5.move((via4.xmin - m5_mx, via4.ymin - m5_my)) - - return c - - -# @gf.cell -def vias_gen_draw( - layout, l_vias: float = 1.0, w: float = 1.0, start_layer="poly", end_layer="metal5" -): # -> gf.Component : - """ - draws a vias stack from the start_layer to the end_layer and also draws the start and end layers where : - l_vias : float of the length that vias will be drawn in - w : float of the width that vias will drawn in - start_layer : string of the first layer to be drawn that takes input of (poly,p_tap,n_tap,p_diff,n_diff,li,metal1:5) - end_layer : string of the last layer to be drawn that takes input of (poly,p_tap,n_tap,p_diff,n_diff,li,metal1:5) - - """ - c = gf.Component("via") - - base_layers = ["poly", "n_diff", "p_diff", "n_tap", "p_tap"] - metal_layers = ["li", "metal1", "metal2", "metal3", "metal4", "metal5"] - - if start_layer in base_layers: - level_1 = -1 - else: - for i in range(len(metal_layers)): - if start_layer == metal_layers[i]: - level_1 = i - - if end_layer in base_layers: - level_2 = -1 - else: - for i in range(len(metal_layers)): - if end_layer == metal_layers[i]: - level_2 = i - - if level_1 <= -1 and level_2 >= -1: - if start_layer == "poly" or end_layer == "poly": - npc_enc = 0.05 - c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=poly_layer)) - c.add_ref( - gf.components.rectangle( - size=(l_vias + 2 * npc_enc, w + 2 * npc_enc), layer=npc_layer - ) - ).move((-npc_enc, -npc_enc)) - if "diff" in start_layer or "diff" in end_layer: - n_p_enc = 0.125 - nwell_enc = 0.18 - c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=diff_layer)) - if "n_" in start_layer or "n_" in end_layer: - c.add_ref( - gf.components.rectangle( - size=(l_vias + 2 * n_p_enc, w + 2 * n_p_enc), layer=nsdm_layer - ) - ).move((-n_p_enc, -n_p_enc)) - else: - c.add_ref( - gf.components.rectangle( - size=(l_vias + 2 * n_p_enc, w + 2 * n_p_enc), layer=psdm_layer - ) - ).move((-n_p_enc, -n_p_enc)) - c.add_ref( - gf.components.rectangle( - size=(l_vias + 2 * nwell_enc, w + 2 * nwell_enc), - layer=nwell_layer, - ) - ).move((-nwell_enc, -nwell_enc)) - if "tap" in start_layer or "tap" in end_layer: - n_p_enc = 0.125 - nwell_enc = 0.18 - c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=tap_layer)) - if "n_" in start_layer or "n_" in end_layer: - c.add_ref( - gf.components.rectangle( - size=(l_vias + 2 * n_p_enc, w + 2 * n_p_enc), layer=nsdm_layer - ) - ).move((-n_p_enc, -n_p_enc)) - c.add_ref( - gf.components.rectangle( - size=(l_vias + 2 * nwell_enc, w + 2 * nwell_enc), - layer=nwell_layer, - ) - ).move((-nwell_enc, -nwell_enc)) - else: - c.add_ref( - gf.components.rectangle( - size=(l_vias + 2 * n_p_enc, w + 2 * n_p_enc), layer=psdm_layer - ) - ).move((-n_p_enc, -n_p_enc)) - - if level_1 <= 0 and level_2 >= 0: - c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=li_layer)) - - if level_1 <= 1 and level_2 >= 1: - c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m1_layer)) - - if level_1 <= 2 and level_2 >= 2: - c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m2_layer)) - - if level_1 <= 3 and level_2 >= 3: - c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m3_layer)) - - if level_1 <= 4 and level_2 >= 4: - c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m4_layer)) - - if level_1 <= 5 and level_2 >= 5: - c.add_ref(gf.components.rectangle(size=(l_vias, w), layer=m5_layer)) - - if level_1 <= -1 and level_2 > -1: - licon_size = (0.17, 0.17) - - licon_spacing = (0.17, 0.17) - - if start_layer == "poly": - licon_enc = (0.08, 0.05) - elif "diff" in start_layer: - licon_enc = (0.12, 0.06) # (0.06,0.04) - elif "tap" in start_layer: - licon_enc = (0.12, 0.06) - - licon = via_generator( - x_range=(0, l_vias), - y_range=(0, w), - via_size=licon_size, - via_layer=licon_layer, - via_enclosure=licon_enc, - via_spacing=licon_spacing, - ) - c.add_ref(licon) - - if level_1 <= 0 and level_2 > 0: - mcon_size = (0.17, 0.17) - mcon_enc = (0.06, 0.03) - mcon_spacing = (0.19, 0.19) - - mcon = via_generator( - x_range=(0, l_vias), - y_range=(0, w), - via_size=mcon_size, - via_layer=mcon_layer, - via_enclosure=mcon_enc, - via_spacing=mcon_spacing, - ) - c.add_ref(mcon) - - if level_1 <= 1 and level_2 > 1: - via1_size = (0.15, 0.15) - via1_enc = (0.085, 0.055) - via1_spacing = (0.17, 0.17) - - via1 = via_generator( - x_range=(0, l_vias), - y_range=(0, w), - via_size=via1_size, - via_layer=via1_layer, - via_enclosure=via1_enc, - via_spacing=via1_spacing, - ) - c.add_ref(via1) - - if level_1 <= 2 and level_2 > 2: - via2_size = (0.2, 0.2) - via2_enc = (0.085, 0.065) - via2_spacing = (0.2, 0.2) - - via2 = via_generator( - x_range=(0, l_vias), - y_range=(0, w), - via_size=via2_size, - via_layer=via2_layer, - via_enclosure=via2_enc, - via_spacing=via2_spacing, - ) - c.add_ref(via2) - - if level_1 <= 3 and level_2 > 3: - via3_size = (0.2, 0.2) - via3_enc = (0.09, 0.065) - via3_spacing = (0.2, 0.2) - - via3 = via_generator( - x_range=(0, l_vias), - y_range=(0, w), - via_size=via3_size, - via_layer=via3_layer, - via_enclosure=via3_enc, - via_spacing=via3_spacing, - ) - c.add_ref(via3) - - if level_1 <= 4 and level_2 > 4: - via4_size = (0.8, 0.8) - via4_enc = (0.31, 0.31) - via4_spacing = (0.8, 0.8) - - via4 = via_generator( - x_range=(0, l_vias), - y_range=(0, w), - via_size=via4_size, - via_layer=via4_layer, - via_enclosure=via4_enc, - via_spacing=via4_spacing, - ) - c.add_ref(via4) - - # creating layout and cell in klayout - c.write_gds("vias_temp.gds") - layout.read("vias_temp.gds") - cell_name = "via" - - return layout.cell(cell_name) - # return c - - -# testing the generated methods -if __name__ == "__main__": - c = vias_gen_draw(start_layer="li", end_layer="poly") - c.show() diff --git a/sky130/cells/klayout/pymacros/sky130.lym b/sky130/cells/klayout/pymacros/sky130.lym index 713cc161c..e69de29bb 100644 --- a/sky130/cells/klayout/pymacros/sky130.lym +++ b/sky130/cells/klayout/pymacros/sky130.lym @@ -1,50 +0,0 @@ - - - - - - pymacros - - - - true - false - - false - - - python - - - -import sys -import os - -technology_macros_path = os.path.dirname(os.path.abspath(__file__)) -sys.path.insert(0, technology_macros_path) - -from cells import sky130 - -# Instantiate and register the library -sky130() - -print("## Sky130 PDK Pcells loaded.") -print(sys.path) - - - diff --git a/sky130/compile_components.py b/sky130/compile_components.py new file mode 100644 index 000000000..4868cf453 --- /dev/null +++ b/sky130/compile_components.py @@ -0,0 +1,106 @@ +import os +import re +from functools import partial + +# Define the PDK directories +pdk_directories = ['src/sky130_fd_pr', 'src/sky130_fd_sc_hd'] + +# List to store gds file paths +gds_files = [] + +# Walk through the PDK directories and collect GDS files +for pdk_dir in pdk_directories: + for subdir, _, files in os.walk(pdk_dir): + for file in files: + if file.endswith('.gds'): + gds_files.append(os.path.join(subdir, file)) + +# Function to create Python code for each gds file +def create_code(file_path): + file_name = os.path.basename(file_path) + cell_name = os.path.splitext(file_name)[0] + + code = f""" +@cell +def {cell_name}() -> gf.Component: + \"\"\"Returns {cell_name} fixed cell. + + .. plot:: + :include-source: + + import sky130 + + c = sky130.components.{cell_name}() + c.plot() + \"\"\" + return import_gds("{file_path}", cellname="{cell_name}") +""" + return code + +# Prelude to add at the top of the file +prelude = """from functools import partial + +import gdsfactory as gf +from gdsfactory.cell import cell + +from sky130.config import PATH +from sky130.layers import LAYER + +# add_ports_m1 = gf.partial( +# gf.add_ports.add_ports_from_markers_inside, +# pin_layer=LAYER.met1pin, +# port_layer=LAYER.met1drawing, +# port_type="electrical", +# ) +# add_ports_m2 = gf.partial( +# gf.add_ports.add_ports_from_markers_inside, +# pin_layer=LAYER.met2pin, +# port_layer=LAYER.met2drawing, +# port_type="electrical", +# ) + +add_ports_m1 = gf.partial( + gf.add_ports.add_ports_from_labels, + port_layer=LAYER.met1drawing, + layer_label=LAYER.met1label, + port_type="electrical", + port_width=0.2, + get_name_from_label=True, + guess_port_orientation=False, +) +add_ports_m2 = gf.partial( + gf.add_ports.add_ports_from_labels, + port_layer=LAYER.met2drawing, + layer_label=LAYER.met2label, + port_type="electrical", + port_width=0.2, + get_name_from_label=True, + guess_port_orientation=False, +) +add_ports = gf.compose(add_ports_m1, add_ports_m2) + +gdsdir = PATH.module +import_gds = partial(gf.import_gds, gdsdir=gdsdir, decorator=add_ports) +""" + +# Write the code to a Python file +with open("components.py", "w") as f: + f.write(prelude) + for gds_file in gds_files: + gdsdir = os.path.dirname(gds_file) + code = create_code(gds_file) + f.write(code) + +print("Python file 'components.py' has been created.") + + +# if __name__ == "__main__": +# # gf.write_cells.write_cells(gdspath=PATH.gdshd, dirpath="gds") +# # gf.write_cells.write_cells(gdspath=PATH.gdshs, dirpath="gds") +# # gf.write_cells.write_cells(gdspath=PATH.gdshvl, dirpath="gds") +# # print(gf.write_cells.get_import_gds_script(PATH.gds)) +# # c = sky130_fd_sc_hvl__xor2_1() +# # c = sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() +# c = sky130_fd_sc_hd__conb_1() +# # c.show(show_ports=True) +# c.show() diff --git a/sky130/components.py b/sky130/components.py index e8aaae812..b6364057a 100644 --- a/sky130/components.py +++ b/sky130/components.py @@ -39,13458 +39,10183 @@ ) add_ports = gf.compose(add_ports_m1, add_ports_m2) -gdsdir = PATH.gds - +gdsdir = PATH.module import_gds = partial(gf.import_gds, gdsdir=gdsdir, decorator=add_ports) - @cell -def sky130_fd_sc_hd__a2111o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111o_1 fixed cell. +def sky130_fd_pr__rf_nfet_20v0_withptap_iso() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_withptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111o_1() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_withptap_iso() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2111o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_withptap_iso/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds", cellname="sky130_fd_pr__rf_nfet_20v0_withptap_iso") @cell -def sky130_fd_sc_hd__a2111o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111o_2 fixed cell. +def sky130_fd_pr__rf_aura_lvs_drc() -> gf.Component: + """Returns sky130_fd_pr__rf_aura_lvs_drc fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111o_2() + c = sky130.components.sky130_fd_pr__rf_aura_lvs_drc() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2111o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_aura_lvs_drc/sky130_fd_pr__rf_aura_lvs_drc.gds", cellname="sky130_fd_pr__rf_aura_lvs_drc") @cell -def sky130_fd_sc_hd__a2111o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111o_4 fixed cell. +def sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() -> gf.Component: + """Returns sky130_fd_pr__rf_pnp_05v5_W0p68L0p68 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111o_4() + c = sky130.components.sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2111o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pnp_05v5/sky130_fd_pr__rf_pnp_05v5_W0p68L0p68.gds", cellname="sky130_fd_pr__rf_pnp_05v5_W0p68L0p68") @cell -def sky130_fd_sc_hd__a2111oi_0() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111oi_0 fixed cell. +def sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() -> gf.Component: + """Returns sky130_fd_pr__rf_pnp_05v5_W3p40L3p40 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111oi_0() + c = sky130.components.sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2111oi_0.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pnp_05v5/sky130_fd_pr__rf_pnp_05v5_W3p40L3p40.gds", cellname="sky130_fd_pr__rf_pnp_05v5_W3p40L3p40") @cell -def sky130_fd_sc_hd__a2111oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111oi_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111oi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2111oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18") @cell -def sky130_fd_sc_hd__a2111oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111oi_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111oi_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2111oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25") @cell -def sky130_fd_sc_hd__a2111oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111oi_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111oi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2111oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15") @cell -def sky130_fd_sc_hd__a211o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a211o_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211o_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a211o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18") @cell -def sky130_fd_sc_hd__a211o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a211o_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211o_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a211o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18") @cell -def sky130_fd_sc_hd__a211o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a211o_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211o_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a211o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18") @cell -def sky130_fd_sc_hd__a211oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a211oi_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211oi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a211oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15") @cell -def sky130_fd_sc_hd__a211oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a211oi_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211oi_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a211oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25") @cell -def sky130_fd_sc_hd__a211oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a211oi_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211oi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a211oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15") @cell -def sky130_fd_sc_hd__a21bo_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a21bo_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21bo_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21bo_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15") @cell -def sky130_fd_sc_hd__a21bo_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a21bo_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21bo_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21bo_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15") @cell -def sky130_fd_sc_hd__a21bo_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a21bo_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21bo_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21bo_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15") @cell -def sky130_fd_sc_hd__a21boi_0() -> gf.Component: - """Returns sky130_fd_sc_hd__a21boi_0 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21boi_0() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21boi_0.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25") @cell -def sky130_fd_sc_hd__a21boi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a21boi_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21boi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21boi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18") @cell -def sky130_fd_sc_hd__a21boi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a21boi_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21boi_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21boi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18") @cell -def sky130_fd_sc_hd__a21boi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a21boi_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21boi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21boi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18") @cell -def sky130_fd_sc_hd__a21o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a21o_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21o_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25") @cell -def sky130_fd_sc_hd__a21o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a21o_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21o_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15") @cell -def sky130_fd_sc_hd__a21o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a21o_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21o_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25") @cell -def sky130_fd_sc_hd__a21oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a21oi_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21oi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18") @cell -def sky130_fd_sc_hd__a21oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a21oi_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21oi_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15") @cell -def sky130_fd_sc_hd__a21oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a21oi_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21oi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a21oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15") @cell -def sky130_fd_sc_hd__a221o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a221o_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221o_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a221o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15") @cell -def sky130_fd_sc_hd__a221o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a221o_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221o_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a221o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25") @cell -def sky130_fd_sc_hd__a221o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a221o_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221o_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a221o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15") @cell -def sky130_fd_sc_hd__a221oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a221oi_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221oi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a221oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15") @cell -def sky130_fd_sc_hd__a221oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a221oi_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221oi_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a221oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25") @cell -def sky130_fd_sc_hd__a221oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a221oi_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221oi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a221oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25") @cell -def sky130_fd_sc_hd__a222oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a222oi_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a222oi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a222oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25") @cell -def sky130_fd_sc_hd__a22o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a22o_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22o_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a22o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25") @cell -def sky130_fd_sc_hd__a22o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a22o_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22o_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a22o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18") @cell -def sky130_fd_sc_hd__a22o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a22o_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22o_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a22o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15") @cell -def sky130_fd_sc_hd__a22oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a22oi_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22oi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a22oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15") @cell -def sky130_fd_sc_hd__a22oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a22oi_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22oi_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a22oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15") @cell -def sky130_fd_sc_hd__a22oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a22oi_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22oi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a22oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18") @cell -def sky130_fd_sc_hd__a2bb2o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2o_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2o_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2bb2o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18") @cell -def sky130_fd_sc_hd__a2bb2o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2o_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2o_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2bb2o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25") @cell -def sky130_fd_sc_hd__a2bb2o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2o_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2o_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2bb2o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18") @cell -def sky130_fd_sc_hd__a2bb2oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2oi_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2oi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2bb2oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25") @cell -def sky130_fd_sc_hd__a2bb2oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2oi_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2oi_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2bb2oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15") @cell -def sky130_fd_sc_hd__a2bb2oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2oi_4 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2oi_4() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() c.plot() """ - return import_gds("sky130_fd_sc_hd__a2bb2oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5") @cell -def sky130_fd_sc_hd__a311o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a311o_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311o_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__a311o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top") @cell -def sky130_fd_sc_hd__a311o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a311o_2 fixed cell. +def sky130_fd_pr__rf_test_coil1() -> gf.Component: + """Returns sky130_fd_pr__rf_test_coil1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311o_2() + c = sky130.components.sky130_fd_pr__rf_test_coil1() c.plot() """ - return import_gds("sky130_fd_sc_hd__a311o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_test_coil1/sky130_fd_pr__rf_test_coil1.gds", cellname="sky130_fd_pr__rf_test_coil1") @cell -def sky130_fd_sc_hd__a311o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a311o_4 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311o_4() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() c.plot() """ - return import_gds("sky130_fd_sc_hd__a311o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2m3_shieldl1/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1") @cell -def sky130_fd_sc_hd__a311oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a311oi_1 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311oi_1() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() c.plot() """ - return import_gds("sky130_fd_sc_hd__a311oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_l1m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell") @cell -def sky130_fd_sc_hd__a311oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a311oi_2 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311oi_2() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__a311oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_l1m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield") @cell -def sky130_fd_sc_hd__a311oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a311oi_4 fixed cell. +def sky130_fd_pr__rf_nfet_20v0_aup() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_aup fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311oi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_aup() c.plot() """ - return import_gds("sky130_fd_sc_hd__a311oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_aup/sky130_fd_pr__rf_nfet_20v0_aup.gds", cellname="sky130_fd_pr__rf_nfet_20v0_aup") @cell -def sky130_fd_sc_hd__a31o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a31o_1 fixed cell. +def sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31o_1() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() c.plot() """ - return import_gds("sky130_fd_sc_hd__a31o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_noptap_iso/sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds", cellname="sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso") @cell -def sky130_fd_sc_hd__a31o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a31o_2 fixed cell. +def sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31o_2() + c = sky130.components.sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__a31o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__a31o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a31o_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31o_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() c.plot() """ - return import_gds("sky130_fd_sc_hd__a31o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35") @cell -def sky130_fd_sc_hd__a31oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a31oi_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31oi_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hd__a31oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50") @cell -def sky130_fd_sc_hd__a31oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a31oi_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31oi_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hd__a31oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50") @cell -def sky130_fd_sc_hd__a31oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a31oi_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31oi_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hd__a31oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50") @cell -def sky130_fd_sc_hd__a32o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a32o_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32o_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hd__a32o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50") @cell -def sky130_fd_sc_hd__a32o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a32o_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32o_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() c.plot() """ - return import_gds("sky130_fd_sc_hd__a32o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35") @cell -def sky130_fd_sc_hd__a32o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a32o_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32o_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() c.plot() """ - return import_gds("sky130_fd_sc_hd__a32o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35") @cell -def sky130_fd_sc_hd__a32oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a32oi_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32oi_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() c.plot() """ - return import_gds("sky130_fd_sc_hd__a32oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35") @cell -def sky130_fd_sc_hd__a32oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a32oi_2 fixed cell. +def sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32oi_2() + c = sky130.components.sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__a32oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__a32oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a32oi_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32oi_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a32oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15") @cell -def sky130_fd_sc_hd__a41o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a41o_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41o_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a41o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25") @cell -def sky130_fd_sc_hd__a41o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a41o_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41o_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a41o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18") @cell -def sky130_fd_sc_hd__a41o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a41o_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41o_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__a41o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18") @cell -def sky130_fd_sc_hd__a41oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a41oi_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41oi_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a41oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15") @cell -def sky130_fd_sc_hd__a41oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a41oi_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41oi_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__a41oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15") @cell -def sky130_fd_sc_hd__a41oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a41oi_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41oi_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__a41oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25") @cell -def sky130_fd_sc_hd__and2_0() -> gf.Component: - """Returns sky130_fd_sc_hd__and2_0 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2_0() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__and2_0.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18") @cell -def sky130_fd_sc_hd__and2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and2_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and2_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15") @cell -def sky130_fd_sc_hd__and2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and2_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and2_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15") @cell -def sky130_fd_sc_hd__and2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and2_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__and2_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18") @cell -def sky130_fd_sc_hd__and2b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and2b_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2b_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and2b_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15") @cell -def sky130_fd_sc_hd__and2b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and2b_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2b_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and2b_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15") @cell -def sky130_fd_sc_hd__and2b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and2b_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2b_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__and2b_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25") @cell -def sky130_fd_sc_hd__and3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and3_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__and3_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25") @cell -def sky130_fd_sc_hd__and3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and3_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and3_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15") @cell -def sky130_fd_sc_hd__and3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and3_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__and3_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25") @cell -def sky130_fd_sc_hd__and3b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and3b_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3b_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__and3b_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18") @cell -def sky130_fd_sc_hd__and3b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and3b_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3b_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__and3b_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18") @cell -def sky130_fd_sc_hd__and3b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and3b_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3b_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__and3b_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25") @cell -def sky130_fd_sc_hd__and4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and4_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__and4_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25") @cell -def sky130_fd_sc_hd__and4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and4_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and4_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15") @cell -def sky130_fd_sc_hd__and4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and4_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and4_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15") @cell -def sky130_fd_sc_hd__and4b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and4b_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4b_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and4b_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15") @cell -def sky130_fd_sc_hd__and4b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and4b_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4b_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__and4b_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18") @cell -def sky130_fd_sc_hd__and4b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and4b_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4b_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and4b_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15") @cell -def sky130_fd_sc_hd__and4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and4bb_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4bb_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and4bb_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15") @cell -def sky130_fd_sc_hd__and4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and4bb_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4bb_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__and4bb_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15") @cell -def sky130_fd_sc_hd__and4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and4bb_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4bb_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__and4bb_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18") @cell -def sky130_fd_sc_hd__buf_1() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__buf_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15") @cell -def sky130_fd_sc_hd__buf_12() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_12 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_12() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__buf_12.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15") @cell -def sky130_fd_sc_hd__buf_16() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_16 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_16() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__buf_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15") @cell -def sky130_fd_sc_hd__buf_2() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__buf_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25") @cell -def sky130_fd_sc_hd__buf_4() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__buf_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15") @cell -def sky130_fd_sc_hd__buf_6() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_6 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_6() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__buf_6.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25") @cell -def sky130_fd_sc_hd__buf_8() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_8 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_8() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__buf_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15") @cell -def sky130_fd_sc_hd__bufbuf_16() -> gf.Component: - """Returns sky130_fd_sc_hd__bufbuf_16 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__bufbuf_16() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__bufbuf_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15") @cell -def sky130_fd_sc_hd__bufbuf_8() -> gf.Component: - """Returns sky130_fd_sc_hd__bufbuf_8 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__bufbuf_8() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__bufbuf_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15") @cell -def sky130_fd_sc_hd__bufinv_16() -> gf.Component: - """Returns sky130_fd_sc_hd__bufinv_16 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__bufinv_16() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__bufinv_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15") @cell -def sky130_fd_sc_hd__bufinv_8() -> gf.Component: - """Returns sky130_fd_sc_hd__bufinv_8 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__bufinv_8() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__bufinv_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18") @cell -def sky130_fd_sc_hd__clkbuf_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkbuf_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15") @cell -def sky130_fd_sc_hd__clkbuf_16() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_16 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_16() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkbuf_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25") @cell -def sky130_fd_sc_hd__clkbuf_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkbuf_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15") @cell -def sky130_fd_sc_hd__clkbuf_4() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkbuf_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15") @cell -def sky130_fd_sc_hd__clkbuf_8() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_8 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_8() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkbuf_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15") @cell -def sky130_fd_sc_hd__clkdlybuf4s15_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s15_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkdlybuf4s15_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15") @cell -def sky130_fd_sc_hd__clkdlybuf4s15_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s15_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkdlybuf4s15_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15") @cell -def sky130_fd_sc_hd__clkdlybuf4s18_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s18_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkdlybuf4s18_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25") @cell -def sky130_fd_sc_hd__clkdlybuf4s18_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s18_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkdlybuf4s18_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18") @cell -def sky130_fd_sc_hd__clkdlybuf4s25_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s25_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkdlybuf4s25_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18") @cell -def sky130_fd_sc_hd__clkdlybuf4s25_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s25_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkdlybuf4s25_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15") @cell -def sky130_fd_sc_hd__clkdlybuf4s50_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s50_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkdlybuf4s50_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25") @cell -def sky130_fd_sc_hd__clkdlybuf4s50_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s50_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkdlybuf4s50_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15") @cell -def sky130_fd_sc_hd__clkinv_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_1 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_1() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkinv_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15") @cell -def sky130_fd_sc_hd__clkinv_16() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_16 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_16() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkinv_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18") @cell -def sky130_fd_sc_hd__clkinv_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_2 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_2() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkinv_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15") @cell -def sky130_fd_sc_hd__clkinv_4() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_4 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_4() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkinv_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2") @cell -def sky130_fd_sc_hd__clkinv_8() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_8 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_8() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkinv_8.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield") @cell -def sky130_fd_sc_hd__clkinvlp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinvlp_2 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinvlp_2() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkinvlp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2_shieldl1/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1") @cell -def sky130_fd_sc_hd__clkinvlp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinvlp_4 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinvlp_4() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__clkinvlp_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top") @cell -def sky130_fd_sc_hd__conb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__conb_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__conb_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() c.plot() """ - return import_gds("sky130_fd_sc_hd__conb_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4") @cell -def sky130_fd_sc_hd__decap_12() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_12 fixed cell. +def sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_12() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() c.plot() """ - return import_gds("sky130_fd_sc_hd__decap_12.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_withptap_iso/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds", cellname="sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso") @cell -def sky130_fd_sc_hd__decap_3() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_3 fixed cell. +def sky130_fd_pr__rf_test_coil2() -> gf.Component: + """Returns sky130_fd_pr__rf_test_coil2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_3() + c = sky130.components.sky130_fd_pr__rf_test_coil2() c.plot() """ - return import_gds("sky130_fd_sc_hd__decap_3.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_test_coil2/sky130_fd_pr__rf_test_coil2.gds", cellname="sky130_fd_pr__rf_test_coil2") @cell -def sky130_fd_sc_hd__decap_4() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_4 fixed cell. +def sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_4() + c = sky130.components.sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() c.plot() """ - return import_gds("sky130_fd_sc_hd__decap_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p9x06p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds", cellname="sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2") @cell -def sky130_fd_sc_hd__decap_6() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_6 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_6() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() c.plot() """ - return import_gds("sky130_fd_sc_hd__decap_6.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5") @cell -def sky130_fd_sc_hd__decap_8() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_8 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_8() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__decap_8.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top") @cell -def sky130_fd_sc_hd__dfbbn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfbbn_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfbbn_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfbbn_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__dfbbn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfbbn_2 fixed cell. +def sky130_fd_pr__rf_test_coil3() -> gf.Component: + """Returns sky130_fd_pr__rf_test_coil3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfbbn_2() + c = sky130.components.sky130_fd_pr__rf_test_coil3() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfbbn_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_test_coil3/sky130_fd_pr__rf_test_coil3.gds", cellname="sky130_fd_pr__rf_test_coil3") @cell -def sky130_fd_sc_hd__dfbbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfbbp_1 fixed cell. +def sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfbbp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfbbp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p7x11p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds", cellname="sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap") @cell -def sky130_fd_sc_hd__dfrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrbp_1 fixed cell. +def sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrbp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfrbp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p7x41p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds", cellname="sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap") @cell -def sky130_fd_sc_hd__dfrbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrbp_2 fixed cell. +def sky130_fd_pr__rf_nfet_20v0_withptap() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrbp_2() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_withptap() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfrbp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_withptap/sky130_fd_pr__rf_nfet_20v0_withptap.gds", cellname="sky130_fd_pr__rf_nfet_20v0_withptap") @cell -def sky130_fd_sc_hd__dfrtn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrtn_1 fixed cell. +def sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() -> gf.Component: + """Returns sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrtn_1() + c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfrtn_1.gds") - + return import_gds("src/sky130_fd_pr/cells/esd_rf_nfet_20v0_iec/sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00.gds", cellname="sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00") @cell -def sky130_fd_sc_hd__dfrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrtp_1 fixed cell. +def sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() -> gf.Component: + """Returns sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrtp_1() + c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfrtp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/esd_rf_nfet_20v0_iec/sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00.gds", cellname="sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00") @cell -def sky130_fd_sc_hd__dfrtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrtp_2 fixed cell. +def sky130_fd_pr__rf_pfet_20v0_withptap() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_20v0_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrtp_2() + c = sky130.components.sky130_fd_pr__rf_pfet_20v0_withptap() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfrtp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_20v0_withptap/sky130_fd_pr__rf_pfet_20v0_withptap.gds", cellname="sky130_fd_pr__rf_pfet_20v0_withptap") @cell -def sky130_fd_sc_hd__dfrtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrtp_4 fixed cell. +def sky130_fd_pr__rf_nfet_20v0_nvt_withptap() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_nvt_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrtp_4() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_withptap() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfrtp_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_withptap/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds", cellname="sky130_fd_pr__rf_nfet_20v0_nvt_withptap") @cell -def sky130_fd_sc_hd__dfsbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfsbp_1 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfsbp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfsbp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4") @cell -def sky130_fd_sc_hd__dfsbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfsbp_2 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfsbp_2() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfsbp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top") @cell -def sky130_fd_sc_hd__dfstp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfstp_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfstp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfstp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5") @cell -def sky130_fd_sc_hd__dfstp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfstp_2 fixed cell. +def sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfstp_2() + c = sky130.components.sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfstp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__dfstp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dfstp_4 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfstp_4() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfstp_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_l1m1m2_noshield/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell") @cell -def sky130_fd_sc_hd__dfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxbp_1 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxbp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfxbp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_l1m1m2_noshield/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield") @cell -def sky130_fd_sc_hd__dfxbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxbp_2 fixed cell. +def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxbp_2() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfxbp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds", cellname="sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin") @cell -def sky130_fd_sc_hd__dfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxtp_1 fixed cell. +def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxtp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfxtp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__dfxtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxtp_2 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxtp_2() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfxtp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4") @cell -def sky130_fd_sc_hd__dfxtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxtp_4 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxtp_4() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__dfxtp_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top") @cell -def sky130_fd_sc_hd__diode_2() -> gf.Component: - """Returns sky130_fd_sc_hd__diode_2 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__diode_2() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__diode_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top") @cell -def sky130_fd_sc_hd__dlclkp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlclkp_1 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlclkp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlclkp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4") @cell -def sky130_fd_sc_hd__dlclkp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlclkp_2 fixed cell. +def sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlclkp_2() + c = sky130.components.sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlclkp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p7x06p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds", cellname="sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap") @cell -def sky130_fd_sc_hd__dlclkp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dlclkp_4 fixed cell. +def sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlclkp_4() + c = sky130.components.sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlclkp_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p7x21p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds", cellname="sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap") @cell -def sky130_fd_sc_hd__dlrbn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrbn_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrbn_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrbn_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8") @cell -def sky130_fd_sc_hd__dlrbn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrbn_2 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrbn_2() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrbn_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7") @cell -def sky130_fd_sc_hd__dlrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrbp_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrbp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrbp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop") @cell -def sky130_fd_sc_hd__dlrbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrbp_2 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrbp_2() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrbp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top") @cell -def sky130_fd_sc_hd__dlrtn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtn_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtn_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrtn_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x") @cell -def sky130_fd_sc_hd__dlrtn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtn_2 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtn_2() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrtn_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5") @cell -def sky130_fd_sc_hd__dlrtn_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtn_4 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtn_4() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrtn_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9") @cell -def sky130_fd_sc_hd__dlrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtp_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrtp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6") @cell -def sky130_fd_sc_hd__dlrtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtp_2 fixed cell. +def sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtp_2() + c = sky130.components.sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrtp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__dlrtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtp_4 fixed cell. +def sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtp_4() + c = sky130.components.sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlrtp_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_05p9x05p9_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds", cellname="sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap") @cell -def sky130_fd_sc_hd__dlxbn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxbn_1 fixed cell. +def sky130_fd_pr__rf_nfet_20v0_noptap_iso() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_noptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxbn_1() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_noptap_iso() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlxbn_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_noptap_iso/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds", cellname="sky130_fd_pr__rf_nfet_20v0_noptap_iso") @cell -def sky130_fd_sc_hd__dlxbn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxbn_2 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W1p00L1p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W1p00L1p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxbn_2() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L1p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlxbn_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L1p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W1p00L1p00") @cell -def sky130_fd_sc_hd__dlxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxbp_1 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W2p00L2p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W2p00L2p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxbp_1() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L2p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlxbp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W2p00L2p00") @cell -def sky130_fd_sc_hd__dlxtn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxtn_1 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W1p00L8p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W1p00L8p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxtn_1() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L8p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlxtn_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W1p00L8p00") @cell -def sky130_fd_sc_hd__dlxtn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxtn_2 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W1p00L4p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W1p00L4p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxtn_2() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L4p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlxtn_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W1p00L4p00") @cell -def sky130_fd_sc_hd__dlxtn_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxtn_4 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W2p00L8p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W2p00L8p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxtn_4() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L8p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlxtn_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W2p00L8p00") @cell -def sky130_fd_sc_hd__dlxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxtp_1 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W2p00L4p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W2p00L4p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxtp_1() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L4p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlxtp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W2p00L4p00") @cell -def sky130_fd_sc_hd__dlygate4sd1_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlygate4sd1_1 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W1p00L2p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W1p00L2p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlygate4sd1_1() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L2p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlygate4sd1_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L2p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W1p00L2p00") @cell -def sky130_fd_sc_hd__dlygate4sd2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlygate4sd2_1 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W5p00L5p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W5p00L5p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlygate4sd2_1() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W5p00L5p00() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlygate4sd2_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W5p00L5p00") @cell -def sky130_fd_sc_hd__dlygate4sd3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlygate4sd3_1 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlygate4sd3_1() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlygate4sd3_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2_noshield/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield") @cell -def sky130_fd_sc_hd__dlymetal6s2s_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlymetal6s2s_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlymetal6s2s_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlymetal6s2s_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds", cellname="sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop") @cell -def sky130_fd_sc_hd__dlymetal6s4s_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlymetal6s4s_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlymetal6s4s_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlymetal6s4s_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds", cellname="sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv") @cell -def sky130_fd_sc_hd__dlymetal6s6s_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlymetal6s6s_1 fixed cell. +def sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlymetal6s6s_1() + c = sky130.components.sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__dlymetal6s6s_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__ebufn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__ebufn_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ebufn_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__ebufn_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m4_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield") @cell -def sky130_fd_sc_hd__ebufn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__ebufn_2 fixed cell. +def sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ebufn_2() + c = sky130.components.sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__ebufn_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__ebufn_4() -> gf.Component: - """Returns sky130_fd_sc_hd__ebufn_4 fixed cell. +def sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ebufn_4() + c = sky130.components.sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() c.plot() """ - return import_gds("sky130_fd_sc_hd__ebufn_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds", cellname="sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3") @cell -def sky130_fd_sc_hd__ebufn_8() -> gf.Component: - """Returns sky130_fd_sc_hd__ebufn_8 fixed cell. +def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ebufn_8() + c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() c.plot() """ - return import_gds("sky130_fd_sc_hd__ebufn_8.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds", cellname="sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4") @cell -def sky130_fd_sc_hd__edfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__edfxbp_1 fixed cell. +def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__edfxbp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__edfxbp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds", cellname="sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top") @cell -def sky130_fd_sc_hd__edfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__edfxtp_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__edfxtp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__edfxtp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__einvn_0() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_0 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_0() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() c.plot() """ - return import_gds("sky130_fd_sc_hd__einvn_0.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2_shieldpom3/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3") @cell -def sky130_fd_sc_hd__einvn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_1 fixed cell. +def sky130_fd_pr__rf_aura_drc_flag_check() -> gf.Component: + """Returns sky130_fd_pr__rf_aura_drc_flag_check fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_1() + c = sky130.components.sky130_fd_pr__rf_aura_drc_flag_check() c.plot() """ - return import_gds("sky130_fd_sc_hd__einvn_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_aura_drc_flag_check/sky130_fd_pr__rf_aura_drc_flag_check.gds", cellname="sky130_fd_pr__rf_aura_drc_flag_check") @cell -def sky130_fd_sc_hd__einvn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_2 fixed cell. +def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_2() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() c.plot() """ - return import_gds("sky130_fd_sc_hd__einvn_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds", cellname="sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test") @cell -def sky130_fd_sc_hd__einvn_4() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_4 fixed cell. +def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_4() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__einvn_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield") @cell -def sky130_fd_sc_hd__einvn_8() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_8 fixed cell. +def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_8() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() c.plot() """ - return import_gds("sky130_fd_sc_hd__einvn_8.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds", cellname="sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin") @cell -def sky130_fd_sc_hd__einvp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__einvp_1 fixed cell. +def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvp_1() + c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__einvp_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_m1m2m3_shieldl1m4/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds", cellname="sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top") @cell -def sky130_fd_sc_hd__einvp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__einvp_2 fixed cell. +def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvp_2() + c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() c.plot() """ - return import_gds("sky130_fd_sc_hd__einvp_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_m1m2m3_shieldl1m4/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds", cellname="sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4") @cell -def sky130_fd_sc_hd__einvp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__einvp_4 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvp_4() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__einvp_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_mvt/sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15") @cell -def sky130_fd_sc_hd__einvp_8() -> gf.Component: - """Returns sky130_fd_sc_hd__einvp_8 fixed cell. +def sky130_fd_pr__rf_nfet_20v0_nvt_aup() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_nvt_aup fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvp_8() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_aup() c.plot() """ - return import_gds("sky130_fd_sc_hd__einvp_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_aup/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds", cellname="sky130_fd_pr__rf_nfet_20v0_nvt_aup") @cell -def sky130_fd_sc_hd__fa_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fa_1 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fa_1() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() c.plot() """ - return import_gds("sky130_fd_sc_hd__fa_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2_shieldl1/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1") @cell -def sky130_fd_sc_hd__fa_2() -> gf.Component: - """Returns sky130_fd_sc_hd__fa_2 fixed cell. +def sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fa_2() + c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() c.plot() """ - return import_gds("sky130_fd_sc_hd__fa_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p3x11p3_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds", cellname="sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap") @cell -def sky130_fd_sc_hd__fa_4() -> gf.Component: - """Returns sky130_fd_sc_hd__fa_4 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fa_4() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() c.plot() """ - return import_gds("sky130_fd_sc_hd__fa_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3") @cell -def sky130_fd_sc_hd__fah_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fah_1 fixed cell. +def sky130_fd_pr__rf_aura_blocking() -> gf.Component: + """Returns sky130_fd_pr__rf_aura_blocking fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fah_1() + c = sky130.components.sky130_fd_pr__rf_aura_blocking() c.plot() """ - return import_gds("sky130_fd_sc_hd__fah_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_aura_blocking/sky130_fd_pr__rf_aura_blocking.gds", cellname="sky130_fd_pr__rf_aura_blocking") @cell -def sky130_fd_sc_hd__fahcin_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fahcin_1 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fahcin_1() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() c.plot() """ - return import_gds("sky130_fd_sc_hd__fahcin_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3") @cell -def sky130_fd_sc_hd__fahcon_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fahcon_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fahcon_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() c.plot() """ - return import_gds("sky130_fd_sc_hd__fahcon_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3_shieldl1/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1") @cell -def sky130_fd_sc_hd__fill_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fill_1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fill_1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() c.plot() """ - return import_gds("sky130_fd_sc_hd__fill_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldm4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4") @cell -def sky130_fd_sc_hd__fill_2() -> gf.Component: - """Returns sky130_fd_sc_hd__fill_2 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fill_2() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() c.plot() """ - return import_gds("sky130_fd_sc_hd__fill_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldm4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top") @cell -def sky130_fd_sc_hd__fill_4() -> gf.Component: - """Returns sky130_fd_sc_hd__fill_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fill_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__fill_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25") @cell -def sky130_fd_sc_hd__fill_8() -> gf.Component: - """Returns sky130_fd_sc_hd__fill_8 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fill_8() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__fill_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15") @cell -def sky130_fd_sc_hd__ha_1() -> gf.Component: - """Returns sky130_fd_sc_hd__ha_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ha_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__ha_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25") @cell -def sky130_fd_sc_hd__ha_2() -> gf.Component: - """Returns sky130_fd_sc_hd__ha_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ha_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__ha_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15") @cell -def sky130_fd_sc_hd__ha_4() -> gf.Component: - """Returns sky130_fd_sc_hd__ha_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ha_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__ha_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15") @cell -def sky130_fd_sc_hd__inv_1() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__inv_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15") @cell -def sky130_fd_sc_hd__inv_12() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_12 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_12() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__inv_12.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18") @cell -def sky130_fd_sc_hd__inv_16() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_16 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_16() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__inv_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25") @cell -def sky130_fd_sc_hd__inv_2() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__inv_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15") @cell -def sky130_fd_sc_hd__inv_4() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__inv_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25") @cell -def sky130_fd_sc_hd__inv_6() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_6 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_6() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__inv_6.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18") @cell -def sky130_fd_sc_hd__inv_8() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_8 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_8() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__inv_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15") @cell -def sky130_fd_sc_hd__lpflow_bleeder_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_bleeder_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_bleeder_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_bleeder_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15") @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkbufkapwr_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15") @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_16() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_16 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_16() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkbufkapwr_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25") @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkbufkapwr_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25") @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkbufkapwr_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15") @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_8() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_8 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_8() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkbufkapwr_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15") @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkinvkapwr_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18") @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_16() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_16 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_16() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkinvkapwr_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15") @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkinvkapwr_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15") @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkinvkapwr_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25") @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_8() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_8 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_8() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_clkinvkapwr_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18") @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_12() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_12 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_12() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_decapkapwr_12.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15") @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_3() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_3 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_3() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_decapkapwr_3.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15") @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_decapkapwr_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25") @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_6() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_6 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_6() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_decapkapwr_6.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15") @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_8() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_8 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_8() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_decapkapwr_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25") @cell -def sky130_fd_sc_hd__lpflow_inputiso0n_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputiso0n_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0n_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_inputiso0n_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15") @cell -def sky130_fd_sc_hd__lpflow_inputiso0p_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputiso0p_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0p_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_inputiso0p_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18") @cell -def sky130_fd_sc_hd__lpflow_inputiso1n_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputiso1n_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1n_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_inputiso1n_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25") @cell -def sky130_fd_sc_hd__lpflow_inputiso1p_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputiso1p_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1p_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_inputiso1p_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18") @cell -def sky130_fd_sc_hd__lpflow_inputisolatch_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputisolatch_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputisolatch_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_inputisolatch_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15") @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_isobufsrc_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15") @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_16() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_16 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_16() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_isobufsrc_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25") @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_isobufsrc_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25") @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_isobufsrc_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15") @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_8() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_8 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_8() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_isobufsrc_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18") @cell -def sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrckapwr_16 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_isobufsrckapwr_16.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18") @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25") @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15") @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25") @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18") @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15") @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18") @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15") @cell -def sky130_fd_sc_hd__macro_sparecell() -> gf.Component: - """Returns sky130_fd_sc_hd__macro_sparecell fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__macro_sparecell() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__macro_sparecell.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15") @cell -def sky130_fd_sc_hd__maj3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__maj3_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__maj3_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__maj3_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18") @cell -def sky130_fd_sc_hd__maj3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__maj3_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__maj3_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__maj3_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15") @cell -def sky130_fd_sc_hd__maj3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__maj3_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__maj3_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__maj3_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18") @cell -def sky130_fd_sc_hd__mux2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__mux2_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18") @cell -def sky130_fd_sc_hd__mux2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__mux2_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18") @cell -def sky130_fd_sc_hd__mux2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__mux2_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25") @cell -def sky130_fd_sc_hd__mux2_8() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2_8 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2_8() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__mux2_8.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15") @cell -def sky130_fd_sc_hd__mux2i_1() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2i_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2i_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__mux2i_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15") @cell -def sky130_fd_sc_hd__mux2i_2() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2i_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2i_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__mux2i_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25") @cell -def sky130_fd_sc_hd__mux2i_4() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2i_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2i_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__mux2i_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18") @cell -def sky130_fd_sc_hd__mux4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__mux4_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux4_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__mux4_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25") @cell -def sky130_fd_sc_hd__mux4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__mux4_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux4_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__mux4_2.gds") - - -@cell -def sky130_fd_sc_hd__mux4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__mux4_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__mux4_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__mux4_4.gds") - - -@cell -def sky130_fd_sc_hd__nand2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand2_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand2_1.gds") - - -@cell -def sky130_fd_sc_hd__nand2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand2_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand2_2.gds") - - -@cell -def sky130_fd_sc_hd__nand2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand2_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand2_4.gds") - - -@cell -def sky130_fd_sc_hd__nand2_8() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2_8 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand2_8() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand2_8.gds") - - -@cell -def sky130_fd_sc_hd__nand2b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2b_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand2b_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand2b_1.gds") - - -@cell -def sky130_fd_sc_hd__nand2b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2b_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand2b_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand2b_2.gds") - - -@cell -def sky130_fd_sc_hd__nand2b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2b_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand2b_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand2b_4.gds") - - -@cell -def sky130_fd_sc_hd__nand3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand3_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand3_1.gds") - - -@cell -def sky130_fd_sc_hd__nand3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand3_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand3_2.gds") - - -@cell -def sky130_fd_sc_hd__nand3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand3_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand3_4.gds") - - -@cell -def sky130_fd_sc_hd__nand3b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3b_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand3b_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand3b_1.gds") - - -@cell -def sky130_fd_sc_hd__nand3b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3b_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand3b_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand3b_2.gds") - - -@cell -def sky130_fd_sc_hd__nand3b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3b_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand3b_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand3b_4.gds") - - -@cell -def sky130_fd_sc_hd__nand4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand4_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand4_1.gds") - - -@cell -def sky130_fd_sc_hd__nand4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand4_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand4_2.gds") - - -@cell -def sky130_fd_sc_hd__nand4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand4_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand4_4.gds") - - -@cell -def sky130_fd_sc_hd__nand4b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4b_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand4b_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand4b_1.gds") - - -@cell -def sky130_fd_sc_hd__nand4b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4b_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand4b_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand4b_2.gds") - - -@cell -def sky130_fd_sc_hd__nand4b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4b_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand4b_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand4b_4.gds") - - -@cell -def sky130_fd_sc_hd__nand4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4bb_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand4bb_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand4bb_1.gds") - - -@cell -def sky130_fd_sc_hd__nand4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4bb_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand4bb_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand4bb_2.gds") - - -@cell -def sky130_fd_sc_hd__nand4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4bb_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nand4bb_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nand4bb_4.gds") - - -@cell -def sky130_fd_sc_hd__nor2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor2_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor2_1.gds") - - -@cell -def sky130_fd_sc_hd__nor2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor2_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor2_2.gds") - - -@cell -def sky130_fd_sc_hd__nor2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor2_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor2_4.gds") - - -@cell -def sky130_fd_sc_hd__nor2_8() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2_8 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor2_8() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor2_8.gds") - - -@cell -def sky130_fd_sc_hd__nor2b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2b_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor2b_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor2b_1.gds") - - -@cell -def sky130_fd_sc_hd__nor2b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2b_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor2b_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor2b_2.gds") - - -@cell -def sky130_fd_sc_hd__nor2b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2b_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor2b_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor2b_4.gds") - - -@cell -def sky130_fd_sc_hd__nor3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor3_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor3_1.gds") - - -@cell -def sky130_fd_sc_hd__nor3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor3_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor3_2.gds") - - -@cell -def sky130_fd_sc_hd__nor3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor3_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor3_4.gds") - - -@cell -def sky130_fd_sc_hd__nor3b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3b_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor3b_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor3b_1.gds") - - -@cell -def sky130_fd_sc_hd__nor3b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3b_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor3b_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor3b_2.gds") - - -@cell -def sky130_fd_sc_hd__nor3b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3b_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor3b_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor3b_4.gds") - - -@cell -def sky130_fd_sc_hd__nor4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor4_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor4_1.gds") - - -@cell -def sky130_fd_sc_hd__nor4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor4_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor4_2.gds") - - -@cell -def sky130_fd_sc_hd__nor4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor4_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor4_4.gds") - - -@cell -def sky130_fd_sc_hd__nor4b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4b_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor4b_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor4b_1.gds") - - -@cell -def sky130_fd_sc_hd__nor4b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4b_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor4b_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor4b_2.gds") - - -@cell -def sky130_fd_sc_hd__nor4b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4b_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor4b_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor4b_4.gds") - - -@cell -def sky130_fd_sc_hd__nor4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4bb_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor4bb_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor4bb_1.gds") - - -@cell -def sky130_fd_sc_hd__nor4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4bb_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor4bb_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor4bb_2.gds") - - -@cell -def sky130_fd_sc_hd__nor4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4bb_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__nor4bb_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__nor4bb_4.gds") - - -@cell -def sky130_fd_sc_hd__o2111a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2111a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2111a_1.gds") - - -@cell -def sky130_fd_sc_hd__o2111a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2111a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2111a_2.gds") - - -@cell -def sky130_fd_sc_hd__o2111a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2111a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2111a_4.gds") - - -@cell -def sky130_fd_sc_hd__o2111ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2111ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2111ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o2111ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2111ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2111ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o2111ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2111ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2111ai_4.gds") - - -@cell -def sky130_fd_sc_hd__o211a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o211a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o211a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o211a_1.gds") - - -@cell -def sky130_fd_sc_hd__o211a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o211a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o211a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o211a_2.gds") - - -@cell -def sky130_fd_sc_hd__o211a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o211a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o211a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o211a_4.gds") - - -@cell -def sky130_fd_sc_hd__o211ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o211ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o211ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o211ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o211ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o211ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o211ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o211ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o211ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o211ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o211ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o211ai_4.gds") - - -@cell -def sky130_fd_sc_hd__o21a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o21a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21a_1.gds") - - -@cell -def sky130_fd_sc_hd__o21a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o21a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21a_2.gds") - - -@cell -def sky130_fd_sc_hd__o21a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o21a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21a_4.gds") - - -@cell -def sky130_fd_sc_hd__o21ai_0() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ai_0 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21ai_0() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21ai_0.gds") - - -@cell -def sky130_fd_sc_hd__o21ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o21ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o21ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21ai_4.gds") - - -@cell -def sky130_fd_sc_hd__o21ba_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ba_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21ba_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21ba_1.gds") - - -@cell -def sky130_fd_sc_hd__o21ba_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ba_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21ba_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21ba_2.gds") - - -@cell -def sky130_fd_sc_hd__o21ba_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ba_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21ba_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21ba_4.gds") - - -@cell -def sky130_fd_sc_hd__o21bai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o21bai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21bai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21bai_1.gds") - - -@cell -def sky130_fd_sc_hd__o21bai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o21bai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21bai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21bai_2.gds") - - -@cell -def sky130_fd_sc_hd__o21bai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o21bai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o21bai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o21bai_4.gds") - - -@cell -def sky130_fd_sc_hd__o221a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o221a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o221a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o221a_1.gds") - - -@cell -def sky130_fd_sc_hd__o221a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o221a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o221a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o221a_2.gds") - - -@cell -def sky130_fd_sc_hd__o221a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o221a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o221a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o221a_4.gds") - - -@cell -def sky130_fd_sc_hd__o221ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o221ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o221ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o221ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o221ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o221ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o221ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o221ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o221ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o221ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o221ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o221ai_4.gds") - - -@cell -def sky130_fd_sc_hd__o22a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o22a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o22a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o22a_1.gds") - - -@cell -def sky130_fd_sc_hd__o22a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o22a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o22a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o22a_2.gds") - - -@cell -def sky130_fd_sc_hd__o22a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o22a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o22a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o22a_4.gds") - - -@cell -def sky130_fd_sc_hd__o22ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o22ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o22ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o22ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o22ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o22ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o22ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o22ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o22ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o22ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o22ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o22ai_4.gds") - - -@cell -def sky130_fd_sc_hd__o2bb2a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2bb2a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2bb2a_1.gds") - - -@cell -def sky130_fd_sc_hd__o2bb2a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2bb2a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2bb2a_2.gds") - - -@cell -def sky130_fd_sc_hd__o2bb2a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2bb2a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2bb2a_4.gds") - - -@cell -def sky130_fd_sc_hd__o2bb2ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2bb2ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2bb2ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o2bb2ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2bb2ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2bb2ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o2bb2ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o2bb2ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o2bb2ai_4.gds") - - -@cell -def sky130_fd_sc_hd__o311a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o311a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o311a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o311a_1.gds") - - -@cell -def sky130_fd_sc_hd__o311a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o311a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o311a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o311a_2.gds") - - -@cell -def sky130_fd_sc_hd__o311a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o311a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o311a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o311a_4.gds") - - -@cell -def sky130_fd_sc_hd__o311ai_0() -> gf.Component: - """Returns sky130_fd_sc_hd__o311ai_0 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o311ai_0() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o311ai_0.gds") - - -@cell -def sky130_fd_sc_hd__o311ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o311ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o311ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o311ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o311ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o311ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o311ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o311ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o311ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o311ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o311ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o311ai_4.gds") - - -@cell -def sky130_fd_sc_hd__o31a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o31a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o31a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o31a_1.gds") - - -@cell -def sky130_fd_sc_hd__o31a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o31a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o31a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o31a_2.gds") - - -@cell -def sky130_fd_sc_hd__o31a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o31a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o31a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o31a_4.gds") - - -@cell -def sky130_fd_sc_hd__o31ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o31ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o31ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o31ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o31ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o31ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o31ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o31ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o31ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o31ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o31ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o31ai_4.gds") - - -@cell -def sky130_fd_sc_hd__o32a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o32a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o32a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o32a_1.gds") - - -@cell -def sky130_fd_sc_hd__o32a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o32a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o32a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o32a_2.gds") - - -@cell -def sky130_fd_sc_hd__o32a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o32a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o32a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o32a_4.gds") - - -@cell -def sky130_fd_sc_hd__o32ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o32ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o32ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o32ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o32ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o32ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o32ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o32ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o32ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o32ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o32ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o32ai_4.gds") - - -@cell -def sky130_fd_sc_hd__o41a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o41a_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o41a_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o41a_1.gds") - - -@cell -def sky130_fd_sc_hd__o41a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o41a_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o41a_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o41a_2.gds") - - -@cell -def sky130_fd_sc_hd__o41a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o41a_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o41a_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o41a_4.gds") - - -@cell -def sky130_fd_sc_hd__o41ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o41ai_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o41ai_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o41ai_1.gds") - - -@cell -def sky130_fd_sc_hd__o41ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o41ai_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o41ai_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o41ai_2.gds") - - -@cell -def sky130_fd_sc_hd__o41ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o41ai_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__o41ai_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__o41ai_4.gds") - - -@cell -def sky130_fd_sc_hd__or2_0() -> gf.Component: - """Returns sky130_fd_sc_hd__or2_0 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or2_0() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or2_0.gds") - - -@cell -def sky130_fd_sc_hd__or2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or2_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or2_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or2_1.gds") - - -@cell -def sky130_fd_sc_hd__or2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or2_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or2_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or2_2.gds") - - -@cell -def sky130_fd_sc_hd__or2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or2_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or2_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or2_4.gds") - - -@cell -def sky130_fd_sc_hd__or2b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or2b_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or2b_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or2b_1.gds") - - -@cell -def sky130_fd_sc_hd__or2b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or2b_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or2b_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or2b_2.gds") - - -@cell -def sky130_fd_sc_hd__or2b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or2b_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or2b_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or2b_4.gds") - - -@cell -def sky130_fd_sc_hd__or3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or3_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or3_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or3_1.gds") - - -@cell -def sky130_fd_sc_hd__or3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or3_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or3_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or3_2.gds") - - -@cell -def sky130_fd_sc_hd__or3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or3_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or3_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or3_4.gds") - - -@cell -def sky130_fd_sc_hd__or3b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or3b_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or3b_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or3b_1.gds") - - -@cell -def sky130_fd_sc_hd__or3b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or3b_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or3b_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or3b_2.gds") - - -@cell -def sky130_fd_sc_hd__or3b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or3b_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or3b_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or3b_4.gds") - - -@cell -def sky130_fd_sc_hd__or4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or4_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or4_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or4_1.gds") - - -@cell -def sky130_fd_sc_hd__or4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or4_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or4_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or4_2.gds") - - -@cell -def sky130_fd_sc_hd__or4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or4_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or4_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or4_4.gds") - - -@cell -def sky130_fd_sc_hd__or4b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or4b_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or4b_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or4b_1.gds") - - -@cell -def sky130_fd_sc_hd__or4b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or4b_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or4b_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or4b_2.gds") - - -@cell -def sky130_fd_sc_hd__or4b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or4b_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or4b_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or4b_4.gds") - - -@cell -def sky130_fd_sc_hd__or4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or4bb_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or4bb_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or4bb_1.gds") - - -@cell -def sky130_fd_sc_hd__or4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or4bb_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or4bb_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or4bb_2.gds") - - -@cell -def sky130_fd_sc_hd__or4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or4bb_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__or4bb_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__or4bb_4.gds") - - -@cell -def sky130_fd_sc_hd__probe_p_8() -> gf.Component: - """Returns sky130_fd_sc_hd__probe_p_8 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__probe_p_8() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__probe_p_8.gds") - - -@cell -def sky130_fd_sc_hd__probec_p_8() -> gf.Component: - """Returns sky130_fd_sc_hd__probec_p_8 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__probec_p_8() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__probec_p_8.gds") - - -@cell -def sky130_fd_sc_hd__sdfbbn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfbbn_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfbbn_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfbbn_1.gds") - - -@cell -def sky130_fd_sc_hd__sdfbbn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfbbn_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfbbn_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfbbn_2.gds") - - -@cell -def sky130_fd_sc_hd__sdfbbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfbbp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfbbp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfbbp_1.gds") - - -@cell -def sky130_fd_sc_hd__sdfrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrbp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfrbp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfrbp_1.gds") - - -@cell -def sky130_fd_sc_hd__sdfrbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrbp_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfrbp_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfrbp_2.gds") - - -@cell -def sky130_fd_sc_hd__sdfrtn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrtn_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfrtn_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfrtn_1.gds") - - -@cell -def sky130_fd_sc_hd__sdfrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrtp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfrtp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfrtp_1.gds") - - -@cell -def sky130_fd_sc_hd__sdfrtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrtp_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfrtp_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfrtp_2.gds") - - -@cell -def sky130_fd_sc_hd__sdfrtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrtp_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfrtp_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfrtp_4.gds") - - -@cell -def sky130_fd_sc_hd__sdfsbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfsbp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfsbp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfsbp_1.gds") - - -@cell -def sky130_fd_sc_hd__sdfsbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfsbp_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfsbp_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfsbp_2.gds") - - -@cell -def sky130_fd_sc_hd__sdfstp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfstp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfstp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfstp_1.gds") - - -@cell -def sky130_fd_sc_hd__sdfstp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfstp_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfstp_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfstp_2.gds") - - -@cell -def sky130_fd_sc_hd__sdfstp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfstp_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfstp_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfstp_4.gds") - - -@cell -def sky130_fd_sc_hd__sdfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxbp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfxbp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfxbp_1.gds") - - -@cell -def sky130_fd_sc_hd__sdfxbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxbp_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfxbp_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfxbp_2.gds") - - -@cell -def sky130_fd_sc_hd__sdfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxtp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfxtp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfxtp_1.gds") - - -@cell -def sky130_fd_sc_hd__sdfxtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxtp_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfxtp_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfxtp_2.gds") - - -@cell -def sky130_fd_sc_hd__sdfxtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxtp_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdfxtp_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdfxtp_4.gds") - - -@cell -def sky130_fd_sc_hd__sdlclkp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdlclkp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdlclkp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdlclkp_1.gds") - - -@cell -def sky130_fd_sc_hd__sdlclkp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdlclkp_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdlclkp_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdlclkp_2.gds") - - -@cell -def sky130_fd_sc_hd__sdlclkp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sdlclkp_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sdlclkp_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sdlclkp_4.gds") - - -@cell -def sky130_fd_sc_hd__sedfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxbp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sedfxbp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sedfxbp_1.gds") - - -@cell -def sky130_fd_sc_hd__sedfxbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxbp_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sedfxbp_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sedfxbp_2.gds") - - -@cell -def sky130_fd_sc_hd__sedfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxtp_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sedfxtp_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sedfxtp_1.gds") - - -@cell -def sky130_fd_sc_hd__sedfxtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxtp_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sedfxtp_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sedfxtp_2.gds") - - -@cell -def sky130_fd_sc_hd__sedfxtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxtp_4 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__sedfxtp_4() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__sedfxtp_4.gds") - - -@cell -def sky130_fd_sc_hd__tap_1() -> gf.Component: - """Returns sky130_fd_sc_hd__tap_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__tap_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__tap_1.gds") - - -@cell -def sky130_fd_sc_hd__tap_2() -> gf.Component: - """Returns sky130_fd_sc_hd__tap_2 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__tap_2() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__tap_2.gds") - - -@cell -def sky130_fd_sc_hd__tapvgnd2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__tapvgnd2_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__tapvgnd2_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__tapvgnd2_1.gds") - - -@cell -def sky130_fd_sc_hd__tapvgnd_1() -> gf.Component: - """Returns sky130_fd_sc_hd__tapvgnd_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__tapvgnd_1() - c.plot() - """ - return import_gds("sky130_fd_sc_hd__tapvgnd_1.gds") - - -@cell -def sky130_fd_sc_hd__tapvpwrvgnd_1() -> gf.Component: - """Returns sky130_fd_sc_hd__tapvpwrvgnd_1 fixed cell. - - .. plot:: - :include-source: - - import sky130 - - c = sky130.components.sky130_fd_sc_hd__tapvpwrvgnd_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__tapvpwrvgnd_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18") @cell -def sky130_fd_sc_hd__xnor2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor2_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor2_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__xnor2_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15") @cell -def sky130_fd_sc_hd__xnor2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor2_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor2_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__xnor2_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18") @cell -def sky130_fd_sc_hd__xnor2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor2_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor2_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__xnor2_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15") @cell -def sky130_fd_sc_hd__xnor3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor3_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor3_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__xnor3_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15") @cell -def sky130_fd_sc_hd__xnor3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor3_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor3_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() c.plot() """ - return import_gds("sky130_fd_sc_hd__xnor3_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18") @cell -def sky130_fd_sc_hd__xnor3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor3_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor3_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__xnor3_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15") @cell -def sky130_fd_sc_hd__xor2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__xor2_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor2_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() c.plot() """ - return import_gds("sky130_fd_sc_hd__xor2_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25") @cell -def sky130_fd_sc_hd__xor2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__xor2_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor2_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__xor2_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15") @cell -def sky130_fd_sc_hd__xor2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__xor2_4 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor2_4() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__xor2_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15") @cell -def sky130_fd_sc_hd__xor3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__xor3_1 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor3_1() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__xor3_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15") @cell -def sky130_fd_sc_hd__xor3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__xor3_2 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor3_2() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() c.plot() """ - return import_gds("sky130_fd_sc_hd__xor3_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15") @cell -def sky130_fd_sc_hd__xor3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__xor3_4 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor3_4() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hd__xor3_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield") @cell -def sky130_fd_sc_hs__a2111o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a2111o_1 fixed cell. +def sky130_fd_pr__rf_npn_11v0_W1p00L1p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_11v0_W1p00L1p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2111o_1() + c = sky130.components.sky130_fd_pr__rf_npn_11v0_W1p00L1p00() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2111o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_npn_11v0/sky130_fd_pr__rf_npn_11v0_W1p00L1p00.gds", cellname="sky130_fd_pr__rf_npn_11v0_W1p00L1p00") @cell -def sky130_fd_sc_hs__a2111o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a2111o_2 fixed cell. +def sky130_fd_pr__rf_nfet_20v0_zvt_withptap() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_zvt_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2111o_2() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_zvt_withptap() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2111o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_zvt_withptap/sky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds", cellname="sky130_fd_pr__rf_nfet_20v0_zvt_withptap") @cell -def sky130_fd_sc_hs__a2111o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a2111o_4 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2111o_4() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2111o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2_shieldl1/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1") @cell -def sky130_fd_sc_hs__a2111oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a2111oi_1 fixed cell. +def sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() -> gf.Component: + """Returns sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2111oi_1() + c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2111oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/esd_rf_nfet_20v0_hbm/sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00.gds", cellname="sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00") @cell -def sky130_fd_sc_hs__a2111oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a2111oi_2 fixed cell. +def sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() -> gf.Component: + """Returns sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2111oi_2() + c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2111oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/esd_rf_nfet_20v0_hbm/sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00.gds", cellname="sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00") @cell -def sky130_fd_sc_hs__a2111oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a2111oi_4 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2111oi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2111oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50") @cell -def sky130_fd_sc_hs__a211o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a211o_1 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a211o_1() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a211o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50") @cell -def sky130_fd_sc_hs__a211o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a211o_2 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a211o_2() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a211o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50") @cell -def sky130_fd_sc_hs__a211o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a211o_4 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a211o_4() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a211o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50") @cell -def sky130_fd_sc_hs__a211oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a211oi_1 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a211oi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a211oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50") @cell -def sky130_fd_sc_hs__a211oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a211oi_2 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a211oi_2() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a211oi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50") @cell -def sky130_fd_sc_hs__a211oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a211oi_4 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a211oi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a211oi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50") @cell -def sky130_fd_sc_hs__a21bo_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a21bo_1 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21bo_1() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21bo_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50") @cell -def sky130_fd_sc_hs__a21bo_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a21bo_2 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21bo_2() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21bo_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50") @cell -def sky130_fd_sc_hs__a21bo_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a21bo_4 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21bo_4() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21bo_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50") @cell -def sky130_fd_sc_hs__a21boi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a21boi_1 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21boi_1() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21boi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50") @cell -def sky130_fd_sc_hs__a21boi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a21boi_2 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21boi_2() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21boi_2.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50") @cell -def sky130_fd_sc_hs__a21boi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a21boi_4 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21boi_4() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21boi_4.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50") @cell -def sky130_fd_sc_hs__a21o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a21o_1 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21o_1() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21o_1.gds") - + return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50") @cell -def sky130_fd_sc_hs__a21o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a21o_2 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21o_2() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21o_2.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield") @cell -def sky130_fd_sc_hs__a21o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a21o_4 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21o_4() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21o_4.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2m3_shieldl1/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1") @cell -def sky130_fd_sc_hs__a21oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a21oi_1 fixed cell. +def sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21oi_1() + c = sky130.components.sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21oi_1.gds") - + return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p4x04p6_m1m2_noshield/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield") @cell -def sky130_fd_sc_hs__a21oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a21oi_2 fixed cell. +def sky130_fd_sc_hd__clkinv_8() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21oi_2() + c = sky130.components.sky130_fd_sc_hd__clkinv_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21oi_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_8.gds", cellname="sky130_fd_sc_hd__clkinv_8") @cell -def sky130_fd_sc_hs__a21oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a21oi_4 fixed cell. +def sky130_fd_sc_hd__clkinv_4() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a21oi_4() + c = sky130.components.sky130_fd_sc_hd__clkinv_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a21oi_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_4.gds", cellname="sky130_fd_sc_hd__clkinv_4") @cell -def sky130_fd_sc_hs__a221o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a221o_1 fixed cell. +def sky130_fd_sc_hd__clkinv_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a221o_1() + c = sky130.components.sky130_fd_sc_hd__clkinv_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a221o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_1.gds", cellname="sky130_fd_sc_hd__clkinv_1") @cell -def sky130_fd_sc_hs__a221o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a221o_2 fixed cell. +def sky130_fd_sc_hd__clkinv_16() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a221o_2() + c = sky130.components.sky130_fd_sc_hd__clkinv_16() c.plot() """ - return import_gds("sky130_fd_sc_hs__a221o_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_16.gds", cellname="sky130_fd_sc_hd__clkinv_16") @cell -def sky130_fd_sc_hs__a221o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a221o_4 fixed cell. +def sky130_fd_sc_hd__clkinv_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a221o_4() + c = sky130.components.sky130_fd_sc_hd__clkinv_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a221o_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_2.gds", cellname="sky130_fd_sc_hd__clkinv_2") @cell -def sky130_fd_sc_hs__a221oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a221oi_1 fixed cell. +def sky130_fd_sc_hd__o311ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o311ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a221oi_1() + c = sky130.components.sky130_fd_sc_hd__o311ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a221oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_1.gds", cellname="sky130_fd_sc_hd__o311ai_1") @cell -def sky130_fd_sc_hs__a221oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a221oi_2 fixed cell. +def sky130_fd_sc_hd__o311ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o311ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a221oi_2() + c = sky130.components.sky130_fd_sc_hd__o311ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a221oi_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_2.gds", cellname="sky130_fd_sc_hd__o311ai_2") @cell -def sky130_fd_sc_hs__a221oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a221oi_4 fixed cell. +def sky130_fd_sc_hd__o311ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o311ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a221oi_4() + c = sky130.components.sky130_fd_sc_hd__o311ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a221oi_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_4.gds", cellname="sky130_fd_sc_hd__o311ai_4") @cell -def sky130_fd_sc_hs__a222o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a222o_1 fixed cell. +def sky130_fd_sc_hd__o311ai_0() -> gf.Component: + """Returns sky130_fd_sc_hd__o311ai_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a222o_1() + c = sky130.components.sky130_fd_sc_hd__o311ai_0() c.plot() """ - return import_gds("sky130_fd_sc_hs__a222o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_0.gds", cellname="sky130_fd_sc_hd__o311ai_0") @cell -def sky130_fd_sc_hs__a222o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a222o_2 fixed cell. +def sky130_fd_sc_hd__dlygate4sd1_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlygate4sd1_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a222o_2() + c = sky130.components.sky130_fd_sc_hd__dlygate4sd1_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a222o_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlygate4sd1/sky130_fd_sc_hd__dlygate4sd1_1.gds", cellname="sky130_fd_sc_hd__dlygate4sd1_1") @cell -def sky130_fd_sc_hs__a222oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a222oi_1 fixed cell. +def sky130_fd_sc_hd__einvn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a222oi_1() + c = sky130.components.sky130_fd_sc_hd__einvn_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a222oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_2.gds", cellname="sky130_fd_sc_hd__einvn_2") @cell -def sky130_fd_sc_hs__a222oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a222oi_2 fixed cell. +def sky130_fd_sc_hd__einvn_0() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a222oi_2() + c = sky130.components.sky130_fd_sc_hd__einvn_0() c.plot() """ - return import_gds("sky130_fd_sc_hs__a222oi_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_0.gds", cellname="sky130_fd_sc_hd__einvn_0") @cell -def sky130_fd_sc_hs__a22o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a22o_1 fixed cell. +def sky130_fd_sc_hd__einvn_8() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a22o_1() + c = sky130.components.sky130_fd_sc_hd__einvn_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__a22o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_8.gds", cellname="sky130_fd_sc_hd__einvn_8") @cell -def sky130_fd_sc_hs__a22o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a22o_2 fixed cell. +def sky130_fd_sc_hd__einvn_4() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a22o_2() + c = sky130.components.sky130_fd_sc_hd__einvn_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a22o_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_4.gds", cellname="sky130_fd_sc_hd__einvn_4") @cell -def sky130_fd_sc_hs__a22o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a22o_4 fixed cell. +def sky130_fd_sc_hd__einvn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a22o_4() + c = sky130.components.sky130_fd_sc_hd__einvn_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a22o_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_1.gds", cellname="sky130_fd_sc_hd__einvn_1") @cell -def sky130_fd_sc_hs__a22oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a22oi_1 fixed cell. +def sky130_fd_sc_hd__fahcon_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fahcon_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a22oi_1() + c = sky130.components.sky130_fd_sc_hd__fahcon_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a22oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fahcon/sky130_fd_sc_hd__fahcon_1.gds", cellname="sky130_fd_sc_hd__fahcon_1") @cell -def sky130_fd_sc_hs__a22oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a22oi_2 fixed cell. +def sky130_fd_sc_hd__dlygate4sd3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlygate4sd3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a22oi_2() + c = sky130.components.sky130_fd_sc_hd__dlygate4sd3_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a22oi_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlygate4sd3/sky130_fd_sc_hd__dlygate4sd3_1.gds", cellname="sky130_fd_sc_hd__dlygate4sd3_1") @cell -def sky130_fd_sc_hs__a22oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a22oi_4 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s15_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s15_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a22oi_4() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a22oi_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s15/sky130_fd_sc_hd__clkdlybuf4s15_2.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s15_2") @cell -def sky130_fd_sc_hs__a2bb2o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a2bb2o_1 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s15_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s15_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2bb2o_1() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2bb2o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s15/sky130_fd_sc_hd__clkdlybuf4s15_1.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s15_1") @cell -def sky130_fd_sc_hs__a2bb2o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a2bb2o_2 fixed cell. +def sky130_fd_sc_hd__a2111o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2bb2o_2() + c = sky130.components.sky130_fd_sc_hd__a2111o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2bb2o_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2111o/sky130_fd_sc_hd__a2111o_2.gds", cellname="sky130_fd_sc_hd__a2111o_2") @cell -def sky130_fd_sc_hs__a2bb2o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a2bb2o_4 fixed cell. +def sky130_fd_sc_hd__a2111o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2bb2o_4() + c = sky130.components.sky130_fd_sc_hd__a2111o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2bb2o_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2111o/sky130_fd_sc_hd__a2111o_1.gds", cellname="sky130_fd_sc_hd__a2111o_1") @cell -def sky130_fd_sc_hs__a2bb2oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a2bb2oi_1 fixed cell. +def sky130_fd_sc_hd__a2111o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2bb2oi_1() + c = sky130.components.sky130_fd_sc_hd__a2111o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2bb2oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2111o/sky130_fd_sc_hd__a2111o_4.gds", cellname="sky130_fd_sc_hd__a2111o_4") @cell -def sky130_fd_sc_hs__a2bb2oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a2bb2oi_2 fixed cell. +def sky130_fd_sc_hd__o2111ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2bb2oi_2() + c = sky130.components.sky130_fd_sc_hd__o2111ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2bb2oi_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2111ai/sky130_fd_sc_hd__o2111ai_1.gds", cellname="sky130_fd_sc_hd__o2111ai_1") @cell -def sky130_fd_sc_hs__a2bb2oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a2bb2oi_4 fixed cell. +def sky130_fd_sc_hd__o2111ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a2bb2oi_4() + c = sky130.components.sky130_fd_sc_hd__o2111ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a2bb2oi_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2111ai/sky130_fd_sc_hd__o2111ai_2.gds", cellname="sky130_fd_sc_hd__o2111ai_2") @cell -def sky130_fd_sc_hs__a311o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a311o_1 fixed cell. +def sky130_fd_sc_hd__o2111ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a311o_1() + c = sky130.components.sky130_fd_sc_hd__o2111ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a311o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2111ai/sky130_fd_sc_hd__o2111ai_4.gds", cellname="sky130_fd_sc_hd__o2111ai_4") @cell -def sky130_fd_sc_hs__a311o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a311o_2 fixed cell. +def sky130_fd_sc_hd__sdfxbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a311o_2() + c = sky130.components.sky130_fd_sc_hd__sdfxbp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a311o_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfxbp/sky130_fd_sc_hd__sdfxbp_2.gds", cellname="sky130_fd_sc_hd__sdfxbp_2") @cell -def sky130_fd_sc_hs__a311o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a311o_4 fixed cell. +def sky130_fd_sc_hd__sdfxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a311o_4() + c = sky130.components.sky130_fd_sc_hd__sdfxbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a311o_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfxbp/sky130_fd_sc_hd__sdfxbp_1.gds", cellname="sky130_fd_sc_hd__sdfxbp_1") @cell -def sky130_fd_sc_hs__a311oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a311oi_1 fixed cell. +def sky130_fd_sc_hd__sdfxtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a311oi_1() + c = sky130.components.sky130_fd_sc_hd__sdfxtp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a311oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfxtp/sky130_fd_sc_hd__sdfxtp_2.gds", cellname="sky130_fd_sc_hd__sdfxtp_2") @cell -def sky130_fd_sc_hs__a311oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a311oi_2 fixed cell. +def sky130_fd_sc_hd__sdfxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a311oi_2() + c = sky130.components.sky130_fd_sc_hd__sdfxtp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a311oi_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfxtp/sky130_fd_sc_hd__sdfxtp_1.gds", cellname="sky130_fd_sc_hd__sdfxtp_1") @cell -def sky130_fd_sc_hs__a311oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a311oi_4 fixed cell. +def sky130_fd_sc_hd__sdfxtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a311oi_4() + c = sky130.components.sky130_fd_sc_hd__sdfxtp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a311oi_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfxtp/sky130_fd_sc_hd__sdfxtp_4.gds", cellname="sky130_fd_sc_hd__sdfxtp_4") @cell -def sky130_fd_sc_hs__a31o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a31o_1 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s25_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s25_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a31o_1() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a31o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s25/sky130_fd_sc_hd__clkdlybuf4s25_1.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s25_1") @cell -def sky130_fd_sc_hs__a31o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a31o_2 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s25_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s25_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a31o_2() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a31o_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s25/sky130_fd_sc_hd__clkdlybuf4s25_2.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s25_2") @cell -def sky130_fd_sc_hs__a31o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a31o_4 fixed cell. +def sky130_fd_sc_hd__nand2_8() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a31o_4() + c = sky130.components.sky130_fd_sc_hd__nand2_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__a31o_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_8.gds", cellname="sky130_fd_sc_hd__nand2_8") @cell -def sky130_fd_sc_hs__a31oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a31oi_1 fixed cell. +def sky130_fd_sc_hd__nand2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a31oi_1() + c = sky130.components.sky130_fd_sc_hd__nand2_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a31oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_2.gds", cellname="sky130_fd_sc_hd__nand2_2") @cell -def sky130_fd_sc_hs__a31oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a31oi_2 fixed cell. +def sky130_fd_sc_hd__nand2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a31oi_2() + c = sky130.components.sky130_fd_sc_hd__nand2_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a31oi_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_4.gds", cellname="sky130_fd_sc_hd__nand2_4") @cell -def sky130_fd_sc_hs__a31oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a31oi_4 fixed cell. +def sky130_fd_sc_hd__nand2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a31oi_4() + c = sky130.components.sky130_fd_sc_hd__nand2_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a31oi_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_1.gds", cellname="sky130_fd_sc_hd__nand2_1") @cell -def sky130_fd_sc_hs__a32o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a32o_1 fixed cell. +def sky130_fd_sc_hd__conb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__conb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a32o_1() + c = sky130.components.sky130_fd_sc_hd__conb_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a32o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/conb/sky130_fd_sc_hd__conb_1.gds", cellname="sky130_fd_sc_hd__conb_1") @cell -def sky130_fd_sc_hs__a32o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a32o_2 fixed cell. +def sky130_fd_sc_hd__a311oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a311oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a32o_2() + c = sky130.components.sky130_fd_sc_hd__a311oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a32o_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a311oi/sky130_fd_sc_hd__a311oi_2.gds", cellname="sky130_fd_sc_hd__a311oi_2") @cell -def sky130_fd_sc_hs__a32o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a32o_4 fixed cell. +def sky130_fd_sc_hd__a311oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a311oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a32o_4() + c = sky130.components.sky130_fd_sc_hd__a311oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a32o_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a311oi/sky130_fd_sc_hd__a311oi_1.gds", cellname="sky130_fd_sc_hd__a311oi_1") @cell -def sky130_fd_sc_hs__a32oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a32oi_1 fixed cell. +def sky130_fd_sc_hd__a311oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a311oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a32oi_1() + c = sky130.components.sky130_fd_sc_hd__a311oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a32oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a311oi/sky130_fd_sc_hd__a311oi_4.gds", cellname="sky130_fd_sc_hd__a311oi_4") @cell -def sky130_fd_sc_hs__a32oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a32oi_2 fixed cell. +def sky130_fd_sc_hd__einvp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__einvp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a32oi_2() + c = sky130.components.sky130_fd_sc_hd__einvp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a32oi_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_2.gds", cellname="sky130_fd_sc_hd__einvp_2") @cell -def sky130_fd_sc_hs__a32oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a32oi_4 fixed cell. +def sky130_fd_sc_hd__einvp_8() -> gf.Component: + """Returns sky130_fd_sc_hd__einvp_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a32oi_4() + c = sky130.components.sky130_fd_sc_hd__einvp_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__a32oi_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_8.gds", cellname="sky130_fd_sc_hd__einvp_8") @cell -def sky130_fd_sc_hs__a41o_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a41o_1 fixed cell. +def sky130_fd_sc_hd__einvp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__einvp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a41o_1() + c = sky130.components.sky130_fd_sc_hd__einvp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a41o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_1.gds", cellname="sky130_fd_sc_hd__einvp_1") @cell -def sky130_fd_sc_hs__a41o_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a41o_2 fixed cell. +def sky130_fd_sc_hd__einvp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__einvp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a41o_2() + c = sky130.components.sky130_fd_sc_hd__einvp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a41o_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_4.gds", cellname="sky130_fd_sc_hd__einvp_4") @cell -def sky130_fd_sc_hs__a41o_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a41o_4 fixed cell. +def sky130_fd_sc_hd__or4b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a41o_4() + c = sky130.components.sky130_fd_sc_hd__or4b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a41o_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or4b/sky130_fd_sc_hd__or4b_4.gds", cellname="sky130_fd_sc_hd__or4b_4") @cell -def sky130_fd_sc_hs__a41oi_1() -> gf.Component: - """Returns sky130_fd_sc_hs__a41oi_1 fixed cell. +def sky130_fd_sc_hd__or4b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a41oi_1() + c = sky130.components.sky130_fd_sc_hd__or4b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__a41oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or4b/sky130_fd_sc_hd__or4b_1.gds", cellname="sky130_fd_sc_hd__or4b_1") @cell -def sky130_fd_sc_hs__a41oi_2() -> gf.Component: - """Returns sky130_fd_sc_hs__a41oi_2 fixed cell. +def sky130_fd_sc_hd__or4b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a41oi_2() + c = sky130.components.sky130_fd_sc_hd__or4b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__a41oi_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or4b/sky130_fd_sc_hd__or4b_2.gds", cellname="sky130_fd_sc_hd__or4b_2") @cell -def sky130_fd_sc_hs__a41oi_4() -> gf.Component: - """Returns sky130_fd_sc_hs__a41oi_4 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__a41oi_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__a41oi_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4") @cell -def sky130_fd_sc_hs__and2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__and2_1 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and2_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__and2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2") @cell -def sky130_fd_sc_hs__and2_2() -> gf.Component: - """Returns sky130_fd_sc_hs__and2_2 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and2_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__and2_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1") @cell -def sky130_fd_sc_hs__and2_4() -> gf.Component: - """Returns sky130_fd_sc_hs__and2_4 fixed cell. +def sky130_fd_sc_hd__tapvgnd2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__tapvgnd2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and2_4() + c = sky130.components.sky130_fd_sc_hd__tapvgnd2_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__and2_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/tapvgnd2/sky130_fd_sc_hd__tapvgnd2_1.gds", cellname="sky130_fd_sc_hd__tapvgnd2_1") @cell -def sky130_fd_sc_hs__and2b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__and2b_1 fixed cell. +def sky130_fd_sc_hd__tap_2() -> gf.Component: + """Returns sky130_fd_sc_hd__tap_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and2b_1() + c = sky130.components.sky130_fd_sc_hd__tap_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__and2b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/tap/sky130_fd_sc_hd__tap_2.gds", cellname="sky130_fd_sc_hd__tap_2") @cell -def sky130_fd_sc_hs__and2b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__and2b_2 fixed cell. +def sky130_fd_sc_hd__tap_1() -> gf.Component: + """Returns sky130_fd_sc_hd__tap_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and2b_2() + c = sky130.components.sky130_fd_sc_hd__tap_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__and2b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/tap/sky130_fd_sc_hd__tap_1.gds", cellname="sky130_fd_sc_hd__tap_1") @cell -def sky130_fd_sc_hs__and2b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__and2b_4 fixed cell. +def sky130_fd_sc_hd__o22ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o22ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and2b_4() + c = sky130.components.sky130_fd_sc_hd__o22ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__and2b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o22ai/sky130_fd_sc_hd__o22ai_2.gds", cellname="sky130_fd_sc_hd__o22ai_2") @cell -def sky130_fd_sc_hs__and3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__and3_1 fixed cell. +def sky130_fd_sc_hd__o22ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o22ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and3_1() + c = sky130.components.sky130_fd_sc_hd__o22ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__and3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o22ai/sky130_fd_sc_hd__o22ai_4.gds", cellname="sky130_fd_sc_hd__o22ai_4") @cell -def sky130_fd_sc_hs__and3_2() -> gf.Component: - """Returns sky130_fd_sc_hs__and3_2 fixed cell. +def sky130_fd_sc_hd__o22ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o22ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and3_2() + c = sky130.components.sky130_fd_sc_hd__o22ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__and3_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o22ai/sky130_fd_sc_hd__o22ai_1.gds", cellname="sky130_fd_sc_hd__o22ai_1") @cell -def sky130_fd_sc_hs__and3_4() -> gf.Component: - """Returns sky130_fd_sc_hs__and3_4 fixed cell. +def sky130_fd_sc_hd__dlymetal6s4s_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlymetal6s4s_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and3_4() + c = sky130.components.sky130_fd_sc_hd__dlymetal6s4s_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__and3_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlymetal6s4s/sky130_fd_sc_hd__dlymetal6s4s_1.gds", cellname="sky130_fd_sc_hd__dlymetal6s4s_1") @cell -def sky130_fd_sc_hs__and3b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__and3b_1 fixed cell. +def sky130_fd_sc_hd__o31ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o31ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and3b_1() + c = sky130.components.sky130_fd_sc_hd__o31ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__and3b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o31ai/sky130_fd_sc_hd__o31ai_1.gds", cellname="sky130_fd_sc_hd__o31ai_1") @cell -def sky130_fd_sc_hs__and3b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__and3b_2 fixed cell. +def sky130_fd_sc_hd__o31ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o31ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and3b_2() + c = sky130.components.sky130_fd_sc_hd__o31ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__and3b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o31ai/sky130_fd_sc_hd__o31ai_2.gds", cellname="sky130_fd_sc_hd__o31ai_2") @cell -def sky130_fd_sc_hs__and3b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__and3b_4 fixed cell. +def sky130_fd_sc_hd__o31ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o31ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and3b_4() + c = sky130.components.sky130_fd_sc_hd__o31ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__and3b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o31ai/sky130_fd_sc_hd__o31ai_4.gds", cellname="sky130_fd_sc_hd__o31ai_4") @cell -def sky130_fd_sc_hs__and4_1() -> gf.Component: - """Returns sky130_fd_sc_hs__and4_1 fixed cell. +def sky130_fd_sc_hd__a22oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a22oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and4_1() + c = sky130.components.sky130_fd_sc_hd__a22oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__and4_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a22oi/sky130_fd_sc_hd__a22oi_2.gds", cellname="sky130_fd_sc_hd__a22oi_2") @cell -def sky130_fd_sc_hs__and4_2() -> gf.Component: - """Returns sky130_fd_sc_hs__and4_2 fixed cell. +def sky130_fd_sc_hd__a22oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a22oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and4_2() + c = sky130.components.sky130_fd_sc_hd__a22oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__and4_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a22oi/sky130_fd_sc_hd__a22oi_1.gds", cellname="sky130_fd_sc_hd__a22oi_1") @cell -def sky130_fd_sc_hs__and4_4() -> gf.Component: - """Returns sky130_fd_sc_hs__and4_4 fixed cell. +def sky130_fd_sc_hd__a22oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a22oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and4_4() + c = sky130.components.sky130_fd_sc_hd__a22oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__and4_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a22oi/sky130_fd_sc_hd__a22oi_4.gds", cellname="sky130_fd_sc_hd__a22oi_4") @cell -def sky130_fd_sc_hs__and4b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__and4b_1 fixed cell. +def sky130_fd_sc_hd__a21o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a21o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and4b_1() + c = sky130.components.sky130_fd_sc_hd__a21o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__and4b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21o/sky130_fd_sc_hd__a21o_4.gds", cellname="sky130_fd_sc_hd__a21o_4") @cell -def sky130_fd_sc_hs__and4b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__and4b_2 fixed cell. +def sky130_fd_sc_hd__a21o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a21o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and4b_2() + c = sky130.components.sky130_fd_sc_hd__a21o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__and4b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21o/sky130_fd_sc_hd__a21o_2.gds", cellname="sky130_fd_sc_hd__a21o_2") @cell -def sky130_fd_sc_hs__and4b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__and4b_4 fixed cell. +def sky130_fd_sc_hd__a21o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a21o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and4b_4() + c = sky130.components.sky130_fd_sc_hd__a21o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__and4b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21o/sky130_fd_sc_hd__a21o_1.gds", cellname="sky130_fd_sc_hd__a21o_1") @cell -def sky130_fd_sc_hs__and4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hs__and4bb_1 fixed cell. +def sky130_fd_sc_hd__mux2i_4() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2i_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and4bb_1() + c = sky130.components.sky130_fd_sc_hd__mux2i_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__and4bb_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux2i/sky130_fd_sc_hd__mux2i_4.gds", cellname="sky130_fd_sc_hd__mux2i_4") @cell -def sky130_fd_sc_hs__and4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hs__and4bb_2 fixed cell. +def sky130_fd_sc_hd__mux2i_2() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2i_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and4bb_2() + c = sky130.components.sky130_fd_sc_hd__mux2i_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__and4bb_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux2i/sky130_fd_sc_hd__mux2i_2.gds", cellname="sky130_fd_sc_hd__mux2i_2") @cell -def sky130_fd_sc_hs__and4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hs__and4bb_4 fixed cell. +def sky130_fd_sc_hd__mux2i_1() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2i_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__and4bb_4() + c = sky130.components.sky130_fd_sc_hd__mux2i_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__and4bb_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux2i/sky130_fd_sc_hd__mux2i_1.gds", cellname="sky130_fd_sc_hd__mux2i_1") @cell -def sky130_fd_sc_hs__buf_1() -> gf.Component: - """Returns sky130_fd_sc_hs__buf_1 fixed cell. +def sky130_fd_sc_hd__nor4b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__buf_1() + c = sky130.components.sky130_fd_sc_hd__nor4b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__buf_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor4b/sky130_fd_sc_hd__nor4b_2.gds", cellname="sky130_fd_sc_hd__nor4b_2") @cell -def sky130_fd_sc_hs__buf_16() -> gf.Component: - """Returns sky130_fd_sc_hs__buf_16 fixed cell. +def sky130_fd_sc_hd__nor4b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__buf_16() + c = sky130.components.sky130_fd_sc_hd__nor4b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__buf_16.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor4b/sky130_fd_sc_hd__nor4b_1.gds", cellname="sky130_fd_sc_hd__nor4b_1") @cell -def sky130_fd_sc_hs__buf_2() -> gf.Component: - """Returns sky130_fd_sc_hs__buf_2 fixed cell. +def sky130_fd_sc_hd__nor4b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__buf_2() + c = sky130.components.sky130_fd_sc_hd__nor4b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__buf_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor4b/sky130_fd_sc_hd__nor4b_4.gds", cellname="sky130_fd_sc_hd__nor4b_4") @cell -def sky130_fd_sc_hs__buf_4() -> gf.Component: - """Returns sky130_fd_sc_hs__buf_4 fixed cell. +def sky130_fd_sc_hd__a211o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a211o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__buf_4() + c = sky130.components.sky130_fd_sc_hd__a211o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__buf_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a211o/sky130_fd_sc_hd__a211o_4.gds", cellname="sky130_fd_sc_hd__a211o_4") @cell -def sky130_fd_sc_hs__buf_8() -> gf.Component: - """Returns sky130_fd_sc_hs__buf_8 fixed cell. +def sky130_fd_sc_hd__a211o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a211o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__buf_8() + c = sky130.components.sky130_fd_sc_hd__a211o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__buf_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a211o/sky130_fd_sc_hd__a211o_2.gds", cellname="sky130_fd_sc_hd__a211o_2") @cell -def sky130_fd_sc_hs__bufbuf_16() -> gf.Component: - """Returns sky130_fd_sc_hs__bufbuf_16 fixed cell. +def sky130_fd_sc_hd__a211o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a211o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__bufbuf_16() + c = sky130.components.sky130_fd_sc_hd__a211o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__bufbuf_16.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a211o/sky130_fd_sc_hd__a211o_1.gds", cellname="sky130_fd_sc_hd__a211o_1") @cell -def sky130_fd_sc_hs__bufbuf_8() -> gf.Component: - """Returns sky130_fd_sc_hs__bufbuf_8 fixed cell. +def sky130_fd_sc_hd__dfxtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__bufbuf_8() + c = sky130.components.sky130_fd_sc_hd__dfxtp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__bufbuf_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfxtp/sky130_fd_sc_hd__dfxtp_2.gds", cellname="sky130_fd_sc_hd__dfxtp_2") @cell -def sky130_fd_sc_hs__bufinv_16() -> gf.Component: - """Returns sky130_fd_sc_hs__bufinv_16 fixed cell. +def sky130_fd_sc_hd__dfxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__bufinv_16() + c = sky130.components.sky130_fd_sc_hd__dfxtp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__bufinv_16.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfxtp/sky130_fd_sc_hd__dfxtp_1.gds", cellname="sky130_fd_sc_hd__dfxtp_1") @cell -def sky130_fd_sc_hs__bufinv_8() -> gf.Component: - """Returns sky130_fd_sc_hs__bufinv_8 fixed cell. +def sky130_fd_sc_hd__dfxtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__bufinv_8() + c = sky130.components.sky130_fd_sc_hd__dfxtp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__bufinv_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfxtp/sky130_fd_sc_hd__dfxtp_4.gds", cellname="sky130_fd_sc_hd__dfxtp_4") @cell -def sky130_fd_sc_hs__clkbuf_1() -> gf.Component: - """Returns sky130_fd_sc_hs__clkbuf_1 fixed cell. +def sky130_fd_sc_hd__dfstp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dfstp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkbuf_1() + c = sky130.components.sky130_fd_sc_hd__dfstp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkbuf_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfstp/sky130_fd_sc_hd__dfstp_4.gds", cellname="sky130_fd_sc_hd__dfstp_4") @cell -def sky130_fd_sc_hs__clkbuf_16() -> gf.Component: - """Returns sky130_fd_sc_hs__clkbuf_16 fixed cell. +def sky130_fd_sc_hd__dfstp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfstp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkbuf_16() + c = sky130.components.sky130_fd_sc_hd__dfstp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkbuf_16.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfstp/sky130_fd_sc_hd__dfstp_2.gds", cellname="sky130_fd_sc_hd__dfstp_2") @cell -def sky130_fd_sc_hs__clkbuf_2() -> gf.Component: - """Returns sky130_fd_sc_hs__clkbuf_2 fixed cell. +def sky130_fd_sc_hd__dfstp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfstp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkbuf_2() + c = sky130.components.sky130_fd_sc_hd__dfstp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkbuf_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfstp/sky130_fd_sc_hd__dfstp_1.gds", cellname="sky130_fd_sc_hd__dfstp_1") @cell -def sky130_fd_sc_hs__clkbuf_4() -> gf.Component: - """Returns sky130_fd_sc_hs__clkbuf_4 fixed cell. +def sky130_fd_sc_hd__lpflow_inputiso0p_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputiso0p_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkbuf_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0p_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkbuf_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputiso0p/sky130_fd_sc_hd__lpflow_inputiso0p_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputiso0p_1") @cell -def sky130_fd_sc_hs__clkbuf_8() -> gf.Component: - """Returns sky130_fd_sc_hs__clkbuf_8 fixed cell. +def sky130_fd_sc_hd__o211ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o211ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkbuf_8() + c = sky130.components.sky130_fd_sc_hd__o211ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkbuf_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o211ai/sky130_fd_sc_hd__o211ai_4.gds", cellname="sky130_fd_sc_hd__o211ai_4") @cell -def sky130_fd_sc_hs__clkdlyinv3sd1_1() -> gf.Component: - """Returns sky130_fd_sc_hs__clkdlyinv3sd1_1 fixed cell. +def sky130_fd_sc_hd__o211ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o211ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkdlyinv3sd1_1() + c = sky130.components.sky130_fd_sc_hd__o211ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkdlyinv3sd1_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o211ai/sky130_fd_sc_hd__o211ai_2.gds", cellname="sky130_fd_sc_hd__o211ai_2") @cell -def sky130_fd_sc_hs__clkdlyinv3sd2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__clkdlyinv3sd2_1 fixed cell. +def sky130_fd_sc_hd__o211ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o211ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkdlyinv3sd2_1() + c = sky130.components.sky130_fd_sc_hd__o211ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkdlyinv3sd2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o211ai/sky130_fd_sc_hd__o211ai_1.gds", cellname="sky130_fd_sc_hd__o211ai_1") @cell -def sky130_fd_sc_hs__clkdlyinv3sd3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__clkdlyinv3sd3_1 fixed cell. +def sky130_fd_sc_hd__dfrbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkdlyinv3sd3_1() + c = sky130.components.sky130_fd_sc_hd__dfrbp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkdlyinv3sd3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfrbp/sky130_fd_sc_hd__dfrbp_2.gds", cellname="sky130_fd_sc_hd__dfrbp_2") @cell -def sky130_fd_sc_hs__clkdlyinv5sd1_1() -> gf.Component: - """Returns sky130_fd_sc_hs__clkdlyinv5sd1_1 fixed cell. +def sky130_fd_sc_hd__dfrbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkdlyinv5sd1_1() + c = sky130.components.sky130_fd_sc_hd__dfrbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkdlyinv5sd1_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfrbp/sky130_fd_sc_hd__dfrbp_1.gds", cellname="sky130_fd_sc_hd__dfrbp_1") @cell -def sky130_fd_sc_hs__clkdlyinv5sd2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__clkdlyinv5sd2_1 fixed cell. +def sky130_fd_sc_hd__o211a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o211a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkdlyinv5sd2_1() + c = sky130.components.sky130_fd_sc_hd__o211a_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkdlyinv5sd2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o211a/sky130_fd_sc_hd__o211a_4.gds", cellname="sky130_fd_sc_hd__o211a_4") @cell -def sky130_fd_sc_hs__clkdlyinv5sd3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__clkdlyinv5sd3_1 fixed cell. +def sky130_fd_sc_hd__o211a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o211a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkdlyinv5sd3_1() + c = sky130.components.sky130_fd_sc_hd__o211a_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkdlyinv5sd3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o211a/sky130_fd_sc_hd__o211a_1.gds", cellname="sky130_fd_sc_hd__o211a_1") @cell -def sky130_fd_sc_hs__clkinv_1() -> gf.Component: - """Returns sky130_fd_sc_hs__clkinv_1 fixed cell. +def sky130_fd_sc_hd__o211a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o211a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkinv_1() + c = sky130.components.sky130_fd_sc_hd__o211a_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkinv_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o211a/sky130_fd_sc_hd__o211a_2.gds", cellname="sky130_fd_sc_hd__o211a_2") @cell -def sky130_fd_sc_hs__clkinv_16() -> gf.Component: - """Returns sky130_fd_sc_hs__clkinv_16 fixed cell. +def sky130_fd_sc_hd__edfxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__edfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkinv_16() + c = sky130.components.sky130_fd_sc_hd__edfxbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkinv_16.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/edfxbp/sky130_fd_sc_hd__edfxbp_1.gds", cellname="sky130_fd_sc_hd__edfxbp_1") @cell -def sky130_fd_sc_hs__clkinv_2() -> gf.Component: - """Returns sky130_fd_sc_hs__clkinv_2 fixed cell. +def sky130_fd_sc_hd__or2_0() -> gf.Component: + """Returns sky130_fd_sc_hd__or2_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkinv_2() + c = sky130.components.sky130_fd_sc_hd__or2_0() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkinv_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_0.gds", cellname="sky130_fd_sc_hd__or2_0") @cell -def sky130_fd_sc_hs__clkinv_4() -> gf.Component: - """Returns sky130_fd_sc_hs__clkinv_4 fixed cell. +def sky130_fd_sc_hd__or2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkinv_4() + c = sky130.components.sky130_fd_sc_hd__or2_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkinv_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_4.gds", cellname="sky130_fd_sc_hd__or2_4") @cell -def sky130_fd_sc_hs__clkinv_8() -> gf.Component: - """Returns sky130_fd_sc_hs__clkinv_8 fixed cell. +def sky130_fd_sc_hd__or2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__clkinv_8() + c = sky130.components.sky130_fd_sc_hd__or2_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__clkinv_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_1.gds", cellname="sky130_fd_sc_hd__or2_1") @cell -def sky130_fd_sc_hs__conb_1() -> gf.Component: - """Returns sky130_fd_sc_hs__conb_1 fixed cell. +def sky130_fd_sc_hd__or2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__conb_1() + c = sky130.components.sky130_fd_sc_hd__or2_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__conb_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_2.gds", cellname="sky130_fd_sc_hd__or2_2") @cell -def sky130_fd_sc_hs__decap_4() -> gf.Component: - """Returns sky130_fd_sc_hs__decap_4 fixed cell. +def sky130_fd_sc_hd__nor4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__decap_4() + c = sky130.components.sky130_fd_sc_hd__nor4_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__decap_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor4/sky130_fd_sc_hd__nor4_2.gds", cellname="sky130_fd_sc_hd__nor4_2") @cell -def sky130_fd_sc_hs__decap_8() -> gf.Component: - """Returns sky130_fd_sc_hs__decap_8 fixed cell. +def sky130_fd_sc_hd__nor4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__decap_8() + c = sky130.components.sky130_fd_sc_hd__nor4_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__decap_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor4/sky130_fd_sc_hd__nor4_1.gds", cellname="sky130_fd_sc_hd__nor4_1") @cell -def sky130_fd_sc_hs__dfbbn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dfbbn_1 fixed cell. +def sky130_fd_sc_hd__nor4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfbbn_1() + c = sky130.components.sky130_fd_sc_hd__nor4_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfbbn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor4/sky130_fd_sc_hd__nor4_4.gds", cellname="sky130_fd_sc_hd__nor4_4") @cell -def sky130_fd_sc_hs__dfbbn_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dfbbn_2 fixed cell. +def sky130_fd_sc_hd__dlxtn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxtn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfbbn_2() + c = sky130.components.sky130_fd_sc_hd__dlxtn_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfbbn_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlxtn/sky130_fd_sc_hd__dlxtn_2.gds", cellname="sky130_fd_sc_hd__dlxtn_2") @cell -def sky130_fd_sc_hs__dfbbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dfbbp_1 fixed cell. +def sky130_fd_sc_hd__dlxtn_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxtn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfbbp_1() + c = sky130.components.sky130_fd_sc_hd__dlxtn_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfbbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlxtn/sky130_fd_sc_hd__dlxtn_4.gds", cellname="sky130_fd_sc_hd__dlxtn_4") @cell -def sky130_fd_sc_hs__dfrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dfrbp_1 fixed cell. +def sky130_fd_sc_hd__dlxtn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfrbp_1() + c = sky130.components.sky130_fd_sc_hd__dlxtn_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfrbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlxtn/sky130_fd_sc_hd__dlxtn_1.gds", cellname="sky130_fd_sc_hd__dlxtn_1") @cell -def sky130_fd_sc_hs__dfrbp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dfrbp_2 fixed cell. +def sky130_fd_sc_hd__a41o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a41o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfrbp_2() + c = sky130.components.sky130_fd_sc_hd__a41o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfrbp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a41o/sky130_fd_sc_hd__a41o_4.gds", cellname="sky130_fd_sc_hd__a41o_4") @cell -def sky130_fd_sc_hs__dfrtn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dfrtn_1 fixed cell. +def sky130_fd_sc_hd__a41o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a41o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfrtn_1() + c = sky130.components.sky130_fd_sc_hd__a41o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfrtn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a41o/sky130_fd_sc_hd__a41o_2.gds", cellname="sky130_fd_sc_hd__a41o_2") @cell -def sky130_fd_sc_hs__dfrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dfrtp_1 fixed cell. +def sky130_fd_sc_hd__a41o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a41o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfrtp_1() + c = sky130.components.sky130_fd_sc_hd__a41o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfrtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a41o/sky130_fd_sc_hd__a41o_1.gds", cellname="sky130_fd_sc_hd__a41o_1") @cell -def sky130_fd_sc_hs__dfrtp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dfrtp_2 fixed cell. +def sky130_fd_sc_hd__a21boi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a21boi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfrtp_2() + c = sky130.components.sky130_fd_sc_hd__a21boi_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfrtp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_1.gds", cellname="sky130_fd_sc_hd__a21boi_1") @cell -def sky130_fd_sc_hs__dfrtp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__dfrtp_4 fixed cell. +def sky130_fd_sc_hd__a21boi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a21boi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfrtp_4() + c = sky130.components.sky130_fd_sc_hd__a21boi_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfrtp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_2.gds", cellname="sky130_fd_sc_hd__a21boi_2") @cell -def sky130_fd_sc_hs__dfsbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dfsbp_1 fixed cell. +def sky130_fd_sc_hd__a21boi_0() -> gf.Component: + """Returns sky130_fd_sc_hd__a21boi_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfsbp_1() + c = sky130.components.sky130_fd_sc_hd__a21boi_0() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfsbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_0.gds", cellname="sky130_fd_sc_hd__a21boi_0") @cell -def sky130_fd_sc_hs__dfsbp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dfsbp_2 fixed cell. +def sky130_fd_sc_hd__a21boi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a21boi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfsbp_2() + c = sky130.components.sky130_fd_sc_hd__a21boi_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfsbp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_4.gds", cellname="sky130_fd_sc_hd__a21boi_4") @cell -def sky130_fd_sc_hs__dfstp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dfstp_1 fixed cell. +def sky130_fd_sc_hd__o32a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o32a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfstp_1() + c = sky130.components.sky130_fd_sc_hd__o32a_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfstp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o32a/sky130_fd_sc_hd__o32a_2.gds", cellname="sky130_fd_sc_hd__o32a_2") @cell -def sky130_fd_sc_hs__dfstp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dfstp_2 fixed cell. +def sky130_fd_sc_hd__o32a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o32a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfstp_2() + c = sky130.components.sky130_fd_sc_hd__o32a_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfstp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o32a/sky130_fd_sc_hd__o32a_1.gds", cellname="sky130_fd_sc_hd__o32a_1") @cell -def sky130_fd_sc_hs__dfstp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__dfstp_4 fixed cell. +def sky130_fd_sc_hd__o32a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o32a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfstp_4() + c = sky130.components.sky130_fd_sc_hd__o32a_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfstp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o32a/sky130_fd_sc_hd__o32a_4.gds", cellname="sky130_fd_sc_hd__o32a_4") @cell -def sky130_fd_sc_hs__dfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dfxbp_1 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfxbp_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfxbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_2.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_2") @cell -def sky130_fd_sc_hs__dfxbp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dfxbp_2 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfxbp_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfxbp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_1.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_1") @cell -def sky130_fd_sc_hs__dfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dfxtp_1 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_16() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfxtp_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_16() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfxtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_16.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_16") @cell -def sky130_fd_sc_hs__dfxtp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dfxtp_2 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfxtp_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfxtp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_4.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_4") @cell -def sky130_fd_sc_hs__dfxtp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__dfxtp_4 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_8() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dfxtp_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__dfxtp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_8.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_8") @cell -def sky130_fd_sc_hs__diode_2() -> gf.Component: - """Returns sky130_fd_sc_hs__diode_2 fixed cell. +def sky130_fd_sc_hd__nor2b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__diode_2() + c = sky130.components.sky130_fd_sc_hd__nor2b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__diode_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor2b/sky130_fd_sc_hd__nor2b_4.gds", cellname="sky130_fd_sc_hd__nor2b_4") @cell -def sky130_fd_sc_hs__dlclkp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlclkp_1 fixed cell. +def sky130_fd_sc_hd__nor2b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlclkp_1() + c = sky130.components.sky130_fd_sc_hd__nor2b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlclkp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor2b/sky130_fd_sc_hd__nor2b_2.gds", cellname="sky130_fd_sc_hd__nor2b_2") @cell -def sky130_fd_sc_hs__dlclkp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dlclkp_2 fixed cell. +def sky130_fd_sc_hd__nor2b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlclkp_2() + c = sky130.components.sky130_fd_sc_hd__nor2b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlclkp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor2b/sky130_fd_sc_hd__nor2b_1.gds", cellname="sky130_fd_sc_hd__nor2b_1") @cell -def sky130_fd_sc_hs__dlclkp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__dlclkp_4 fixed cell. +def sky130_fd_sc_hd__mux2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlclkp_4() + c = sky130.components.sky130_fd_sc_hd__mux2_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlclkp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_2.gds", cellname="sky130_fd_sc_hd__mux2_2") @cell -def sky130_fd_sc_hs__dlrbn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrbn_1 fixed cell. +def sky130_fd_sc_hd__mux2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrbn_1() + c = sky130.components.sky130_fd_sc_hd__mux2_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrbn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_4.gds", cellname="sky130_fd_sc_hd__mux2_4") @cell -def sky130_fd_sc_hs__dlrbn_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrbn_2 fixed cell. +def sky130_fd_sc_hd__mux2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrbn_2() + c = sky130.components.sky130_fd_sc_hd__mux2_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrbn_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_1.gds", cellname="sky130_fd_sc_hd__mux2_1") @cell -def sky130_fd_sc_hs__dlrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrbp_1 fixed cell. +def sky130_fd_sc_hd__mux2_8() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrbp_1() + c = sky130.components.sky130_fd_sc_hd__mux2_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_8.gds", cellname="sky130_fd_sc_hd__mux2_8") @cell -def sky130_fd_sc_hs__dlrbp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrbp_2 fixed cell. +def sky130_fd_sc_hd__o22a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o22a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrbp_2() + c = sky130.components.sky130_fd_sc_hd__o22a_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrbp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o22a/sky130_fd_sc_hd__o22a_2.gds", cellname="sky130_fd_sc_hd__o22a_2") @cell -def sky130_fd_sc_hs__dlrtn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrtn_1 fixed cell. +def sky130_fd_sc_hd__o22a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o22a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrtn_1() + c = sky130.components.sky130_fd_sc_hd__o22a_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrtn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o22a/sky130_fd_sc_hd__o22a_4.gds", cellname="sky130_fd_sc_hd__o22a_4") @cell -def sky130_fd_sc_hs__dlrtn_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrtn_2 fixed cell. +def sky130_fd_sc_hd__o22a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o22a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrtn_2() + c = sky130.components.sky130_fd_sc_hd__o22a_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrtn_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o22a/sky130_fd_sc_hd__o22a_1.gds", cellname="sky130_fd_sc_hd__o22a_1") @cell -def sky130_fd_sc_hs__dlrtn_4() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrtn_4 fixed cell. +def sky130_fd_sc_hd__a22o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a22o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrtn_4() + c = sky130.components.sky130_fd_sc_hd__a22o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrtn_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a22o/sky130_fd_sc_hd__a22o_1.gds", cellname="sky130_fd_sc_hd__a22o_1") @cell -def sky130_fd_sc_hs__dlrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrtp_1 fixed cell. +def sky130_fd_sc_hd__a22o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a22o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrtp_1() + c = sky130.components.sky130_fd_sc_hd__a22o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a22o/sky130_fd_sc_hd__a22o_4.gds", cellname="sky130_fd_sc_hd__a22o_4") @cell -def sky130_fd_sc_hs__dlrtp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrtp_2 fixed cell. +def sky130_fd_sc_hd__a22o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a22o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrtp_2() + c = sky130.components.sky130_fd_sc_hd__a22o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrtp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a22o/sky130_fd_sc_hd__a22o_2.gds", cellname="sky130_fd_sc_hd__a22o_2") @cell -def sky130_fd_sc_hs__dlrtp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__dlrtp_4 fixed cell. +def sky130_fd_sc_hd__dlygate4sd2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlygate4sd2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlrtp_4() + c = sky130.components.sky130_fd_sc_hd__dlygate4sd2_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlrtp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlygate4sd2/sky130_fd_sc_hd__dlygate4sd2_1.gds", cellname="sky130_fd_sc_hd__dlygate4sd2_1") @cell -def sky130_fd_sc_hs__dlxbn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlxbn_1 fixed cell. +def sky130_fd_sc_hd__dlrtn_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlxbn_1() + c = sky130.components.sky130_fd_sc_hd__dlrtn_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlxbn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrtn/sky130_fd_sc_hd__dlrtn_4.gds", cellname="sky130_fd_sc_hd__dlrtn_4") @cell -def sky130_fd_sc_hs__dlxbn_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dlxbn_2 fixed cell. +def sky130_fd_sc_hd__dlrtn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlxbn_2() + c = sky130.components.sky130_fd_sc_hd__dlrtn_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlxbn_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrtn/sky130_fd_sc_hd__dlrtn_2.gds", cellname="sky130_fd_sc_hd__dlrtn_2") @cell -def sky130_fd_sc_hs__dlxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlxbp_1 fixed cell. +def sky130_fd_sc_hd__dlrtn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlxbp_1() + c = sky130.components.sky130_fd_sc_hd__dlrtn_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlxbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrtn/sky130_fd_sc_hd__dlrtn_1.gds", cellname="sky130_fd_sc_hd__dlrtn_1") @cell -def sky130_fd_sc_hs__dlxtn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlxtn_1 fixed cell. +def sky130_fd_sc_hd__diode_2() -> gf.Component: + """Returns sky130_fd_sc_hd__diode_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlxtn_1() + c = sky130.components.sky130_fd_sc_hd__diode_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlxtn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/diode/sky130_fd_sc_hd__diode_2.gds", cellname="sky130_fd_sc_hd__diode_2") @cell -def sky130_fd_sc_hs__dlxtn_2() -> gf.Component: - """Returns sky130_fd_sc_hs__dlxtn_2 fixed cell. +def sky130_fd_sc_hd__o21ba_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ba_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlxtn_2() + c = sky130.components.sky130_fd_sc_hd__o21ba_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlxtn_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21ba/sky130_fd_sc_hd__o21ba_1.gds", cellname="sky130_fd_sc_hd__o21ba_1") @cell -def sky130_fd_sc_hs__dlxtn_4() -> gf.Component: - """Returns sky130_fd_sc_hs__dlxtn_4 fixed cell. +def sky130_fd_sc_hd__o21ba_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ba_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlxtn_4() + c = sky130.components.sky130_fd_sc_hd__o21ba_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlxtn_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21ba/sky130_fd_sc_hd__o21ba_2.gds", cellname="sky130_fd_sc_hd__o21ba_2") @cell -def sky130_fd_sc_hs__dlxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlxtp_1 fixed cell. +def sky130_fd_sc_hd__o21ba_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ba_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlxtp_1() + c = sky130.components.sky130_fd_sc_hd__o21ba_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlxtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21ba/sky130_fd_sc_hd__o21ba_4.gds", cellname="sky130_fd_sc_hd__o21ba_4") @cell -def sky130_fd_sc_hs__dlygate4sd1_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlygate4sd1_1 fixed cell. +def sky130_fd_sc_hd__xor2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__xor2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlygate4sd1_1() + c = sky130.components.sky130_fd_sc_hd__xor2_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlygate4sd1_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_4.gds", cellname="sky130_fd_sc_hd__xor2_4") @cell -def sky130_fd_sc_hs__dlygate4sd2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlygate4sd2_1 fixed cell. +def sky130_fd_sc_hd__xor2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__xor2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlygate4sd2_1() + c = sky130.components.sky130_fd_sc_hd__xor2_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlygate4sd2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_2.gds", cellname="sky130_fd_sc_hd__xor2_2") @cell -def sky130_fd_sc_hs__dlygate4sd3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlygate4sd3_1 fixed cell. +def sky130_fd_sc_hd__xor2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__xor2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlygate4sd3_1() + c = sky130.components.sky130_fd_sc_hd__xor2_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlygate4sd3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_1.gds", cellname="sky130_fd_sc_hd__xor2_1") @cell -def sky130_fd_sc_hs__dlymetal6s2s_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlymetal6s2s_1 fixed cell. +def sky130_fd_sc_hd__a41oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a41oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlymetal6s2s_1() + c = sky130.components.sky130_fd_sc_hd__a41oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlymetal6s2s_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a41oi/sky130_fd_sc_hd__a41oi_2.gds", cellname="sky130_fd_sc_hd__a41oi_2") @cell -def sky130_fd_sc_hs__dlymetal6s4s_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlymetal6s4s_1 fixed cell. +def sky130_fd_sc_hd__a41oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a41oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlymetal6s4s_1() + c = sky130.components.sky130_fd_sc_hd__a41oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlymetal6s4s_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a41oi/sky130_fd_sc_hd__a41oi_1.gds", cellname="sky130_fd_sc_hd__a41oi_1") @cell -def sky130_fd_sc_hs__dlymetal6s6s_1() -> gf.Component: - """Returns sky130_fd_sc_hs__dlymetal6s6s_1 fixed cell. +def sky130_fd_sc_hd__a41oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a41oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__dlymetal6s6s_1() + c = sky130.components.sky130_fd_sc_hd__a41oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__dlymetal6s6s_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a41oi/sky130_fd_sc_hd__a41oi_4.gds", cellname="sky130_fd_sc_hd__a41oi_4") @cell -def sky130_fd_sc_hs__ebufn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__ebufn_1 fixed cell. +def sky130_fd_sc_hd__sdfstp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfstp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__ebufn_1() + c = sky130.components.sky130_fd_sc_hd__sdfstp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__ebufn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfstp/sky130_fd_sc_hd__sdfstp_1.gds", cellname="sky130_fd_sc_hd__sdfstp_1") @cell -def sky130_fd_sc_hs__ebufn_2() -> gf.Component: - """Returns sky130_fd_sc_hs__ebufn_2 fixed cell. +def sky130_fd_sc_hd__sdfstp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfstp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__ebufn_2() + c = sky130.components.sky130_fd_sc_hd__sdfstp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__ebufn_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfstp/sky130_fd_sc_hd__sdfstp_2.gds", cellname="sky130_fd_sc_hd__sdfstp_2") @cell -def sky130_fd_sc_hs__ebufn_4() -> gf.Component: - """Returns sky130_fd_sc_hs__ebufn_4 fixed cell. +def sky130_fd_sc_hd__sdfstp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfstp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__ebufn_4() + c = sky130.components.sky130_fd_sc_hd__sdfstp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__ebufn_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfstp/sky130_fd_sc_hd__sdfstp_4.gds", cellname="sky130_fd_sc_hd__sdfstp_4") @cell -def sky130_fd_sc_hs__ebufn_8() -> gf.Component: - """Returns sky130_fd_sc_hs__ebufn_8 fixed cell. +def sky130_fd_sc_hd__and4b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__ebufn_8() + c = sky130.components.sky130_fd_sc_hd__and4b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__ebufn_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and4b/sky130_fd_sc_hd__and4b_2.gds", cellname="sky130_fd_sc_hd__and4b_2") @cell -def sky130_fd_sc_hs__edfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__edfxbp_1 fixed cell. +def sky130_fd_sc_hd__and4b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__edfxbp_1() + c = sky130.components.sky130_fd_sc_hd__and4b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__edfxbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and4b/sky130_fd_sc_hd__and4b_4.gds", cellname="sky130_fd_sc_hd__and4b_4") @cell -def sky130_fd_sc_hs__edfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__edfxtp_1 fixed cell. +def sky130_fd_sc_hd__and4b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__edfxtp_1() + c = sky130.components.sky130_fd_sc_hd__and4b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__edfxtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and4b/sky130_fd_sc_hd__and4b_1.gds", cellname="sky130_fd_sc_hd__and4b_1") @cell -def sky130_fd_sc_hs__einvn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__einvn_1 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__einvn_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__einvn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_4.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_4") @cell -def sky130_fd_sc_hs__einvn_2() -> gf.Component: - """Returns sky130_fd_sc_hs__einvn_2 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__einvn_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__einvn_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_1.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_1") @cell -def sky130_fd_sc_hs__einvn_4() -> gf.Component: - """Returns sky130_fd_sc_hs__einvn_4 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_16() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__einvn_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_16() c.plot() """ - return import_gds("sky130_fd_sc_hs__einvn_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_16.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_16") @cell -def sky130_fd_sc_hs__einvn_8() -> gf.Component: - """Returns sky130_fd_sc_hs__einvn_8 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__einvn_8() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__einvn_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_2.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_2") @cell -def sky130_fd_sc_hs__einvp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__einvp_1 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_8() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__einvp_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__einvp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_8.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_8") @cell -def sky130_fd_sc_hs__einvp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__einvp_2 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_6() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__einvp_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_6() c.plot() """ - return import_gds("sky130_fd_sc_hs__einvp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_6.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_6") @cell -def sky130_fd_sc_hs__einvp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__einvp_4 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_3() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__einvp_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_3() c.plot() """ - return import_gds("sky130_fd_sc_hs__einvp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_3.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_3") @cell -def sky130_fd_sc_hs__einvp_8() -> gf.Component: - """Returns sky130_fd_sc_hs__einvp_8 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_8() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__einvp_8() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__einvp_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_8.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_8") @cell -def sky130_fd_sc_hs__fa_1() -> gf.Component: - """Returns sky130_fd_sc_hs__fa_1 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_12() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fa_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_12() c.plot() """ - return import_gds("sky130_fd_sc_hs__fa_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_12.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_12") @cell -def sky130_fd_sc_hs__fa_2() -> gf.Component: - """Returns sky130_fd_sc_hs__fa_2 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fa_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__fa_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_4.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_4") @cell -def sky130_fd_sc_hs__fa_4() -> gf.Component: - """Returns sky130_fd_sc_hs__fa_4 fixed cell. +def sky130_fd_sc_hd__a221oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a221oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fa_4() + c = sky130.components.sky130_fd_sc_hd__a221oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__fa_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a221oi/sky130_fd_sc_hd__a221oi_4.gds", cellname="sky130_fd_sc_hd__a221oi_4") @cell -def sky130_fd_sc_hs__fah_1() -> gf.Component: - """Returns sky130_fd_sc_hs__fah_1 fixed cell. +def sky130_fd_sc_hd__a221oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a221oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fah_1() + c = sky130.components.sky130_fd_sc_hd__a221oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__fah_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a221oi/sky130_fd_sc_hd__a221oi_1.gds", cellname="sky130_fd_sc_hd__a221oi_1") @cell -def sky130_fd_sc_hs__fah_2() -> gf.Component: - """Returns sky130_fd_sc_hs__fah_2 fixed cell. +def sky130_fd_sc_hd__a221oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a221oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fah_2() + c = sky130.components.sky130_fd_sc_hd__a221oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__fah_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a221oi/sky130_fd_sc_hd__a221oi_2.gds", cellname="sky130_fd_sc_hd__a221oi_2") @cell -def sky130_fd_sc_hs__fah_4() -> gf.Component: - """Returns sky130_fd_sc_hs__fah_4 fixed cell. +def sky130_fd_sc_hd__o21bai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o21bai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fah_4() + c = sky130.components.sky130_fd_sc_hd__o21bai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__fah_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21bai/sky130_fd_sc_hd__o21bai_1.gds", cellname="sky130_fd_sc_hd__o21bai_1") @cell -def sky130_fd_sc_hs__fahcin_1() -> gf.Component: - """Returns sky130_fd_sc_hs__fahcin_1 fixed cell. +def sky130_fd_sc_hd__o21bai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o21bai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fahcin_1() + c = sky130.components.sky130_fd_sc_hd__o21bai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__fahcin_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21bai/sky130_fd_sc_hd__o21bai_2.gds", cellname="sky130_fd_sc_hd__o21bai_2") @cell -def sky130_fd_sc_hs__fahcon_1() -> gf.Component: - """Returns sky130_fd_sc_hs__fahcon_1 fixed cell. +def sky130_fd_sc_hd__o21bai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o21bai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fahcon_1() + c = sky130.components.sky130_fd_sc_hd__o21bai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__fahcon_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21bai/sky130_fd_sc_hd__o21bai_4.gds", cellname="sky130_fd_sc_hd__o21bai_4") @cell -def sky130_fd_sc_hs__fill_1() -> gf.Component: - """Returns sky130_fd_sc_hs__fill_1 fixed cell. +def sky130_fd_sc_hd__dlxbn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fill_1() + c = sky130.components.sky130_fd_sc_hd__dlxbn_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__fill_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlxbn/sky130_fd_sc_hd__dlxbn_1.gds", cellname="sky130_fd_sc_hd__dlxbn_1") @cell -def sky130_fd_sc_hs__fill_2() -> gf.Component: - """Returns sky130_fd_sc_hs__fill_2 fixed cell. +def sky130_fd_sc_hd__dlxbn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fill_2() + c = sky130.components.sky130_fd_sc_hd__dlxbn_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__fill_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlxbn/sky130_fd_sc_hd__dlxbn_2.gds", cellname="sky130_fd_sc_hd__dlxbn_2") @cell -def sky130_fd_sc_hs__fill_4() -> gf.Component: - """Returns sky130_fd_sc_hs__fill_4 fixed cell. +def sky130_fd_sc_hd__edfxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__edfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fill_4() + c = sky130.components.sky130_fd_sc_hd__edfxtp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__fill_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/edfxtp/sky130_fd_sc_hd__edfxtp_1.gds", cellname="sky130_fd_sc_hd__edfxtp_1") @cell -def sky130_fd_sc_hs__fill_8() -> gf.Component: - """Returns sky130_fd_sc_hs__fill_8 fixed cell. +def sky130_fd_sc_hd__dfsbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfsbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fill_8() + c = sky130.components.sky130_fd_sc_hd__dfsbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__fill_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfsbp/sky130_fd_sc_hd__dfsbp_1.gds", cellname="sky130_fd_sc_hd__dfsbp_1") @cell -def sky130_fd_sc_hs__fill_diode_2() -> gf.Component: - """Returns sky130_fd_sc_hs__fill_diode_2 fixed cell. +def sky130_fd_sc_hd__dfsbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfsbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fill_diode_2() + c = sky130.components.sky130_fd_sc_hd__dfsbp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__fill_diode_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfsbp/sky130_fd_sc_hd__dfsbp_2.gds", cellname="sky130_fd_sc_hd__dfsbp_2") @cell -def sky130_fd_sc_hs__fill_diode_4() -> gf.Component: - """Returns sky130_fd_sc_hs__fill_diode_4 fixed cell. +def sky130_fd_sc_hd__nor2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fill_diode_4() + c = sky130.components.sky130_fd_sc_hd__nor2_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__fill_diode_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_1.gds", cellname="sky130_fd_sc_hd__nor2_1") @cell -def sky130_fd_sc_hs__fill_diode_8() -> gf.Component: - """Returns sky130_fd_sc_hs__fill_diode_8 fixed cell. +def sky130_fd_sc_hd__nor2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__fill_diode_8() + c = sky130.components.sky130_fd_sc_hd__nor2_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__fill_diode_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_4.gds", cellname="sky130_fd_sc_hd__nor2_4") @cell -def sky130_fd_sc_hs__ha_1() -> gf.Component: - """Returns sky130_fd_sc_hs__ha_1 fixed cell. +def sky130_fd_sc_hd__nor2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__ha_1() + c = sky130.components.sky130_fd_sc_hd__nor2_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__ha_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_2.gds", cellname="sky130_fd_sc_hd__nor2_2") @cell -def sky130_fd_sc_hs__ha_2() -> gf.Component: - """Returns sky130_fd_sc_hs__ha_2 fixed cell. +def sky130_fd_sc_hd__nor2_8() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__ha_2() + c = sky130.components.sky130_fd_sc_hd__nor2_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__ha_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_8.gds", cellname="sky130_fd_sc_hd__nor2_8") @cell -def sky130_fd_sc_hs__ha_4() -> gf.Component: - """Returns sky130_fd_sc_hs__ha_4 fixed cell. +def sky130_fd_sc_hd__dfrtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__ha_4() + c = sky130.components.sky130_fd_sc_hd__dfrtp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__ha_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfrtp/sky130_fd_sc_hd__dfrtp_4.gds", cellname="sky130_fd_sc_hd__dfrtp_4") @cell -def sky130_fd_sc_hs__inv_1() -> gf.Component: - """Returns sky130_fd_sc_hs__inv_1 fixed cell. +def sky130_fd_sc_hd__dfrtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__inv_1() + c = sky130.components.sky130_fd_sc_hd__dfrtp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__inv_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfrtp/sky130_fd_sc_hd__dfrtp_2.gds", cellname="sky130_fd_sc_hd__dfrtp_2") @cell -def sky130_fd_sc_hs__inv_16() -> gf.Component: - """Returns sky130_fd_sc_hs__inv_16 fixed cell. +def sky130_fd_sc_hd__dfrtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__inv_16() + c = sky130.components.sky130_fd_sc_hd__dfrtp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__inv_16.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfrtp/sky130_fd_sc_hd__dfrtp_1.gds", cellname="sky130_fd_sc_hd__dfrtp_1") @cell -def sky130_fd_sc_hs__inv_2() -> gf.Component: - """Returns sky130_fd_sc_hs__inv_2 fixed cell. +def sky130_fd_sc_hd__and4bb_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__inv_2() + c = sky130.components.sky130_fd_sc_hd__and4bb_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__inv_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and4bb/sky130_fd_sc_hd__and4bb_4.gds", cellname="sky130_fd_sc_hd__and4bb_4") @cell -def sky130_fd_sc_hs__inv_4() -> gf.Component: - """Returns sky130_fd_sc_hs__inv_4 fixed cell. +def sky130_fd_sc_hd__and4bb_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__inv_4() + c = sky130.components.sky130_fd_sc_hd__and4bb_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__inv_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and4bb/sky130_fd_sc_hd__and4bb_2.gds", cellname="sky130_fd_sc_hd__and4bb_2") @cell -def sky130_fd_sc_hs__inv_8() -> gf.Component: - """Returns sky130_fd_sc_hs__inv_8 fixed cell. +def sky130_fd_sc_hd__and4bb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__inv_8() + c = sky130.components.sky130_fd_sc_hd__and4bb_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__inv_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and4bb/sky130_fd_sc_hd__and4bb_1.gds", cellname="sky130_fd_sc_hd__and4bb_1") @cell -def sky130_fd_sc_hs__maj3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__maj3_1 fixed cell. +def sky130_fd_sc_hd__or3b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__maj3_1() + c = sky130.components.sky130_fd_sc_hd__or3b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__maj3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or3b/sky130_fd_sc_hd__or3b_4.gds", cellname="sky130_fd_sc_hd__or3b_4") @cell -def sky130_fd_sc_hs__maj3_2() -> gf.Component: - """Returns sky130_fd_sc_hs__maj3_2 fixed cell. +def sky130_fd_sc_hd__or3b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__maj3_2() + c = sky130.components.sky130_fd_sc_hd__or3b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__maj3_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or3b/sky130_fd_sc_hd__or3b_1.gds", cellname="sky130_fd_sc_hd__or3b_1") @cell -def sky130_fd_sc_hs__maj3_4() -> gf.Component: - """Returns sky130_fd_sc_hs__maj3_4 fixed cell. +def sky130_fd_sc_hd__or3b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__maj3_4() + c = sky130.components.sky130_fd_sc_hd__or3b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__maj3_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or3b/sky130_fd_sc_hd__or3b_2.gds", cellname="sky130_fd_sc_hd__or3b_2") @cell -def sky130_fd_sc_hs__mux2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__mux2_1 fixed cell. +def sky130_fd_sc_hd__o311a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o311a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__mux2_1() + c = sky130.components.sky130_fd_sc_hd__o311a_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__mux2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o311a/sky130_fd_sc_hd__o311a_2.gds", cellname="sky130_fd_sc_hd__o311a_2") @cell -def sky130_fd_sc_hs__mux2_2() -> gf.Component: - """Returns sky130_fd_sc_hs__mux2_2 fixed cell. +def sky130_fd_sc_hd__o311a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o311a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__mux2_2() + c = sky130.components.sky130_fd_sc_hd__o311a_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__mux2_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o311a/sky130_fd_sc_hd__o311a_4.gds", cellname="sky130_fd_sc_hd__o311a_4") @cell -def sky130_fd_sc_hs__mux2_4() -> gf.Component: - """Returns sky130_fd_sc_hs__mux2_4 fixed cell. +def sky130_fd_sc_hd__o311a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o311a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__mux2_4() + c = sky130.components.sky130_fd_sc_hd__o311a_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__mux2_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o311a/sky130_fd_sc_hd__o311a_1.gds", cellname="sky130_fd_sc_hd__o311a_1") @cell -def sky130_fd_sc_hs__mux2i_1() -> gf.Component: - """Returns sky130_fd_sc_hs__mux2i_1 fixed cell. +def sky130_fd_sc_hd__a21oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a21oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__mux2i_1() + c = sky130.components.sky130_fd_sc_hd__a21oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__mux2i_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21oi/sky130_fd_sc_hd__a21oi_1.gds", cellname="sky130_fd_sc_hd__a21oi_1") @cell -def sky130_fd_sc_hs__mux2i_2() -> gf.Component: - """Returns sky130_fd_sc_hs__mux2i_2 fixed cell. +def sky130_fd_sc_hd__a21oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a21oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__mux2i_2() + c = sky130.components.sky130_fd_sc_hd__a21oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__mux2i_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21oi/sky130_fd_sc_hd__a21oi_2.gds", cellname="sky130_fd_sc_hd__a21oi_2") @cell -def sky130_fd_sc_hs__mux2i_4() -> gf.Component: - """Returns sky130_fd_sc_hs__mux2i_4 fixed cell. +def sky130_fd_sc_hd__a21oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a21oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__mux2i_4() + c = sky130.components.sky130_fd_sc_hd__a21oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__mux2i_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21oi/sky130_fd_sc_hd__a21oi_4.gds", cellname="sky130_fd_sc_hd__a21oi_4") @cell -def sky130_fd_sc_hs__mux4_1() -> gf.Component: - """Returns sky130_fd_sc_hs__mux4_1 fixed cell. +def sky130_fd_sc_hd__o221ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o221ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__mux4_1() + c = sky130.components.sky130_fd_sc_hd__o221ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__mux4_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o221ai/sky130_fd_sc_hd__o221ai_4.gds", cellname="sky130_fd_sc_hd__o221ai_4") @cell -def sky130_fd_sc_hs__mux4_2() -> gf.Component: - """Returns sky130_fd_sc_hs__mux4_2 fixed cell. +def sky130_fd_sc_hd__o221ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o221ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__mux4_2() + c = sky130.components.sky130_fd_sc_hd__o221ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__mux4_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o221ai/sky130_fd_sc_hd__o221ai_2.gds", cellname="sky130_fd_sc_hd__o221ai_2") @cell -def sky130_fd_sc_hs__mux4_4() -> gf.Component: - """Returns sky130_fd_sc_hs__mux4_4 fixed cell. +def sky130_fd_sc_hd__o221ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o221ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__mux4_4() + c = sky130.components.sky130_fd_sc_hd__o221ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__mux4_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o221ai/sky130_fd_sc_hd__o221ai_1.gds", cellname="sky130_fd_sc_hd__o221ai_1") @cell -def sky130_fd_sc_hs__nand2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nand2_1 fixed cell. +def sky130_fd_sc_hd__lpflow_inputiso0n_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputiso0n_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand2_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0n_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputiso0n/sky130_fd_sc_hd__lpflow_inputiso0n_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputiso0n_1") @cell -def sky130_fd_sc_hs__nand2_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nand2_2 fixed cell. +def sky130_fd_sc_hd__lpflow_inputiso1n_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputiso1n_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand2_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1n_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand2_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputiso1n/sky130_fd_sc_hd__lpflow_inputiso1n_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputiso1n_1") @cell -def sky130_fd_sc_hs__nand2_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nand2_4 fixed cell. +def sky130_fd_sc_hd__nand4bb_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand2_4() + c = sky130.components.sky130_fd_sc_hd__nand4bb_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand2_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand4bb/sky130_fd_sc_hd__nand4bb_2.gds", cellname="sky130_fd_sc_hd__nand4bb_2") @cell -def sky130_fd_sc_hs__nand2_8() -> gf.Component: - """Returns sky130_fd_sc_hs__nand2_8 fixed cell. +def sky130_fd_sc_hd__nand4bb_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand2_8() + c = sky130.components.sky130_fd_sc_hd__nand4bb_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand2_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand4bb/sky130_fd_sc_hd__nand4bb_4.gds", cellname="sky130_fd_sc_hd__nand4bb_4") @cell -def sky130_fd_sc_hs__nand2b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nand2b_1 fixed cell. +def sky130_fd_sc_hd__nand4bb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand2b_1() + c = sky130.components.sky130_fd_sc_hd__nand4bb_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand2b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand4bb/sky130_fd_sc_hd__nand4bb_1.gds", cellname="sky130_fd_sc_hd__nand4bb_1") @cell -def sky130_fd_sc_hs__nand2b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nand2b_2 fixed cell. +def sky130_fd_sc_hd__lpflow_inputisolatch_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputisolatch_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand2b_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputisolatch_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand2b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputisolatch/sky130_fd_sc_hd__lpflow_inputisolatch_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputisolatch_1") @cell -def sky130_fd_sc_hs__nand2b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nand2b_4 fixed cell. +def sky130_fd_sc_hd__nand3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand2b_4() + c = sky130.components.sky130_fd_sc_hd__nand3_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand2b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand3/sky130_fd_sc_hd__nand3_1.gds", cellname="sky130_fd_sc_hd__nand3_1") @cell -def sky130_fd_sc_hs__nand3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nand3_1 fixed cell. +def sky130_fd_sc_hd__nand3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand3_1() + c = sky130.components.sky130_fd_sc_hd__nand3_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand3/sky130_fd_sc_hd__nand3_4.gds", cellname="sky130_fd_sc_hd__nand3_4") @cell -def sky130_fd_sc_hs__nand3_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nand3_2 fixed cell. +def sky130_fd_sc_hd__nand3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand3_2() + c = sky130.components.sky130_fd_sc_hd__nand3_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand3_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand3/sky130_fd_sc_hd__nand3_2.gds", cellname="sky130_fd_sc_hd__nand3_2") @cell -def sky130_fd_sc_hs__nand3_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nand3_4 fixed cell. +def sky130_fd_sc_hd__a2bb2oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand3_4() + c = sky130.components.sky130_fd_sc_hd__a2bb2oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand3_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2bb2oi/sky130_fd_sc_hd__a2bb2oi_1.gds", cellname="sky130_fd_sc_hd__a2bb2oi_1") @cell -def sky130_fd_sc_hs__nand3b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nand3b_1 fixed cell. +def sky130_fd_sc_hd__a2bb2oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand3b_1() + c = sky130.components.sky130_fd_sc_hd__a2bb2oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand3b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2bb2oi/sky130_fd_sc_hd__a2bb2oi_4.gds", cellname="sky130_fd_sc_hd__a2bb2oi_4") @cell -def sky130_fd_sc_hs__nand3b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nand3b_2 fixed cell. +def sky130_fd_sc_hd__a2bb2oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand3b_2() + c = sky130.components.sky130_fd_sc_hd__a2bb2oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand3b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2bb2oi/sky130_fd_sc_hd__a2bb2oi_2.gds", cellname="sky130_fd_sc_hd__a2bb2oi_2") @cell -def sky130_fd_sc_hs__nand3b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nand3b_4 fixed cell. +def sky130_fd_sc_hd__sdfbbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfbbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand3b_4() + c = sky130.components.sky130_fd_sc_hd__sdfbbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand3b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfbbp/sky130_fd_sc_hd__sdfbbp_1.gds", cellname="sky130_fd_sc_hd__sdfbbp_1") @cell -def sky130_fd_sc_hs__nand4_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nand4_1 fixed cell. +def sky130_fd_sc_hd__sedfxtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand4_1() + c = sky130.components.sky130_fd_sc_hd__sedfxtp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand4_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sedfxtp/sky130_fd_sc_hd__sedfxtp_4.gds", cellname="sky130_fd_sc_hd__sedfxtp_4") @cell -def sky130_fd_sc_hs__nand4_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nand4_2 fixed cell. +def sky130_fd_sc_hd__sedfxtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand4_2() + c = sky130.components.sky130_fd_sc_hd__sedfxtp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand4_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sedfxtp/sky130_fd_sc_hd__sedfxtp_2.gds", cellname="sky130_fd_sc_hd__sedfxtp_2") @cell -def sky130_fd_sc_hs__nand4_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nand4_4 fixed cell. +def sky130_fd_sc_hd__sedfxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand4_4() + c = sky130.components.sky130_fd_sc_hd__sedfxtp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand4_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sedfxtp/sky130_fd_sc_hd__sedfxtp_1.gds", cellname="sky130_fd_sc_hd__sedfxtp_1") @cell -def sky130_fd_sc_hs__nand4b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nand4b_1 fixed cell. +def sky130_fd_sc_hd__nor4bb_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand4b_1() + c = sky130.components.sky130_fd_sc_hd__nor4bb_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand4b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor4bb/sky130_fd_sc_hd__nor4bb_2.gds", cellname="sky130_fd_sc_hd__nor4bb_2") @cell -def sky130_fd_sc_hs__nand4b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nand4b_2 fixed cell. +def sky130_fd_sc_hd__nor4bb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand4b_2() + c = sky130.components.sky130_fd_sc_hd__nor4bb_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand4b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor4bb/sky130_fd_sc_hd__nor4bb_1.gds", cellname="sky130_fd_sc_hd__nor4bb_1") @cell -def sky130_fd_sc_hs__nand4b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nand4b_4 fixed cell. +def sky130_fd_sc_hd__nor4bb_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand4b_4() + c = sky130.components.sky130_fd_sc_hd__nor4bb_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand4b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor4bb/sky130_fd_sc_hd__nor4bb_4.gds", cellname="sky130_fd_sc_hd__nor4bb_4") @cell -def sky130_fd_sc_hs__nand4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nand4bb_1 fixed cell. +def sky130_fd_sc_hd__buf_8() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand4bb_1() + c = sky130.components.sky130_fd_sc_hd__buf_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand4bb_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_8.gds", cellname="sky130_fd_sc_hd__buf_8") @cell -def sky130_fd_sc_hs__nand4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nand4bb_2 fixed cell. +def sky130_fd_sc_hd__buf_2() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand4bb_2() + c = sky130.components.sky130_fd_sc_hd__buf_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand4bb_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_2.gds", cellname="sky130_fd_sc_hd__buf_2") @cell -def sky130_fd_sc_hs__nand4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nand4bb_4 fixed cell. +def sky130_fd_sc_hd__buf_6() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nand4bb_4() + c = sky130.components.sky130_fd_sc_hd__buf_6() c.plot() """ - return import_gds("sky130_fd_sc_hs__nand4bb_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_6.gds", cellname="sky130_fd_sc_hd__buf_6") @cell -def sky130_fd_sc_hs__nor2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nor2_1 fixed cell. +def sky130_fd_sc_hd__buf_16() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor2_1() + c = sky130.components.sky130_fd_sc_hd__buf_16() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_16.gds", cellname="sky130_fd_sc_hd__buf_16") @cell -def sky130_fd_sc_hs__nor2_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nor2_2 fixed cell. +def sky130_fd_sc_hd__buf_1() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor2_2() + c = sky130.components.sky130_fd_sc_hd__buf_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor2_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_1.gds", cellname="sky130_fd_sc_hd__buf_1") @cell -def sky130_fd_sc_hs__nor2_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nor2_4 fixed cell. +def sky130_fd_sc_hd__buf_4() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor2_4() + c = sky130.components.sky130_fd_sc_hd__buf_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor2_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_4.gds", cellname="sky130_fd_sc_hd__buf_4") @cell -def sky130_fd_sc_hs__nor2_8() -> gf.Component: - """Returns sky130_fd_sc_hs__nor2_8 fixed cell. +def sky130_fd_sc_hd__buf_12() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor2_8() + c = sky130.components.sky130_fd_sc_hd__buf_12() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor2_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_12.gds", cellname="sky130_fd_sc_hd__buf_12") @cell -def sky130_fd_sc_hs__nor2b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nor2b_1 fixed cell. +def sky130_fd_sc_hd__or2b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor2b_1() + c = sky130.components.sky130_fd_sc_hd__or2b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor2b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or2b/sky130_fd_sc_hd__or2b_1.gds", cellname="sky130_fd_sc_hd__or2b_1") @cell -def sky130_fd_sc_hs__nor2b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nor2b_2 fixed cell. +def sky130_fd_sc_hd__or2b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor2b_2() + c = sky130.components.sky130_fd_sc_hd__or2b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor2b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or2b/sky130_fd_sc_hd__or2b_2.gds", cellname="sky130_fd_sc_hd__or2b_2") @cell -def sky130_fd_sc_hs__nor2b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nor2b_4 fixed cell. +def sky130_fd_sc_hd__or2b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor2b_4() + c = sky130.components.sky130_fd_sc_hd__or2b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor2b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or2b/sky130_fd_sc_hd__or2b_4.gds", cellname="sky130_fd_sc_hd__or2b_4") @cell -def sky130_fd_sc_hs__nor3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nor3_1 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor3_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_hl_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4") @cell -def sky130_fd_sc_hs__nor3_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nor3_2 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor3_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor3_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_hl_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1") @cell -def sky130_fd_sc_hs__nor3_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nor3_4 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor3_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor3_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_hl_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2") @cell -def sky130_fd_sc_hs__nor3b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nor3b_1 fixed cell. +def sky130_fd_sc_hd__and2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor3b_1() + c = sky130.components.sky130_fd_sc_hd__and2_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor3b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_1.gds", cellname="sky130_fd_sc_hd__and2_1") @cell -def sky130_fd_sc_hs__nor3b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nor3b_2 fixed cell. +def sky130_fd_sc_hd__and2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor3b_2() + c = sky130.components.sky130_fd_sc_hd__and2_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor3b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_2.gds", cellname="sky130_fd_sc_hd__and2_2") @cell -def sky130_fd_sc_hs__nor3b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nor3b_4 fixed cell. +def sky130_fd_sc_hd__and2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor3b_4() + c = sky130.components.sky130_fd_sc_hd__and2_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor3b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_4.gds", cellname="sky130_fd_sc_hd__and2_4") @cell -def sky130_fd_sc_hs__nor4_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nor4_1 fixed cell. +def sky130_fd_sc_hd__and2_0() -> gf.Component: + """Returns sky130_fd_sc_hd__and2_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor4_1() + c = sky130.components.sky130_fd_sc_hd__and2_0() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor4_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_0.gds", cellname="sky130_fd_sc_hd__and2_0") @cell -def sky130_fd_sc_hs__nor4_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nor4_2 fixed cell. +def sky130_fd_sc_hd__and3b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor4_2() + c = sky130.components.sky130_fd_sc_hd__and3b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor4_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and3b/sky130_fd_sc_hd__and3b_1.gds", cellname="sky130_fd_sc_hd__and3b_1") @cell -def sky130_fd_sc_hs__nor4_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nor4_4 fixed cell. +def sky130_fd_sc_hd__and3b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor4_4() + c = sky130.components.sky130_fd_sc_hd__and3b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor4_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and3b/sky130_fd_sc_hd__and3b_2.gds", cellname="sky130_fd_sc_hd__and3b_2") @cell -def sky130_fd_sc_hs__nor4b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nor4b_1 fixed cell. +def sky130_fd_sc_hd__and3b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor4b_1() + c = sky130.components.sky130_fd_sc_hd__and3b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor4b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and3b/sky130_fd_sc_hd__and3b_4.gds", cellname="sky130_fd_sc_hd__and3b_4") @cell -def sky130_fd_sc_hs__nor4b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nor4b_2 fixed cell. +def sky130_fd_sc_hd__a32o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a32o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor4b_2() + c = sky130.components.sky130_fd_sc_hd__a32o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor4b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a32o/sky130_fd_sc_hd__a32o_1.gds", cellname="sky130_fd_sc_hd__a32o_1") @cell -def sky130_fd_sc_hs__nor4b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nor4b_4 fixed cell. +def sky130_fd_sc_hd__a32o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a32o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor4b_4() + c = sky130.components.sky130_fd_sc_hd__a32o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor4b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a32o/sky130_fd_sc_hd__a32o_4.gds", cellname="sky130_fd_sc_hd__a32o_4") @cell -def sky130_fd_sc_hs__nor4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hs__nor4bb_1 fixed cell. +def sky130_fd_sc_hd__a32o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a32o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor4bb_1() + c = sky130.components.sky130_fd_sc_hd__a32o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor4bb_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a32o/sky130_fd_sc_hd__a32o_2.gds", cellname="sky130_fd_sc_hd__a32o_2") @cell -def sky130_fd_sc_hs__nor4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hs__nor4bb_2 fixed cell. +def sky130_fd_sc_hd__nand4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor4bb_2() + c = sky130.components.sky130_fd_sc_hd__nand4_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor4bb_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand4/sky130_fd_sc_hd__nand4_4.gds", cellname="sky130_fd_sc_hd__nand4_4") @cell -def sky130_fd_sc_hs__nor4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hs__nor4bb_4 fixed cell. +def sky130_fd_sc_hd__nand4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__nor4bb_4() + c = sky130.components.sky130_fd_sc_hd__nand4_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__nor4bb_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand4/sky130_fd_sc_hd__nand4_1.gds", cellname="sky130_fd_sc_hd__nand4_1") @cell -def sky130_fd_sc_hs__o2111a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o2111a_1 fixed cell. +def sky130_fd_sc_hd__nand4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2111a_1() + c = sky130.components.sky130_fd_sc_hd__nand4_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2111a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand4/sky130_fd_sc_hd__nand4_2.gds", cellname="sky130_fd_sc_hd__nand4_2") @cell -def sky130_fd_sc_hs__o2111a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o2111a_2 fixed cell. +def sky130_fd_sc_hd__nand2b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2111a_2() + c = sky130.components.sky130_fd_sc_hd__nand2b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2111a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand2b/sky130_fd_sc_hd__nand2b_1.gds", cellname="sky130_fd_sc_hd__nand2b_1") @cell -def sky130_fd_sc_hs__o2111a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o2111a_4 fixed cell. +def sky130_fd_sc_hd__nand2b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2111a_4() + c = sky130.components.sky130_fd_sc_hd__nand2b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2111a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand2b/sky130_fd_sc_hd__nand2b_2.gds", cellname="sky130_fd_sc_hd__nand2b_2") @cell -def sky130_fd_sc_hs__o2111ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o2111ai_1 fixed cell. +def sky130_fd_sc_hd__nand2b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2111ai_1() + c = sky130.components.sky130_fd_sc_hd__nand2b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2111ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand2b/sky130_fd_sc_hd__nand2b_4.gds", cellname="sky130_fd_sc_hd__nand2b_4") @cell -def sky130_fd_sc_hs__o2111ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o2111ai_2 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_8() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2111ai_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2111ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_8.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_8") @cell -def sky130_fd_sc_hs__o2111ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o2111ai_4 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2111ai_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2111ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_4.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_4") @cell -def sky130_fd_sc_hs__o211a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o211a_1 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o211a_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o211a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_2.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_2") @cell -def sky130_fd_sc_hs__o211a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o211a_2 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_16() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o211a_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_16() c.plot() """ - return import_gds("sky130_fd_sc_hs__o211a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_16.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_16") @cell -def sky130_fd_sc_hs__o211a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o211a_4 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o211a_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o211a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_1.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_1") @cell -def sky130_fd_sc_hs__o211ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o211ai_1 fixed cell. +def sky130_fd_sc_hd__and3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o211ai_1() + c = sky130.components.sky130_fd_sc_hd__and3_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o211ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and3/sky130_fd_sc_hd__and3_4.gds", cellname="sky130_fd_sc_hd__and3_4") @cell -def sky130_fd_sc_hs__o211ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o211ai_2 fixed cell. +def sky130_fd_sc_hd__and3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o211ai_2() + c = sky130.components.sky130_fd_sc_hd__and3_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o211ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and3/sky130_fd_sc_hd__and3_1.gds", cellname="sky130_fd_sc_hd__and3_1") @cell -def sky130_fd_sc_hs__o211ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o211ai_4 fixed cell. +def sky130_fd_sc_hd__and3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o211ai_4() + c = sky130.components.sky130_fd_sc_hd__and3_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o211ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and3/sky130_fd_sc_hd__and3_2.gds", cellname="sky130_fd_sc_hd__and3_2") @cell -def sky130_fd_sc_hs__o21a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o21a_1 fixed cell. +def sky130_fd_sc_hd__o2111a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21a_1() + c = sky130.components.sky130_fd_sc_hd__o2111a_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2111a/sky130_fd_sc_hd__o2111a_1.gds", cellname="sky130_fd_sc_hd__o2111a_1") @cell -def sky130_fd_sc_hs__o21a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o21a_2 fixed cell. +def sky130_fd_sc_hd__o2111a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21a_2() + c = sky130.components.sky130_fd_sc_hd__o2111a_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2111a/sky130_fd_sc_hd__o2111a_4.gds", cellname="sky130_fd_sc_hd__o2111a_4") @cell -def sky130_fd_sc_hs__o21a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o21a_4 fixed cell. +def sky130_fd_sc_hd__o2111a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21a_4() + c = sky130.components.sky130_fd_sc_hd__o2111a_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2111a/sky130_fd_sc_hd__o2111a_2.gds", cellname="sky130_fd_sc_hd__o2111a_2") @cell -def sky130_fd_sc_hs__o21ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o21ai_1 fixed cell. +def sky130_fd_sc_hd__a311o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a311o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21ai_1() + c = sky130.components.sky130_fd_sc_hd__a311o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a311o/sky130_fd_sc_hd__a311o_4.gds", cellname="sky130_fd_sc_hd__a311o_4") @cell -def sky130_fd_sc_hs__o21ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o21ai_2 fixed cell. +def sky130_fd_sc_hd__a311o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a311o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21ai_2() + c = sky130.components.sky130_fd_sc_hd__a311o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a311o/sky130_fd_sc_hd__a311o_2.gds", cellname="sky130_fd_sc_hd__a311o_2") @cell -def sky130_fd_sc_hs__o21ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o21ai_4 fixed cell. +def sky130_fd_sc_hd__a311o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a311o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21ai_4() + c = sky130.components.sky130_fd_sc_hd__a311o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a311o/sky130_fd_sc_hd__a311o_1.gds", cellname="sky130_fd_sc_hd__a311o_1") @cell -def sky130_fd_sc_hs__o21ba_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o21ba_1 fixed cell. +def sky130_fd_sc_hd__fa_4() -> gf.Component: + """Returns sky130_fd_sc_hd__fa_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21ba_1() + c = sky130.components.sky130_fd_sc_hd__fa_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21ba_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fa/sky130_fd_sc_hd__fa_4.gds", cellname="sky130_fd_sc_hd__fa_4") @cell -def sky130_fd_sc_hs__o21ba_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o21ba_2 fixed cell. +def sky130_fd_sc_hd__fa_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fa_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21ba_2() + c = sky130.components.sky130_fd_sc_hd__fa_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21ba_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fa/sky130_fd_sc_hd__fa_1.gds", cellname="sky130_fd_sc_hd__fa_1") @cell -def sky130_fd_sc_hs__o21ba_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o21ba_4 fixed cell. +def sky130_fd_sc_hd__fa_2() -> gf.Component: + """Returns sky130_fd_sc_hd__fa_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21ba_4() + c = sky130.components.sky130_fd_sc_hd__fa_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21ba_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fa/sky130_fd_sc_hd__fa_2.gds", cellname="sky130_fd_sc_hd__fa_2") @cell -def sky130_fd_sc_hs__o21bai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o21bai_1 fixed cell. +def sky130_fd_sc_hd__o32ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o32ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21bai_1() + c = sky130.components.sky130_fd_sc_hd__o32ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21bai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o32ai/sky130_fd_sc_hd__o32ai_1.gds", cellname="sky130_fd_sc_hd__o32ai_1") @cell -def sky130_fd_sc_hs__o21bai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o21bai_2 fixed cell. +def sky130_fd_sc_hd__o32ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o32ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21bai_2() + c = sky130.components.sky130_fd_sc_hd__o32ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21bai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o32ai/sky130_fd_sc_hd__o32ai_2.gds", cellname="sky130_fd_sc_hd__o32ai_2") @cell -def sky130_fd_sc_hs__o21bai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o21bai_4 fixed cell. +def sky130_fd_sc_hd__o32ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o32ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o21bai_4() + c = sky130.components.sky130_fd_sc_hd__o32ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o21bai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o32ai/sky130_fd_sc_hd__o32ai_4.gds", cellname="sky130_fd_sc_hd__o32ai_4") @cell -def sky130_fd_sc_hs__o221a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o221a_1 fixed cell. +def sky130_fd_sc_hd__a2bb2o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o221a_1() + c = sky130.components.sky130_fd_sc_hd__a2bb2o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o221a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2bb2o/sky130_fd_sc_hd__a2bb2o_4.gds", cellname="sky130_fd_sc_hd__a2bb2o_4") @cell -def sky130_fd_sc_hs__o221a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o221a_2 fixed cell. +def sky130_fd_sc_hd__a2bb2o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o221a_2() + c = sky130.components.sky130_fd_sc_hd__a2bb2o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o221a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2bb2o/sky130_fd_sc_hd__a2bb2o_1.gds", cellname="sky130_fd_sc_hd__a2bb2o_1") @cell -def sky130_fd_sc_hs__o221a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o221a_4 fixed cell. +def sky130_fd_sc_hd__a2bb2o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o221a_4() + c = sky130.components.sky130_fd_sc_hd__a2bb2o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o221a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2bb2o/sky130_fd_sc_hd__a2bb2o_2.gds", cellname="sky130_fd_sc_hd__a2bb2o_2") @cell -def sky130_fd_sc_hs__o221ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o221ai_1 fixed cell. +def sky130_fd_sc_hd__lpflow_bleeder_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_bleeder_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o221ai_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_bleeder_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o221ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_bleeder/sky130_fd_sc_hd__lpflow_bleeder_1.gds", cellname="sky130_fd_sc_hd__lpflow_bleeder_1") @cell -def sky130_fd_sc_hs__o221ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o221ai_2 fixed cell. +def sky130_fd_sc_hd__sedfxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o221ai_2() + c = sky130.components.sky130_fd_sc_hd__sedfxbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o221ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sedfxbp/sky130_fd_sc_hd__sedfxbp_1.gds", cellname="sky130_fd_sc_hd__sedfxbp_1") @cell -def sky130_fd_sc_hs__o221ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o221ai_4 fixed cell. +def sky130_fd_sc_hd__sedfxbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o221ai_4() + c = sky130.components.sky130_fd_sc_hd__sedfxbp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o221ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sedfxbp/sky130_fd_sc_hd__sedfxbp_2.gds", cellname="sky130_fd_sc_hd__sedfxbp_2") @cell -def sky130_fd_sc_hs__o22a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o22a_1 fixed cell. +def sky130_fd_sc_hd__nor3b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o22a_1() + c = sky130.components.sky130_fd_sc_hd__nor3b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o22a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor3b/sky130_fd_sc_hd__nor3b_2.gds", cellname="sky130_fd_sc_hd__nor3b_2") @cell -def sky130_fd_sc_hs__o22a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o22a_2 fixed cell. +def sky130_fd_sc_hd__nor3b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o22a_2() + c = sky130.components.sky130_fd_sc_hd__nor3b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o22a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor3b/sky130_fd_sc_hd__nor3b_1.gds", cellname="sky130_fd_sc_hd__nor3b_1") @cell -def sky130_fd_sc_hs__o22a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o22a_4 fixed cell. +def sky130_fd_sc_hd__nor3b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o22a_4() + c = sky130.components.sky130_fd_sc_hd__nor3b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o22a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor3b/sky130_fd_sc_hd__nor3b_4.gds", cellname="sky130_fd_sc_hd__nor3b_4") @cell -def sky130_fd_sc_hs__o22ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o22ai_1 fixed cell. +def sky130_fd_sc_hd__a31oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a31oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o22ai_1() + c = sky130.components.sky130_fd_sc_hd__a31oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o22ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a31oi/sky130_fd_sc_hd__a31oi_2.gds", cellname="sky130_fd_sc_hd__a31oi_2") @cell -def sky130_fd_sc_hs__o22ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o22ai_2 fixed cell. +def sky130_fd_sc_hd__a31oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a31oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o22ai_2() + c = sky130.components.sky130_fd_sc_hd__a31oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o22ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a31oi/sky130_fd_sc_hd__a31oi_4.gds", cellname="sky130_fd_sc_hd__a31oi_4") @cell -def sky130_fd_sc_hs__o22ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o22ai_4 fixed cell. +def sky130_fd_sc_hd__a31oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a31oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o22ai_4() + c = sky130.components.sky130_fd_sc_hd__a31oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o22ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a31oi/sky130_fd_sc_hd__a31oi_1.gds", cellname="sky130_fd_sc_hd__a31oi_1") @cell -def sky130_fd_sc_hs__o2bb2a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o2bb2a_1 fixed cell. +def sky130_fd_sc_hd__xor3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__xor3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2bb2a_1() + c = sky130.components.sky130_fd_sc_hd__xor3_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2bb2a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xor3/sky130_fd_sc_hd__xor3_4.gds", cellname="sky130_fd_sc_hd__xor3_4") @cell -def sky130_fd_sc_hs__o2bb2a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o2bb2a_2 fixed cell. +def sky130_fd_sc_hd__xor3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__xor3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2bb2a_2() + c = sky130.components.sky130_fd_sc_hd__xor3_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2bb2a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xor3/sky130_fd_sc_hd__xor3_2.gds", cellname="sky130_fd_sc_hd__xor3_2") @cell -def sky130_fd_sc_hs__o2bb2a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o2bb2a_4 fixed cell. +def sky130_fd_sc_hd__xor3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__xor3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2bb2a_4() + c = sky130.components.sky130_fd_sc_hd__xor3_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2bb2a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xor3/sky130_fd_sc_hd__xor3_1.gds", cellname="sky130_fd_sc_hd__xor3_1") @cell -def sky130_fd_sc_hs__o2bb2ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o2bb2ai_1 fixed cell. +def sky130_fd_sc_hd__o41ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o41ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2bb2ai_1() + c = sky130.components.sky130_fd_sc_hd__o41ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2bb2ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o41ai/sky130_fd_sc_hd__o41ai_1.gds", cellname="sky130_fd_sc_hd__o41ai_1") @cell -def sky130_fd_sc_hs__o2bb2ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o2bb2ai_2 fixed cell. +def sky130_fd_sc_hd__o41ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o41ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2bb2ai_2() + c = sky130.components.sky130_fd_sc_hd__o41ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2bb2ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o41ai/sky130_fd_sc_hd__o41ai_4.gds", cellname="sky130_fd_sc_hd__o41ai_4") @cell -def sky130_fd_sc_hs__o2bb2ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o2bb2ai_4 fixed cell. +def sky130_fd_sc_hd__o41ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o41ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o2bb2ai_4() + c = sky130.components.sky130_fd_sc_hd__o41ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o2bb2ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o41ai/sky130_fd_sc_hd__o41ai_2.gds", cellname="sky130_fd_sc_hd__o41ai_2") @cell -def sky130_fd_sc_hs__o311a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o311a_1 fixed cell. +def sky130_fd_sc_hd__fill_4() -> gf.Component: + """Returns sky130_fd_sc_hd__fill_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o311a_1() + c = sky130.components.sky130_fd_sc_hd__fill_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o311a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_4.gds", cellname="sky130_fd_sc_hd__fill_4") @cell -def sky130_fd_sc_hs__o311a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o311a_2 fixed cell. +def sky130_fd_sc_hd__fill_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fill_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o311a_2() + c = sky130.components.sky130_fd_sc_hd__fill_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o311a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_1.gds", cellname="sky130_fd_sc_hd__fill_1") @cell -def sky130_fd_sc_hs__o311a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o311a_4 fixed cell. +def sky130_fd_sc_hd__fill_8() -> gf.Component: + """Returns sky130_fd_sc_hd__fill_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o311a_4() + c = sky130.components.sky130_fd_sc_hd__fill_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__o311a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_8.gds", cellname="sky130_fd_sc_hd__fill_8") @cell -def sky130_fd_sc_hs__o311ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o311ai_1 fixed cell. +def sky130_fd_sc_hd__fill_2() -> gf.Component: + """Returns sky130_fd_sc_hd__fill_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o311ai_1() + c = sky130.components.sky130_fd_sc_hd__fill_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o311ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_2.gds", cellname="sky130_fd_sc_hd__fill_2") @cell -def sky130_fd_sc_hs__o311ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o311ai_2 fixed cell. +def sky130_fd_sc_hd__sdfrtn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o311ai_2() + c = sky130.components.sky130_fd_sc_hd__sdfrtn_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o311ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfrtn/sky130_fd_sc_hd__sdfrtn_1.gds", cellname="sky130_fd_sc_hd__sdfrtn_1") @cell -def sky130_fd_sc_hs__o311ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o311ai_4 fixed cell. +def sky130_fd_sc_hd__decap_3() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o311ai_4() + c = sky130.components.sky130_fd_sc_hd__decap_3() c.plot() """ - return import_gds("sky130_fd_sc_hs__o311ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_3.gds", cellname="sky130_fd_sc_hd__decap_3") @cell -def sky130_fd_sc_hs__o31a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o31a_1 fixed cell. +def sky130_fd_sc_hd__decap_8() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o31a_1() + c = sky130.components.sky130_fd_sc_hd__decap_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__o31a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_8.gds", cellname="sky130_fd_sc_hd__decap_8") @cell -def sky130_fd_sc_hs__o31a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o31a_2 fixed cell. +def sky130_fd_sc_hd__decap_4() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o31a_2() + c = sky130.components.sky130_fd_sc_hd__decap_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o31a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_4.gds", cellname="sky130_fd_sc_hd__decap_4") @cell -def sky130_fd_sc_hs__o31a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o31a_4 fixed cell. +def sky130_fd_sc_hd__decap_12() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o31a_4() + c = sky130.components.sky130_fd_sc_hd__decap_12() c.plot() """ - return import_gds("sky130_fd_sc_hs__o31a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_12.gds", cellname="sky130_fd_sc_hd__decap_12") @cell -def sky130_fd_sc_hs__o31ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o31ai_1 fixed cell. +def sky130_fd_sc_hd__decap_6() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o31ai_1() + c = sky130.components.sky130_fd_sc_hd__decap_6() c.plot() """ - return import_gds("sky130_fd_sc_hs__o31ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_6.gds", cellname="sky130_fd_sc_hd__decap_6") @cell -def sky130_fd_sc_hs__o31ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o31ai_2 fixed cell. +def sky130_fd_sc_hd__inv_1() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o31ai_2() + c = sky130.components.sky130_fd_sc_hd__inv_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o31ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_1.gds", cellname="sky130_fd_sc_hd__inv_1") @cell -def sky130_fd_sc_hs__o31ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o31ai_4 fixed cell. +def sky130_fd_sc_hd__inv_12() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o31ai_4() + c = sky130.components.sky130_fd_sc_hd__inv_12() c.plot() """ - return import_gds("sky130_fd_sc_hs__o31ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_12.gds", cellname="sky130_fd_sc_hd__inv_12") @cell -def sky130_fd_sc_hs__o32a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o32a_1 fixed cell. +def sky130_fd_sc_hd__inv_6() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o32a_1() + c = sky130.components.sky130_fd_sc_hd__inv_6() c.plot() """ - return import_gds("sky130_fd_sc_hs__o32a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_6.gds", cellname="sky130_fd_sc_hd__inv_6") @cell -def sky130_fd_sc_hs__o32a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o32a_2 fixed cell. +def sky130_fd_sc_hd__inv_16() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o32a_2() + c = sky130.components.sky130_fd_sc_hd__inv_16() c.plot() """ - return import_gds("sky130_fd_sc_hs__o32a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_16.gds", cellname="sky130_fd_sc_hd__inv_16") @cell -def sky130_fd_sc_hs__o32a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o32a_4 fixed cell. +def sky130_fd_sc_hd__inv_4() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o32a_4() + c = sky130.components.sky130_fd_sc_hd__inv_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o32a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_4.gds", cellname="sky130_fd_sc_hd__inv_4") @cell -def sky130_fd_sc_hs__o32ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o32ai_1 fixed cell. +def sky130_fd_sc_hd__inv_8() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o32ai_1() + c = sky130.components.sky130_fd_sc_hd__inv_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__o32ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_8.gds", cellname="sky130_fd_sc_hd__inv_8") @cell -def sky130_fd_sc_hs__o32ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o32ai_2 fixed cell. +def sky130_fd_sc_hd__inv_2() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o32ai_2() + c = sky130.components.sky130_fd_sc_hd__inv_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o32ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_2.gds", cellname="sky130_fd_sc_hd__inv_2") @cell -def sky130_fd_sc_hs__o32ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o32ai_4 fixed cell. +def sky130_fd_sc_hd__macro_sparecell() -> gf.Component: + """Returns sky130_fd_sc_hd__macro_sparecell fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o32ai_4() + c = sky130.components.sky130_fd_sc_hd__macro_sparecell() c.plot() """ - return import_gds("sky130_fd_sc_hs__o32ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/macro_sparecell/sky130_fd_sc_hd__macro_sparecell.gds", cellname="sky130_fd_sc_hd__macro_sparecell") @cell -def sky130_fd_sc_hs__o41a_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o41a_1 fixed cell. +def sky130_fd_sc_hd__and2b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o41a_1() + c = sky130.components.sky130_fd_sc_hd__and2b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o41a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and2b/sky130_fd_sc_hd__and2b_4.gds", cellname="sky130_fd_sc_hd__and2b_4") @cell -def sky130_fd_sc_hs__o41a_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o41a_2 fixed cell. +def sky130_fd_sc_hd__and2b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o41a_2() + c = sky130.components.sky130_fd_sc_hd__and2b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o41a_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and2b/sky130_fd_sc_hd__and2b_1.gds", cellname="sky130_fd_sc_hd__and2b_1") @cell -def sky130_fd_sc_hs__o41a_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o41a_4 fixed cell. +def sky130_fd_sc_hd__and2b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o41a_4() + c = sky130.components.sky130_fd_sc_hd__and2b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o41a_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and2b/sky130_fd_sc_hd__and2b_2.gds", cellname="sky130_fd_sc_hd__and2b_2") @cell -def sky130_fd_sc_hs__o41ai_1() -> gf.Component: - """Returns sky130_fd_sc_hs__o41ai_1 fixed cell. +def sky130_fd_sc_hd__nand3b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o41ai_1() + c = sky130.components.sky130_fd_sc_hd__nand3b_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__o41ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand3b/sky130_fd_sc_hd__nand3b_2.gds", cellname="sky130_fd_sc_hd__nand3b_2") @cell -def sky130_fd_sc_hs__o41ai_2() -> gf.Component: - """Returns sky130_fd_sc_hs__o41ai_2 fixed cell. +def sky130_fd_sc_hd__nand3b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o41ai_2() + c = sky130.components.sky130_fd_sc_hd__nand3b_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__o41ai_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand3b/sky130_fd_sc_hd__nand3b_1.gds", cellname="sky130_fd_sc_hd__nand3b_1") @cell -def sky130_fd_sc_hs__o41ai_4() -> gf.Component: - """Returns sky130_fd_sc_hs__o41ai_4 fixed cell. +def sky130_fd_sc_hd__nand3b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__o41ai_4() + c = sky130.components.sky130_fd_sc_hd__nand3b_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__o41ai_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand3b/sky130_fd_sc_hd__nand3b_4.gds", cellname="sky130_fd_sc_hd__nand3b_4") @cell -def sky130_fd_sc_hs__or2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__or2_1 fixed cell. +def sky130_fd_sc_hd__dlrtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or2_1() + c = sky130.components.sky130_fd_sc_hd__dlrtp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__or2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrtp/sky130_fd_sc_hd__dlrtp_1.gds", cellname="sky130_fd_sc_hd__dlrtp_1") @cell -def sky130_fd_sc_hs__or2_2() -> gf.Component: - """Returns sky130_fd_sc_hs__or2_2 fixed cell. +def sky130_fd_sc_hd__dlrtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or2_2() + c = sky130.components.sky130_fd_sc_hd__dlrtp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__or2_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrtp/sky130_fd_sc_hd__dlrtp_4.gds", cellname="sky130_fd_sc_hd__dlrtp_4") @cell -def sky130_fd_sc_hs__or2_4() -> gf.Component: - """Returns sky130_fd_sc_hs__or2_4 fixed cell. +def sky130_fd_sc_hd__dlrtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or2_4() + c = sky130.components.sky130_fd_sc_hd__dlrtp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__or2_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrtp/sky130_fd_sc_hd__dlrtp_2.gds", cellname="sky130_fd_sc_hd__dlrtp_2") @cell -def sky130_fd_sc_hs__or2b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__or2b_1 fixed cell. +def sky130_fd_sc_hd__dfbbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfbbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or2b_1() + c = sky130.components.sky130_fd_sc_hd__dfbbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__or2b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfbbp/sky130_fd_sc_hd__dfbbp_1.gds", cellname="sky130_fd_sc_hd__dfbbp_1") @cell -def sky130_fd_sc_hs__or2b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__or2b_2 fixed cell. +def sky130_fd_sc_hd__probe_p_8() -> gf.Component: + """Returns sky130_fd_sc_hd__probe_p_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or2b_2() + c = sky130.components.sky130_fd_sc_hd__probe_p_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__or2b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/probe_p/sky130_fd_sc_hd__probe_p_8.gds", cellname="sky130_fd_sc_hd__probe_p_8") @cell -def sky130_fd_sc_hs__or2b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__or2b_4 fixed cell. +def sky130_fd_sc_hd__dlclkp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlclkp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or2b_4() + c = sky130.components.sky130_fd_sc_hd__dlclkp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__or2b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlclkp/sky130_fd_sc_hd__dlclkp_1.gds", cellname="sky130_fd_sc_hd__dlclkp_1") @cell -def sky130_fd_sc_hs__or3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__or3_1 fixed cell. +def sky130_fd_sc_hd__dlclkp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dlclkp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or3_1() + c = sky130.components.sky130_fd_sc_hd__dlclkp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__or3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlclkp/sky130_fd_sc_hd__dlclkp_4.gds", cellname="sky130_fd_sc_hd__dlclkp_4") @cell -def sky130_fd_sc_hs__or3_2() -> gf.Component: - """Returns sky130_fd_sc_hs__or3_2 fixed cell. +def sky130_fd_sc_hd__dlclkp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlclkp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or3_2() + c = sky130.components.sky130_fd_sc_hd__dlclkp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__or3_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlclkp/sky130_fd_sc_hd__dlclkp_2.gds", cellname="sky130_fd_sc_hd__dlclkp_2") @cell -def sky130_fd_sc_hs__or3_4() -> gf.Component: - """Returns sky130_fd_sc_hs__or3_4 fixed cell. +def sky130_fd_sc_hd__or4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or3_4() + c = sky130.components.sky130_fd_sc_hd__or4_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__or3_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or4/sky130_fd_sc_hd__or4_2.gds", cellname="sky130_fd_sc_hd__or4_2") @cell -def sky130_fd_sc_hs__or3b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__or3b_1 fixed cell. +def sky130_fd_sc_hd__or4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or3b_1() + c = sky130.components.sky130_fd_sc_hd__or4_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__or3b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or4/sky130_fd_sc_hd__or4_1.gds", cellname="sky130_fd_sc_hd__or4_1") @cell -def sky130_fd_sc_hs__or3b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__or3b_2 fixed cell. +def sky130_fd_sc_hd__or4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or3b_2() + c = sky130.components.sky130_fd_sc_hd__or4_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__or3b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or4/sky130_fd_sc_hd__or4_4.gds", cellname="sky130_fd_sc_hd__or4_4") @cell -def sky130_fd_sc_hs__or3b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__or3b_4 fixed cell. +def sky130_fd_sc_hd__o221a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o221a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or3b_4() + c = sky130.components.sky130_fd_sc_hd__o221a_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__or3b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o221a/sky130_fd_sc_hd__o221a_1.gds", cellname="sky130_fd_sc_hd__o221a_1") @cell -def sky130_fd_sc_hs__or4_1() -> gf.Component: - """Returns sky130_fd_sc_hs__or4_1 fixed cell. +def sky130_fd_sc_hd__o221a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o221a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or4_1() + c = sky130.components.sky130_fd_sc_hd__o221a_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__or4_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o221a/sky130_fd_sc_hd__o221a_4.gds", cellname="sky130_fd_sc_hd__o221a_4") @cell -def sky130_fd_sc_hs__or4_2() -> gf.Component: - """Returns sky130_fd_sc_hs__or4_2 fixed cell. +def sky130_fd_sc_hd__o221a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o221a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or4_2() + c = sky130.components.sky130_fd_sc_hd__o221a_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__or4_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o221a/sky130_fd_sc_hd__o221a_2.gds", cellname="sky130_fd_sc_hd__o221a_2") @cell -def sky130_fd_sc_hs__or4_4() -> gf.Component: - """Returns sky130_fd_sc_hs__or4_4 fixed cell. +def sky130_fd_sc_hd__nor3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or4_4() + c = sky130.components.sky130_fd_sc_hd__nor3_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__or4_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor3/sky130_fd_sc_hd__nor3_2.gds", cellname="sky130_fd_sc_hd__nor3_2") @cell -def sky130_fd_sc_hs__or4b_1() -> gf.Component: - """Returns sky130_fd_sc_hs__or4b_1 fixed cell. +def sky130_fd_sc_hd__nor3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or4b_1() + c = sky130.components.sky130_fd_sc_hd__nor3_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__or4b_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor3/sky130_fd_sc_hd__nor3_4.gds", cellname="sky130_fd_sc_hd__nor3_4") @cell -def sky130_fd_sc_hs__or4b_2() -> gf.Component: - """Returns sky130_fd_sc_hs__or4b_2 fixed cell. +def sky130_fd_sc_hd__nor3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or4b_2() + c = sky130.components.sky130_fd_sc_hd__nor3_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__or4b_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nor3/sky130_fd_sc_hd__nor3_1.gds", cellname="sky130_fd_sc_hd__nor3_1") @cell -def sky130_fd_sc_hs__or4b_4() -> gf.Component: - """Returns sky130_fd_sc_hs__or4b_4 fixed cell. +def sky130_fd_sc_hd__dfrtn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or4b_4() + c = sky130.components.sky130_fd_sc_hd__dfrtn_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__or4b_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfrtn/sky130_fd_sc_hd__dfrtn_1.gds", cellname="sky130_fd_sc_hd__dfrtn_1") @cell -def sky130_fd_sc_hs__or4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hs__or4bb_1 fixed cell. +def sky130_fd_sc_hd__sdfrbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or4bb_1() + c = sky130.components.sky130_fd_sc_hd__sdfrbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__or4bb_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfrbp/sky130_fd_sc_hd__sdfrbp_1.gds", cellname="sky130_fd_sc_hd__sdfrbp_1") @cell -def sky130_fd_sc_hs__or4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hs__or4bb_2 fixed cell. +def sky130_fd_sc_hd__sdfrbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or4bb_2() + c = sky130.components.sky130_fd_sc_hd__sdfrbp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__or4bb_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfrbp/sky130_fd_sc_hd__sdfrbp_2.gds", cellname="sky130_fd_sc_hd__sdfrbp_2") @cell -def sky130_fd_sc_hs__or4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hs__or4bb_4 fixed cell. +def sky130_fd_sc_hd__clkinvlp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinvlp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__or4bb_4() + c = sky130.components.sky130_fd_sc_hd__clkinvlp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__or4bb_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkinvlp/sky130_fd_sc_hd__clkinvlp_4.gds", cellname="sky130_fd_sc_hd__clkinvlp_4") @cell -def sky130_fd_sc_hs__sdfbbn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfbbn_1 fixed cell. +def sky130_fd_sc_hd__clkinvlp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinvlp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfbbn_1() + c = sky130.components.sky130_fd_sc_hd__clkinvlp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfbbn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkinvlp/sky130_fd_sc_hd__clkinvlp_2.gds", cellname="sky130_fd_sc_hd__clkinvlp_2") @cell -def sky130_fd_sc_hs__sdfbbn_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfbbn_2 fixed cell. +def sky130_fd_sc_hd__o41a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o41a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfbbn_2() + c = sky130.components.sky130_fd_sc_hd__o41a_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfbbn_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o41a/sky130_fd_sc_hd__o41a_4.gds", cellname="sky130_fd_sc_hd__o41a_4") @cell -def sky130_fd_sc_hs__sdfbbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfbbp_1 fixed cell. +def sky130_fd_sc_hd__o41a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o41a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfbbp_1() + c = sky130.components.sky130_fd_sc_hd__o41a_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfbbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o41a/sky130_fd_sc_hd__o41a_1.gds", cellname="sky130_fd_sc_hd__o41a_1") @cell -def sky130_fd_sc_hs__sdfrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfrbp_1 fixed cell. +def sky130_fd_sc_hd__o41a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o41a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfrbp_1() + c = sky130.components.sky130_fd_sc_hd__o41a_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfrbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o41a/sky130_fd_sc_hd__o41a_2.gds", cellname="sky130_fd_sc_hd__o41a_2") @cell -def sky130_fd_sc_hs__sdfrbp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfrbp_2 fixed cell. +def sky130_fd_sc_hd__o21a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o21a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfrbp_2() + c = sky130.components.sky130_fd_sc_hd__o21a_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfrbp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21a/sky130_fd_sc_hd__o21a_1.gds", cellname="sky130_fd_sc_hd__o21a_1") @cell -def sky130_fd_sc_hs__sdfrtn_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfrtn_1 fixed cell. +def sky130_fd_sc_hd__o21a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o21a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfrtn_1() + c = sky130.components.sky130_fd_sc_hd__o21a_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfrtn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21a/sky130_fd_sc_hd__o21a_4.gds", cellname="sky130_fd_sc_hd__o21a_4") @cell -def sky130_fd_sc_hs__sdfrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfrtp_1 fixed cell. +def sky130_fd_sc_hd__o21a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o21a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfrtp_1() + c = sky130.components.sky130_fd_sc_hd__o21a_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfrtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21a/sky130_fd_sc_hd__o21a_2.gds", cellname="sky130_fd_sc_hd__o21a_2") @cell -def sky130_fd_sc_hs__sdfrtp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfrtp_2 fixed cell. +def sky130_fd_sc_hd__or3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfrtp_2() + c = sky130.components.sky130_fd_sc_hd__or3_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfrtp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or3/sky130_fd_sc_hd__or3_4.gds", cellname="sky130_fd_sc_hd__or3_4") @cell -def sky130_fd_sc_hs__sdfrtp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfrtp_4 fixed cell. +def sky130_fd_sc_hd__or3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfrtp_4() + c = sky130.components.sky130_fd_sc_hd__or3_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfrtp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or3/sky130_fd_sc_hd__or3_1.gds", cellname="sky130_fd_sc_hd__or3_1") @cell -def sky130_fd_sc_hs__sdfsbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfsbp_1 fixed cell. +def sky130_fd_sc_hd__or3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfsbp_1() + c = sky130.components.sky130_fd_sc_hd__or3_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfsbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or3/sky130_fd_sc_hd__or3_2.gds", cellname="sky130_fd_sc_hd__or3_2") @cell -def sky130_fd_sc_hs__sdfsbp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfsbp_2 fixed cell. +def sky130_fd_sc_hd__dlxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfsbp_2() + c = sky130.components.sky130_fd_sc_hd__dlxbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfsbp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlxbp/sky130_fd_sc_hd__dlxbp_1.gds", cellname="sky130_fd_sc_hd__dlxbp_1") @cell -def sky130_fd_sc_hs__sdfstp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfstp_1 fixed cell. +def sky130_fd_sc_hd__bufbuf_16() -> gf.Component: + """Returns sky130_fd_sc_hd__bufbuf_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfstp_1() + c = sky130.components.sky130_fd_sc_hd__bufbuf_16() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfstp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/bufbuf/sky130_fd_sc_hd__bufbuf_16.gds", cellname="sky130_fd_sc_hd__bufbuf_16") @cell -def sky130_fd_sc_hs__sdfstp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfstp_2 fixed cell. +def sky130_fd_sc_hd__bufbuf_8() -> gf.Component: + """Returns sky130_fd_sc_hd__bufbuf_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfstp_2() + c = sky130.components.sky130_fd_sc_hd__bufbuf_8() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfstp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/bufbuf/sky130_fd_sc_hd__bufbuf_8.gds", cellname="sky130_fd_sc_hd__bufbuf_8") @cell -def sky130_fd_sc_hs__sdfstp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfstp_4 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s18_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s18_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfstp_4() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfstp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s18/sky130_fd_sc_hd__clkdlybuf4s18_2.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s18_2") @cell -def sky130_fd_sc_hs__sdfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfxbp_1 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s18_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s18_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfxbp_1() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfxbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s18/sky130_fd_sc_hd__clkdlybuf4s18_1.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s18_1") @cell -def sky130_fd_sc_hs__sdfxbp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfxbp_2 fixed cell. +def sky130_fd_sc_hd__sdfrtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfxbp_2() + c = sky130.components.sky130_fd_sc_hd__sdfrtp_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfxbp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfrtp/sky130_fd_sc_hd__sdfrtp_2.gds", cellname="sky130_fd_sc_hd__sdfrtp_2") @cell -def sky130_fd_sc_hs__sdfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfxtp_1 fixed cell. +def sky130_fd_sc_hd__sdfrtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfxtp_1() + c = sky130.components.sky130_fd_sc_hd__sdfrtp_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfxtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfrtp/sky130_fd_sc_hd__sdfrtp_1.gds", cellname="sky130_fd_sc_hd__sdfrtp_1") @cell -def sky130_fd_sc_hs__sdfxtp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfxtp_2 fixed cell. +def sky130_fd_sc_hd__sdfrtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfxtp_2() + c = sky130.components.sky130_fd_sc_hd__sdfrtp_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfxtp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfrtp/sky130_fd_sc_hd__sdfrtp_4.gds", cellname="sky130_fd_sc_hd__sdfrtp_4") @cell -def sky130_fd_sc_hs__sdfxtp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__sdfxtp_4 fixed cell. +def sky130_fd_sc_hd__a221o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a221o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdfxtp_4() + c = sky130.components.sky130_fd_sc_hd__a221o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdfxtp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a221o/sky130_fd_sc_hd__a221o_4.gds", cellname="sky130_fd_sc_hd__a221o_4") @cell -def sky130_fd_sc_hs__sdlclkp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sdlclkp_1 fixed cell. +def sky130_fd_sc_hd__a221o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a221o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdlclkp_1() + c = sky130.components.sky130_fd_sc_hd__a221o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdlclkp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a221o/sky130_fd_sc_hd__a221o_2.gds", cellname="sky130_fd_sc_hd__a221o_2") @cell -def sky130_fd_sc_hs__sdlclkp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sdlclkp_2 fixed cell. +def sky130_fd_sc_hd__a221o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a221o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdlclkp_2() + c = sky130.components.sky130_fd_sc_hd__a221o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdlclkp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a221o/sky130_fd_sc_hd__a221o_1.gds", cellname="sky130_fd_sc_hd__a221o_1") @cell -def sky130_fd_sc_hs__sdlclkp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__sdlclkp_4 fixed cell. +def sky130_fd_sc_hd__a31o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a31o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sdlclkp_4() + c = sky130.components.sky130_fd_sc_hd__a31o_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sdlclkp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a31o/sky130_fd_sc_hd__a31o_1.gds", cellname="sky130_fd_sc_hd__a31o_1") @cell -def sky130_fd_sc_hs__sedfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sedfxbp_1 fixed cell. +def sky130_fd_sc_hd__a31o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a31o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sedfxbp_1() + c = sky130.components.sky130_fd_sc_hd__a31o_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__sedfxbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a31o/sky130_fd_sc_hd__a31o_2.gds", cellname="sky130_fd_sc_hd__a31o_2") @cell -def sky130_fd_sc_hs__sedfxbp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sedfxbp_2 fixed cell. +def sky130_fd_sc_hd__a31o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a31o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sedfxbp_2() + c = sky130.components.sky130_fd_sc_hd__a31o_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__sedfxbp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a31o/sky130_fd_sc_hd__a31o_4.gds", cellname="sky130_fd_sc_hd__a31o_4") @cell -def sky130_fd_sc_hs__sedfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hs__sedfxtp_1 fixed cell. +def sky130_fd_sc_hd__fah_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fah_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sedfxtp_1() + c = sky130.components.sky130_fd_sc_hd__fah_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sedfxtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fah/sky130_fd_sc_hd__fah_1.gds", cellname="sky130_fd_sc_hd__fah_1") @cell -def sky130_fd_sc_hs__sedfxtp_2() -> gf.Component: - """Returns sky130_fd_sc_hs__sedfxtp_2 fixed cell. +def sky130_fd_sc_hd__sdfbbn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfbbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sedfxtp_2() + c = sky130.components.sky130_fd_sc_hd__sdfbbn_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__sedfxtp_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfbbn/sky130_fd_sc_hd__sdfbbn_1.gds", cellname="sky130_fd_sc_hd__sdfbbn_1") @cell -def sky130_fd_sc_hs__sedfxtp_4() -> gf.Component: - """Returns sky130_fd_sc_hs__sedfxtp_4 fixed cell. +def sky130_fd_sc_hd__sdfbbn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfbbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__sedfxtp_4() + c = sky130.components.sky130_fd_sc_hd__sdfbbn_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__sedfxtp_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfbbn/sky130_fd_sc_hd__sdfbbn_2.gds", cellname="sky130_fd_sc_hd__sdfbbn_2") @cell -def sky130_fd_sc_hs__tap_1() -> gf.Component: - """Returns sky130_fd_sc_hs__tap_1 fixed cell. +def sky130_fd_sc_hd__mux4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__mux4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__tap_1() + c = sky130.components.sky130_fd_sc_hd__mux4_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__tap_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux4/sky130_fd_sc_hd__mux4_4.gds", cellname="sky130_fd_sc_hd__mux4_4") @cell -def sky130_fd_sc_hs__tap_2() -> gf.Component: - """Returns sky130_fd_sc_hs__tap_2 fixed cell. +def sky130_fd_sc_hd__mux4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__mux4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__tap_2() + c = sky130.components.sky130_fd_sc_hd__mux4_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__tap_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux4/sky130_fd_sc_hd__mux4_1.gds", cellname="sky130_fd_sc_hd__mux4_1") @cell -def sky130_fd_sc_hs__tapmet1_2() -> gf.Component: - """Returns sky130_fd_sc_hs__tapmet1_2 fixed cell. +def sky130_fd_sc_hd__mux4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__mux4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__tapmet1_2() + c = sky130.components.sky130_fd_sc_hd__mux4_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__tapmet1_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/mux4/sky130_fd_sc_hd__mux4_2.gds", cellname="sky130_fd_sc_hd__mux4_2") @cell -def sky130_fd_sc_hs__tapvgnd2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__tapvgnd2_1 fixed cell. +def sky130_fd_sc_hd__xnor2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__tapvgnd2_1() + c = sky130.components.sky130_fd_sc_hd__xnor2_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__tapvgnd2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_1.gds", cellname="sky130_fd_sc_hd__xnor2_1") @cell -def sky130_fd_sc_hs__tapvgnd_1() -> gf.Component: - """Returns sky130_fd_sc_hs__tapvgnd_1 fixed cell. +def sky130_fd_sc_hd__xnor2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__tapvgnd_1() + c = sky130.components.sky130_fd_sc_hd__xnor2_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__tapvgnd_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_2.gds", cellname="sky130_fd_sc_hd__xnor2_2") @cell -def sky130_fd_sc_hs__tapvpwrvgnd_1() -> gf.Component: - """Returns sky130_fd_sc_hs__tapvpwrvgnd_1 fixed cell. +def sky130_fd_sc_hd__xnor2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__tapvpwrvgnd_1() + c = sky130.components.sky130_fd_sc_hd__xnor2_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__tapvpwrvgnd_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_4.gds", cellname="sky130_fd_sc_hd__xnor2_4") @cell -def sky130_fd_sc_hs__xnor2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__xnor2_1 fixed cell. +def sky130_fd_sc_hd__dlymetal6s2s_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlymetal6s2s_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xnor2_1() + c = sky130.components.sky130_fd_sc_hd__dlymetal6s2s_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__xnor2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlymetal6s2s/sky130_fd_sc_hd__dlymetal6s2s_1.gds", cellname="sky130_fd_sc_hd__dlymetal6s2s_1") @cell -def sky130_fd_sc_hs__xnor2_2() -> gf.Component: - """Returns sky130_fd_sc_hs__xnor2_2 fixed cell. +def sky130_fd_sc_hd__o2bb2ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xnor2_2() + c = sky130.components.sky130_fd_sc_hd__o2bb2ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__xnor2_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2bb2ai/sky130_fd_sc_hd__o2bb2ai_1.gds", cellname="sky130_fd_sc_hd__o2bb2ai_1") @cell -def sky130_fd_sc_hs__xnor2_4() -> gf.Component: - """Returns sky130_fd_sc_hs__xnor2_4 fixed cell. +def sky130_fd_sc_hd__o2bb2ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xnor2_4() + c = sky130.components.sky130_fd_sc_hd__o2bb2ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__xnor2_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2bb2ai/sky130_fd_sc_hd__o2bb2ai_4.gds", cellname="sky130_fd_sc_hd__o2bb2ai_4") @cell -def sky130_fd_sc_hs__xnor3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__xnor3_1 fixed cell. +def sky130_fd_sc_hd__o2bb2ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xnor3_1() + c = sky130.components.sky130_fd_sc_hd__o2bb2ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__xnor3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2bb2ai/sky130_fd_sc_hd__o2bb2ai_2.gds", cellname="sky130_fd_sc_hd__o2bb2ai_2") @cell -def sky130_fd_sc_hs__xnor3_2() -> gf.Component: - """Returns sky130_fd_sc_hs__xnor3_2 fixed cell. +def sky130_fd_sc_hd__and4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xnor3_2() + c = sky130.components.sky130_fd_sc_hd__and4_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__xnor3_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and4/sky130_fd_sc_hd__and4_2.gds", cellname="sky130_fd_sc_hd__and4_2") @cell -def sky130_fd_sc_hs__xnor3_4() -> gf.Component: - """Returns sky130_fd_sc_hs__xnor3_4 fixed cell. +def sky130_fd_sc_hd__and4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xnor3_4() + c = sky130.components.sky130_fd_sc_hd__and4_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__xnor3_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and4/sky130_fd_sc_hd__and4_1.gds", cellname="sky130_fd_sc_hd__and4_1") @cell -def sky130_fd_sc_hs__xor2_1() -> gf.Component: - """Returns sky130_fd_sc_hs__xor2_1 fixed cell. +def sky130_fd_sc_hd__and4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xor2_1() + c = sky130.components.sky130_fd_sc_hd__and4_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__xor2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/and4/sky130_fd_sc_hd__and4_4.gds", cellname="sky130_fd_sc_hd__and4_4") @cell -def sky130_fd_sc_hs__xor2_2() -> gf.Component: - """Returns sky130_fd_sc_hs__xor2_2 fixed cell. +def sky130_fd_sc_hd__or4bb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xor2_2() + c = sky130.components.sky130_fd_sc_hd__or4bb_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__xor2_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or4bb/sky130_fd_sc_hd__or4bb_1.gds", cellname="sky130_fd_sc_hd__or4bb_1") @cell -def sky130_fd_sc_hs__xor2_4() -> gf.Component: - """Returns sky130_fd_sc_hs__xor2_4 fixed cell. +def sky130_fd_sc_hd__or4bb_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xor2_4() + c = sky130.components.sky130_fd_sc_hd__or4bb_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__xor2_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or4bb/sky130_fd_sc_hd__or4bb_4.gds", cellname="sky130_fd_sc_hd__or4bb_4") @cell -def sky130_fd_sc_hs__xor3_1() -> gf.Component: - """Returns sky130_fd_sc_hs__xor3_1 fixed cell. +def sky130_fd_sc_hd__or4bb_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xor3_1() + c = sky130.components.sky130_fd_sc_hd__or4bb_2() c.plot() """ - return import_gds("sky130_fd_sc_hs__xor3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/or4bb/sky130_fd_sc_hd__or4bb_2.gds", cellname="sky130_fd_sc_hd__or4bb_2") @cell -def sky130_fd_sc_hs__xor3_2() -> gf.Component: - """Returns sky130_fd_sc_hs__xor3_2 fixed cell. +def sky130_fd_sc_hd__tapvgnd_1() -> gf.Component: + """Returns sky130_fd_sc_hd__tapvgnd_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xor3_2() + c = sky130.components.sky130_fd_sc_hd__tapvgnd_1() c.plot() """ - return import_gds("sky130_fd_sc_hs__xor3_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/tapvgnd/sky130_fd_sc_hd__tapvgnd_1.gds", cellname="sky130_fd_sc_hd__tapvgnd_1") @cell -def sky130_fd_sc_hs__xor3_4() -> gf.Component: - """Returns sky130_fd_sc_hs__xor3_4 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hs__xor3_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() c.plot() """ - return import_gds("sky130_fd_sc_hs__xor3_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4") @cell -def sky130_fd_sc_hvl__a21o_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__a21o_1 fixed cell. +def sky130_fd_sc_hd__a32oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a32oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__a21o_1() + c = sky130.components.sky130_fd_sc_hd__a32oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__a21o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a32oi/sky130_fd_sc_hd__a32oi_2.gds", cellname="sky130_fd_sc_hd__a32oi_2") @cell -def sky130_fd_sc_hvl__a21oi_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__a21oi_1 fixed cell. +def sky130_fd_sc_hd__a32oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a32oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__a21oi_1() + c = sky130.components.sky130_fd_sc_hd__a32oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__a21oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a32oi/sky130_fd_sc_hd__a32oi_1.gds", cellname="sky130_fd_sc_hd__a32oi_1") @cell -def sky130_fd_sc_hvl__a22o_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__a22o_1 fixed cell. +def sky130_fd_sc_hd__a32oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a32oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__a22o_1() + c = sky130.components.sky130_fd_sc_hd__a32oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__a22o_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a32oi/sky130_fd_sc_hd__a32oi_4.gds", cellname="sky130_fd_sc_hd__a32oi_4") @cell -def sky130_fd_sc_hvl__a22oi_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__a22oi_1 fixed cell. +def sky130_fd_sc_hd__dfxbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__a22oi_1() + c = sky130.components.sky130_fd_sc_hd__dfxbp_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__a22oi_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfxbp/sky130_fd_sc_hd__dfxbp_2.gds", cellname="sky130_fd_sc_hd__dfxbp_2") @cell -def sky130_fd_sc_hvl__and2_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__and2_1 fixed cell. +def sky130_fd_sc_hd__dfxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__and2_1() + c = sky130.components.sky130_fd_sc_hd__dfxbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__and2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfxbp/sky130_fd_sc_hd__dfxbp_1.gds", cellname="sky130_fd_sc_hd__dfxbp_1") @cell -def sky130_fd_sc_hvl__and3_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__and3_1 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrckapwr_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__and3_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() c.plot() """ - return import_gds("sky130_fd_sc_hvl__and3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrckapwr/sky130_fd_sc_hd__lpflow_isobufsrckapwr_16.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrckapwr_16") @cell -def sky130_fd_sc_hvl__buf_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__buf_1 fixed cell. +def sky130_fd_sc_hd__probec_p_8() -> gf.Component: + """Returns sky130_fd_sc_hd__probec_p_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__buf_1() + c = sky130.components.sky130_fd_sc_hd__probec_p_8() c.plot() """ - return import_gds("sky130_fd_sc_hvl__buf_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/probec_p/sky130_fd_sc_hd__probec_p_8.gds", cellname="sky130_fd_sc_hd__probec_p_8") @cell -def sky130_fd_sc_hvl__buf_16() -> gf.Component: - """Returns sky130_fd_sc_hvl__buf_16 fixed cell. +def sky130_fd_sc_hd__o21ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__buf_16() + c = sky130.components.sky130_fd_sc_hd__o21ai_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__buf_16.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_2.gds", cellname="sky130_fd_sc_hd__o21ai_2") @cell -def sky130_fd_sc_hvl__buf_2() -> gf.Component: - """Returns sky130_fd_sc_hvl__buf_2 fixed cell. +def sky130_fd_sc_hd__o21ai_0() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ai_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__buf_2() + c = sky130.components.sky130_fd_sc_hd__o21ai_0() c.plot() """ - return import_gds("sky130_fd_sc_hvl__buf_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_0.gds", cellname="sky130_fd_sc_hd__o21ai_0") @cell -def sky130_fd_sc_hvl__buf_32() -> gf.Component: - """Returns sky130_fd_sc_hvl__buf_32 fixed cell. +def sky130_fd_sc_hd__o21ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__buf_32() + c = sky130.components.sky130_fd_sc_hd__o21ai_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__buf_32.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_1.gds", cellname="sky130_fd_sc_hd__o21ai_1") @cell -def sky130_fd_sc_hvl__buf_4() -> gf.Component: - """Returns sky130_fd_sc_hvl__buf_4 fixed cell. +def sky130_fd_sc_hd__o21ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__buf_4() + c = sky130.components.sky130_fd_sc_hd__o21ai_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__buf_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_4.gds", cellname="sky130_fd_sc_hd__o21ai_4") @cell -def sky130_fd_sc_hvl__buf_8() -> gf.Component: - """Returns sky130_fd_sc_hvl__buf_8 fixed cell. +def sky130_fd_sc_hd__ebufn_4() -> gf.Component: + """Returns sky130_fd_sc_hd__ebufn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__buf_8() + c = sky130.components.sky130_fd_sc_hd__ebufn_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__buf_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_4.gds", cellname="sky130_fd_sc_hd__ebufn_4") @cell -def sky130_fd_sc_hvl__conb_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__conb_1 fixed cell. +def sky130_fd_sc_hd__ebufn_8() -> gf.Component: + """Returns sky130_fd_sc_hd__ebufn_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__conb_1() + c = sky130.components.sky130_fd_sc_hd__ebufn_8() c.plot() """ - return import_gds("sky130_fd_sc_hvl__conb_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_8.gds", cellname="sky130_fd_sc_hd__ebufn_8") @cell -def sky130_fd_sc_hvl__decap_4() -> gf.Component: - """Returns sky130_fd_sc_hvl__decap_4 fixed cell. +def sky130_fd_sc_hd__ebufn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__ebufn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__decap_4() + c = sky130.components.sky130_fd_sc_hd__ebufn_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__decap_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_1.gds", cellname="sky130_fd_sc_hd__ebufn_1") @cell -def sky130_fd_sc_hvl__decap_8() -> gf.Component: - """Returns sky130_fd_sc_hvl__decap_8 fixed cell. +def sky130_fd_sc_hd__ebufn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__ebufn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__decap_8() + c = sky130.components.sky130_fd_sc_hd__ebufn_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__decap_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_2.gds", cellname="sky130_fd_sc_hd__ebufn_2") @cell -def sky130_fd_sc_hvl__dfrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__dfrbp_1 fixed cell. +def sky130_fd_sc_hd__o31a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o31a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__dfrbp_1() + c = sky130.components.sky130_fd_sc_hd__o31a_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__dfrbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o31a/sky130_fd_sc_hd__o31a_1.gds", cellname="sky130_fd_sc_hd__o31a_1") @cell -def sky130_fd_sc_hvl__dfrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__dfrtp_1 fixed cell. +def sky130_fd_sc_hd__o31a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o31a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__dfrtp_1() + c = sky130.components.sky130_fd_sc_hd__o31a_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__dfrtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o31a/sky130_fd_sc_hd__o31a_4.gds", cellname="sky130_fd_sc_hd__o31a_4") @cell -def sky130_fd_sc_hvl__dfsbp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__dfsbp_1 fixed cell. +def sky130_fd_sc_hd__o31a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o31a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__dfsbp_1() + c = sky130.components.sky130_fd_sc_hd__o31a_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__dfsbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o31a/sky130_fd_sc_hd__o31a_2.gds", cellname="sky130_fd_sc_hd__o31a_2") @cell -def sky130_fd_sc_hvl__dfstp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__dfstp_1 fixed cell. +def sky130_fd_sc_hd__maj3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__maj3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__dfstp_1() + c = sky130.components.sky130_fd_sc_hd__maj3_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__dfstp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/maj3/sky130_fd_sc_hd__maj3_2.gds", cellname="sky130_fd_sc_hd__maj3_2") @cell -def sky130_fd_sc_hvl__dfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__dfxbp_1 fixed cell. +def sky130_fd_sc_hd__maj3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__maj3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__dfxbp_1() + c = sky130.components.sky130_fd_sc_hd__maj3_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__dfxbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/maj3/sky130_fd_sc_hd__maj3_4.gds", cellname="sky130_fd_sc_hd__maj3_4") @cell -def sky130_fd_sc_hvl__dfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__dfxtp_1 fixed cell. +def sky130_fd_sc_hd__maj3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__maj3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__dfxtp_1() + c = sky130.components.sky130_fd_sc_hd__maj3_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__dfxtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/maj3/sky130_fd_sc_hd__maj3_1.gds", cellname="sky130_fd_sc_hd__maj3_1") @cell -def sky130_fd_sc_hvl__diode_2() -> gf.Component: - """Returns sky130_fd_sc_hvl__diode_2 fixed cell. +def sky130_fd_sc_hd__sdfsbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfsbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__diode_2() + c = sky130.components.sky130_fd_sc_hd__sdfsbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__diode_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfsbp/sky130_fd_sc_hd__sdfsbp_1.gds", cellname="sky130_fd_sc_hd__sdfsbp_1") @cell -def sky130_fd_sc_hvl__dlclkp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__dlclkp_1 fixed cell. +def sky130_fd_sc_hd__sdfsbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfsbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__dlclkp_1() + c = sky130.components.sky130_fd_sc_hd__sdfsbp_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__dlclkp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdfsbp/sky130_fd_sc_hd__sdfsbp_2.gds", cellname="sky130_fd_sc_hd__sdfsbp_2") @cell -def sky130_fd_sc_hvl__dlrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__dlrtp_1 fixed cell. +def sky130_fd_sc_hd__lpflow_inputiso1p_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputiso1p_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__dlrtp_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1p_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__dlrtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputiso1p/sky130_fd_sc_hd__lpflow_inputiso1p_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputiso1p_1") @cell -def sky130_fd_sc_hvl__dlxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__dlxtp_1 fixed cell. +def sky130_fd_sc_hd__ha_1() -> gf.Component: + """Returns sky130_fd_sc_hd__ha_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__dlxtp_1() + c = sky130.components.sky130_fd_sc_hd__ha_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__dlxtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/ha/sky130_fd_sc_hd__ha_1.gds", cellname="sky130_fd_sc_hd__ha_1") @cell -def sky130_fd_sc_hvl__einvn_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__einvn_1 fixed cell. +def sky130_fd_sc_hd__ha_2() -> gf.Component: + """Returns sky130_fd_sc_hd__ha_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__einvn_1() + c = sky130.components.sky130_fd_sc_hd__ha_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__einvn_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/ha/sky130_fd_sc_hd__ha_2.gds", cellname="sky130_fd_sc_hd__ha_2") @cell -def sky130_fd_sc_hvl__einvp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__einvp_1 fixed cell. +def sky130_fd_sc_hd__ha_4() -> gf.Component: + """Returns sky130_fd_sc_hd__ha_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__einvp_1() + c = sky130.components.sky130_fd_sc_hd__ha_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__einvp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/ha/sky130_fd_sc_hd__ha_4.gds", cellname="sky130_fd_sc_hd__ha_4") @cell -def sky130_fd_sc_hvl__fill_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__fill_1 fixed cell. +def sky130_fd_sc_hd__a2111oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__fill_1() + c = sky130.components.sky130_fd_sc_hd__a2111oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__fill_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_2.gds", cellname="sky130_fd_sc_hd__a2111oi_2") @cell -def sky130_fd_sc_hvl__fill_2() -> gf.Component: - """Returns sky130_fd_sc_hvl__fill_2 fixed cell. +def sky130_fd_sc_hd__a2111oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__fill_2() + c = sky130.components.sky130_fd_sc_hd__a2111oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__fill_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_4.gds", cellname="sky130_fd_sc_hd__a2111oi_4") @cell -def sky130_fd_sc_hvl__fill_4() -> gf.Component: - """Returns sky130_fd_sc_hvl__fill_4 fixed cell. +def sky130_fd_sc_hd__a2111oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__fill_4() + c = sky130.components.sky130_fd_sc_hd__a2111oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__fill_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_1.gds", cellname="sky130_fd_sc_hd__a2111oi_1") @cell -def sky130_fd_sc_hvl__fill_8() -> gf.Component: - """Returns sky130_fd_sc_hvl__fill_8 fixed cell. +def sky130_fd_sc_hd__a2111oi_0() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111oi_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__fill_8() + c = sky130.components.sky130_fd_sc_hd__a2111oi_0() c.plot() """ - return import_gds("sky130_fd_sc_hvl__fill_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_0.gds", cellname="sky130_fd_sc_hd__a2111oi_0") @cell -def sky130_fd_sc_hvl__inv_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__inv_1 fixed cell. +def sky130_fd_sc_hd__o2bb2a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__inv_1() + c = sky130.components.sky130_fd_sc_hd__o2bb2a_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__inv_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2bb2a/sky130_fd_sc_hd__o2bb2a_2.gds", cellname="sky130_fd_sc_hd__o2bb2a_2") @cell -def sky130_fd_sc_hvl__inv_16() -> gf.Component: - """Returns sky130_fd_sc_hvl__inv_16 fixed cell. +def sky130_fd_sc_hd__o2bb2a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__inv_16() + c = sky130.components.sky130_fd_sc_hd__o2bb2a_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__inv_16.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2bb2a/sky130_fd_sc_hd__o2bb2a_1.gds", cellname="sky130_fd_sc_hd__o2bb2a_1") @cell -def sky130_fd_sc_hvl__inv_2() -> gf.Component: - """Returns sky130_fd_sc_hvl__inv_2 fixed cell. +def sky130_fd_sc_hd__o2bb2a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__inv_2() + c = sky130.components.sky130_fd_sc_hd__o2bb2a_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__inv_2.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/o2bb2a/sky130_fd_sc_hd__o2bb2a_4.gds", cellname="sky130_fd_sc_hd__o2bb2a_4") @cell -def sky130_fd_sc_hvl__inv_4() -> gf.Component: - """Returns sky130_fd_sc_hvl__inv_4 fixed cell. +def sky130_fd_sc_hd__dlymetal6s6s_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlymetal6s6s_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__inv_4() + c = sky130.components.sky130_fd_sc_hd__dlymetal6s6s_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__inv_4.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlymetal6s6s/sky130_fd_sc_hd__dlymetal6s6s_1.gds", cellname="sky130_fd_sc_hd__dlymetal6s6s_1") @cell -def sky130_fd_sc_hvl__inv_8() -> gf.Component: - """Returns sky130_fd_sc_hvl__inv_8 fixed cell. +def sky130_fd_sc_hd__a222oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a222oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__inv_8() + c = sky130.components.sky130_fd_sc_hd__a222oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__inv_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a222oi/sky130_fd_sc_hd__a222oi_1.gds", cellname="sky130_fd_sc_hd__a222oi_1") @cell -def sky130_fd_sc_hvl__lsbufhv2hv_hl_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__lsbufhv2hv_hl_1 fixed cell. +def sky130_fd_sc_hd__dfbbn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfbbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__lsbufhv2hv_hl_1() + c = sky130.components.sky130_fd_sc_hd__dfbbn_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__lsbufhv2hv_hl_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfbbn/sky130_fd_sc_hd__dfbbn_1.gds", cellname="sky130_fd_sc_hd__dfbbn_1") @cell -def sky130_fd_sc_hvl__lsbufhv2hv_lh_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__lsbufhv2hv_lh_1 fixed cell. +def sky130_fd_sc_hd__dfbbn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfbbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__lsbufhv2hv_lh_1() + c = sky130.components.sky130_fd_sc_hd__dfbbn_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__lsbufhv2hv_lh_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dfbbn/sky130_fd_sc_hd__dfbbn_2.gds", cellname="sky130_fd_sc_hd__dfbbn_2") @cell -def sky130_fd_sc_hvl__lsbufhv2lv_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__lsbufhv2lv_1 fixed cell. +def sky130_fd_sc_hd__fahcin_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fahcin_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__lsbufhv2lv_1() + c = sky130.components.sky130_fd_sc_hd__fahcin_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__lsbufhv2lv_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/fahcin/sky130_fd_sc_hd__fahcin_1.gds", cellname="sky130_fd_sc_hd__fahcin_1") @cell -def sky130_fd_sc_hvl__lsbufhv2lv_simple_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__lsbufhv2lv_simple_1 fixed cell. +def sky130_fd_sc_hd__sdlclkp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdlclkp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__lsbufhv2lv_simple_1() + c = sky130.components.sky130_fd_sc_hd__sdlclkp_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__lsbufhv2lv_simple_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdlclkp/sky130_fd_sc_hd__sdlclkp_2.gds", cellname="sky130_fd_sc_hd__sdlclkp_2") @cell -def sky130_fd_sc_hvl__lsbuflv2hv_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__lsbuflv2hv_1 fixed cell. +def sky130_fd_sc_hd__sdlclkp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sdlclkp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__lsbuflv2hv_1() + c = sky130.components.sky130_fd_sc_hd__sdlclkp_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__lsbuflv2hv_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdlclkp/sky130_fd_sc_hd__sdlclkp_4.gds", cellname="sky130_fd_sc_hd__sdlclkp_4") @cell -def sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3() -> gf.Component: - """Returns sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3 fixed cell. +def sky130_fd_sc_hd__sdlclkp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdlclkp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3() + c = sky130.components.sky130_fd_sc_hd__sdlclkp_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/sdlclkp/sky130_fd_sc_hd__sdlclkp_1.gds", cellname="sky130_fd_sc_hd__sdlclkp_1") @cell -def sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s50_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s50_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s50/sky130_fd_sc_hd__clkdlybuf4s50_1.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s50_1") @cell -def sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s50_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s50_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s50/sky130_fd_sc_hd__clkdlybuf4s50_2.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s50_2") @cell -def sky130_fd_sc_hvl__mux2_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__mux2_1 fixed cell. +def sky130_fd_sc_hd__dlxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__mux2_1() + c = sky130.components.sky130_fd_sc_hd__dlxtp_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__mux2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlxtp/sky130_fd_sc_hd__dlxtp_1.gds", cellname="sky130_fd_sc_hd__dlxtp_1") @cell -def sky130_fd_sc_hvl__mux4_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__mux4_1 fixed cell. +def sky130_fd_sc_hd__nand4b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__mux4_1() + c = sky130.components.sky130_fd_sc_hd__nand4b_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__mux4_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand4b/sky130_fd_sc_hd__nand4b_2.gds", cellname="sky130_fd_sc_hd__nand4b_2") @cell -def sky130_fd_sc_hvl__nand2_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__nand2_1 fixed cell. +def sky130_fd_sc_hd__nand4b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__nand2_1() + c = sky130.components.sky130_fd_sc_hd__nand4b_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__nand2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand4b/sky130_fd_sc_hd__nand4b_1.gds", cellname="sky130_fd_sc_hd__nand4b_1") @cell -def sky130_fd_sc_hvl__nand3_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__nand3_1 fixed cell. +def sky130_fd_sc_hd__nand4b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__nand3_1() + c = sky130.components.sky130_fd_sc_hd__nand4b_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__nand3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/nand4b/sky130_fd_sc_hd__nand4b_4.gds", cellname="sky130_fd_sc_hd__nand4b_4") @cell -def sky130_fd_sc_hvl__nor2_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__nor2_1 fixed cell. +def sky130_fd_sc_hd__xnor3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__nor2_1() + c = sky130.components.sky130_fd_sc_hd__xnor3_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__nor2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_4.gds", cellname="sky130_fd_sc_hd__xnor3_4") @cell -def sky130_fd_sc_hvl__nor3_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__nor3_1 fixed cell. +def sky130_fd_sc_hd__xnor3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__nor3_1() + c = sky130.components.sky130_fd_sc_hd__xnor3_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__nor3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_1.gds", cellname="sky130_fd_sc_hd__xnor3_1") @cell -def sky130_fd_sc_hvl__o21a_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__o21a_1 fixed cell. +def sky130_fd_sc_hd__xnor3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__o21a_1() + c = sky130.components.sky130_fd_sc_hd__xnor3_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__o21a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_2.gds", cellname="sky130_fd_sc_hd__xnor3_2") @cell -def sky130_fd_sc_hvl__o21ai_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__o21ai_1 fixed cell. +def sky130_fd_sc_hd__clkbuf_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__o21ai_1() + c = sky130.components.sky130_fd_sc_hd__clkbuf_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__o21ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_2.gds", cellname="sky130_fd_sc_hd__clkbuf_2") @cell -def sky130_fd_sc_hvl__o22a_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__o22a_1 fixed cell. +def sky130_fd_sc_hd__clkbuf_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__o22a_1() + c = sky130.components.sky130_fd_sc_hd__clkbuf_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__o22a_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_1.gds", cellname="sky130_fd_sc_hd__clkbuf_1") @cell -def sky130_fd_sc_hvl__o22ai_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__o22ai_1 fixed cell. +def sky130_fd_sc_hd__clkbuf_4() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__o22ai_1() + c = sky130.components.sky130_fd_sc_hd__clkbuf_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__o22ai_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_4.gds", cellname="sky130_fd_sc_hd__clkbuf_4") @cell -def sky130_fd_sc_hvl__or2_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__or2_1 fixed cell. +def sky130_fd_sc_hd__clkbuf_16() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__or2_1() + c = sky130.components.sky130_fd_sc_hd__clkbuf_16() c.plot() """ - return import_gds("sky130_fd_sc_hvl__or2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_16.gds", cellname="sky130_fd_sc_hd__clkbuf_16") @cell -def sky130_fd_sc_hvl__or3_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__or3_1 fixed cell. +def sky130_fd_sc_hd__clkbuf_8() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__or3_1() + c = sky130.components.sky130_fd_sc_hd__clkbuf_8() c.plot() """ - return import_gds("sky130_fd_sc_hvl__or3_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_8.gds", cellname="sky130_fd_sc_hd__clkbuf_8") @cell -def sky130_fd_sc_hvl__probe_p_8() -> gf.Component: - """Returns sky130_fd_sc_hvl__probe_p_8 fixed cell. +def sky130_fd_sc_hd__dlrbn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__probe_p_8() + c = sky130.components.sky130_fd_sc_hd__dlrbn_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__probe_p_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrbn/sky130_fd_sc_hd__dlrbn_1.gds", cellname="sky130_fd_sc_hd__dlrbn_1") @cell -def sky130_fd_sc_hvl__probec_p_8() -> gf.Component: - """Returns sky130_fd_sc_hvl__probec_p_8 fixed cell. +def sky130_fd_sc_hd__dlrbn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__probec_p_8() + c = sky130.components.sky130_fd_sc_hd__dlrbn_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__probec_p_8.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrbn/sky130_fd_sc_hd__dlrbn_2.gds", cellname="sky130_fd_sc_hd__dlrbn_2") @cell -def sky130_fd_sc_hvl__schmittbuf_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__schmittbuf_1 fixed cell. +def sky130_fd_sc_hd__bufinv_8() -> gf.Component: + """Returns sky130_fd_sc_hd__bufinv_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__schmittbuf_1() + c = sky130.components.sky130_fd_sc_hd__bufinv_8() c.plot() """ - return import_gds("sky130_fd_sc_hvl__schmittbuf_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/bufinv/sky130_fd_sc_hd__bufinv_8.gds", cellname="sky130_fd_sc_hd__bufinv_8") @cell -def sky130_fd_sc_hvl__sdfrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__sdfrbp_1 fixed cell. +def sky130_fd_sc_hd__bufinv_16() -> gf.Component: + """Returns sky130_fd_sc_hd__bufinv_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__sdfrbp_1() + c = sky130.components.sky130_fd_sc_hd__bufinv_16() c.plot() """ - return import_gds("sky130_fd_sc_hvl__sdfrbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/bufinv/sky130_fd_sc_hd__bufinv_16.gds", cellname="sky130_fd_sc_hd__bufinv_16") @cell -def sky130_fd_sc_hvl__sdfrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__sdfrtp_1 fixed cell. +def sky130_fd_sc_hd__a211oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a211oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__sdfrtp_1() + c = sky130.components.sky130_fd_sc_hd__a211oi_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__sdfrtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a211oi/sky130_fd_sc_hd__a211oi_2.gds", cellname="sky130_fd_sc_hd__a211oi_2") @cell -def sky130_fd_sc_hvl__sdfsbp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__sdfsbp_1 fixed cell. +def sky130_fd_sc_hd__a211oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a211oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__sdfsbp_1() + c = sky130.components.sky130_fd_sc_hd__a211oi_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__sdfsbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a211oi/sky130_fd_sc_hd__a211oi_4.gds", cellname="sky130_fd_sc_hd__a211oi_4") @cell -def sky130_fd_sc_hvl__sdfstp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__sdfstp_1 fixed cell. +def sky130_fd_sc_hd__a211oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a211oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__sdfstp_1() + c = sky130.components.sky130_fd_sc_hd__a211oi_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__sdfstp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a211oi/sky130_fd_sc_hd__a211oi_1.gds", cellname="sky130_fd_sc_hd__a211oi_1") @cell -def sky130_fd_sc_hvl__sdfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__sdfxbp_1 fixed cell. +def sky130_fd_sc_hd__dlrbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__sdfxbp_1() + c = sky130.components.sky130_fd_sc_hd__dlrbp_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__sdfxbp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrbp/sky130_fd_sc_hd__dlrbp_2.gds", cellname="sky130_fd_sc_hd__dlrbp_2") @cell -def sky130_fd_sc_hvl__sdfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__sdfxtp_1 fixed cell. +def sky130_fd_sc_hd__dlrbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__sdfxtp_1() + c = sky130.components.sky130_fd_sc_hd__dlrbp_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__sdfxtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/dlrbp/sky130_fd_sc_hd__dlrbp_1.gds", cellname="sky130_fd_sc_hd__dlrbp_1") @cell -def sky130_fd_sc_hvl__sdlclkp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__sdlclkp_1 fixed cell. +def sky130_fd_sc_hd__tapvpwrvgnd_1() -> gf.Component: + """Returns sky130_fd_sc_hd__tapvpwrvgnd_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__sdlclkp_1() + c = sky130.components.sky130_fd_sc_hd__tapvpwrvgnd_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__sdlclkp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/tapvpwrvgnd/sky130_fd_sc_hd__tapvpwrvgnd_1.gds", cellname="sky130_fd_sc_hd__tapvpwrvgnd_1") @cell -def sky130_fd_sc_hvl__sdlxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__sdlxtp_1 fixed cell. +def sky130_fd_sc_hd__a21bo_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a21bo_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__sdlxtp_1() + c = sky130.components.sky130_fd_sc_hd__a21bo_4() c.plot() """ - return import_gds("sky130_fd_sc_hvl__sdlxtp_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21bo/sky130_fd_sc_hd__a21bo_4.gds", cellname="sky130_fd_sc_hd__a21bo_4") @cell -def sky130_fd_sc_hvl__xnor2_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__xnor2_1 fixed cell. +def sky130_fd_sc_hd__a21bo_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a21bo_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__xnor2_1() + c = sky130.components.sky130_fd_sc_hd__a21bo_2() c.plot() """ - return import_gds("sky130_fd_sc_hvl__xnor2_1.gds") - + return import_gds("src/sky130_fd_sc_hd/cells/a21bo/sky130_fd_sc_hd__a21bo_2.gds", cellname="sky130_fd_sc_hd__a21bo_2") @cell -def sky130_fd_sc_hvl__xor2_1() -> gf.Component: - """Returns sky130_fd_sc_hvl__xor2_1 fixed cell. +def sky130_fd_sc_hd__a21bo_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a21bo_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hvl__xor2_1() + c = sky130.components.sky130_fd_sc_hd__a21bo_1() c.plot() """ - return import_gds("sky130_fd_sc_hvl__xor2_1.gds") - - -if __name__ == "__main__": - # gf.write_cells.write_cells(gdspath=PATH.gdshd, dirpath="gds") - # gf.write_cells.write_cells(gdspath=PATH.gdshs, dirpath="gds") - # gf.write_cells.write_cells(gdspath=PATH.gdshvl, dirpath="gds") - # print(gf.write_cells.get_import_gds_script(PATH.gds)) - # c = sky130_fd_sc_hvl__xor2_1() - # c = sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() - c = sky130_fd_sc_hd__conb_1() - # c.show(show_ports=True) - c.show() + return import_gds("src/sky130_fd_sc_hd/cells/a21bo/sky130_fd_sc_hd__a21bo_1.gds", cellname="sky130_fd_sc_hd__a21bo_1") diff --git a/sky130/config.py b/sky130/config.py index 93239ba3b..13c475c3c 100644 --- a/sky130/config.py +++ b/sky130/config.py @@ -21,21 +21,21 @@ class Path: lyp = module_path / "klayout" / "layers.lyp" lyp_yaml = module_path / "klayout" / "layers.yaml" libs = module_path / "sky130A" - sparameters = module_path / "sparameters" + # sparameters = module_path / "sparameters" - libs_tech = libs / "libs.tech" - libs_ref = libs / "libs.ref" - libs_ngspice = libs_tech / "ngspice" + # libs_tech = libs / "libs.tech" + # libs_ref = libs / "libs.ref" + # libs_ngspice = libs_tech / "ngspice" spice = module_path / "spice" - libhd = libs / "sky130hd" - libhs = libs / "sky130hs" - libhvl = libs / "sky130hvl" + # libhd = libs / "sky130hd" + # libhs = libs / "sky130hs" + # libhvl = libs / "sky130hvl" - gds = module_path / "gds" - gdshd = libhd / "gds" / "sky130_fd_sc_hd.gds" - gdshs = libhs / "gds" / "sky130_fd_sc_hs.gds" - gdshvl = libhvl / "gds" / "sky130_fd_sc_hvl.gds" + # gds = module_path / "gds" + # gdshd = libhd / "gds" / "sky130_fd_sc_hd.gds" + # gdshs = libhs / "gds" / "sky130_fd_sc_hs.gds" + # gdshvl = libhvl / "gds" / "sky130_fd_sc_hvl.gds" PATH = Path() diff --git a/sky130/gds/sky130_fd_sc_hd__a2111o_1.gds b/sky130/gds/sky130_fd_sc_hd__a2111o_1.gds deleted file mode 100644 index 4b262c7018b15986ee30a0d41611ea25ed4e576e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8838 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 O|J}ys1BdQrGyD%`g)Qd* diff --git a/sky130/gds/sky130_fd_sc_hd__a2111o_4.gds b/sky130/gds/sky130_fd_sc_hd__a2111o_4.gds deleted file mode 100644 index c8fb75234b0bd50ae56993be00d8077689220592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12500 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a211o_1.gds b/sky130/gds/sky130_fd_sc_hd__a211o_1.gds deleted file mode 100644 index 46d59b2f8ee7bda0944700a7c4da3a080ce04034..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6490 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 MHF7-ss27XoU*nnw6#xJL diff --git a/sky130/gds/sky130_fd_sc_hd__a211o_4.gds b/sky130/gds/sky130_fd_sc_hd__a211o_4.gds deleted file mode 100644 index 773027f92540db343a071ef20fab0ec9671f6f69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9204 zcmbW7d#qGf6~^~G&Y8!ZxpNsFHM zXAi92_>-gmxOT&d<@1Mcy~!;~inWW+|}N1@j-hJ4g8XxY+N1f!_Kay<4=tspmY5EL_xopT51sbnTO(>Do)g zxPJImtGjbJN7U`(Vx<1zSIxI`STtYiS$~!<96zqJ%UnNw{kzLwzkT}hPV=wSazx)g zE=Kw<@3g)vHPQN}p8aR}!v3pQn{V~`9O3KZV#L3CwfR<`7tNP?`e*q<{{$W!|MW;eh=1dt`8HRJ=1V>OvwWfd&<^u$VK3)Ac*57m#fbmV4)bkQMDwMd{#m}zpZf%T z+b45`uaAon|FHw68()yEumRchBbtUmq7E{@rcn z+XZ+X*XQ z#IG$+GCp-hAoKn{Q9L`~{-*1WvA^11QR^Pme^X%c0>*ncYR=er9Pht{Im(!#*9z(r z884$pk#Rp~8O!(M_}}1|j1Hf{D%P`D#=TYT8ssxF&bma@H)wwR{qfKdJNNK)fmN&_ z#zlA!(*KtIPwa&b>$$NmF!>{XM}1;#6V~rjs7ZVsWBnKWo{?*^e!$i!nY_WheGWYq$o%m8EKf4u`CcINUEI%#rE%*+L_dT2y^Z~jY(|}5hyQFK z>usF2dP&X|*SeUX#!iBKM#gy_5$7xPo8AH)YMuO5ApJ)lGJmr2U#xeWQ%qjQ@u*c~ zoaYg7zCnJUV}IPAxDKa&7FfR)qpzraV>1*QFVtx4-}C z8+c}SBJzdx^SJbHrWb2pG`)y;vHl@^j#ojCHPhpZ&@(QsD%Mv{nXY;;N9cT9d=q_X zGqlk6_;1sf#LdP2)zs#_`kg?|JL6(({&^hdo%$ZnnV$2XOPW>6#oDpl4hhFYZ6VKFalz;{HVBx?x<5tsfr8bwj<#b;GzATR*&3uy0=P zdPLtoE=KyVeZc0O*GJC3C+6M9#mM~EcG|qxYk{11#>LqDH%d0{4eVE(2hRnNaWOLf zjgOjdvlB>P#>J>Vu1_4d=9hDP5n9H@$oLKY-E^%-bA-;v#fZLzxn|$(>vLSd{Vd~R zr2p0rG1k0~xGTrkp=Vs&RJ?xM>#gqgnH*8KkBgD|ho3;5*nc}W*B#c) z=g%Hdw~vdF`p0fV-Pps&u@8#;E`V_n@xuLY9QUU5?c!dlNBH`<81e7k2Vd-86K@aX zzQwp0+rM}m?;EKXE2E|t5ihKN@}1WAiPMhe~gX`WF!| z9DmLq*FER2#|4`|uKz4wsArvg4rBeIf1XENM7&VXeS$jfA0l;(i!nW~Gwhq!ACZ0g z>r%#8|IOp*`wQ5wcLbK-kLv;ABJvm4-z~NHd{F-}uGJre-_k&SH<*42=g7!>@+r%c zj9330$UN`8Mdo=wC^BANYKiaV?p}^h^JS~M`9dJ;=JTS+{u*DgJW0RCOM&!hVx5Z2 z^Sok#|0n4`j6H!q?XLzV8*zPn5Plh%=k;1-eCUMbN&2>MjTI}uv-63J(?`U428~DW zd71r=G^}5ezMXx6%=_o#jC?Nc`~dxCqz|8$#e)95AD@F0jNKSM3nKmaoGfx2N6*=K zl05I&!-35AJx|{^us=WF6WKUU?6C8b?5B(Q7U|39Q;~kmi}a&TWSr*}p&K;5ANJ4d z*t_X7h4~igGll&@C^Xpz~J?~jOVAW@>+Jh2)&Psul3cp>%!-4t}lL{CJy1= zpDz*de1ALpp0^#oXIw|UhJSP-($H~Fn-XBm5*b8LtI2W@4q(GZ#^e7=>KK-XB^sPaS`#nev8*v!}lE=E&n}q z#^yXDSReBq{3oxszyD=_|K@!OzqjK3ikNP;`xO!KLVXweZWU{k-`Di`2G&30;+A54 z`(37M|1wADd|Zs^-64$iIb1*11XhlsW5h+|3+o^Lr}f>L4`knri|W6D5dQyx{r$b` z(#2)?)I0bTmHyzm{50v6&4zcqG!^H{eCKz)QSz>RdMMva4}a=!xIm9y;eQGG%>P51HuU*lvR?kT+}Nkb zS{>-W^uf2C*z(G!t^f7|X!;44&ZO&CT)w)4-7EPI)$9HbwZqs~Zlrp9|Hxlb<&*cz udv@jJSKd9YzGwR@-|9zgS@EndO4jjyi7#70+54GP|JlZ>!9}K8b^in41!Z#p diff --git a/sky130/gds/sky130_fd_sc_hd__a211oi_1.gds b/sky130/gds/sky130_fd_sc_hd__a211oi_1.gds deleted file mode 100644 index 3e1557e3f295e1fc967468028ae6e9408bb4e402..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6794 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 U&0Bn~waUrQE2SPRii<_}Kj1PP2LJ#7 diff --git a/sky130/gds/sky130_fd_sc_hd__a21bo_1.gds b/sky130/gds/sky130_fd_sc_hd__a21bo_1.gds deleted file mode 100644 index ba35253800d826d23d8acb5bb45496e23b98b578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7690 zcmbuETZmoN9mdz$XJ5}bGch&Rjt-*W1!0O#LK{S>nHZH2O%pYVQInadv`Q4Iq9s}o z@j;?S$%BZBI4U+2sUlM9gFg7uK8aX+6A6ggg6M-FLE5V6_pSf__9f0?1dDQ!aC-yHlIr-6%?Lx%v9rciq0nxfT87XLEa3Z}`)J z&(B-;+Bu6)U2~P2PP(}s)z5cjTzyI*z!!J75J6}ZYE%@vgeY~k( z)7Hap1N99aGW|f@(DGl`*2`CvulOzhBlHbl^+Ud5+y5f(zrtO|{Pnjvmwk=?Z?9S0 z5AU0u6SJQ<7oo1$EAaOx(3Fh#Svw-yYvxOSe!fN@n{MK(n#JSJF)pIrPJOW!ULRr1 zm()yu4lUv$$~*Px-%Xd_Ta!A*#gLwP>0OKuG-7(6?Tkt7Kzj$bVWPAe3 zHr3=jr{CCok=*YH+50oRFkd3$@o%l1?C-+om70D(qS$Er zWO70D@umD9mcQSJs8$jCgzK66mdr~pk@0MYm6Q2yd=AuP`4Bk~lYd}bXCh}M8TaRq zc&L@1wdMZv>tXaaw6hxe3v2rM`zhMvJc3;BEEl;3sS}}Zj$iHj{AaIQJK0?|>6df3bFw z3u-24kLQ}0V!uY~F{YC7vnWG-k-lt44CS+bH`?BdwfpOu*@F zFLPHi`U3TF-ih>OyCT|e&gWdYUS_zS-2=$oa@0SgX7LA$izx5Z4{@DJ-g0i@y_(c9 zE~30sAFndq0BeTrkkm0QcIYo)|LNPm6Q94L)Uca3Vq8Q#sOPnSdXZ-k^&;XyeU7@+SHySfdA@mO-TL88HkYFxGlEog=i->pY3(VW`sE;|Q_y+!F zTs*#8U%Y6#!IlQ0^Kmhx-->x&k9~zDSMdwz85h?F{82A|+Vo;^sp&<;JI7BS?q&K{ zJZO5(e_7tC=UL~km)mL*Hcz{iU(xjn^~g&l7p`aWRlT z)??nN6PY*0#ZdlOuZQ(deMPK$9~T4bKfV@qvDT8L!B>$B#>MviaqIkHJ)RTPi#!Jy z7ZLBwzpwX->3LqTodR0MMZ`Px{jY4@^FEII$MX%G&y0(K_0M|IFHI-*mz!Qhywg9r z2Yudv`ZzNx9zvUpi|yy3R{o+ZktduR(bqM3ZZIx}&JW&C_HIRetamZueF5Sk;+_3> zFT-~)wA*VItFRdn7g64=e+s!neLkC1JP1AGVqpKUUh;tH#dOy6BI2F?T<6R+*T2ZQ zU|dAJso#0z^?bM!e)thnt{bdHk@GsaVDn3&UbDR&?dv(76Y#9zpBFsQ)|YHu^yN*x zJ+GGU2PV+>-tTbT#F`Mf78n;159+y=s2BSOOfMoH)W@4mU-5sYkHyVlee#0oMLy@U z|03c+e?E7z|6=yM=|#kY`uuX!S495lpNp4w>-i3X`M7u#J@ZbT$h=c8hVsvPTsPE zJh9)*pU8eQE{6Kgd7{ogFO;N?adAn#?x)YN=lqGcMf4r_R$MCbxf9rYW8uaAoX|6-r{4pxii zTkI2kywjic=+9@;itzPuG2oxQX}w{H|!e@!6t}clxs){o{8Vgs+c_0sm-+`Svr> ze4`y=*q`<2-_II^uaAoXe|PNf$6Ncy;ryXL&!39$^>MN7zoxt&!21r24cF{s%DH8y z)Ew@#xQOy*{x^GlTtCml&E7+n94s<|{w#X%m)93qCiwq?y^pwY z_pKXo^fdRX>5sBksmC6te$x?poGVA)>ka=)H?C{>e`me?w_VZFU+Mj4y2n4Ati8sM W9%oSFv>Q#O`WLLVhf7HuyZ-|q*;lmy diff --git a/sky130/gds/sky130_fd_sc_hd__a21bo_2.gds b/sky130/gds/sky130_fd_sc_hd__a21bo_2.gds deleted file mode 100644 index 7ad2649af8fabf153a92fabdcbcd6ae83ebc2f44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6440 zcmb7}Ylu}<7>3urpX;bN6sIOhNJPf6aSE{so0)`&32ihhEj^=2B?^_&54#XuEX*t- z5-LJVEX2TqA_@E+4nKDfEr+_<=B(?iY0CM+2f*L`!vmdX5q{Lf8D2J zL=MQx0XbIUS2zn_r+>`qXFC19@$vB^#(4cooV^C$eM%e8>igUE@Ef8&!!glUltXR) z%iHzpt5jd*B>xHejIY*1eU7fp+hZ5&aRh}L1uv79D^SvuQXdwH|UhmPgVXl+h6mg9JZ0=k;!=w zo=O{UxI7r3F3c;vm7-HJ9-~|(^i%oYOaJOxDYtq>O18Ix@mJEHb6&}EE1ygGB-_by zlsSHO{?*@=a%v}1(x=ufek99bUP(XdlsVQpPLcg}4&!$ko?Qimv{9O6nL_=ICGIcy^4y zYYcV8r^O-sScl(^CA7smj5+JbcsNt?BAxa+C4E`0GROY|olm?zvj3GVm*b~oyo@!YtCck~~} zd`G>M=*MjR<@&Qw?pJE(Q4Y?pzn!u)5B-n068T&`*DcqvU9XPiy|SK_$mi;<rw zzhFJMZWvc0Ua051qfTk(4fIOHbM@vZ>JMMe3nhISR~Gs6Ja4|}Tg3ddapnAcf86`Z zzJWVXyMK_U(H6#)-NkygJAh8fc2ln`YQO)Yn`hT$_yhEeD|_?(!x0((sFIT7&bYE@ z{KFVtn8)FVDT7(~jkpr|-0|ai-fYpgcwF?Ja(2Ex8p64~SUY1GqTM#GENFi;?)JsQ z8N%1bl|}y0bKGL+l^i$fl||#nIl}sLzikoqwsB=a{p~*T2lUvl635bO_?_VEhH?#M%*eUJ3ZwK~^0OLqT1B|9bJX?Rc ze{t6@^D6oZYnXL!aSUR{mF>@~6ZGymxlai#<^uIX8_)Ik*Nbm}`AUCF_}aL#z~5gl zzCofCU+U@a^11#Y#+tt2sSM$3{ds@bB4ReKEbx!U z#5dlr6kqD;@AA3+$qDf-ZOsr`8&?+iCnvibhYJO?qy8ph0+ld`%&;!5PR z`t???`;U=x?ehZ4Vm*Stt-YhoXZ0)E^;l!SicVQMAbKU@S-tFE?tLSl1H)l_zt8Yr z95b#Q&evDBquqxvfABs*$@c(^D-qB2=W}g*0sC)%O1`_Y&%2Ju=j!Xrq~3fV!FE`p z-Zrjmum7;^zi|5RYs;u2-uKG;&Q250#Wl~AW?T6n{4qJvT{@aiaeA33`n3ls!L5@BD9BvAoUyqV?*3*Qz%CYU{r+zx`d&Al^aPkDUd2 Q+=%rb6jB~;EW*(I4-skm$p8QV diff --git a/sky130/gds/sky130_fd_sc_hd__a21bo_4.gds b/sky130/gds/sky130_fd_sc_hd__a21bo_4.gds deleted file mode 100644 index c37fea435574558f751ab81fc767754cbeb9085f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8392 zcmb7~Z;V`38OG1tnYnlV?e5IZ?AFCqTcr|o4K7tHHey@rpIF+m)+)uelVY`En-EJh zqM#p4O&URH4AEL6i$+Pq2NTgq6Zb>?fQbbWk@&$hQ4k}+KU8gq5VJnddCxQV&hFkD zcarIE=6&yTo^#%F?zwmF*2ON0ZgA73D0#*;+>}e)fidY{wELh`v<5~UYVLkk|Q=j1_(>KKJL;l-__3{p#JG5Eqfpj(ZeGR}5I=vVMBwdmjIS-bW7Q_{EIG=Gx* z$-h!EpX|3h$$b2tl+0IuXnB(P$~RInUnyChWWSjg*>CDZ#@W8eIDJLN**}qS_FH6} z;}aR@xW$$0`%LE{UO<(vEQYnPaEgENT2o-=12NC+7)x^T+kCmC;G zKNOj7f7S9NdcWz0E3Ttt4Q z`uO!#{}hhnx$u{i(P515a?~iW+(CWNUopnH<#pn-E4Ke__OJCE*6k%+Z{C)&b`9Eo zJ;ocD-MhGk9oBR-owEFXj0e{{F+sc0TQMi%-Kg1}_#RkA-I@=2PAnVxtIr8FK^#3J%53Jme z`aX@C2Xeou-hp=@$I(EaM9vf27g<00i_v#%KN3s#T0ce9b)|Y7<#;By!MB0+IhvB| zrHwYk%FEaf&Z578tX~H@k?W;*2*(FjUSsWwXn!UD+r2;bC9adPKc=i-hx+{kH42RH z!~C8?`+>FZ;&{|btbX70BG<_T>MvG*Z2O-GzifZ(erCq*$0l&!lpM$LpH5l33hf~- zB44PFzF>N>yx#O8;<@_LYi*uOkEY~0VqC;JDAbp_I3D@|7fjE6m+c^)uRn%yJ^*i= zpJIIu8pK7!3-!rv(+~Jx(IYmfJ?j_px%$el>^!J`E<>D8J}z#`_vdjuzV?~IE@^B>=C<4(B$ zq7Ed-&A3=JejdkhQ#T;S?c-v>`ibvBUon5lJ2JcgJ>z1*{3U-fUF~ZbLg(XRfxh+z zt9$LY8KUk!E*8|E$Fc6zi>y22Vp09;Z?}H?{T+4iM8ADpEa*S)t2l3sJ5qAq7#EA? zukl`+x5f(@E}%We#e(^3{@!%0;~7Hd<6@B>`*v-I?bidoX#06h+>yWjx$nn#`~5yJ z!QRifhImA^Ez8ywCk%FpRwz&hdCWBQV~D_=i`-ww%-?0P8H_Tf9?BI3FJJdXEsydI0Z?lLYexxX5^evb8R z-L&f&V%_+-Sg?Mmc|i$&+p_(AjSHZz2;kBbHV z<6lDk@5cStl_`0D!?=iiZvA;&3HucFVubb>7ZK0Z_g-h??md>0<7Qke8vn$sje7$1 z;yid_+&(TAjGy;Or7P_IXTT@y{--2fk>7vnW2^z*e+`JW;NxO_NZ-#sPs3fYD?e_( zuf*yWMzNj)5zp3dr`L!3KOR?k+Vo;$o>AlErJC2{fhX;hOkBbHV zl`GA+@}y|K)YCuYbN#FEpfC5@0TJ_YvB1B2$$aDcMDwMd{vn_1pPVz_+K~*Q^>MMl zKRIWfd|TxV;p^jK zfq!$a`L@cU`BG2+kk9oWS#Q20*uyw}Px$({Sl~ah-h4+M7tNP?`iFe3|L8^Y9Xp*N ze0^Lj@E^TszGJ6F^QE5tA)o8tUNGOz;SAyH<6?n-d%=7=heh+Hp8g@9>pyMMlfBb~`b~lLTOFjKVKG(m8W9aLj|BCSSak0R^x5s>Y0QX`4{1|OgPydk5 z^`Bg4{*&i3gs+c_1^$!k%y;sziIvM;vRtg_e8&aT$~&7pYzx6O89#y z%EXs{ZXc-o4iRDB|2n#azsK6&BYQ4h7a>y{!_HOugX{6>8edfTr_J-LQBfKC;JsSr zg=_s}Tp{zG>OWr%v(pEgQM}Gwa5Ye|RSsKnL$3 z{qo8!(__A|4jb)r>k3U^rOd$(AvZI Q)>N$jKw$0h#ICsi0f%=7RR910 diff --git a/sky130/gds/sky130_fd_sc_hd__a21boi_0.gds b/sky130/gds/sky130_fd_sc_hd__a21boi_0.gds deleted file mode 100644 index faf551c2ee0348bf64e36041440afd6ce65d3cf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5322 zcmb`LZ)nw37{|~3{k`{Yrq;z;icPd=G@3JFl@;5Pg4R~k%(V34v~Wz2l#of(D~%#4 zdsjj(Blf}=APw%cD*j3-NyI$Y9u6JzTczvxgQQ4SeQDA;G$yI?d zrh7?{Z^Y+a#waUqV=Z-Kl%?x1{v6(pVY|$u#C)y%9-?3JAl?U!i90+wZ`398lguYx z?P+F3r-Z)M{ChdS?IY}ebzJI42AeSV4W8@|=B*6IFm@B(j<$a=ER=nzo>$sKU>&bC@UMOc;=5NoZi9S}Y&i4JY+PB;f8l%L8$IDkU&fV1{&8J&NyU>o#+60-BV#+98d^fhCzufcCpH{P#UKa$t#(rcau*HXrn(I5B> zow8+pYi2L+pYiuHPkg^;g1N&#Q6op&yFHkXJq(7p{zb2Q(l@?Y{K*hcdz@E^_0F$P z&DiIW^lKc8`%U_?C-dX}C^?>dD&u5u8OPt{Nq^3x#PO~C0J)V^hV2-#FKIodo~x&ixg>gJ@T&ML z5zp#Jnw|%6X!N7xtE^5Th?f%atbTj59?x}y)GJX7TnG3P+IUvq@9QTTKFhWp!G1Zm z?U1+<@vL5+zx8?M7`$=)TEO>@IeK`VqF#xGZ^j$*3T-^spZ6{L^M2Og40?xgW%Ku+ zCjVf&_=c%ce5t3u8_)HRy2LlSm?3;^Tv^~Bb%}3uQ7OLE)8CEf`p58K-pPp!5wme+ zfqy(BzR3xt_)<@QH=gUy`v(1aKWPwJ8&?+ir{~1CJfRd{>gn&sbNws0j?kCayawTG zQ{uSneA18Z z_WUB-(ew+FFd6{>-!PlFTx%t^v z9GO2hf}4`9w_CgD=T~l?9+jv5kvV$oa?8r+>bGoc^1os|GNAthBO99Zo2-9#e*P=s Z!EH8sbVR22+B=fQPl&c2xKTxs`42@CZWjOm diff --git a/sky130/gds/sky130_fd_sc_hd__a21boi_1.gds b/sky130/gds/sky130_fd_sc_hd__a21boi_1.gds deleted file mode 100644 index 98f6aeccdad03643ca91cb9e86f57c9ec136cfe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6382 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a21boi_2.gds b/sky130/gds/sky130_fd_sc_hd__a21boi_2.gds deleted file mode 100644 index a5dd02cb3cd3f16c6316951514c06164e27d1139..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6778 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 MC)*#`*p^D>e{esW4FCWD diff --git a/sky130/gds/sky130_fd_sc_hd__a21o_1.gds b/sky130/gds/sky130_fd_sc_hd__a21o_1.gds deleted file mode 100644 index 692766a372fa9c8cba5b2e27f0cc315a1b5a3119..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6134 zcmbuDO^8)x7{}jxzVCHR#mShOMN%!KscD?WAeuR&&|=b3v&7KbsC|e+q(oQ|Z43+~ zTu5IFhoU5cARW$EDQN2>)W&btT z>Hk7iZ@$KB`mYszuiMA*lks9d@sa+L7>{6n!Sq?@!U^Y$EKi@(axy*ST=q#pmP@0{xgSZjpwR*|(BJ$sZd_Cj4G=C%FGwD}x{IkR88|o)76$~$7EZ;+Wo~`G#o)PtD zYVQG=PoH=DG0mS$zQgycg6voPy_S>lPdffal+V<@j2Cm_H^x3QGJm=D#Pv*iS#QZ7 zsJpiMrEh$j=0P&Q=*EJ~Jy@!JAcGfC_hdoNAKNve{j&dmoruvg?m*qybOP#T)eXbX_7mpTXeL#lM_6Y(?_;h%Pd;NXZbZDc|E!k{sy^or zs?Usr4f=T)_r<7>Gb1PRh!{66uGa@xXVmd|DJOIiH#X_F>pX>N!R!v`5jSEUYx^(t z&cGk~%(Hz^^+v?&^*hnmVd#5GJO@4F#)kQGC(-X8@!eH0IOH7TMwHk3vtDvc^~Ur* z)f*9S)Mx8epYxLHGvoS-e#i9lJ08dRgY(-sZwK`F7!fb~Z?B%;cfc9r#zY&TA1U!N&OgSD8!P@5eR>Lg{}6M(w_vatYYA~9%4_|l-ao1jJi`;J zHzMAsXa4lhiM-h^^A|ScA1zZ|bhbq3ByMcbyQA7~zRz(SNcNj?V^ja79{MdhPxhN} zV^jZGFZoOLMn20kZbUpxXe;b^TtY=eRTfoR?M4@n<`T zH~Po#tKOJAs5&F!SL^NmeZ;?ajToWbqU%>F@diECKKCEif6gh@^Zk_j0P$LVdP;q> zy+-xtx}(1@Z_ukR*Dw8r@TH#q!Uq3%N_~^#M)i%MrN1w)^=Cc$CdW%eOyb4{|7e-| zMrV!c%l$)tUta6adi3Z1%L!kJ8yozC?dlt*M)l==iT=L4)}Qt0%llVO_)6T^;O~yA z?<{_g(fwo3-`F4Y<^IVDU&pwy>c6JAf501Of82+A#j6G9?a;Up<>mfw6n#`Y|HDo0 zKgP}^uMnFQ@Q>)*dVc8dS-mb<8lWUw5F-2Yu2St;;V@`GUF8e)Kb&B`UxvS&9uScz8KG)23zNe|NE3Um#Iciwx zSzq$VLyvB%thWEH#}1(W{tfFYdYlTg^T)v<`_s?5>Q^@JH0JO9H%!xS7XN{IeSbW* XP1M-IrL&^bm-rvtB^w;WQRMyuiK4`8 diff --git a/sky130/gds/sky130_fd_sc_hd__a21o_2.gds b/sky130/gds/sky130_fd_sc_hd__a21o_2.gds deleted file mode 100644 index 1d7f13a46b6020d21769454147b0609283077945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5698 zcmbW5eTY<57{<@Nb3bRsk8mlrmZ*qCG-_AE%&^@}h*&>b%~DYZ%|csCPzvmeKFF|= zN<_#6H<2vtgZ_|=5R#z33N!mxkR%GMh-irl-Ja*X=bd}UnR`(OW`8s9InR0C^L=+r zWPE>_>GAydjH#M#6Pp{&b@|Vx?nfIptlhk3^HyWJD&gFL?X!lyKKRG%c}H#;eP_k} zrY9`c_C(Q^k*&QmZ*4rXuCe8z#`<-Q#+ts~O^rTdg2b3;f^U8`(L~=EGh=cEf8DFT zOFod*QTeRIx8RCQ|CH5FcKY4p)+-2|B5l;w-}sL8Pmh?MqG*VeE(bY;aSnuCuF3K zab=m_>xCEUQm?E$f$>CKiFn@sZkPXj&VS_#yl3N$309`>8skrgzoY*&zMsR}(Ts~u z30QFQR{lD^cD_{|xhs@0Gm5Ng1O((w>rehF?j(Wc)npqF+k- z2M>!s>AwN}YZ=)O`X~$f^E&gf`(!D27wS9uw_y#9p*=^&!%w7~^p1+ZlI8vqDJQ)X zc&8cd{z0)&)^&ZC(#AWDS2I7mZ&0ntA$)1bIwzwS;Dxu6`;X(LOg=>Zp)pFv)0t9E zCJXTS*^Df==Z12u<9yonkbDX6$DqG6V|X*#LR^XRPW_v2#~*XR`L0dP7-K$@?U+MH zmdEc)IT>w3e$XjV-l=_?U-e(i&F`p>xl}SQ#+8WY^@Dal&5-k;HU~aGAwRs8%!_d) z;)QyH^^zRN*euVOZpHi|u0(mMJ~}OWW&En>m53MW>FZ%^eT-L=T%U|9rxxq|Rml4w z)>E7@9Y%YID^XtP&w9}}qF2UGie8C$p`O0pBIrNO@gHf=Q!Xme|AM`WH6HBD@f7ro zD`yt#gPP1+a5y99jd5k!{88sk!CJ#UZSpAej4P)U`$y1n{3Fy=a@-kLmW@B_#oQ~< zH~Eq1V`Zhp{{|U1&K<|m@)XFpvSj?CeKK!6k2#N)m^T|&mdsy#O!}RSWMsb?SC;jk z^|)`TS90Gnt}NTXJjdAY^wAvAZyQ&Z^gn$Gb&un`;hE^jb;G!_Z2j<@qJQl`j_|c{ zWr;t}DXtryUrLS}Bip4;34N#bS8_bkz0yv4dq(;t`^Ar>U$QbI{gOY$kE9RVQ5N)P zBmHXVN7xOf8R=KuB7S7B37;R&NWWSjeq`l0e4m)(-_mZy5$)&u+h}>7Ml%(xdp=Jn z!vO^GQX-z$FU;S+tj9G(y|OyWC~_XPU_7s1)vCvH)*$stgn&w3;ly>;v1aI5xzFAEb$MfiEnUH zDZbRx-<22ohwxy(d0#b&n2jq-{CUq%$NQ&A=xkhBs+YWz5vAl!J@b!`*?3|8=??L= zdmedM!q>)?CI0CS@vY8MiZAu_cjbltwdLZ^=XLhq623OBEb*@`7vFkCDZbRx-<22o zhhw6P_9;cj`J>*Ix9i>SA>5|du(cVdm7L*McLk+OpOm~kcI zh5jM$fA~kd|CR8yab=0WzZPq60lext;{3C5<$_{==IMPP`78N9uI-m2;`#iC?fDm6 z`tMOGx{2Sj}OIo@g0#oLT8p8EE`(@}A~I2Dyt;bn8haL@~9?UlX> zO>~vVzgK&#c1_qn{pD+q44>U*>U8x#LmK-{)EzCm40W^!qW7pC?7ejF^k>Z7VyXu& zLtXn=y$AX(&)YlS!Mop%+MKpg>wcTBJu+(em5Q&VJ9=OtF5vvAi@tr-+w_=g>hHTi zj}_8!*4p&W|DJ{OTKq3sul^4%ZqYBX{xgdE-xCh5u)W7>(shgP)$Yjscxy)kS85QL F{{cxvuG#fe5il(-`f;WQi8jkVvqh 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 N!dv>o#;{g1{{uMKxugI9 diff --git a/sky130/gds/sky130_fd_sc_hd__a21oi_4.gds b/sky130/gds/sky130_fd_sc_hd__a21oi_4.gds deleted file mode 100644 index f606e370a3615ac28f1b98fc681fadaf5a7caba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8678 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a221o_4.gds b/sky130/gds/sky130_fd_sc_hd__a221o_4.gds deleted file mode 100644 index 76e1a41cb7e87169e9a20b2d6f64108e10eb063e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12334 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a221oi_1.gds b/sky130/gds/sky130_fd_sc_hd__a221oi_1.gds deleted file mode 100644 index 223c55f3cf2af86e26c17f578a71dde3e2a5d43d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6716 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a221oi_4.gds b/sky130/gds/sky130_fd_sc_hd__a221oi_4.gds deleted file mode 100644 index 9c8f2190087e580b88c4087b27838da9e7d461f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13368 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a22o_1.gds b/sky130/gds/sky130_fd_sc_hd__a22o_1.gds deleted file mode 100644 index e2a6ed59b40d62b3313e962d72541151810a4ce7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6732 zcmbuEU5FKB7{}i;bLQimv!>CaY;BN~m|>Z2AfnaoYMGg z`!Vm#8C~pxV4dr(1j#v9cU>-Vx4B#L=dL4&cW!@b*XCV&oa+pu`}+3HU;g#czZWd| zV$Se88ymNp{KVF?cOr<%+{fy&GY6xJ2cn1YU*4(DR6(f_`1M3 zH+xEmfBn(%nx2sLVLdnEs(O7>-zWM`uYVb(=TZ26li_nXN8E_=cKSv1uYQN5{s6yh zvi7;^jnVg7&xrbk?R89Yjyl#grmy1qtaC<|v7Qn2+O;R+6Md%rVtw|LWWN|Uj_Kdx zmhoAO+am{1(^9Ir0qmLHiRtjkx)e_i*i5`2pwmz|+%> z!uuh3dIsCj-a(AH@mE~KEAT|#?Z)E~jzSbiS_NJDT3B1@pBg>^-<4D{7W&XVPs5e$lp#7y7Pfx~! z=~_;Pt8tF`G_qU{;pph-G5Q-(vbM#4Q1*lBg!kLt=6(W?evDO@bCZyhv9U?xM#S^; zyHWJB&0p(EzG#c%7GBiuD5X5F?{Cp#EpuLE-Fw#dK##Z)<)!-M1=Sn5Pf%|}yi_00 zRDDL=2h_*LndSQ6fa;ChtEe|3Ug}@Ly}|xx{7v;0MEk z<8v}Sia*SQu{MagMBIpYVgFf=^GY7CG*dHy|NPfH`Z##OS+#|j4O-%)6LrN zS|dmFTjIu&{&W9M&td=VYqGW|Gqq*|0e(ZkoQUM z_l-^1uW%S6JU63{@n>A6&xObn_44fv`S$dE0qyZUt9B&E2hq0~xHh7k2kY_RULnsN zPsH=>>weeiq+>-uuQVCmDRbnEA=VSijc&VtetSaSuKg$F_s1;ch4#WzP0}x% zqkg26Crz^b@DMuUN#82kF`|Auzfb6wY}0o6tfCJYy$Ei}k@IjCf1Yet_C`K1TMRc^C`kSKjv;do`~{tx4ux z->vzR%)dUlNsc$;M*2{1WSs39$ISNJKT zQE!BHt?HE$&(Bxy|MY*pRd2q=tNQEjO?%%QfB(nm&DS_S{{ZWp;~pkCV%#NeY#sj= z|6rr~hKW)Aspt6n^8EO>=(#V@zj`J|_)6SZ;$NMmzST2E^`)NvzP!*sf(QNizLOC# zi5pA&qY?Fu4;$5&diwkFLVx}ar*FC=M`$H(Eb&iHs&Bf(sJ_(G-Hqx)}z0C-}0m{Cc0! zM!vQTtLwF?sH6&qC(<=P;#tN(56!mt!#p7+)LD%?Uh>p0pEAE>+ zeswxEQ_mZ}y74K7-~)Q&1!~-xyYuGVKLPLROPP8C{pP6Qi`4{2jozy6pMW<<4R56X z9W|`2tIxOlT~=Az6+gD>@zpJ(e$9HUBkGq9ENRjAj@KWb$nvwU`i14|mHB)Bfie0u g;y=4s-yQYiOQRgJ_WgOiEB615BiZ0(rdoCX0^~dwJpcdz diff --git a/sky130/gds/sky130_fd_sc_hd__a22o_2.gds b/sky130/gds/sky130_fd_sc_hd__a22o_2.gds deleted file mode 100644 index af3db2dd84679eceb729e7eb47c01b894521899e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6892 zcmbuEU5Hgx6vy|y=bn%IF{9Q{ObwNlh@h!sB{ESnqY+|i<7lZh-Z4cI14;40q9=op zl;|bs3&*6yiY%fM>cxkQ9%2ZCzKA5rmx2lzB+RD&f336bId^8xnP$4+{O(df&!maRCo zaOjoI>s^PRt?dYcy}R}=Ub3jZV|#t?w)$h+>-DXjoxAIu&XpqPf|jED%>}JR=iL06 z9{$Fk)!A3f(D=K*6|iRi1uybo6cNjnHmTy;9<7 z|L*_k|75e?e2tU(_lUkNp8vDx|0@>fXhLrvz9Vi#dpiGddjCu4zi`f2{!sNs#548& zH>zv-Iw5t88z<808XjhyF@J zj_3WY)YF+DH7kRWhH{*tc)h!w~qCLG{YeYXkxt^4M z*7`SAhOqYd7!gnFdt-lDZyx`ZrP#aY68a19`)cG9(>t&2Mz<4d1)UN4iN=3Kj+c2l zj`vwY`gsf0kED+mCgix@YdStj-x9_#qW?sGGN14X9XI$PA;%9&IzGv9*lwgBb;gYO z$oS-Z$cWxJ8%QfJH<|B##y&gi%`)F0Q0or0pczE4L)1 zFXKk~Qg39O;~E*S!Pht@KRth1y}f|3ah@%7r8ojDg zjp|E1{p0pbe;*$7500dWn8b}a{{D#i21ktQOFjML_DuiqwE9N7QiN9G#vK3fwE9N7 zjOt50{p0pb|MFq=m16+wAcU{PjXD11!|GdEYE)n9=^wXe`d2rpf6Yq~z7jX)_*XZn zZ_P8RFZJ|~+cW)J=BTb^*r>XeIYx=+=r!+_;S`ZK^*nxs&H4Aq^`ewqZ{Vc&p)u_` zV?=nof9mjvh}6gRLA=;>V?ot+&GDz_ioe~c`ro05%J9Y zgI4r~uiPgX;VW@tjz9a+SME1r(wA{#p1<5zz&CnE^AN(f>3$=}zq$w7)i~dGq<9H+ z$GCBI_Waq8_odVu!(*y9BA#Bq0jVFmemK-8?s?>SLWp_8mmj6Hr}bMzZ_j_|=i|6< z9ZXo=LN#)TiT1Q!?|01qB-a0V)E|yFBkwI8;zq=C^}$@#H~5w61LNF$efX5>jS-Js z_!|+=^yhtVh<~i12Jv0u#{O)*hrQ>0E!VoiAMu-UWApuL)B1VC$bBvP?oSc*AaUc` z9Dn%AbH>qxWsJpqjA+lCzt3k19xo>n^4^MZBieKI%%A!OkvH{xei7#6AKan3qy&ie7WhWST35;AXj-ieu)Kl_C%Ro~!6)${o%ZqJ;5v`_Oc- zQx~ok3sU?AYtOi`D|`LR@9DfNc;4nZkeol`#=QBnAM2jF2Ct|-H0IQQ1=m>CJ)esk z#JnYL%$Yx*)0ubmpM=a?p5J5U<sKFp{p7it*H5G01Alysh|B(AnfU%%-#@pxU^cv6G{b}QIoHOgRemZ%IvO|y6_v~Z zA5qoR3(tDj6rJyaYYY5)T>;3Nbm-u>3`Hq@O{S64sB z61-0Djnl}SZ+tcL-f4K34m8x$m^W7qZ+fS>YV=lh?=-x*Y9ZcRjaxO;*5v!mRYP?} z?ZJZ&JhZN9&;FbKg47xH_pMpcr0<@pe{b`ytG+A0UR~n9W{kdH{O4!uJN#Z;>Et7| UAAhg32l0P1$mD_M|qYwGG6g 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 a;5=(DTa)zn_G}~lPhGac_~>4*hyMa&5Ru&g diff --git a/sky130/gds/sky130_fd_sc_hd__a22oi_1.gds b/sky130/gds/sky130_fd_sc_hd__a22oi_1.gds deleted file mode 100644 index c41c64204ab878535bef7b52f21d06f1cc38268e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5758 zcmbuDU5Hji7{}*)pZ9eut*zKvD4`I^Qg5B8+JD=RMZO^1J-AQ)u@EdDJzdUkwVBM!H zrw(m-*z{)g+TJ|hyK8cF|EktgJ6e0Ux1Qe7YHjQ5duC^AwMk23@+)HVyUDMNjWH`0 zC;0EK<_Y;gHmBTYN8F`L@aOdFtbVc6zlHjv#zaFNXP{tQIU3T>&dwgCUJ30Zq8Hk@ z??3cE{h#mDtFQ8s{=-(^?fU;Z>i>qpdADNn96lqiM7f`Thd%qxnCxqe)o{heC-{uG z66HZX{i#>dmwIK$pLxcFwYyIv1G=to6+5LqaMSF)Ta@>lm(WWEI8+S`NS>Rc6 zy(n33+f~kl{kbnuqm0g={Rrdh$auU|%1QQ_&rfOhHH3t+?=(*+ZQSpF%U^GlCFmFP zRc7c5FD2r>Ue=qpU#DZ-Z}H5OoX^;=?R+N3>he_Tq${pUB)smD4QpHE*axqp$bXFzTI?5%eM%b-=%JaSAMw{O&ke;3?)%=6=LCD6a74L3{vG=KE{t_Qp8si&KjWTpWq-Xs z!KIoB_0Tf!6q+`XH_rn0 zd?)4g{y2--b1?kc#JDAlD+A+a&u=)-@Vlc>;s+dGCk*T*Yz#_lPS|UORra-n8gTM}Frpu0*_EKZZVI?`WL& zcn0^3D+lM$cbf?Id4R zq+ha9{773~RAjr!J9vhU^kq9r)St`G_NRDO+RcBe$o8|d(mu&{SgxcGb;?kGIIe83 zacxERr+i8LNS2ptE3)142Wg+AFWXUSe;P;&zbDD>LER=_%3qbrs}hXQ&`wU+}uA5BWlaJt6 zuO(<+ z-k>g4V{Tpgc~gy9R`%qNKJ?h84)@E}V;)hze#5#B{m^{<@oM7tUi5?E`O5sA|Aq_n ho2~zfdVOy;vc;;g4s^xgzN;tKpM51CY*%S&{sUg3#Q^{S diff --git a/sky130/gds/sky130_fd_sc_hd__a22oi_2.gds b/sky130/gds/sky130_fd_sc_hd__a22oi_2.gds deleted file mode 100644 index 1dc1562b0b0efeab4ccc5293d4e53491a058bf82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8630 zcmbuFUx-{+9mmhynYnjnc4lW+7t7iO4Yia)YHjim%0j!lrt~40G_9?sm<)~88WK=a zM50gPLn&HBw1P%xq}nPGM6~{)^q~*dCkdqw`XY!yQ50$)78^^A-|z2tzH`r{d(U>a z3(aTud+zsq&-tA*XXf5%C__T(!_;%JR|E=Wg5op~==$!8v(Odi^|@3W^S z`$DG|LOCkJzd|`*gb?;FwDE8JS$y4pAqN-ycM*Se7V%&7A2k0$^nV-I9}1zhmT(ge z>f)iC|LWDN7wH$_z2E&#)6@L5cbNahS-*0{ZS&X7zvT1pzYo{{GlYd7*KB`21nMH% z)A7H>-~GM&#r|{d7oj)$!($=P*TVvd^idbL^K<<4iySxo;x*&{aGd`c?jPGPo46i7 zw%#Q6!vKAX)t(UMo(w^xKEL1FN$T@|s>yciSKOSLzw&+mVxM);M|+s?4Ge<1xPMFk zbo|_B<6Gc~Z2d2U(Piw(Nb2p6csohGz}!XKr)YNiK3aTTG(BBEjsFu?zw6NVy&(+0 zUbA%t>+v7-9~rJ?-9kI3>1=>KsX z4w2M{cX~TXeXw4W?VP{J^()@=^&>gukEX^?IAX|AhO7D+%ETh2!+q32hRFTKJdyi`;}E&8 z+E^ozI{OjP&sKR>-_8fUuH_FBqOPWkv-Le}=gHps{iyR7fBlPk9}=Ob`NwDdc-?K# zFZx_CdYcm_!S>X@R-fnY=`M%xu3w_&k#i?p7on&A6SbcyzE(WHxMt+s3D-sFso&27 z&Ho#IF1A(^Zo*Gp%=$6bi&)Q95nh~M^gB&&%rB06Zo5i|T+_u&esSD$+m-0K^fN!U zH|BS4_T0`Z36X2Mn91+l?75v+M9-z4`LVq*zl#jM|CCQ9gl4*!$?tA@Zuykxx%4wX zwm0TiFM4k8bV7Jd7c=?Qi=Nv%EqX5f%#ZDj`8)^hefvN{6ENa(45!~F65<>yhJ zz5F~nCEoK*7gzKC>Pzkydsut=Md;c59>&jnv476}BJ@W8=y?xutQ&PP zS3lmj*ypMzYw~j!brJ22^XGLOx83hVa@^F#-1zM}jGKOrpX9iyi@EXlvBq5g!D9)b znJ#A5pP$QHM{qsPiz%<*Z|dTa=K1qFt~>oxV%<#_GwaXmSU>tj){VNDtDjwmy3x=2 zk*phaF;~CpPM>%6kA#@F>0)O7ypHpxe@e{TbTKo3UdMUUFLK`0#oYXP-^KmQ`z+D! z8=#B1{YyV{?S3tixpqGnxm`Z%ZufbStULW;uKwK{eBbgOi2K-xeQUay*}uFmX5AOQ zoDg+4UCh*<_dPuK?0zYd=bqgUMdr>wUdMd;r$nyl;x_rLKm8)>PrsO}e{mnizlybg zGa=?-x|n(Y;&sfm`}s)bQWv+&=la`ofJm-8{bFwYTX*@ow_Z(%bvIqitbh2auOIJc zxsD{)kGhy!KVDb<+gx4^pxui;3xx4!D_B=y$2 zYql?YyBJQnU!>0dMe58I(f?c5XDOWF_^OfT+A}STgJgaeeTW>N-G4^1U$%?PrB9^J ze#M4-tIrU7iT%(0t|oH_zwvyM?SmU?vb}%N+ezlKU1TnOB6apJQfIE%Fg~l#_=lc5 z9@k|4e9QAmj&F3jCi|r>GM9dlI{Ou`$@k|U@%x10Bx-*YUOvwi-@y7)7mv=Y?~LD` zGr`ySqx+5U%{+g~_`CmgpFO`qKSuaX7c>6qC3vpjwTkD1V)Zok2Xqm7x<6;e&+EFV z75!p)#Qh@lteZN_hBH~b=>UD78)Z_MvME-v|2lc}t<(Q{dX(xQ)^OIV|zC z)DQ2b@v{Th;DX2RzBvg+HcJ6I`^;U&k5Ep<{!Ssf1l;=ZT7EpHy$)M V&Y$F@8!ngn-z9u4D~ziX{tv2=88-j` diff --git a/sky130/gds/sky130_fd_sc_hd__a22oi_4.gds b/sky130/gds/sky130_fd_sc_hd__a22oi_4.gds deleted file mode 100644 index 283250fa5b4d5ae350ddd0355fe8f9b22101616b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12136 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a2bb2o_1.gds b/sky130/gds/sky130_fd_sc_hd__a2bb2o_1.gds deleted file mode 100644 index 44ed4295ebabfb5a75f05c21d26bf0c3fcff2d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7314 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a2bb2o_4.gds b/sky130/gds/sky130_fd_sc_hd__a2bb2o_4.gds deleted file mode 100644 index ae12f5407c1fcdc5470a5987caeeb6572a85fc1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11550 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a2bb2oi_2.gds b/sky130/gds/sky130_fd_sc_hd__a2bb2oi_2.gds deleted file mode 100644 index 3d065379d4e82a981e666afeb5b571519025cb92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8944 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a2bb2oi_4.gds b/sky130/gds/sky130_fd_sc_hd__a2bb2oi_4.gds deleted file mode 100644 index 3171290681769091198f05a2b19ebe1bfc994d84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14388 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 CxfuWe diff --git a/sky130/gds/sky130_fd_sc_hd__a311o_2.gds b/sky130/gds/sky130_fd_sc_hd__a311o_2.gds deleted file mode 100644 index b8eb11396ef8e78021372c5e067292074bea2d63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7464 zcmb`MTZola7>3vW_ul_L&WwQ+Q(hD#B2APDNlb)ef)}1Lvr-y|N-8lhlrAi~=%xdm zBa)JEI!YLIAyKzoRCEy{B3%{H5vq&4kgzCw-|ze1|KQACj#C@-+521TUGG}oI{b$T zX-JaW!=hT!`aX2SXlRAY!=>f#p`WDp@4RczoqP6$u&~~|VdBXZYd<^m`*o{7zH0iw zwp+rY=3wojG~K&v-?HUbPu;U)YVX}s_wAUPx^wxmWxJ=Y35|9L=};1W3+ZqYLKs_6 z$N$-9!I*y`yVL$%#IME$_?PKdntnm1e;M`HhEQ8s;wdN?7uQzw4^{PN&YU?+y$J0V z*E=m<_Fw(~>P!9BIMi>k+W#r@Us&X?el!H;O>9n}|M-ZAm;1je)30OxN8s7KGKAsR z3wBrFcMtu_73Bi5-$egJw##yn?NTQWX#Z)>N8`A+TmQ5m+pS;a?UT$~a#=x^*PilnlD;e#=}Vo+ zINKK)r>}Tc|86Yrr{UjFcN5kZ_HWL=u>KeqH&xbKMc>=*x;_pI>W$D@T#V>DFS@RK zeTmRnT#V>jpSiC6K#9;E5E=KgpU6`wPk?VfJWHaUqaS`R^{aVSN z)%)A^Nyhpi*Nccp^~^i{bE4mDm-A;lNB_CjsTb3Yt`iZD`lqK|FSg!vy@+^J-(K(f zoPW5!Ev}zMKj!E0@JYXpj2sZL54K?ao)l+XPdxv*9{UVu^2mV_aUGzZ*E3`FdQj01 zEq33bqoVr`Ef(YctVjQ$qb0)E;$p(RfDvnnTiEiOj zEzy0GNipuvdi1TgN`$Y)#fX1+!F_AvqWgvy#JE4}(Z4ocB77|_R{gi1eLvWQp7(Z`q z*WY>n#qPAp^XCG@%lb{GZxr{#tbHEO6MjFO^`HB!vE27x&aZv{HN@o=|BAl7ylL+!hxj<4+$$zYoFt>Vln3SbKfA=TMJI;yT^97UVa4kSwMESt+caeYQ zuZR4L%p2okEPt%WyiuPMd9%0}$zSiZkGqe1Ztepk#%*yiGXCM?-tUn|3bNmfi?RN* zUTq`JP3Uu?PZk$94$dFE=h z{OkkAoxWd?<7QkOFn-gw?uG9pa*s7FQpdQ6 z_-y{`m_NSnz&B*^ja?`?HqLp4&h92%Uc;q@(HW)zQyMJu(5&J5=Ae?EJlZN2Fdg4|V5f zsVC;4ZeNnC@z<>j@FQC_a~e0_X8O1%viqU)Q8VYYf99KWs_QrZ7q$0%KJ!g)yv?5H qYN5J?HwH7-+Gbm+V}p0vqUI``Iri~gn|&Wm^#@9y!xpBc5&i{%vUYj^ diff --git a/sky130/gds/sky130_fd_sc_hd__a311o_4.gds b/sky130/gds/sky130_fd_sc_hd__a311o_4.gds deleted file mode 100644 index 9c9d59da13d9927727b5d84b4aaa04e4baf32a21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11866 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 C0GiYQ diff --git a/sky130/gds/sky130_fd_sc_hd__a311oi_1.gds b/sky130/gds/sky130_fd_sc_hd__a311oi_1.gds deleted file mode 100644 index cb19f9ef2a41d254d28f80da5e1c9e02667a37f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6300 zcmbW6TZmOv7{}MX?|o)0g`t>~N-D%MYBCTR3um-^FmIz)O5@40iz$Rkltn~AM3jUP zLu1zXVdG)TQ}deedG3>#`FczjYH4QTl&?3lk*pUdd(`hWQN8x!INq^k=fK=++xKp2@3^~t|E6|(|Ge#iJ*j?5FzkCO4= z9VsW1$I!3$3$onq8|7HX@!i4oiLp0%IqrPegSkS!dpDK% z6ZDKLtNC2jV_nlD(61|)?Svk2CCcmlQIG3Iy)tET_bfsONfF&T7{C z&R=Qw8T3lT8~u5%&_Ad1^^^_%%%e1s{L1-(iwyYKXUo$n2d^EiSpY12mfH+ zzrkAXFPI|#7+0daUXL|m{sc!#MBZ@jm_L>c`IEhfdHWIhyP%-|G;#-VCCY34lf%#r zqOV&@JdUw2t{kk_GeS@w{78(4L!!D^Xsrk7V4u zA2<(|7gd-#%mSV;^h9-0_|(7(E63X0+qTdza-( zmQkmKzEk`5KGyfY;A^yp`<|p{XeCgqz}uL^r244INMcDcpuR5S%2+vYT_tq2rD#+CG^ zUdcGyRo3|1_mLL0Xg^z0kp8?Ilx!!({3_{_-6?(~<7`Jc!EeLFe2iAQJap{YfVS`` zQC^;}<<R}R`fy}FZ(a9>Px=b5A{`6{U_+vS9w-{`FqX1k7c_=*P5pkJ?{bb-<6m9KS3}3 zXKrx*EYWZ3Ie(Vb{#W$LVew73D8-lih5oL*)}Qt0%lkMdd~ICW;2({NZ@gD2z7e$a zcjdMItViE?Z;6Q6xU#`NoGrfLQKk5Xvz0bp>(6@h=XsD5zBaCG@b^c>H%OG?>yIj% z{aKH`0p2Nd!q>)?4gO}g_Up;rb6M6X1=cK*0exPII}Ik9dwu54I8<~eoD|D4d-xYFq}EH%FG zll!C3#4~-=OV3B!ejCAux2C&AZLcS%qLL~+R@EzBIO{L)O=RK=J^p)<$7<7~ zh5fJadDZk<*WV!8Z{q%V$h~==i#q!Y{r`_@Y{hf-&Q7TJqJb{d@J`?8);qmY)x%wQ z`=29gM(nIzckVq8`FF6LwV^J(ow^He|3jVgp)S;1?*#9FXRP^t|l PKhFPC!0sO&MWOj0U~1@9 diff --git a/sky130/gds/sky130_fd_sc_hd__a311oi_2.gds b/sky130/gds/sky130_fd_sc_hd__a311oi_2.gds deleted file mode 100644 index 4c650a23ed4a6ae961812d35e205dd91104774ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10464 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 Vc810OyR%vGhlNs)95rdU{{yvz#fSg^ diff --git a/sky130/gds/sky130_fd_sc_hd__a311oi_4.gds b/sky130/gds/sky130_fd_sc_hd__a311oi_4.gds deleted file mode 100644 index bf5bb524545945e38277b9b2e63a74ee1884f0e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15692 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a31o_4.gds b/sky130/gds/sky130_fd_sc_hd__a31o_4.gds deleted file mode 100644 index 74ca9f8ba57326bf0a19d94780b408cd15147ba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10006 zcmbW7eW)E*6~)h;d+*$j_nmk1K5Re(mb91} zRS^FW38qMqw!|Qf_)$ugP(&1Lgb4PZDnW{>0GdFp2(!4!+hw3_lEaWe-5Kr{=og8dGO$a4}~yjwm-6T zWXq1{pZd=&+kds`#PPd78P>Jywd?Zy@S%q`FMMG6-g}l0e|Guv_be|TT-f}D z>V}YyW#RRZk7pr-jgw9M8~@DT;6IT46aKS^-&#|p{$bNkM*ZWLE?s&igvO$Xqxa(P zA{B}@Z;RVUPhQ%(H(Y^X#k0IQuU$&Uq0Tw{pf3quV5?>m!#f&#EUDA$F5iQmB;5#SBUXhTwGXD zf0XsiVO@287{XetL9zD({Js@qh-7@t_dQQCKJ`XP=BIw?c`|x1(`ay~jZhsb#6qn;-jZ!s3hd=ujl8RxzsGS2-& z_;}{{UF;vhBvMqk$LJw=&I*m zj{C7)A2_pJo4mexZIbOJMoS`I)$cZaYt{F|U8dhy>RbPCU$K9}?2G#<;#L3s!+Pw? z+o%_Pu6PE{SqK)d>KDuUUDKY2{x#GaIdZ_`BH~s3fl|-&Lx*d}`W88Iz~dtFRlQ%o zsvr9>_tysYlY$qZXIxC`G1h0O7opwjdZ)!}{j>e<+w4>bUyF+g|7^eeHanvGQ&0bx zuk~-;=)SEND}=Ab#e{$BM)z&KD7r88^pE*k|290>_x#BU5wp0M@NZvm-~36@eW|B^ z%-8z!K1u)Xp$eh3xR~(ooOa*tA<=!Qr+>`X`u84j-~N^g;cIa*;op12efwKP_obfx zF<f6UkV^ZrENiQ^T**WzNrfBd}rP8=8AmwNige69cFDfgYauR{1*Tuk^+o^s!* z`$YGpp8hdk>%ZoR`%dGY#XcC}YjH8*zvhVhPA`b=OFjK#zSe($W9U1;=YoRpwYZq@ zAMADC0lWSrv?8Rz&###xuhIO`V~XJ15&YlZ%WqxN}x3FDr?KC-qX z>l*vI*GICh(Jz%`e&i+3lk{a?q%UzpO547GVUYU+wuEwWb-NCpG4%V2 z#FPH~9!R~&?~T-ph}Y`J|LgTnoG8h<85dLa^ElQ`eL>W1aWPSU=Xv+-ez7Ed85dLj zJdVE97lg0H#e{$Rf3C}aR3UU07ZZAZZ>Dc!u|nu9E?z~?d8b~~_i*vD`S<%<{C+os zeSzQYW{*_(D)wW>#jQj0Kcu(k2AuEn=wW0J^)N0XUR^&!dOpvfj?X(p>g;((WJ*7Z zwVL;^U+=8&=h)8~7kl;oJg#%h^`bq8LR>_=cKm!^!*TO@ipcTX^PI@k_}OQBj*0#k zeAD~S=P@x~@BeSi(;WOCtMIq*XIz}CAHO|My50NV5wTZVT)e$r-@gg#b^(5WuJC32 z&bT=I{Bmgi+s9p(f2>02EG}L}&%RM#5PhSb{WI>YA3vYLux@*vCZcYOi;4Pq9Os>S zk@L^En416MIr15=ze%EQi;Ic+vprrn??J5J2ycsviTWGU?%Oz3A$%<^Cj7%m9E<&f z&l?M3->|rt*gtq2pCeN*@;Ni(BI32{pT}|js4s|lv$&X;KOV<VScyj*OclJ+Y-`PJg)&H4qdfj|a z!~Pjjx5dRo{r0{B>xTC~t|KGn-r{0n{dCXzy65va?q5c%dy9*S_1~THad&@RA;xWS zF){vW9K*T?->MKXi;D?8-|OSlbuWC^oykHwqD^qt~?;=a2Ev_rj<>!`Xqo>duhQ z=i4@4yV{;)n0o1h*RE#I@m&qxOL3K5%gFf+tMwC8uVUo%j_Or-PoQhAUQO5L@J`az zci{(aqSsP4)jngZRd?`~bv|E>n)4mIwu<@Y$bG&q^Io)-x;4F0!)vy}yYu;{cCmq# zzPbJ?E1h~=SJZ#vGCi)!t6wP<|J!zLAM$_4dij6)&LRCC^WRus|GM_JyRCX$!P+bE Rdw)KU{~^t~(Lq;Q;s1Eg&k_It diff --git a/sky130/gds/sky130_fd_sc_hd__a31oi_1.gds b/sky130/gds/sky130_fd_sc_hd__a31oi_1.gds deleted file mode 100644 index a63d801dd6f1132bdb215bed09c679f526bf7e93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5390 zcmbW5PiP%g6vprTpQKS62$k4?7L-zq))=Ieh$J!MqBgayRaa&*&{Pfq{3dF+FY zb0_vZ;QEqkZC{!mnVuaOysdFyvT@|m#=*%(V`6aN&{Si<#kq6oRiXRErB{c}x&GA= z{`xDwq+iI+IsI}J&&QQoe7>2LOq z=D~SpJ|x!(pj`%gxj(bibbS~*=djLj84)l0?`_p%U5`?4L_hyjy;9<3{cv%=swU~h z*nNopdal~1aUchSM zzROCS$6PXQtnm-`s&AAT)t7qa;ma%inJ4e>V5mg+O59lEA8$}ye4#|>ByOzLYu@n% zqvlOL^N%-3yfXg;9?YNjd6S4q+*sqE%&TvD(x|@F)8Cg@`e*0VH=iyMT8SHL{IhfF zn@=0nmwNj9@}>UvyvF>++jah$#D2^9<9;jL?ke@NFGC-7X*q z7gKNKvz~e*;?@3`XU-efPm>sb&Ohf**gF1=#rs$EIrKQ^8IuvrJ1!&QW&csHm*-=+ z4(oOk*3SzC<(xAGJ)UC@@yuV=cC*I{(l`A= z{YkdVawFTN&e*nnd)}Nt?t_?*drJHkZ82^fY%@NlKZ~(`4*J~%<@|}b5#>wAx1G<~xU2k5`dpdst-qA`~Rx13Ks>-x`n;Zv$NvhR!= z5wFf4_2k?L|0b~}sSk|ntM%N|IDWEcdUD(tH`a}x?1{*q`ph#&{?e`|;+6TcUb&=;j`yHP+=zI2{+8(7&#E^@Xp4Fy z;-c?B7xDXs{yx#;(sd!~<<~^W{yW#h-JVzH9D@2Q#}%lkly`MZTQ@#9zId-Sp-WtP zZNR_R1*q1wHW}`Hh1aXDOI&}V+U33JgZGY)tw4|dBWvpKe`rUG9`6>H_s`eD{FF<3 z`Epp!e%a~_?{F(ruYu)TRFC>y-jCd}yhGk4q8_>Z$}^`r+ClG?sN-j`V*eKP3NsJ> zTdB9hit+vSdxIaf;pNOX?-N@ucvUXXxax;4vtFV1>vepQey8~NSL^$dQT$>gm#%&P Py*IU=AvK>2dByI3Gl7JI diff --git a/sky130/gds/sky130_fd_sc_hd__a31oi_2.gds b/sky130/gds/sky130_fd_sc_hd__a31oi_2.gds deleted file mode 100644 index 0479855ebf1193d49eee8665499bd54893d27cf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9146 zcmb`NU8r1F9mV&YIdjf@-kFi0+%{l~mQsk;7$L+Iy*G`N8k#muTWuw|q!w#P{c0!@ zee^;6DB1@rF+wA?Eq;Jhu^&j0K3GtY68fMZq8Jp!J{U`AYmvCt|9{q;J;^=$dZ%7U zem85Mb=Ll#ea<8lA4y%irSdFCPt|eHL{;TC=!01nMHn z-q1q`fwg%{)`{1**b&zd<=7>BFo!1c{xcvLt8|f ze<*hPxK3XaO&SbuW*45xBk045WgGpEdWrC_SASd29j>LTLm0v{Bl^d5@#<#(0QKa2reEy5 zD+KCd!+iR#_1{VOcA-80s@cI=`2G>F{Z^zasr?yU6*(axq-M{g0pz zD^j1pE3(~F)I-F5*6XjYYrfe&gWJuBKFrX5?n`7BbByy$q|W{nsTbe!a*}$lsLArd z_r08Cx$U#!`E}}7?XQz(Ft-li`nw}yU79W)Nc-9E^o#6g`bFrM_D_{>`vCIC*w0xH zqxJQ zk!!k`$mey;rC($&bupD+zTmmt&qhS9>0%0%A7AIb z@!ulCXS$g1FJX-rJzW1-#Ghe3Q5Sp7_2+fvN%xC(?t(5tZ)`u$X*@@baps=!jGy1^ zJnrRdsC zqwW`Z7UX?J=#BN~xta5q=jjQH6ZP-i;kkV*S=PgdT+_u={tdovd*^C$-S(i1 zsrB2PdcC{9h=_WdE+*>F=REEkeC`vOOI=Lm^E%F3dwvu#Z%r2y^Ox6g-Ow*`-B1@( z>!;Z6?dJOdj-L_jHeF1#zjMmxUGbraXRyCh7ZdZ3*V*$C{4-+QO&1g6pa0tH-8mi+ z^)_8h)Su7a95+6niySxVVru;C`5ohC&-Wt6&2%v_e!Pz3M!(2$qb{b#FFWY{&SxmD zeSCh*GraWUyvcqV5&dqunCO4L-(bJ<{fEeYr!J=YpVx8y z&_ClV?k~ke|I^QYr(a~hQx{YHZ|`B?=lOwtl0NFp$TCT+Q|as5^8K_cDej(8q^>f-$S;fws$d)?h4ytljGX?k4$Ie&J@bK7M^ zt|KvIMP45-mH+fFn z$nWi*-Ww6^rl0$dG0}e3ll?Y&F(Q1Xi}U`&@&1ik+Ph}HFYe$z}2H~6*o{R!^He4btSU6E3!yF3?VodYvpHgm_Zrt&mA$|ky s`SD)0s{al9_s;nbTK=}?_HXU%xy#(xbEDmTxLoMJ%=rCq^w0C~UxR!+`2YX_ diff --git a/sky130/gds/sky130_fd_sc_hd__a31oi_4.gds b/sky130/gds/sky130_fd_sc_hd__a31oi_4.gds deleted file mode 100644 index 83e6b00106f9d6bc500af900db036bdc0fd4c18c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13010 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 P^}mw%=XGpen%RE=;XE^3 diff --git a/sky130/gds/sky130_fd_sc_hd__a32o_1.gds b/sky130/gds/sky130_fd_sc_hd__a32o_1.gds deleted file mode 100644 index 278bbe14d29d69ae05ecad02f8d9887f6bfb4493..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7518 zcmbuEZHQD=7{|}txoJs)MW^JV|B)THIo1~y_slDiu?pjjX3Wd@K6QU@H zAc-Ob%W%s|q7TuBsIT_H4?&m-y+A=|Qcyu5i@l)R|9_tI%)PVjJ-Xw->~H2d_y7E# zbMCok&b@1569k(~S1Cx&n5yYCiMh$l&3`tvAl|j};oaMI?=_~Q9IfboX~~-7NB>;9 z^0Pa}-WHDh>JvE46OrCH3EB^&Ms{$FKB(F~LG`bH-$!#FZ7CNHb)N zveYf@O6c?BqxqLJfBg%bw0n%HUC0>ShVQ$KQI^lhaY`INRlY;aSHnA9XG|OFRmRVu z_G8HJ$h^Ta$xkvb+m*p9m<+2Bb1e1Z9N>I6coyw{;k#pbDYT<_J4WA19ZJ+ORlRn8 zR$hb8>!|n6jI57wCE5%1;q6j)baO`P7+0cSQ|WhcyxK?5H_jux8pJ#cj>xts)Rb|rnNQ=*Q-@oL*4dD?Es$hxa9 ziyuk9>QF}dRKFHKl0M9%^!2B{TJqGs%1FN&#zV6Dc%gr=Mf}US zK3Rt)d~ICm@ej6$Z#hwlFZJ|y?S=l~0`Uz`zf?Qi?D2^mpxr{t-Ov zdVe@a#B5yY@sGyEH$JQsU+U@a+6(=YW8#~R<_N8gD?R?nG4V}DmEuc1{at&Ze`UY; z+G`N!-x9tyuJrg<_KR#Q`3BM6X0Vub1_&asPtfqIFn5`*Nf|_Osk?SWdM+&FSNRM6XPah)#*P*FSns^h)mc z>8nKCs}I+UzQO-QA1c@T^#S%_?7y;nRP;*3z5cuhqF%|pBkNZpUa03joOOra<%qg% zTCEVzW#F`N&oc89N}x@N{_$YpTeJd`jhl!Tkd= z(l>tT3i0LrCH*boYvW3fKRtNfsyAk2EdTcT+Zy+Yp7Yn{!MwG39ewk+a!BS~_3j)o z?`&M@nSZ?BV!!!(ra|=E#+9D_bDx#q{B!@-;04*g@%+2?!t>APVDzoe$`QUcuJriZ z=L(p=e4fC0Y@b(fJxVYJj=uTJ<5;(S9-&0tHm=-QJpXxIfb&MZlFwxrS0Y~6e;!ww zFZu>gik{CXTzjEDIEVV-&viq|b&qkSZ~kzdw9hed9vl2d*3Xi%ySRSpgJ+?IURl0H z^h(4F>!&_O|EX^f{kC!C{3d;WwtvNOFJi6v665rJ#>yuWSE4=de~I4wCVFN0DbXtt zxB3c7#PfG~e%@i?>jNB@&cMts{bV}$bcV0$nCxc3X{e~=9v&~Ns)-l&y0ZcknfTfg z|IRLpaNU8>VJmQGe;8i96#>Evm~Ku11Z$)>U|8rM?Pv`cA9r@Occ@`&9S4 z^<_F^UdJ2}^}yokpRvj>xMJ;?4=kF#I-R5H{ub4)-z})QCv@r-`|U=p1#gbI%(Yg= zoR!O%_qR|v*9NJ4(lv(F;L5I0T)Amy{J^Tgl}%^-iuG7esK58Y4NdyKEA>}BZqoBB rjOcqWzrwis2Pf$_TL121eOELv1T9~(TFK{XXYBs5X{$+4RcQVPxRYdX diff --git a/sky130/gds/sky130_fd_sc_hd__a32o_2.gds b/sky130/gds/sky130_fd_sc_hd__a32o_2.gds deleted file mode 100644 index a481a7fdd72a4d2c68bac00a8b4a5df03597c194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8526 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a32oi_4.gds b/sky130/gds/sky130_fd_sc_hd__a32oi_4.gds deleted file mode 100644 index 55c8d468c77fa4e753e983f33f84a0b3176d0b51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16306 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a41o_4.gds b/sky130/gds/sky130_fd_sc_hd__a41o_4.gds deleted file mode 100644 index 5f40cfbe25593e5e46f019c79dc03e547ad1a0bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12610 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 diff --git a/sky130/gds/sky130_fd_sc_hd__a41oi_2.gds b/sky130/gds/sky130_fd_sc_hd__a41oi_2.gds deleted file mode 100644 index d54d0346acadbcf307b96a8a8256838f2e1c968a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10214 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 J@iC&F{0G=$tZo1R diff --git a/sky130/gds/sky130_fd_sc_hd__a41oi_4.gds b/sky130/gds/sky130_fd_sc_hd__a41oi_4.gds deleted file mode 100644 index a4aac78aab07f4ba47aa57ba8a5712b121e5e8eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16690 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 O>3^vBk>E8DMe;9WYcW#* diff --git a/sky130/gds/sky130_fd_sc_hd__and2_1.gds b/sky130/gds/sky130_fd_sc_hd__and2_1.gds deleted file mode 100644 index c399a81e53239417cb8727b80e447dad024ff7f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4986 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 diff --git a/sky130/gds/sky130_fd_sc_hd__and2b_1.gds b/sky130/gds/sky130_fd_sc_hd__and2b_1.gds deleted file mode 100644 index 11af406c392e47daf3a0de96af6243fb2c94d0ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5620 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 diff --git a/sky130/gds/sky130_fd_sc_hd__and2b_4.gds b/sky130/gds/sky130_fd_sc_hd__and2b_4.gds deleted file mode 100644 index db4c3732bbe34d889a42c4082b0da13e1f0e0228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5802 zcmbW5Ylu}<6vy{H@B11Jhhl1yq{OT#%MrwsbW8}Gni|J^(RfF*hbTcxAEv%UU=K<} z`cxJQJ;X9XLNdY+eyBc$h0%jDA}I(3gBqg3rvHDhz3w^p&OHb1z|8NSweEla*Is9z zeeS&`GM=~2^p?E%jH#F&6PxSIHQCpu=0)4LZr-tJ$G9=wet7%9^9u(*Ir!V6702cs z*tcP|=?(L>y-~Dt+xV^hw=^Ew(%AVxNN%-`HtV1mS$sP36_ChGExF@4j0 z{C7v!n7kk>2jsO9XTfFobNVN&e!A1|ot&I}$C%P$CEk4>{`M+uJgZ;Us)yeo^%+ix zzM>p#@n6xZS6`+2DyR6j=`+4shx#g8{Rganw^_pe)xR~ye;i)VrZi`bsh&s7vGj$! zPl@+u`!Qv__%YEd%SUB=W%!wlr^NfR<1Kgf-NpK9pBoeZ4&IhBT!Qfr8Kd;iNM2dG zM|4W)JB@#i<5#}M-$MKiqzrE|rreM59hpyFlRU|IyeB2|(O;4$ndjV;%!l-FG+QOF zWZluv=)WW5@ssG8Bjd?Sk|!B2&rQiZ>sK<*c`4!BY5vkC3Kzq?e+C$iBIW;l=LxgiXX{wm{-z|I%V7Z?r`g;kMr|3 zi_Slp(#`{MCC1Ixr~1Rxca5Pg-bXl^9K^{6oI55MyL1TG$dPgX2g#EO>JP6^$$X4^ zM9F;ek>p9nD<7t0zJ^+q%-gz@6CLY+mG$%fj@|%|q)cX`e)Lso`-=LN>!&Oom+Px!JUJ+NlJR&nCG%k@d6Ib_>qN=CJuKxp(lw^Ex=!`k^^tsuv9XT0 zKAS{u!fWy8$Ub?fUm1Rn`+E)Y%6&K=$GM|F8=km7lm>m}{h?&v=%wU!V;xH5vh~XI zpiiFH)iTDKf%U-ap+rAyTsb3O&-ELv#CklE;U73>T)8q|Paocg^jDU5i@y@_-1^H8 zV(#ciWm?JzyA{E7vVqn<1{7jVlYTU-XsKA3v2L>b7xZLH*Iy()Z}ol%A)@B+IdUm zy-ofqV|mJ@`TYx@mb#<93{kg@D+}rmZkE0W-=t*U8CMqdKd4IIgQFQ9hn{g|LH~JA zbKUTH+9c|>ab-dM-Uxa(2R*!yA@>)?m2>j@$329;+)tW>uZ=4U{LOpN!oRdWL-^Xb zvdABL56?sDm3E&)T#0z@{YM}BIRScQd0hOJi0A67-^slByyN^WF>f1J7R;Z|Y4)1W z=O!=UoN?tyi+>~gc?y-}LL1NZ_eRCv$9~T`EGIB`#+9wlpB8^_RDAtdDZbRx-{o`tgSp}xoXQZsHm)r2 z59W$*a7rn@)YISPbNxejaNg1W3=y+&Wr2SUmrT9`$f0xho=W~Moe10?ut&J-S z{Noein`~2xFZJ|y`CNbQk@V$voF?IGmQWd;0S8V3Y8* zabaZhVZpfyN@x*lVu%}iO{C~+n7S^rV1*Zs%Hd+q0AjAi$+KgHj-wE3)l zs8x@9>?hGFD+ffcL_Dh>w))_I|6V2gkNdrf-&43xSLUbm4`SURu0%fT-=gRDs9+eq z{x`#aaL%}LIA722)71O54571erPG(O&EUBrzgKmeXqJaQCDX9-OFx=!emmm9uJI~> zw(5&hQArgJt3o;S!dx%+OlYDjO8kFi3HjPp;j$Zd%{(@I_8C*7tM>s!Z<(kk!UDKt zb@?=Azl!R07pLyG#{%)@?^f_mdZK~GP^%v69JMc=QhU$KJYEsK`Nhr|`ZYss)r)@W z+^6W#Y3lE7)8jgI?A;VSDxm((p%pFNyJ)@ouU*xmAF=*@`Sb4$m*ZQdJ?wSV*FBN` ML@eXs(H;cmKe)`yt^fc4 diff --git a/sky130/gds/sky130_fd_sc_hd__and3_1.gds b/sky130/gds/sky130_fd_sc_hd__and3_1.gds deleted file mode 100644 index 9dadfb6a60acbbd7ed5b3ac6083c01e475a74dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7250 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 diff --git a/sky130/gds/sky130_fd_sc_hd__and3_2.gds b/sky130/gds/sky130_fd_sc_hd__and3_2.gds deleted file mode 100644 index 19e5cc04901bc15a076e5c577c46d387c5a53593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5956 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 diff --git a/sky130/gds/sky130_fd_sc_hd__and3b_2.gds b/sky130/gds/sky130_fd_sc_hd__and3b_2.gds deleted file mode 100644 index a92d68161953fd02cf51019d7cfadda4bebd66d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6680 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 diff --git a/sky130/gds/sky130_fd_sc_hd__and4_1.gds b/sky130/gds/sky130_fd_sc_hd__and4_1.gds deleted file mode 100644 index 0ee296a62515f2affaa3efdd16a10ef876299cfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6498 zcmbW6TZmOv7{}My_kGS-3X?H8QPM@Mi4qG5rDk+OYP>XFN+ms+Qi{=o;)6v+PZB9% z_+k=HMM)RxA%b3g=_Mj!9-@aJl6oHlBf`p(*CoV|3;hVggKx7L6CzjfVv zA5CVWXqy>qMEQBsGy^6#x0_q5pG{wsJ-`2%gS!tNF{VFG9~yam#n{(p|9o)tt9vI- z@7Q7n(|YY-mK{29WZClj+RyH7AKKI2x3}Hi{leb++slke3S+W)k@?+Z*G0ydq4_cX zbywd>`9L-&1e3^e4tNRw_|@EB;O>Z9Jfd-x&23PKmy$9P9EQ z?)InwcyY(-2>osqs=B>OU|F+fl`|*pvGlt`)Oh=%_r9`~i|20nkDaXHg4E62- zU-ryiGbXf8}OF7ASwAqv8jX$KEj2=ZYAA6c%O14#swc;b zaV5%Y_32U3WnXww$G9@2j}Jq)4~u`&lRCzgD4)&$m>nPPC$2+W9b%oD9r*58VEr^c zLLVI&PnJqKnZE?DL!K-zE=oC>-;K{Bo-DWfSUELoes+AhSEK*n|A=R?2>BtdMEPv} zllkYlfx7fpa%@VhAtmGXvXp(+cT#C})%I7r{bAd0m1uhf{?LCV$Gv=7#-EJOOS#hQ z$NGa#30-ab1#)G3`8S^Q$sZ6ulI^fuNgwKz(9hQXQ=I<{YnSb3H+!;uu0JKq)2&iY z(kH#(NguYO4EZJF(oS-NCw*e<7ek5S}g50-tc7mwhxYM zhviC^QKv*+SB~G1oUi3NXqRBV|E}gdr)%1;x=qvOcUJ`vnxv}1#=P<{w^=pL~Hyc+5#*g(lZqzF| zZj38K) zS1zyjFV{-mAiJ=ZMr=UP=VZ^o6O{LN|c<^7R) zSi;xFmEHdGeCN)u)^>NFiOGPTp9LfJ^J(B(II?oTp94s&xvnwKq&S|cA@XMl!#aR zKkW4w8@?9}7&C8^XKRR=*zCSxMZ^o6O z{B1qtO+E7`nK$FgQ2qwz2lM9n(IN7-ab28MX%(uU2zxw9Mf;5JtgYd_DW16e*cr- z@A^%)I6^zc^*kAVHvP<&7kg!YJ(!q_ib^*|)~ipva273$Olqg+M(f7w92rbl(WsaLi64VE8LJ<_AMsC&sgc}4q;+sd5B zoNDQJFY02U_ItDkZ_c;OSTFNUwPfC_TE@Irb@~tIyH|CNyZaSt?8vL{60S8|#X$DN z+6|*!Gk(o_>}~2Fe{xfoe)wAbRX=0Rh<;^wmsj%NFhjrD`VZCX2h-K~z0_Xz#BiUR Q1DX5J4ZHqxti{Cq50Sd(d;kCd diff --git a/sky130/gds/sky130_fd_sc_hd__and4_2.gds b/sky130/gds/sky130_fd_sc_hd__and4_2.gds deleted file mode 100644 index d639885953caeefdbaa061089c8c3b4e20454e84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7362 zcmbW6TZmOv7{}My_j4N!24!@JEXAxTGsB^bn9+eQrjyrF(iuxaQ6!WgjiM-sNQqvA z3Ua!bh(+`e2|fAZn^*{49*Rilr5=Qmu+ZuMU*G!9-e>0QWu6T)zcb%j|MmaYb?>vs zBqj)+F#VMvy>6-Y|Y(_>I9;XO3UIcjVOKiTAc_ zF#U14wm(Vs?>?|(>0M*b>=@hs^w`cFV`JO*?zm^{Zeya%n4}q)KTOgS7-I%zhWPES zo^km=)+Xe$5`RTEn)^9^%^!^kpED*qo-=q0-me>@G`~wdCF&Q) zV_JLFFGa7+F!Q{3H>+v_@N|bx`!4=UfL-dt; zCE{Lvv{v*j{ww-Oxz?|bkBMHHjEY`~xYs|qEP7@7k?56(d-d6B(YN@w=riT&a(#LR z8wdT*o-GjlwsEDW|M5REZ^_3wId6BcrC;D>!l=Nj>>GNkj z?mz04?6+;#(bs?GNnhr#q%Y%2pFity-%zjQzF}PH+dsA*_7C;kKP2}JD{@$TnX()(F>=Y?``^EtN4a#f$+6)rN=+mD!yT=6o2aJ z@5-m2A1?oBk@!aE3xuzYD?R?vBJqvRE5(<3`n&Q{{}>*;za~cuM9jvO9{>1~_$Eh{ z;!8dKU3sa0dRlz5-33Bx<4TWzdRlz5-AeJLp8l@9)W3RId~1UR!q>)?9{=iL@vRLi z#g}^eyYf>1`eyNMgayLa#+4rb`eyNMgi7(Hp8l@9)W5kve4FPAgs+V&J^sxF;@do@ z6kqD;@5+n*+uZX}>-jRq`s*3TT5+szgBF((@uGex*TZuKbbZFmxG`sao5YnUFY32i zy`CRN>h_E)ac<(i%}Z$GMg3Z5_O0h^#Ebqbiu&MX+&ggI zhqvXd;(o@s66K}(@F4t`;%9z=KcPLwl}pR@(M#~f+KF$?Sv>$P;!2d4`p1XFH(6F7 zd~ICm@lUYM+5Z&#N6CIOuJrXk-6Ou)tODU{<4TWzwJ!bUvpC0rWWO0#`ufj$=?kJ$ zX4pHnT}Q-A$4}?Dif0u&=OEVt<4VN6`pN+6L)YSWqOT|i%JsEL$-j`CtBfl><8OU1?$+0lbZVNjvM1j-}sr&(eF|G zV869^8Rr+{%F*)iw=%J{eF#=WBSj6Z#tH~p2&n{lNtfBFY*-6})3ewB!q?jJKD z>$dVpfmpXTu54ewWA^;+&F>!}^5^|e84p8`ONn^VU!Grk%^tpAppN(1o=Q%xo5okN zen^(r;+#C&t8-B9$Z~sG;(mv{XYYrWR@ce@Q}wsc>8RG?D*Q2qza8zo@Lb?LfsFI} znUd#5{JgARlJV^8oaycOjQo`>Z+s@@B;!rovz098xU_hw4y*S3- zBR-0p9PK(lxzesvtnC)@uEV}RaYQ?%J3*Tt$@0oy zIfI8W-pEgBxTfDn%#r=zd@Joadra1A4UBI=Ir37X{Z9GY=QZ9JD@QRu{J!cK-+}%h zu0*_(-o6h@PN7~Oa$i;;^t|6wPqJOsQ%-q))Aeuj;To>+-2?WTlI<|AM7&czR&QR! zSp5kt_OCLVi?KsoiFi>j&tJXf5Z8}ghlAj3tRYAG*3ODQX}?>bOv!SdP0H|slqt?t3) zCHom~k#dqg@x`3_PxzYnk@O26%1OWQXYnKH!*-M z&75rC?3MOOw!?BI{istSKRbR^bQAB_<^6K6N#^k_dp0A4`WMs7+2U23aHrSA^{A-q z8Ru_NHN*>hWmaHflgzI0_nZpK8*}5KzIS-NYZ~?pJb^SmG)Z5A!^LKLJ!-xss$8Xd zWtVE4bzQ3Y#yt9j>ftWEMcqy2(W}~Td9g*Ts-WyZRhZ>lBp zZq<@`w`#mu?sBCv^Az8{r>*lLyGxe)cL~=TuBK~h;$BA(5 zU21-7`9HX3q;19hZ@v0IzOGHb-ue%e_rE`0!E>9JJu&2?sr4o9pNDq+r&x=T`46#_ BXBz+j diff --git a/sky130/gds/sky130_fd_sc_hd__and4_4.gds b/sky130/gds/sky130_fd_sc_hd__and4_4.gds deleted file mode 100644 index 7dcae6750ae66d20e39000bce83513fb1d4f0b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7534 zcmbW6dx(@(7{<@ccbnVJC@jU6P(cOOmWhUhQEEaLOH;cU=~9U$nvoJ=5fl*-72!WY z3AI5Nq97uKApeo5zX~bo3PL3mm48%ZQDOEx=l!1f&TKnp(}CUJ?0e4hJ@0wXWxn~= z<*r`8$<3+Ni$kvE#$4gfbf<^!U8kOJ-F(~jTet6YZZyd*S^D^*6(79%^F_o?)`qm@3{?;PtcW=oMfULxXQ{nmT^ zxbzs`GU`QK=MU2xeLU1J9q@k)eSdPU_j1MLUc5(KM0-@9ePnvExySS(;-UVsF#nOW z{QS6){UWs2J2!Hc=;K56-Cs=C+bx=|`-?b}-sZozJ0Rwrdaggu!TFz(zv)IWhg`>= z&@q4NJtO+|I?KD0h?aMIofyxb{pj1lUhWgVJ}yT5n@^c_`9ng@B0p zxES$I=bCSNKs4WUuIS@K{n?NH>4AXo^>H!cUte#&NgXFvKUML_uaxES$w zyUe$?STtX^ON{%oAN^~K1H#wG#Xn|9_sDW4FSYL}=5Es!t z)IUAnbm>3N^Sy7B&{Pt?uF#Yp|wkMl;o$Z<0+&NP1NIDU~jj$fQf&%CMc z6M0k5`S*iUGQkBfu;%fkILG7o1z{6@a4*u?c17ttQh z|De8r*8=o^E8s!=&A7N=xW4_i={oBJLg(XRO#cMt9%oPI!hoMa&$u`q@khVn0n>{O z+iaxu`a)bA*K_?)FLK@Rx?*hoG%kYg)6gEO$XNJ;_M!Fj{h*~@KfHHhTtqyo z=lY?xPplj2xqdt&>!-NK=B;sRK+Kzui;?-u-m|*rcLhYO>P6O_aWPi^ z>@mwbpC1r;`?wg%KW*E*rF$x}W{ium`Sblyd+Ip{B<{B=crmjOEX9a^5(8k@M#3QgX`t+5Kzz z{Db>+>it`Gp6y?8+WW6jcQKz|@p~WdGkAW9)bach>t9(v5&gn?4CLc54(=Jfq+iD$Rb;!*TRbxDd_Af0@wq_{dXb;QyspSN{Y8JDx7ga-Amh!` zD%Q_NE*O`{cK`CU@6G=C-|Lnq+J~;E-Y1y%kL|n=xjuMKh+OBbZ_uwK^ZXJSXPzSR498>l@1yRp-yg_{xpdnVx$iny z|03HvcUU{gcpK-O=$~D^XYDPJaXz~g+0OY8xmNwN&63>L)QN28^+m?%D>BafM8=uF z$aojy65%`D_;2C(8`oH##itdSC)d81VDA>oas86KZhDRs zyHSpguhwLF+DuxO|4&6F&nUe7*gEEgv-hOB%UphPjlWN+p}lizwq)#CzMgX(y7rbL z*EKF5%WpbCb^6MQs`-ql_7ByUoq#v~GvUk|Lpbhnr;o@R5Alv$-I%SaVQU??nl;C> zmH*a!iJ!5>@fqW|@oJ3aH>{kJyXj|`aq6+osK0iK9;tE{{70vsivn|!x_<#_my)Ld diff --git a/sky130/gds/sky130_fd_sc_hd__and4b_1.gds b/sky130/gds/sky130_fd_sc_hd__and4b_1.gds deleted file mode 100644 index 108645fa62027c6596ed34db5810baec8696f12d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7698 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 wWA8FH z%AkoT{|JhZCM0G zezBV!7i(uH$&H)0o;L5)$*VR_-ne1%>W!0=S6sVs{`$%Ju2OR@X-Dn{mkdPCx$&Vg zey5+#Zu^65OxfQezEy_tlj?8v`k_?+T^6` z`i8i)$A3w$UcRDy#Y6n3>2toSL%w3K|GD0O)IG@g^YgYEeJn6Pvb4*&+Ww53kK}#J zlci6ci|@+FeEA;BlgvkFWc2fiw9&@d*)95betuQo`>M~+Bbs%IaYm?}^G??G!2iOG zjI%zGdDbm5UVG2-B;$?IjLf$mvpmWCz}}3^kIb?>$$aO^jLiFeC?4ope~r)Y-_n~H z!{4a?$c)Jb%pKw)^8M!LcFs@jI<(sf{U;ft`?1+iMt>>YL45xV6PS|m>dlrX8L!RB zSe}peKcLT)Nj>!uclNF4S-)PGhw_Qe4Ih`0`=R-S?FX`qgR%Z=M)p7aHtH8Kp85qg z9M&toldOp07z=EdlI ze6PSSW%V}f=UcHSQgS{z=vPGlhx(`I&uBgBd=YJ18I$Gc8*vf&puV!g^j-dG`ii(B ztoO$c{KfJP(~EtNpR|4+C#;{xhse4a7en>49qXpPOVsV-VxWGuW8Kt?tebH$RDW}w z`L=LzqrWG7eOwIqw{fge*T(syOXz%DJdB=oQ!lb^>cvp~12_-RcaX=o2wxu;1O9AB zU+P8rGA>T@U*@lW);7r9~T4uBiqckGfy;M>gk{63;pX4nXa)wG+q56(Z>UNtDDa)tltxLQ_u64 zXQ2M-+vZ!_EShf>_oJ*o%@_K!9erz?bA+#ti@p9U{Q0|*U4P(Y&tWNb-4PMa`!7n* z|7ZI9zq2sL*U{p>jJ08$_qL#>l<^1XAMHf65B68S$@F6Mu=Ovxeb%3dcKQA$r(d7S zIJWsbB*u%-A3h@DdHrIqPp?n)qcINX>(Gn!t@w_(h| zk5-v4?=9$0(wA{D&5slJ|A_7dGm2GFn@e5 zW8DKdABe1*aWPcCdlkAJnCmqe>npH%5f_m!oWJ-ZTesx)9IsYrTsOwW(E9N?ocpHzR*u*=J}w6KPj!jusz2rkosWwFef*Q@l4o*+&d0@ozV?*q z>UhTBI6R^AaWSCh`yH-ZZBC9@Hy;-R>&JFnH|o2@y7{;mSikyN&~;Gvw>j>@cgDp| z@&4m`7>>L7d5(MWopCWR{?<7*?$-A?V%$D1_8b4G^Y2%p$FWu?;dnVFqkl*GfZc19 zK;}#LX5@Pl#zl9H=|#rbuL%92=a11+i`V!1qty|&hd$ibKD~8>oY&@ z0?rTL+p*r}Eg3nU2Htsz?1y=gKGccO_v_!Ue|x|6(|#=@{o1q4kEBoQi;VPPT%-^6 zqK~6rF*LrR4c71AzKrxATy6d&`(<8aztoAL{yUdgzayt-WdFl2SpOvZWnN^z)QRf9 zj%COHXYBtIqb@lnf~GcD#?kPl8|7;8)0l#Kx2K==f2X3-|E~gv{V;y;x{qFXmvLm| zVwW6M;_stNXx5q)PmDdy&oj;+LzTNRwm)1lmRvRibrWZa%1c!9Qt)5B+jn4|R#JWL z4Atg66ZPOyRnCjYf2}-v!&hD#OBPKoo1q@FK4U#s&1P;UtH$avbN|cTW_~8_oO!E# z+RRV*{kkx`U-?{x4{E<;SzrBO_B-`B%Ba6+njXjI;g1*hP1patWlMT?&cD{n|I(E` j`c>Y4ym_3wsX)u=C3N{pp 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 C$Q#Q5 diff --git a/sky130/gds/sky130_fd_sc_hd__buf_1.gds b/sky130/gds/sky130_fd_sc_hd__buf_1.gds deleted file mode 100644 index c0e7f2a6dbf7b189919a00b3a5a9e208c8db9bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4050 zcmbuCO=ule6vxlpnYr`wlG+a*)mMXBX^}!iOBO`}B}pR+vB8*XzepZ!Lv69TXzQZ7 zb5q1@y3~M1MN8>Ix=<8!E4Y$UTohUm3vP5FNNJ^L{GWU7nYoj`8S>JBdB2%+=YP*R z_xq70V-C<@WU^b-q&8)=jh+afX~5W1Cy$;!a{3%mD^7Qhy}xVn$BTbGH}UN=ON)p0 z(O_Dw-D2&TH_q)GeztRbzH{bS=fr%cbM)=wot>04i0nE;f0BL35YfDy?)N=TZKMdAYz@ee@^sD*hBq<({J$l#pUJY%S6%hN@!ojy{L5dYW)So zI|=4$V)>FnL=U*P!TD~RPS@Wq1m66!vP z_&qs4`a<$!rikBsTrl2_@~=>bC+Ed_rFmECS0>xUuM+;d#V6zYB)+|l`hF;wV!ROS zN|blgOaJhE;Bka2C-mHYJnop;4C+SvD%tMlk@9w_{*Lc|i4XP0Kg;*Z^gZW}l(2{K zO*#EgG5?a^M6c9&tAst&&zAM*=W*665zig*FLd@$FZ0LEf3Inyub)I6p8a!TSHd3Z zr=9<#h@ZXnu>Q#S_W36};OjEx$2BD?!+1}2D4jj@zd|qlm|P2p{$@S*w_|zzDCy0t z_>D8A_%*Z2djI?#kC!+L2*1v*tnp75#BVgB6u*RZ&CO>iugssn>v8>*{Qdf!JdU|_ z3GMV#L4*0gb|uR1_aEr(KcZJ=pNn1zd#%2)SM)hCe%XIRxwl%+`6tte9s5VlduThh zE2r!A57K_r`~ERjT0hPs);|#I&4T7{Jj1R;dDwpU>FpUo|T}K>fOG9ICB0g`b;@f@1OJLJd~U_$EB>xpT0xh!^q)Sz?#qt`}_X!uuYqi=JF=evxvfJ9nU5$!7`HE1eznDp#COWd5{hf&H7U(0&8rS()At zyOQIGK9G2rb|2o~ESNqG-{%pZXAIw5o^!Y8V^5Bg{VL(t^-mwF#Qy_1pSQ?vHTb5n z9+5@AQj4S2%kS1bsG3WNkIzy|;%gxHwb@Wg_Th+sx8M{^1COSo?GO3-hz6Y3-<{t^ z+rIX~)Wq8K@XPv__rFroV=r5s{|D70gKqJ!%0I79(SKyy_5cReM%=#jR;|u(W?Z|v z@!49{gq};jWc64%^3h(~9Y@qKbJ35idfZH{(9bykL)H4hbo`JTbr_Gq$Zxi-{F#<$ Ju;?ZU{SQAG)wuuw diff --git a/sky130/gds/sky130_fd_sc_hd__buf_12.gds b/sky130/gds/sky130_fd_sc_hd__buf_12.gds deleted file mode 100644 index 6be7963f89cd616ae2fdd4ee5127c22f72f05e86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11278 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 TgZjOv<@BE`+8Z2-X)6B%k}e@9 diff --git a/sky130/gds/sky130_fd_sc_hd__buf_4.gds b/sky130/gds/sky130_fd_sc_hd__buf_4.gds deleted file mode 100644 index 9272601c4bd360ac1af016c79a2be2503aef8386..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5490 zcmbuDPiS356vpTNzwafrEd(WP78Wa|8fYa-kbu6V5f_nYTL08Y@@Or^5?8H7Qa5f? zitVC^1?{3Ks71OcB7)m4ly0O*!A%W{r3=x8n;*tJaX{pfur-r^d;F-qbG+azQ6d_ljGm+ zS~xfTq8Z5QwOjK1*xdYML%Z9D54DfI-hSgyyM6HZ;r8PuEse=H#O6t4;P@_}qFxX+IGFWro{(~n#ICZ|7({u9PTEssl3Fs_^k>6e$6FHx_A_9f8^ZQS>7 zt<(QRw_bgftNQP;`aU=RX%uD%`TtZgdkAA7u0*?^zv@r1{^?tIFB+3PQZauU<9&(6 za%^0{cx_{p*$>9V?_zw%L4E?K!ImW-p_)6w$eU*##`4zv5Z}D`+{CVh+ zlahHQe@i==eUA4(6`2>~O6Enql6i4_CFAr}V*J|r+5O6WhL_!MB=%#xuVV2iy!T*C zN495pD;du}mUfcy@}r8Za|3InWV`iME`{^sKBiuo9GCHxjMG;cKOy-k8INyEJIQ#w zp(5Mu%To4n^QzM7{Q6DV{hQwN_22H={}?{GCiPHeqmqsiao>N^>IWv7H z_w_T~ddzc-dZp|&X23m%O~iIz->UK#P1bKr&-eZeX?R^i{=-UWv5t+?N*fR8q2)dt_P8W^UJo1x?X~*iiujguO7ShO zD8v5jXRntzkMOl|WxzjM65ss1QhYOLSqIl%n?L)}KR@pgF&kF~{L`J{n_gFnZ@N=y z5xzBaB5_?t808;vN%*PKy?{n?NH z(TGR*+PJdYf3)lR`2cIh^YxpG{A>_cqTR3mU3&9}>+8sKm3k%Gef^mDN4@<1Ex$tE zxOU2|6|;@lzc^o&Z0C2elJV?_w3Ce6^><`@@}0DkY)^JowC(u5SEiA)D-Fh^PRTgO zS29jtCF9Ib$vE>@GS2xa8Rxu}$Zv)EnCDoZc$?%MeOQs_q&bBg9C^;NUCD8&Q?59^ zp8uDTdqeJ5I{X@1#+8i~^7Hi34bdy(_e8Hm{O2zs3V9WFx8xU&2HP4(740JEB*X4~t%jcu>!4kNzFr5`Cl`sn;hbWZvm^kC?ZO zD+BZAnwJNly-=~yBYQ!K_S*cZ&slrumBnt+D-jRsx$e{}x$YcS8Cw7BoUB{^Ohv96 zR|EJ2SdOd$9^6bh#tC(EGzDHb%_F8}aok=}^car>F z%D58opq_bC*CFzzp7~n_^0&`9CS?BhJ_vQ_Jon)Jk31i#^*3kTeb*YEf8cA9&u`@U zOP|TN@hMKZF@gK9rf-F(Io5S;s^$XnmS;a!)!Xs9KQ@`kABgyOO9aQ>ty!!86TUt* z_8yA&U(lER`O7c7vR7*TfAyRR^v_O?cj>X$R`<8hA-*tqf4(1!wi$2dzGgL6c^&Fx z@4c!6m0MHp)UT&<)Tg#`qurHjt)=dM_V@|zS6=iZtM40^{p20`eb#@lUO$kHP20I+ UKYBaA*`Le9PRRxbS(=*v0P_l^o&W#< diff --git a/sky130/gds/sky130_fd_sc_hd__buf_6.gds b/sky130/gds/sky130_fd_sc_hd__buf_6.gds deleted file mode 100644 index d558ef8d848fa98d0b2b9d085cca9674e55c14f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7120 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 R@8M$U|09Zz1_wqb{1*@;IrIPk diff --git a/sky130/gds/sky130_fd_sc_hd__bufbuf_16.gds b/sky130/gds/sky130_fd_sc_hd__bufbuf_16.gds deleted file mode 100644 index 2df6febe31ac866e1f731cb5cb919bfc7d4ce78d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18348 zcmbW9eTW{{b;f7E-u>2UrIl7I?Mhl{^|`xpjcAP#G?MKQf@-^}>N<{*ms)O|ptR5! zx43O6{v!kvj0vVOsR(unZZK*HMi`t1w;0ogk`_};DJ6uK8nu|jw5AB-3ZtIiIro{F zm3NNZ2+Kd|Irq#n_ugmbeRtj$RlTae|1;HmU;psi)mSxG4OdIm-u9oXiT>Ufzwq#v ze)CIDRMpJD&@Z2Q>bBE=`h9g$>pgbiiCd5V!rJE^S$pjK z+UFlxTYLEN&)I)#xBgN!I8s%;$^PnRRc}*&RaGmS2kigl*RfaQ4{+>-__Jt#8=SV^ zrT-7Se{<>o#`WvhFI83FNzq2%XTQH8y58Qh*7pxpHE^Ke=qsU%R!{q@pGLnp@Obo#rg!!a9uMDRw>HEVUCjI$hcEpi zzUbl&{&%k5e;a!y@>BDg9n11JD4tn&{_FZzZQRg{=6|wb@7}6H7p>l&|3~`qrN5^6 z(vQD$z5luO`H8(g_Nr*}e&5dDeg$1``#-d9|83lm<(B-3;}3azC7RyuKjZy_O@0~u z|G55R{>uN?%k^`j#jAEebaB1^4gEI1OSXR}MC-jT`h%{w&wpKi|GDrT7;e#gT^AGo z{&V3wFf4{Y{rH!9r~lxQ@Ev@sMe}uCO#BCrgzw;6V))XJf2nu+519w|&))Mbn&!Hg z_zztT-`?|L_|lJmsdxGhzaG9L7h1Gl*Tuwt((YTF|Kyu3TA%A;(m(uqocG8DG0q!* z&cD<<&wupk@EyCYMe}uCO#DZm4&Slc#PFpb|5EStAAcZxC+xMDb#R)m>tf7Q`MNG9{#%|3->t{R z@TDLBQt$Miu`&40TyN2QT^AGonft2F`0hO4qWQWmCjN8Z z58s{V#qgyc|5ESt-}RO7oxi0;^L1TJ{C9mNeCKZw!phU_-u>j z>$;fu?|mnH7oQcwmwx<9z0-f+E8)9;twr;7T}=G3FZE9UgLjATL3__k{+#CPx|sMMygPgkzAuI^{rH!9r~l!( z@ICxSi{|UPnD`%_3*WIed>DYSDaM7Zd;0FNg23Lt^;SkAJDR z{nu{%`D?)5yYlmsICRQ-?U!hJyZ?^T|0_Iy>9^N8-h1|at>MtBHUEzF7Y@7~b+P(F z^oiEL(eeL+Ic8okov*ls6*;YA2g)CbUx~k`hL51Me6(hI_eO8(e5uI^~GILhv<7J8&co%`%#C~ zciS3@)EC~0Iz*rUn}*c={aGRPU5inN)OUWZA@w=C|A^Fg{Abi5`s}|nq&|CR)FJil zzu1uaw&$Y`sn2}9A@!}-q7KOgb&=fAC!%wF5glI@+qQ|TM?ani|FKDMCbYt z(YbC!bboy=MCbYwsdHV5=v==dI@h&m``^C)T_e`c>=1NItF$n)3!hb@nV19tAz#lFGl7da0D+L0#@cyVn>IV-rq`vgys6*=ee$tTo z;JL+ZOvM;%h1xBV8W@3M0j(dUMu4$)_S(2)AJ*P;%o&pg(U{aSq__6xF4 z)Wzz$_1pYK)}7;stUG=p`i}9aL;7~u`ij&!Pmw<6Bcks*8+AzEt`8ehXFWvvSSJyk z^%T)rXAzzK5YgEu5uN=M(b;Daoji!>9R_xC>&{o=sw(Jz{w`uClP{+d^!zfU~T-9PxC>i; zqUA#zH4R-fz0;p@tQ-9z>*mKT%+`-_tQ-9`ZQWcKll5a9>qfuGx}l5N`Z11mqrc{r z=x6;(y>tG&FBy5$&i$o^qxRa0E?Pb9AO6GW7e@|6zi4{e&;1wwns%+>KPayMd0<`s z8OOZouW9pkT}<*bd^UWC?fSvrX}+$DiU07oBX=Wqe<6R6+@XtE{uoE@=o87GAGa{e zALGa!{WUFju8T?jmVXerTluYq+J7MRHHSnB|}M`}FaCU!)IRyjefd}smG?nC&0qxNp)ga{u(> z7H0QP#&O@Izoy+cT^E!4C*#Ns{UW(R7qk2@j&-NMrmef{VzU0@{}t;#@y!-(-CY-x z_2;<)x#M|^Nbbg0}ok=&t+S^gNu zy3=3N*4=e6S^rJX#kxXnn4WS-;Jh+-|YCisW|MbTP{> zp^I7m7)S2t7s;O=w=m1!?u+5O=aUWb zMHe%F#^Fo9h`%4V@Miwxp8lGaDf+p8I+OfUC-?M=9QmhTB>#Tg!Yu!cW8U=Fw0XNOCi&lc zHs-ze!xnAcu8Yb17rzsI`_8mzeXfgH|J#wiKJZTs z$sM|w<&SaXj((Bc`Ed)g{4tK)(O=VY=en5Wk8$LVev#avi>7zp{}{)*(_hop-E}cp z{{!ESb?5uRynZ@u-CY-x_2+YOa>wW4BDq5sv-~lR{Q2kUh2+nVTbSjKam<_knl^9O z#bo|`znXa;vdi&_6;k=r8+4ax0c)5R>mj3c-7i{uww z%<{`Pa!Y^B%hAv4f2nuok2<-fUnIBaVwPXVv2XO(w0(13O!n`{^ReznKi%R_?0D#6 zvi^K;gWMi{y&<_p7qk2_j{MRul3zb=VU}OUF>m^7+PqyClllAizSDIvS^xR_W8D|}TC{a{T};-W?=6u(zON*bJ9IJ2ALGcKf8VK) z{P}SUv-~lRdDCCh=Iy$e%zxoh%zO8JE!wz(>Jx>xJ&&-|R-L;s8S4c#aG%un3>%xy*^bG_fV z$Nu4w_RORIW6a#vnf_nBq2G4tW31eNuv-f-$4~wA}-V|P6{c{*JyGL$2aQi23KNiBU)p^g>%rya19u*>|CX-`q1_Lm zJJ}4ULwBkfLfA0VvftCs(pmol96#lM7VU5C*)sq0F@GlI-+TW2`3FO2Y!PkrjrQwa zG3wR)Eu;D7w}bo&&w2j1xMReB`)Iy=Mfr*s`CpJ<@zpxyD~|f_jQ$(S`nCTY0(BEr zH_`Nq_dg`x*0wE#&SD6c{jB7~e%D2dSM%RHx_|TC<@GE0ve&OI?yApUeAIk@VC%oR zWcR}%poq8X})+rx>wp*^IyECBNEuPKChkTKBkuREF&EGfL zU)~E#XGP2Vm(68A&Zt-O_ow<6_q$_#O@E3L`#oPYy_&x(=C{lKX7vB@eDMBE_hafM zTi=5rOrH>KvKvE~dP$6W)qf;^<}tsYv$s@uE`+FyqwBvQ-+gCq5#5)3)-m%~-hb}6 z`_6By(0rpVX8h-lyYKu)(S6CsKgDbJAMSDA#^wsmH|k=>KiuQKjm@I_k{_Sb9-#O>L-IJpGl8=9i*ZTJ!ci;Zu3N1J4V#dGsxcl}Gi|$K4{wZGT zKX#Y~Y_Ly;g7zk>(q9G2=h6$9)I9*4lH3 ze0<4wM!nX5a=rUbK3$>tMqSMKPp)_0$)`p4B_ID3ul46S$-bvgRA|0Y7c>4t^B{kC zzCz23x|q%Pbq@{Hk9k-(`Oc`j`z}0Lq4`E#%=j;?bKiw0MfW8i{}iwFU;U!{ zuDP#5^NqTg@n8L-`>wf9bYJrEPw`rR-Um^C-X9e-->8cj|HVh$cj;!)eaXi^#jF0y z7ry?ttao|+7CT!l*M3CPtNGhf{&l=RYg(QAmf!eV$`O}u4*m~aMVz|xoM9W`k z{v*ua=KZhD)9#k!S<^ad^-3h(vil<9LtMm%d=Z^_Max^s{~`P**0|63mrHi0?YZs$DyuMZMm_1}`jhi5zvi4XUdBtCzg$06~#Uz8+1`y-D-;4v9}&zlg-A zKH+hQKKa{{#0S6fI3zxJb4lugE>bu0MRevB(eW42S(k{;`bBj1C8D!`5uLh-=+sX{ zr>-J8^%v1O7ZIKF6VW+W(e__Ge}8`)KR?+$~0Se?0F zgOYsiYy8+h|H1xIn{T-!pBI}4YhmdELn8XBr#uePSG}Pm@wu;f91@@XLrLP(d_GGgKJ^WcL-dKWC5cab z(BqJJ|Dlq^`%RBS;>}k|5^vt%aY#J=M5gCFpZDzbHtm0f^DpZYzbCN?3fk)p^YVHF zyZ<(tzlhGdM0D0KqO&g%o&AgG)J5#Q)$1psQ(qCCx{K(XkBH8>iRhfKh|c+o=+vd) zxfT2S2>mmD%I<~TgU-Q{W8bsh`>Q>J6T4#;`=#wKv30e_Mf#Y0k^2_s6<=P_|0(== z4&YDyMD7>)BI_8t$=3tXd%H^#?@oCfa_=}Fk$ZgzoRAl_FV_MXz|+hGmhs5 z`2`>L{H{2b&*%Kf7ddz46<_WA`#<&m5yw96=P#OGyMFqN{nLLU`$iXY`)3^cCcmKV zJL+O)|2*e8cb@MB?cAd-X3n2+^ey=!eTy#U`j>I^ZG3%6q;KQAiMjseoLD#KSJ2iS zbuqJkUY~o{+S$KS;Xm!~=;F2Y=f^mF$uDTWQ5Q4*twVlq+A|eCYrTgqX6{e>DyzHo zAOG(|r0>whT>mkSz9V0x@8Z0Prq}i_`+zN8QL5sT;bO zs~_X28~FvTZc!IA_2Ydk_n!B!BKIC$%-w&+asSB|x&LwA#N7R79Irp*7qoj5bun{) z7{|WJFKGLYx|rEN@9Xd#4;7kk)WwYd;P2*T_jmGJCFwhKG1q^LqwmNU>AyH{Vy^!f zN8gcO(E2XwVy6EXN8gbz(s$@$uKyTE-N`R#b&tB3ssH3ZyzW!qsnF^kbum+aK1b2F zeEt;aTXZqkzl@`A$rtJ0IB#OEe;LQV$uDU8j=GrH|MdHO-_vI*w0%ci%&^9iPud`VL*p_22w9_nkjoq4`E#%=piL(a(MOmXe%1 zx|lnE#&PcCi=2O)H!*kqjN{zNFKFi;bun}PjN{zN7ddxyF?arqSE^n7}xlc=Zj7Iz6o74z4rZM__ggq?)(_XxshMc&MoR<=KN;u^^^A>bN2dK(Dog5G40=uiGP3Q z|Nd$iy6c)&r~b5kOV)TU4EZ*RpYc=a+r3j>^-IelGk#ZU%b2xa1NXA;k{6nx6S}J# z{Jzw%VS~#$TNb~~&;22O$87)pCbS<2-No+K*O0w5rR?3WF}w30yf4V!5?8+Y)mLsi z>MwS0+PQ7i-SaPD=T>j>ufHJQPU#XV_X2f~`S0JkeWdc2mT#4p|HnQul7B<=-%!8* dwViEyqr07`ddL1gSnL-6P0>Tyn=FbN7ONm6 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 diff --git a/sky130/gds/sky130_fd_sc_hd__bufinv_8.gds b/sky130/gds/sky130_fd_sc_hd__bufinv_8.gds deleted file mode 100644 index 7f9eacfeec7ffa32643bde0449cad181ac0751d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10298 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 X?WlUk{+?PXs;}&MJ?tXV?WX?$vd^xb diff --git a/sky130/gds/sky130_fd_sc_hd__clkbuf_1.gds b/sky130/gds/sky130_fd_sc_hd__clkbuf_1.gds deleted file mode 100644 index 5aba1a3d848080df1a21cba947ced6ea15ae4784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3896 zcmb`KO^8)x7{{OUp07I}mdYi)Hb{md!bHg|BnD(=9B?r?G>wxVFmurvOmS$TMOY9a zL`1W3X)Q8^BwR$0(W16)Ls|(5k>I8lL5N1w^nc#x{Ljaoxrb)*!kyna&wKvQ*ZZFL zz9We^cT@%fm)?_JX-O(O<(cxe^t)v7%*k^n&Rq~`hVlN<5BE*ny8io%MNloY82pjM(=)i=Lwb9S9`PnrU*ZGP_mUHp_#@T$ zB^~`xM^^Q3SM|)BWZvY8{1142Q(p4@n-S^xOeB~um~4f18O_e<9%1~L2&rS*BNF;@ zf2#iRm_F+^6bx>Qgh${rqmKLe^RznP+|P^3F}|ArCCxwh0@~N%f1qFjThxdAGirU& zO{-5CBY$_RV7SZ1Nv%uuqAF*<)7D>7?fS|2pyI!s&A-o2p9_C5|73hot*~W;y`0~q*AEu&U-XOV zNxpX^>}CCIRgZZdQ$2}%9$I{(x0m(y{xmgyrfFfWpM{T%eRF0fVK3|FI_r;@EPt|Z z&f=4>m-SO#9~JfcUj6s|$KDV2?-Fvof%P;@!rKhKmq>3f$M4YFJO{%iVx6d7*Nta& z|ETEQti=se(&D;VvOc~(=htCcBI0^GSrdO9`)?(G-KRDF8unk)XZyeQNB0ozAL;Nu zshxy9+Jq3<@6QT-@~7#^^qT2O*lYETL#EHE>mTtO-CN6rYC#QPmNE)-Zj3indl8$D`dPK{$M9z@2c1LB-o8TFD>yl{HdMX zU9Z=DU-dcvHhoG?*Xy-z)stGc#wY9Qj{?*`gfI56oOf}pc5xQty}e^)~$AO)%u&V=+7T-VV-gR2tF#eJt30zuxtCjaKsN!O8Le z?+f{;ua}R!Qt^e~h_&S<_tB+)Bxxl_v%X{%uFF%3Guq?v)VTUMJVoew^tpN(tyVX( y);_5x_8iB?@>(!o!|PfLlO4XMeO`lwFRYr*b#=VFu6W%_@_$%;ZrE0%Nd5)p9mItI diff --git a/sky130/gds/sky130_fd_sc_hd__clkbuf_16.gds b/sky130/gds/sky130_fd_sc_hd__clkbuf_16.gds deleted file mode 100644 index cde43fa0785297075e902a4775b4c5cca0c1d90a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12806 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 diff --git a/sky130/gds/sky130_fd_sc_hd__clkbuf_2.gds b/sky130/gds/sky130_fd_sc_hd__clkbuf_2.gds deleted file mode 100644 index fe668604a474fcf691809d4cf842bcb0f0441b5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4680 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 e__q{$kHyjJI%r(oqm^> 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 diff --git a/sky130/gds/sky130_fd_sc_hd__clkdlybuf4s18_1.gds b/sky130/gds/sky130_fd_sc_hd__clkdlybuf4s18_1.gds deleted file mode 100644 index 0157408bc9a15f91c3da5c60edbd96e1c6112cac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6380 zcmbuETZmOv7{}My_j4N!hGa@AK@(}j#K^>unMo+{QfiqRdL|ttnSns@VU!-MAiCHE zBB%(bqQoqspeT9>UwVnMFp8p!SoBg45e(g%{{Qvu@9cGE+{>Bfz?|PX-(LUq|Gu@> zUi<7lCNV*<&CIU^>G!5)dQ55-nk(GTrV%6~`*!cYbN{F@-C?|@|G|~(J~;l%sPwTFsR%_45@X*NU?t^=;Ik5b?)^ZbN#w5+a z{A`l0z!=jzH^h7X>Kc>}WNl17EAcJ52!FYLt<}%X^-rMvI%6uU9gai6xN@COKQS?J zl6obyw~1b8eW|yLH`@9zT2$l_;n@5RG&Ad@npf|tTD|+80?(E0vvzH z7^RsIof3MtKJ9;m{WlJypKFcDJ}XGS6#XgVM~ta2Hbxm9l;cYJP_GO=lzx@yztq2W z4<`Pc)S{$syifee^eV|s8LpD!O8Rmvl+oo_8|+tkuH4_QORR@F^*K3?wWnk}NyfuR z3-WldMUInp9RWg_=dMAejhEJM&xdh}^Yu((y|Z5>>kgljaUdCIUP{)^{FRK`ewE|p z^+)eRcLe9hiGmz|(~|Kg<1diUCj~k0j4L_r)GImf>{p5Y&sV?f4?{9f!IcH$rRWQB zCFar9xAOC&y}yK~rCw#+4?SK=#9jSHtM4uLC$2k=ms0m7CE~7rXQv+XJV3n?QSZNpY7;hTj>zKHm>ye z^Eym@6MImb(Al`stCzf+rf%se5t2@ zethcu<-gCEC-;8VujI9haV6qjeejRymEm#GD-rkVqfMf3^Dogy%1wTK{F3OE$<3ly zBJTB1{t&$~eNpsE#J&1#gXr7D^@HP=DL0hs4fbEw&ELmuqHY^kcGf@OUccgZp~Y{z zWRJs7asD%|T-@P5MIRg%y)s1Z)GHBp>z|@eu?N#%nPD%cUWvF@pS>Y^W%UlxD-kc% zhc{u|Rv_139e#uFj4M}^>jTVniuyy$p)%vzM_h?`slRQ9bBFpYXLVHcO2o_cxG&)R zg=-vQ-U7yzp80G1Ai5@g-?AS|=xkhh0e!knbjl2Of7B}xFU{Y!dsXyV&gxdtD-kc% z*O4RVkM}WcV%}_A>6yRUk5YI2afj&B#+9D>*^cv0y^{0JxY9TOwjJi3dd@$|d1qYd zoB!&4Qg>~sL)2~KN>BaSGSOvUI)u)~l^%Wim5f_&FfNkWxGSvZR1K${cOj&saLXY#+APM zZ9CLWJ?ke~H{;6l)}KFLXuO8ChTlGoc?DzK+trU?56v0=EytB+AHGAUgnsJz*=_9e zg&Oi;Kh?Vn(l2{Y{74>8zbi-|#+CG;UdcH7RYHG0|Mh&n5#K95(Z>bp7yK@MWK_W) zjw|UyowB4p+duDHSx*J$t&;tlucd#I{qney{Zgl#)PH||e|J6eZ@!JTk6}Je6tvG> z-bDQeF>avwN!lsV-W`uA{Z-!*os#$e+&`4@N7A1X?MnMg9+o_Ky`$rrRT0ATN4Y=iHpv2>N7)>VqIt!1b2Ry?jkWJ`Z5Gp0 zQQ0-fcga0h$+OB1ugclNi_K@Qnw()n>VntBfr(8rufq3Bu&PYs(zvhZX}+E@4O=0u z8_;Jx$<|wL-z>S#RF8hCzj5Q*4n4+odj8SNCh1A~^O4Hkr=@Nl!c1?b8e5{BotdgD z|IS7o|2Z3ViYH6|KlAK`*{EgACyiR)bZ1Og%s}U;i+=TmS6segHcrxSvHrc~`uXv| Y4ruw3)hnO7dy>ijT#(g}BEQJ|2Q{$&u>b%7 diff --git a/sky130/gds/sky130_fd_sc_hd__clkdlybuf4s18_2.gds b/sky130/gds/sky130_fd_sc_hd__clkdlybuf4s18_2.gds deleted file mode 100644 index d8e0005e4156a141a9aa5e76dc6ff5760c9beac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6262 zcmbuDTZmOv7{}Myw{xA*V5p`f3-mz}(#EndV!VKaIeAG_LB~`iaUf8Hj2?>UA}AuE zU=mISWfVeC5cFgZU7(r=p9~}^(g%B}hv`C){r~G*|JnOEv$t9Y&irP+wg2n?ecxJp zpLND%E{Zm|8MUbXlWVztS9i1A-NoNsC(1^4ZQJwop8d}C#p$Dq4=h~q#e2U#yzJBa zMo(;d(#=TAwX?Ep@9zEc2j&g$+%dd&`|vY6hKIM0?A|f5f7`yD3--=`X!w4YG@Q$N zBKM2SdL!rD-03lXhF9-a`-NeZ_sI9D4KarHX9kBL5B z)DL#+;kSbN0>@3?5?6HjFYDIJSCp?f$^ROC!B=_6SM2s*>izpd{p-+}0q3H5In$PT zix@A~FZ~GnpUlLfY(f2JayH*Ky_kNC`M-Bgj1SnjSnGxUB;JA14>qre`Ahv9Z{ga@ zn0quQeUtUhiFGV|^1E{)_OVM|M^1tCrCww|{Ji4jDg6(!{`T#d>jJ!f%gKJ!Pg_4o z=E0cAJ~WqGKS=h0<0A8*PGlcAzsUT&uXv$6KYw3fjeFb9?`tx8#ktO(Il14P=%E-r zfcp1gJdpAD4I3vJj~>hE?-vXkZ6Eh;6@7fF_4EDn_v<*t*vBIFG1rFo70GprPvvC1 zvBt(pj%{X8`*bzD2Mhcg&ByaD5m$Hl zcj?=E(EF9hcSeDKpkBtsmDT#}FVlWkFFWGe>uCJUg-iNh4jyVFO!#2O@uGoAct}C6d=e*^Wy_%DG zG-u%%5y(7womiD0uVWs~uX8d_&Mz`AUMJ%EVt&^Dxwil6XYIaj>=vP0hkNg==;NjO z<{`T;TMG*uM}CZpQ+-|q|K=g{Z7medmwM(A#!LO%8_lGRJ(A zbE5fDPyaAp>Yu`c{m*dTnIK|5E>`%b~tFT>AgAm zEUX>HdIYjR?vnL~WL+E=-7eFMNezGV{2qw;i}}m{aerQa)_mg6axx$P`4`A}I4;sB zflfr8Q_b(|A}M{+#9nv*_^i}ayhWZa*}154`j=gH1C^J#yRlYT9n zxkcvF!u}H(Z+>UvB>gxpG7suS#yP*pIDN$_`xEvr&!vqI@ti)Dvx)C2jEfkb+~0z} zzQOcjBQm{+c&Xl@4*J({&x-VAT&(hMT`?`sx158FaQZgw0B6Yqmf!EVhTYNKb>cy)3YY$@I3_yReKzx7nak2aRw%xyB{dvyh zXLpSIV}d`!n{jbbdH$H*x(*t~=vm)%x=~_KiA`{qyq%R`ri(PS&5yED&}3 zxL8qt@~-8buFA>085gVa=XK1RdXf42c>}BR=XG3r>P4J}s@jBK{y~zIgc>}BZ=Ra3af9or& z-xGEFxL8rYf6igu`TXPhlgyiOQTaEqEckz^{lBo!W%nRI*O(Tga~EA7PXl`KG=rC4 z^&3;QM(qp)dR51~@LloN$fYj3t;U~s;FHpI?o0;<{A+>hcvs|#`z7no76;FpQMbQD z{{K*oWw>c?svD>NkGhWY&?7w^rO+Atsh#_oxABL_id6M{ic4^ zHF~V^lzs2kUxK^&FCSXg)w>(k%m1l0UHY}&e{OmGGtwoSygT+oVdwSrXV?Cl-{!^F I!z6M40_RxODF6Tf diff --git a/sky130/gds/sky130_fd_sc_hd__clkdlybuf4s25_1.gds b/sky130/gds/sky130_fd_sc_hd__clkdlybuf4s25_1.gds deleted file mode 100644 index 46530869d33d412a2daf95a9ec7ed79b1c671c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6272 zcmb`LUx-yz6vp>GfA5`p?`SY2Qx-}Zi6dny5)(4oKo66e|1t#~Q;}q*7tKKFp`Jp> zA}AxJoQjeVdMXHlNQiWF2bT_gc>MP}2H&}L z?C9q8Zf0Dpos%ScNA@pVbldQ*ox^)~3_rMYczDO?$j;II+xP8Sy!ZAc!wX$hbuMWJ z?iZJI2hO>^=^=jmt9zS%AiKu&vk`wq*WkzN4~Txc*B_pkm^k5FWx$Bu8}M`3DDk|0 zpj{8YA?kA+SACapsLg-y|J7UGM$6kcCI7p`zsHSo{bb!R-}(*OpA42bSA9Pt*CTvN z+ex+ugBfML(5%!vy0;l6o?pKy{<2Q!)*{vudrj7rOmBw&iy67z)pxa>Oy_I6yy}hVtEx95UYI|9;@4Df zOjfJjh>Wqxb`RO_7{BD~c&oTPd*JqUT^c(msKnx7eYP*p>)EPU@ug|~# zyoI%2ji0SKo`;rk@-I5OtHdv7~-H!sgjR`?3Diw}`q++*ne7zE@Q7JV{Sxtl@bj?<1aQFRUN?rFfoD-{J+;r^a>VdftE3 zw}|_WSzbW%Xx2 z)}4AI>o4PamersASa<4MMBOEBEUACJTjyPWCr8X%;>MEs^PJ-T;rV6c{$bo$wtv`< z`-b`!FQ}gT$G7MApZ@=1=g%{k>yV$jaojn_xUv2J&q;d!e`CK9+6}5#O1#iN*rNU+ zp0~_H2w#aCOZKmp;^{1ZxzP->tny0?e=^WuJabt;pG*5k_(?<2Bp8meQ&_9L; z=baqO5iyAyOZ?+;^-Yc$)t7qu`}RVAo*VS9j^qff#Em8X=}Gmiju_RKdiwkJLjT$! z_2oMX^AN&U;>HsH+9CDrT542Z>gn&>3;pYx)VC4l2w#aCOZ@Ab)VC2D)t7qu`}RWr z=3Mn{p2`uv5;vCkH|MHv^ORA2si(hh&--un@7I0&|AbeJb?@Gmv5t2UUPiR%^#hq6 zo-3g1b#B^?8S7g$ZbW-tzeV(R{y6O`-}hiF=E3)PUP@`t>sPhwagX8q3F?epV^m{3 z#{`V$^=m{QUGevS!`b|G{1CO1yglRP8aJX{{A;+)@%^KIf7j!Z*#Y`hr=bd!A6$=B zgIRMl@G?|%qzad)8tR3!`r5$7E}2o`@9QdPZ(JV_ERt)nYl!PPh+cO|Z-T@xTix7; zNxVWezG}N7b&85!xjO#)YScRKE6qGydo|vbiyhRsyHK(IDHZE|f!7gVF?^eVtJ<5~ zw+c5+e$`b!wc=Cs*k9D&J4uh-*>T4d>Nl=!^Z(C!pa0#f2HW)O#J{h2{xjnh_zpoX V-M#v`r#G4Wg};uA7mFxz{{jxUO+1C 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 X>}1_D_`TH=P5ci5%Zmq#O2z#L^fKHA diff --git a/sky130/gds/sky130_fd_sc_hd__clkdlybuf4s50_2.gds b/sky130/gds/sky130_fd_sc_hd__clkdlybuf4s50_2.gds deleted file mode 100644 index 677b460805d7c368315bb0b230c6c9651e4da288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6752 zcmbuEUx-v?7{mP_PE&r#WODd-95~WyJ2nj(5 zN`)k-kgHJ^S`iclLEw#Dg%@6QB}tM*c99obRG2-__kPcuGtQh-t^?z5_WjQDJ@5Oy z-<&_AOI#E^SfpK23^(7aQ9_DyGE3Z@7TQa*`0fw8z{#M7Ve+F^xUc69$oU) zLleg~taj7meC>=R*)_K3;W@KMw{0EWwPkes*3r=|<6~RL_iWz1ZSJmlvqv9sm6~%& zGjhMWq%U&L4NWWK-|(6?WFN@h3HvPKugV>G2mLEvKP~7F-?(w(v~#5q5l64V`>^Qa zS^Y@69)3%y&v4T8z2ed~|0V5u`HJ!tJN$3bXMB~1e8qPE#om9w9pL);bz9?H|M%uc zMz1>8cOfO$qyDXplhHhQ?oG+@@*x{1IUYTc(yu3mjaKKhA<@UP>)Vl^Uq>9)BI?9m z^y^Mm(b)3IltnObQkgdJ!P^9^L>KN9@ulj<`d&jQSVA<1F4U$o8A-oaGZIO<^84?OMRICINpKL z59TjY=kpRTcFljB`S+B}w~EiqgJhoZ^C^=*QOkO~1Iw>td;)m|G7suR`ulms?*4xN zHlD*=52BaogUEHOeQoPUGN0<%l=0{Id>Y3Ga$PtsG7suRt_$ZE%a@&_uL$36{e6<_ z(>Kd}8!x7e|8lO06OtIchWRiq(w90B`FGCWI)7o^SK!!@4F7ii{8bTG zmQR^ZM7+?y^pWYsXqD+j#IyQ^;r#m;_eb&;_QeK2(N=NFk5 zj}viRHorw-{rvYUdH}i1$NqmOWjtv6Uo2xEb6j*g;0>J!eYg4j`HknnxF2uyN2DLG zb0Xv1J7T3|<05^i7a8~G*FfmH`TP2MaUVjT8m@05>#BZ*f3+<9+ZIyXH3(?$2u zHl^%Y3oXyxff(q=!#wpZSY^?;tKBp6`$2s<=mC z{$h=HuZW9?=jx*mt!`e&xeg@jW?U?)pU2UcI+4D9-oPUN@-kaD?k%pLC)Ul!#e(&# zoG@LyG(+foTrAMX-&oxV_8aRbSvTWiQT;rQbyFv@em`$uQT;rQy`x@?YNi(v&+T9J z9P-BXr1nC}9$c>&7cpL_ui|<_eT&ykUlmss>$z{K7rAfgFBa|JTGjei`z%BB&Bw)p z{`KP8z`oUAPRYJ8E*ABV$FXnJi|n7DH?XLGJgzis`WAmOeMub7U%&cMtGlrzL)7i# zVnO|lk5M=J-&~iHeP>)O>OYTT->Gl$y6M^fFrK@AIL^LPFS759i$(qCa}xX4zc(fO z#<*D2KOV=vQ7^K8e%`>M{_!~GO})sx85fK4=Y3FVHO^OyGyDfy#>Lfb{kP{ko&Vp) zUctGGd#A-ooWB_tyFFjG^x?UFScG5V>~?O&UJw9$Oa_#V>V6TUt!7WhXS&9__? z&7XSuhw)th$}ID(V7=+@311%<3;Zjy%(rquG+*lJAI5Y2V|dUvIi4Y6J}wsc$CKup z92d=(disa)Tz@_n(!VyAA+$a&7Wh}sns04PG+*lJAI5Y2dk&f}@4=XdCwzTeEb#9+ zXuiGkMf0Ve{$V`VzrNml8+cZszbAZsTrBXfuQ%UDSu|hj=^w^({hKq*w|PE8`1-h5 z;NP5SzRmNZ`BG2+FrMq*cg=kJ@f^VVJ>l!)Vu63(HS_I1CYmqx^bg}%|4rffW{CIa zeDU6izekC6+>h`jBA(TcqJczLgedEs1tXXIj++*RVgcb72UxF;T& z<6m=K!@FLE=mVDwCP@62)y+dF;w06$3{Od2MMtNu#;;trp|-lGnmL|&Zo?b*2c2qs zyU?-Wj*bl;;p=GV*cIRD+F-JFIleU6RX2TS$2;`cXVgD^lODUX>yGKrBLnImU%sTx r|9|V{ziwrlewFth%CCQVyl8{39y?jz8T>sknB4pyIyNsKFe>g}WS$^1 diff --git a/sky130/gds/sky130_fd_sc_hd__clkinv_1.gds b/sky130/gds/sky130_fd_sc_hd__clkinv_1.gds deleted file mode 100644 index a083f95e9c06faadc2e337e98f6f06799c26a1c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3920 zcmb`KPiPfa6vofoH#0AJ#;WjWc{LOjDOe(@WD!cBBr(!L+SF*Ot&luyLNOS-h)~f& zp&O-CC@$45(uGRtqEIMw*-hPwxE4wUH|?SbqO{cX`|g>Ox%147_36ONZ{E50yWhEg z-;Jc=+y~Mhx%wSxNK5LnQ?`Zg(&y5p#gCScE}s@@){-~Jz8s#se(kR}CVn1VxqM_s z`jc|)D`|T2_~|`EueU#5XrG*KA6sa*=a-Hze)4I1k4W4jl5TYJr=%}95gFKA!{6*l z7W9Q|tmwND-{LK~e%$Mua-RCyFDUpP{55A|7~cocPR3+R#BCQbG9G=URYQD z)t`Efe^wrjf5AWArM~g4fbjKkV}*abOMT;8M)jqh{#kkGKkdgq?s|XCd3`h2CzyBc zOXG$)c;hi59{TJ0_j=?!4qXcye@D&@a~e0IJk-w?){kUuEEuu(9;m<4$3y*8QI9eD zUGq2Exne{-)VDkP&wbDS8+nfKF(Mx7^?b_KKXdGXKK?dmFOF8mjVLeI-^1RYf&QC- zkDzDVI8&~7Q>cgeau0Jl9K?(pQC{lr4r1!0B};zpEL>e+wljqEq|#;X3y z59%9zn3KMY8>{?TkG|9!>C3pW%AfPZ{&W6}^kv*w>3q=KZ5$kf1tmB@5bqJJb&rIv+Py=y}d@?s$G0YuE6OxDoMi{tNlD9(}1_ zBYb___yqstit3H&d#X1gUh2wU5 z*r6XQoImHV?oOco?VP-;t49p10}y$ruI z$tJXuk!J_bAEUpApje6X826Qg=e4Jguh;&PweRmisJ2G@-mop+o5=JFj6e5(M#j1S zjEplsBjf%aX}rH~|MdQe_M=nyV1F9@eUN?Sy->^7%U{O_zDWc5yqmKZXNAMq8D$ma zZ=yHvEJXBl5XcMxn~nvihh%(-Ig0GQ0p!EDO6}l=Mqa{3qF17 zg}HvwNh0Y>5&ym%p<3V8WON(rYuXd|;KO*nHpGEy_-re_G z?qc2^G4ru5MvZFq?pCe+?of}G%y;V|pG!L5^u{XdX{Cqud<3tue;vL^lwc~6#W0U-ts?uprAkK{RhhP?@z{$_?4fneS2@EYyZgl@u*{5V)+lT C0kE(D diff --git a/sky130/gds/sky130_fd_sc_hd__clkinv_16.gds b/sky130/gds/sky130_fd_sc_hd__clkinv_16.gds deleted file mode 100644 index d3ed0994dc53f542ac6f2568ee4747024370c361..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13134 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 IomI2{0%_@UW&i*H diff --git a/sky130/gds/sky130_fd_sc_hd__clkinv_2.gds b/sky130/gds/sky130_fd_sc_hd__clkinv_2.gds deleted file mode 100644 index 73974fcc16193600138d578fd6e62945b0f5bd8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4388 zcmb`LTWDNW6o%LAbD2w{trFC+!3+3O4VoCCXi<|GPz*#9ZL5W3=mlwL6l_7Mf){)$ z6eNg(%|quwEuv4N;Dc|1;DZz?UZ4n4K@>$qh=L;V|Mxm;_LPC- z{$@vYL_d&?wthC^TYOp2KjZb=GX3(}+S)rJm0d<$y&LDU(Z}=p@oqi*rm4?yRrL+y zbeI3s|Esrt8?E2Qp8ntC{Rgx0W32HGk)#=zG*oLuK0kibpXB_f=W#AT`+H#hC6VYi z5hL@JQ<^6kmzBWeefWQjGh_5T+N+?AjFqeK{Q}y^=)O>2BiirRza{q1*9FFyeyL+3 z-A(X18OZgH_G+GV2XLZ}jJ_U_R_Z)gM~psR>hJ3SmvxAGaZ_3^WEF)S-51DuO4^zy znNLp#GVkl$xY}p@o%+Vy&1!vi_?L*FzGLHTvEI$AKC0#josSz!^sFuV#^-W`&c}@< z`eYSz@urU7m_C3Q;zq=K=RX@iucJTbuS59yxba{7-QTJ=MrTxSL_F_5(RF{V;M&i! z{%5RzfcZzYnkSjByb;Je$7A&O?taWS?_p3D!9M~S=e0)W*-s;K{l=rud-$*|wrgZN z^fw}2s;4*m-yxoTzW>I4{=?bx63?mH3FsdWtdBvDxDokY|C~PkT=mB4v#K{DUaUtg z#PF-Un&UUnGj1F!*1IRs?{_hG+XL%+u)c^JkuUV;byd_J^~M@@W8ZE@#EbPWpznvF zzcJ8V4n5*V&CdTZ2fp0*Nu83*Nt&w+4{vd z>$u~u137NSjb-EKvxMuHJ{`z)W87G_e!PzBM!k{i=iAL#wtmT1==Uh}FXnh2dd7{T z#p~zp##k}m?#CRlZa!}8UO#=`u={5j&mHW08+hMZr?>YcBkrBuIMJ@s$Mf~qrRTm! zf9{7JVvq50WB2>sI=%WvRipY+Pk%RG?$3RbzT8hcgs+bqOZ?*<>KmUksxS5Q&+>)i zPvAjc?x!6h=Htc^|72Bt)6+)vrJnv-KJUNKwV&d$1pa*gF>b;8B@ZLwdHs0M!*dck zJm;&w1a4W-xDolhe%|Y?{zR|!?|*2E{qTDm{FOeR*Uxn8F~=8FXKb|Dd(3CsgZaFE z*6ZU<|K4eZ@oW3h*{t6glL?I*k@x;}EHi#@>Ff0|n+*8h9QR|c=Ok^Wk8V;OzjZO{ z8j*gN`+VP3-@9f# zdQ=Ma53bXrzWT0tp?>dNm;Zm(XZ^o-W~xj7koO-h9{*4>xzCRtwP;n3?*q-W^Un!C JAN+|F%Rf6h>ni{N diff --git a/sky130/gds/sky130_fd_sc_hd__clkinv_4.gds b/sky130/gds/sky130_fd_sc_hd__clkinv_4.gds deleted file mode 100644 index b4beeb5289d5bf7343dc35cf6ee826e6ac216531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5952 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 I(3!~m2ZtYW_y7O^ diff --git a/sky130/gds/sky130_fd_sc_hd__conb_1.gds b/sky130/gds/sky130_fd_sc_hd__conb_1.gds deleted file mode 100644 index 72ce3fa6b7bfa6c564db1afd5f01e3ebc43961bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6766 zcmeI0&ud&&6vxl|F>ih}HMI`P*nm~s6apH$C=$>%2DGH4YK$$F)SxmwOo#n*nh2AN?em*2ZC)j+N2SM4TtBw(^{2l*Hvi=# z+wY%yo~BBJwNpv5wSINx=%eY&Yw1=qy|9+1&5cXv(;1?;LX_+e=~qhb3W;d?K!k61 zl-BfwS=-igBYwqqXZj~aU#C;77u_-%U&K|8;Vq)5Ok`xc9Kueg^EvB`qU+bc#>bit z`dZ1Dd@C97Nfhf2Kza7h0w0|SpB@f1(zWqylJkIECTtAty`k{{B zh;~1|ImzF&=09i>iQoMhD~Ayu>_)T?)mOej{LmY#msM|seV{%%gT(xT`xj&k-a-7Z z8__;g&+)U~$Z@mYI4pj-4)L>|<7aZ*Y&Y%|fB1yzy1b=&nSba9_JQ$po@IU^f5zZ5 z&7ZMne(kz{;gaUR%fD0~8khR`ue+%a7Uu?WKSkJj-9p|@8=)`W!>sS2siGg%Fa~!V`zJKS@8pZC%znaT0 zuB-m2<2CME6*(DU_w~m`f56R;8*ZPP^|%8)+l>o3{Tq3`?z6$H5!z+dE5+{npTDzu zFK*s%c^nqEF(1D^U)=r}A5ndL(<5|ZHxAY7xZ|5f9Y5>kd39vh_;ddGxx>!`-sii7 zU$Gm9_zzdqZ&Ws_UwNJ_b3eoV(+$;)asP7h%RI5X8xi-A`J;L_|03+krB9G=?8(OD zH1Ywv5q5w6$xs0>MJ7Dccay3T9-&&HO}+BsIT<@Pf=g}XX>je%0Rro(*GxQN*)Zc zMkx zy#x4n t+Dw}lTFv$RtQb2F!3QJtTdb5lb_s8#6)UChUfR2!|8FY=udCvi{ssb^8L$8V diff --git a/sky130/gds/sky130_fd_sc_hd__decap_12.gds b/sky130/gds/sky130_fd_sc_hd__decap_12.gds deleted file mode 100644 index bd527c2c7cfe3159a9bc4ebdccc708e85c60a46d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4224 zcmb7{O=w(I7>2()bMKv>%p{ZKrVIN`o}6T)1#maMMK*+)0rx-S`7;bYT~v3m5VI&UfC-xheOM47AVWJLf&mIp_Y& zy^>3<_J&L)wZ@;)mPu*IX{OQ|&pIP|f$?dIk zugO$aoqaUVudZ*LoH@~dXRUwrLjT>het+%ah4b(CPd+7*HbwGoP5zO5xF#agy*mE) zpNY@yi?Y3K-%0$Hjt=q*F5mO{>$|(V--#rrNc3LDzw4x{NAmD3YChnO<=f<9$v;>2 z2RV+z99hnPSk80aB&F#ppoU-n5_OlV}gu|3F^;wmezKW^0~A zJjewZ9tCNxW*H+A5 zZ;-Zcn%8~w?UnnN9yf1#Hz2&OPDcFcar35kN%Lx6{l2}@pTVK~pWg_GnyZr$f3{=Z z{03=W&8y$HSNa>b&D&fLh^(uV5r5;hd7JB`c{Q(o-(Kn0^IX^8o(%}EtCJD`&{^|# z>ZEz~{8ztkuk?41nYVifwA#`7u1}sCWFEfLN!i zlSy^Hz_C|v@%w=4)jApTYrp&#%ae_dEKj0dIe*P3pIDx(ov=KKdS$+Q-_||s*YAjR zyE++J|Ii1P?;H(?oU4%NJ;9}lS4k=9AHSMGoMrsXo+A9Nh0=Cn@6^11gnykDs~t&_2Q%lq5juhg8@ zN#=3c>ieU;{}qxS)wjsz2<|e;Z&L7Wvc2uE-fdg;!BQBB&+u-qI(x1oHOVA@DAE5P zPSCCMNH#b5rGCDWjB4gbmo;(eopd(`I*P7R5*XjpE~gT lm-gjfb^ht<{8To7&aEE%!XtpcJCpg|i@%!>9`Dms{s+l{Hd_Dy diff --git a/sky130/gds/sky130_fd_sc_hd__decap_3.gds b/sky130/gds/sky130_fd_sc_hd__decap_3.gds deleted file mode 100644 index 8f58177f8b0b0fa7e17ec2995a018cc690811cd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2750 zcmbuByK7WY5XR>|_mR~^Sd}$fsMrJoDk*{nBrgz&B)%WPWQo~`Ar_KU@gI<2W3Uhv zWjl)$RspRAJ4unsLJ$QlRIo6JRs816nZ0KXd*kAT?CK{I5^+~A^)vIwng^jR zp)n37Y@3w063<=zWW)L~)#$DGE88X!#HB>s)epJz54)u9;kpt+?0?v$H1QO@^j)~_ z5Pipb?mxrE{%i2}C&V|%D8<*GP^SCyIPU)-;}E_ku1xW#W$|sH{~P8{t^fYcn)-)H z|6rx2f0WucO2pmzPq_O>g!yw1Rh6j4FV3ViaaUil{d1bnAMV>|K! z&Lz;ZKy^`z3ab;TlcpTS_^-8WA$CX;Y94zquA@2`GiVyf0mu<%> z;C-N?zK!H-()FNO^}nf*NzX8&D%8F9_!LpR*W=H99)=Yf6@1CKY!~#`j`H^@$YV~FGqvp(DEgBg0)a#nf&?UAU~v*ZVvGipB_ zf|ZKo8WFJ&3qfl^D-lUyVIvAQeqa+UEaLyo%*)PRxFyNL-f!>C{^$SZ&Ft)wrXV;+ z)m)JOMn$Sno(|AH|C&mHzB+qxZgOscs2r-JeRsNRZ=d`*GWe>q{&4IJRaJ9sRqOdH z3kMH%#h0ez`KkEwbR195Oif;k4^vbi(%S<1NqT!gL>+A*e%+DpvKP!^-ChgvFWQOI z=?9Iz&FL3cS681A<$8p;dj#jA(8M$J@T;-jwRa*g9e3Ld1Rjgz-0e>!aS={DrL(HZDZm*AJxf$2!^M{5R;4>*m&9N*|0{|1j?n z>&C=|>Gji~xBg*Xh_R1Yy`_ma9e>nreWPWM@HKH^hJVygk8o3qx#HtQR8g z>-(Mmao+#bV~o2S`_J8k>N)hYXmgBa&{rpF>B#GxbwcQy_OIVT_YY?-VR+B_35^%} z6NWD^9_WP7ukYXOALYswa%G@B!NM30v^u;kXd(nR@-v>V^56 zRxd<6Q_uOczmW50e_>|+uTfX5m)ulB6+@4>5baIF2f zZoDAhXZjJYq{h3>kNeip3BytJKY-KG)E)N-`95yXwRI z;(1u(8{3_73{ihI3xDAw+i&Oyo#`LL=kFi;{Zb~qpTB|%J5a^k7b?rwP_gc+QQwS; zGcsdAS+V^@r8Tcz0V&eEbNsspD~(EfRd3}!9}lQxT)(rL3Kf0!*wEnC^vIg^Cr3}G z^u44v<}Z4DO8EI(eb0vTA8ODK8~={x`l{+5GowdcWCrlRRMGO;YV*k>uZaEwFj;Uw diff --git a/sky130/gds/sky130_fd_sc_hd__decap_6.gds b/sky130/gds/sky130_fd_sc_hd__decap_6.gds deleted file mode 100644 index d4063fa350ca546f685c7c8547b2db9135a79b13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3230 zcmbuCJ7`ov6o$`z%{~%euqdl5DA))ABZ5JEkQZ1);@hZbF405`5foEJYZZ|cVx=NU zXOY56&{71o5s{QOqF|$fO|Y!#}e3G}4zp`!E+LID- zU*Ff1|MJ)G5PQc zdxWozD|7tgt>PQcE5(=f?C;t${S$a_{bt4^Vm7YK@lO`S*UTuzm-X!L+B5wNFT}Sv z;SpLJSLXN^UWjjTLMgtiXMfk8>0g=_-*T5n_}aKK$G-Ntc ze*TyC!WZ7bod)AE+_zu&IP$*YeoFMu9gnr#R~g-t@s%_#<0;Y4A5YeIh0bt(_PvBU z%9BzLGaAD9s~SvFX;X6D_Of*I!q2C<`gpm1_PvDx>cslwF?pRbO$q+b8;k?VPs#o4 zdsMm5RA1`m|A5w);N8LX)cMk8Pl;pnPW3Cv@-037I7uwxq9|zy^?)duWaRS-iuyYxGs7n;+g(jC+oO=CF?k@ zY^CSAS+C@}S+C5iKlp%s@DzP-G|20e<4Uw==Fe-2_3>PTtmC*cPj5C#U-Q}{#GaqZe7=oF_Tz9H$Z-skH9wOiLO(9Tk^YEB#)I`VINjLZ7{gZ)kVZZgaB t$5F}8U-Y|M=kNRnm*|gL|Bh^ZE$KZCEnhMh?swJbzXg&HjvsMMzX4Th=Xxf(=43n8Fl5k-+C1}q}+{lw%(6Ge%IuO?auf{KWRSgDBV zEK-Pwprr^3f{2Kq*ocCS7B&|Pi};^8bKJQJyAoZ<{cir zs6=&2Xeljrzf;AJj~_d9>fotyqV^!#&~v4$|M|TiYx^Frn7F-vCv`;G-i|mvJvP2- z^~%PP(Z=bK#?jG6WAyOI!4r)&6c&i$s!!i3uK7gNIVZrUJ!-@9g;|=A?@Ig@&c%=Q z_Zj~j>%Wfc`-!}D4x4bWuI$hAPfbltvR?`BF7XSE?&f#@Xa3n%zve3cn!nNb+vxz$ zpP4s|w^kM(GuVTPevvY2$T_8{3zATBYr{&TyYmM-ro$2_)&r+{a`&tRz^$)iC@mzY@uSD)o{i5~H{{5Wh$5lV9E^xs^aEx$NhBdpN3f#zE(;u`#Im9ck_Gg`mvt>K2_c!7jy4jO&K0WKR!h7TJpNW*C}y*?)}1Fc=ElQ(DvRT&4Z0F~u0MVwer0k_{7UG#e(#d_mHtZc zE1_rly^olOM_7+|J}mj~JnKs6nf~CV_`)+O*~hvv&mTPzUp$hMeXJ|<{8g;WTzBa~}8C{v<=Q_FX zxPB$~9qY=x{^RSo@7S;8zGGcEt^XSK{oJhk$EXM17kFOEXXrm1k!67KB`47n$~&?j z2rS_<{e^8G@9$-Q-cIon-sKnCunKses9ksar3rC^vvBcvYQy{~uF9XRc|JuH&-eIq z0iFO=7DnCmn|$1&ib?&7wP%6~^?3KzJ=_1ykNdKJ(?DN~znkLO diff --git a/sky130/gds/sky130_fd_sc_hd__dfbbn_1.gds b/sky130/gds/sky130_fd_sc_hd__dfbbn_1.gds deleted file mode 100644 index 05d2a14eb119a4d3923bc68f5f4f1079a82ebdbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19682 zcmcJX4Uk^dS;z0bpZo4-Hv5s?&2Bcko83*=O=3(d!ytt~D78tz5K`oGfj~d z5gEjcVxbsOQwj{wl+qR|W)z3oVv7tihzt`MMP(E#MZ|*BSQ(}wjsO4iod0|8Cik8O z7Mtd2$xu>HRwT=_enbHlGPkIV|AwD6kN6*C+dclbh^tBueuMsG)6WI{ z9VqykxxUG_U0)Zs#q}*;alKeV zd-N~DUg)27TF*vZ_!1i}t`%XA>RV=9-{b+;w}>+l{q3Ij@+m2q_Y&-4EdS*v|FP!ui+z zhHDqyogs2>c5zFwz6-f-=}nTZ2QqvV*R+eh#rn>>;1|DLr=@J*Z`wta7slV{$6V<_ z-EU?14P4VM_7v;8??asHl4Q{t8NPu2(=KA|go{ev`qx>$-@i%@EMc51dbKEP>L60`X z>UBOJMA!@UJ-dCKTD&&Hx0A%|Vr2d6#aOeSy@)|9U5jhjMc51d_u^h*+`R`=GH%+% zSp2=`Vced@Mx&ataSimaizqMlk9u7Ds25wOTra|2sPA9rS!0E`qvS6Z<37e z&G1p^X%{2UkCA`(c{}>MDLHRx7i05x^hS)^^+~b}c@#OHXcuGa@3K9J^XeoSJ3eIz z{ij_-dExvYt03+z(EnkEShvkCM%M4K&m&I6x_o2GD*8gZi1I@J%fE&=Z%>l(vr}>} zNxO*hLjAfv{)oU(+!X%|sm*#8wD#=OV#YsG(OcmUV5i;??p#SZivYxPuTh6kaiT|BMW|MdGj z@6-RBl6j|HjOCy8`23~5NyKe-F%tjuONeuQlFZza;Xgr7ySTnM{+Yi=+yhCn^4Bx` zHrk_I9Ej^{f8lzuzSH$0?1ke;KYZ@ezsTn zvmVz;>YIGp^>uMPuIIUldXeWQwkyWYPqTPNwcdu80hgt0oRB26izqLQpY`e|y1vO* zU0)YZjO#h?=)Xyf2ixU%7$fs<4zY6n&ApN#=AGHa$oyM9kA5#rk~NJCpGXq3i%W~+ zXT92!t{3aOTra|2m_O=y&Y*v>wA=L}>{)^Jm!LebJmuvgwb@_ZH*8l#yLtZY{ga*lq37Dq zHc0xVU4%VPZ}IclSw7C!UXgLqF0vh-1w{6f&lZt!vRveO(9Y9=XgANl#m_aq{5tAi zk&=0*T|{}F{->FLp1Ulz{*DGw#Z!4F2bIt zw|KhmK)ok$e%h4M&Y>+Bn^k_UFTIFz)DuxZuf03jKc1_q&!GOH43Ybe3w#VnJ135% z#C|tv$9xtm51>BAOys)IxCrw_L=HQ#e`yKi99lH$bIEvPINt>#p1gQBGhUvCMj49*mzdA$Yb@3Kl2iAY!{zSe9;dxf1 z-QF(*a(?iAOOuGJXCJNu`EIi3{pgpt4gRjjbs+b>j7vm(dGXu)82B#QMeK_)r$qLr zZ-e)Tto|n2Lp|}Z{r`gX%g$eje{iqIPu3BOoxcLnue^B9XFhpusqeyh1wO^<5cK=u zKd`a_?IX7$?<=0y#L8vfj)->h{Mr3A@=MUY820yp95>oUl;`PxmGN?)&b4Rhms8p~ z@8^B~4}zTc!#_&Nc|Lfj&v#?P^_=f)hxs47Jj3px*g}S`&05+I{rD72U0)%8?GnIFL|6I z;?3)ijrU5fBln^{_P1i~LhOGrz9QE@+y4e~oT(F`D{O!670=T#xHp(LlJ5dneK955 zpzG&~G zpF%n2TNg-sZ+l96&$Zq2-v_dM1mh#(yp=5LgFcY<@o#%MNjvA0$nx3Syqv7PjC?$t zlI7NK@r}Ivr}^RDk9v{!?d)ffqd?l}U*tY+>TTpKkaoV05lfvupGDdSX1$!``qcMK zN|y8U0FgRApG4aEY!a#GxQMiK{6yM0z9Q}RV?1=|5PYq9L^NID{9Loc=RNn`od0C? zA#hJh?jvazIZvq*51aqOklSAWsVjhm3)U%<79^78#&ZoJvDmsA6JerVl~I)SCHVJ=Q0 z=i;kjKN(nFiujlx@d?ELCawdi8~V8GN!DA295)F+%oF{Ed}YVWKVR-kZsz^YIa|iF zmG9WZ+E2M%Y#T!PXApB>?XS_l?;r<()nCCi;t(sG`zRMncs5WkvM&9K@S7K(t*7iW z{g&6JtYWPBEEOx8y${k-<9zwPHBmTl-O@+Y<-9VF7#2PU$!Hny*z(5e-=IJ z^?ER7tWQ>M!TADq5%xU2&7ZzW9Uwkx9jJpY@`KlVYqKZfU0(*F>ie zNzNnM#h8EA*}9O$-L7pqP$p-Jkc-nCeknSC&FH+pTRt4 zzh}OblJ5~{7i0ZrJ)1Ysi}Xvo2z#Obsafbyf9kQ6t;h%MBFYQ(qfdFTNk!q zy?~v2_)wmwxBGedmp#tqi&OIb2;XOjmGw9mqn?O<<+W$?Y5XRSV`4021!Fk;!o);^5&7j`k`fABKb4ZfAK1TF1ifqpaBBR*F- z5Bqrz31r;;6COXw=YBud9V(%y4 zCo*3o+o4@NtiKz>=N}KUzk|==-pAbK`@SZB53yZ|YZ2x4T{;nV-YYCO!j3((=}B8t zP%hS6gFevK7PK$2-24a9&bUOxm7Om~#IN_1V&ygLS1(8Y0=ZvoM}C|99RB_genpg* zroEix`$_x!C9vEP^nonzIMM5om5V(7Cf9rXyx-Ul#FZESPUe3Z?p4M$dR~TztNVFe zizw&5mi0*bXSvAuOdm))+ZCZJ^goGuJnK%tf0HMnKXqJ-DDQvS%SpbMW_go;;`*wH za<IH?Yn9`$MQRCWc%;XniBSi9`7x%R@?gvBZS{Kd7zbN^(UpD|Dg=; zRXK0g{&LFp3*9arHhveFUfKS}m$ z_&+j4zn0wP{UcegzmbytnnXKdLI3RevGS|luW8(i>>t^BG4^wKZisw8H9deFh|l2t zFmzn6gFdf6_WWRZ`6}0o?2o#^T#r^(B_y+$D4&$3)(zo`=s8_x^F{cIBlxeU?c3p5--Gqy0lZH;UPSHf_}wF#J)(y{#MyFuhHtpu-uI&&lxOuPS^Q1^8J*hs|J8qb zp?~#TRKLX|`u|?_r7V@|HI^_N<(9fjgx=Fi;@~EEg z_Nf=~eFf8tut)X$?gjNtzUlf_aZ9m&CGH!>zw+^vjGJ~b7C-ATZt6wGO}iM2pY<3w z^-Usfvx|}VSKNT{+v?}9Ch=@CySTNu|6K>s&$s<~B=VgAaoV(kpqi?A2^PxiQ9-v9J(gkQ6Z5&x`5ztoBJOS>5NulrWieJdVu|1P+H z=;s}-U#<`LZ{K$J+XrwR?K|Xt`8gxk(NJFLL3(i9;J@cPOz-}wV;n}TfA%@0xN!Yk zpkI8G`|VvXy5Ge&iDobKKQQio2cFIle$6gM{BxaQ+`RvrgwE_@L_fRV*^>u4R%BZjXCpt>|$t-7T8EFn-pf-;uQ$!mruIi2tFlyWim*qWc~Cx)}G*dh|cMBSZK# zyBP7m{)W2FBB_!nvx^b`T?gH7_Z_19=l+-Z3+09W-}U}E zj6d~^pYMa3MBHW= zY{xqbFE8}ZdR#Z{`{#jNH)$7R>nH0me(IY<+-4Ue@vpwl<6bi(di>l!a{NPiVf>9- zT-SE2=(@%&qS+&QUqASn3)c~n>jw2=Z2e$8_M5sU(QmVhk^a{o^SE2D5It_5%h>-= zUKl^?(J#+$O~S9)#fbmv8}7Gux9EPW(9(Y>FZ9oP^jo_-L)gqNM*LS+x!=ljqWk4% zsq`Pp3;nYm$Bo~q7CCOTi?Q)zJ;qOclZe~wVkG|31s->~E_&Rh3q-RQ#?ODJ!~2h) zsffJqXcuGmAN?@yay>)DZFVsdfAY@X|1CIwCVSlPJ9z)MK)?J|&)fKIqUVkKSB`%u zxBMYR;ru*MN~%e1Nellw+=7}NORFcXx1aYV9ei)Q;_onqUrIWLYG2)ECA;Jz{7Zs-3cV)BNeh5ky<4{?B`9p&Re1%V)BM zACrZ`7*_uc-p>3esSVY(zKb4EUB?^Gcdu^!!jDl$$FJ=k8^51D`^=*nzoFat^Ld{` z{CBPxKg7QA=z4yH8e@0#>IL(6UK639I zwZ35NPRjT{smvr9JFgg8Y-G+>ZRE)YVX+_DfrphPT0rKoA4 zPO7v}Ww6i+YP1!KL~XcKX-k1p%2=qerDHF)Q>uebifIEWlR=E>|9_tI|K4{u?|aO^ zG&AAH_nh;b|8vfH&Uw#!z7Jg06^p;@1`Ea74_&hxa5XpL7Nq~(wHB+}uGxCSWjEa9 zTu-U;?vrmlVeQ}Cf8ZT!zBRe)o(s=)gOz;W!D@B;wKuI?wPNc1S4?fceCp~erlziV z|JJS7O&#ybP0m%@itZ<_+Fo?dO>~y<&+zB?v+ZBV=3VyhB0iP7@HhCM;{7MgfAnJK ziXU@sNi|_Q+&laZx>I?_jliLuJ8c< zUXZZ32|b2gM0u`0>(x-7{tX^B|C+cd?%#C3`HS_9<}bpYufGfZ{&o1DnXobjf7nHo z=lZjcP3NPph*hi?tnVW1x&9+pBdL~P{AZ>3_ZWZL#U&Ac%pb>&^CuROmz+Nl_FVmi z7s2l==N45`eBC*37tf0OmtQb{v9iPbMcDK8=VRRVqW-rNGH(~cF2?eA!8dKJhc8PJ zbK&h`B!A{3cgvqZeaxd+S>_z=BJ8>G&+kUu>rwyl6c6Du?c(};|9MYi+;2qv4~pKk%6O&AB`w{b(1X{>_LR>u=zZ6tV6GXcr^vub+AQ zx2V58Vf{nS(JrDqH~#)#!Mt_BzbC~%hd=FNSHAyj)ZzH`Uzw2ord^EnzxR8VCw(`k z_=0oZE{^Bx_pY{a>;113F>c;2M#irj{j7Zq4{G#ZY+CFb?IP^C9+JIq%Q4ZOuzmF z#tr*t^ED}A-Fv$jS^ssMy|{lik0s>3NxK-^KkFmtcNgk@Cq?Xi-Y!P=Pv&^x7HDG( z#o|)SeG&HD`J+G2o%9!Z?xbCeoj&D@SbHs}H1zarbsH zGXAW`b1VHto?B@bW9Qcra*XHy@|P0wOia5NJO8sD&;9go@UZ#w{2$75$DidKclwJQ zciP3+_!qwbU*uZp^n^V3(=Nu&|I5As-8-FIenG-I=96|2<+<@M{YUhB7%!8Ep~2^z z^LBAK-=Aa5^~d**1~Kp6E=J~`I-Ec1i}a;kjLjeGHGSCp#rk~n7h%usKi^XsH{X97 zMBLskM&ciR74xw(j z$zRrE-qK%W-qJ3{@|X3PH}r21dE@Qk^!$0Rzd!787xVsc@m9o*dc3a@iwAN4vl{UP z7SKO`KNMK{Jnn07z7zfZ6Wc)?p}q8cNpBtXcu!P3!}LTxH+cUc`g@D*s5gvz3DDsz zK|c|Gx$Scu@ZMzt=Q*+dK|D|PA|C?T4$H;T53ye0C&Dkc{c)U^>lkb9uVQrzKI7h2 zEaJKA_uoM3&`*S4R{M4zycuyI*21?ERH({El1q{fjs(3LVvFXyNL2Ef1j_s7ph&4`<1&A zRt9iCatQqkEIwuTFJk#h=jbQGKdXHopTB>>y6MOJBi9dELwo-IB@p&3|95e``wqen zW7CcEkI3=rK|YF=Pg*^3#`~Do=WgHLcg?T&w^AH;ZWhj2951p4O}?*-d{5a(p0DGc;URnuEFQ+^HJBf96LfwTp96V6*@w79^ebyT{CxEs4?nCse}59l zeWmkr$frPmFM#n8xi0A^!auA1dpSP-e&p}aUOVPrM83CfvwSE0dnfWsWWKlHj3<^K zMEyU;cm^`>xi>Xf$M~IN`A>2lJNcX!KVfn3zB$B`6|c{a4x9^1&)`1f!i4@_1M?wr zeXyR0`dRJyd~JRN^>(5^KTpVaCE7)lXZibhcu(NpZATJv-85tPMdpjYPY6W)toD37 z)fb_=A7lH`gxn`-7g3(&zm4;kN1vDAvsSD{aVT-U>UFkXSIH@e&ElY9;{E)nr% z#lMd6ufW`Kym*cjD__Cqo6(;@&M(VFu5$jDbmipSfoG4PNbc8gCgxkjJ-&^|KoY&$Pw&o$Db{Fzv%cjzh>?Y zuC?}?19`7ReUWy?C;EFQ#4pm`hUb*%?^UtBMB2OOSUJi3>$xH!%Lnhba+2Q*%v+R@ z<-@RvEa&`*v~zyN%40VFBJIo%vHFtbk4QW7OQaw3Po&-dPC$HZTK-Pi`M%)yTh^Q{=k@vw0Haz^~IBsPuRcNF3Eb$*uX{FYyWNKo`|#h zaeNk0Ucx$OJ0{<){}56{0%PbMsW4ej%}F7Ctga~3`amgXY9>rh{O2InZ8hxpth z={N9e30ZF*#}?O)9OlILKyKd&QU`6k=HMfQ!~=Zb8X z-w%tlvmG%<&yUy8Nyvrkv7T;CNd377O`l}DEEoNA1b!m?v-;!PpYt%<-GuY@i3!>M zKEAn0Pei?}_WbFYA3aA^X$2()vS| z(Pr--B`p05o-c!#??CFa9TDwi>G}ELxtix>zMqKHoAs-vN3tE3i#*rTPlR7q`xBg> z&gadqYiq*tr_3&*-7J4U9)90=X8QS<@wNZ8#Yb{ov@cJ{yl=Y?aP11%1PRn@p&A`b29BBP~#g;9I9e+g5gFovA);^8r!x;92 zz{<;bp07upK-%YBXXPaAi~cgjDdhJ<_$;ms=hQ&xrt|6K5T9R9eBZ1;iurt7!luh? zJ&8Qmv%Eo!C;d2{!9S~gzd!U~LoQv5{^9u{7SW%UhcUk**D~txecu!I%0F2->0ZY3 zo*R20+R4(J;QDZ%w0h-lC!`MTBHD@i*JdL(;4jwiHh&TJEPtPWdVlA5@%^2o?#P)5 z*$>teQ7@}KKYj~ev3cP*aGuDfE{x|_6IMTf^VV}%-+?TjcfiU?+S!hXc5?L=z02ll z-fIaN|D4w?eoxHP?A`br$a(GUxB4Xe#dgG;`SSU<664H%ExRMdEAf2{+OG%ly_e-8 z^NxOEPJjG-upZ}u{v!Ls_C?0Ydg6@vxWuoQ@Oye(3LQCe3fGs2b`QZ9e~jLq9^chr zy&*r%hu;gVYDfHmEnCbk!k+eD6a05Gzx#iHynG7d|741v#a@T|f|`i(`lVLx345i- z$~{qDdezEFe}+N1SZfOYf&Q$6_C=O^{Xp6omx%bH@w4Cb7t24vesCk!Tp-_tdB5A> z@8jQ3$6pcU#ZfCKc`xn1e+n$M2LC{ox4zTrk!6ex^&4De@s|U0#(x{fe-YN5Uq_!x zaW&fO!)Foet@nSeoaFZ^EN}1;tVj4)M3l2#mWTGU#?R}|!*h`1GBlDR#--y&_$;EF z?rjC?+ok56TSz`-{{Ma z_U{bO9~Lf6~Hi2m4s>5e@un(i2$NzB7go}0g{N8PcfQ-rR!ixK_N^`<*| zNHpEi^`f`u>a!m8M{(w85W3zjM)XH+G2O*WMbjO*MU3mS9(5NlO%b}@E=KehK5Dv) zrbN?S_^24yUx?=!zuQ^F_n^S)S$LkpF2bHWe$-+7i>6XU+}{3B>uTOE$+cd(c+%FQ;f&Ydek4B zOcA=?E=KeR9y8rJmy4#$|DKHdPbkmrKkHGSzaMH4y525E^k?rk-Tu2p)1AFv^!8l+ z*+0W`A9KLpAvK7(@OE)y{`|2Xzf1PNXA0zRBWM?A{P#f9p5Kg<{pR;A4Wi%PE=Ky_ zH*Edxdrq`|_YI5j{`al0eWwq1RNQ|^?mM)LvHgcSjGOQ44I*xD7bEfaY__<20G@+; zj#%71o5gtitVdn?H3(gA7bE(!ZZ+NRRif$6x>bzpvmSN3@vhY%biG}S=yyJDx?NX^ zrrY_r7}sY#>ULd~B6Pi7jOe$&V!9poh^E{AiWt}LKsD}v{`XXY-1le~WBVU<7=On- zDI#uf7bEevEw;GZ_KFsF+hQ>uKkHGyZEuRu^>#6$-*SQJw(>6ILA;ljOt<9%F|OZo zu8p7neHq4&S62jGwv{3B>vh{7I)LNqQ%WSB|d*bdG7wtder4TZG+JDb}^z~dChdI zUldKZ0$=Kf@?3q^qi*$!DZ=LMVnn|@Zo1_cMAPMO9jPD6bM^Th4(E-(#}hekw2QI% zqYmTeZ#5f4+}VEAVR08u6fJIdhZv8a^{8JsF-7QlyO^aP?r$cy!S?}tzlr-ek@wiNi?AO(ekp&> zJN-q@JN?DX`A_-tx1;oL5btvI=YP-axjtWiY|P>w!}lqSpJd#$i?R4wk8#saWZbli zvG`e!anrv+#O>{3B>s`lAlEnI{gL;uBF>H8E@qt{!}z`F=V$P*eb;pPdtmB&Lf6~H zh(7D_+($o==RVrS%=2H+=RG5J3#(IvuD6R3eb%Ec{YC21F2?o4x;ys!Q#*gB;`i$h z`VDg3L4W4`X)8j)|IY~ieMMJs)!7C9b4~%ZTjy3*ukwH1=305LJn|C8<386qP(A0= zO{bnabqYRq;crG8<-9f=NH1{*se%e2sx6|WKM4=y#N3J diff --git a/sky130/gds/sky130_fd_sc_hd__dfbbp_1.gds b/sky130/gds/sky130_fd_sc_hd__dfbbp_1.gds deleted file mode 100644 index 97f0cc8cf86166e572090c2f44310781c555e224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19150 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 vAM(bAhVG5UYXRFuwVM1dBMVRY diff --git a/sky130/gds/sky130_fd_sc_hd__dfrbp_1.gds b/sky130/gds/sky130_fd_sc_hd__dfrbp_1.gds deleted file mode 100644 index 22481a20757a39aec562a8e02e3adaf6303c53e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17770 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dfrbp_2.gds b/sky130/gds/sky130_fd_sc_hd__dfrbp_2.gds deleted file mode 100644 index 994deb1352bb2459fbbe523923110087e65dbd14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18498 zcmb`P3y_{wdB@Lw*Zuas+091rHrZSthERb5HC$4xxo8NWp~7;>K+~j3p$-$F zWoYZ9v|L1~DGk)n)@EAjsBNiIWk|HBHELv-PHPclw6wzj1IRG6qLcpr=Q;oHeK)-4 zC#o35SxwQaMr z+pfFunj27V}EuQY#R?T?+S{xX6Mtl#5Y-+br9>Wj_|9Kr3dnN%-Xt z{qv`M82^25#?lKmM@=4buH$>?Be1f-xt^^kkU(D7i#DOqxp~w1KPkoMWn7&P1KgYk-Tho6|r+%ap=juQD z{}O+{jlcY5)X~$JyJs@i4 zosn_VE~eriWS;NC`onr?68US#I%57j(OyB^Z1=>*?d^e_KkCIg?7m;|zQXu@{syro zD=(o2Z_3EH8=EbDlI`WwbG*vhDqXdozv4@U{(b&Nu(y@(4)YgSb?8X%JFo3(fo8^{G4~PinY~-ViqeGVf}mp>nX7Gb88prziqGiC%t`N zM()-0BSzx!`E6f`y5EBSFb0uvwPC%8v^Rca?PP5o_7~_xv=`;q_uugq#L(*))QQj)^}mw&?7~>9pK-4H)r_@Q%r2t6NPiCXz4u$5dr;rZH_3Q< zLw%BrgV%|;uBgAA>~H>R%UeI@h4~|Ei*Ozq&sc?h-VVeYSbo{sMf&f1#Nr@%Zezb< zWIp|P2ClF?&+p2}{^tLs^+%Qt;{1i{#7KVcW|U?u_&|@;~N}Wc$buGx97(yGXy(i?p*}5&9zk-{yQz|DE}n9?i&oeG2=z z$atpSXYC~Ii&`?aAs3UVZ;|a2e`f6@KNr|8GEVA6+S#v2JN=8aGd_`a#w{YgqVcWd z_`0X;y6#6a^1hOG5&cB<+;3{n;d<1%$b8T)!XDN4d=+(sy`c948L6XPM0;L;!JPB_ zrw}Jp#R#ZGtw{ZV#+`3kbcMZ zxp&|_Naa__KwOj=N5k>N6fvq zi_7NdH~IN%K7W7?pP^Iuyb{~?A@BGRVbA-YqhI<5rdxJNM(Su6Q+oNG{)*{I>Sz~J zdimvjH{&O%qg_ntiIlieC%z{1LpXjc)|Qmelkb+^>#7g-<|mLh&le*& z>>T0O+r@>HL+hLET~h;JtX0*f+dgEZRSs z^<#d^bKo>__G!`lQcwS(J?g)H(EPUU$Prp^7Zd*L z2hDHm4$=HlPyeAk>c4T9`Q>LV$L|Th-YzEm^E%cYbxoq~yj@JxU*j%|yX_3o;-;SQ zhxTav?OQGGj&hEO+uOxN{Jf6!N4?0pqg_nZU;9>zyMxcdAGUrNH}ytukH+6QZE<%V z&Jl5YyO@Z-bK3lN9v00n_4FUwqyD>IGr!$?bA(@S7Zd(_*4eqE=aq~+f6y)#oFW#s8T3?Y&+!ztq!zkF`hr&%49?_N~bg ze!X2x_@8%&`R!XHnqTVaKeR{v_v0F_+x{at!mqcB3IF| zn%{v#Il`~EiwXaO7$?`=5b`H--O(_J}s_L7b~O z{?HyB|L~(W?giK8h;e(nm>B=?qvm(PwW9f@p8i97)IXp5a{fnGdv0 z1m}dxnW&!~IpRLX+r=~E=dYPz8~4oDL>u?au;}g4@$)*4f97jBV%**?CdR+)dDAVw zCr9YKT}84kRrdxcwcr3leJ-s4F#7#Zlhk7RBU$W8s zE_qWlze_fXY5%;A`Co$bc9Zby?c!Yj_C6`B|7Cb5P`|~w<*gZ8r;#_BUBi=|$M1{@v%`=dbb4 z){OK`yNLFv-rwiodfxx=y@Ds!v$u;y?-N4)d0i{kJ9Q%8LDDY59`*0`LAwUAzb8lR z9o{a^eV;sM{u=)bU#y`IT2zyk|d1BrP6zbXXKd_3EU=4ckH+8n z6Zl?@Yaht*Y4kE}}iE=Y0;>FYlk4MDDy@ zOswBt)-Uw)Sid54-Y%x}hmiNB(0?SyC!wcZOzhwDF!sv1ct40SH~HV_k9P6g`1tv~ zEUv%)?HRf5XctrKukS6yiTdsTOpeH@w~LAToqsd@?zj6Tk?W3jF}42Y-;R0fg&yaJ zCcg|l?P70y{5+>J|Ga-|5_$J_F_Hhl4TrQ zyO@~&kx{F=k*{ZD-O(Tk3caUyr4nCm7V!SA$-?eX|W55O!-AVUOmI@mG&n{36c|w2QDu_4Lno zH;li@=gohMcy?Uhg}sOM&+orBiMsc8F;V{$7(3^05@QxQZ?uc4`Qvq*H|m?jym`Br zm_ODj*AMGghD&5KWBWa z>4xU#i23cu^D@paS>A#1PiLgRj(@f5J#k&*pX_>1wAaS0on##JBSK#kkIz?U-SSkw zCL{BLzpL^2Ase5^@4QYd&esNxk9lC;7vZ}nP2Oes;yXa*tKMntV)Z+w6OWn?d%qvP zZ|^QgUJhezd?_REEom3go*%FDI~gCJOVvLMJv3tDA=8Vzcjfzbv5dL!egplpA?U@@ zE!MAyevAD3_2utxq4oE-f%NO2tpuXqsJ^-zu`!3J0kL*F_Da}A*rWP|+?SER@tZTY z;ro}gi%0DbbMn`C3FCem+Wi^pD=^pC-$Xul^UogwIlk6sVGFFImU)&D{qqj?yBgP6 z|IzsQ8O-P7ZJ*0n-3}e>V&U`ge&_3x-@D~~Jl_wCtONgiDv;+U{~kGz{_@|~g)SPO zp5OPrZt;;tm_~Q3^`F>EWo&r7WBJ4$a|9#hC)VY5Td2vRroB3FaBKzh2x5&SP z82lOf59EC*`w`J!kw3q`jy(h2Z#)0~MfCS|$hpXUgV%|;uBbm>9}BToc^}5_>x!I@ z!48`jlIPyxZ)W7aI>a~vOM@6M`Vbw?>%+UT#|2iWtbftp57IBzL-1b|pP!$;UxnY> zFu(96@^52k7hx~bZ(#lV@9CjN_~ZY6jKq4V|6)e=>z}U%vfb;%xzE?MfBE<@NdI1Z z>QxaAE~Pj8ct+l@gwLN^1MNRTJX=Jo<61-X_M-9qEyp+h9Ad}kh`&D%2_J#gZoB^#`5bK&YfLO(jr!`udJFX5<6e#W+GWo@N?%0#{h04S-XHk;>p*_b zm~n}SuPA<>zplqoN0^`fwv0TN(=Hx$KA)5S?oVO-58`(tsX&oXEPQU4%WVpS}-yK8*1`o00n#?PBD7{Qfxe zE%I-eXcr5=KOXiMKBsi&Vcouxv4pivyNLE^{Jq#S+!^?Me>}EedY*fz7u&XDY|x9a zNA)~Y@pHcR@r?XiG}=Y9NA-&qz%TZ#DLl^xXhhRFPP_K!cpkUPh3=AW2~;|kyFKhALlAO2J8_9a9c z8}4tcHaK6A%pXI=G!)EoLY2t;F;tAOV3rfAP_;#wKZc6qDwySj>f|zCG|M=ab1lQy zK*?2IZLo#^UVvTHb&OQk4&Tq8KXn~k)r)V&^7=hj8?J2*>+D3-GqVtV-nBwKyXpA! zYy8jY=6&pZ?5-EPj^WzH>$a@BWEQ{r>OMvcbNZ;g2fNu%If4sMLhWAkYK-854cL}X z*gN%=zhVYXPR|TLAIkvt<73Yu|2`Z)h~ct}HeEPp49Bg<+Mxb@@4tACe(mx4m;R_3 sH2vA>8qCGN=_vgc?|)@nKUzKiazA?1cJ5OO`PBcq$Hr4fnk(-A09hK9WB>pF diff --git a/sky130/gds/sky130_fd_sc_hd__dfrtn_1.gds b/sky130/gds/sky130_fd_sc_hd__dfrtn_1.gds deleted file mode 100644 index ef0e9399423134279a7f86cacd9ed8c8769fa818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15246 zcmbuG3#=Vg6^8eD%$&!4_dd>j_TJk<5UJK{RZu|NLPhOEOF;yID}o@lqVkBTqDCV@ zvXlUH#+j zkG=Bfo0o3edeU)jGRoIZ#_@R@H_t75$^4mT%%6Aq{5#K>pFiWwbI(6#e$G|v&c!`t z_lS#o%g(ta{T2KheilDwe~`^>_P2;n)dBnl{k+!?l}@If$44uiTL_I92!aslLpFfpd`1|sN<%iM# zsnCc!o$LN3J_lCEo$Egl0}SMG185T~zjJQzHuM+Bo zC!Cvj4L*z8k)LUN77;J=$hbp3GxBZo)w=^@J09_#p0I{_pj||JT7Rm|m)oTIVlMb2 z#$P~RuSI?XYZ%MmF!~FO{*Lk8fnx$`pZ3yLazO9xr0t z|Fn3F-k#PU?e+aZe>vKBI9EDcgckX5m~W%E7wA#nh_iHfihE4o6jyh|zr53bN~eCL z6Fc=E=+rB2QE`ho@ekSf%NsCH$a&?0gf+|!?IPNrIsTw;tu@`~dlFJdyZCJS>N4l3 z7o#!Li?C<;_w_e*A7a1Dxk=Q1n_t3uI|QFawD(?P?PU4S)-G1Mp}zs`fwZ$<5&dTQ z_vgFH_bu+~{RtU2?P5{wn13KMT)6US@H%=(GCw*X#OImgoAJ31eIj z;`ie>FdA~M{zCW*WWV*>t$#B52|lAA5%ZSi??R5J`zG_#jq!7S$q2REM6rm~V^E); zMZE@=pSE_9{+nCPKk4n;5^^omkC+pW&u`Zf)YS&`hcSqZtBHCPX>UAe?PR

lZo^ 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dfrtp_1.gds b/sky130/gds/sky130_fd_sc_hd__dfrtp_1.gds deleted file mode 100644 index dec095f33fc9a3173a622130db1e9540a66a3e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15372 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 SCF%F6M1S1w<7ptxweY{RSETv? diff --git a/sky130/gds/sky130_fd_sc_hd__dfrtp_4.gds b/sky130/gds/sky130_fd_sc_hd__dfrtp_4.gds deleted file mode 100644 index 78ca37848a17dca66bc393a2c1e2f514f631a541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18008 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dfsbp_2.gds b/sky130/gds/sky130_fd_sc_hd__dfsbp_2.gds deleted file mode 100644 index 16f10d978d8644ebc462b661da7dc22895c5eed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19000 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 a`SKI)VDZmvXu9qHVN;yXdJt$fv;PLu90zIu diff --git a/sky130/gds/sky130_fd_sc_hd__dfstp_1.gds b/sky130/gds/sky130_fd_sc_hd__dfstp_1.gds deleted file mode 100644 index 71c4703314eb2a4aeddfc29aca4d1d6a3222cfd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15674 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dfstp_2.gds b/sky130/gds/sky130_fd_sc_hd__dfstp_2.gds deleted file mode 100644 index 7f9113945920fe9699884f249701554a827fb94c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16244 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 Al>h($ diff --git a/sky130/gds/sky130_fd_sc_hd__dfstp_4.gds b/sky130/gds/sky130_fd_sc_hd__dfstp_4.gds deleted file mode 100644 index af17799ec09615f64136eaa1ff1aa3e673e32442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17806 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dfxbp_1.gds b/sky130/gds/sky130_fd_sc_hd__dfxbp_1.gds deleted file mode 100644 index 301b0261723eb94e1753d24fb124ea2d6c855080..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14106 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 A!vFvP diff --git a/sky130/gds/sky130_fd_sc_hd__dfxbp_2.gds b/sky130/gds/sky130_fd_sc_hd__dfxbp_2.gds deleted file mode 100644 index 8d98c7e214295f6add5bc4aa4bede4baa802ea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15214 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 MR~yeJ#-;B517}22#{d8T diff --git a/sky130/gds/sky130_fd_sc_hd__dfxtp_1.gds b/sky130/gds/sky130_fd_sc_hd__dfxtp_1.gds deleted file mode 100644 index 9335e44ccf63f7e99b085116c5ee4d7cb950c95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12206 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dfxtp_2.gds b/sky130/gds/sky130_fd_sc_hd__dfxtp_2.gds deleted file mode 100644 index effb75ffc87dc256e2a8a7ae7a5998d7836c44d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12638 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

  • {*L0pH=0!33AXZ1j27)BWdwH2U)E^geIV!d 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dlclkp_2.gds b/sky130/gds/sky130_fd_sc_hd__dlclkp_2.gds deleted file mode 100644 index f6427b03d0c79d7df11f8fa31d5941fff33c7a72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10400 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dlclkp_4.gds b/sky130/gds/sky130_fd_sc_hd__dlclkp_4.gds deleted file mode 100644 index 97926343bdeb64117980ab638fbb612f12306fe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12932 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 DAG>GZ diff --git a/sky130/gds/sky130_fd_sc_hd__dlrbp_1.gds b/sky130/gds/sky130_fd_sc_hd__dlrbp_1.gds deleted file mode 100644 index d5370f72b267eb18acb7dcd020bcffa1c1045ac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13368 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 BPzL}2 diff --git a/sky130/gds/sky130_fd_sc_hd__dlrbp_2.gds b/sky130/gds/sky130_fd_sc_hd__dlrbp_2.gds deleted file mode 100644 index 8e438ed4e5d53a72c96b55a2a32655c0cb150c1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14986 zcmc(m3yfV=6^8eHoqO-Rr}OU2blQZ6V6|Wc#1hk%Rz%uDX$zFsM2b9Y2~c8?hZv(k z2qlCl5G+c?2r43q5J6I7gHR0+M2w(-8WD^N5sVd)K>h!{_J7Zra?fs=tMMko*R%Hi z_gZ`H$JyuHi%VRwc!C=%6sym>HaFs`ZZ9`G`)}7#Og5Z-+QyGHe|+Y!-DGk=@tuQQg*{%qEGygt+?H8imcKAXYVsRU;H$xxDcH0lM_DR~Q6QOI?zVBbh z?~tnt(B6)e>|fg?{sNQh5$~Un!@$Z>RxXyGbFSk^#23hT*sh57oB8+sn{kHu>HT@i z%6l;XHzA(D64nmOMYcx zO4`T1VC5v^8QVK0{m?El4(i2n!P*sRr(Y56H;eC4#y5&}PX9CSOG*Djx0-*F5JJBB65bIyH_QWdu7EeQYU&Eh+Z{VP9>wGaQL*HW_WGHfFE1=bT$zgc@eUzK~%)&r>fR!WX1?IOyX z>3zQHxNrLX_T-ewXVKp4_zSF`i?;4Uyn&UckgL043oK!6^WG}5AIUeZKV-TH(-z+}gzxr)xoBQK~DVZ1AMU*$w`}0G`HpF^9_NRj~d<6T`Ik*n=_W|tx zBKP@@A;cG$?2BvsTSR-!{Jq5S?Kul^BL7_jDXZvjR{{P4>ldLv_oEMiwa3x^!^n}i z9M^xwwK$6X^Ke`TR&g)rJRa?d&~_rfRq+S7J_Fa{H*mck*Ma40a9u=y1B>Wu8}9F7 z;T)8I8{-$qb6*_yz34tC#mcGS4x)m{nN@x-hT!*reyihFRh%c?&I7r)|bfg(aWuzr2jGWUu5|# z%x{tNem43e((d~$?r4@DcQf-d@DH0816QQv8tGeRYlf_U4)z|d9^P6@N?KGJWZiAl> z%oFO*T9cCd-}p)BUm(u~<9DF{f$Rs%MTdS;FP0}P|6=p_)A{J2<#>suPuh5jv~#>g zp2bHmLB0ZM=X?Ja_KgiCoS;LG-$2|*mPJI^4=d-n$1m{{o9Q!B2vi1DSXF6`PNrTgLdt3l`VRU!`OmBUf5HBR@dq6w(e39$3ey^=hva-o%yTKCn?aCJT6R|(l25}u& z#9q!bSA%z=eY9B&q>gcjh$lN<_B=c{JWs<<`7+C`Sb3Lo4t5dteEnUB?RMzbrmU}o z9(EDsQN5p=&^L(t8uh%tc{V%WD}K}~pzriA7BSbU6JgKw&pO=y{j*?T9b-+qi1Mhu zfU%{%L9QpRH*w#H9`l}g_vgJp=Di5J7|TD;eat`4dm{7h&x3)n{IeeOPJM&ui?@rB z{IeeO?$4Wn>^tpZEdRXc)E=_6Ao_D5>>}*B`KP{mzUf7tYka$but)Wb-=8l788`J} zEdHd7zCHjw@0Wq)kK-D4ahLP*l=a8+3D0Rfn~6Nf(JsQC8^1r_Tw?laU~O;Hi?B!a zg+9|axYhLjet|e(&(+s1M!yj|&)*GlPSP$e&)2t&AlI9*pFNn8_ifrml;`^Adlo(? zv_sS21JKhh_U7xkFEj7$Po!ktX%}PpZ^t>7=h_b3gGHWuX%}J7ji1j2$%Wy0Ah0?I z*RYEy&(-ri1jnual?*X{-Y!PQ&!2y>e{|zs&;5hs{z1DK+dsNqf?xEt`-YVMJOaCj z^4$0ba8EDKxAS9z&*7SOaeltO8(V#HH2i-n!`E?5yLfa&|0DCy=Mnn%gx_x3#fbmW zyKUZ#;dzPkh~&JXU5w2iJ_m5!PGIj5xo&9}W9!$~gJ0_DpQK;f#h8Ddiwn=7ekEn` zayu`JD9;@~_LFh5-y-Aoc?pcgPyfkw^DkDhpVKbFp6j3WxZgAW1|Kp#?V zjXTeG9Dh%YySIzG8GqjQ+5ZNym$3i5|9eL6|0B<$9>#3u6)Ab&ps66&>KlC1^gMrt^4$3O{Lj1%@c9rw*3&c9sfq!2R2z#{uocHX1gBUmVpYz`{GJf=vV9xpX z6@gWZ3GE`vbN%;y!qzR{&vX5HV%>VX7+Jr(Pu8Bd`=?mH#_pdY?79A_uU>0^YxP9bkH%AZ%;FK*KI0K#Z>IO}b9hc;zdQHOaFxZw`zPaKIpY=C zf9gcoo3-!zJApO8I7aSC$$pMvj};j=>xnu2ZM4TcQ!g?uwl6X+wkM)qHohf(KJ|q4 zcLV179ay^yMd;Sx59e{Cw@38I(NWZAxWn}ReLLDgc~)=hui-zVQ#=1#{lzWzzg4~E zzu(?Rw{60{fakwD?n4bCmwca-h$t`aW94K8Yt?_RC~|H=&+phgVQ0In7uwI}e~SMO z>|fPw*uxIa@Qcv)<61;{>F-uf^0yW&7pt|P52T&#ifBLU-@YFW`}f4S&AW;1BIXX} z-^951w)r+NF1|Io|kclbup{8CT}Z|E=b~)$wn2{N$UVwt9Q+{N+4n{C)E?gkNtLBmP@mKdt%?{d3dpf2;ZL zde!pYy;-!pcfBgc^Ur$BfA{7Lk#}zwBl+*#+x&JuE}Gv?JOgt4LwWA_vmX6-KAs`` zdb=3$-@exTc9cZ(+rC!x_FVt%8*$Ef9p{a)l>APEb`js?m#U)0 zT|7mM$Issxa^CshCkAr<(Jsd3AN?@?QZ+-w?d@VDes`V4U05Jm-0nIt9zW~Re_=s} z@ayej#DA;LANrlv*gW&^3BTShM*NRnZv7scCtAO$=ll=lx%02p^TYo;{{A)A@994O zO#AsOynh({Aoi~1c+UA_hOgn8c5&+W&-VNm^fP{pwYoCAFBWl@^LBA%ll@!%@vfTR z-}v7r1@gTUzc&zf`Tk~#fBue%{)fMtA^du~81X-TuJwD?NQUUQw~LYfvmW<9>P7B* zw2MvmztDfyWB;ia*>Bp#SpO#$SidJ;$PoSZb}`cb1i!Ol{*wDLgwET=h@S7ss4pzc z5IS!cccbV2OTEZ_mwIuR{da|bf7N*Z4ZnY|_s3$}7U=O2VfXt-9ZlkQwtD}Q%qgN$ zt-A#8zjyt7JIfDMd>akE0~M82;p0^u<_mLmu;?l-87lCXMNJiJX?Y@YZzI!zaPzZPQiv4S03ONOJ7bRZCY-F5a{F=ljq5t@jf+sUm_J zdOx{h8v5~{`0TZ$udZm#Kl1-h{7)JEWS#FnMt{kk^?r()@3<{{M=V;s^qtQh>MQ?d z^l#H+o$P+@QjZVx#~ra^$rS&4tj9{D{+Q#BouXg3r~akiW%m7d^b6u^H`D(WP5n<_ jzsmQ2ZodDq%Hk7!_OYjE_rf(+qy86A%O{Se<+A$^7TI8k diff --git a/sky130/gds/sky130_fd_sc_hd__dlrtn_1.gds b/sky130/gds/sky130_fd_sc_hd__dlrtn_1.gds deleted file mode 100644 index b37aa386f0f2d787ed0620262a2a1044747067f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11712 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 PvHoz{=2L<-rQ-evMaGvc diff --git a/sky130/gds/sky130_fd_sc_hd__dlrtn_2.gds b/sky130/gds/sky130_fd_sc_hd__dlrtn_2.gds deleted file mode 100644 index ec741445e7894b36e3f49d52afc8877c73c7947e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11538 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dlrtp_1.gds b/sky130/gds/sky130_fd_sc_hd__dlrtp_1.gds deleted file mode 100644 index 9b8ab87e0f9179fd5e4459c1ece810b67b7274e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10882 zcmcJVeT-CB8OG1tJNM4#&dl!2?si*@QcEhjTF6F;!I*_*B?^VYf(QXN7AkFkv<1JY z*3W1|+NP3-4W&(~rV_=bf7B*6&Hh0es|F1rO>NXvtxawGifxo2HHgo1-t*pjcRS~{ zyXYkFy~|{%YbzV2l}Vh4|Zj2Di#T$m%iqw-QgqUi@+X+pT}c?4dvF*S1T2WqjC} z=tB@wK87~$!n0%PlrcT;G$!Fa#eq|j3TWL(CKV@}^G375p z(~;%nF)1g53sSB$H;KQJcDAd8e>eTr?0*jihH=;bm6E#k>qVbrdF>}D<1dS!66M|6 z|2*3--HNy$$JoJN8NWsBO6tYG5j~RQ94}5uzvv0^C&S%RU&($`M~V8~;<58xe;RE) z3azs#1{56L{Jyqq!`!uTwLzaw?ot`hBg_4{9f-@A?JKa-Mr{YyoU zWO?Vgl;Mj~uA~nAmDY}SmGJMTZ|A!ciB9|Gl+^1xCwe5?VY!kz^iv|XcIl_|^xw80{#g1IUXwCH4h0`Z`;NucXdC59wo5-H#>E>y z_bBcM)$3AnomamC4M(<9!+xZsoqkHseqh&Y^C_$)#M;D|C^=4zd!gY-d!r`hWOxw! z0me*8-NpgYCxd_B`Jt52MYIncCECmOcg*dNA7DP!+Q^H|(Ee$LT#t9V^$2pGWj!V8 zcWZB$?U{{;^H<29@swC+-dvL4L`sK#Yvx%RCtEBy^V;Q+bT_x?M@1VY8>0Kzp zexjtkiM>Zjzh2CTlJ-th%E=POzn}Bz$Z~tHQl9NP{`YhI`yZ2aL4U3jl4pPWhLn}B zVn6LgemL6w1m~-g`$FqH{2iGmtsUsIW8rGV|2vGgWAp;zza8}*xo#MT(zAYSK3Co< z>mqx<;=P7zM_IWUZGQ{#I!4bS)+4YvhUiQ5N9Z{+m*ejtKF44e#(E5MsJwu-pv!gW z^t0N9qp3PYM5S?GLm4=qTcT5^cSdlJiEp z66M|e?fzVR2617%hv!mKw+NduK8$D7Q=-1Ny*BDmx9?y|w!`~~lJm-X${F)J>CO+E zkIdU>8S{-!G!25VfXf*b-1r`Z7VAUJj1Sp-RsYJDj!6=m_KC&{h?h6 zyVsvO+!v{z@Qmo&^GVA6{zoM5?0JhkwC6qYE`Xi+N9N^UXA-*5>#wBbIZnG0FnXa(_$sJkDR* zl{xvxaibs4uY~Zkc4dx#^cTeXr0liI;tiNP*p)N(^J)7J&s^RexCbijxd*!vcJKW0 zoZ_8n;E|M-mG1mW)=nsz1ZUjHWjkv}c^J2HQ0SLWqUeGq-e*z;bk zEN#Ox>`K_Z`W(N~tulVf@)a0=*p;w*{c9hQe%Jn)lKrM#nb&{52l8%M8_p29YwgNw z{rZfP`ETzpj?8=7m3jHkeV+5i{a?wrX;uAztFBkx!0fXR0d~N^Y)a%J%|N%CCa`2tvkhU;MtTR z)+FspkH7ssg?^RCMNe6JFZQ1%`s2v8+4F#`QOjPme;Ch>(JwIH&!P=SwBwDJJFS%1lw zL_g!F?fifJZ@a|)U#h>1pZoo&K7qWzU7@x(!*62lnJ-F|hkuiDlD~1VTv;kRe@EKc zt`hBM$A6lBbwBFumAx(DDD=i)SE8KXkF%V#@2)6M_(SoJl*m1{%W~I#R$snrq6SZar69B zGH%+HdGXtN7sQ|6d9t1GxcDn!e|`SA_~~CY4E&fI2I=?^HDgC&96T;8hl{x;L zfBF@cW(YrPSH6Ki^Pm1o<~{wDGxC3py+0@Ki_rap{63+q9)mwVO4#lARnR2<|CQc9 zVaq_=ZWm_RhME7~ijXW2bub+NG(NzdcuV#$Nc(T)jDW@V=zEV;kXmZyU(hH_joBAwHPFkFH#^ zV%i+MX@6us{jb}!ewzR2o7GqU8TtFa@n4$1hBEzM(^Y@&{u8$U!+!mF(ef>J^s%;e T7r`@fLjUWhj3=3fLl0#0a7y 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 PTXKZW+r^Uj@qQLJenhmm@qVJW z7sltApYzYZ{|)54qg^bUe~iQY<41Bt-rg>j@{Udu%k$@ZV9q=L{y32H zk9M(a{xJ^ouckR7Z*Lb%@^{x--j%tcLHdqiAs7k7@o)Sv%){~rf^ zjdM5Ow}{P+(BmV*?#I7{F2Voz!~WlmT+JmD75=+h1yx(S*QTd#W;&Z|%&R+3t zt~He`U$|o7u`}~=IfC!&@xgc0^;=ysl`MM$>d8|uD$C!D8u`D$*qk}0UhoDo_s`O| zx%yPHXx_04Uw^+*kMn0gJ)WIjee9^m2m0d|EnTov{MV*`#?KwOa3c-`wuAA&#KMGleho)`%u5968*Pb8xJg3aqRvFv;1da diff --git a/sky130/gds/sky130_fd_sc_hd__dlrtp_4.gds b/sky130/gds/sky130_fd_sc_hd__dlrtp_4.gds deleted file mode 100644 index a3ef93a65c460de18e617cb51404c147f8f07221..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12854 zcmds;eT-aH8OG0i-I>{)ZTEY3b{D0I6&tI?R3x>iTWkgF2et(ZC~SaYA#DWVpNnw1WXW!plJvYT%YH>=b3xA-g~6gKh#aO zzn%Bo=REKEyl3uAUE<2+bKFF!Tz|rKxwfmjH@M@of4f#W*>c%M+b-O;-MPU^?cK|E zoV@a(JD*>&{6~wXcb|8bo2V6QCz9mK&D-C$_{6D?Y@E9C;;BnFPEBpxvhAuXrrz$V z4d;@cvU}DgbIQ)Sg}oL08-6DC+aF}twEZpORkaVlLBHJVdxQR#nVFfpoGVR=xcY4T z-Xi*VL=V4})Mt3u^j+f0n14p6dZZKov--)|?LTV&|8@PRX18DCE^6Gxe;WTaUcWG% zf7L%a$9X4e-ie53=g+BLKj>C*{?wL zu>R(UP|s=LSW5aeK5Kp?%NwgxmS44Ukv`OmjI&-5`aJ)g^e@kIu5ty|$F(VwcUWBP zYNPxHHS|H^~rTUnH{b{_O=Fb09u zRmdIXBI~72MBatJq?dQ*3*qX5gDgWgg&o+KfbLek>{1D@8y&n z->!}L4NPvvcs+~$46I?FVYyg+%()iYD>4t(E2929|5G@=JsZrY#kRnYtglD@7&|dp zVb_VcF0Vd69&;au?hNPV{3IpoowLB|Cz%(^#oCN>)QQj+*58k{#QOSvm9jP$`d!cm zR!dec(uX>+Ab&p|gXr7ZTX5q;T_XJka5EGcA9$CQla(i|T%-^6BIB%Agg&Qzr549y z{3P=k+mn)hZPY0;kI_f0oMe3DhbdV;a=ew3EFbzyN|q0uYvrUbKQ1NnWL#uBs23S$ zy&~iE7a3<>BIC?oWSs328E3mi0?O2*qYD<@e#@?uJs4^3J*S$YcNkM$|CeC{(=PL}&I-@lfU<&Cdf zIa%6=wQ^2MmRD9=IaxXcEpiuG?teV(zBjR7^tzn(+x%kt{kaC0b-2>%=Q)TzjSc26 zGG6}{t`Drg8P`04SRmtbUa)eKy5515Ebm1dM3(nGZRI561FxjyzB9BH^#`(?{V(#~ z%5f1H=lF??b6iEneY?fOx$|Qu=SSsq=y1QPv{KgZM&DzOiA{{9+lxIpunt}MB9sSK z=3BW)ZT7c(jnyymK1g2?{yF34{C-{ijrms4AM__#cNKq&$<26;>qK0aSD#-`wfj-W z1D3nU{eW>1@jSinujT@H@%(XN%H%Wf{yTmHo0p@mA0XdAj!XSM!~!dQxVDNs0@;q_ zyVf4EyvgeC@Kw|WUw?iv|GfNs`rmP595BgEu}vX zOryQss2AjYzBQ3DIl*)y^m+AP%ldn7KwjwYIp{;NxgCD!1F>-s_ut#m2Z7Za@wyKG z!14&L$Nnvrwxay|=)XYjv-A<+lb4V0ufE&ty1{lz=Eb;(dh+zXJwq>{U%!p@yf!80 zY5y0|oG9pZg|!8)pYQnnezWC0 zc6CbT(cWwMkZjk;>Xa-WKGDia?nA@hNXdPE=+EfiK;}ig$a%?nMaJnbGVbp?fk%wT zRJh-L#pk~tc`ZYK45X}IkMUlJd;;0u%^zETleL}j!jD)vh`;YZe~KG0m&Wlru>3UU z@hQkxyc_j%-33y|{Zm9f+5WcoL*e~Y_g0&Ct&x;|ULr1HUKZ=o7S8h)`dswufNk84 zysW%X&vlrfueol;`aD~oBI1R5fB(7@_wU{C4{TyCGcFgU#w z_nFY|%@A|l$Hg-v`p2;^EVlLD;bYJ|DNb~9~UG2KlnbhZveXIGu(&QjEe)s{%#t+*Wp^6kHy-Xuo)mOB3_vP_$IXT z8m#xel#Tf~Um-4{JgVn?kNOS|nLZIuDAx0=U4ou_WQWlCxERxa)!OaPQ|JeOo+#-C?Uk>k&}7#n|H$8o2=LyWtRi;?l?b?iUt zMfMxxVyypo4c}jJ{fNzyX+^{f$B+HQ_0Rqjx$b?x2FBL^;1sktZw_I+#O96IzYrG@ zFZAbi^_xsDHkO!PM7&VXb7Xa~oew*F46hj%Bl|DUZ5;QpF#aUR-Jcf&W8=^3IPTPS zh_Uc-F*5$Vu7vj|)Qjc!g!5z|;)U(^`}9HEf4L604|Co#F2?3Ruj9T;U5AHE&*u-J zywIQXg!eDbpAPq-FBlgGit}%L8tZ;Fa$S%i_C6mMR~PHMUWa{tcX+=S$mf=fizqM5 zzYF(Cz7Or@^Cc1ck&lag#dc2&+!lCh5g5J?ir>WBUiMqxdZipJdgAFj)-`~-=4!&>LT{; zv(4Y=SkCT_=l{H~pD^C@;*P&%Ky;tCAt|_Hi+ifA`fk?_2Xya^5p8#^!(b zxt4dUB3j<`Xa1qQF#jIxb+sDO7{yp=}x96Z}zSPq{lo$HzIXs_V(BBij zJ}yT5=e%IPb9am8OFjKVd7*zV?lJW3+ms=EeO!$A_wF;_zD=U}QcwR-Ug+Py!+ZyD z24o(d@bz&q;@`i+dOLwTY9Ag-bB;7o?_^>H!cKX|tJ4g&mM3+tgT^+q2r z^dH8&r~mN78N%1c#fbm#Jo6oXSTtYi=^x4q{YRcN-_ct$gs+c_5&x0r%y;xw(R`_= ze<&~XZ{KgeV;5%#Umq7E{_XqCckE)(e5t2@C@=IMzutT&7G(%u9~UG3;(+ymbA#^@2M)bq$an4?ib&5Xh@I}04T%7&> zY1a6UzTSLCf1V+HeO!$A^E!?j^&-cOaWOW2oM-Ge&c6=f>*L~V|MUI)?|h#N>*iF> ze-XZDH-C&io}Isw>GumvQ)@eS+;x~gf!!BaTtqypzaZ#8tj}w@FEBqbL0f8ge%s+a zSc{yGfqc%Kz?4y&s#*)ll8OjKMtnrz4<-6UhMut@DD^hPrrrvcI`qQTX8PC zJi|%!)#-RGqP+Y@D<^B8xAG1%pY5_9##yh3`t$t#=Z*MKY-Xl6jF%^Jf8O#p`tm%z z&%brPovpjse+O_rBfkXi!3+_v{ME|IioUxS z_5D6&{Uo%X{(+4?yH3RQdG)PQef->{XA$~b#M)(je75I_IQ>{oI;QsLA{80p`PCZsr?e;y(A_3k8u&@Q9XUB7b_n( zy(oXab;tLOvA+$MUCkvUCH^~Bg0eMUn{404pD()>`<>rctbWrq+R16l&RSvqN24FT z3Uh3oOWMg=RD=Pq9<3Vg$Ecow)vb@Js zlSO=s>KOZu`5$}VC6}u8%a0**&bivlxpNMC{A-)Dn7NpxCin)O}NUjKm& z>;9|sldq}$*awvV5i{riL%;N2>{)1k82>d#w12(tzlFv6iQ1{>c{TPzzyH|_tVI2H M4Vw>j%80#(_gOcKV#X{ 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 Zv+=)n?8~kLy&s76UoKsLVrvOQ^B>n?D#ZW* diff --git a/sky130/gds/sky130_fd_sc_hd__dlxtn_2.gds b/sky130/gds/sky130_fd_sc_hd__dlxtn_2.gds deleted file mode 100644 index f1fc1c53877c1899ecffd6d7f502fa7e47186cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10216 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 Qdot5M*qOf^{nBv%0klNDv;Y7A diff --git a/sky130/gds/sky130_fd_sc_hd__dlxtn_4.gds b/sky130/gds/sky130_fd_sc_hd__dlxtn_4.gds deleted file mode 100644 index 6addd2649108e335e1be443d201c39bb01a5937d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11836 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 P5$nI}S$`(zmzw)OBP6+} diff --git a/sky130/gds/sky130_fd_sc_hd__dlygate4sd1_1.gds b/sky130/gds/sky130_fd_sc_hd__dlygate4sd1_1.gds deleted file mode 100644 index 30c3e718063a650676f9547ff0e1c3f6ee8aa29b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5552 zcmbuDU5s5*6vy{HpZDCkrIkr#XhH?msMHubnu^SfNj!{}wp80_Z_4=}zdLK6|NgJD z_Q%ki`^2lw@loH+dJ+TnLs zPrkbScDF1p*Itq&6JvXO`>t-?H`FJ}? z8=<{J^-77C`UgAIH%tqJuf&ZN{=p9Q4O64~Q%`^2Ug{sMRNv@if$){MvBE!EslL%k zqxw=$f8So}AH#$7PYxD{n8b}0{_&LhCI^k`OFjL4d#QhVTz%_f1wt!vV}*ZuTz%_f zM)jqh{=U7`KRckljs61RD{*6me|A898~sN0rJnx2z0|*JoBB4fmN*VV_)6SZ;or4Q zeVd_CeW|CvZ!h|9=vaTaE&3k5Shq%7w?@Q^`i-KG7QFt4I{e>quD%}Y7x}h%21zk) zT;Jh8OJ6&pdSkFz^+v>t`FHA1;ko;uf3Co>G$15ihM@l0o|;e%{WRvOmO)Xs^_>Zq&Dlx>3*Z7gp3S{Q*9Y zqjt~dtYb_VH=@1NpZBqD)VGPcN!(abKkArwc71`!TjIuw{Ih3pFV4P`xpIUG+x9OP`;5u3P#WW$hqtoOAtlyIXkv2$nBG2@KGYi-XTL`1Oa0SlwO`IL`jGVJ zoHsHazo+da`%S*eN#FD#^(WcRevMWB93S?dZOKXB`Z4t<*fO((H*%k% z-iY{IdYPY%?dp@B$jS8?=#~5Vt)g9y|l)0k8_JQp-<1Qofqa$8()UZdc@F9^qk(uV)>(M^9pWJ-J7*-N-zsH*)`$evN0#>%)Cs*4we13C213 z7(bpFykm^HF*emxN{>W4+Y*zczpC)TO9robua88>$N&(Q1h*47xIWgR&FLWvjs z2mYu3W1V{QHJYz+mcOol|NNZOa!z3luy3;#a!x_qIODuBOE2dw=-R~ljQz@ai|jma z&C<&`3wooRv!F8~UaVh-o^_7j(D5_MzKpmL@k)KPQT1(NKV-k$7lj*DpP@_qzevZw z+a=2bwAatYE?@i3b#u43i?b1zxXw@2nDlFPQdLd$!m}<7T)@=6yLxXuCD#PP_=xgeRGcI#t6-$YCmDN zPr7fV3D4E<*DUsbMO a77y|K#7k$8em<`!>HHU|W|bnl$o&KI$hU+5 diff --git a/sky130/gds/sky130_fd_sc_hd__dlygate4sd2_1.gds b/sky130/gds/sky130_fd_sc_hd__dlygate4sd2_1.gds deleted file mode 100644 index eb74bb863246ef0b3dde4fd21c111ff8068758b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6010 zcmb`LU5Hgx7>3u`e`lXF$I=*zNu!Lwgb6bX5&LmWh%l|u%pcInoHQ9Ba_VBb>7t8> zl8_AgAsma65V{NM(wib8q9nQsBB?I=p_@rEYI@)G?f0CuXJ&78>VQ6HzO~==e(PJ` zUT2@%DrJnPzSz%|_s?z-^3>qOb1gO42Edw9aR{y4pJ==s$fKR)^UnhhVW zn0#Z`gKkM$t-U_W#>XaBuDW?-|LDm0zLCd9M@B{uO&r+!B;1m>$iyKS&r_1{3 z>FHC{i_mT}z0t=*{|*1IKFC|^P~KuWe_MY)*N@!RJC_bPw_r<;eS0h}Vm!?MZlC|4 z)h}6Y>rT#yw*F+f=;M|8Xt(7bHv=MX9~aB{m;9sM<{LLf^QE5kFUBkV-BHtB!v2-~ z-KFymI}mBj(#)9T2`gF4p+B zj+k$IwP?Q7)4v$6^lzRv-+U|}e0^N3@o%0s-+W9oU+U>!j92=n@L=7u;{g%#ak0if zoig9-xM;rA)4v$6^yhs-|KvNl7Dk?Z%S7j^E6h==--&_7;*JiovkCwfeW@E&myT)e+ppS|E*z6tlqZ2{3gJ}z#m)-zA)nSYni`M6l4r%$rV{JZ?t z{1b6iwLkT&AM+PkH^#-f`sMqfTZVILVZbl37RJS8)&8t=e$whMwuY_#BI1?%=YF>J zH(m*db^Ewjvwr58qwkr&*qX5XMZ_!p8`t1k>|f)PfY>)57i;z}e%bO)?g)syeO#=` zzjdwYTAv1l&d0?XJ^L&}pR@nO=G)ePBI32{XWwxBBKwBx7wh^bI*n`5Kk-;V^o@^; zHT}cuxNp>p+&9L>8T)6?4?4fMp>C*Q^hA#t&I5k-h!_voFa04tKl8lgwXKJHjFuvo z#h9}o$Ky9`oMb$DsYj0cm#2LW`p=_N-T5p1o4;9}>CqlrC$JXWS7N>$fB%G>3P$(Z zxag*F|3NRZ9-LQ19p>_Xk?UvQ^6X5q9-CidFMq%s1(}DhQ9<@ujQWW2Q#LL#59-C} zGn-$G&zi3Y|H}M$Uob!JkI1~5=uwgRaj!+@mA`8Fk<5$ZBJ-kNWL}(KWM1?YEAs31 zkN=*8>AKu#{lVuN_DTK>=0e|yjI+N)#_2CI&c5t&YR>xH=ll0ATX(zNWBLuWxX5*Ppc7HI+4V2JAM!am8OHVO74a{7zD~s9dVTti=|%1Z=M@pJ_2+)lU*x$) zy@+_Np65IDU7j<2E|$-CJ0F7eM}M1Mj8B?gM7+}9;l5lN){T0R zbz@w-Q2ltWbNwREb=FUu^L+1jzQ2>l;mh*@YY_QeiTx}x9`ChrlJ^bAMR(BjBIBG_ zoN<5I^IgC5{muJ_K72kE>E}K&Ka%tK=huStp-zM@Sp>@*CByG0n%}Rlg+1VWtv`CC z5AR2jPPSTI#B7LYAeH`acwaXZh4 z_Ic=V{_#0UWNos2RwI(nTD(rgbz!|`&DZ+C^kRE|||i0kH>Z;<)9Df3OY z_2~BwaS?gd>gi9t$hNn5OW33nGU+C}IyrJZO(Rx(N=f8bRNsqJi!v1~lV+a0m*+90Vy!wk)=WqQNb$Wij zYKNUm-lckI9+^{Z-t$qjYVnr&W=^$bKHr)*@jJ+@9oy>nd$77+m!#`=q1X7b-naKx Q3}odWyRD0wNHTH%0`^VLC;$Ke diff --git a/sky130/gds/sky130_fd_sc_hd__dlygate4sd3_1.gds b/sky130/gds/sky130_fd_sc_hd__dlygate4sd3_1.gds deleted file mode 100644 index 0644404ea38305c426e544929aaee28019783d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6070 zcmb`LUx-yz6vo#%_nveAj~YWUWq*uBgo%;~1~F=!gpf(gu_+bCJLdF9Mqku|v40e&L@9fnxp?{F|8U5Rc|H>=ylj(gVR> z&QfoLc1-n37x(=){l9uIZ>z)dHWu^O`g>VFavK&&`b3u9mb0;2<3^18`R{i5J3Z>e zD}gW9-PqXe!eT_+*FWU+{ks0;wVHqVqDSQI;>LhJnbmbqPZ{AohFn;?ql+)-&+EAV z=_!whxwtXlUpc3~)hVO;R?Zp2{=AO<)hUngb#Y_Bzjjo8>w`x1tsOOn{dpbz>w_NQ z>*B_Me`BZmHrY#OMVdU5VW!q>%(0e@Ni`7QLH9MilPaefQ>cwF_R zic#y1$Bp6oc^&I6RXn0@7dHm#FRxYK@B|NM(UhkH=Zgb{1;2ef!8UEJ4iE$UI@k9z+x+I`=MxUb*l^yMYL zf9U>a?;ox8@ZW|yFMIq8|1)mfR`4(A1^r7s-+wxU&c%&a(I@Y#-k3hBdL!a~{RMyK z8UL;M8%t+2e}S5$AToL0RN@t}Woi|RW> z|Ixo{+_JEq=al=#^V=cz&Bcv@{o{44n|dSbX52Wh{$aoWOBdiffS+lPKVUw_jRS@J z3;O!cs1w&V-ppCUT#Oqr?yp}#UpWsQ*01`!N35HR8;k2#&^JFs@3MbJbFyz3H_q#y zf<8K~b;l2SMBOfK4Ajp&xqi&QL+D)G7|=KH+(2D(vq$J$+!)Yvouf6n{vCd+>mM1{ zgx8e2%_sbkz2(nq(dF8V4bb&MNB`WVkYth+Sj5p}z`F;GAA zWdAY$4$*fmZVdDvec1o>H?r>;H-`G3b<&shcL-k>HwOIK=hU(PJA}@~jYa)Ncm8|j zet!OG9YOBcd-jnregpe|8Z~5;U-UX7uJh0Hf99)ws(NE}h0bqGzR~%NxUSoL`uS`Y z??v!WkLP4wg18amK|Ot`H!?5kjfnety+8EIBV3>QN&E~#dnRXcH|jfq9?4j`tm8)6 zr#d6_-R9rV`I|55Jk1w!(ywtz{Yd&W4&WZ)BYF8lmsz@7A~Uj_Q(QIqA>1 z5%YG_yY=B7@Ve+qPUai!)qF|j!Eqz=bbFT(dVhX>zOc`SW4JHg4s9hT-`DtTXvBCo zy<6X&3B8u8ACg^ZP=jU@f zeX1|1zmaj*cNrOH-bRkIt`27x_AkGTUi}X1|5MJ|yGZ71^nXS^_mn=ydS>K(fa6A) zQ@t@hkG;UWM$F%>e%Bwh!@5uD=Q-)i9x-xWjvKk()ETkQ-R6JIouAFwxww>*^;X}~ zdP(|Ja2|}TvySg8jI5L6M&?1Ck#)Mh$>`1%e2w$Ym-Vl!zo((T%~x|K-{XA#j(jtg z*5iMS8|h1(5qbOdx3l|qKkMg<&uZ)kW3thO#fZ4m*HALP|I+V|dL>=OZ^5d|FiUhv zdTqA)Ox9g9i&4?hoi%J5Znx#8dSNYYj3trurij09j&ND?mSm{!1Yd7U)4Afkr~HAW zeJK)Ow7T^=Dj%hK#}d>6@8r+x@s9pks(1X!_0&!E^<`dtZ>gDc&DDD;Yfg0qpTd{6 zV^nLm%<~?))?P!0SNqZ@9>doLez&Q9!_|8gJxu-9d3v0yYwPt)|M1pL1^;W-TmDau j7WCVlfB(YyuS|w_!J98Vcl!4YeQEKFa-EfLxMlelr1A4& diff --git a/sky130/gds/sky130_fd_sc_hd__dlymetal6s2s_1.gds b/sky130/gds/sky130_fd_sc_hd__dlymetal6s2s_1.gds deleted file mode 100644 index 6b2b5e5a86eb0bff4e852827a33ff9f0d0a4db5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7928 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 diff --git a/sky130/gds/sky130_fd_sc_hd__dlymetal6s6s_1.gds b/sky130/gds/sky130_fd_sc_hd__dlymetal6s6s_1.gds deleted file mode 100644 index 4982368060ac5f22b4a6802f042e30272e78a332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7676 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 bmhZN`!pHZ%f8VlHZuoO++y|AdXg~ZPBh0i{ diff --git a/sky130/gds/sky130_fd_sc_hd__ebufn_1.gds b/sky130/gds/sky130_fd_sc_hd__ebufn_1.gds deleted file mode 100644 index 3599058ab8c85533ad38cf5f2733b1a77199b0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6962 zcmb`LU5Hgx7>3vWKmTeD*60uki5QxSh=`Wsq;xT9{$?ZSnbb^CA`~yoK>DLZEG#n0 zz$r-yFS>}R2qBA%E<(bhh^)wd2n)KIqQa*4UEluB-e){}t7kee^PKao^{)3@-&%W} zy^jfv>)vg;95*^|N~Y69=0R;r6W?cHFaLw=o@FaO=W-b9zr7|9$SFx2F#r zUc1V41=-rJFxYF#!cW$h2*;KFJyJ6Sn`|C4}Uoa-Dy5?6C)?8!E)X^UP z$FEwyydg^i@?MEg{uunl`UkCkbgVx#G&FR=7^ho_-mCFUuUt^lB z(ysK*8$+EE`c~u5XZ=cb8Mp9mLh6cG4<*NCKV`;vHeYw5Zc0H!b^;VrE z*J<^P6637K`c6{Xcsl=KdgRrM{%2Ag6g|%yj)V40eYsD3E4=njV4YDD`j`8Z`Tp!j zf9e{9uZ=5n{EG*~w=_p7zQqH|e1G<%FW0C+_}aKK$3HqHzJ+Z{@r_O?^ZnV6zPx@L zgs+V&bNqur@ePkC#W#SK>kzkRt{?l+H$0LeVm7YK@%N{QuYXo4zWx-Yjc59^AN~Ea zDZ;l6*b=saMjMdS#w} zdA;~na5Kd`Ea7Y8${c_8qc3$z`ZBJ}^RM0{zSYlCgs+V&bNtzlzSJw}%eeA#{=uuF zSB7_rUWs_-`q9Twh8&~GcpZ!>O>XocJmTdAr;zt7{IPy9LtHzID-my{xA#}IGOqQPv0iT_ zy`gE%i;51(Te_F`=Ap_q&Z1JX`1 z9#s>v-Hxjq%=hQ_XnDVp`x?;2Tnf)7WIO$p&PmBn$+&%4%J)RAUuku%=Km1yFN;58 zF4H7`W%N1L>JP+X7GHutt`%j3voLrB?J@aW5MZuKcMsO~Ipi3V>rNjfd|Ku6HS?*U zj?ANk?=7Xb4_*r}eoQ{c_}CLluDkmK+G8?rr%&=HxqnzACC^b8K1%9rZDTsuiC*d6 zC-YZwUq!z_6Vv@x)=$a%YR*GBY`*K#_tzN2K2zHD!n0+qU%W87t$Ey@uGjje=SlQq z?Wt4pyNNF);%U7+Z^ifb0p`H{8{&*r7N=k=#FdC=>kp%rN1kHU#)GPUHLA?_3%=(#kWZpdAIe*J@*gT9Y z^XC6Jyl{O~rziBrVE%|J(VpqgI)(2`{ge@Y+hAOYc&47`q%#?Fy(LAQ4>qoxoULb` ztUvQ_@TBC=`p4~={^oV)w&1TXp?eMLhqw~$x%$Ey(JPCN=#_|P>I=Wgx)q;K5$k5- z%I5W3+I;>%_r07S%F+P*@lqn5_OA~=f4npCxfL^5D0(H@t-gq*#_vM%dt!$PC%WiY z80BI1-)DuYUAs6XR2jfdYhFdjzA8joX?-@x8Ql{-TWozCWp)rD8uRr7bdk*V9yoZi9T zBgx!9)~?!r6s1093Z3Dq#r2-6uR8U}y=}d@pmWFOzv?xoTISx4n)g;CTQ%q3cI(bH z_g1v4X6Ehh*2095s#{jA+g{`I@~?5O7+%;fcP+(jTYAMsf0;9adYo0%FB_)E`FQy= a#{87%*Q{vrzhZry|Lsc`i9W(SeDfbzeKGX_ diff --git a/sky130/gds/sky130_fd_sc_hd__ebufn_2.gds b/sky130/gds/sky130_fd_sc_hd__ebufn_2.gds deleted file mode 100644 index 097805fd89ff77137eadb1528d9b8545ccf32411..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7340 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 diff --git a/sky130/gds/sky130_fd_sc_hd__ebufn_4.gds b/sky130/gds/sky130_fd_sc_hd__ebufn_4.gds deleted file mode 100644 index fbb50cda0f42649709567a515a1d9dee17020736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9578 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 Llk}HiTw?P-jC6T1 diff --git a/sky130/gds/sky130_fd_sc_hd__ebufn_8.gds b/sky130/gds/sky130_fd_sc_hd__ebufn_8.gds deleted file mode 100644 index b98d64522adfada9601af75614e8e19a6f51c58e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14044 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 Pe^CCvZG8p(P>TK^t{Or* diff --git a/sky130/gds/sky130_fd_sc_hd__edfxtp_1.gds b/sky130/gds/sky130_fd_sc_hd__edfxtp_1.gds deleted file mode 100644 index 7c5170ca2a48a570b24825834813ffb97694182f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17568 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 diff --git a/sky130/gds/sky130_fd_sc_hd__einvn_1.gds b/sky130/gds/sky130_fd_sc_hd__einvn_1.gds deleted file mode 100644 index 642cdd2ca4e367160e727fd041b7d6427d0f2bf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5210 zcmbuDPiS0K6vprS|1ym=wL@hzixj#kM6?7cB_c^oaS;!PEgMMVTb5dSQ?aUp0IU5X$UTxb{Fgko(Qzwe%R=G~Xhdr2k_Ccl|;?{~j* z&%5`&nV8u4{?n%4^OMV_W*R0jd(43Q-t_wM$%W^Zo?TitrXEBOkG{Eo;-~Xh4~&0% zf9r!Iv!*{P*Y?Np>BZ%JLk~2MA8Vd|zIozUv-!fpsaH-l_n9y?CceWrS4_O!H^vP1 z1^Am?=?!^9)>`sjiBI7UyfS^$>g%~axM&P@%4k&dO2l3LnAHzv`mdlJFvfev;m^=B zt{f=WCm$P=%%Jb2!<%@|xN@dkPap4u_$&Rp#9xVcY5v{_3Nr-#-wuDrXU3I7<$C`l za=(n)?aJBnwlRz=(O&AGd@a7|QHSugab<-+>tt(>`YHWD>Ze4!+#mY%ywqRWGc9^0 z;-&fsrDpx2&mAIf8&_83AE0*LPH0iHHh)At8CUKs_xIlwU2wo5bT+Om>PPbRzq-0Q zhFlxCSKsB_HZO4{+THoj71qCzzUd7ma=(V6;1b%ntDn#PrC&6G`eXkox6MmjiMXqu zw)!yNzwEt<{r^b8|1k3W9<{rbGe+GE;!3o;{;GeB=Z`&aRwUn=67%u!{Ce z_+@0=drR6$&ez+XlRk_qnFsaC@Cw@Cqr`abd`GkW_>f&+FJs+&1MM3*lLs*#o+rxa z7t9a+l;~eMUVy&TD|t3@e5LtE##5r7JKng>uP-}q&d9p(hLsrWFkWYrHeR7e9Vbw) zVTUWCx911OLA$FTDf&A)9j99VYEiFwD>ZNBZTU}Gy?)<8xA0HykDRp@g1D4uck`F? zGOJ&>2ii&5FKu4KXU3J2)q0*M+;2*L2cTYwc&UGMRs7?#4&iI#$_jt>v*#J~O8PRc ztnyEO5Z{!~1JuD1zBaC`@Mk~zQm3RZgR@(%YZtMiXmL>He^iY|gT>yWjV-aq>A{0=WU zgx1ED75USL`uLnf#B5wyp-(PI-sz%J@@D;*f7WjE?|}_|FU#|*ZsOfO`lNRTSp9#P zI-j<@cxu~kqb*sr8&gq96)x-5D_*$QyL=Ow_->DX@A1&ydv7$-c%Ro<(@WQI8F}KV z(uj|AsZKxYRvjPQiZ|8Wd-MDH*3{is&Hh%n)osgam6YV#NN z)^(FM;@N}EvCXel>XCaVJ@(c5Yn^&r&_DU;)Of*v!+Pvc>YsS(P(eSkQGeBs74Mzs ohpYFhlmFBj{fzY=EZ6r(W7y#Kvin}&H)8#lp3Dc2k}x#?12DIDB>(^b diff --git a/sky130/gds/sky130_fd_sc_hd__einvn_2.gds b/sky130/gds/sky130_fd_sc_hd__einvn_2.gds deleted file mode 100644 index 756f13e2c09b5a506378b03fe9277b6d851071be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6430 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 diff --git a/sky130/gds/sky130_fd_sc_hd__einvn_8.gds b/sky130/gds/sky130_fd_sc_hd__einvn_8.gds deleted file mode 100644 index e5c42c763c5f24b00e61e49fcbada44191dbce4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12408 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 diff --git a/sky130/gds/sky130_fd_sc_hd__einvp_1.gds b/sky130/gds/sky130_fd_sc_hd__einvp_1.gds deleted file mode 100644 index fdab1a58fe0265dded1841edbc9f2fb99fc6474b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4656 zcmbuDPiS0K6vof{|0a#5+E5vrg$1P)B3iPjB_fkF;vzO0n^vtPLp9chgi=}*s_s<; zr3gZG(Wq$AF2sc>O2uxvDJrE~6|v~1F5CoBtMU8pd1vO1&U^Xez~nb`-uupX?z#8f z_a>4`7(OBcL6}{U9;r(vx5_R4XXy>og}KL%9XxhIq(4gT8F^{v_=PjS?i%~_j>R_* zOvyk}t{q6zMDy@$v-#xQk!OxJcSxLzq}PS=i=@|wA~Lu!!r$VR zU(*j{&!T=d;#+(J-i3b5={FYo*Kz*1NYL=O1O?;9@hbiD^72{gjnM8>z0$>f|Hl9H zf3{O^zQz^(C!Bt;-M{!p5%$e!eKR8N*FWO){c<<^pFb@U;Tg zOT97r5_u2dU66757~$7#yn21XC;CnE8|g!TBjS~M)@yY;)>WSv`#SWyi}}-jpMn2v z=qGzqFyDiIB5tg`h5k>87-d>->&%Znxa%AxwK$Ic!H@d_nSYL6f6yl5Zl5tO zb0U*{h_T(?|L#`K)#HzM9muk*)sh8*-W20v+Ejc%XBVWsY4`8A`9|2Mz4 ze<$x^d<}RMOdo&-`?nGCN_{-3`WF9GeQca8*Jl?nFIq(CapRt9efqoVjc#2a zuMzRm`su@Q)8EK(Gj6OJe|8?%F~*gD7BM33>!+Q*b^pUU8>PPy>m2jOm(s<3 zeWUHK8t!AY&rnCf4Ko@yBJS&T|0(?A?HDKOk1u;%!gt1vo%MI2E?zo*IjOo}*r+-=X{^>~=T(=_8&${g zvyS3;seiJhy7aVBbsRtS#qm;oyj^wiWuxjif7BPpOZDs%`yXW<;qBtaivF`t)Ca>J zp>uI#r(U0riuFgI{Co8`)?QS9BjSGj9s1}a)yI#uNgd zxUr&t39P8+^FfQyxwx@Y-)!%{5aWgCCwKoaCLkPip={W zjQ$7d=hGHnJ&T$RT!V_r;y0*M^{N;4>dherlin2Y@67>D>)nzx>Zka6LwcR-RgC>T zN$csHY^FeyF2wtJZVDK!4xFSce`@7pw5cioyDH{&;xt=S}s)E3df1f8t;Iz0QBI bTtASEqT%kPtGD=EPwgKyS`Th$aV-A;5`Q!& diff --git a/sky130/gds/sky130_fd_sc_hd__einvp_2.gds b/sky130/gds/sky130_fd_sc_hd__einvp_2.gds deleted file mode 100644 index c37f46ca03be640f2872a90347a6cad7a786f3ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6332 zcmbW6U5Hgx7>3vR*?XUJ=2)6jF*z3+g-O%z5F$#=Oh(w0lRsG+I#gzgBB}IaL>Ey+ zl!zfhKj4Iwh>%beU1VezT|^<}O%y>S6;u~O4PhnI`>t=jXYVu4-a2#O_?-FHde`@^ zZ>_cWK1Ub3a``^jT`DIhUBh*`#9iTLXFt1UIo`7A!R-%h-|1XuCAzu)#rcDuA3U{S z@kiHyGlZ-Eq8Q^UfQ3uOHs9et5@2!yDHR4?nzV>*J3O-{`6}=i+H)_lJuw zC_CqRrdRN9cs2Lh2eL6@pGEvtoq>1IFZTNBLBDToZ0xXer9Kh8@4W#KE@weeL-(I*lWp*sg!7T`%9Fe2ZuK@Avvnw}|zN-*T?(jVg@+OztBP@gTVPx3r`UIT7R*_e;He2;Ytj6Sish>S;gi_ul+{{&)z zm6JBEi18=N{|56%BdFynti_y^9Jln6jZe~_+nSQ&GA_DJrWY%pqHP1-fs9xF!x({# zM-6Ky8IML%!p}s0U#8#Y)#jsdDkc3k)|g+Ce(QIpWP9yHYbTkH?IPzvoya)H7a3<> zaa=ubZ9gx_`?j4|F&@HLIPW6j+4-HNuP!rvi~pLwDlW^{*Iz-N)9}A2WpV)XMO;LC zZhrQoZ|X(*_TvT?`DZ`+roKh^_HpqX{>x`fFIEnkUPL_Cf5$rW-NeP1{z>|0TrBe6 zvD$n$vDfI|6TW?1Ebz}f^v%2?eKRgj=)cqX>w&+&jAFg<^4E8A5M#lQSi1{jZN{Ds zWIQ@z?PT(Zt-Z*0Kdv}BLH(5f7UWt1zn7;h9YU_>uqOj63s9Sj;UUnC;qPx@G?3Tz z1ougi@g~L*J=05`n8s~@nlNQlW{ReZ}mf-`kTmqEM z{v~oznom)|F$&zojhw46n~3N1)G*@kPeDe?`Xq%hR4K zntMgBo2WiLy#D)r$@7Kv@aK!`GGuXa-1%DOug}#fKhG`o`kqu@{mIUg*ch?th=^zX zuM78k@1H%RLDP%8Ht;1Pp4G2y&yP9{P%mQLuwVHy`gm5~m*zK3)aBf?MvCiTm z;#vK0st_h*QhkBbHR4j>&N>=i>RBAiv{)LJgM`~tRi$iE*9uJR-5l;MKs^s z|MVZ)v;OV-MmT@Ge%AOr@@2|8o^u!%(VnZXKZ6<{fPZ|~5G%YtBQ7FdsE;sD>P7BF z>P5s0^~n;`xA>>&6LCqtKKTx3_cOcSiTrNLxQKXeey($}!q&e<+>d-*Y=6FKtG_z} z?QD3!dbRik){b#;c5!~LANQZgbz^?9X#L_t*yFu6hZcW8?HLz)^Ycez(C)VWVr>D| z5^)jn-1_-`Crw`qBG*86s~7<6=R6&a;HRoPUcL%g4o`{QTAXt!{iCX8kx$vxWN!dj%zO=-DFDtRztf;T+RlZ(xP5%u2KI*sJ#a(ef z3O@ty$*QA&rmTJ!>E4;Dy8f%2{oVI2Z`1dkSAMvcexQBTO~0^sw{!Nv i|I%^#6+VAYzP>vez;gMQKRNo`73)6@Y(5EmRo(wAZ1Lm( diff --git a/sky130/gds/sky130_fd_sc_hd__einvp_4.gds b/sky130/gds/sky130_fd_sc_hd__einvp_4.gds deleted file mode 100644 index 9d16b9b35b21e3b76fdf7bc16ad4410d79da2df4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8108 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 Uuk+u>n*P64*m(5zQ?G~r0T4VZ0{{R3 diff --git a/sky130/gds/sky130_fd_sc_hd__fa_1.gds b/sky130/gds/sky130_fd_sc_hd__fa_1.gds deleted file mode 100644 index 1412bf16d396a19f64b9c06615493b9409a9fa03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13092 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 X@Xa6Jhx~8Uk^Ki1TL%r~v>N^gXB=U~ diff --git a/sky130/gds/sky130_fd_sc_hd__fa_2.gds b/sky130/gds/sky130_fd_sc_hd__fa_2.gds deleted file mode 100644 index 75017dde51c15a27078b2686dad3af777a4adbed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13746 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 diff --git a/sky130/gds/sky130_fd_sc_hd__fa_4.gds b/sky130/gds/sky130_fd_sc_hd__fa_4.gds deleted file mode 100644 index d8ae893e492a2caa32c7d5944835e027fad46a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15828 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 Bt>gdz diff --git a/sky130/gds/sky130_fd_sc_hd__fah_1.gds b/sky130/gds/sky130_fd_sc_hd__fah_1.gds deleted file mode 100644 index 0791376a9d5673de585dff13d099305303123fb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19582 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 A?f?J) diff --git a/sky130/gds/sky130_fd_sc_hd__fahcon_1.gds b/sky130/gds/sky130_fd_sc_hd__fahcon_1.gds deleted file mode 100644 index 87e52eeb8644300756af1f914ff9770735826805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18950 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 DHDiLQ diff --git a/sky130/gds/sky130_fd_sc_hd__fill_1.gds b/sky130/gds/sky130_fd_sc_hd__fill_1.gds deleted file mode 100644 index 96e7883f50c6c7cac57ec6f64532b8377259e7c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1384 zcmbW1%}X0W7{;HS>`vmE))a!WnuC@e1Fd)v35Xv74}svfBABJENX6hGp7cMkc=6bJ z@h0d$;LU>|2>L(x0iL~x$N0{?JM3)Kf*r^{vk&vz=bf3CKthN`6daMhgO31dd_k{0 zM^?!C+Ks$Q;-@?_EaPw#QYb6X< z*Xs4KA8<2({2(v_`B5N;VlD+>AMiIwo0gtMzR?Z1pJIMH!S6Pk%?rSBjS@RZzg?r+ zxA}5{r)*wM3S49cTR?)mmYe_eEKq0v=?Sqn_Okt;_a! zBfV-pjjZ0`m98-p$oa{IX|DCXJbg>?6V-Bpr@neMKlr1@-zfh+&ZoB3XBFi$UwTph l3qH!Pw(v7LzxXy^@Wz(ZLD1l{;JF{j=r2xJlcuU%JOg3Gu7>~s diff --git a/sky130/gds/sky130_fd_sc_hd__fill_2.gds b/sky130/gds/sky130_fd_sc_hd__fill_2.gds deleted file mode 100644 index ffd113cc378b728b7e74af2411360b0172c0eb58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1512 zcmbW1&uSA<6vn@~GjkKuv{nep*eoiz4AeiMNJMH4xG04Fvz0(HsG%54H_fWPf#AlS z+D&(YzJT}u?(`W%!L^&xWqQs%bI6@QXzYdLyL`F7`OZ1y4lIm$ifUjAe^5e#029yzPj3NH5wNocuVLp5=24pu0UQp8!=FGM{5E{*u*9RC(54T!(v=?`Mr zR~^9T8#%s9&;LgJo+_~|`gB#DKbh}Q4xJD7JUu3sebrVjzv=R8S^so2`VEBdM_M`} zla?y|?&r7jJk__tyejQagco(b&&&KOoG(nAQ1&*UI@1wfm3*J?xO~S;PP{7htIl-9 zS0&%)*Bu{?`sdT!zpD1FO1{rO%Ju(_=0y2H-BX@B`>Of;F`jz;!n`W6PlOkB{=|IK z7A`EP3UAt~XYo>ZSn!nUW}fSJn$>?n?vK=8fxTuZqj-^T(PvcLZK5r&Y?`j>=_sBx zQ=~p6cO{n<{2FDQj~cJAEPYYdWrG;@O2FS&13Fh;h?kQOygs7rI{eEtiizER+-yj# z|I1U=%&+Zirb^XmTe$(aGCiB&Jh2KoPWEQe7B{qA-x@zc; H6h$}%XX(a= diff --git a/sky130/gds/sky130_fd_sc_hd__fill_4.gds b/sky130/gds/sky130_fd_sc_hd__fill_4.gds deleted file mode 100644 index 307782262703923908db1a9099d676cc5f56e83e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1768 zcmbW2&ubGw6vw|inVpSktQCT?8bQHJA!0>Aq$0HjJQRYzl|ZtnrC7|VIo1Ebqeu17 z-UK~(^$!s7Dhb zhwo80Zm|AfH_x11$ktY~;lu3F zYL>074+hyez*Ygb-=GaQYcPk_Tm`^upf&`e*?=GOx^f76u+$%oMxV$(rX=^2_(ER~ z{iQ3-<$>6%Om_O#ztZ&#?l6zZxp|6+bo1S=; zL@B=MDgWk6-<2dF_02x_?>V7=J1@C*M=7~>UO73R*YW<@oq&|<>&glF@vh{$Ev4kf znoxnS{M+PHr?dFG#uhQO z;J6r4(l=(WgRkz;SNXqdL*KC^`r4p`kb#9sQU@OvyE!%?p*D(rPqJ; zscZJH-Mvxp>0FpDUwt}u{9fhx;xA6!e`n0U>GNCVeluRCliFXh7xKQAy8JK3cSAoU GYw;WL*YPC) diff --git a/sky130/gds/sky130_fd_sc_hd__fill_8.gds b/sky130/gds/sky130_fd_sc_hd__fill_8.gds deleted file mode 100644 index a7b6929737b76919d96649795f721b9defa8428e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2280 zcmbW3J!lhQ7{{Nx+`X5NOIsl*(I5(TCz3x8E(@gNi@ATQO#>vwrc?g=o1Q ztv!vNwWDZxrQ3}z19({gQ*>b#%$N%kP@TvCKpP-G4dA@6_$AJj)8HNJ_n#;F8@*od zCH7lN?Be}kL&>?_uP6Gi(Obj*O^aW#OS!U^@F)Abc>nj*SH|95CFi!k!TxHzejMg~ z2N-+QXMP()yp;I8-ESuQc>g)-D*-aUr7z^%?#up{$S)ng3^0BgKv|%@#Cs|+xBD&j zb6-6Eyv$!&Xi2Wb-0t7zzSmzrji&X}MbvdGF}C~H6YHnvgnnnn;vqIDS0?=feO&7f z^_AFNkiL-fp?=4(pv<~Eh-ei}!9I)jdgUe1*%{=%YoL;5Z60EBd=F5qu>QJLu|Fs85BdF;z?^l_ksYTMe}odhP4FXK z@oB016lj!4nVKl$?@fE>)75k+>GxGc!1O2<~uMY25{JAAw VJ?@M3wDV;X|BJ!1!GqNE;19s_M6Lh; diff --git a/sky130/gds/sky130_fd_sc_hd__ha_1.gds b/sky130/gds/sky130_fd_sc_hd__ha_1.gds deleted file mode 100644 index ae8ab705e3a087772284e2bb70212b230a7e9f90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9028 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 A00000 diff --git a/sky130/gds/sky130_fd_sc_hd__ha_2.gds b/sky130/gds/sky130_fd_sc_hd__ha_2.gds deleted file mode 100644 index 59493f569143b749a3afef42777ad941526ca5b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9718 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 diff --git a/sky130/gds/sky130_fd_sc_hd__ha_4.gds b/sky130/gds/sky130_fd_sc_hd__ha_4.gds deleted file mode 100644 index 570f33249dcbdcea7eef5af9a427ef46090011fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14160 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 diff --git a/sky130/gds/sky130_fd_sc_hd__inv_1.gds b/sky130/gds/sky130_fd_sc_hd__inv_1.gds deleted file mode 100644 index 8f883a2f79c9b3bdcb0d1ccf8a8d130f242c0862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3636 zcmb`KO-NNi6vxl~^!c*Vcofeh`VPq`F^CdEO=w|Q_Gv;sDv6|Mkrec?EvQYotTwi& z7OjIeZCeCU(V|rmMQw_RK!RG>|IC?l?_7QFV%Y=zJle}zr>v3|w) zrPL2z5V5C>x@}*Uh`WBj@!L{A{2;zk^C}T{{Ucd_YHF&7eI>^6Q}PQ<-1WQC@mr^i z!mLCemh*-su0-7Rhg09qvron!Sw)-G%k6)PNn2!pYz*xH-ERg{@#A9-E-9MN6Pv~L>yP5J=do%;wyu5;wuq% z{T_Gyy~{)e>_2~P%6c3d99N<}*RQ)IzOt}Jd?n(!e!Ncngs;SpmFx0-|AzR=V5|5_ z#B=lW+VlJqeiGkPcINmuagTMt-{$Zwe2yzSYWu-*seAA&CD)zf%DnpXbzFD$m0Wkz zuVr5S`8uvU`w3BZ6IbTcpReP(v#;d3b6lBMf4+|E&VEAF-NcpE>R+N={QU91Vc%{6 z2UA8H&{r4slV$Kx+Lbgao)W%$f5`b{pHJM6S>Nj^qgA$lOSD(>&G^D*tm9qedzsSg z_sw>{gS=0L2;^tf8&1OxN;zK|784t_u)P4y>}_&-S``ECE9D|=j%8>`w5ZP#FaLGJ-WpE zv(&Fd@d_VvEG!H#+V@n_x9Q>pMj~&~ChP1h^rY{A#%hpUnCoI6`!8PN@$Y62mo+Sn zy4GJ=_ITjSRchd@yicQF6qn<}m_!qP{?-of|EujiK{{jOW#7$>U0QYIv7o>8a*-&Y1ZO9~EK0f0~a~nq7YD@9gi*jDOa?j{nf!jK9z1Z>v52mZ)b4 Xx%p#OQNB{K9Lv9J(i>ju!;t;}S^TEZ diff --git a/sky130/gds/sky130_fd_sc_hd__inv_12.gds b/sky130/gds/sky130_fd_sc_hd__inv_12.gds deleted file mode 100644 index d052c4085d808f8642d8d2596c0cc868e365c498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10452 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 E0g1z-wEzGB diff --git a/sky130/gds/sky130_fd_sc_hd__inv_16.gds b/sky130/gds/sky130_fd_sc_hd__inv_16.gds deleted file mode 100644 index 6f2f968b4951578dae9158cb9159058ef2155ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11632 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

    DM$dX_E;8mbbk{`WviEB9t<+7ug(3c3 zJ7miy)^)dDbL_HHyPv-&#b?wh>%qgRx7f26t=Hsk-}GAD=}*dSO?%b3N9JFTd-~n4 z$31JGAfjs*?A+%2qCH>y20sr*&#Bu^cx18n;Sbo@HY*SR4X-$}SNQEL@$b68Z}W9& z`Lq8$yLPO|f60FB|06f8@PE+rZydb;rSA5>}<7jA-}NId6$@0mA~_h!;mmot!jUcPtEoO{3b z&YkbPxXeY-Yi_C)wQsqu>$|pl%spKE>?Wh^{Q8?0-nekdxn7(;J9qi$;`i77IJR*8 z$&JrXzv8CSYVE-+yZF|nr;j`}IJ-8ucxG^JZ7^7W``y7aF6lUz?T_5=F1sgk&dnT% z@jD#pntdR<8}?bmU&(#=3Hn*DKM?d+aQ>omt>Xo5LBY7VSkk{&)^BfbZ&EKpd(!kq zA20eZl=TH)^+Ud5*?)&#zT&R_&w2lzJJ0<2e9;GoA1{f1xDSR*f5Q0A;M_pACoO9y z8BcBw$##ETajTR+`M*H__>^-KUpN=-A2R&`f3M&gf$=-mF1l^giO?7GtLxkPSV!NE zp#R?tnLdH>AughQoIcMF=aJ(RR+twN@k%|{5%U+f3q-$tT&(Fo&tu-G7nwiC#k&0QJm!u1oWYm*3+=W2XWpn6 znK$ahy8QX`kU#2~KazQ4T&&BV`_6P+-_(=TF)r?=Xa1?niE&fU_3K%af3`F4)QikJ z<6>R@d7i)jq0jlV=@YSh|CiQ3^_(~Q=M4Sk{Dt<)`C~ihje3#u#<)0k{(A0Xzds`9 z-J>>Ek^5G3*!C}y@z&KLwXccsEo&FK_faP@&RmL&$M6+#{o?rM!t=xS*DE;hHge1T zF_8PTLtI3>R?mIjKR*H|zBRpw_M+bQ_wfAYI*$H<7uK~HU&Cj_MZ_!h>}Rr!{NVYY z^KbJ{#N}!|ebO(@U(8-Ke-ZIYf9mPW{^x|RkBj5{^?W#F&ynP&h`!@FlN=I#eAGYa zIsQG?KbHSoZ@zn|e@c3ell~lk&Mg~1>ygl2+5c$8{NuK0vgn z<6^n~TK4Ndx$F9KwRHcWn<@NRFNynB5yT-PUhMzuP>(UsL)XXN^yrZLRxK`~y{KRD zdd;5;*I+%uYoQVIGV@I552 z`)}ahM;(s3sJOmL^%L7!_fRLY?qOUUTmR_!#`CZ*P%pCXZ0di@AD?q|`C~it#^Pgl8;%@r9?w>Y&UiV}D@cL-4^;g|5s_qw?`X4#GihVo02dM5B zRriak`$g6LqUwIJssBssbL9O)b-$>(Uu^3CG5HJod#LZ5`oF3F{dW%jJ!pE<`lrgBsk|TN0LLCw|Bu(CjSKtA z{gF#u_CSlj52EsMlMkk|hd+Gi`tt3M+@v4jZ|LAxF6(DVj_>JS)X~?d1Wr)>`dzBi zzy6EbdcMPZwqo41VILgxA#K$W4EIByS^n2f@T%@dx~E} GChlK+F+xHB diff --git a/sky130/gds/sky130_fd_sc_hd__inv_4.gds b/sky130/gds/sky130_fd_sc_hd__inv_4.gds deleted file mode 100644 index 07935bcca6399af115a373c6e3ac7bd0030fad5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5132 zcmbuDPiP%g6vofYyqPyiqgDu&*9NhmmeNR-Dn$aCqyfP|Vp{8;Lh`6BVu%QBQE5d* zp+c#fEL><8jSDTJD?zA&i*9r!B1K&ZYQarixCx?G;`g01Xa3}MCN_DH{9ewv-+bqu zduQH#kwn7qDH#gF_7&-ujfkA z*?*#{FZp^M?(3}juhP4(b4~w!>OUxNvwzw*)SE7tjtuV>X&)=dd9*HDo(#9+@0|si z56)ViWM1AZsC_`lXmzI7oEk6pr>8z$2Mo(Oi9c|Ct{WNuX#P&dS)a4L%j$PB&iOgh z*D?Qn_{qq)?jz@NW&OQA+kf-8_8x4^uM5Wapf1Fn$X{=MpJ@M2LHmyBoqg{^`>KdD zc|#;ZZBE9+2P{u=-kgs!I%9dKteD;zes9-zGS2#)jHjr}iMo30&+ec0C0y$Rj9)02 zOrsveoygbf<7M=124l~c_z$kdxO1jn&vmAr`!XkV8h1A6!&%cs?GmBWxU)eoi>BlA zgZ@hBH12HBvrpl_)<0)-!TRS!ytaST)0h3v315vntNvrz{crpCbM*Qf=&}EueV?Iz z#GQzj{d@Fs)%4EjMbkSGFYCw6KN#TtZ$FIta4**Xqk_C|;&b@P$b1}Io@6}wvmo=) zVat=uhX)EWAAD(flKJxe8C|iwlR4_0jPtrq#_8{5oOL-FXZ=pb6U@)aIOpv|eZBn| zw$G>bG1NAU{%$Mr2k04h4%h4D7iho5*s}%u@UhIe6ZuAe>gn&Kj{eRjJ@*lxkHL`= ze}X^b&g%2g_D42<*4ci=>UXAhS^ZALYwM>z*gW1VpA+jwJ=ag!uzt)3)27e) zm+1oMbbbH%9Ou5{^WDk5G45>YAIGt8)H~Tfy>7;){&5`Vt)DMW%vHS>og!Z86jT$dM ze=2&OBk0fbMNar?+}YqC&YEx3cA7u+^w09O{@iEu<^IbFUyVB({98NCw{_WRzSPq{ z%h&qH@SrcxcR3N$xU<1OUN+z4ywiNCr+=2O_2)T=zC0i0gjVCu2LJXY^Gz3==1V>O zvwYcqM$b2`b$>sdtDMhZ6SIDNuXS#kLl7?~;${EQLXVoqq3hsT@kPN+a~5|ZU)Im6 z-tQl=vHE=t*J2%d_JO}q^JV>1RgXRLtLdEmOROI2v7}(WtnU`}TRy_`Pkl4SV-|NJ zulhc0GyH$Rz8?=tvOUDO^p*&B|Iae$|1F@ae!E+`5fvS&!b`md%nSGWmQZ3zZVUK( zYk>T~ws>^c>Dw>PTzyOQjGJyjul7sQNuFM(y7l2k)bZczRm*QESiRBm8=iOg=|8LcJzFu(8~Y^fBu_ksO<$h5=|_52yho3nK>gGzJ$C1f`9Hb8 s;{U((ng1hG6BYdd^&hUUe<&V51T9~>d+n|CcM|(IoLvncXRVg}2LU!|#Q*>R diff --git a/sky130/gds/sky130_fd_sc_hd__inv_6.gds b/sky130/gds/sky130_fd_sc_hd__inv_6.gds deleted file mode 100644 index 7571ebca9bbabb9dfb6c2582353b8f234f5c3ed5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6092 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_bleeder_1.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_bleeder_1.gds deleted file mode 100644 index 34259ea76b29eb8f9387e2c267dc1cdbf716ab81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3134 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 Tl1T% diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_clkbufkapwr_16.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_clkbufkapwr_16.gds deleted file mode 100644 index b50a5e01c376ed21d7d35508809515f5c589e42e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14752 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_clkbufkapwr_2.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_clkbufkapwr_2.gds deleted file mode 100644 index cdb635f9cdcb7757f464d33c8e03a4ab1c78ef9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4934 zcmd6rOK4qH6o%J5ubZ2s8X>4xGw7fQ)qv3;r39OY@tHO;_0b0=mnJ1z5@<+}QW2pl zNJm-(p?1(HXeka9L2y!Zq7xAZ73;)_MZpKsNe~r@|G(E+_w1AAoF)O$1G(S1Ywv%r zwbxmD?{g!G1i^mkssz=`(kgYS$~M{R-%ERt%pI9pIJ9tFq%(|n4W8UF^7*+dJBL5M zbLq^%$E7PS*4~~Zi?he?>g{RF9BwR5H=a4%Xw1#e%pE<}n4X)RdUj^^(EPE5#@!-O zi%7C1kY6RaE)bFKju4;eRqfFmvUN%CjrbPbkm(yv-zmGPXa9Im`y0crL@EbFnw%F2 zzQA`Q+NooEs`tkqcH?)X@x39^@)X9qKVxkh{K0NSd$Io1%F4=n(DxakeFA@{jLu%7 zM?OZV_qeS3R^!P3%Ktzvf0*Y6<9{x%x4aoGZ^ovJ|*T^V8b^Z#G# zHGiFqA9EW*eb*8HZyDPr)ow()AODa)|M(K>_H8V@6B%o}F&6Abw3q5xd(=1igX$~B zzG8haf!O=8)~X(V!g{3L*k7!d_YwC=_{MrR)_U>mVK>5F7(e?Z&#T^8y-oE-*bDWH zv*mS--&ng><2S-ys%PFf|0a<)j?4TxmgKK;0ot$8@9B)u3(&%DM0=tC@H6y7zM`WZ zzr$Fx8+(iO)H3hvYh>POH(o3Ml`+kKlYeObE5@;M|J2cclhDyW^^SS{eXjo9`az%b z$Q|k|!~tTAzE!&sc0YfnpX2!weS-SwM*r!IwU>17G0FW#sx=!y`OJa=%p^M}lzKe_x-$McS{8Qs3|3UY?}k3rhQT^WOW5ZfL2OX-}-on_h8_`~%2gwBsY=RbZ&{lwR2q@Spw{z%3V&Ss<^+KpT{)EjB% zxJKxG|AYSe6XYrW68SryvGx(P%wI~hm+Ivg)f-v2)Ei;<_4@vnu7C8D+6P*{#x~@h zml5_7J?gB3dLx8aoIItoucdd-KlvH{`M&r-M%EFZXOmlz|A+A1i1zr5wmZVk^~!cf z)+5Gs^{C_f{&oG?`_IPTzgFpWoo(R#HK*tK#{GlmUz5w2Kkde~_K!6FU_$+eRin6l zfO_r+X?x-PqwVT9y66#po!waCKiaN-ql-rMOFjLk?S=kh_~5*gvmRk{c4LYEcv<}> zXN~HYdiqb>3;hREsFOX&f4j%ukvH0ndvf)kdw%Zyk@a>Wtv9fi!0)AutMt{&UVFlruw8yPqK8&}0YncF{+rx^9)ey65vn{??DBijA=$DKaPe*dtyJBL%Y zF42N|Tyo%t)1yTA`y9{z#z108ZmRI}7M=v{x5fkY)4bl4cD@${cqa+>N>Wb-H=#}* zf#_YT_is|IzBj9m|6Id2&W&r&n|puDr_x$aMg||KaC`bPNCWxb`IJo(`0a4z%f z*5k=h&j9=>=^u0cyNmT*@z6n+eN?pf T-=~}F$(sMNan-K_a}$W-Zty)8~gV! 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_16.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_16.gds deleted file mode 100644 index e6f680939877260d84a84b5f362c7b381b676974..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15400 zcmbuGeQaK38OBfB_oJWd+O=KZwOzm4wOa%-bRr3|F%=w4#+*0;)G_44O@v`2AVwfT z97>R2L?B^P`4HyEABJR$Oadrq2ofPtG@^)sNPq;?K?Kdbf6slcp3`mTL1q*Ejq5(w zd)?=Lp7*@xyxo#YQeXecq`$7d`q!j6sU_89EE&rGIccr0Y`yTDZJV}To+Moj<>OXv zU$N%VdtN(c_3k5f-hRf%lm2qCce+x!bj#&OEkAPRymMzR-8^%_xid3cFFtSU=PsMs zymiZk7ky#Nri(AzHgnYbl2T)mRNCs3SCY!S`Xot~&2O;(Pk)vU`5$2OPXDuL|5fU+ z|E2yDf`7jIyEY_A`7UdFf5ytk?7vMHtzPJ_K4dSvE=d}<)tbd_Q*SkeDP5Z+gBn=z0IjeE-#x?AVu+Wb`i?>u3(}H(?zT2{r>(@|F%!x<^DUsZ|Aq`UG4ul{`#{#zoD9=?VF&BbJyg@cc_to?Ci4N6QVm7|Ab9d2Z=x(ev?>pVkZW%a+0XD?4&DE$Ct- zpX0cG;h&{lw}LLty?)J^UwNPRUD+Xe-}sXayiU*y`{z1I|6D(3Y2KiVk^T?k`a7rp z>OIJLqDh|E3!}w|Rx=x%kOX>xKC(8$GwxJ`0&& zpydW#jO4d$^xW14(R1;WpVkZW+r~Y&?a3T1H|Sy{zir%e+ny9X7eD!Fy)b{?>z>c^SJ1__{mS}h4~9#_1xZDaI&_8%d7 zE`IXUdSU*6eRi?$2JEwHmX;fIF_J&9&T|Le7Cjd~`Dwi{e{jHa2OrDPa)T~L@&^Yz zcknUMbMcd()(i88Uh>@Gn{%|>po@|Gp_e>&_-4^_@spp{3-d?r_uSE$94$BKVkCd$ ze$O495j___`Dwi{f8rFsZ<(-rX6|1CZ7&2}jNHGBUG063FU`^V4!RiWf9z`Sdwi+r zedDM9v|iXh$I&7=V-p5ixGeKN8Q)`&m7GcbTQ&@u;*6#FMTyf z^95au_^ao*udy{p^95au_?w?{U(1y_nlI>L#GhQ_zPe>OnlI>L#6S43`-ZmWXuhC} z5r6-2?(6?sj^+!x81eT$@4njCb2MMj#fX3EIrmLppQHJLE=K$lXS#2)lB4;8E=K&L zHfr|I=zTewFX-Z2|4jb-3$rH;_Uy29C}Vjgsy#cVwEDsCzx4Z?x{c=hvSn|{ShDLT zx@h%7`0K*=hf7|wXJ5Mp*W3NOSpKnp_a)Z#+JC=cubHxZojqr*xBgP1x1Hv7h~93m zAyS{e!|M=z!Bj@-U8afD7mj-!qW2DFq`t^{7OD4r(d!U>;Mt7S7yr)dkoxd38L5xh z^MlBFGZ)e3a)|l)_g5pff0_T(Z!kz&3ij34dF7Y~~-d@f~z3ty#htyl{%}Bj@r`I8M-h(3b>Ic0J(Zf%mf6j&P8+Xml zuW)^1HMttaE z%s=v=`^K6w;zJi>{)s;KO@2BfK6EkWpR)Il)syK5GU7uQWB!I;xUbxv5g)o3^CuVC zb&zZ4?u_`*MXML?f9_)|)+_hNB0hA{^g{pGUiXckpAjFr81oNra^FZxMttaE%)i*K zOZ2_iu74svbTQ^%WY;Zxed{ygLl}DB?pGWBvut zxUcJ)jQG&Sn7`fj4!QHM&WI0PjQN`e-PiQ1jQG&Sn7^FvyUJ(X5AmUkF@Jr!?;1MX z5AmUk2l!X{{av}0&*!Oc*tLFz?f17bmOq>%lh0cZDXCAM>~)AfadbxN<9B!+QXl(D zM(U$>zaml}vGozrM^NPWOQ_eJUh@Ao=H?;pxY zz3+OjL+XocPl(iOfAl&;@BMj3>b>vrI;6g^CnNQqtGo`WcVCc^de>84htwC?{t>B% z?~7BScdYd~q&|OlM(XW5y$-3jH)o{Y_IIyC>TPFcq~5yP>yUcOk1|qk{+8Dvb$j_) zQg5{9Es=WTXS(b*3oI{QUL zXCH~^>^Bj;=PIv5boQ%Aoqa5#v)@H@-UlK&?-voB_mPOs`%OgWeJG;yeihMqKa1$R z&qZ{u2O|3LwAUdz*AbCA*BcR?>z-))BmepC*T?kt=Yv17y=tFDLuX}dw9hJZ(dvc% z!y6C{K};JXZaiVSH#KU{JMYHdvCeDpT3vl zv-W!E;__lYpF@rJ*sSeyNo-n|em?l13mzgW4~{i5lG z`3-g-!};@fJ!Wa=9dt2r{-thT_tJwIS$A|Xw*FzC+5Tbwv40>wbTQ^9hkZl7$o>g^ zrHt(#?jxBS_m?7b3-_HVWAiK7y$EyT@9xaf<`#4@GC%Hv8ozCy4|ZQ9HgS)@{ZUHO z3)he1=o`OC|L9_@|FS(7(syM?j@Eb3#Yq4BJsg3eW&jq(e%Rk@f^b3c|H-Ddw4!c8JjajP=iR9CPRSPGtV!`7UK_{v5~L@r%qIU5w422#$K3IY%s;$t%Gmrlj=u4W^o=gY`sX>8x$}H0GXL;= zn=&?kj$`ilMdpq!#^%p)^o?JnZ*(!%f5)vp_s$bCGIw+_Hh+#|?)XLKA6_?QZ2ld0 zc;B5TW~6U)G1fnylbko7pCUeVG3HVr>2#$K3IY%s;$t%Gmrlj=u4W^o=e?`(NSD z4gC87o+AS7xnUGtj66S#ea(I2@6FMCK^J5Gy}s`JeuMRgtb6$VM#|Xwa~$iAPh{Q0 z?@dz1)_?rZ-uJ}z9Ifx5i;?~(w)nbF+H)}1U&y+ni?Q|RIMyAX$ohxZO&MGNNn114 zZPI$3rTsbRVx)h555?U1{glZ3!|$h3#^%p)%pJeT{L#hO{FhwkeNP>gqxBthG1C9k z!#?-vtr?j+x)_^3$1!*OBJ&TgoAQA9`@g^HO1AR*4d%?h{~7yG#?mX+%RP2JDXEwD zcpb7%p)P*P{Uwq0wEuEphtmAI2gslPgPrG?ecxu^NsEm`el3_K-xYt?GDWMG z?E6;gfu>g{ydG$J-SfO2X!RcZex3dTt=@aL*8@$j{nG1!R`0L(dZ5(@Y$o^vtPFLDz68cK6R(p1Fb&&sMiCn&N|^w*Q?ZFqi?jgi2ZxU zwR8VHm=&J)zn394?@YpvXnOEBxnKLSGHf$Q8ryAG)IFDUu{-#|wR9-(UAS=KvY+5; z^(_0hGd=Z5IjJnHp$#!LbKTZ|)gn`D<;H9qd1N`Um-ye}I2|$X`~R-(OyJMmT$0RqY@9??tuBq5ny) LcUQG8OUZu$ea%MV diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_2.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_2.gds deleted file mode 100644 index 9c0e4008f08a5ecda9481e878f75cfff53c5d23d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4862 zcmb`LTWDNW6o%KF+guuLm8cyXFonLf22G4mG+2`u6by|`wXGJDA#EuQiCR-IRPlx& z6bceVLG#cEY7u=B3qJTD3W^URQoKMFq=I-u`VtC?#Q)#xtU2d&<{WM6z~q}*>-_s) zd#`;i6N$w0?w78TSN>6IQkSx9lJ4|p>F}c2>3wrkb4Nuw{czjRv8|(@oIH2S$on@g zE$+Qfy25 zB)ZI#-zB=-6Oo>EKK{n9a<6_MYfJjsh;P9aiT-h?Ul;2aR#sNt7AXxFar7>{7mO~R z)(>X&@EfH*#bwpkjH4OL#t5sF2(HXoap*@|j`W(JrC1Pa0G_QG*aal|lz6bx0@s8;~4Sh+( zSXz(oXE8=h?<@5+V*GaX&9XkXuQ12xYn>D6T@SD03AtbVJ(?%IeRyLZ8r^t>n+XyXA9DgQZ^)=LnxDokW|L{rGMV}_5j&b7! zdfi{0;?^(v6~}Qu-I_ji-fxwx@FAEL+M8<^*bgb~hF z#*N75&Y#E8m-;5*>*B_L@%R2#z0p6ZdL!a#|DnwFVG+lE9@ihUdJ5~0xDokWJ?=ar zzd`?2Lhl8vKjKE@)B54q{{x=CT)S{B-Y+MtZN+B{XJp?0S@R_0{?3HVd$($yWWMxz zLgqOiqr3J@VZBQj2b5{>d_u-~tdV)vX+*BweDrz%ACARwjU0#mM#KyC^k)4{;@a)% zH@5TdiLdv#&Q^{=|4_neKlF$jk#F@+>7y@IZ!ABddL!cbdhCS&ex;XE{2qG7js5w0 z?@`qK4%Ti%!s>4H7jYxo{>bM^j< zI`81N6ftiXHx|r4xK8^Pe3p=XW87HOKOV=vQEz157&jL6FStSH9ekUR^Jd&wG=E-8 z*uQ8#A^XO-v8aDMj(wxv$o{!;V;1!<{04RRLH}%uXP{@?*q7fw?{>@;>+SuLBKqdy z#%%xees1T_0%9DzDIxF51WLqiyI64 zy$SX8%SQF5p8jz@*Pr)I`tp9-Bz#@mSl}OQR^Q;XQGKbWf1J*J+uF^{lng;-p5{V5<1>bsdvokCo}hR zlo?|Fd>%Ef!Sgv^M#R(g4<>rdc^Ep}XUcyhTr;V0Bl2negwxyp6+PBHKVvM`;qI;Q zSGs&!KbF;_$7fY%tSzy6^mEC9`LurA>4R1O-fSfE*YW)?;<{soLmD?C@BFK1Gk)*d z^K`TkJ(J2>Jk^wbkWTyc%c|Y4gQbg6(UB^=oL7f>VXs{6;o&H{ro_M3^2wrOLpa#) zUN=jJ`^|PY)_SKz_2_|Bs)IK#MIHXRT6ORg3U=OD@{69g_wJ>r<)<7q&JV2lK+Brf zU*YRjU304Os??+1W7ziT+Ew4$vlcye3iUfK&|`nK?Ri#z4(1<9tsadI?bw5d<8%f8 zZ3N7~D!>4%(#I=s*Vsr#f3KTCPyPyag~NN@`e8TQd4uok>rvZ(HM!dOgD;SO0LxVy AmjD0& diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_4.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_4.gds deleted file mode 100644 index 36c693a63078f2dc747ab9dd649c1c4cb12ee26b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6778 zcmb`MU5Hgx6vy{H_nvdl{V=r#b86@Ve6b9ZF+{|gnWUh}Nli^9y^M+}GnFVL78DT? zQW8V@mw-I{zg2si=<5=TD#H$Z!T!?sjMB_rl z>tAbJhx=!B#pR~7j(O>C6M029 z{zv}kAN3o{r_^tR?&sI@(~@lcJ&V1u4E0~?@f*~ix^Y>tzx)#V-HY#PkKf{W)Q!Ex zetOe0+SXXxtj97!FYG`4Jhw2HF~!wSj++sB&|liCeq(f{`i;(BgcqV7B{>n{w{KUt;YPA+=H zxJ5Sx#$Uy`j&)C0=49Qe8$)*(Eqi%#=IDc%%`q6J> z-KZNw^^5M%d5eDbhk!9XdO9b^Pu& z%Q=~sx-pcWb&|b``n8F1i*5{zpY6DBS$`wrUMmsz2Lt-O+F4x}$Cktv|LaVgJ(KCibo9#=!oSI-%~YAL~!D?$nKw>aX_? z+4UnH*Zb<^gb{0J6V4ms#wqvL9e!S?`Fz0Zcbo8vZtQ$MnB>>I>4;JD($9WW&xP}| z?##>Uew)ZEx-pQyc2x7$R~R)f{mh@m{qsjh|J|78ox$_bB){gJ!Sh*%pZ9qjH}C)2 z#JEK_2F4$4*Zk$GQO8X`$DhRu$Itsj=H>lko5(A=F_6EqSo2oS8#OQe%%8;z^T)`+ zyuANx6PoD8Kz`n*(Z~C@HsKT981!qun`NW+n|}7cu~qcK{#UNY-dT%re&+Fa{HAVP z+j0HssDJeh_3;?(FMOgK1OCQU>T7)D5kAq40l)i1eWiyz!Y8`1)4#)ienLwZbN-Lz zZ0w+lK4e7PpTEA`kGUOyuiLpf8*(;wsBT2u_iq<}cK<+cu9Gv6t9ye3YX5{-I7k zYW0Km-&j8>_V#-k=)Qlw_$#x1zthUcuX)N}XntedueuSspI_HcmwQ2;zcKGzr#yce zqnmNwYhdqZq@JABI7vOm^SzPrGM<%<)T7%pPEwbT5c7GO{WVH_y8gA_f62Z?KieGF z!^!(6{0Y6#U&6YUbJ6acaUIuM=tjh+^S>tZgZsM#>yZ1wSbhqA{5Enf7&o#V--Q^X zuaFz>M~tO~S?-L~t2;GLGA{3|GBVyoKa4o;bp4h2lKTW80L-7Q>-7!d82L&&7VAvz$ecm8R?VfiHzp2;qZ9hYwyF78zYP}omn8cJwx?Zho&E_Vf6vvslfnLV z58y)X_u$fwfDu>^aDZ9)vl+O1XibOzei^}%;u-9T2e!%lVJF$1#qWjP$+Z8?BYnfo IdZpt21;9k>6951J diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_8.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_clkinvkapwr_8.gds deleted file mode 100644 index eabb2f44314a123d33e3faa3d53df410f3f308d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10626 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_4.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_4.gds deleted file mode 100644 index 146519af1b5de4fdf4c60aca642ec27ae83fdb2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3416 zcmbuCJ7^U_6o${;$J|HaBXCi#rckg@2&gECD3ZjWMNE9g7beR!F&GROViDBJO2kU6 zRK!?_h=rsOv=+1y5eo|&QLylZjR-2l|IFEQcQ$bsqYInw-ZT5pf9A~W+zA=-yhGGl z@QUxKLNzMVN?PuIre@EKjvO1WkDno``r+1&iyOP2-1)kx>*1Qo>qqueYnZKFWz6Z5 zXV$G>8x0Rdrw5}GLs2w3HavQ2A{shASRXrCADbADHc(I^GV?t8L}tE6L~RRw{Ee^T zTKT}NOv+~^z6C9~V||y^FO2nCdy5fwHo@pK>V%Ss#1(ZjEs^$x#@zM|~T@xM(} zszblu;V>SHf$1 z!qQRkZg4rCdyRT1(at(z1y^_fPj{I;5 zZQRwjTYZ)NMHAMb|3ai}8j!dWaaTW(=*1^|CiyFy1|+UT+|_SO<&Skd$Mrcwk6h>W zex&qXzxew_hgg?3u1v4b8G7;ei%N{WPxL|?&m4cST6}|-4&iI#${hb-wfF`vmEzBO z_K({${X=+g{mo5>h}pO@$3OfgzUHPzCuop6vC*^Taxy zzXqYRab=F4>%=;)e}mB3xH3o2<76GzuR-W+T$$E)q~4zk(C)&0H(~h!#*erX?QZ>M z>FJ~Bm41upm596g&e-4XZz1;a%0|@xQo`^)^dlHU%-}fcy9PCh$?rMql+b7PZ=OQ; z6L%q@e?|P1)(ib9{V9wGIwkb8`;Yg}@D=*v+MQ46?L%&eE76{*CycT59NNPP%Qz%( zT#5Evy?G&eW$~Qom5Ar+Ie+$7a^CE(%+3E1>WcMJ7)%&O&?Bxyd!|3nATsMv@XVg#jU;F!oapL0r%bu&0cqeUK`KSG> zN=Nzk-JZ+(;EmsJ-mjScLEPIC+B%|5$)-Uqn)SO6?)?Y-513C;rDnQ2xPw#=?PUIL1eyU3Yis!OlBes61tj;06FR7V7{Sza(6_H~=zX7XpuCV|B diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_6.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_6.gds deleted file mode 100644 index fcdf47a40655a4fbd920940114705ae70198b05a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3896 zcmbuCPiP!f9LIk%J2N}GiMEABU5!wo2MYl!fDc>#gafnawyfC zpd!+Pcv6wZgLvpcJQVa;1oa{!J$exZFDiH`f(r5beZTjceUoM;CJt;qo8Nn%_j`Y5 zW+jt2enBRpxc#$qr7vwcAp67bG9G8k=U!SJu3i-BwbDliZ%xg8^~oO(&3=C0`UfYD z$wXT3-kW7>OBe5d;81aPu~<7@yu4Tx%PVJ>&tE7O&zv5vEDcvKtQHSSl8a=w#PXYD zx5gqexwnPC{_1|CU&!vd|L%$Zl70Aif7bbXz5fpC&xu5b1KxnaxN)w@-`Lo=Lf;7Y zIrWt;UZ4MCk$edMSipbaGj1GK@=yQI{=ZW7t>4CN`#*4g&(GhRSd=F*SA!8dSJ4LI zMwEx+zsZ+h)i<`VSoDpEhrX^~PoCiVcV9!E1E~Mli1|q!L&^Q9w}$yNqMRPfy&ty! zv>RWt>-{zF{K=7@{DeH%m&VQe6Y((rsj824nW1mQy!?sr;ZnMI=!VKE7a4m) z#5lH~aU@TzWAg9{NWr{oncd+T^3JJ3C($KR$)N<9xT;0dcNf z+*m!|n|#gRY8x?joNxL{7q1J?@{9@Lb&3;B%kS zM~!dn{QZrOC+};lXGCAa^}MM)x~yw#y^Hxl`$jpZ?HN%oY)|hmJvr%~Uwm)D zKH~Gq*gB5(_n$%I(?@K-(uAm)lZ>xOe`x5U5?mfwfJ<7|y?~q%ahn~3k zWIsC}p%QW%vkvavw8pM0suhxrgW{ z*xN>Wj2oN$>~5`_eH{>OxwtW^&z~PrFaJFtJQp{5AKRb5Pwf3PyC=px<$G`!ihh)y z{aWd+>+S{JsQ;UVmh^0+8~gAXFLT`%ODfsz5&zzaS&{L((&_$tyxx~_m-QF8>yr1g z=bt+M%0Efcl5Gp8-FD`Az<_F8^e` bKatLyfXho~Q@`KQ&$jxJs(r)5Hc8}PZiVWK diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_8.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_decapkapwr_8.gds deleted file mode 100644 index 57fbc72c95b4f101b54dfb863a7c0676b14e7ced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4408 zcmbuDO=w(I7>2)@`!oO33PGJ3q(Tc80#;l^sYnuoE@IU86oJo3bNgT*L)9>Eryyx%U zxl>7{Tz)}@OXbS1QkRZYWS{H}KTETmE}edHrMI#wG883`jK4EF_04C0J~a8|eQO^b zKO)0PzI$()o?TqM|AB+uQw!a*^WB#gy4|JaQ%f(O>n@y}?=3I(md~wpAC$N%lD5k7 zhotSYh>Yxx@a|vjIsHJ^*YvXy|B7$JpZ6!7zuWuo;ruC)(xHGiV6bkSD)KirHrDAI z;XbFn($(|xKNYF=;2#P2FMQUGy@C9(|Jnan2Yu_e@s|C6)cHelg7fd@9ph~`)FY## zSg0#~CS5&dbn}9eQghpLMpqB#%kr}I=6bnxHgcWta_dD7u9x`_yZ)kowNG#o`fN;V zB9$}fvu9k=@fdMl*dN_LL-K@cZx7nphxQ)pvwA|?&$w6Hs~T~<4Ufl3_+k4`yZMcG zyuZi&`sjSUjd49G()zK_+9mW4bt8_4`CEMXU43JOi;2Dw_0XSo`6K=Q$G>2lbGQIK z?YcCg9{MwbKK8`~eIs)JLOxzfR}cNM{`l2NIwHI77BMzvwQfW`^k@6N<|N-~|Ba1V zts7Afecf+1{_WpiHu>o5`nK*b1Aci%?`u&dAg&izH{R@e@%=B)Xns^NV(hqf=qp`4 zcl_}I&5f@GM6RnF3-aRwnj2p;YA$`|`{TL!2{L%UNG}9L&DD(s`N<88xS z$8+-=$27Nz?+UJiBXV8cSdia1rn$|?sJZl+?~mu^xAtpp>uNycy1KC-zqMa;TUU*m zOP~4vcy2z|sd^ZHSpST;f4RExaQ^*+^GuKHml2+;8w-5F{f8c(Z!*Gjbz_0g>zp3% z9~t4fy0O6LbxM!de@1w&ZY=NhwN>m7)QzYY`sw%T8!NA=Z$!P&FTJI{v3yW{BkH++=_ky? zCG1DehbNyiSvR7d>qp3pB`ST`2=EnHU|ck5!G95?I6qVZR- zZ}^;AeLdhh_6O_6QvUdBKd4uKBOp9iHx~E}&Oh>-oPQ%cS2q^;94Gf3$8Y4mW8GM^ z|9Bqv9epGB9qYzT`>*S-Pknx$!#a(_y%O+i>_5B`&j|gioWY(jeyq=fktck&ziMa( zzfbM=L3&RajZ}Bx&QbbVhV0jBeNAm}8y5T1p5wb(%`EHovLuq;QR4d^tbjD{O2#@L z@b#fIUFvVR_pC{^lRp2{(Pwt%qh0!sPfzZ^{~Pi}sdv(;adu#!g)vFDHv;?^aP#J8 sK>b6vo&i6C=}rE#E`KE7A5JEY!{tk7Q$OF?NpJR_6xugzzBrcu08QvBga7~l diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_inputiso0n_1.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_inputiso0n_1.gds deleted file mode 100644 index d549f0519bc2724888bfd861e5176505085636fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5018 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_inputiso1n_1.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_inputiso1n_1.gds deleted file mode 100644 index 06d539354ffc61af3cd674af5b1648269bf2797a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5062 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_inputisolatch_1.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_inputisolatch_1.gds deleted file mode 100644 index c9b9ad890aa23b059bb3179a20c5203d188c0cf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9080 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ⅇj|J z9e2{j;P`jk<9$2(Dzv_&i&6h+KW?7?ar}u>{``;Yhv$K&*Iqxnd);^Us}-7W(#61k z_eJ-ec)CLKO}ZHQTR*v{UnKYRi&6erNABqt$vwIl<)3w&clrz3c~80+oPVBYSUxkJ ze~9E3U5xU}I?fyY1#NCg7lZlndqVcj?;i`=zLPFqYX3b=OXs!No=@7`*PHi?CHX8j z@Bb93r}y^eMCbjrBK6jz-Vf1v|FcNF`K;F=I`117sb_b19k$r9v~-nBn$1|G-g?IC zF!f$jl6vEa*CBP@Un^4Q+7Qv1gJ}Et`t{P&@;m0Wa<%V!#SyY}A>q}BkpO4K+eev^N zhtwA@C`o-$yVoK0h4+-CzTj4`L+U+mmZaYO8?Qs^-NPlR&+qd(q~2xMv`Bs4{a%OY zb3Z6aea_onht%gxl%zg;)a#Hs?@tt|&wSMD5S{N15y=I*NN(sC(Yaj_9e)v>eTnGo zUqt7)M0Ac{L}xA{I`b3JnX8D-{6%!mi-^wo6VW-ZB0A?^L?;&_I{6XN$(M*u?nHF* zDWa2G5uJRC=;U5R=lT%Qxo$*st}hXt>rO=H`V`T*enoVyYthbo?e)LscF)DcTP4X4 zkDnsB*=?GLzH7ki5Pj!~lGJxR;B`oS`$r|IkH6z}NPT>NN$T6iybh^v{aH!sTORj1 zq(1hClGHbU;&n)U^Wl=zH(lj*NPXiAC8>}8-0P6~=Z2v8^ZL9wiBscVn=-j@D zj<1N${zP>4EuwRLB09${qB9>6o%xCA%vD5Z{vtZ(MMUTPiRheH5uNidqLT{|o&1RC z?dJJQ^C|0FZ{CMXW|kekKT2dStP^d0bw9ejzfaGH_Sx;U+4HHrB|D$B zzhAWd|J%y{@^ur-OR`UN(QfAw{mrSL^T_e6v|NadhwSmkW+qW9a6 zNWJfn*CG0nBPFRXp6PW+eNk6Q>OHS|9a8Upqa^h%yPibq^Gp-b=hzHI^w~SS4$)_P zQj&V-^InH-zq0$wk&+#D?pGhTYbIxVi`_pSvvZaceeEk=hv*|Om88C*)9aA>sQrl4 zHy!jkMBjW(N$Oipc^y*Uda@+-@ejNXsc(O;B=udxUWe3ouP8}<&plp;)X9Zt^SMNR zn*NsSCwUD@d^Cu~h4tO1+FSGj}k^1t-ybjSY%AyVi4`yx8;+ZWOKe2Iw8=SxI%KEEZR^Z6|iozEwVEhp@H`k6gO?{(Pn zBfHj26RGoBl-Oc>Z~DlzoapIKV*Wh{e4pp@`S)TTzEnP2(&Nv*8_nC!#l-6+JFd0+ zr#EenIjQfoJ&EW$9`-s!A0IDCecOcBA@#8fC8=+|=ygbaqg@vw_0iK_hv@4kOHyC= zL$5>XYZsNIKHTqhNPX40lGKNO>vhQe+r+<=?EL0L zpKCuNde@ZKA$s>!C8;ks;B`oy&o7A77eD58h~E27N$P#}BU0}l@H#~2`>#am%Wn5N zL|<-m6REGT8HngZr@ao*`CcQD`kISghv;kfmZZLJ!t0Rw`bSDqAAQ*CkUGD=6shz3 zBN2UzonH}s+XAmc^zq4()OXzEbx3{Zb0w+o{)N{e^@$55sdHV3mY?e5@4obWeqR3l zvrqWr#JBkV)W4qI@7L+K`2N%@|9|_x_5S_&dw%@s_s$3X@uXG!!p~=`cyQYMruFZ+ z#jZO$2YY9g^)B2lM+jAN7ZF;Lh^G&*#`*+$++V?m6{Ccv+V6&a`j=A>8 z)bwvz56`CfGvk^3(ft{B{bpTs=HEe__G*WNm+f_7bJmtM7B%tTB~7+$R$tq`vGiw4 zHVfCLzp=glUDoJr?6<#k+0VD>-edPnZT~~}cmEIFn^q?88NH1|e{$f!cc$NhCH<1S z?>)tzpZe~z|41|I=xzM@cP_tF|E{kc{nz?!D)e9Xm3})@-^@Snzv{Xxr_Jvh_uDy7 r`@i8&r}ZC7{_E=ZzqIZ0@0mA$(wX$XW{Z0pm-+&6zwLILQET?U3I6Xz diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrc_2.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrc_2.gds deleted file mode 100644 index c9df05a0c228a5073a8be379e8a554b916531633..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6098 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 SmgQoD|Dhswrmqfl!+!zPlooIR diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrc_8.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrc_8.gds deleted file mode 100644 index b097ba99349fa1792686bea391fa750e0ca6293d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13458 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrckapwr_16.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_isobufsrckapwr_16.gds deleted file mode 100644 index 34d308551a685094e590b520875b35e497a7c5ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22078 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2.gds deleted file mode 100644 index ba3f2cf6db5ad2a7860f302401f26f980edfa55a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13432 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 O??~TL;|Q70NB;vHa763? diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4.gds deleted file mode 100644 index 70edb0ba9286f75cda985ba25ca1a58d8132ccd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14664 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 CGv}ND diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4.gds deleted file mode 100644 index b03f64207147614869d1b6d8d1a371aa7d92cc10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13068 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1.gds deleted file mode 100644 index 2f94008197d0b847ea970a557deffdf4d2a06fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13396 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 diff --git a/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2.gds b/sky130/gds/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2.gds deleted file mode 100644 index 7d062f441df86c631b053994b243714f090fd49b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13428 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 A*#H0l diff --git a/sky130/gds/sky130_fd_sc_hd__macro_sparecell.gds b/sky130/gds/sky130_fd_sc_hd__macro_sparecell.gds deleted file mode 100644 index 67cf1eaee2821ce76f6b06556ac0c4854f0b5845..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4066 zcmcJSPiS0K6vod?X5PePnzm_3n8~!JHKE1)|07a^Qfovcr5aoRP=slkR4q*tnLweg zbR{kXyAjk)+}MSJE=0O;Aqs*Z2=1$kiXwC&h@gnZ?>pxm-<>4$oJ9Iy`kVRA{mwb} zzWZ)oC6a9R8L4Elg`3hQB`HY1^o8H0n2nY$oU6^(u84HCm3y!Ok{nd_r# z@0>X;m3(7we-y1=yfQvHR()=E`tlW~Q zBP$|9ds^^sd`(sC3)!}2-<|lC+lx=^e@Oj9=Fi@Pz??|-`+$GqH+AP+V}JRQ`FeW- z!l$}3#ozs?`MQ4%2%qZC6o2l1^W}aD2%qZC6n}Kce9_kd;Zxn2;%}WYU+Z@P;Zxn2 z;%|S$e8u|$!l$}3#ou|&eEV<@c^{SVsqReicib}H?l%L%r@Ax6zyB-q9as$rpX$yO z|G@$C9sDLBe5yNB{KHS0Z+JZ*e5yNB{DVi$H+VB3e5yNB{Qa+(Z(uMWe5yNB{D*It z@5rkG;Zxn2;vbFo&FBy2SHh>dGsQn1KR@H~^P_}Mb!WYQM$eBfJ3lgipzfqd%f*EG zk_dGt;^Fz@{w1DYV|_Mm~xC3Nl2 z37!2ju7s}hb3*6*8COE*y0DLUeYRLX`GEUp_qWz}$43b{ui|C+V{%^Yr!7uWzoVRx z@xt#GCs|kHPV}WdCv?s4gwFcxUkROkF;CoI!~Tcvw7Pfym5}`%`NH}m+27%J6EZ&V zyv0ez`yWoox*B()FZ$V^61wJhLT7!(mC)H2^Thpa)xYlFu}^H=1fCO)C)p2mC-l&7 z?;r8`q3;QE*e}h$KiK)PCw~9Ay1u^tKF*tIr-&f8mm2kZBep5HrPzhm|OVBLHjechb#`W5Z{^^`>2Ss9Y3CnI@@$~al2 z*qc9AdW+ZFQmo{UpMl1!7`)?lm7 zP5qBQ{X|p#Nxi1xxop4wCjU0;|GTc7fBADfr|(HricUP%RQGjm*?#w%{Qsx>+gKmF z8oOt@>D_bkI2Lj*KJo4|e-pdU=kNYDkxJ+0|NSkjET605kE%WaJx3^q>F$ diff --git a/sky130/gds/sky130_fd_sc_hd__maj3_1.gds b/sky130/gds/sky130_fd_sc_hd__maj3_1.gds deleted file mode 100644 index 8052a29d2fc6464853698a88a2b9c0afb7b10e34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6268 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 G?*0W$QERdQ diff --git a/sky130/gds/sky130_fd_sc_hd__mux2_4.gds b/sky130/gds/sky130_fd_sc_hd__mux2_4.gds deleted file mode 100644 index a254f13954678f941d92261b8d3ab6207a0496b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8478 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 diff --git a/sky130/gds/sky130_fd_sc_hd__mux2_8.gds b/sky130/gds/sky130_fd_sc_hd__mux2_8.gds deleted file mode 100644 index bd34fc3e721fd25f56a003d72ed117d523b435f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12804 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 aNx!&^e{m0FuX{SJ?0>(A`=G5}8{xlRYFj}7 diff --git a/sky130/gds/sky130_fd_sc_hd__mux2i_1.gds b/sky130/gds/sky130_fd_sc_hd__mux2i_1.gds deleted file mode 100644 index 234ae68c23a928f038060a34a3135868b7ecc4cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7040 zcmb`MTZmOv7{}My*K^x54i3iD7z&C=BWe;NnmHyFh*RU(MQa>QvqXJS1nmY9ArTVN zLsSnMT?XqR3L>F`B#J0PL?U{yBC&#sd>QN})BnG|_3gcnbM{uJ29CdTzP11B|E+Ib z&OTcc8PB`N^j5t1jH#O*6PsCPM*h8NdeP49_wU}kd%rQ=ez?5<>BXx*9X+>X)v@_U zUfQtE^oGUS-YD9$WBqq3h5}$%Dyqtc8)lYHyL%4pmF_on`jzPh=a&?RT;a2_l`1qUDE1|tp z^g*gSwd^Nw5c9QXqC?nhLI#7Whu3y^OK_mND9m`JRK9BiqeBX(w4X&X2Ns9`7GRACBQ?SPSS^ z34J?%Ti^OJ$v^DOaS7g|zP_XPEc!Z!`BQ#@Tn6#kk>g}PO4OmyuQ`m|&tko@&W;>k zqff?1hS%b?J!7y4{li~LANHd}KkfYNdTxGzJpaJ@$NEu5>!3$miFjVW(wzskKHd#d z%gW)5Tz7`~Ida`qoHmz+=tqgUDfA1Tmwx?!GIB2cZQ@Vbbw58NeYjqg zb|0W0C9ZGhXX_LFF1q-sj6nspL0pM`+vy+W{!GqG9?h>ZGT-J+k}nzFg1JTgm29tK z&nSa~a=nt{V1G*gTk%nrji>sY=xTE_vR}rP1>;%9@x-qn&rXbgdPe3M9*}%V)`iz8 zas9;l^ttcTw=nmQV13}6Q2Mix8{$gDi}i272kXCrHJkD@^o%PPmFVG9!C7L@D<#e^ z`tzK#oKvFz7_}S4wYxHM?;FIGXfMtm*TqAkPkBM~v2v(fA7a1LUl|=0y%O<4e}3n9 zm@5xnN`DRBBd$ceSpT5p?|0?Mz8F`Qtd`G>Xp?l(JK)z)w9;rr^H;aU(Si;)Dr!@7&pdQ4>R%{t0Atu=>A5&Ki&D) z*n)A7;yh0>^4wrtS$2N#I-VQUr@SC~?myRFIDWQs-%+pRzGGZjw*Pn?_YL(*?id$wxV!hK_M%>-o{|?!V;s$N`-7zsR*pd!LQC67jtM1bz4=)^8`~ z-?4_X&_J(5yigy)o4)mV8R^Tovdq6RU3`;oGSZiEWto2iYlr^SE9uL)@*;ovJ(v4E z9}LRcOZhkYI)s`k2V2J9qW6ZePyU2goRRlFj4RQeuipece|J%@jBXdb67fQPfcrT5 z^Y@$5-g_agEc2&cfA=ZrYx{L9^G{}oKKVQ&^^7YorDxr#Pl>uy&-z=I)SvCVccEVC zkBUx-_{93@{U_%63ZLi5{H1z*j-xb}dY;pw=Q^Q3=Rf6`%s-!Rxc0*QyC#+4=h;h6YF zhn3<>J^fvKp?`c_e5*Thgx1EDCI0bo@vZJqiZAu_ckPA#wS(fz-%zZBC46mMS>j(i zD8BW@O7W$h{;s{yzp-9?n|_Y)wQ*&Me`CG)Hhrb|Qcr)^Ug)3TJC@^4PUHw*8&{V2 zC$q&jIiVC^>gn&=^ZtYO`!ksI^Wcpw-@mX4k$=agjE#*5;!lb8y#IgE_b~{?V1af!6i%R8&%hKdWkr z7tY#go(WBKRfYdvT|s;Ens7zW3;cW0H0?9g$FWaQm7b^{|7*~N9?#~<|r7wNG&FVElUZyi|G;(ytC&HwJTE&3tr-&dS}Z@6-U%^oXR_Y6Kadm{ah MFX<0A6hUDA1)u;Y;Q#;t diff --git a/sky130/gds/sky130_fd_sc_hd__mux2i_2.gds b/sky130/gds/sky130_fd_sc_hd__mux2i_2.gds deleted file mode 100644 index a2e6c34ee4b6e77a07f20050a23f214fc4f1dda9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8158 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 IxHQ850FpoHWdHyG diff --git a/sky130/gds/sky130_fd_sc_hd__mux2i_4.gds b/sky130/gds/sky130_fd_sc_hd__mux2i_4.gds deleted file mode 100644 index 450d7b89e17be5aa426b394d5e6c6b2d47a327fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12286 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 NsAns-ia{wy{|AX^wiy5b diff --git a/sky130/gds/sky130_fd_sc_hd__mux4_4.gds b/sky130/gds/sky130_fd_sc_hd__mux4_4.gds deleted file mode 100644 index 11aaafcc297e2362196b7481a1c5f4d0f86aa28b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15752 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 HJePj}BP+31 diff --git a/sky130/gds/sky130_fd_sc_hd__nand2_2.gds b/sky130/gds/sky130_fd_sc_hd__nand2_2.gds deleted file mode 100644 index b5804b98e83f8d01b29c025c9bf8d14c4c2bdf61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10118 zcmeI2PiP%g6vpqHzb|R3Ed(Vtix!knj8@x4DTSKE6c?${v{r2)d9)U>v=nI(iMnwm zML}FBXcvv37ID#)DDJwj8Nc<%Qd z<6mx>J9F?UH<)(U4rbY@W3vx$d#LmLkWosk%tIO_) zoO8qLV*Kl0?Hl@m?48rkM*J^XkGI#4h<=^dzlY-|oNJ8)oQHyT<3vUON>#tGu<#l6 zMrik|UMcp_|M>0I2XWgvEN){p{zt`szuUw7N!}1|^tZ-MMw{^7S5nr2VWqCKeZwgB zaD6uaTQGUmd1Tb}Vt z8jsN}VC+-aJfm;m?;OsTC+%&_YsCD^#s8Z4hc0^^?{`b~z;}w=89C1U7-^4CJ4T+r z{B1pdWPDon#t61HW%IDRBwd6 zR-X;2z97y6{b$CZdVS>m8)NU^2z#ynmiJ%K`(-^a4%oZuc|A~<{~QoHu^VgjyzZHI z-Up1#JMG50{PQ^Goq8klF7tZU<)6nf@6;DW++sK0Bz|6x)EB&}`ovhho-6f7Kg=KX z1-)P9-;a0AKd*b{jn}V{d86G}mp>lIyvhB}llhZ*J?rwv<5+jp8(DX>8|&(i$8p_q z|1o0SVmH?0KRu)C&UTmNx@kAot)Itn{nQ(|ewo*^Zv8xtbwhnY#4UE?P2!jPIrIfl zH`KF!gf;cUao*?X-x%*uoe}n~^~39wb;Ik|$h^^RtjiydW8SDYGJi6!=d$_hck+Fd zuf_N3cEta3Nq&!|NAdRLcydL@Nyjm~jqx?r8)@gfM(CHW-}{fh)_LPCCFz%Y5+nV$ z-qdlD^K#rsztkIP=e)*6{&hd#_k;OG%!O;e{bEUex6*FJco_c@eKMu`f`6$#F;3O% z(~nhe%$`ua5%#YB(?4-;;6M8)ApDBmSmQr=P<6@o0ihGSu|^*qR$bf|5IV6NYxLZA zGyc{{K_&`-`CFoQzo_0Q`!48>u!nj*|F(a5 z2X%?PQ)_3ydHAQ@xZHlc(EI0zoknQ)t6nMguKuHG^&95_;aBX&8voI>`i*m=`lp`$ z{diaZ$!7H{_Xp%b2)|-C*7#30tKZ~`QT`cGEN{opdR% zF1Y_;POvWx>(BBh-+#PDWZ!zdBz3eKyXa;A$G$<+k3c=!{pdXI1-K71{Rre>Nb^wi zAugjHkssK@daOK8^SOh%rXQi#BkyZPAL1(RbLclLx*jX}Yx)sdKTSWv-_Lhz{WSdu z{XS#gq3K6d?!QexBG`{M{Rn*yZTb>`FVW)+P(Qgyk7`_*f3JUR za=a4%iuI^9iT|0s75zT(Kiob3!F22(%Lgy1ApPk21~U8MQDwfS3Tv*urV9V-D#V|4 HlEnQ3Q$3K2 diff --git a/sky130/gds/sky130_fd_sc_hd__nand2_4.gds b/sky130/gds/sky130_fd_sc_hd__nand2_4.gds deleted file mode 100644 index 1d31e61fd678ebf7c1f90ba040f75bf389422c7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7726 zcmb`MUx-{+9mmhynYlB&Gqan*qO8qB3zpJ$wSOW63Fs!K_z;Z7+G+~P(l(Tqlu%k! zst+PQNYOrsD72w;3u=)*h=}NuQo%w|DWQsj1jIgR3)+WRR7(2&oZtP<+{x}7+r)w7 zv-zI$-S7GR&bfEyPEwt!>T_vtry9JPmeYC~r1z(5+CQgpRX_CLy^q}U$YUw3b^9MV z`1t-KFFyCr4il?ACp^Y~6oq>(TqR9yqnNb>^Nkr*7N& zQ0fg+swY)?J=H5!N@-(HSARFJJsa@@T;7hKP5rBPmHssT&FtUP_`j?9M^fr+ws=7f zbo0oZ|4Z}!ix)3GkKdH{&hQ7b-p)V#|Mj=l?K-?}bAJ5?bN*UW|JPIM|1PDKXJ=gc zsn##u)OdUSJN)Uj@SEMwhu@Um_8-dm8<9VGIi-;>Z>--e z^)Js;ukh19NZ-)SQva59PC8ou=++js?yQ@I^)rvY;h$1{%eqaize(NbW~u%> zPj%y`en{QuW~u(+t8s3Yo|utygKn125A)b}{8OF_Kl|T|FFb#YQ#XE-y3x&2{du11 z#!vl_y3x&2{ezFjz7PJ^qSl>tv#|fnOo)Ia7?H-3}4(alo*d7kRVPyLX( z(alo*{j*VbeS3?lJL_hle&%uR@lUC9pLMfv{?m^lw{yHj;I3^SJ-v zpHl12x>@LdU;9tp?EjSVW!?NAe(J_=Qa66HRDYhQ8t}9KkbOrtOZ(q_GwSZ?^8@u~ zYTa2k3+rcIrS;=8={ve9ec}EykLw2il)7%RZWgW|=FvC&CVfLUOa069)HnR}57IYu zv(&%pj_6zUR*ULe*3Clym`C0Cr&QfpHw*PMk8_8A$|jfVuNhz1f5zz>ev`hTo2CBc zdFmT}`UmM7x>@R9`bE^;d7#Dfy8hA4-RfWKjCp<-O!QvAU$uX6#{LI%{vXtzhK%=K ziE)VD{q>BDcW;hy$ar<_jEr}_5#x~YbY{k`-fPj#q-^{qI=|OMC*MS8T_!r~H_@rj zM5k_3>)W}%Yw30RGkH4JJsHf%`bYnc^+W0#-8UoS%Xh{&WPItDGcrE>ag0O8hgZ+Y zy3kG5jo(D)_nPSBo9L{|L}&dbI(3*e^V!P3)Z1ezt!}sYU)}G~&0}-@oAdYo z6TbR;Ey|a5v*7Q2Fnql~wJ2ZK&4RzWH+RuW<2(1SS%2?_$j$dpt-RpcSGd%UNIvVKl#o0!u-B6sJniq zMQK?#3;F#Eky}4wMlOExoAHJDgBK!qc)CS-vu+mh2QNhK@U$7Z_{nd^7v}RkNB!Jm zr&Mm%%|iat6Op^T-;7-R~JJMNm1i=X^vd}01XpGByf z&*M`nH|u60e{x;qPF^-67eD#U_`>{^HzIfSY>Udxx>?9yc_VUH&zg~opZsRLoqsI9 zfAyO0_cV>yyZCzd zeVg*auKnGhKJIHg_pGW0Gk^Y+Zc5*+Ki|Yp9^X^59M^^IN59N;QT_U%w1(Ah z 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≫YaX0U?HtrsKRBpQk>ou>u zd*|zMw}1S4+>^Gy>^nA_xo!N{ymH(zwT-yvFPD2G$9vXx`Nogf$e-li$Px2zVSJ}< z#Lf4)vGUX0yZkKKx#}!g_&Seo#93l@A@Ue5^gq03P5 diff --git a/sky130/gds/sky130_fd_sc_hd__nand2b_1.gds b/sky130/gds/sky130_fd_sc_hd__nand2b_1.gds deleted file mode 100644 index 4484e4e4f3fc6c4f01837782ca4b513d11b3ce69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4676 zcmb`LO=ulu6o$X~ze&^Dz@-um(xOs|5pBDu5-mv@a1lvOYyBxEm&PD12|-g_v@XPr zQY=D11a;AfXwiZ$L@X|ZZrq8KB5oALf(j}K62#y5zUR!j^G$kZw21@Bb93fz4h2k>-eLsqcg46{E_*YUDK_d&czMq(v6|}(WRS0=iI>N z2*2~I@uz+uyO;E{5r4(Kg?>o%n{)k3Xg}s$FywI=3dW6NCH={=er09l9Q8(M52;=$ zao>OR|J8eWTOF3Sv7G<7_zx807k}d%$IWQtW<=c2f3mDceIwKxor``&{kW78_w_pd zP5P@Q>2t2@L+6YerZjFu+}BTuzv$H`LEX&XxM51;M#O#ngy`dj1sT(XFK}GmpsB(;>H^Pa8iAv%&5NMq_N(g?dTt69^or- zV~xLCRNr9GsJ?E|Sntnva{df@gs;SnW&h!P{olp&FMSVt=Y8ZmS1@}5`sc8AaweZ> zJ0sf1y~TN0?(ZFp#gnQx1{bw|qx%8%(cZ zgFfo<2%W@@HG1x!^f&I$g4yf3uZ*}~nLqW(8>%;^`&Dm5yjIWr>E9;uX1}ao_%Hc~ zf2rOWomHI?@ml}jE!7*tgQ_{r7JadNIpdZCgPR8XD>OPj|*}1m9 zQ+{*Szq}`)gEq&sf9`AgWVgV7Z$ZYBFLb|?ji+^g8hM|2x4GPLd>#@1lj!#|^tY>E z*K6?m9_K+$`e%4~GP3UEwAN3$75JeaBl_!9?`b)2@N7+P#m{2F^cl?W0&2*ap?}V= zG5H*G_Z`~jj85r&W4ICeqsYhjmG&Rz>Dr{unow*IP*+ z-+{cJLR-8O85=j_Z^Vs=SNcmk>=${L%GrfiVaAP(@_s4#NBhtg^+rE=MBWlN*5uFi z6l}+MJ?rrz>Sx@zy*hvQF6LnpZ67YkXCvcA+^?)()-&p+Kk5{+ZpMvu^@lHN-rO&& zLx{X3Zmh|l?Kp3;-*R%^7&q3_4)H@ai0H!{wCjUD%2 z)5&?ueailmw+qrYX{tZTetF->eyKCo_0O{_L(akT1?lJJ)sJL9yl)Klqh9EY(98Pm zf-SyJ>i4mxOSgsSr*Tb$mS4LjPdi@SO9=8bUb-3;mGbPt(DmX6uP^k%vvEu45|>^Z z@b`5An)O_t3~gn5Ts?B8Z$WMNme!YI5v)m_{JtJ_@b`Mu@tf;WM+erb=G!Q|8-3|; zYkUpk7JeXljQU7fJybDgeJ}HRMdys}SRrtK;J%Lf!7Jwc3O(kZ`tenItj~^XrmX)~ x)(`dfjE|O9&41Qg{tq4~=?{wkKz088$q1hIa>@F&&wXk8pEt6K@fe9?_Yang8#@31 diff --git a/sky130/gds/sky130_fd_sc_hd__nand2b_2.gds b/sky130/gds/sky130_fd_sc_hd__nand2b_2.gds deleted file mode 100644 index 78683adadc139040943565f19fa1d861a19f2847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6708 zcmbuEU5J%c6o&Wte$P2`Ov|B~v{EQUG)lcNQEWyh3a2JV)6&pE6HydNCBh;i2tv{e zO9U;@=*NpLx`?nFFC@~dkdW#kg361Ef`S_Qk(%Cjt-a3o9p`+T)C0%o%-Z|i@7inc z?^l<(D0)Jqq|SM zzWz}+J+0Q>mSuZ)?3=gXp3$vaM)y8Bx^2to=&nt>w#?r=I^VgZ?p!u0azDH5y2v>< zcS?+Z{ik(Ue~`@+`rC-VlIsiov!b8k^+(3X$KP|V)^9}bHTWJeO1!M^@6^L@i24%8 zRNpiXb@&f<>dn_^zQzgum+4EsmWTNoJN=i7f3Mrg`nB$JF5d54{$s(~XU?S@%aiTN zz1mK?ap&q63r44q!?(^E+0Jo|(3k6H{!8eepT*bG z!ST2jjW;pQ4+ZnjF`qT?@ML?^qwQoq2kn0sjPJzXsGTu-4sDo^QR;PruNO#t19dT` zUuqsk_;t%y>YuK}d|yPZj}^=ZQM+9j&$IR~+SlRh89#{MH^bkPK1qh0Jy}nVYsC1K z{&L))HqC|b^o%B9J_j*hPsZbiwVjL?p$)Y*%JG6`rS9X_VWY&m`5%z|$Kw^X=BLde zjE}ig6kkuqIhK)i;eIqSF6Rm3Sl9Z<`K5La-WTzmQ82v= z^+()@_VWCe$?-MUpI_d`x~|amYx8$ZmT}{Xus#}AeVc!(J~9qh>wD&*hSz)l<+88$?Ua9ACRGW(aIKJ9Et;bi*I5nUj(YiG*m591E7&iv$ z$9}9I^=+bV5;q3w$9}9E^+wi>abu`{(hqf`p7kSHH^z;j`tiENeOG_2MC2`TV<3O_ z#z6hpk9DKo$h;XhhVoCIK&_}x3v%BuZVc@o>4$woJ@*gEc{6Sd&VMcX z;`{?yK^!*;;=hrC7S$-EgihVqYaedPMZxW2WCb(6R; zuzt~MUAO3;f?PMojiL49b&mCmc9)2{N!-}2e!Y7AYkrK{Psa6jPKkXuA2M#7+~xdd z_orT0$2};=A(I;TNkO+AwZwifvb~9zk@4oZwv&uAA0x({c>eBn5ApsadJDd|-bXVF z=D%V7uV7zz)*jJzBkvceGeX~Oe7V19VrO}Hd!ML#^KhaxV8n^2>Bz24%EA$8C z{`-{b(w_=a$NOa?^W%N8k@5IxZ6{gB^!b9UcQ#e)O|m^l{funS;cKkOPwRvAivQ5{ zGIAVSM-uUJef9amKi@^0;X8sptr9O`eHb^6RO|U%ko|@4+XZv(2|h1)qP^0e{nB?- zZ_Kb?WL!_ggL>vq|2B~~^~_%w$e;D+v7enT7@x%7h#S#f>EC!&eVa>4gs;Sn0so$j zs%zolo%su)lejUU=kp=!R)4A>>&Lh;R6lvXgfI2<7s6NK#!mkM|9mX_FWHBEiesY{ z7nD7ZxDoB;`k7vyZ+pH#tv*EUcNfg@+r5k&Jkw865A-vlf8}`bR`sQx{v@B%qn!nr zFZ&tMuRNX}AO88IXPtjei;d8&K|bq@5)bHcEDmXX+8k3o?~yqU;+6VzOntNCM)ggh zWgfo0QlFnu|N4#+p_RBX;GdsS-}(-t`chAS-(Km@`+Lrt=fpPQD{*7Mzj07~n+uKV zOFjL4d!@fSq`tMqCBj$Y#(=*&q`tMqM)jqh{=U7^KiZ(aab6;PC2kD(M;p{P&W-9z zJ^g)qrGGM8eUl3%!dK$PfPXSueUl4D^`)NvzP-{vg$LI?J6WGVONe4ml>I0Sia<;RG4Isg7bk2x=cuFttis|xmP)VLAtW&H-x+xrctedT=* z#-cy3)BGr$NK)X z*JU#!^s7(CnZ5Rn>*d`LKXjM3Lnp38MI}}Eh!<`*=!J9bjgd=Tc2kZ2-hw+9*P530 z&tOMX(xVsBo7HS?=g$URCaeQFS7Ef5SzN7pc(>3F@6(8u=4qvuvs-L*#6ZF_=)UUiukNw$o z&rHyJ{|AN#JM#bEdh>s5Rfm4H_|L7L|MYa(dYQf7zxKN?YyW4B)DxG4Bys-%Hht;} diff --git a/sky130/gds/sky130_fd_sc_hd__nand2b_4.gds b/sky130/gds/sky130_fd_sc_hd__nand2b_4.gds deleted file mode 100644 index 1cc09885577917c09ce611d805017dedbe008ea1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9202 zcmbuFU5H&*7037eoI7{!ojWrbE2E*bXep%uKOzK)mLvu$q{b$-+C-9}G1!)rfGs|> zKKSt>K?{md)S!(YZ7n|dqENvKmEeOSK??eym8wt$D;P0U8zipZTKj*_xtX~;rnxZr z-LAF&`@i-&`<`>|xlR4lZr_u(w%T)lPQ$d8=F(f!4bAsy)b2m{z_Ew!edv*tRy)1h zcAwg@@8?hd*XuTSKQ!#nZDtxI^-)(`@hfqSJUt5 zpZAM#_VRk6&C|ZC=G?6*b$*eO*n2XiUeEqA89(=(7!MgY_&`na!`C7Y$uE4jCi%rZ zk%#0LU#Urc`FoLvz2By^^3R&&eI4S3seWs{zF$VRuI_dle@BBCQ}VdDeN+7x)i3tP z(r>I$ne7`>n!Id1%OpO2f8-(Y(Kl<7?_3voNS=O+<6>cbgKwD5#&t$D`=7P_{fvG1GUvZ#^Bqn}WFNGT#eRUDQ;`?brO=D*U&j0* z$HRTai?jRBac5rkk=XjRdE0&ziFX$w5Aj|2S517!HjhYt@}9^;;_Ne#JiemMzgho( z!v0u#Df%+8^9TKb^lkjrn#4!@BM-?B@2p9F@M`2C`Tl=ulJET>@{s<|-(HjT6BpZ` ziupyxQ>SS2HP^Gp&kx(;{K)6okB@zxE52x-P2%G8e%hdK-5lqGigvuvbG)24&-Q0s zgLAgN^EKz~(n4Ic{LK0pH)rcdFAi=By=d{GzHjxTuV{5MZ(l6b&px7WD+e32zIj|M z^pEojeOvlcgXZgTvE=`6+sC&4m2cPV*!q_(E?R!(`Wc5m`ikc3ak1c^Y#(y`T8C%qcME*6nez(Esjx zW8K}qH29*uCoUG&-~DK;o9hF8fUKLiSXw{hST{P6_4~Y;rS&t8eTTlHt=r>bY5k^W z-=P=Tcj(2^{$m_{M_)1fvj1{^=Kky1wU55_pQ%aTh>NBEF^;~W7wMnRn_21~Ew@qMtOt=r>bVf~C_ z-=G)SH^jx#{$U*F4fGYQZjXyssGq+3_t{MPj$SPF-^W?s(bIoO--(N*{*UbZLEYng z|L(N9JuVjN=X)!C=X-2L>$}IrLjM`ZzC~X#>$rc;`I*-r^7IeANZ*KyrT+Oi>l=Fd z2k9GevD81#Gpw8QPerTScpSViij_9@iPB-9#K7CGp_^IyIl=lG`)Q<<~f7& zz*PNH`uV5K_etyboi+O(G;fQGmT#_qgC2kM70nkt{?04-bMJ~?>^vPh(c&}x$G3&= z_^%C`ugArL|6~}t$qySeoyWz3p667od-*dBn$F{5LC^IHy+1D#P3LiOS|8v4SJNFl z58;{CaEBd#JO7Kli5+))P9=6*kr&egp%YEl>~EgGHDdnZk7M59TWT`z{2O9^i0|Oj zHObF?BJz-Y|93UXv)4uPJ^K@hcm5uENZsT`>P9aTXMT}5z9Mnz6Nyu|NSyVF#96m! zbX3y^{eg55Gr)b){Lm%{bv;Han_L1=I%r$7f9v2J# z?IYpanG?ewJ^ndA)4zL5_;z1t(0n~E7W})ngm3o+F?`YEpYt>Qd*(s^`%g4zF^`J{ z|K5f0?LQ%gFM9lQey0E2^Wi%<(V%HPE*AXfo)6!_2{C-pvHH213r8a^TE3}2 z;(DF`Q;hZB2W>9u;5x=D==r98|FquDk$(!EI6UL>>UVUDH}&gv{V}d%pB?wj?Cp-Y zXnEJq+iBK*zmMOqS5yDSwv8K1?33SmDXnrh#|w96GhT%XB`SNlY7|~}t-G$Bda3`$ z7XQA9EBffoy6vy<)XQb*Tcue$fzCf@exvLn88!x3Nm8n3U%5ohK0vXy^$|7FKK z^c#1~2EFZ1^mksSx81$zj+@rMT>0O=fA3W9{y)9dFaM7moYLRr{@Z4+e`{~gVRz5F TU+>rY)&FYa$I@;HyWR9ZpXw_K diff --git a/sky130/gds/sky130_fd_sc_hd__nand3_1.gds b/sky130/gds/sky130_fd_sc_hd__nand3_1.gds deleted file mode 100644 index fd53e127a065c1793f2295a6a7f2e49d66de362b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4486 zcmb`LPiS0K6vof{JCkIz6$WKAix!kpj5Z~UQi3{3Qv{>YSgSUW45>j{ELpU;sJams zMO?WNtc#9dE#ktJ=*pe$q(~PEB8XjyMco8JY2)|ZbI-gx&CIn8K1hC(bMJS*bI-l+ zzBiFl()2|cPtw{|8I_jQuXb;{gT&3$~#iICgq)}h)nFv@Y`Rt zN&P^McJ;Fnf8}@K$LrfpztijAL;rb^q#bYr3dW7|efrn>^_!cUpHgpx_NeNWE*|>N z{lEGkZ<~kZZS2qgkn?ZKDb~-`i~Vr9`H~n%mMRwCV}8d(jBL;T(sr`;Ad34_MYg+f zjT?RSGk;ybb&>Q}jQ>Q%;vx7WZbW-nzdn7o3f*=1|4@-S#*Jtnq<_-p&voMbjOk-K zf1_JRgp|6@wMnCk4;tUiuegX@u43cW!Sg8`m>B|1R#;Dddm) zy+@oK!nkoNo!1KgYPU7#2*b|=a{DjU3{nq=-kDouH<7Z!2B9iQa5Y&UXT z>Ws1R)7?5w@=it0CwyLU9JU+jL!A-%g!#|-=dnHy&mr$`QQuE0j(iR+;zqPb_41qQ zjoGWJHzFSD^?B;whl;;Zi$&-^3iuClVcfVlT%SLz_h$G!&MrZVxDog6P=EHLKlMGr z*Tszy|MWO&kJ@F8iaZk-H==#0Ki~U!wj}L}%$spzEPwW6-qiPqyj|QlD1ZNam3OhP z=AoYs$oDhGjf39jdV2pJI&FmZsOpt2zIFaypDwF!RtpGU7dJ-y(`EI|YDV>^p8mdl zsDHj!ee){;;p^hYh=0CUee)|u^`)NvzI~{F0T0%{ybusE7dJ-yiw*THFBsLAdiwkJ z(0|e0|M|AR&#d&FAFwHqKi|KNV=D;aG9n)Ow<|qzo`tRj{qGgWRy1xzd#GP_dfR`Z zeck&p#$q0Pw((NB_E5jjug4nwqB`Sf*U5X|>ktq1ohpCrmtFS0p2dvDjc9lJ5iB#l zPwMxvrj)x=^sDd4aQFQzP5X99clT|kdpjyRQiaQT;W(lf&f2?EDWtq7;qQABv^VZ6 z+Pl~hSA(v6w@+?J*(#51LtQ=%(Z^I{+PCeEXMMSf;JjP!^E$8d zrZ=ixZ3uL*?acCCLD@Wr$0(WvfpzdVbnQh2uYTjnSvfOiNugnBCKwri-@v_ z&?qlFK|e%AS5aMdQC@|J7j+XvQW14gfdom|`+ncNduE@rXO*W7+h_dNde^(YZ`Q1t zJtt%#N$w95wWN7Ebi#OOhO5IB<>SyxvPbsp+W)}*gCUHija#RmU%BqfcYnKi&8OGT z9^H0tm}pdMC$j9o-h($z-Z1mf?wJD*&OE$(W@g_5`*u&x+!X4q5VC#}eht~8B!sZy zf)xMepG7~Jl&?6?e~!N7t9i&*9QME6{Kvv0te@3wGuU-MGJQOR-pd79kIuBW zleLo}wEiq;^+L1L^H{V~w0OCG^8Y~oRwr~D5P5`co)_8p8eUrqvfe5D#pX3Qxo?Ib zGTyw++eyaTzZYaX^Aj6yd;TKhwvNOzL+4NP_w|SQrKd5!I}0|h_4$ivAC>*oa^!e6pZayE#U%PaTH;w8GcHb!)IZJnbbmmtP|MEIg4r{; z@DAgflkE-EMr1s_%iBrD6O1J$PkFn@I@3o)zftwEeCR_R`-|!G?k^%O;Y zU5u!M#l=ze$oGfte&{w}y-bt{oyElsBm4*Zi|cArB|^vjh3CT<(f6@F=-)qGB6JoP zBl={Q*E#JK%kGcW ztvCIOLSO&h_cKxVMG^6G{kIS6v5&8&Uc|Y?-ph~E;${6*et*IB>zc-R2#YU6&2x5l zcw9uhtlv@S-G_Ss_hYfU!{Z|2Wxemu%KsJL=WDA zmHrKQ@P3*dD-kh^ixL0E8TZYOiSA21{qy!p|K{iJ+uB{(bx3yPvU+U?f zw^#bN54mq=Wr^^$xES$oA9CN$O3{6(r+?mF>EFfkggxiremo$2EiOjna zK@a25mwKngEB*UR-M4?DMEF`-M&tZ*xg?)QT!S=_{ zA}*pmst>=oUgYyJ^&;Yx`u64S+kdqneHj;H{_ICz>P7l8F3$0v8Ok5B6t(C6DK@4N z#79KDJpa|X{zX0yreEN^VeO{Z7vytoawYUR*P5ymuE;q3 zMaDTV5#x`Vzty+Tb$J!8E9~bY=hr>%^CvmK&SwSL-hoD>FWW`>QYSLb@x}BHtS9)2 z@SQ(D-9JCV+Q<6g?-H?n5Mv=OB3`YZMJ*?x$M2&7zlEN0arpV$*I&uM`IP&MEnfSa zS5CyM{n0O5=K29ox;_(^#r3uKTrVb@TrVPC>CZl_8=rke){Sv7RzLP*-qefC+s4fq z%b)$2H}wM|Z;OkO{MnDcyQmk_+*h3Q`)la@aSbx>`kMurH{)U~fA(YE)QimD#?2Ya zpZ)mznfd{dx5dRs{`H@roy4{GN{Qd%m~k<(ej7(U@9d6(%$spBmOuM3Z|X(nZ{y~S z<7ye%$9@@Ky!_ZNBI85a?+T>sf|uUqr65>Ypci;?>A{SDVo^XG!B8{=ZE ze)j$c^QWHmvvDwg8#iaHe(c9}L*0O=o5jUQ{n~4N-hBVWJV?%)aWOW3_T#+m{Z&q$ ze;YSvZ2s)Wc~d_i=528?GXKs2KX2VjOT>AzxEMKq9Xz`*@9yD(%$spBmOuM3f9gf% zZ{y~S<eu_w>(<{= zkac5RjMb0*SU2iL*3ZVx8LJ=rv2N54h`L!^jMR_)SU2iL){Sv7T0ivTx}|==+?Vf5 zIS%5s|Fkhh{C&XRkB^1y$^`f6)?z#**1ij4d|K3J(M~%$4^?N@pP@lh;dL0j@UG#) zBs4;HQH}pzT*J7%OBz#G*!Va$SFDx#J0Tm-rg5+Y-}6x?pP*73souIkwR9NMCzh{mf*VV|iKCJ)IRzCG>*RL5m>;G9V|1BGb^qb6o dMRooYjn(+8iGBRK%a6x1{Rz>>YofsQ@DC@uF-rgd diff --git a/sky130/gds/sky130_fd_sc_hd__nand3_4.gds b/sky130/gds/sky130_fd_sc_hd__nand3_4.gds deleted file mode 100644 index 077487d0254918b81a199bdf6d846708435d95a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11280 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 K>so_b+5Z7C$Swr{ diff --git a/sky130/gds/sky130_fd_sc_hd__nand3b_1.gds b/sky130/gds/sky130_fd_sc_hd__nand3b_1.gds deleted file mode 100644 index 0c46cfcf3a4e615c9af7551cc55eda51b7b80f1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5680 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 SyVw=Qalb diff --git a/sky130/gds/sky130_fd_sc_hd__nand3b_4.gds b/sky130/gds/sky130_fd_sc_hd__nand3b_4.gds deleted file mode 100644 index da2a3a390f016a117444617c45fde4247a0cc7bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11932 zcmbuFZK$PH7035^z3+4GoqOiaJu}nGP$J@l#RMXv&5VM`UV z^z8jlKl0CWF8s||#~!%+(`iR@)Io{S&h?6LS+wEuONYW-JTznJy+o;Y#hCn>e| zh&KC>ecvm3ys6(at~bB^=o>s9`dM-RnE!?2dijd-72oE6lD^@qJmf2m`(NPx!}L@7 z=Y2br()KIE4|a~Gv~9U2{n&bIjKlWMlvbXp$@uU?F%B7D-d&UN&LuGp8E;=&)BA11 z!RW(|Cq<7p`=9e~%`1QJvrVgLePDg|1@<1c?_N#fQxC;BoH{e5Y0FDweD;+XhtuCo zY3}1#C^r!OMo^iL#CUq#~dUnGC_MI`R$Ts%H@zO=tL(x1@{ zv5)f~tJ${PHk)6?XDq)L?f;qSgym;@BobeJUyMWItSj1iS!aLZ`fB~mEC*vaZa2`bRb06`ob@TDp zoB5}sj-}fhv^qR4u3wMqyK|8T{U;yTdfwKuxM=Z-{oMSk@Esj)(0n~EuInGy3;RZ2 z*hjH{N9?yqobwr!JrNn_yopnPi2jPir{9Qih_3%;O~!kV#W-Yt zxei74pSZ|5=K2)b&-oqEABc{+MO(kw-+l3VnEUgxd7W+Z_t)$VtY7DuK9ljSkHk16 zzH)y}##cDInT!vQ$2cTDT&v0W@|GBf-Byf?$#O?05@&spIQ}AW@)C)Yzet?=MB<~D zV;ow3>+~nR%JsN(apb-D^P1#8upW!lH?WvUe3N;K#21dlI3zyL>suz{bH9&qNPdiq zk|5TIl-m@_d8SmM*$T+XBB7I?8qz-f< zan=`!<0}#;Kan_ji^QoPFA? z>nzm2vNL>Fo)N>>@3+lAk5BYx9(`~A{(!H?#e)CbW#K#D5yOA(GSTA`{n;n{w_V$y z`FdO|_%ECmx&?a;XC0^MJT4aXk@v!LV&sjU{aZM#od2fR!*}pNgXZgTvEaYy_3#}$ zAcik`{PXz4{w+QczDw6NXucj73;v5wgzwUIV)&xRKaWrJ-+VND`Td;!JI&YQV!?m& z(ePc~Eru_8{PXxk|DnyncX*;f^Yyq`@E;xu-=Tr$Hmrj$`k==r`g6|lpSOFtistKa zaoqo^lkY!zrsuvvoV&`r?Mt+H(|=E`x7_xbZj{n{zEN}Ts)&mx-5*}*dcFUrnCs6+ zY%TKOzLKw?k2n1fjO*<^@-LwiXOFqOdTwU%rhadozsnRr|HI?9~AV%Z-s8lt_Dr- zaj~FpUlTfi9%OkqP3Lj3pkFx<`W5>E=((MhJ&f{W1 zzq&1StG{c|bRHMS_3?ZqzkYGw&^q1D|3ZV$$NdD)zw&sqe{a+CoCm$gYY{rp;zfNw z`&Z1qeev|Nek%Km)7f9Nc+r2_?tRE#oVhLX7cD+fpB@Wc%ihP(Lv+N&jr8P=P9$$% zH?x#K&(rB!`#%j@-#jiB`o}zc(Tn&K7dP^!ZuBB`qZdo{xBhGAcDK#{af2^eKZuLt z&riqBAAREd(!YvUx5vdo{mkRsq8B;0#KqG2rA~aQzhdq?*H0dwcz(L)Mcv)MH)wTx zTrAYzy(0R~^K<$S={s?;)PLr&@90GK-Pg@5?LYH4f9NY(-5wVU{bwG1LtioL{P}x~ zPwZdM?l-Bs|7cC>CN7rhXC8H<7pdRZ%`DZ=JnBYY(en4WSg4t>ev$2{srU(xFJxLBy4d7K;c z6|L_c7YqHLxhU$MdA%le6BkSMGmrYwi`4JyW|rz_9_I#qMa$dc;s*KCH}n;)Z|Hgb zbQb!@IOhhv$hjddmd=m=J=V^T|2;O7z7ZEo{bL^chQ6ZJ?QyYC|NM7j-xkiPi7#=n zW9=# zTrAbkJnHt(lVnoAubWw_pLx`czM|Fbaj{VU7SodV7Mm-QH*v9)Kl8{Ry-5DPZe}Te z=5cP(SG1o!E^d%N?_20A+PX*WI zG;Gj(JuVjfSHB#68;xqxH{xQcf6SwQ=tcVH>t>ev$2`t0`ifS!$Hh|prsv$D7ddz6 z#nSm>9(_k&G5d1<^7zE_$M31+&F`-jP3Lhj=Radp?DLxOdBtJs?`+$==|RWTe@;U_ zO~KdfvFfkz?)uJDD0%j6U#_x`m*Hj4>Q>sRm-<^<{JX7Xg749 zFF1wF`8-8SgrS89La{W7c`!4tD?Hbmr1=sVaUwtUt Luf8eUo^JXd4qaqS diff --git a/sky130/gds/sky130_fd_sc_hd__nand4_1.gds b/sky130/gds/sky130_fd_sc_hd__nand4_1.gds deleted file mode 100644 index 17eba2581a542dd19005c6e33c65f1f1e88f6fa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5348 zcmbW5PiS356vof}f0IV7@Tfe^q6MW?qqRgRB_c^06p2P_t=dBJNE^hG5~RgN6c^$` zL^o0p)I}qxp}24%Qgzpb-AR!y>_$+#5p+?IAZRsy-<*5iotNZ}CKq0QH)rOX@0^*r zf8LW^;`likjN;;&^h;X`xl?xf=Q0rIr%oO}J$rglq?Ke3jlH>l^3wA40~25FUHahI z(=wPfYX|fE%>3fM;rlz!&vnk6=)5r3=`74H%stTACuu2?-xSMllHVMQ$k6r#f2*Us zp(kYjlAas!UwSJ(m44Lew^#ai(SK4T8uhpW1>?ra9{tO``qkCdPpLOTdqnk07x(=q zdi9>KAPafBH zlJOXNWA;7TjzUwB<7U@&d{S1`*NAq1ek?z?zQqOTu2p$fq(9?Ev~Q$;%+<$zf%S;a z*JM6&O!Fb#Isr%;xb zeSo7&>=Wk7eM@qlqoXw$PyWz$vbYENVU3JzFJ94hlJW9vO}4x1$hfj$eh+eflgsc$ z{qfm^wy`xzVRb?Yq)+An&mCdX&oh;jV+8h877sJfmpuj#PPN0&c9&$w|o ztj~9=zRT}apBs0F^_)|#hq1g%^+v>l`Ine0>WzJisy8CusONRTy31LQsN2Pjf%;v} zsGqq;M%3-%#z6h-7vn>{F~K?GM#P)*M?dzZ-sqn*hEGt>d85Y2d85u4n!oHT+*eR{ ze!?T_c5!2%e)gjm^+x8xxG|K!>xcZQXZ|GfX51LeKht&R{e}C$5$m2YZVaryyI&xG zcfY8}ycsu!@^}4^H}%Y)WZsM$L-})$FmK*3xt@^-s-O2MUU$6yyF}hDZVcqle!T9eH*)S6H*R?Swd54< z=V^q!g8OaqP0jxO_bKY{uYH=?~U|LjkApGV)1YVz7-+=%u@ zJ?o^N^&6>U+!)fQ_o*(uT9Z1)jcfE{)%&`>AH9KGzeW8o)$IEM^M|+*?SB62^zy6f zjS0r0-iWxb*ZpVjSMOk7Pa^jbk1NnKZtVTOvPNHhPZ=>ndqnk07jN{Br`0zpJi^z- zjRF67T78qksQ%Q`ziMyvPxq*=yI)`)9O3KY#(;miM}5;PM)jqh{#ARUe+CcEe}2v* zVlHkB_-8BXo1ZhPFZJ}V+8h0OpK;$0<~>5|;>Lh~aZ!ECd87JLPyedj_dn$Jf4b%G z`!hY)4{S2bAHUxix6L4k!-%-=KU(XN^Eh;ETx(y~+%}_eBieoawA0)5Bih$}zrl&;;^Pxb1tM}AhFv46?Q#fZ4C@6`EgzvOb|TQM8cxDoA6--m66-&^$ehL+^J zV)QF-NpSW5C@sD%@Stn;tIH--R8ob*sc<``7w#21V#y@GE#lwXBeW0Pk&W(TM;rrm zjW0m-iRA74;1<;B>&X8fsxkeW_U1E2)p)_$v>JETD)WggsLLIu#)A3Y*r6NFTKhd7 z@9V758*5dz^Jku1Q@QF#*3J4lJywAFsWp1+kj?o&`&3W<|65=AKQcAZqd)BYhnn*r a%*OdU4-dD4^i&4gx&64P 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 HW;6T`1B7=f diff --git a/sky130/gds/sky130_fd_sc_hd__nand4b_4.gds b/sky130/gds/sky130_fd_sc_hd__nand4b_4.gds deleted file mode 100644 index 6496f0190698053c78183dc792bcebdea0a6d698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15074 zcmbuGYm8l0701s!?w$9mGo8+D=g~n35^B(tgb)Nt-a5==iYm!XcxV`pDgBkdIw%DhKo)yP@G(Bt^Zz(_O@@j@tRw%zUB6!nCWYs zxAWjxyMOigzs}zE)ES2!y8L6se5+Zz*lyo?;Pww}fB(v7u3NeF+LarwTUojJ>YJ}S z^O}`2i=uz9DB5Ga#ovqecyCb@+a~+$zv<_slj9dSd?M9$SqOV)IVypx;!qfUEc?(Z^Laim*3i4 zTNRmS|A@^gk$EyswDI-*qJH^&Mn7bAe6c7xH&*00#6`Nor>>gc3(b6Oo97uT$( z$Lm@8Z>+=OlNDK~`5(r5LDp%@^%co8Uy=OWQsg1=+2xAlXKal{@{`s>k@&>jk%z>` ztOp`_`XLe@-WhpFeDKYRF(RyId5D$80`{#OJS$JS4v5=M~BKT@-mpzW36K zem%2vFs?Hvoh*8Mjrw}7WdHm1^ax_>k!aT$j?Z-u4xDcOuU6!|=6n$uH}FV|hm0Sz zd5YwRUyD2>KJu-Ko1cw5 zB)@P)Me>VQpGbadst>YnmcL(-y!TN&vgUregMOo9Uosz&>(8{+FLIsPGG+^s$aQgH z#MUB__~O3EL*iR6twU^2v1ejmkAJ#G>$%6p?)}}RXWa(v++dx= zA-gpoE?T_NpM8#weJ`RTE}lp~V0#0-ICx6vMTh-p3|1z#8`Ik(-oR2BrxPOXYMBjUEsL}fFaWT_> zuCMI7-nS~!cj98M|9*Y8`q9&WKaSP!$4$)jpK;WUuB6rNaWT{X{&S=5{=d}tiv3Pp z%+%k1Mbypf34MUnOseQT%d7o=~*#a#awN8iwi^v{o*nCllXTwwr@NxX7&%`=sS9mz7rR7{pWs#{&Bw|(l_E_u77^NWBz`>lSu#kxQV&`F^;;? zm$bS)E@tXy9Qy`+N$b1E#Z3RXZ>H{{H!4y$aWPjv)$jMS=I{5jiPZ1MP0ZELIMxk)NvqrAVy6C) zmt)_I-c_UR8;^^b{WJQ_sC(?}iquV9%+=30)*Zb_{eIlUT>Xq=-O-n{x;-vt>SrA5 zj$UNliHo`Q=ROl(?jK8wn5OUjKRD!oKDG zipaVV7jx^!IM&VI?|`Z12W(U-KkJuYVIXB_K>US!>fi@Eh<9DPGy()#9c zF|&T$C!^#3xuoelE@t#wpNqPe57cONdtA)a&-+Q%Z8^REK-P`8m|H)_v3}@8*3XZd zm|H)_vG38Bw7NYm=IS>+>xN!r-O!7<^>uJ{ZvXf=+rQ}9$B?>-i@EyeJ|BJWEY|pnef~&X%=CZmvr%`aQ<3_K zi@Ew4$G%5j()#XkG1Gs>(LeMeeIqXB`sd>gho1g%9QsCF%=M4Yz1TN=&Q;Rp?Qt

    Mo;~ax`~Uq`Zrqb?E8&YtH`<&7jx^+ zIO;}U((3lOn5my}>>KnY?RSrhnf^15{-GD?8*wq$KObj(Lr?!8eIqXB`ZxWx*f)HR z%KmZMF+472=FjJr%zN5;B{FZ~Vs8FE&gPAt`9tPST+Ghjz7J&GrhikT9b=lfm|4H6 zw14@2hxtS1OgQ##|}gu5+B`Pk^IQ>k%#0*Z2ls35f`Zg zy-1wnip233i8DWuIP({YQ`g;B%3Ov6Gr zf5h_~>G`3pe>0!Grf0v3M@>&$+}l-umwxFZps*%;;yn8oG_!YBZh4#f;vc zo3Xx6e=77&({(*hlhIH9K6F!GsnPTv7c=^a;m}R|q(;+uT+Hal&I{exUu!g-$Hk1^ zpM$dcN9RNDG+o#8Q5pTvV|Fj|mR-AeekQTct~JC(i`UQJuKmwA_C5NN=I?Rw1pYj4 zq33pB`=g;3E#K(RbAI^t?5NRvJuY_p@2o#RH+_YTea+7Q+bZ_i@5DvR*ZsTnyf@)q z0KGW$Q=5y$MT=+k_;0u<{2{*R#hia}cj&m6=Qt1@aq&cY=8aBd-sr_u^N;mU&zEqW za*H&CPbdR)x-_wEnhz5y|O(c_=;jsE?og>V0hHJY!- z#f*RdY2n-dq8PsD@lW|i|CV{M@7fR7XfcnA8UNOi@NGXVhA(>jQ@+uE;JNS}JW!)) zJuYVa2c8Sx!2@FWqQ^hw8~umw318j=&4F4uLyc`Q{;enX|uNiof5PDcZ}uHg0gjuDm^eEN1w$k{?`| zjnQ4-o(d%@`*GE1c-g)3Y;Vyj+M9a#@8%xMk8Wx0*vdfr@y|$?c@Ozm(eAW&twX(J zuiWcbFW7y@`qi_KNPWRNX3pQJg!g*X(@c}57(ia Ang9R* diff --git a/sky130/gds/sky130_fd_sc_hd__nand4bb_1.gds b/sky130/gds/sky130_fd_sc_hd__nand4bb_1.gds deleted file mode 100644 index 6f1831d433060f730e9e2a518b0460ea89ecee83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7302 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 diff --git a/sky130/gds/sky130_fd_sc_hd__nand4bb_4.gds b/sky130/gds/sky130_fd_sc_hd__nand4bb_4.gds deleted file mode 100644 index 9f32bb004e44e8560db73419e68929bb16ee8a68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15134 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 XMURf!+QIKuC-;94T`%yMO;foCnu)Q3 diff --git a/sky130/gds/sky130_fd_sc_hd__nor2_2.gds b/sky130/gds/sky130_fd_sc_hd__nor2_2.gds deleted file mode 100644 index 6762ed12575a3e4b8b1c448642f225b53c8cc3f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9642 zcmeI2O=w(I6vywpubF(PEew{?EG+1v8g0`kMFNtf0T0zSKdGTs2NJjwL@8UV)4|-=$`gdN82Z!Y(I0f-G1)*rM>OF#v~16vg;!Ao5`+^ zj4{L8V*Kk~jlbm$*}o$1mH1z>J=c$0{Whn62iH#4N@+qJCpz;~e!$ zXb*~BXzjlLscWnE;?{9!+{$A76V`vzjsFc}(l3o^+?KO%74gHaM7tkKLIG?}dXXr6+N}V?)?7n`ks7HP$saF~kUx9zTgx2osW&Z8>MU%EL*7F#@ z>Fzj9#Sx;IMLef^BpC;9k!^%m-Pe_{M@yZImU$a$w-S@ge2 zkFm0T$CS_>6ur>e{rC&|Xiogbb&v3C?aF}vXiogbb*1>Hp8j2XssCh`_)RW)gkNh{ z2K*KZOtOAK9`;*sNU{@Sm=W-)vbaeyOK_*Iw$senI>;7Cl01 z?aF}v`UUaZSX7E%>gnILcl&qyXZj~{G=uSfd6*h|OH`vk|&`$vcHYwgOS|MuqnBmPR(zcQVG z9xo;A-Ts^AE#Cj^zJYmaoP@wJx&!kziyS!8o~%kcNqaJolkK%9| z+S$J{`VoD@uM+-y<^QR2FJ<~Eu3tqAj*Tl)PfE^L1N|zY z^Zify_b1k2Z3Nf;-#8=ntn8b? z|G6F>yCD1sQ!2z$4z~Q7`L@61LNl!X585m z9uc>-D+BTKI>t}El5x|n48_mu670{^ceo~c)~{Y}8DAE?l6Lm1guZ+Jod5bx={I{bC;g@`iGPy* zlV5VOU)q)QOTChI_N(0Fzd9e_`N)4i-{^Y2ug(Xs*3P3QTS7e-P*&#yh4o*Z4{-gt z^R09p``R@2FYd2O*sNU{cs{Sr2XJrT=d|j4z*Of0_zbWh>!>;(z-P2e*hkv<9JGP` zSV zJYTb&^;ew_AP0I*u!fxAxxG3cKn=&Ie@w@55~pzaNnA z-xp`D(PX#~$7kyXeQdM&708Btd^*lO7e(GjnD7`wvVNa(C5wjsMUi q1^uk`KU^OFP&$e4XY9+)qI=)p%G{4*wmg$n9sGamppMm*n12CQFKmYZ diff --git a/sky130/gds/sky130_fd_sc_hd__nor2_4.gds b/sky130/gds/sky130_fd_sc_hd__nor2_4.gds deleted file mode 100644 index be7d2e6828a590d98e0288d5318caec1854a6ee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7190 zcmb`MTZkM*7=>%QXL|0t2`tKL9u&-jxT0|*K?1so@q*E4jPVA^k{G-YFAx!l;)4$& zqCrFyG-y^qMWTp^=$i!5CnZP_5fMZ|Q3Dz<3W~&Y{=d$2PjRyZx3QvEsfv*PyKw(r`uYj+5fdGq`=kE~k%;VVC%x9;7u z=J(!sO<2~f_bw}nyLawhF?06Z%{%7qzG?2(9dmPc-nHwTxs@R_+94E!EF2EScossK zUXtVA_*ydUKakyd|5?QUHI|nCS@SQ6{-<&M`VhuuD?ADZb#eWO|GrWGv17;f(=Woi z+5Jw_tNH8xUw@@;%|msIqxG+`{K+`~heK$79K!f}B|C4Ue&`~`tMxDNhacgmCo;ds z{UY?L|3b^3j`>f-`d3%Tx~Yq!^&jVteP1oYyV?ED1^plKXInfsZ&ip~)5S!7w#9Sv zmgxEPGe3^k&cAWG=Qa*ih+NafM1JFR&uttMJ(qsw$MM?yCNjAHi+vSBGhIyNH;;O5 zu}}0|`k5ccYx7$NJh#2GLU>IV6Zx$Jp4;9jdM^FUkK?uZojso0T~#4+O&1gSojso0 zT_t)h{mhT!wfVgpJhzXtjO$=TuIXYTzjuS@_H)s5>1Tc%ugxDU_uRq33XyBNn8+V2 z_uRoj(R1l%ejKmOA3x%`6MHK}uIXYTfBcB&PV5yumwx8Q@oN4?JAWGg`SWAz$oYww zCf1FgJ7RAuM7%`k)qMZ_vGW%-uZ3?4{vS&Awz@82yz1XFa()KCcFD9DLjIfQJ58_p zH;npmMttq{i~8IYp;!HL$Im~<-r@Yk<{Hlzp;!HW{!WIE`1x(0+gPUwS|YPEuy4M> z*%@j3_#z+gfz-R$FCxcVfBHB{y|t+%#~W|^ILYxwuO!FE?(lIke*{0@Sd!!RGNPaR zS+|Ih&5O?OcFoT|$8gz@>ydq;?{~6=dh%^0c@8w^e4ONXf%{qHxIO2HM;Fca=cC6k z*BN;6@HFHfD2BQ?Q}1tI>b}8q6~bq_xVZl{&VS+@oPjSOA3ux5gLp5jgGin0AyVf$ zh}5|rV)G5;Ux6M)wz1#Y6S4I;?!Bjw8A*Ncq>q!W`@Jp^@4MLkJZ$xUhB`jMx%_=e zX7?}f8c2?_Hj(4Z6q_&M9J&PcMsj~~-NkUs*I&#&_4OC27q6lRk<{C-;5{O#cX-}K zQt$ob<0SRLc_leMfq99jyE^~1Bj>~W=ojuKuE&tP*Qkq|(*7p$=@)G-@Qcus`PoD6 z7xS|`Uxc3YkF9Y3kYBieOk7d#=Q%{*_?`;kGhO@}fBT^O#m;W`i_mN9=l)_o_ur7n zHC;^P^E&pOevy5*eH)qTKd>K?T9@xG^D0+Y)`E}m6 z##n{uo9SYre|)auy775SSAjD@jCX6{vpvf)5S#pY|YR=TPqQLGhIydk9&rF<6aTjH|k=l zf4q+UqhDnI?0q8_?cZdu=l8*zIOA5~^Zw+L%`@@*Fu)ulIo`Y1$4Tnl+e&i0bI8X@ zj<-K3$?-PUL=5n9T+DI)(D^h2DB6Zd;Qs=xx;3!=i2go* z{}$mhT}=41?e5F_6~bq_82ueg34b5)zb{ON;?xXvwkL8_|5cdeZ?k-L=i|2r^Ir8o zbJ1zv)u4=}_z&eU3%xoa3(ZiRIL3cZ!lzW|pWK|CvDeDbx8I>JM(=+Q#S{;rf9=lR zf$3$s*Zc=}?=894j=E=SDxZ3WuV=k-{N;lEYEKo{UbU!y^@5o%@S`L2Z#d46Ra&%j zqyBH%ck^GeVckgY{;^;6Uw8G0f0N};*Vn(Sxfb8K*vnQi{@k4^;veK}C0pofBm4y* C`dWnm diff --git a/sky130/gds/sky130_fd_sc_hd__nor2_8.gds b/sky130/gds/sky130_fd_sc_hd__nor2_8.gds deleted file mode 100644 index 197267f900b6c9a581ed2c69a270856f90be23a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11542 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 diff --git a/sky130/gds/sky130_fd_sc_hd__nor2b_1.gds b/sky130/gds/sky130_fd_sc_hd__nor2b_1.gds deleted file mode 100644 index d144062cd805599f8f164b799dbd464f0a80a7e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4398 zcmb`LO=ule6vxk-@1##{;L-9lf<;{fBQ-`STG1p%{D_UluV^)SSff}{6;rfSLEX3z z1T7-cc9E!Hk!~#%-Pnz;#6@u>1+m~pL8Sx{EAjuo=bkq+d2gP^IxzXoJNN$2$Gvy% z%tR6if=6Vq7NlpTUz(E2RdPk~TIxZvZ||O^CzcM1G{X3n@i%u&eR=HH8z)b0Upcz_ zK^cszwS!5rfAQeR=yk297h3zDY(2BkYCZS-()D{O zdA%U}SM=J5U(o9{ij4~I}2Qef_CFnN&j+LzqYn^oO&a)52;@1?8W$# z|F6D~x7A^J8_W5RyZ8;cnd6rp771U(Ih!+h8}%%S809DJXGH&EJstk~PQcf@BF6Lu z_&Wd}p7Gb}&xn3Sf47y#2NO4=^V8;^I=+!{rdl5jsXjVgAau@d?4eIjiDbKQE*AJZ z@~7Rnt2(}59R+`B{>Jc_=5K_(v;JXSpXn)GSJ|Rb*B9e+efjntdR-sPpX=Na>w2<5i8DEE_d$3@zjP_R9F|$GFLIfv`Edu}6H)6ZM?GHlcHNV-I~Wr+J5| zQS%PwjLu$}Kl?Fmm==h*&Ti}xUk+*94eSr4@fWNg#^1pHRMJO78b3O1)Veu-oIl@Q ztbfMcf6;&5U+4Y)(%zqAoG<@X#Pfft{7o2>RapU55G~pF&@|WM%asboj+GU z`Ym9seT(_OJ!gEa+Kp(h)Q4Z_y~4hnbCM_RM%cUQ_wo7Qo~u|V*`0{#8C-+=`77k( zsq0AF86$iR=WI^4yTcLVeVl%cPS-8|Jr>_RhtaJ~tfz3%-;ZE=D{4EDllO~z4=}EF zt?zN?AA51%2dL*j&h#euI)~Gf^>F_&${PA#j)XipKNW#4X)MvO~Si7+gFOrOJguPmSuhyCTQ6R^g zcH?NZKE6`x=er5V!4Y*kyRk?8oVVmz%niodm~MqH&Zj5rmHEq2&71c-=gSd!JG-$* z{#>KM8_*8r47dAx(G%^J@u_Fs)VGPco!!`@{_u01x9F*yoHyEyz2>iW1abN9IhivU z#5L?jv{&bkI9zv(Z{)gjd3nNKsppux6JyM)+~@`Y;Um9@Outh9ukgRhV58 zVzqoP4equ)`d47oufh$esC3Uhl#b95(qSw-o3{iKOR}}bzn9it7pY$skBz$H2B{Cm z6Q5FxqwX@mUL1WaSu>evO<$m|YzuPwP?Bcy=mmO;UUgZ)6JAA%^^L8sk9DBF=3yR3 z@|rNJsOjPR@Osv%-lco6oT5tK!-e1x`;NlNg=a2c_ WjhuMs{QB!=V*jR4e<{W#lD`2F4;NGb diff --git a/sky130/gds/sky130_fd_sc_hd__nor2b_2.gds b/sky130/gds/sky130_fd_sc_hd__nor2b_2.gds deleted file mode 100644 index b1ec547bb02ef8110467f783d016797c48da7322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6074 zcmb`LONbm*6ozkCcRl(MO`tK1&ccX-(MTR+7(#r^Oad;Vqj{-`Oqz^A4T%Z~qVb6f z5iwbaQGAk-s6pZbk)RtFL2wr�M&YU_ckTa1(-xj{kp8{aw|Wu8IjZ^n5+%-oO5H z&aJvt-7a!LaHkur1o27Na04!Om%B^zpIs}6wr`!>v3bWX=i1fqhSBGSSABWl_hlf&0xx7X;3^ z1+%O8o4#6m?E~4Evd<#^tIfeX)sJ}n>{S0U=C5+DGLqvdC>R%4_2?h%)lW}PAEaJ{ zcD?D1KA!hq`Ty#3d8-cPE%xR=>iyek{m(iV9&s+YB4hm!@<&|6cs~DL{cg>MaFXJM{OZ63KsTb)>y@+^TzrxqQAg%v}w13NUJcaxj7km46 zhCW^QdmB{yq9&!hEZ7j_~zyvBW=^FyCq{nm_gQPsa=Eugy2#+OZtr>*HdH ze{H_`){cqhOFjM5@k0L)9=!gdeK{iL<6?<_c*=aEeWLkNPyckh&_6zGzR9*6q4jaG z#6Lc4zR5Pxe5t2@I$r2s-($Xw;T+-X<6?<_eUJGzhDGzGp8n~0p?`CO`L?i^aveP3 z>*HdHe{+NRwyL7}QcwSMJnz5SUw^gp-oH2X>|d}6nK$-*vAGFByhOzF{%n=CG3Jg=YV**~1kZS57Y@0>P&qmSqHr@htlA9n*`^ zt)>?dFU+4l(I2K4MBUs&N!6P& z{s6~aiaj7@ci#NI$J_0X7h)}*!gc#(M)swFxLAJ!<9Feml6^|PMjukvj>8k@K$o}| zCI|3;%HSK*iMJ>-ULP0x*SDSZ`R6n2D}4F;D~anjxG`fq z54A5t4JkR^_|C@3WHZ+HXhy$p@wqSE2XNee`FsBe*9!X^J)JSR1--@dj>z#~u8os! z8lT}QvTtDrb5b(Sjg!oW>nU=)cF4xb;A;He z%*gS|{WeZg$C${^{^g1N=^)od^mF_5?{VhO9@XE%u})@;9){mb=s`-3(?jHW%X3jo zPNN>=EHa*4W#eRwy@x&`j+4)4EWdv?(0lH4P4vG@^vuV_wZ(e(1$=P~_DS?>iMWV( zp+EJ(Go}}-3sFDfBI2d`%3{-Z`J?G8;^Ja`un4`ybshYWBYN%Q;!uhHUi2FKUv*B# z`Yz}Z7cpL%KhI6}uS@iu_4{*}JWKz%H&HLvaX+D6M7+?S>zsUS>o0O|WL!kNP|rH! z$E<#l--Q?#5iiwq-Pu2p>rTB`w*H*Qb*H{dth{cs-ZroKzm?c-ue{ozNJceEi#bpeUJ}#Ej&o$$D&udNOdC$05cK&l-JYjkdfAJt9YPHJXrnSe5xxlGM`|nRMsQ1FxIeOu{%0+<-T{O4C zzZX|H?UHb0$iJ?2Eq@Mth@{fZWTVURM zq#*Z!SNVF)a(6%bjv@EkZyW2UUp}Mu8G7`D`tdXLSf{?dE7IRIzOpC(|E$M~`~2@% k)1zPO{TCGHKNyZ}(@)^okE{ zoY{NmHy8i2@8B&1KoV{S5o%*T2sPClzQq(Ub{gc(hGq9YWvWRnyNp4^8EzFvp>I;Z_NqW?;o|2O3G zuMp;+soDF2J}d52zB&JG`r>!e|272Y49Ak*sd%e?A}#()XKLb0+?n&AyllQp->r!+ zapxBQJDc?28c7Ly9Z)!{;@$x5@hs1{$Ym%RN-SUw9 z=-)NTGY_Zyo9pHC{VDUEOsw{SJ~IbcepS7CrY7zsPG^rH0;vR@XTs!4Arh2Z59p{ftx{Z&>S~eR7VDTimI5Q-37t`}O=89rt2AFTFv7@{Mt4#=m>a ze0u|@`J%@^R-r%`IqM#R4m4w8UNy{ z`IhIM=8GQxlyCJPJZHYclMPB6Hd(C&Q=QLmR_@{iU|M+I}9qSs1f24e4 z+?nwo-)z3)7oFyd9{-eY^`F=C4ZaiI&nn6{#+@1e`Pa>Na?WYK=RFrRwJ2U=EXUunb&1t^z`CR@f-}FDw zy#H_??d;LGdm4Pj?ynu^o~i5il%8ig^gM%AlrF}d8GZP*#$J^6(V8!x?|yo#?=@vNS{;a^dGLr?!BGyUuK zbdA^E=|0uqpY$_v=k)XG)cSR`?}s|~dy6$^PD`)2Q~B2V88`T{>77HJ`|-Gmif8ro z4Sy$nL+{M>k8$)3eMR*x#+{k|^|bHlU%%6!`WEBPO#gU}X8-bh?PTA^-=`9D`RXIEGyUsd(pdGcxVu61EykUh{>9%R zwf}g&XCFfL9dT!F|1pkz7k@uUWdFtECg%1Z*D3ZL*Dojgj<_?o|L{SFzY`sCXHL)W zalsyW=JdkM!)R6eU`-TA$;;wz@-`onP)Z`F_X+q#cl zZBXkT&H0y zhQ6Zu7URxL|K^^szVSYX^C(h%i*aYBf4nE)yqP~+lky=qtWt`qFtz`~E@CywO+Gykp$?f9B7+p?9)w=$*OsV;t*-zM|GG#+{kj5{;^kIx*cKR#Z1anz08N!`SqJJ!DvKFa&qB|W% zmUs4a%|z#vZhL=LLVW){xXF%FezPV%#aGM^;?w^}P4c}zSRRt^-C2`-_XC!PbWY+N-$@)_Cvoa?5~pq_apvbF&b*zf zuh}1af1CcE%RA=ycQ^e#&slz4{)#&lZ`Ch-TWfbj?@vD1;G5c?#GOal_1zPu>&-PN zU5q=Eenutf@7ebE+?7z?)YY7alb&|pU&0Ej&DZP&dmApss^6LlWqOAmRVoKB_39nn zP=xY^4*$NhqhWJ57VB&A>y8lj*wUX>`;WtLwLGwSSRWVl{dV-Dr`7xahH{mgz}r@L ze-YiK-k4Ue$J+OAt9|wReEq;`4}WLo)c)zi`twKA-Spe%zD=)AqyNMfz1C^R-fhz- y|BoC#IOYGA_3nSqC#UpBqyO&q`R^(Y+!trBHTB)2pXXLf|1T7Fyn*`C5B~$u#tFp$ diff --git a/sky130/gds/sky130_fd_sc_hd__nor3_1.gds b/sky130/gds/sky130_fd_sc_hd__nor3_1.gds deleted file mode 100644 index 0744ad2d9888b42ffb8d262791101f701584d1c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4324 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 diff --git a/sky130/gds/sky130_fd_sc_hd__nor3_4.gds b/sky130/gds/sky130_fd_sc_hd__nor3_4.gds deleted file mode 100644 index 2e3d4417216c33789767322cdf53c3cf98c48bca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9460 zcmb`NU8r1F8HV?n|2hA2&dG_VP0@fsN>XY#l~5`+Nn5;#t;QN_OPfP~w3eg_4gORq zMT(T5y-=u9gES&qN)_>0+(u7w<0KRexU0wtC0!yX%2FA9%1RR@&VU z95}h}&~Kmm$JN*W{L0g(Zu?lVqucD=(d(T!_Tb+2_ilXZo{bZCZ+!Zmjg8NI_JQ?{ ztBRsCD2m=(t9ZTW&9{o8*t6Ky-{oWb?ePRopN{9I{?!>({{6|nSo*)E`G<;PYJZLA zjv)IY7)FsXm|QjA0N!EY)uKDaW*A-Rm3)P>JP=k-l=@=bK=G8^ho$FILLa(iE^ zNPXRhqCQA{omVR|-u``zL&n?JRb;&Nz8Hs$Pd!Jo~n?uQl%}_2>SIWE9d(jW_yNPRP4gIhWP=2i1da?#=tj$8VC0-^}GNYhQNOHDAYL z%(HrbK{wZ%^Ow#<-OCTwsJfGGX6k2N>#NF>-)!p~LN}#1_K$h28^6iA(aqfYNB73M zmqs;e-AOky>mTiob&p=IQR_~+nOQ&c`ZsI7{A2zn{C)H0=JhWwN8O9h)u_6YZf5FV zcr@x>)E;CXCaUhFo01L*W z=FxZjW2)~-H#7a8y*6@Z|5l@NlWu16nMdF7oAeFc%=M3X-Sgo$drybol-_v$;Ah?B zkEwMh-TWWx=eXfFId1sP-0_<}6@8nzp+@yB>1L*X%%g7nW2)|?o0P9zn z^>bbCtZV*5HJ+6h-OQYSgMY@lhu^DF>rT3vSwHjGH~3BV4Z4}zKg?s_;5XSf=w@#J z3?7bk4==A#>rT3vSwF{&^OyI!F}3cbo0;`9kGk=j)QxWD>Std1BmbE7=P}-R{@`KX zkZ-bY(9PWb>An_y>pfoMS*-=#%=EAOljvLT)*98fq??)kF^_$N-(=sQo4NhNJl2YT zO!Xq^X6F239(}`a(l>N7*T2rUqi@{N7*FQeDch+^R|6Zf|mUJ`Izt+9cxAv$;^)2aU zrhm+1-{Cjecj#tr|1pog;U80dOS+lqAM@xNev`hTo4Ni?y%BwDJyE0jmUJ`IKfWjM zzQ^~6G1a%Eo0mT#jxA;x=ExMW8zs#fW_{UV=lWtD-|3G>FV^6w& z^r+^(rtdE|RBV4v&!w9hufP9p@^@bhzd6*ofZvo}_g|Ot{r&A5x^^E@{nylZPJVQA z^8U>Q{_?)lHKx2r!XMmp|7pVCx+8Mi{Th{1O8qS=||RufAYL-K#szq&L>jJnCM3p+?o6bTeCjgRVKbLOZ-JxuBK_3y9zs_meBYen&nODfJB z4c*ju-G9f#^}C3<+iy4Zxk1N`M=;KBsET4bU?`Aqy+b)x#WNWvM-w9p2OQLgs&_w6Hp@}|UzF$Lh?q8XV zbAQ7`=l+I?&i7XnozHS6I^Qo$biQAh=zRV&+nl?%sUIcL(<4#G;~Ca%YUIdP{fXbl z((j4q!k#{l=_%(+>)MKa^|5`mYA(rmSD*h(^xjuu9HOV!HP3C8KlPz>eDt}Ddn4Q4 zsM!C$`mcVOyl;$@VfKHl)Ftp zl8mR%<|Wbj?qV`N?@BhtK~e{YE#XZ{!@xZ)0wxypr5&TiDPX z^A`1AuQ4#CFX{L)o+zDM#>@Pz>f1wo3k$Iheh+0miT^HjbMpIX`TkU-_08NL>+0{W z$hx>UWwLI5yEDmKZi^+WzlpQyPyni!_EHIUEyob)+k@n&5WPxJo}F8zsbHuH>Ee$zxb=j9UZSx zxk)$6{Gnb_|9`{3pZ0dP)ThCMx;^#BVujtpWBPRY?sz&<-<}I+x|XR7ZS9WQL6-K? zYOClLz3o%{eaV!j&0gBwzn&gf6|T0L>FKugO AtpET3 diff --git a/sky130/gds/sky130_fd_sc_hd__nor3b_1.gds b/sky130/gds/sky130_fd_sc_hd__nor3b_1.gds deleted file mode 100644 index b0e25453dbef5754d0cf35f54c1c3a83547c3666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4888 zcmb`LPiP%g6vofYo0<2gskRVWo~CF)7lmjI5ksliBn=czo7!qyEi@0?B9=tO1d)ok zQo%(jMMPVX21G?%is-^k5p9czNEa?d5K9Hog_|JaB7WaF_q>^xym_X@2g&c{-22_{ z+`n@tl1UstCIeAiy($f9N>%QV+l$|&FV1F99G!b&?xaY6C4FG*^^wW1Km2ps#OGTV z-Z}iJ45a1Sfh?P!IXN_ZPwUC!t@&fEr;fK;&pbOfe6%$rNlheM8_OS(-4u(+;JONa zhfm{@eIXkQ;d>zdO4j2i=tot*F6hso{-j8>y}(5%7 zyy!pi|LO~Qdp|sHXJ`I9)xTe6Iet2B$hUgd@+K?WFwlE*vLDGlD<`9CD68hwexlfD zKU)M*n1-V`oNt-#@CgV<& zcgs)5CwL6&kd7H>wIf%Uhn?@rc@k02HppN8K*hy_OXnbwK%?&h!gr(as$)r~os zH{;Hd{8eAQV7mHkIjLjZS)zYQ=Vu;u-$U--9CtJ)nx#Bc`>UE!6d8vO2 z5Bg{43q(xg&K~~hqWNa$o#snD{X==FKi4h&YcmBxt8r%!|LO(vt<5;imwNh#@>2i$ zDf4ZN6bN69JA3%oPnmCH#A&|N(?66K{rBm4o!s#AZaSRzdLF<1oeVad;K62u&vL0!M`$nh#3s}4FLccj@ zeHZkIJ5gS)$C=7=HpZFUCeLBUox|n&$|2N6{z+6I^47SsNB%q~=*#n`P55fu*~6dD z!RQ>;4xXLPcmjIForstAKdYN>_DO;8)wr{VKhG__M?6>{)}O|md&>PePuV7$zcw$T zFN`}kmFwxl^;dHM)?yaQ_;`Zkf1#+^I5==)_i?<18vvG+%yJ)JYX3uA$?ck;f+a;Kay zofG<%`Gxy%np!)_<(%~6T6fZiXO)vaEO*j}dMD#-*9l!Wf9+p(&DzbL&Pm_&2lFS{ zF3X*4mpW%j`?DOs+E>>{o0W~?`6!J=S!RL)wuIN{PnDduaoZ`npYs=I(~K7;Qij- zkNYLt%(wj7&6tJgXX*FZXe`)lfY+fyOFD;us`|_eeccdCD%r+}zi+`)QTlF8M~C%u zuk`7j!Fo+TkXkd_*_v9NzIm3PbEcPHG1j=nG_%K7r|xji9#VIxvFxrp_vB?){njNA%6MwI%gWqQnV*O4#N@0yzE$bZ#(&;QW=4*etQKUkjs bKstUHx$~o|z`jafGxL8)S$kECYa;&w25U(5 diff --git a/sky130/gds/sky130_fd_sc_hd__nor3b_2.gds b/sky130/gds/sky130_fd_sc_hd__nor3b_2.gds deleted file mode 100644 index 6b66ce5c0ef8969ac0092e7a2c34eb6163500517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7960 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 aU&;62p41+;3-o%q&=1mnJY3jhS@;jog}8bE diff --git a/sky130/gds/sky130_fd_sc_hd__nor3b_4.gds b/sky130/gds/sky130_fd_sc_hd__nor3b_4.gds deleted file mode 100644 index 1703935885d63a35c74775995fdcbd47aa51581f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10244 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 CE#)i# diff --git a/sky130/gds/sky130_fd_sc_hd__nor4_1.gds b/sky130/gds/sky130_fd_sc_hd__nor4_1.gds deleted file mode 100644 index 76140d92bc30669f7e5c63ec47a3e61cb21192d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4864 zcmb`LL1-OC7{}-B?#ympqE>iRp3T8RODRS)q*zKtlQbY$lbY68TTLF-B9;`z6c1Gp zJcx)zse+&)4VGG@2SE@;PrZ06MSAd13Sv=^dhim8R*C=reEVf*lebF~T}XZ}-|T<> z-^_e7yD!F>D0MTa2S?u8zWe*Lf9x3h z=HB^_4?b@CZMC-Fxnr}(2Z!$KJa@Qr?AgxqhdZ4YUYy(388jxzjB&R_=6B<6jf^n^ z>tg)Quk3I6KsM*)vl4$Lw-@?RuOGLD^M`59IDZOVN7-r`U3@fFmQvo z67ALgxG#NG^vZ0r=#_}q>fIL6FYyP_JLQ&oeFKxr{FiuH^bO@;wLbb1I{3s-7mP3- z#+7KV%s(ENd5^CL#Ju~svS$91rzCG{10ru9SJvd8o)%q(JUD(&=zLsRqqp}+-uB0U z$lJ%2HTl~`_+tLt=LI=$j4SKrk9o5Gn75L3$GEbt{&*kjj(R2Q&i9+MuKv=mW!%}J zfEc%rE6d~G<@aAJ-+xmW=WiJMo`Re^gSZmyVg0E7QSN`Pd(V6Db_E^!V*M!NtCE}2 zz9~8-^xgVD!T$ZZf?TpsBqy@*3&yvvpwAWeDA}I$N;}Co_m?tyNIokW_m}75;^H~_ zD*e6P@_T^!xl=N3i*tnYK=Rxw{os7#eLUy#`@8k$$ICj5cVI0}7j&;9f5esaF$cwu zWbHTpEEv53J?2N*fZm@EIiq)RFY7xe+kO4#gnzgE{CUs1q%J#Kka;n#M0+>AuNVJ( zSdi&%DtC*%nKQjx`d2dUb;^ZO|D94jqwDyh+^@7F;-^GB%x|QmM{SyG(7#+T=4Zr} zXs^}V3!+!{d?k7%;-P-J^gJ}EyHVz^gfGr!UP2!a^}|K}qOon%#m%BT_lNDM=eG;`bLa@h!*dDbIl^`&W7H|3 z5A&1vjg~p;_iK;z!?j_5B>gOYl#C}gq@AP>+m-a8PRY1Kze?!4`Ahx3Fa4%36{N4b zEdC_>WxJC7X3!}s`uF2Ywo1S8cLmvhyjl7uIlg#9LG~NJBmI-~O*R!|JNs2G^OyQt zm#_ax_@I6oI|Fi`Gp;Px&nv!umh`CAbJQ!Lof5s!$HVy@`+xO8-Z~D=TUpLuo`?DS zYvB<72o8NQhZrI^v~NX{dpgKlS={N>*LBA|7co#<5VfW(X`UXEB$#N{o^zs ze0^M5<8Mxi?<(rIH2-Gx`)9(}zkZ*>Fq5D8{3zI*M-Z11?JLKx`|ks2$Fcv0173%i zapic8{sep{p}#-i4d@wHPS)r#{^%b$Ka?@vH8?Ly#4Gb>o!B$*Lj5TD9?G~9@k%}G z+~Hk{^{?c+4dY70EA`x;%$xgH$-Eg?YW_X2!1rl6zgos^A_- zZ$I?C}$aSxAZ8x?Cb@Cc! z>o2NztwC+zoqVox!VdrSI#-hZGv|9(4) YZ!!Lo`jgMiw#)zZBB0g9s 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 diff --git a/sky130/gds/sky130_fd_sc_hd__nor4b_1.gds b/sky130/gds/sky130_fd_sc_hd__nor4b_1.gds deleted file mode 100644 index 766dce80bfef1c9e603142da458a03ee84fe140d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5350 zcmb`LUx-yz6vp@Yx6iqMv=Ik~TLTr;gD_z>l8BKrIuN9djb%21UQ&rfDR79ehkA+_ zNX#-S3lyRvBz%bey!0SZ;X_17L_`pZffUipAkl+;-(Gv&v+vBDgGv|f{O+uMzV)rO z&%XPdbB#4|{J0s8;{2j%nvTiM9p<+1vuVfn;Ql>_o;Y;an875we|&cB=5Idyd)>qr zt4_VM^HDRLRcnW>ojGuL_2}K*C--${_I97z*X=(2%%L@Vx~olE7-N^j=1*gn#>SYD zfdqg3t9@KPkj+!_S&9GBWq5o2n9~n<{V^QB*_dd3z&R)wS8ndpKi{vvdiCmQ>Xp!L z7roHML;s2YS0B`^eQ4dv{`xmL|3UK#=g-X>>TTd;v0gG+XH2oGB;$6ujFZtNOy;?g z9FISiaWeW1@4Y46JYZNT^VB}Bbn$S0w7xA`pF0mYtVi_8`gq>RVpi%_GVa!aa<1?E zX@0kUlAqD%MPst8q}__oh$}I^Sba{Poe`b=rzCZZD=YK|*t=uNlDfbUzU7io*2`5qa^36xew!>5yo0e(YGh(gL#$6ANJq%>)+Ln znKsGyvR;(gIHNd+o`{F~aj)OP^Vh;$7i-Y(RLRDt5WkF=XZD?pEA6YIQ$oL3{`)k4 z@+^9L4t07O%r*U#(GQYOiQ~e28(qC4e!n||I^RM*tT$z2BXS|GM7&m?Pl&$9zeJxa zC#v<)C(vRKiFXC$nq^$MyjmX*VeOAXe>UK+_@8m*Xtkc-qv!;VjY`Jo$9=y%F<#k! zx>9`8^8w-O;>sHTtOMWGSX*BO{009ruEe!&8B+S|Rp0ru4e_;@FV2G_d|g~w<8R@? z{<-fc*+1jTy8d%~AL(1X9uU4RuB`DdUW9fQYYp?LY%m|w`&N#%%KfTGtYsHh4prCB68gpRyZxNkQRd6>fhvQ26P_JY>ygox;>2EJdUi(o=`trU-N&oC887G;a<4XEcuXJ(bRaW@B z`7OSdyv0K$>6?Ep{v`8qT*_);d@2&LN^}j$Ncqn zWFQeO_sS*P(4S{(x5Sl*hx*;6UVJitU#M*Dmben}P(S7L=?y<`$o-~Xe~)3F;C~&@ z8}sz&^)&TL)V>{Wz)5_4N1SmHlV%pszg{5HS~5*7#?0;%iST#g}^e`|(QuoO?X{ zivt0nb#Y~le|}bcivvpWrJnwNywacd<@D#C)FXUdTv_AaI3m8ywMy}&p8kHk(!Vt= zzU?F+d|g~w6G-}s+{Wk{>%FJdag6- z-2I;tIu}>g=ncN7d{*T5U&&`J#+8Uy)}LXH=+E`rBYa(4S>w-jLLJv%kI=ce((4K#SHvbWb|~WC znv6|oxreonRm|H0HO>~?AA5LS@1kG7VBQz#aXzS@oTtYcS@gVB=^vQ% v&xroKU$b88-?6Q)|3{qvNOk?g*~Xn*b9lKmBp*$?WA*1n$%o5gnwtLr{Pc8< diff --git a/sky130/gds/sky130_fd_sc_hd__nor4b_2.gds b/sky130/gds/sky130_fd_sc_hd__nor4b_2.gds deleted file mode 100644 index defc9ed2d8eb442844923bf10d7ecfe8aad7646f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9414 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 diff --git a/sky130/gds/sky130_fd_sc_hd__nor4bb_2.gds b/sky130/gds/sky130_fd_sc_hd__nor4bb_2.gds deleted file mode 100644 index 7fc101a113a7ee70164aaf6413104eb5d57429f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9470 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 YTcG93&Nt!xOqT!W20tITgf$xOe?5Ymc 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 F{{dbsWxfCa diff --git a/sky130/gds/sky130_fd_sc_hd__o211ai_1.gds b/sky130/gds/sky130_fd_sc_hd__o211ai_1.gds deleted file mode 100644 index 0875a40b3aa8e41229bdee76b4d9bfd5f6866f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5542 zcmb`LUuYdg6vpT7|9ca)(o0J;6vaQK8nI~}LWxL{1_h(hSfjR*T&nd?NI_`uq3Wv@ zk*a-Ekw(N8jUozSUn=yah#(^MRnZoGsbF7%V%7M4bLQNgP3~@+;zIJf_w0Q0otZg1 zyL(Myg5XipTMN>&reS(aYHl>w`JYX9knEd%eE**P2aIWk@tq^D433{Vc7FTV@!J>P z-u;m2jmx#0l4O4FK>xtj)>C_1^G~#%+1qM8yRE-}&upvTm?$$Qxgs#XndHjA7}K{d z#D8}*zLF1QW5IoP#JA|`Tt95}>zw{D+K(Gk8}hgW1>?%`g8uoUetCI$k$NSxQ=%8z zxbHvq|LVQGbsUL0^{<4=xwM9jvO75?#(_$Eh`;!8dK-T6}g^rZM^a~`3!ab<;n zdQyC|Ii>hgPk(p5)W3d6d>exv;cMf{3jg{c@ofw$#g}^eyYs&PNa6Z>8ST!&`-Yt1 zbNGz766Y)R@i)+qV6GkOpNn3JxUX*&{LwW07J6L&${2m|P$KT@N1gs&-amqyp~c+Q z-pCo>2Jt7*JBDZFywc2yP6>T!{}J{^_7lFAlYYUU;zzRI@S~jUmpUc%rTr(^>$va5 zALeBLaZ~yy*?-LWab&;LDOc=|h55;TgckXyr*g9YbgT4FvLBvT(uX=_$Nb&>C&F6S zHly#B$L}zH#+92pjNj?wyU=z3`tu%tz<0)#0~PuulZvCZyQ%u6xMBeN-QC=kf z!1*gf=dVP((x2;3|2Ca3*PnSHUatRH*1h(sN36SHTv@UH!F%X`J!WZf~Ytg1h@OJ7HO=#|-a(JK)zoj>XmJo{4L<}ad8 zltUGIT&G-jUcXANJFj15)%vIZh%P&plRCzg7t^zDsBaT>Lp|%qvZ8*n0J&oS$guym ziFLDaWyShssjOS}X-=*i_-J^-8Xr?boqt{kYF?-nsuMId6 zJm%$HwErR}Yc#rmm?P&cL_H|&b&2!JbR*6kMSDl?UFpZrIC32HQNpiNKKpDwcrLK- zxoFzMS>?}pr_Qd2BXx``RbNL4zZc2xElrbLkG#q>JuFJ?g+o0Y%E+g~g9v$~+Q9WET zYdvrBcq^YZtWnmJJp2G&j{I2{{m`meU!})tP(QIkj|%CyYGwMnC&mi?m#o+PA9=8# h-)a5(%Jc7yM|ZQ-a7YEY&pk=|=TSQ!*rcM!{0I4&Y1I#wmKNID%6^bSOF_|+&w?mOTm7JvMOz8m=Q;0v?zyu&_ux9P z`sE(`U7~6xQKkEzWs#x4lfU+FXLj&zkRRy4tEFAmvM28 z|IWPsXSjaq|HSxh0}li?E_E)s67}R{zV=JYlZ?A#f%W$-FEU5H$T-h0GEQF+=P!@X zSbfc1=9~RGkp7LInm@_<8aSQEeEMh0lk{a?q%U;B7px^D-v zjxPEaSzaN%kojJ|Zb;^PZw1nqaglXVFEY;aij31=WSn)06YHM~*KfLj_4jSex%dvw zh3hvJ7bf(d>y!JiR(}Dn^8@R9@g8vz`Ss(M>(j5{+DGr{-vis&`WY9Iuhi40^|JYk z?fvF2A|BOee>1(K74@>XQ?u7whMmUPL^quWd4Y!DZ9e z#7zrPq&g;1#<~?OxjLg5^`!W96gEkK&$DMI8HvT*=d)M@0^J&wIh*$Pceex62 zi}fo^FCt#4&lauk?B6A#Zyy&U{d3N_emU17*Dd2>Z2j^$e-7wHo=flZd}aO2bKa>b zxNLgPf1a<@w{h>n>!x!kkn_g47@I#HM_=j-!q>;e$olL2$;N%^juPL&`4|@?<3Du^ zdc^+Itq1a6gmDr1%Kmv=c7y2){@3)Gctc#zbw_`Z>yGCYW9zTmv%b53ED?SCxESfb z*R*--{Wg&E#<&=pKOUF8f#abUn?E$YhKN4)%{bS95j8wv!+kPgVp-}A?v%p zS|a-PaWT^W0M`xX*A20bM9w?oBI1?f&*Pe?pZbER+sDO7{XCBIPJO{;({ujwe5Jqp zi_Kf@o<7cpQDHF9=^B7dMUde{K2uQ*s#dcNW(w*0ET}crq>`Uao&k-&n!C zVZ5^!O8gw3Ka7j}tM%DBzKF5g9>{%= zaS{3T{pa^@jTQUenY|!Fi#5&ujqARD+W6`I6FwXK{<}tRz8m=dJ*MY8)1UKS5ViZb zIR5>2jo$q0P0{+Mp8Y3>n{RriMELr+81YXpHsAD&Xuj0bKhHWV!n%3g6ojvjixL0!v*z2` zCYmqx^w0B^{`{P$FF*ea!q>;ei2u|r=G(1{=1V>O^L(X$5BGia<@d*e@bz&q;@`W- ze0y(+=1V>O^L(ZM^e5)qKV2exeO!$APk&;*{nMiPQcwRpU+K?%j(v0gD+pg77bE_I zW%C{0Et)U&^w0BU|0841zi?QC{&;REP8~rIFA?#welh6bxf8ls=g#><;M5U|i^!Mt zhrM3=r?X>+pNZJZJ~e-%kC*lP#`V}E-n06}&XVax#LN2qUY~yH=cl94e_kinF2}E) zv$4bCBI0F#+ka=AfBxp5+hU%E`F>0K`wrd{U=9bMUq`sl6dC9Jw#aw~pMfId?b|F* zGVWiV7|&N&ujuoW>hsTs{PW}$ll$knc*}L_P6oDq1g{5i|C5t>j)lnYa9krI_4x5>Uv1;W?@b&xlKTqd zV#Rn}#eVw7;EjG7j|C=JAN*cbFh4E{$4{!~1kcCoiTw@mc_i{4q4yg4$;mjc6R~v} z)*j}gAoio~S^S-|v0~>Hp_}CI=b!s}qYpnmC(X&{0{p&N5aYz_oa05Vy&s0opC41q z|Nq$kKW1FECBeFB_0eVRT{pvS`RXj?SI5#uR8;!C2xScM(={*bRp%ync%FT=#^2}F za9H>J#^Qp1UFN!ejL*Sb9dOxfwqt(d>Na-o^d+y}x^Z>(9jSMI3GW0ufmM#>vEjbm z2bk0UvGQxjy%+tcZC^KPvp?hOIU6;q@oLRxH|@iRXxZKL>qmW^9&=6och~5#LMG1I zI(_bc-M(F8{$E%x|CMViu0pEGC9)RkR6zr{`F@|6>=+cjOqeb`+b{_T46<-NOay?f`~_d3@olvc0Z zzjDKizj*uV^+y)Z9^Cd>H(AQgT~IFHv*+HW%a_c2?zWkGcFlbLwwakbmMvYnbN9?u z&K0Z9m1}u-%9ZPR=iH+H0{%^Y796lY$nIJDTg0p4K$`y*pWmP4KXUHexx>!o)`%Fr z3BQksUJvuvwCBTb1M>r(vHWgvL!1Bl_I&w@@)hU#pO+u_st);z?fz@Me-r^C<&xwfhxQr*q5B;wT`#*}~6{npWdpzJ-=e#aXx7FX4UwP5;s&@uN zp4Y`le(_4okMnk@=7O-SS4i84!717i0N9#J;;9 z*PGQT3m-*3bP@5){l{_Kcg$}QefPQ;>Hjd+jq@K_5)gHJU5wPfeQI`bFgZcSOa4;M4&BI23z=eX)I%NM(F>p@+Fo|(@&xo=p%$bCayjP0MHPg&oG z-U*1ldtHq5fAC`K`{17fqVHZ8BmEzE!ume=>450F*TqQxIgayYzQ}n~7i079|FhLS z@TGvL+v{Sa{yto%^ZPI!*Ke_~*g5JV^vw0+IPQDqw}`%bU5xa<@5@$q|AzviZm)}x z`s+A%a@ad{j1_s`LS2NOSwF|I@5~q3cj{uS|Fv7J?s_>Oj^%YRQh(P^EsyuGybgFG z&+B3=e;D%~!ua0>oWpDC;!yVdIgayYzQ}n~7i06UV&Agv>bn6^x7Wo;{gvCXPPm7u z4y5G!K6Nqn{?BpTcg$}Q`_AiPWdHG=jrH?htwq%Bbum(Z>8SO+yer@w?&YY9k^XaB z74v0&i!WGyRh-CPzv8#8?$WY=sN3ser2ZoAbJ+jlvnknk>SC<_9LIgbe3AQxx)|F( zg{v?Y{V%*85OsT9jMSgsZhbFQ0?uJB)Wt~uIj+L@dgO~$-U~n%p=Vw{a>uRi{C5Jr z25;(Oq<+3n=COzQ{wo%+m#K@;=ldt0-zMN&x&rr`8&h_##QozDTuTx%KK@mUlLf5T z_?s!+Zsgw&&xDNgxFYg9`JdwF$L6ohr`bqJzcE}7MbHRzBIAwU zTAZZbxHKi}q%N{f=8M#Me33eRMe3|iq|W+9>YSGd|4#FNit`^Dx4H&#|H(Q@)<3W} zCH4NlS)63NFPR_7cwaIr>{tzb%`1E`_KRN%~ntCUnyBn?MADM zWWBZCl=R{In@FD;KF5pHd0Y|so%-kZPw&Ugr{`xWOEdWU0Q?fNp00N+PExPFo|5tE zCoE1fURjco@iOiaMApf;$U2!PQs?nS>hu+ldkWULt%u&EM~z($}r7;;EGE zcj2$7KOyTbthP8wJ^zuEjOQM>p@;Kdljh^u+B)PloxA9hDSLL9E+QW0Zx5e;IA>!Q91t;&cg^4E^)P>9 zdp_p=hSe{2&sx3+J

      `Na!<{%OyzlIJ(>`&c*hEq6`8Gw`P_w)gM6e9Z4K^F`!t zvV5c0!}{Cu`94Q~zW=odU$2W1|NM6IEmTDFXFmOtc&2~xGV?9I5)ibE_qGv-@9 zB${stx%5xsnf{gM&9}NIAacDfM*J(!n{RcGXuiy+e-h91=RFep&U3g$_M zzTGQD^JPB$lX#|o5AHkY+gk_-U$2W1|DLVp+glLLm-+Nh;+g)nOU$=+EFgTnE=K%o zmzZzum}tJtr+*U9^sk>b-@bzZ;p=rV;$J^)zI_Kp^JPB$lX#|o|D5>_;2x0c;0a%^ zixL0+IrAO3T{K_j(?5x4`Va0m-yz(C)87-mUKb<&gZs^QXt`*<%%^`6&-8C#41F8t z0>anpV#L3($$T3CuY)`eeVK3cdZz!#Lh~JYDIk2kE=K%E7MkzKOQQKQpZ-Za(|`0W z^BsFMAbhDvjLIkbupT6bx)lYt#0PC{;6rNXV%Z}d2+wB?|;PnO~`{T zLeI>f*k`_zi$(M0{OO;>GxPa96@B^rl}KOeV$8pInfVr95zUwHzw}Synf@j8nCEZ# zP(Wy27u)+klivTq13v{^`+5H;me!gsLZ9#7aQ^<;fA5SsYkQEBke~Z|asG+ayZbCo zQs=W3k#RnM5%V?FkNqoBFWhW#l6j1YjQbx?>!ZIP#q}tuuS5O0UjO|o=I!tEaDW!k zPq)qbNtV9`FZ_z^ci}e{C;8l^R7%Ns{UVE#)gR#VYdg z{HDc8#z*maQDnS{`xlY=WKthVeL+$m$vFGc;+c-?yUOUX6adjJgu?d&1g7xK~R^y@K@>`CM@_4=rH<@#d3QgM|E^jQwh{ zj^`^k;B~_M_mKZ<)RnNb%IXy1)2ZIQte5+m&w@+Oq-0&ZUvCk$=P$?WgcbD0KhF~3 z%l%zR$o1fHMI67A|04RAd2Lya^J#BNo|n``#5?8R!u*LX82cmKhv4(E$j_E_T(3la z?i{)UH76{cME{;fJRx-+N5pYD`T2Sq?^&JAOH;B=>S9K{KEDs^n!gXvhsIO-??JfU zi?MGk-pT(d&X?cg=l+QKolVK-sC*vK;!dmu#umi=*t7@nI$?ekxx3&m-i5j3@H(Nc z^J4xv^!7i9ix^iQw(+DpXLX6FuT%Ygz3NxmIu%|>$!E)at{`$haP35{Q*Ff7i{v`- zIHK083x~x2AJYFnDKEr1<*I$?1kU6JyT_mI+2ralYgN9#EN1#^Ey^0eZ?Adbv+hXV zm0Wo=$A8DsMb|q~T66in1xKb&KHz%kTKooTf6tYh<+V#cc=q54Wv{z{Y(DcZ{@i;n z`{3SV*DL$F3-F#gjD3iwAVMz)^1u1Uw)~sC|Dx>qPnOng^Rvfp(!Ry( S-e$S=-{pKiagi<--TwjHaNpVh diff --git a/sky130/gds/sky130_fd_sc_hd__o21a_1.gds b/sky130/gds/sky130_fd_sc_hd__o21a_1.gds deleted file mode 100644 index 47dbf7fa7ecb21fced50655080d69b083f347afb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5716 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 XV?XH5!|#oW-2M66b^|wM)vEa~?Vr#c diff --git a/sky130/gds/sky130_fd_sc_hd__o21ai_0.gds b/sky130/gds/sky130_fd_sc_hd__o21ai_0.gds deleted file mode 100644 index 9760a2586590371abcf23d3b0bdc845722506efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4406 zcmb7|U1(fI7>2(+KeLl#*%(nw8;u&P#bl{gZ7`xHAXZfH zLPb<+FN$c8uHp~D3&A2(L`B7)3$bAD6htj}6BR*LK`-L_&dj&xY_sQ>9N0W(znOR5 z`DW(KoQ)U>f?K7p5EM^IS!z<0&9X6lFO|T|Oy4oPZ}y-_HH@#QKeKK0i?{yRK63oh z=KS89r7zCb_8BvG@4>;#1{!zoZ_M4))S@U-YvG$4#l@rbIlQ|FG3pWrpLAwIJnf z$p6!X=1cT_4wK~>e24M{)b*5U++T@0p5X&1e?mlQ23@;KwBODDcKV0EiNp=?hlK1; zc&+OX$@1WngwZ)D--CQT*$=j(MEy)Z=46hbt>+TbFZ#>*kul~WjuW!oc;2;7vYhQG z(O%lGkse>pi&;S3rxV6?_!SUSVyp|t@ZHl~054oh=34mC(MykN|blg?`+S{PH2nhpQpJG^Dzm%XS56D7=I<|b!%@I+vB)~c$nqk zgoX3bzen-$4DLZ&>*3+aICVbkW*!~E_3)^c*Yzu=bpk6^!27B|7`d(`!0JpRa)lSMpx z27OVo+_tN1bnp zyGpd1&fo1fe!q%8LthV}KGu%1v>ojsu0%XnUpnRV%AV()UWs_N{#*3(0Q6jMp26AB zBd$a|Q!j6zZZEWWhT41|^T)WdH(zg`N9dKD2kMoGXZwHU`dye!$bJjr%H00{gmFFr z?XwAcaL^0lN|a~&qh9err&pFXIK2|_OnvYWwCj-j#uWKnF|J&fqyN*5Q}{|k&O?B> zGH?Cy%wYb}#|fD?n{2xA?J;8W#0VR{cRrW_XzU! zG*{z(5iw81)8p^X1OL7hw@?>r&EPyx@*H4XiFl@7uuoCP_a&u0M-W%$>7y+e_ua_% zWQu>|JLAgT+5S9tqH(MroJVc`i?L%|Io_e4^5>yF&$v&nnZkO-r8E~Km&ee5KRYeTRtB8{)N1`|E}Ww(alF&ukVdYbZi12wCiZ&nf}b1{v3}sF_$*3>~`LH|6tPj zhDD|GrJnx2Jky`^MqkcnoA9-9WsZNe#rZ}jmCl!X`up-s{}>+h<$7)tF&kIr_{S~h zYmO?NFZJ~IiZDd58IE zTJVq6_rM0f|J?7Ns+dgyN=m(WE5ciCm2XG9sIqS}&DE%=qzaeysyMG9G3N%dL(F*v ziN&lhpuDmn9;&^>>t(4}SG?EYD%H#_W0->FdMN)-k6u%M!)bct3jY=8z5g|1BOU%L z)~o-X8$0yaYr6Vh^5lib#}}V+`A3f<`PanM%x#_7uSjjK!^;1M>fyoFdk62r@=dDi sTUW0Z%$)PCcY5Ds^X|`{x4w9Iubp+Q2VHsiUa1-VcZKT>kC{mR1Iq^f`~Uy| diff --git a/sky130/gds/sky130_fd_sc_hd__o21ai_1.gds b/sky130/gds/sky130_fd_sc_hd__o21ai_1.gds deleted file mode 100644 index d1fa3b278e94687e2d41739aafda4b884fbb9f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4862 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 diff --git a/sky130/gds/sky130_fd_sc_hd__o21ai_4.gds b/sky130/gds/sky130_fd_sc_hd__o21ai_4.gds deleted file mode 100644 index 3886d6d18baaab32bf583fa3c7efa80f0940674e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8198 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ૂ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 diff --git a/sky130/gds/sky130_fd_sc_hd__o21bai_1.gds b/sky130/gds/sky130_fd_sc_hd__o21bai_1.gds deleted file mode 100644 index 8895a31827e4381ea1a3da589ac8377d5e54d125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5658 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 diff --git a/sky130/gds/sky130_fd_sc_hd__o21bai_4.gds b/sky130/gds/sky130_fd_sc_hd__o21bai_4.gds deleted file mode 100644 index 2409c7f04da0fd1a8e72a75efd9cd441a3348c21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10954 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 j{+ko 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 Z4=hJ)zHIHwN7L#~^v6^2S4CbT^B*N|cVhqm diff --git a/sky130/gds/sky130_fd_sc_hd__o221a_4.gds b/sky130/gds/sky130_fd_sc_hd__o221a_4.gds deleted file mode 100644 index d742ad5e053bc4776a49a28db71289e0f123479e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10954 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 diff --git a/sky130/gds/sky130_fd_sc_hd__o221ai_1.gds b/sky130/gds/sky130_fd_sc_hd__o221ai_1.gds deleted file mode 100644 index 653f599a5bfaad056711aa8cf1b0b461b893aa14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6552 zcmb`MU5Hgx7>3v0XaAft=S(RM*5nWxl?aB7Q-~-zGYS=&rIVGC9xTgb3_&q4p}UF* z2}uYm(2BA@>LQ|Ux)7-d3K1{52qBV!P$+^SLTY;7?_1yA`;2GroS_59=gha(yWVg8 z?jK#^!tfzC5QOP@*W>zK>TY!Ni@#kfOm^>jWbgL92b}Ax#dnOnux#yDCw^bP=JO@T zU)yrO8;Hxb*C)xo@dJZHx3(YO(cbrH`-vUx_MW9n2e}jsolAN{chMzRh0eLf zvugO)e_BWM2ibF6e;e^vG&|Q1i++~ZA4dJP&IKz9oPdIHH$uBf z^-75s{nz}z`a<5;56j!wng6Kx_qm5Te&OxVFGK#va>lnHe`t-h^C*AOIiuSJ-2&9{ zj23A-MzmM#ulcQ`Uwle^*fxDhexp4(>BE?jKGYdY+L!f^e4@JaWKOolxDoAk%TLCm z@rLHrXy&A@{<7*x=2btPlX*2B)BH%5vmIkezAHH%tpRPfXJ1aX*KBBeB->#T0C-Y|9i2fDxU+vf9ZW)hNsJ9*C zySzaD{sUjn@LBZlDAt^3a4qV8h&AdNeui8xpxl%37TPtU{cip;e(Yy7r1dji(*8%r zp{{z(pXU$v9X=VcFT#se3c|I%o18`tu~#s3-R>`(up1$JiZ2+n!v9EH_dcY}PhN zuFKk8IjO7Pqk1y=OY<q9&tVLOkpm@(+?%+xSM;F&V#& z^?-JaXs76>=ksE{9&-H!gIJG07x;s&&%iiXu6J0w!9VzNJUqj9Fj@ucdFTo?2=B3|krEYxx5zKAdnLd=WAjh*L5 z$M}cL9pfJ&*Nhl!C`)Pb{%Go%8_7FFsytMzUCv8A)WLx&zmsjc& z>;Y;ro>6^bTv*|M6!V5_b$xY#ze3NraaFmV=R3!*v8Oxp>j{IMSQ4fRIu z8^(=Q`-k;7@6>0+yi45JIsa{c|0nlfIB8uC{pbCTF&<$Qd&m>?J6Z+>K|@Z|5{og&IE}YJDgn&xOZ{Vb(4XgDM#Lm;tniN~)HgY1RA1`p@5@X5d0$B1 z`gnoRO59lCpPp3T`nXYjsi(g$FZFL6QeSyiLLNf+O59lC-#DbcJpS(>BR^^W#-8IM z&)!QRUeu5H{N;T>4QF)N3$J-OYx|*p9x+dM0l!hti2B{y)AJO%_&el-HjRx>wLK%^ z-Sql?g1Nw#``;Mu#NW8a8kq;%H=mMywC&`AjCfr`(^<5bSq4Rv`Kl;W5?^|{L`dqRggirly%$$4Q_3>#s#5Z^j z)qWGosC$*ZvPfdH>u_Vo{jHxyrX9zc!%myfA2pXwfn`?t7o8Yeq`#A8K~KB z9krSCJHZ^IKNdVli3eK?AXqptcDm(BQPdaMNM*H6)7 zbzYgj*WbB*O^5##>n;BWH+Ja9#D8&l{sZyo7I^a`t5<)zR)3QHhlq>^ZZo6E{R@<( B diff --git a/sky130/gds/sky130_fd_sc_hd__o221ai_2.gds b/sky130/gds/sky130_fd_sc_hd__o221ai_2.gds deleted file mode 100644 index 0f54ff2b9cf9c82b0e9b9ec6c5375afd45a4a0ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8812 zcmbW7UyNN<6~_1dckch0J2SVKfkHG;B3c78L(-Tgq#YW4m|AUX!4m0EXuzh8Xi<}* z!9J+5NlB>jMXFLo0Vz=fXfP2YCjN<0t3i1Yl}O@)`T#M-C}RD-wa$0Wxik0dGTvnR zyR-KG_P6%h`|fk@nT8}(tM3czE7j(Up%Z39Gh7kgSbQIP)#UKOTaWBNax{ctt#RGf z4lFOkZMg5jhJ^YraFYuh}JL1xa|F%)Rd`0<+tNd5!3%<%jzT&9=qWKTQVb*Wz%g}EE zQCzX{wh$)&9fHXC1B;@?9*`t)wiNx$wd+>c~?7wan0 zhjEcU)QgOBToJlb|IQEGr}O5V^l4x0ekAj0eJUq?7#Hb7y~sGn6=U;P{|deP*P0@VvB&jJix=xR zqOV`&zV&Adgs;WLh=2Vm_pLuGxwPuolV8}MNLlLrb!%;I9izj4lelLtiirJnw2 zd#Qi(8TV}+DiB(WixL0kGw$0uB)Tv4^iSJM{oD7tFV8;K!3bZAixL0!z3$uDB)Tv4 z^iSJM{kwbJw}-Qu{zmv(T#Wd4_quP7XTcfQ)0cXu#Y_GB8{D^lwm|q=T#WelH@I*A ztmwYf(?4x5^`CgzeJ4*92w#hf5&wyo-FNbo=)Tm`KW#7dA3W{8Q+E^yUyF+o|H0Gl zJ9UTXzSPq{Z7=noKJLCV3kAa0;$p;q`ndbfEQsz)J^j=6QvV_PaNiBj7YJXAixL0f z9`_vr+#@Auc~^>^kdKI6OLcX@%Y;r@_u zad){sJc+aV)3|=%nkUw-hB@LQ;-&uVSDABt#^1ZXBF;th-@_S=wXfV(;2)r8TwEyE zb5>7i05hKl)NH(wA}ZLjGKL>N8^9spt9|BkP~kJ@4e3Ihi-(Vl035 zqc8Ot;cIa*=Kq}UyXLV1vF{Sb#mN3^KH_<|cI9N=jEk}S*^hOnUS!=F7i0BrZ})xM zex*R{TZ@a4{mXv*{866~^R~DcnLqon?$l>Q-7PLg>fd?E>(;$LC+o(z7^@%qv2N6h ztQ+HEtbW}e`Mi6F3&gxFE=K0x`@HAfzb+^9W?YQr-@|rQ<} z)ZOA@r2hTy`n)G@DG>9vxEPuL#Akiplk+(_Z^p&g{MnCrQ=bueTU?CfKiKH|e(+p@ zui?IfaWS(0*^m34`iz*j#l^_{*^lc-y~uTAT#T(B`*GgXXT-cME=J}*^=q&D^xZjG zcgDq7{n@XH>mT(QQ8$Z=k@~S8^QJx{^0v4b$$$E*UiX>p1)}a27bEqb`H0tjcv()? zopCW%fA(YE)MrHA78fJ=^ZqBf6k6OrW&Ek%|0Lq2<=21eTR(Qa*uK;CBI2d@54_LA z`r7@U$aQC2jIBTW@xF!kk0S3|7#CyrFU-IBVb5P|UE=wRh!^ws@BiuZX?t#hdu8q) zyI%*ZZ}t5nGS2fsWSr-N$hf_Xejjenlg^~iW%i8qe~ixu>2J^RF+j#8{Bi=nr)+!+ z^ZN|ylale;Z@rytz02Q+PkJrieSFi_;<>WkDSjUWbp2zW9BHF2A zd#WF|Ki+TS{}r{ycR9NsP09O8e%{2|Co$gx=#w&FKi6MDEG5t7F2)ft-Z(#-Pw)F! z%Xhn<$oe+_;q@UKU&nYyaWD*__-*{o8$Ck*w#$w{vpc zrZ@Qdk!-hd#8=16KmGe=()KzfPvqo&VO&HVSJyAq^Eqi9*9$&>&4~OhF77PXb8V^P znUxVbi;EHc;5V+b{e^Li&{rI`1f7rZ-ma`Vyb7U`_c*ULf;hD>7f-Sj1=4 zUN#GU@_ZIsFObKDMjAevjr4!iBm70`>qpgFY%MmgT8r5)@O8hh1=V=9W|JFsERI&h z^{dx%l^#2Y`uD8RW8aP43#;_0|2ubV8(GiSt(X6eyGHc8&3|M0{IQ}q)$L^~s`s-= O_Mbd#Z#PkwdiWnAs38LY diff --git a/sky130/gds/sky130_fd_sc_hd__o221ai_4.gds b/sky130/gds/sky130_fd_sc_hd__o221ai_4.gds deleted file mode 100644 index edf24346240ba274df3138e071297e618a91efb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13560 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 diff --git a/sky130/gds/sky130_fd_sc_hd__o22a_2.gds b/sky130/gds/sky130_fd_sc_hd__o22a_2.gds deleted file mode 100644 index aa5c4391c065346cfdf1a8c042ec0c634bb46ed7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6738 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 MTGovgy3!2)1ED>FD*ylh diff --git a/sky130/gds/sky130_fd_sc_hd__o22ai_1.gds b/sky130/gds/sky130_fd_sc_hd__o22ai_1.gds deleted file mode 100644 index b8f3c5ae970dcafd2ff630f8d5c7dc7d55697b40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4980 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 diff --git a/sky130/gds/sky130_fd_sc_hd__o22ai_4.gds b/sky130/gds/sky130_fd_sc_hd__o22ai_4.gds deleted file mode 100644 index 15249b649c693a6aaf794f1c6f5aab2a1c5e4ef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10748 zcmbW7Z-`}e8OP7u|MTb0-#dTq%t$Td3(?rtRhGr5-E}KsQ`@%96xP93GFc^b2{AJC zg~TEfz6i@LTnQ5~>PYO8hl(0yCBeq!zGx2+vMxb}_P*4Dmx<(0SI zv36C~=ww-|Tg%?bT9dUb%dVKN>u3J8`l9~=$By~$LH*U3(RZHzZOfm|^B+Bb{`|99 zHgZi+NAK77qe0Wl`8$U5<+q3Y63=-4Sa8pf|L)=Z@C}A!I@v_`c?i9^ATN{*ReY z_gbyhlj>djIoSTG`j;L=uc@CP^CBK>{a1bu>pN%Xta^D}-$C^^`kMD=ls>V^<3`1) zgE{2&Y_y(tQt#xv`Z}fKbdF%_2L1kB`RAl>_RN5qPxE{FJ12EdobdV~x}7(8YQuTi zyyyPo$M-*3qWnw`Cg#0-m(Owb&4SE%TKg}^oTmgeQ@-$wKP0`q2{GS}&s3)WTp+!wS5ax%~5YkZy%oxGs(H#+}s z?eVEvN8a$qPq2PO>vzBMb7tptjQoSOKPh%xdom|_bIRke_7}~vTaY-t2FV-S@A(jY z{E33(cYosfkoc$>uiuP>}$ zrTJe{koB0_~VXGYLu(=ae=gTR*oWFA@Uvp^wQTa0kN1s!&^q}I^`Kmqpr{@Rj-;yRh zD7~D&%lxnK=lk{n?X@kMO}j+xPt${2s`ESY;(9XrkrGeoeCWa9>%)*g&zGI2mH%wP z(Y^XxdQkDo`ZLY0y-&5XAA;x9KYDOqI=`v?PJXcUjOPcXC;izc}*5BP@XGrv4uIsf{0pBvZihW4>hb2B}dm|tVw=hpaLLFR@YOwEtu z*f-<{**EAx>6P_!9DS2Np!zmFnAks!M|7yL-Gu)opq(QGfTe&wcW-g3KK~n3_MwQ8)Pms&3PRiTZgR!rUhF z>nCJx=)u(drhf1F({~jl4?TFXeD)prLHZ^?nChR`2|Rvg?k-VtH$9k`|I#kcTY9HN z<(VE#lpKghbH2UF|c`>glfd$&aOZF(@#fA5!G_xw#I zs&3PR`>N;9ajYBp18Ut&4<^=c{&BB+VRwnD+w@?f{sqlm>ys_0)*$PK9!#wt$1!*E zgUlU0n415>zr60nAC{=PO%EpOUp(t`UwX1c)na-uF@KI@?&J@sxtktL%%9gc%#GJS zLFR@YOwEt$1ioB929&Sq!HxWT*{i&N!TV%m+cdlP3N}Bk*}th+PU7|JJPy%o@(mIn zdB)=qedId@ITv~`yTkK?=$to*&hJ5fr@kOMbqD3Y{_)+*?EM+uC#Ame2Mbak_j^I& zquMJ$^v+3-L-fw}g2daGdmIwy{nsFMp$Dm({2)5#4Wi>8M5n$WI`s$9=_@GTjrzZn z_3fVZI=jCqNS)nFy-D6^#{@ED=7bs z*4Ose%I#j~O1B{OF5m0*Li(}yi*w?G9>jS^m6`Q%WwSOpLhD_N%{Mq8ILFVe~8a3FUVJ~&ypWh?fdo3rUw)LqmQ`n*tVeil8=8Luk;_k$$cm4CCb6QL={~`Z{6Yg)6 zuj#>r|H3BsT{sbRU%UTM4SBrMfAO^YEGe$bAR@2cr8lp7%@-Cj3_(a^Ka>LH8ve|2)3l zKmUIxo~Ign{dsRd-CLU;+&gst;m^N$KG#|DxNZ-qJkx`TeAbCP)_*|dnI25!bDiaL zY_8uy`+Qt_PU@C_b^$+_BZZuF58G<$qxsKg(ME*3K;- zK70HZnw0LT`z?*^Lwk?v-aGfcGM)Xv1(mNhcm0ZX^<`bm{yEOH>mpq|aFH|Fd&f49 zUBfl)uxVbiZkqic@%6aZk^RGJ>hxP*xn3^_$`kSY^{cTiUweT3FJ6$ZowMO;uFF>i vc}75{YU=hMx4qmlg&5uG6W diff --git a/sky130/gds/sky130_fd_sc_hd__o2bb2a_1.gds b/sky130/gds/sky130_fd_sc_hd__o2bb2a_1.gds deleted file mode 100644 index 69f994bfa642e36af5ee60896fd6afdfb1473b3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6538 zcmb`MYlu}<6vy{D_ndR@xsTCc(nd{;GLfcoW(qUKW=5kxn;OkhQ?HH|*^E7uK4^X` z2umwJWRxGAf|4+l-iARKJqQXbF?$e2LSKrALWCYp|NmZl-E+pd=lY-ncYgP-z1RM) zz4khLpL@qd#`hPS37(%nW{Rf8|nvYq275pSkm{EXp0Hy5Y)I<#q5#@YV<0Ak&bT#ZTS z_dy?aCE7FfnWw^T_#%JGxL5M0ggw(g_k`pvxF$v9&Dxa>@>j_llYblQ{c6I(Dtv}r ziS|r=#-B&78Gnsf3u{*{%=X9rY1hB`x$Jg`03=Iu+v%eB?;cVe0wDz=rmy2(feIED< z^Li3}Cnd~123XMk?mYNW&Eb-DZ|gC zU71I{1-+ST;%jAm`9EbI?9cg-oImYK*wg;KHebOxKYw<*d_!N> zC~Pri)I`MZSXv==CG2VaIqCH(WABYOqL!8<grK7QDX#Yv5>~g>gS9{U5NN@Kc`h{HO80%X}C2VV(a#eAshpB#3IKCdXl7x8`uVsy+ehwmd;Ge^rfQ%Ul|{h#@<=L5zqz9Zw4{t@IKXTFlU^i#sG-uMH|SJO&k%py52mHuUNUMgwl z^N^DJl6@X>q}^VYsI5J2f3UQE_4Mui!Do8rCHNr4zoAFFa`<_x>uu}F!=B2u@^C&V z^O%=?esSbJz!;Tg2<`Aw!mnO@_WK0SLGF{R4JFqt`WW@$$a5)t137Wzxs`ta8jjpM z?0M>laq8)9)%7SIx7jo`!q3NCijF*Ab2p*p9BF54O4pV<;kZb2g&FH#^Ow41 z{Jh^RQNN6v^=mo2er5fge`$&6mU*`Ck#(Rh^Dk_y&wkY9`qclJyW0ks2lA{5jJaAHqZ~Iif(XNDZ0T_rL|}3vmf_M+PV zqI!4x*{fGJ*}2o({fgr<*J(31b42D^p5^tNWX}9-GmgyN*3&(F?&3c(^CSGR-t@oa z6n|7n-IdGqzuo-`;o?7If6RdTH}uRMmc4~mzcqXQ6T%s00000 diff --git a/sky130/gds/sky130_fd_sc_hd__o2bb2a_2.gds b/sky130/gds/sky130_fd_sc_hd__o2bb2a_2.gds deleted file mode 100644 index 4e9ddf02c3dc703c08dd94dac37996fa5761f198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7194 zcmbW6ZH!$-9meOJbI;4Yd++WVSIFAdKq67X66_XiYEibeh{-~=)G83S8!9i77UV@^ z@a2n|G(_GC;e(W<#i&3qF_D;{7=`%KPlOMRF-B1$MkpErB-Qu=%k#{Co;&Au?>V8| zWc$1KKl98p^PjmhXKr2L()2R7Hc89pUC+(B(!JN6R)6pMX|eCRJvU!@^R3R!Wcf$7 z+_rJ?w-3FtY1`xH96or(r`+1SS^J)%xMlCH>okgquE|55Kh<8EjEeBO3B zH~543k?C3Zd`=|u(K%}6Wco5bpBc&W-kmxeyINW zJfhl=7$@6j-pTwM<}WgyJ!$1+^#tnlB3WMDXyqi!dwC?wC-1RxvOLwfsiz}Z?$?=k zd}Myr|BKmw>ayFMoA`EQvfy0*CiFQl{T=+iiF^h!PMrw-xcvC_Klw$>#RjV{7MKIZ zMa0MH&u9Mzzj3aMuj*h;WPUdKdp~j($aYyzME!B?{haM_Tx@URosm@u?ZwD%VDSm$ zVlVm^m_3j3cOe#-e;=R!1^>Wu33Kr=1Ma zt|RJ2t~=^Q#2fwjy`YZkU!;z4u}$yi>k-sNev`m-C)&b1iikJ*vrcsh>b_p%zfD_- zmo)3?!~FUA6_Ga|7f18A-JcJ0@qF$4)%H8FhwlPkBI5P_FNE_2>kE7QR(Q=q|5D_{ zZi|a3uj_YseJA?U>m<(iEzuuq4(r$<2UD0sF}=&;BI0#_>HYVSy6#V)-5;4hjhrGU zVu|m6F^Tma$asl|6_IhaBci==e&=();l9Ftac>i|FPXo{aj>3 zQwK%pc47U$D*AYf9`n42{vWLIxaoNwvmKN->IY|-@8B8Hd;e z7XOLM&9~3B_$c;$?-1MlS&zQGjWxp8 z$Hf-^@+tGJ_KN0PV!vh{LV4r-u^#=ay*0wu$Hf-^{J8lRheY$up{0K)Z}ew9`WJ_4 zM9jy<7XQwf=G!?cnlGPU=^x4){aKIxeC{0*zCJFt_@_(eo0X#Zrc0uaH~O<4eY3Jg z`1-im;_nWaZ?ai5Uw1%k_h&u&C!1@8uaAqP{!4!U9iAU(A7_An-uJ{C>f(86$Rn6v#>I8*`t&B# zi`g2}i-Kc(eZ3 z_%3dM{)QT#g`RP7^!arp|Gek&?#_GfkeFK^7uPrY_m|9ffbXZjACd6&ak0gp_rm0E z)ITpW{SekX;v&i$$3O99o45Yyk(@Wi#kTqL^)P?bbN)zwe}i6Zn?K&W*#92(36cHw z_p!jX{#UQzdvy@?anBNq3(*(EMZ_D&U%iOBPe6Z9WcO;kM_fdCqn_s&?`b^WM1PM% zTtvKCe*wOGmm>GaYWzPwGcI1*tS>%@adz?dT#b+6J>z1xSyGE)kXUyoFU_uw<)BFY=b-wsfT-@2*f7YuWGQHT{VR{kq#__vfA#dyOcYTdVa9A)dw(Q@m$9Q8M4brz>haAuf4&bkS-X9Vg+3(P?Oz+|<7b6(knOTuq%Uh<~(w91sakeiqPG3>|>!REE z{|Wnje#RB2Bag0{LNAl&+zflmSMRVr9fE!q-aMf(FW&QH@lh>yYV;J9c#cXle+jLLf@b2?($9-@kX70aq z-#UNteV@Yb#uz)*;VCX;Zoy}6^Qz3veuuC7EpzVgOgQ`g>Fv0@)H84T)tO(V$2?R2 z$rJQgC1Yo9l|J}iw0+x%|6A6}|1;q!B#eKj_n&JX|Jr=(6@K(sQChqB+@CFm|0U=1 JQ6euL_a^IwPGkT8 diff --git a/sky130/gds/sky130_fd_sc_hd__o2bb2a_4.gds b/sky130/gds/sky130_fd_sc_hd__o2bb2a_4.gds deleted file mode 100644 index 28a9ae40fbe84db58e59cc3e126de988b5e1f6a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11278 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

      Rwl$WlXVTOjz^GX%n`3#+a@N zKK^yD30?ArtPIP0B|a4=#`>*RKf&quj*gBVFs9I}#MLYCw^wQ7Nquix55L9KCpaSd zigIzve_>j$zDo5~j`JU*Pxxvc>Z?rq_gnvVvxN0)-D6B}9XL5=WsWhmC(*B?*(mKw z|D@=Y&?oDY>c9G~^jp0(Ci`u9UHT{4FWZ&umpWxe|EHOM=@03rbbm~aCmIkxl78W# zm~0Q;mUfcuL3>QL7ei?$+3r6UlX)_(WS-P38E3yr#_6wQoOvl3XZ}jYIW8sqo7H!a z;5^r21(eX{=rc71lq{n>g(?u)j4O6XQ#{hd*cyFXHTvm0aMebJL3?+eD2>HA}h zUVIBZO7W%M?i0K7{k=8f>qiN~*T$7O{@xn#^&_SDQcr)^o>{-*4Dl@7`+LR!)Hm=O^ zj}D7(X_HcXsi(hd&-5?v6kmHUq7IhuwQ*&Re|e|)R^}+hmwNiU_DuhlRpMXeUIBkg z_}aKK$G>Hj_*Q+T_)<@Q*PiKLn=Zb!qY1*-#+5n#wdvwpJE|04>gn&=GyS$ zjVJYe&fo6OZI@$>e1LsoFlOl>^iSg%;~3#!#dc-zIqC(S68dKS&*S)bo&UJ#mEJDt zUujOsbxK^9>`%^9?X0(qG3dZ}e}lhc%UX#m5l`v|()GfgbVBN_)N`N`@ua>!cD{V9 zRnC_(=#zRY5l`ynd13R%bt~ZCjpxlq@^3IAsK9b|s?oQ*NoUXwAA zg&(o6bjD;2Dp(gvwwJz^c9QY%shHl)7|(ae&ynr^BxxrZ=lWE#-M%cbHV!Z^rPVdd z-`3ZDKNu0Yeg5Mu_XqFlm?ezKe-1f2vOU-#?Ih#jH!;~>!kSUCy>gYblZ;zm?jx8BWpoMZxg70|TxWJp9Sc{AUdi?A{fj?Go{eksp?BmsnTK-Bc~tMe z&zNu9x2V+?=s$|d`Dm-ie31TJsc(Z@@%c8y9gE-N{y2|6CGO|a^Kw6v-k13NX@a{j z$DiP{V__!hJA^ShGTypG+DXRSuojd&%Q0^y@=wl(e4ldXVe^jU!TQ^MhD4q=u1xPQ zDSdSizBmila9=gZ`>%&A}PL(y?PQf~>JjVp8XoTq3V#(;TKmZ~y;O2jkA zPkn)F3wou8y_az%;+cBxqnvl{s|{k_ZCsf%|K1BS?>_ENt^<p!KBj$q#2z}WG7 zmNLYAFs?*AQ(xXAy2`wm)G@Bi)AKtIeXFII)G@C7KRw4!eS;V`^&G!t&iGj$`m=sY z`ZBIm|1v@~&&cns?IxV+;kr_r5A|`=&eH~8m0@?f8^MqOFb8%VE7Lvo+A8#nt3snETl-VCCuDN(z?hMUetZ?j z=`nZI-!(>$8E-lZX+0`|7xi}xEKF76g7xZu-`y$wa_irfJ$_VjwRLxubnh!2q5IDg LJ1-HcS~ULwGDZui diff --git a/sky130/gds/sky130_fd_sc_hd__or4_1.gds b/sky130/gds/sky130_fd_sc_hd__or4_1.gds deleted file mode 100644 index 67dfcf0c705e65e7b92216acdf73d10cd5c7eabf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6164 zcmbuDTZmOv7{}My`|Qg(PN^{zqe2M@Nz+AUV34sojsp>vrR62bIe0A@K~#LO%R>Z( zm6hEfBb=@hAw7g76ofBfP)PYuFNGu(R1bj+-H7S`|GxE|z0Y{|R%bSx^E>BT>%acr zy6m;~IWBfVu+Gh^1j$)fcRem~*Sc%+pIuiF@7TU+_r~4(oa+vwTbJ%1SpNBuKNb%k zziI6C_4m1XQL%PT9Pb(3x2W&t=C&=(J)4^kZD}@l?(T0ca@Ewi__DzL?&8Y>=Unfs z5byq~pVSXzeawIM#JB2fyu5x`^s~JFRn%YZT&0oYI24QWu3qIcDg4EN*vSdP!(JH{mRWIOaR!mrbK+{t{Z743I8nvwkv zFeXO!i{(bQ;{<%N3s#Anpsm^`iiM#M|?X}{`Q{6Y1pvAL-n&%a4!cC;O{BAB?M9&Ubv|`Oh_POpq)003+j~Gmdxc zzqY>z>-_?uQ?>clw=sV^ArJUEeuQ_(~Nryf%O3K(O5jDF6@@^rSAli_0Ii1li$Eb{BwGk9L>8d)y;wI}1u&&avueq==c zo%+`+=kYgMFL^K{`x_x{L_39g_B*```Fx#`=R4y@lo#rQP3jw6modH@eL>uKA^+eU z=JGf+p3Iy6M#S^}O@IGL|4~!+9Im(Ul&-sIDWlMPB3`Hu(RV&KC0AsueTKFWH%>ag zmwJC)zwik6Li=*Y;3&-b4B%O*X}Qt;hCG>@C-nLJto7m`(W*WQQ~?3NqUSG^Bu?$`yut*4~6Z& zciQyH3H41!jq016FqZqX9{tnN9N{Z*V~Kw>uDweXFO9>RVlClz5>(>(QUTFIt4J#Em8X!3OmW6QlYD8;s@ttViE4$q~L1HZ`_;<^I8c zsyBvw)`Gtg@xuIhjxqnRD@WulabrpTtS7&Dp*PyOXhgi!pZ%tPi|9AoW&edG{jc7r zc~`&75qV48Sdu^MF>mUP%$spzS^liYys2*yc}v__l7IA%>f(2Dgihkd5`FDO;s>1g<6_j_)jT(J&^}8;*R-eG@Js0=H%ch`~SrRoKB`(Ih=QUo3)VuZz z#tAz@PrUBp)NPpuA5SN9_B(xx-a}LLo}LH#fC%dV8v)|M6*3~jRg;8VX;VSlf zk{WkK$CcW)TByeTk@m!E?peF4ZM9vr9(Mrsx33s((>E^Ff6|&!{or|b+IjhV{}q$; h_lkdSv3_1Ogx@T3$zAI|*L!09J6?N($B1gx{SU4L$2|Z5 diff --git a/sky130/gds/sky130_fd_sc_hd__or4_2.gds b/sky130/gds/sky130_fd_sc_hd__or4_2.gds deleted file mode 100644 index 89493ef90266da18d6212d040127aac9471cf5ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6692 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 P&i)HgP7b_?grWNn!{}C% diff --git a/sky130/gds/sky130_fd_sc_hd__or4b_2.gds b/sky130/gds/sky130_fd_sc_hd__or4b_2.gds deleted file mode 100644 index 796bb4efca8f360beaf9e37729c809d2e79d83c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6638 zcmb`MYlu}<6vy{D_nvd^YeuEPn6lI;LYf{n#S~L9vfqs+D!|uT`NvkU9)WUm8;h|*HcN(8op~_-fNHlc>0`| zP8@si@`Y|nQtUe=P1mekH?#kw(W_RBu30{M^@`Ea>sOz$Z1iO3sx{}*uGoF=((c$f z*Eg|(zy8y`R4>TJm|h!Es!q!N=ZODA?|(nq&vPys3b+p*v>WG@`S0Jqe+T`I@Li<- zO0kFfL;q2K{dj-VHU6#sEb;Ggo0z}kYkZH#_sN`%0bKWB{GP0@rdm(ZUb!KsyGHAc zl`qxbNIUyCiXFN}^dIKO;yaJ=)iTx1?#Y?`goW^{b4GV3u2FAfzw|Sf_1}8Ux%wT> zHE+#XTkBkFI{NTrzpWRwe^Tu5Gs3@9{8upk=6sF2u_q_vZVYSuB;#z{mXmtTLsXAs zJ^L}1ji*;4K7>~?HjJz=Z=RyVmESGC^A_WT$V+|TUC2z#ivSoHdA|G<4Si|vhw z`xoiXQ|zJt?9jjK7`^Yhb{XNj$hod#jAAeG$J`^{u3Z85sXzB0_JjID|K???+o~8< zw|SYdT%YZz->L+JuGozw`t{AK+ZZsaF4q(D;Oh(HXFKY1PiYgnVmFrPXFFB5w$iA& z*-oR_3-#HKy0w)7p(}P{iGH$Ab<=G|)lJ~b@%#EheYT^1x-B4VVmFrPS7)ehb+=J< zt22yZFVtr{>Q{FMgs#|)CHnDV)vaVk)r}V$%k|lg`jspobj5Bg(RW)^HySjmuG?ZP z*JnHGM}q;OD|X{}{b9dft>XUP^)h088uRx|&dOR`ufmu-SucB^XH?gEqx(+%jkL30 zBmBepGkrO~*)F?L{f)J|Q2qmJ+Ov`P_2gN90kL6UF|s~B6yx`#ALBQ&U&e1t-qrYw zuvaHx$@u593nf2Q+h5^}Pxn%Rura3BMwCMTA)nvAiQLn$Hz&Q$O*k@VbBWrGs1N-| z!u^>_)h|@vXu3w&L;ulSU*oLoQh#GItac;ph5mMK@jT->M)KUUbIjL={(8RjL}$qQ z`UY(=H?6HX)A`87Cd{#?JiB3j+B_cD4SYR$4kxHL#-E`t?0d#&rtW`6+M9E=o}|6` zL(U4<6>LVHv*{2tjF+Q)F3QFgC@)0Wcpb_(cM{_*DB}!IjJKnFEy_lY^=6cfTTtGJ zvhh)@N8~B-M7}!YQ`cktXRL>QwEr~VZjr|?{pW=MTI$i{SLma{+ujxeg^~o)PR3){~LzIsP4A&+KiCXAJ#$^0!3u1N7%vdmQtM zIE{$6Q$Ddjp%2_gHRP&+wQS_GHSI>&3;olNbsg3x2K)`N&~EI!9%Vkcr^Qd8?I$@a zlTk*FjmaLA(axAnM;*p!jFI=sTk!Xcs@mR&{tM%0-g!So+jH6)HljZC*WY*k`CIlE z+{?1Rc*e(}%(?Z9HWvH0zJ>NS%-6j+JMSugL-eaxfj~B8wZQ^YseepuAiBcano)r zi=XQp^CQpCM$Vg@FP>%dm!S>UPxgL5j9cu+lJTcUAWrN@>FWXCM45Ku)Z+0c-)a8R z`vM|wVmFrLkLN7oPo58mxW#TPiNAUpbn)!S`_qW`YmRm!?1k%x?b2h_zs>j5KQ$g( z?9X$B>!va-AjU0rW6Air4>SMVU)x09#cnLgzk3$CxPK!&4;Xph(rzrff7wpr#Is>|y@(`OLpR8PFeh_QyAkz;@$){VK7aqV30<)pOZ4Tv5zoH?^kMu3Yhg3W#!ly- zA3xtSP?zr?+Jvsyjb6WwslxkTeSh2I(&;hsQ=0(K=yTV@)0m&en131>(@`Is7d^X| z@~?WeR10%GId+Ll4~_WuuxJB9Jv>8SjtPF@DCpe>*$ok97k7i!Zq3qH#GnXn*ue|FcKtjPoD*r}_tsU;PL3 o6;~9$*B?2+e}U-t75ihw;&+*RWX1aHMsMo>(IP7(LsqNqPjAE(O#lD@ diff --git a/sky130/gds/sky130_fd_sc_hd__or4b_4.gds b/sky130/gds/sky130_fd_sc_hd__or4b_4.gds deleted file mode 100644 index b104a5a4c0f0192c9199262d02d8dc314742bb4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8576 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 diff --git a/sky130/gds/sky130_fd_sc_hd__or4bb_1.gds b/sky130/gds/sky130_fd_sc_hd__or4bb_1.gds deleted file mode 100644 index bd9b34bdc6996215cd20850e844e7a939893d991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7192 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≠ufykw-a$O;7ok6#7uSew>3iN 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 N^uLeze7vly;lDtZAmji5 diff --git a/sky130/gds/sky130_fd_sc_hd__probe_p_8.gds b/sky130/gds/sky130_fd_sc_hd__probe_p_8.gds deleted file mode 100644 index 9da649179bc7b39308c66816367fa2db22c14237..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10154 zcmb`Nf2f{i8OQJU*Yo~3Ki>D8ooOeRDK%s`n{vt-gWBdyX|%Q0N?qH*=`>l<*pgZi z5oWPcFd|{Cav~`qBwDav@0g$8f8bMl_RjC0 zzb-U8Aruq!@KPuy>mh{Ig9iSOpXCqw4`lC{|19FS<`n)#{U+0|c76X+BzA_-|8c^X z@jK(<&T9R{UtKr(>4eZ(TpZQEZ^Zv9=r+RdOvzRczauUppN@Y-Kk;4HP3|p89pmBx z{S9x>e?)%){x_!n#hXHC+!;dmx{}3L&}hU(f6Q0jDPyDk9*mi=;NlI zOE&L+gTEiPupKeNNfJp=GM!2NLC)H^MH?)Yco z{mcCrH)_}XV?vBOFfPt5QvaFo8{Yr)e~ay&#rbnx$zm&h#`+VxkKo$)IL-x;jMskP zd6MxkU$XUmoHyYwHrR_Nv5&}rIo5c5N7ny_+$*@&MAn+{$38{IIX;o|wQ-BjE;hfK z-QO)+j&ZyV>+^U?j(6%}A1}%IOyYJ^WS-{}k@2x>JWn#-`)Wz%+b?*YWWN30lB~nv z7hVsNbzoj(9jFsIPwro2oW3IC9G}QI$1gI@d5Mg3{$lg3A+RnY>a*DTdWq}9?uXAn zi%(C)darNy^-i|0#P6?_Uom+;)asUcfRR)lKC#ypve5#DbJIP^L#8a-$zeH z#s{DDJjwXs4`SUoWUToas`xhCfuULPVk56R0yq=&|$a7vI z^PIoPIO`%ZUVO{*B;zfNU1YxT0nd|+*U>wXdHWdsJhS{k(R6A5H`@JeJU_JVMjh8; zt(+{`>cj7s7(*oUjWwPp8LwYnlKI-#Jx{h~;mPwuB#(W@#Q;z0#b(X-FEUPlk#UYs zWSrv`;lIfIYPP=ZI)m{|{oBV!a{PnSB{}}VR?m~n_cxSee)0*=lg!)mQzY{fZO@a; zkNvkK^JBMro@BmltfCc6VZIh>M6<`g6PXF4u`2)XMf7iFj6DbX`B> zQ?4(>ZeEZ1*|U{(nL3=Ag$j^N>83F)ohYfB5+&*1vwW>*{|_2%W{noPIm% zegfOSR2UP>nC+E^`F~u-BBm9|F+-AT>rTp`%e9kr(Mtf$9!e|y7&6LdsijIye%$f=Fj_l z_Mi9nBKvO77m>OCb369mo=+m#cgDqB|G6FePQA#!GcM-(-}{5ld+bXIF>i~DnfZ@j ziFu>%p!>Sb&L8TF>Z^CON^iEhWa6~Zm8$_F=oym z6JK=S$yEvAYjH8-&*wm{8$SPuTtD{w8kt)^+>YzVo_`~`ZWtGH>xbKM-B2%b-7qfZ z*3aZgpLhQY2{CVri<$ZN5Bj+qfsB(+3$L>{pce4`2LvweAc4BD4mFSI)4BDIO->^hgS{f`;V2x zdI^k+$XDtI*Sao!zNe0Hae>~~Uz~q<2=^M;zP3K$8PuO~adiED&gwtZ`+Kn3dJ)C^ z@jDZW%j@v!^c$%3{b7c0%Xt(v|AT)xsz9q+RQX>WjHsI5iK=T|)w=b3RJHfJ%8t0l z{77j&HsYltG#Md|4;!H!uT*V?*V3w`z5K5^M&?yJ5WVg(54$&7;I){l8C8d)3WZys z(#lWg^_;8F3H!Spd#`_Nq#8@8sH6&?v|o#;u`;dGtP`*{F2uC zIs3dbjB}OrevM_*4#jMNKQb}TsK&}%R6ToypKrUmd9T$4YTO>YZgu@9Z$usbVRh=v z79Y8B%cj@w9$vIAQUAe@e(1vVSQF>Y9oK}VE0?-&9Ic(}*PYY1k;+q#4@bXcfgY>n rJp8MxcYgZn>TNgw)z#x)(b|Z!i+yYj#-Ar=i}DZTydP~;rWyVR+YFDD diff --git a/sky130/gds/sky130_fd_sc_hd__probec_p_8.gds b/sky130/gds/sky130_fd_sc_hd__probec_p_8.gds deleted file mode 100644 index e7f9f38553355f2a28b4f3feaaaffee97503efbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12944 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 diff --git a/sky130/gds/sky130_fd_sc_hd__sdfbbn_2.gds b/sky130/gds/sky130_fd_sc_hd__sdfbbn_2.gds deleted file mode 100644 index 0dd410714bd3dc26a55f0820acfd26a41ee3e34c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23508 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 diff --git a/sky130/gds/sky130_fd_sc_hd__sdfrbp_2.gds b/sky130/gds/sky130_fd_sc_hd__sdfrbp_2.gds deleted file mode 100644 index feed63df947a661065168d3b5768a491639f6557..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20788 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 Z-t^-~@GkSaTpvDmv diff --git a/sky130/gds/sky130_fd_sc_hd__sdfrtp_1.gds b/sky130/gds/sky130_fd_sc_hd__sdfrtp_1.gds deleted file mode 100644 index a93e6cbb78fe9d42fbf375cdcf33411ed10e0ea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18974 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 aAaDBcFYqq&cU;>ayYlU%cbOU#qW=fE&TWJM diff --git a/sky130/gds/sky130_fd_sc_hd__sdfrtp_2.gds b/sky130/gds/sky130_fd_sc_hd__sdfrtp_2.gds deleted file mode 100644 index 026d92ddb1840a0e32b16c0407853dc9e7d3af50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19486 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 L8e3B_*0TQt(UYq7 diff --git a/sky130/gds/sky130_fd_sc_hd__sdfsbp_2.gds b/sky130/gds/sky130_fd_sc_hd__sdfsbp_2.gds deleted file mode 100644 index df9afb9d0ed05158927e9b2618788a6a64ed49ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22778 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 GN&X)&LAT8S diff --git a/sky130/gds/sky130_fd_sc_hd__sdfstp_2.gds b/sky130/gds/sky130_fd_sc_hd__sdfstp_2.gds deleted file mode 100644 index cef729bd854e37479ba9506fb97e574bf4b4425a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20650 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 diff --git a/sky130/gds/sky130_fd_sc_hd__sdfstp_4.gds b/sky130/gds/sky130_fd_sc_hd__sdfstp_4.gds deleted file mode 100644 index d0bdfa4487b6c19c49e59ad3a315505cb844ce23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21592 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 diff --git a/sky130/gds/sky130_fd_sc_hd__sdfxbp_2.gds b/sky130/gds/sky130_fd_sc_hd__sdfxbp_2.gds deleted file mode 100644 index 685d3b02f30809ccfbfaf054a4ec9c0fed96f801..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18028 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 diff --git a/sky130/gds/sky130_fd_sc_hd__sdfxtp_1.gds b/sky130/gds/sky130_fd_sc_hd__sdfxtp_1.gds deleted file mode 100644 index 9c276aaafab6e17142c522b1974c2f0649d474c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15352 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 Iv0M)S16=d7LjV8( diff --git a/sky130/gds/sky130_fd_sc_hd__sdlclkp_4.gds b/sky130/gds/sky130_fd_sc_hd__sdlclkp_4.gds deleted file mode 100644 index f72f958e7860f957fff603d43468ea1e28be86f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13554 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 UrX3WYdzAd)xX6p{|GV3MbN~PV diff --git a/sky130/gds/sky130_fd_sc_hd__sedfxbp_1.gds b/sky130/gds/sky130_fd_sc_hd__sedfxbp_1.gds deleted file mode 100644 index f27f08679b63377cda93af7ac18dcb8d7709cce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22832 zcmb`P3zT0~b%*c#-!qv>GLuOrlbOl;F_W2OGMPMN;e%%>@<;(4#( zitWdI<%ZuLbj0T;ue4)BA`asERKQeuw^wm2|59^nkzD>s^;bPkdAV8kvT=4^FZ)kvJx4ZGN0sxWkF2gSy%XE)f0Z{V7WL~?zj^*AsL$%7 zW?Pdl`hfUF?vy;wKCGX{WAdYZ>W`#so~f}*?xdgkG1ebUo;1Bv_Idq>_!=KozfY(y zjmg>gyzC`+N}gx`Y{u7Bk7HVxvaZ@`Jy$VB(l70t%0W(l9U-2uziX`gbU8I9a?lmo zI@$8?MBci?^pL#Z&xyYKZqvi&iX`cIYfAKsBy+ajm?Q(QSD%r{mp@>7*c?xi75|zN z{pt^y9<~ljk~LpUiGJb?)5H4rlVn3zO7zp)Ob_c{NRln`;Y1(u;(R18e|Emx@?9nF z$t2mfEM@0w)Su)|>2va*gnHZj4y&Un?MKuVtbJMg{ZPuPa)aE7KkS^c%j-YP@8l;{ zSL@W@yHYm)P3ITMozmyohxjHrSG+k%HnP7)66c27EM8a}lU_cY#D$$xc7^?q->!b9 zwI4p5vh`Y>ADPd{%7FIAlT?$D9naVKQg%++=k*`f%lbZz^FG;sJ7sN-jt^D5k(ImU zPwkv)pVwc==en26PUo`G(Uk0S$eq&X+5aW$cWtloIFlr+{wXE-T=`d)Pe>k@eh#@w|h0SXb1?^5>=Ol%L^A#S_W8T=srjpRoQ7 zozGMY&dOG`ze4du63?;;iwD+M$g2j?L~F*` zc%9;tom2LC;}7#W^f|?Gj^clHO7>yoPU-XPFCc$I^3Ax1dQvuz*70eIJCgZbqIq$) z&eic*%4a0!sKMRxA4&e`*Qx&V{D=7))ZRsY7HZ5+{PZj5PWI1*ng?g~2I;kbIN9qL zC_X}zl+|aaqX17YRTESRQtc=PRVn|m!6-JlWc!>R&_36 z-*zJ3aEaoLL_YBr(?jHIyHj%QvHCHMHxm7dFPR=zHfcRZniWBWLSlI##^S>Os2R{Jq8yN&WPZkI2epI(}4RisV{~ex2$! zFaF@a_v5O&pR0e(m6JHQzi~E)b*w&}HSLY_r!?M3;^4l>S=HV{zfSd==Rcf3<||i? zi*&!JJ93T}$i_d**MrhW z);H)_`<1i$Gt)aOy1u~PnVfI^JLNwwzGK->xp&8JRp%ck*R_=su~cA8@K9MbK2$$R1dGxab#Wo>Bp)5^89@fe{-K>{r23DvhjS?pVp!i|8st0dRYB0 z`MV}1^-4TW>W4U;IYJ_;+$2Pn=H0lQ*7FA9K&KIC@S_N!>F( zC;if&Gpq~QISbauhsoEL2P_X;RBz-3Qs>jPl*l)~()5t)j7{1Toz%wU)m9_0{sC+6 zBrf`MvTpF>L{1#ef_&UWyqg|X9=@C;8@`>A_%=M-;)CeNA4-XS{AANZu7i0#<;3sA z8Rj1%-|(rF=rBp)5^8AJQS@~1>(SEz~!zuB%vSI#Uqf^&Q+Vh>Y$4&37-mYWz>`465uT%Z!`48h= z{&V>qQ~#}$_+NIB`G?gZ9Y2v~`H?hN+{ zYUfnDy#8)tKO59JzNR(4SbLU}>zzf%E569ucXWU9E9oQgyHMvwC-c(RwE2O^do`!d z`g?T!d8*=Z4w`*EvUZq`b?xOOKg8u!TzT<_dR?rwj-P?orX&xGp0IpC@-Xm{lw9Wz z{7%eso?_0yrVo=;z{bvdB9`C3Y@ zH4@34(r4p;ihc5+**hy&nY~l;LVKPiHn+;xk5YDiRs0@F`3w8?s_SeV{l}za9>Vja zNXE5XKAerOs(;xz3&uCW{@SHj=x@PuQZoO@ozmyU*S2RIeLu7DK=OjUQ~IpE-G5HR z_ruCdZCZQPjtp4~$epvF=gzkOl*WC7>`zJAxl{I%JEbr7uXbF|Vc+HxX5Vz?UC(*^ zvhVmivv)Gj_;*TP=$|&cM`7=Ec4}=QcS>Gr-?7f@+x(WRd`fzsc(by$-N?tgA+BGjUduMCN?46RA+VkE5|7~i|qu&na^NZ~pA646n6~oaf z8!OeHrrFn=tBdVhA5pILAMXa7yq7@kl)TV?=N!vBdky)ASN?z)pb%TAIT0iv5`UxyqKRlPKU#tD@{FK}WhUayW(ii%lv%tp9 z^E<{588>og+4yPKRQ+M+r0zn$k&>7CXWd}$WZhuzEL%Uk&n51jT`7qhxw9<(@IF}a zV^92{AH^N|jVz0wb{#J>J7=ZO?46Pqj=$#$tK0Cr^dt7%l)6RkEUVwGs78xg4|h>KiZKu?49Hdxw9;Pv?FiWx2e1ZxwEr8e)5LB zle}T?EX!YLr~F}0{vdfn?kvmS)O(e;2|Z8LbGC<H^QK&F(lcl$-ANx&gVf?D`?J+iUjJKmAbm$em^NKc;gRb<6iAPU;r9v#fqc zZ&Th+S9|^EthDqzS#qc3h4nvrsPf#a_77%whmMgud&}+l9t3-5=a|_$B`@^PcQU+B z8ST&T`+6RL+_|CHe$9E>C(eoAw?x+G>G`(g&V9bun05cNW>|T9h1zSsaPnOda;M~l z@vqh%+j^JUzbR#>o;4tMN?&NdO5^UB(*62BWO%=hkvpf#?Rk%my_0vP*gGXJ^uO|( zs zQ2X0cvTl((%hqpbr}(iaen{NNon`Sar*3wrJ@3$+kLh^~a_5fX{PP_b_uk8|&hSya zzd-IhuGpUMoY*&(zA`2I26AWF{xK{c9Y?DD^%?#~&;OA-k1X~-thG=5k7&(1se9zk zvict$(m1vM@SdT~J9LcPS+f6x@3kIQ`W_Y?JLJx?`WyU!*1g`fEjc75-#a09N?$ns!FiUa z@cowZ2DyJl?ku~19hfxxfghyA4!N_;ev$S~o)ZqNPsw*f$eq#`#=q!Awr&S1Dajjh zXIcLGe<;5n)cc*crK}#V=eLqOr7!f~zuV@0;Ydp6AGxz^{zJRH@-KVl9}+imXIcCU z^xT5?VEr>GxsONgl)f?KE!e z89!v)$em^55AV?~R{I^AuSlNzh4*fe`#k@f$-X~Zuv2xTb>Dwa%1V#sL2{?`+5AQO z$}sN__%6PFsP4Zwe@8Yi)BVty%10#f@taH!k&o&A!r3@j*Lw}^7m5qG%Hr1XO zXb)*$y(PnUD0k1(u~T|}Xva@g^Nd}aU((zkq+_T4-Fc&qooe5+#@Yu;KKB~a2TI?s z_tEqR`K~jZ7bE#Dk@It#59oU14?2#-j_*;Nv>V%D?IH5X&t-V7?(fxK)hRu7K)YBE z*?KuG)Z2vpenV*YsN(yv+DGzUzkjphjzrFnQQx;77Qb%|4DxLMr^kB!qu1k{)6L$= z{>C@iZE|kBL&r|(8&jr-jdv^m%3YhPk*@FS*eU(|J53*Wmg? z>U`qlytwvv(nlia_ZOVRIr$=s2O{6}?rlP5`H1p^ z+&O!H-^bp*FYY+lDch6G-WcSC{wt@M-)b{M`3-VsiT}!J=C|5(nt$x^AN9rl-=I7{ zruo+TaW+3LJIS4r7ur*U^-riauTROhpvaxl7uxf!5_#v_lr}Z)Aa|CGzcyy$u6@U8 zJyq~yi+vLkNZ6SXNB{ZT)GCGpoEvA7!_bz0omB`0AY z?=>`{Cs)J>J2*oN$!-s*#2RQd)~DfD(<<+oh9+lec0lj zcdgUn#-8}2zR>@C<(YNYtNC-X{*XJ%)*t5=^3U%(w5hm*+*uO;{5vh~-t(LmH}=FI z^@Z{Cy&Q4(-I9{Hkvq%c@4Ld{UND`Z;tq0WN&J0RSlkPyofbFt#2@vA@pE58-uj=+ zP=15lS>nI{B=g%Z@Ow7&gJ0~8L0;&;{d=wVnSZWJskAEbb*|IW2DNi9hNK;~)B>&QUu559?aj$$1~Sv+VpobeYA?_qD_ysJMgN zSrY%yWfu4Fq|@TYp7^7_F#d2I`k1ai)tu`e$aPP+E{!a^{u$Y6agRKnq2dm5XG#1c zJ1y>!$DI~8_QW6ch4C*NF~7^cnxXs#xwFLovJvyU?5j@mi#`6MzRmTs4w(Cwb1-d-IbyI z2D!7u|I|YBJ9U@S{A17fqrTYxd+ok~?_;=+fZR9meT=j0{$cY^Ebi$mGgRC`?ktIa z^G_`9=_{QUH}=FI^@Z_ox!L?~Jvl@94RU9R|1CG0->oM*%`f)&kNQIY;rkk`yYPKY zBG5z?jU#09{(Znd0_Z{{#h649`|(l z(6d7)zt_WihBkF?IJ{iPPU*2jZ}zk9FOQGUGsE}q8bwn3sXdQ#c3p>5@m?2zK0Cgh z!M+y1f43&#c^?1dxt`lOCC=L0-&dO-?cZa0*^lRY``FvO?DzA%jDMat-Fk0^@*CvN z694>8KJoLnj@p!6kULB4H%^(|#``mrU64CV>=$TX<-Vl<{FI#6kvsP}zuWrA%pdD( zKkDZ|?Oz}2zwLj&>+c!ccPl0O`-UebjYXAYB54eCB=w}Rq(fEOJybtr@Pqt(DCr)q zAI5L@@zc#ah4?dfu#x_;M62kh+atXU>FiVgZPGQ^IO~F4uYT3;{qJGq)2g%MV-K%9 z=e+&zVbhw>Lu0UU;->w#t{rutBj7hk4{QY8<60*R$-&v@kb?amMW4>3l~$r0oPFm0 zTl4oJTeo9<;nev?Om$gpy`<=P|e$~zYkogl2KXSIc v&ZW6C*FG2RTRFOn&HDe-*dP3q%6&@Z#L7E9*Z))PpA!F{+Pd+xdSTi?rSS*i5GY`Cpd|7q5l4QBOhO}3)>-&t3wcF_fAzv?Bgx-853%hhKd zcJ=mSzI?;44?6NQlhbzn#b0KVawe_HU;?ReJPav_CW0_h-Myp7!(3 zwD!*GF|CZI+d9)n}*lwJFoX+B>qWdtnJLQ^=j{| z?#{BcnyUt7ziNlsL)tC-W={GWIm`NkwT~*_cQ)}fjpsS~97#M2H3!bxo3dB`=U;33Ki!VC;hNDIJ3u1 z@05M3{zH7V_p9GOs4tDlS^JFaC3i~R%Ki}Y+gY`-bu7wRRn4|PQ!z!-FYTPlMXUb8 ze9fOxKi6hiS9i{i%Vd9t#urIk9k*G0kg<1azjZS1d8!j9H9)^k_20^W7|+5J)bFd* z{+^typ9ODL{E^jB?Kf)YRQp!_h4J)!NV)x4mi16yk<8P=5t}bqAJ%8)GqUnm`aGra zM>39{XW4jQ`P=%eex2&K(0|{#=BIZkXZr`UtXDa4vM=>Kr2ZoD*L$n^gQY$Cta^1) zd-Utncv|@n_0^}bvVZmKIOeP=cgUTR7uqkr((IOKzsDZduF~;9a%X}4TdB{%&nmC~ znPrRqA}9IpUv2q-^>OJZa+Yt9UVFWh^~ZRf$UYdzC9~v zhiYJWQu&B%zaq<)zgzi;tbSentKOXCclc_{FC;I^HQ&yvYGCCCwU4Z5?c>)e|EMWkw&&XUu~T*}`ft04{BwSi$@ZZ0bC%zjWjl7M{vy$D z{gUY+@-5%biGFI4=^^^fLpjlJyxjB<{lpt`qF>i#ddRuN8tsuz^eew$dRW@5df1v1 z{lIHY56i02#aHG;->tReEa~{)b&2dFk#l@?vQM?Ey%RadK4;rEOy@)%{sMJgc4It0 z3k-HG@^9yVlZvC-pJki=n3KBSc(c_%r0zGZ&q-Zl=ahY`{zE-aX?|J%)6+TYnmgpq zg7q2dZ;NtGJkvTqa8|x3``Z*xWLY^!?<6kloU$v7Z`;MzZoBq-+QW`lXBl#*Cvw)e z6FKYOiJX0*!H4JM|L}Ny@mBValJZd2v9Il_oV9HxcXkd+{}%NZS^GCl)_tnS$m&LY z*74U_{;BDmC5;7pXLf=0@09=M`tbNd{gyRu{FWzka$a3JS^gp`8Y_Ay{bJ{oeXIU2 zV*H%GdUSSf*S~)tf04*JS95aSiQb7H?48Kz*D1SJ{$Gs$PR(8Im#Urb<-~9M z5#}FqAEsUVSA);j+PYYuBdhXHKTh@6%HQYkH~$&dZ}$y3YdYR^?NNV`_@DQH>0$Z5 zx!+FGtc2|IX^o7N=A3v>H#SkNM|X9NnkpWUps@ zPWols&Tt(hJLeOwhrIqmeJs?vVBQz*%t?M0eAw~>(JxT_JGm}G?!+(l&T!qNex0fM z=)Xp5=TV)H59TbtQ`aj;EB;9O?fIeg4>^zOdqYmH<>|+%{#xZT)Z>zQHm-r!Cpw=+=NtWnX7*Y+IMn%?5!)lNaQ`2m>yQIQ9e#@qH>9SHL`NJKI@#{Nj{0oskmC@E1WM5-e-OW zb?$&)NS>D5laoBq&Z%~-`U~|uvPkoKf4qK(0#wIUC;biPU4|or}}T@KjdrK^|n_otLDVd z$i?OlGLN)#)-P$a0F*%~`%epMNWVk@%q>r}}HOaiShCLd$Vj6vRPU>iMf$SskvtE0S z6Z!fbriWZNjy;f*@zSqT{kQV}EB3SL>tv_BZ1T@@;%C#3%pXL*@tZl(Z#=~G5dFB; zz7zfUsiud_!}!;764%6879T{v@e?`GZ&D7O=qEJ?PUMsKnjRvbdRxwLU7&F}6<4eA z-_7`UOj(@U)tbJ=E=!(E!sI5 z5B)hg55h7<8UgT=J6gj=l=Yg6~};b_0^o5D`k>9rBB*t_nE!3wAbvN zk{8-@ZBf@+?@-M;J8n@fBzH=lw8t;@PW)o;O!@DWEq1-ip%Xjg&Oc>O+?fNBgnr-C6sJ?pMjqDL<|96ZVtUzffIVsO!Izax$)E zkK6bH)i?gQCV@QL=+`-{6ZznWO%KTv{W{fuEB|5t-TYb`*P4&#WE>N!e<#Oh+Bplx z6OJF7?^j%}k^PN18PA6Qu<-;c-t~WN@dir2=6_5NiJN|$>aQ^VgO0YiXDT_FpDhpB zd_&@&{lkJC9%f+dgXcPU;Q+PRR@X(}w#h zTr)U3+RWA|dD6aZz1cVT4YLpT*BIN}`^R&}U;2>ptb4y)i#fS2Lhh8j&_8R8{B!T$ zN&dt0#mH3tX-D3%Z&0}ia%Up{v?K4>JIN_>XDa_y?IZ1XX)jVA&JLZMAa_b$IDXpI zFEM*(`;gf?B~RLOpBeuRYK_xxoAbHF_OQ8c~^o9OuS6O5B4gR~? zSDb5#?c3j{TpI`LE7hIxkTEBRNkF&xa!=FZ4gJ&&JL3V#W^{H*#lc{Isj9{;+dW zccI@%$&>zBH`qH_H`qH<>xcWi#NB;iPU1%HOvO(-;>O-d{Gs2-RQ$ASd#TwwOF9=t z?v%W6{M}bu-G=A$@6&y%8LM05)Nj-m+K2m0T7Thrd?f2G+?R?>t-pmYx4iWX$O++&*o$uA$Lk& zIR5_KHtt0uIT<%{XKMVkW8By~8Gqvr^$X;@%^u_)kv2l-lpotpyFmh*N{Jd8Z-XnQMPM&ijcS>LApZ730 z_g?X?Cdzk^JC7^2U-4zdd4jHwd4}kGRQ(}$o=|MRvdijj<)?E}cgUTo`lB6nhrN^f z3;jl>>My+avQh27t$J~OSD&>Xa1SKv3-h;1=ctM=TYYIx;zsUF#ZNolyTrc1o6Mf~ zRieJo|LT6N`#rM%=bStXMedY7Y2P+w_6`2P?Ax4E#rA8yqjA4o_m{O_I;nf)&Q$%c z9af#ZT=vvUB=5l>cS>Fu|Jw7l?$3?y2SrvF$X;^i6W-sNbN$JCLCpK8^3|Z`J;dzdUDoi|i$LN?({i+O=&n`v!kx_HE8>#rB&j%G*BOpZ|DH-pxnu zl)lhE?doTky|cY;_D;!@_B^k`e}kVgd)_yof60sORXgNwQZ?fwZ<{1{rt(KS@`inb z%3F{-6Zzx)8S=OJq@3gpxighN+L1Txo#ZX_8=1-jnmzcei>-W%aq~yi^mAf|eF{4~Hs90u@J12_mx5@|g z$NO1M>JGUxRe!Xj?yz@Kf1%&VRQ=J8y2HLf)m@M~6ZJJNJ-^@rSc>gmkULZPqaAs}-bwyKzmci@(T==f-=OjqL-3)57O5by*=^^i8V&{~7VgG#JhW`1UPJ`;VHf8+>O3%4AdPu+6IScv^`5*hE z`qCVZ-rdAQb^ZH6eRfJebfxJ7CFj{3`atQqR;M3WeY43MyxHt|pAdWG^xvT5_(vZo zJ#nFr@wLiNcs@M+Je&8aO-+24y`Mq-@SX;BvEd^*nOEda<~`U)BBx(x!TbmRTZT1e z?Y+~#YvSMO{_h?7?38}~2TTunPYk`Y+!gI3k<+hJ{kIzb1nY;tj(@cGjh*w}VREPB z346V7zYu$;Y=3R`#vpIDKQyl2WAT4Tr=As@sWyk_dpRZQN)c1|5r*AnG+bQ}y<_z-Y_~zJiZaeTj$6P%5RW66aKr`n&0lboaPsM{6~GEf4&D=`h)fh?S;Gt|DeUaKx>cq0~Pmtjf8pmX?w<3V7B}|9AN7Ut^IkJ?_wLI{+{m4&_Y3!7uj4ATRXa_@2+5 z=AYkDpzea)nee}OrTJZar_=mmkN>DI^gnRF`CW2t6XiF^oeBQ~_nY4(*E-EF_V|zb zLjQxWx4K!XYh3CGQa8w*sruo06!XXPoCXzlkUJCc4}R9-Ub@R^abr*XQC}GU&>r*4 z`|tP=RAXP^WBFAWf$bmggx&e5r0MJeNN&=?o7vTc^i4mX?Y`l@;7o~kQa~t1@iN# zu6NYjS^tpiBzH<)Xuo{K#=ZP2P1Lx9+?g2v@)3)B`B$74H}=FI^@aWq?lHdy-`Yg^ z4RU9~|Bj=~?~VtY=6A z%!)A6sm#r&?GZKC`JxijH^)h*_C^{mtUVo&~~zA%4lt}?%C z$D1g>LGDcWUvriDT|4eHzu4nH>I?m^JI?&B(|$w#1LZf!oeBTzjx)dO9&wsq?C~G< zh5nf*{I>0EqWlKAGvR;ztF7)vwSiH8kh(+eOx54$p!prWqlxkxI=s|w#4@Rv46?QzK`6Q+W*IXZgFqe+eF13Rcc$_`zR%*GIK7FAJII}h_{aBI+!LoeEpF_IKk5tP=eZ*F$M^pm zl;0qCCj4)_-284@?=-*I<3H*P{ZAfkekUJlqWlKAGvR;oX!ASykkkBPkN>DI^dFut zY2L!~rAX#2JYR}T%^$xJMmzm$~tDWW-d;CXzp?}V^sGA)RG*Nzo z+&S0(@!|fWf4@R*DnGINo6gSbCDfl&@@D@h2K&kZ|GuN$-(MK*_y73y1bfTdexJWI z`R8}1IDR(xma4%^-{)lAA$PW1 zf6+hB(eTgnwFc!k$ejuQ{00&kPU?g)5d^z=s1HLkQTA_wQ3 zOA7XX6ummq>CHFg;GDDf-4x>(xz`a@JBs#_q8%md zBEJY{1nq;h7d-FOljhXUQ?}PGg#B}lKXQ(}j;JmD&xF4%neAfoU-<{@k2qEvesk`g zlKrMPx&4W=#~*+_zX)UgPd?(v1F+}YoBBl{&E1jlefPL`KBegE-N8H72jF{qzgz22 zzu%ebmv!}bWd7tMbh_DWuVZP;nQI)2o>)1D|9{x;d{X5;sd8fF9pBRblkJ}r|Npgp JU3sWv{|j!;ra1rr diff --git a/sky130/gds/sky130_fd_sc_hd__sedfxtp_1.gds b/sky130/gds/sky130_fd_sc_hd__sedfxtp_1.gds deleted file mode 100644 index 4b78dc3cec348f56d5ce59eb2176b7b7ba04fc47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21282 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 diff --git a/sky130/gds/sky130_fd_sc_hd__sedfxtp_2.gds b/sky130/gds/sky130_fd_sc_hd__sedfxtp_2.gds deleted file mode 100644 index 8a5043dc76e2e0ad8ab04fde6f4f54763c71238c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21858 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 Gvi}E%UK$Gk diff --git a/sky130/gds/sky130_fd_sc_hd__tap_1.gds b/sky130/gds/sky130_fd_sc_hd__tap_1.gds deleted file mode 100644 index 10b49cbead96bb7a4d791e30ad8dc2b7925e3d80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1958 zcmbW2O=}ZT6o${-WbP!>Sep_osSzr;vVmGeLLGw zCF-U-LH~dtxO64DQn#Yu+KpS|d+(W(xf7eAIxv0OcjlS*ehgF6q|_y#p-&|Q+URx)sg^?Gje`O+fQ{L${T*1cQn^9K(^*H@$7 zwdlrb6y00C8_iR`K%{plYLOmSG(q)=91%Sr3VTG}WrttlT-c+0nMU{<{eJ%g{6!($ z6F4`7Hh2Bwss6`A!6f`W4j;iaxo|SopZ4Fv{fu)wp*jQ~xe(Xg{*LXh$MeUn`EPLF zCk!_c;t=Ax>vyeRNqo~~d|~dR)k%mv(=W#T!m%#yLd7+vq>)@E6)mE^KG{=z3** zA>8xqGj0BNzw96G^@=#}C(P~VX9#gU)A!B(!xt8xurEaJ`e*F=<(>Bjx7+t8ro4AT z#IC=P+JCH**T9MO6Xs6AKrTd{>HAn`;|q&d*%u;r{pN7Lnq_~$PwXq@SqrAMg$P1!0+eY;*GctB~HSa9?33zJlIYs@Sg~0<-F7H$dCEJqx1jp=vFCvs?Xzi-t4!DdD~oBFn=D$eY4*t`nI_;-@jb{TDpHP5ruCt|B;O4 z`|yz~aXvr^-TzyBuPnaOKPbKux$6(P*Pr_gf6MwS%U7g-CGtYwYl*M)v7h;KmB?Lx zB3BHbSwu=Vkp zsq3yp?E13*+TS0T>vMP|B}QZK^7n_(<^?|Ljj`_#`;q;Ma;$TG!aif4@4q(T*<4xZ zOW)q0Qu=0}`=_<6f81vL`=j??wBO)-yvN7$GpgBNBfR7zT}?ad?OD9m>Ds%N{MOaT zspWmiYVFM0++kJbg<5+Jg%tIA{M_eZTyb# z{@Kgtb3WGfpY{7~Mf9Te<0sSX&5|XciG%*@9LVB7!6_;362mKPZ@KHK@T4q>)O0g6_H! zbrWzQ=pPUT!Hu{mxN_x26kNM;;l}vhd*;mCX?0L9B+ty5dFI@6?wy1bx$Xt3Id1TU zLaI_gyQpp-Q`uEF2A7tXmRE@?o`1M`??C76({BgcFZPTcFPx#8|7W+Z)bRT1{QkYs zm3}n599`>2(VeB+D_3vz_eJwWg(8vK;?faPlP*os+>}Q|BLsgEIk-U>tZ-b2cwsvA z+ZlgtJRZN)z7TE`pEaS0=lDe70RC}{@7NE8gG~O0$zRd)$Fo~RewE0*pK_wdaUrhT z`CG=Hi|fZc)lK9-lros%{6bvM_1#(a6MkUd70%}SMKo9EPxy-cqHsFn_tN@tpB}H_ zuc!3hny{r`^WSj_nk%Gb^g04OAk0M#PwWXXVbpW+l?bU zSBNv)KWXYO#Or6QxPBb#K7=C<3UOxp&5i5te}{+u3rmYIurGv&=lV{AeW7=ZeIequ z&+m`bKlKql>K6uY;G=#a;fD!-v|*m zehEvI{C-wQ?R1f&xYfh=Gpd+hQyl7H-o|*>{hg(A#e3JzC40rn<$OwW{hzgQhUKKL zZ7%twW*q&!-NAk39e$&(@5d;c3cq4qyHu>Ib0=DHg|Uyh{?@NP)ZJJEqpRrRo366>3)F93iJ!S8Q>rQ diff --git a/sky130/gds/sky130_fd_sc_hd__tapvgnd_1.gds b/sky130/gds/sky130_fd_sc_hd__tapvgnd_1.gds deleted file mode 100644 index 3342903edeab3ee6b3c504a816227d525c85e0c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1966 zcmbW2O=}ZT6o${-WImE6wS{Pj2C3l6Mrsfg5hRU47oj13OTmoQ;0JynjVS#Ix+@5x z-DD@|9}ooHxe{Et7X>$N+=$Eg-h1ZE+$46uUTB`=oq6V*d*{xSJW}d1RUGAir#zL( zr~NcRot!Jy`I;cpVP6Rs()|F7qt`FyJN5(N?1<0nUyAy_K;*uM|2SdpIeg?o9Jl+Q@aZ7?!ps5o zg~)AxX?*?M-`u}2ca{4WB2V?5I{U)RGW$a0w%;D9k5jYX;D1V(A0WgK;<)W!8TZ{j z`@$Tqr-u-EijV!-(7q5N?uQwMCb#{%sc-HdJ8qdsJ;nWtIMwA`h}`zOiJ#Qb^VfAX zGoLvZB2V@8JhdmB>as6HZu@6U{cN=Vq83bjeAkq97b3QOe*Uff8!W=Z{uSnS!qEFS zB68d3{cAnH0rrb|euRJEOtu!C^>W%h=+`IPm9B9MjrvIG% z{w$HVPvLm5gWsYh^EO4GN3@#%Vd=Gw*50;ct*u(lSBh(G&l>Nr5YKCuBA2{5M}O{i za9&}LTc6kGV-(B`f8f2^rl9Oy?BKC6y+%HI{ik1kp~uU_$F;P7y4~EKk6D}gm(Gs( h=S=`j}ak{sIPn*=7I$ diff --git a/sky130/gds/sky130_fd_sc_hd__tapvpwrvgnd_1.gds b/sky130/gds/sky130_fd_sc_hd__tapvpwrvgnd_1.gds deleted file mode 100644 index a80a5851630be902a89db8355eca7c0d919bed5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1758 zcmbW2J#W)c6o!xO_$EyPN>N2+$bb+NjRX|~LR3*2A~8f%e1j?x(-J`|psEtosy_iH z7=a}d3@nUHj7%UV{s2gbu?ur}&pkQLH6b3jQu4U3{oHfzb?lNM-@i>&&(Hs$B1M#^ z6Licyrm}AyZLas$dV553L0DgYdba)P?f$vehf{;stJkR-PIr$R(|@?Pc;<9`zZ>`O z#T(r?ezLZ`v%TBfd9c-u7b#aDG6#HWkvZs7g=&?6h&G4A;Ts}vLy4@*xzgsjS(@T+ z5fzuhVfmviM3xqipipBvT3rSuX0=P`q?91Pi{jEMYam}kUNM{*@{*Kel!e*t#^_0K!} zhT@zn7qWfxSbSxEUVJ6;%=(48_z8cBUr^Rl{_@}bdkyiG!6osP$ldxAe)wB_<;-32 zmB?LRe*eku4|`pK&-dRF?mj*|EN!0Q<37JpHd5T$l%E|lpuumbGd5^!3csO4^8aASrJYG@RzL$U6c?yxadHL4W|MM{~`xjSQ hDgPQ7)UQpiUk#h9aCt~Ca(pN<>3=9PYaT1h(H~Z}2+7dwxx&p*l5DK?R~==7oqgcXvM0eSCAb`^=NucihrlAZcABpApM%l3x;w$h=tz{`;%F zUq6t|G5u`Bw{$lCyndO}&+__x6B83hMWQ7})Lx6feMT3r(8F(p`herAZyHDX{D=De z1D&;FI%B{7*?zs{ZM3|N7v+D4(+|itj$iwBk=nb+VQsz2@KFL#>57~HIB%WK4<(wm9bOp+9 z#2k1s5Apes`CrI=UBT>S_zsI0lQWu!5&2A(uNyCp6WeFLJ?=qUJMrDqc^=aoaxnfu z{d;^B`t68&vOe22qTR{-AL4j59>hXEjlO?SFuwwvLEqV$j38#5A~rnrVD*L z#?zDfx&4*A10U4OF{eHLgSHtrE}T^Vid$dYkK^bYt{$<@Ie*+YB-d56yCCD~HCj%x zJU>v7z@mbd3>Imx)Y4;aTM%}>`q?;FhF^MVo9b?q_ayhVD z>W#<;`<|E5#Y6p2k-uuPj>wGF$k(&AQR7C$L;c1=uRfWdCu3`)#*K)F`c+P!7X4@K zY25$y{^Q55wH~=1g+4K&G0bBN>s{&Mq5lPXzuvIF+`1#jRo`QO{(bt!UiED*GOBN5 zud&*n_1r#K6cGL{ZmjUH9arD_R-^jXjvK4}S&#nptpVZd;>HU9Y+QZwLq_$@pyl}c z^3w5VJ^JT|0wU((#tQ#*j{2r2jq01uF}irEKkLyyJsA+bE^e&wk4M!vsTtKb9yM0` zvmX7ET0r=^xUs@trhoqFTfc&H68)!f{!zU@e=$!!mzcki&oRc0h+jPZUe9q(SLyio zi06`v8&{RB%NFn_ zcz80-c8q9eGQYds`Q=vi;q#V$Bz@}h3$mU1VQr73PXjt*N&C;U{o1IulYd!|KFROu zN764@SCH*8Zlu3E+jugb@qNIP<@7P4y~+CP#y5URedD_d(m(oG{YmB*JzbFPMt^Ag zBz@VA5%n+jv*+0oXurjL{8BJ}5#JFvqP$ekb5;FK)IUU#9~^IXjQo1KEp+ntv^tMYHa+r6j2tH<-uGj3c_o_~Fl=G|xoWLu0I zEAp>>jlA(bQ^y|c@f6kzv7zvH*(w=H&%^*@+azIt)&M8qTeoVtmuFI9M;Mj)W0F%zvv6&#x>>R&wB3O3B9p_ z=Og1r#7pOo?~%+uMh-n9Zx=UKv7(wH*)?MH&)G`e20FY zK>ghX8@q7tMBIpS*Z&5VIet&l--8Auzb;0-`pg9CA7y|~6TAG|#WYmSF+9`twvd^6*I%7)y_4U+eC0CDb-H@^Q-ANe)qQ%Lz5d@n z{s{Z^Z^=73UJS$Rr=)Iuh?R nOQt;XD=*NmasKnl^@G{c4Sv1oEb5nbC$}Fkbu4S>S1SJjUBi<^ diff --git a/sky130/gds/sky130_fd_sc_hd__xnor2_2.gds b/sky130/gds/sky130_fd_sc_hd__xnor2_2.gds deleted file mode 100644 index 99c9d80c5805f5a1f98d3529ee0c39db17202a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8824 zcmbW7YlvM}8HU%KbM`)$xn}0%#7PHi#EPYnUZxUbp(HU-B^n#ki!Dh8Yqc#2DhWa> zQc=(lG+@9V+CUo>Em}qY6!b^M{;+>qDOg3J##``)MH)0zD`|Y6_3dx(eP+&CX>uTa zX1=xF^?vJHYp=b}o`yU$8XpWx6OHzn&Ox6|`>uF3yhQQr^ys9)#Z zAvBMvIC;g17o~kbb1E1vgpeuZZ2U?K@mdH@;*8_ec=dX@-+S>}r+?kAhcNYM#m@Ue zm_DO1oUep1*VXUNJ5ARqDE+AMf6Ms&A80P8Lzw?r#r!Uf|5fE&u>DPqePswv@@c=t z@`3H|OZ%IOv^Rfe?U43~FIS|UJ>zVAUj4NXoz2hK{&431)%^dddE!1=)w|{%-p*@_O@~C@9}i`{B8m zALqe2%~hY0y3QK!wCfJCubMYjX_@4ag6koL)cSEPMj2ac2Wg-L6N z#Mi4Sk>|9w#GS+U zuT^@RceCxZd821vH1?Z|eo8`J%_aXdheuOdiZTf2>Bu zV%(YV&(4`|{+QEz(c@pVkM(aqZN8m@HA)-f&V+yaY4hzIbeb=E{EPOn{#~8p%)hs# zM)}6LGvUt}70)k?QSuc#ySV=s?FoO&ySK$@dE-z1-QzJnRzF#s!&5p-m`9}Yj&Wxq z|H-?|cdF?$U-bAF?PL9?uQK21=WCR2j5`zl(_5`>tDm1@T=gs36aJR>^z%;38-Mbj zzADDY>SxYc-m@obRNgV}Oyoav)_iAAI?We7{zdy(|GB5kcinw8$~VTH3IDmL%y->= zPV+^Nf6+eHe_r=G_RWIs871W#S;C#tirpyGA^ z-BIuNFZFBv$@I?NDb&j6R0QpH{r+LS=C=dAQ+epR;bV;Px_(=gziG0?5Z2Q2PXysqC9^{vbP{%iN&;`{I5J@VCa&){Dbd2S-^RD0cj zNY8zuwMS>r!5a146XVW3ZiC<@p}Gi z^x+?-cQ!w1dZ*%J^sDFI^ZvIl&*%o=-Trqo_p4+a|cm-*nc*NQv?-poxHqV&eNt|(=(%0+n z{x9+TKlK$Gck;E0`1W2le;A)l?yg9Cd&$}%?fDlf(w;qN?T~iP7AJWTcak@HCvnDg z67R|1Nu0c##L3@DoOwCrJ8J&1{%5Ro23zGlLJ1l=leEJ&|8JD;dU-VAmjO$GK zuh+H8`28PO#DC!l^M|xAtgpzp#GUw}cM@k@=SY7)|9_%u_i^p7`zv;J9tFjnYF}Hw zn!c@T2Yt!&rf)m`o;HD(mR{in%=4S*!+2KNc~$stcWjhXUd;`)E#|E)jh_YiTcxz zywN+!o4E60`Lk~5OKSblvwo3@^~VNRNgV}Oyu9*ZF#rdt#nCwUWhrt+sBzUWKJH^!X_{~5jK<@}k|EvKaR zO^iDe`)B63_NuPGS)F4g&r46-xp(~ePe1C8-bvkwJ5%+iAM-|EQuB^+XJY=mr>5?_ zzjji0;?7k4>4z`+lKMHuoeBT>t>!zgXBhk;zQmm=fBNBzuB3cp+?nv_?%X8rtb6}xjav5@cP7@Kewm&X(L3|+nBJ-Q*z+4b`v$#}eM8)t+CTiAh`JB1 zsYu<4J5%+iAM;0FQuB^+XJY>JBX9Ih@+R)QSpKX#`jT3A^gMq=4zIuc{kk9G^Z(2n zHP7`rFO;jZ^EaKxs;859_aoL0JIXJ%JN51XeaERdnCM)My$s=fbe$QStoXg&MarS9l2RjqHM z-hLVCmhQjiy<=FtZA|8CD(5pFslVxUSAO>@{od%mdAxop+oA8o@nfr4{Jfa^|L|e8 JY-?Vv@PAUr5&QrE diff --git a/sky130/gds/sky130_fd_sc_hd__xnor2_4.gds b/sky130/gds/sky130_fd_sc_hd__xnor2_4.gds deleted file mode 100644 index 50ff909f0a002c6b90decc863b5ea2bb879154d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14184 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 ZYVH}DLS$`2m2=NszEm@dEvi&<{|7p>408Yg diff --git a/sky130/gds/sky130_fd_sc_hd__xnor3_4.gds b/sky130/gds/sky130_fd_sc_hd__xnor3_4.gds deleted file mode 100644 index ad9c935641eb1576fd284978429dc579b2c2376b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13330 zcmbW83yfV=6^8eH&z<-C(ay6oLq%$8Gaw=5F?|rwLTjy6Ai@L-wxk6@8;~MukQ7se zkV+IwB`qP?G^m7N<=Gfwq)|{rBB+E2lB$SRh^bAfSpR>o{hxEDbI%E7lG|_2+I#JP zt^GRtoI7=8m(O41`g8fp8?N5#mrZy78K8H%?5Q>WX#Fm7DVJ zAFkY-ch1dgE#TkqGyatQLe}rH-$h&%+wckgi@kqmu95zAr#e^qh;x`)#x90GyA9MuxT~@Bxe06?8AsZkoi@=hw{McwYVD<`Sf(if9DEf1L<>C4fs zn9?5?P=D6{(09*+>ta%`_f^v)*$&G^x5@lO_}9wsIkrEz&Dt46jBJAVC7`>KIaDDFEWmSTP+@v^#{?PBJ*V2 zVoLvgj`|ASStQwO#qnk{Rq~0iOB6VmNsY8E}cD5@X*Pn}Q z|8i%tKkI*td3Yf{PsXh7MO)aX#L};=KVeLQB}SDkDBF!Tf24(o~N=hXJPuC_eeF?X3S$$sow6Elysz6|KCNl2+KUn-^`D(1EM`N;_I$}zG zw=15)diehi`H4%gUOR9tBJbH>vi!;XcEooqCi|s3l#_YfsJpL=$+5%mwl7e7XCPx?=W^@aIsKBYeAPPz&G5!i5<*+tls z{+Gr6rc+u*efS49TxNC=_N4zx?_X5>R`&$XH&a3X0zW>~T@>O7EMTu2T7dk;doh0Z z<64BBdMx*GFPavgou5Mg<_0j&P%pPXW_2^JVHa!O?-KqMj5+?F~7z9Mc7mI^G{peocrttl6liEX64U%%$t59^Y`rrX64U% z%$xoZk+-*t8Tqpw^QOPZylEG+@-JR#d6!yZGH=?&to&JzdDCBH{=VJ7to+9oBJLHq zUmi&C2(D=tSEP^M*d*fKjrxC&SzU>1*hQ45jz8;Fa4(~O#P`g&eVX%`1F{Eu4PEe|A!wwh@dGvaTZYr3tN|J3({uD6RB`mGALqS^Y=9{8~Kk-xsrh`9r&i@^pRFdCfHfHLO|(b5cuu;0_jcsB z5br~lBzOSr(Jp4(KYPzYz31@$t*iy7;uANw}G`uB$DRHn$DMZZxba^So)7JP0`?BRH}U7)K;Q2eKQX^5 zjBg;vY4mG0UY@Xz?Zb6o{^PjDni3u28;6bvz2tZ*9{)ap=MctI!h96@-mLH>Y=Qo{ z>N=Efh6b4XBFg#v63F*v^cQn@-uCCSKtAV|e}wYD(k@&>S4@cy?*nk3f5gU__cwpP z1Q{3YBJ8#Ddy4)oXCm$^@%c(ju5&*7h-`=FCy{wnu&0RmN8!u$7RY{Wfse@hW)sdq z5iuY5t|%8+;Mk6%y+Dpz{fD3t$omoF6cKN&e4f+$1&1}n=MOP|nms>=wDbNVQrF*~ z0%_;@Ps}$V7R(oscAn40{GZVG=tGfq<|@+8d$~xv|MA4T8$6fz_d%ZCFEhXTL*^cF znYCXZSo*E$i?lO7vGlUVFVfEO7X7*Pm*|7t_<*#xVNQq~hmP}XJV@H-B

      pzJqei zlTnc6d~XwR`uRiaZG)eW57<28cyqpy+&4JCMD8m*&x+g+{CPK!cAo!4&eImOE27<6 z{pi;EX3H{x=0__DBW@A1-jP}H>IG>(|>p<=Stw%84fhEMsc15&bOW(im z<+;P3Q!qcp5@PRM4gbI#;$uA#^=h?u0sFJ(F4Q}K^TV?-*6sJ`r=(;3poa z*}ji=)*8&M|KNP_L`?Q`-!|)SlIITA6H&ibyuSa3ZbO_e*!?o%9=xx`-opKYEMqKY zeIh3Json=MhXdJ9v$1AH?n7)>M7y>0eLh3z2e!}qwa9#U9~ap!>xrnB+Ma(8aTN8@ zm;QSsF#ktfzZ8?-Be9-{dbQg7FUNEEhgb`DU_M}7iF__=xEbRY$i1o^zl%lW(sn=e z1GzWxd&`K}n|QwG9z_CFs=jHF7p(TXRZF2=lkPL#5sZe=hm3qH-=#sQ|^Da)1U9TSZ@^lA^LO5 z{TTl}Xb0pzIf^O`}0ureF5_N zv+bW^{VwN!MA(!5H+lco@V4opFgQ_xgdf4{m1X2c^~6?jEHwZJr!JwDDOI8T`8O5CrZ7x5^rX%|1!!Q$Lia>K9KoUH)we_a9H_db^mR zUp(1#i!X|%OMmKz@>G4!GwO2wMTE`U#SHz@A=54I6it`@)DPvU`jw|mw{Crc@bz{v zL%;I0>DH|mO_%=E59O))JYz6#{tZb)=z6=Dp`TGGohjZQ1F4kPXVg5H zZf_Se;%^!^-KOV7)1^Q4LwTxx^E;-?zfYsSCv?4C%+Tj^NB%wBe~!g0?8Y_hBFZ!L zE$)^bqQy;p#^3yox2O7ZoESI9FCyahb}=LV?h)K)_Jrr3K>yqWyNL1(eT%zot!Qym zpYgZu%Z|T&tHs?hks#vsb}=LV_N}JdF(H~R{iz?yQ{(42vEMj;5uxktVun87!}9*e z=Qok-hITP){jeVAkAMCP%$h%)t1a(Nfa{NWFmJ|h^!C*JIsVL>&%Y6ox3`NK z`FD?)ZuhgI>C&J2p*&T;=b-8K-kl(HyT6?y?2YIOMmKz@>G5HGxKKuM})4o ziy8Vn=WzUnaQ+cFZnTS8a!koIe#NU*W1OQU&WS; z|BqnL&z-J3g1>=qbuBnKZ9X{jTsfc9-4t-k%pe!{7Y*Sn()HE%bGF-j!Ur zC&zzhAREtGxca^!)ovi!brnV?Jo+;kvu8yl(xbH5*P_ ncf}10!vCaMklJ!FF{7quhNci%eP8+f^Ov8ik;N8OEV};#nGm*z diff --git a/sky130/gds/sky130_fd_sc_hd__xor2_1.gds b/sky130/gds/sky130_fd_sc_hd__xor2_1.gds deleted file mode 100644 index f3a323eeaf1083bcffcb7cf2a8cc777a53ac1f85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5526 zcmb`LU5Hgx6vy}ZzF(HoP)&_kP!EDp(-0y9>8N08S>t4WlwL}yL`zbl%m{jj3X%{C z`qqdN5ekYx2p=pcdJqX8dI+JCdZ{3)Au3|}|JT~)b$;+&K2^!quN1{&~^zW7i&f zb<^!`D5=&CrRkm>dxuA^>)yMqyJu_n{%zgvqq}xr-yL=?ZaA0D3f+$`y&!bXEtnnQ zufIAk=ohkeNWUBLUpyz*KPLLwUVmU}YU-$S!Ke|v*Wq)(DDk3xNm&oS)zlX_srr_2 zb;*DE|EssWjh46Zocz~_|AM@J@wd*gZbqw{5%J>uH<$Goe<}4w=c3=?jY}!zuK@MdL=qi~23%FM9P!P=DrcY;V!H5%HpaT=a21fA*fi`dL<*Ki0_% z?|+{jbDi1xE9t|{>K|nVV%qw8vl5{`o^b?>Ko5D zO1#pa{pcT`E)c#FH%{m8&u{jN$5r3sU#gFd(}eKzLK|f-5Jwcb=?^eKR17` z=RTv3`_D)nu;{!6`nC!c@eQ|NaMxH2c#a_|A_>B;us z5p5@yOBQB8yV-gM(C&Wzl-&6okZ@>fZyb#fALJAe`A^YlN?uS z;z?hQW5jqxKV7f>c^BOTpAn4pV1cY1 zbTu@djMK;1cfYKDH_QFPS;KJ~ALY#6g7BL9&IO?mzNPRntRoBA& zI1ZWc`{y}>?=a>ud;Z1yq35H$-+qaC(d)^a&Ak{6aU z?~(I^Ugk*-SL?Yix!=Nx0+)wmo=epC zh;vKg#?k8fHy+l!c|LO|eU0U}R&JV61l6f<3tjnMMSa<4rMBOEBtf_zV zPMvovDG>9PxUpvb?Te82VVsA@b2i8EKjKETSFV5d%O+Ic!j1%>GK7Z(MOpmDE zhBma%$L}HUlc?RIoXrn$ej;u} zd(pq7=Nh5DGb<-`vUWV{^z?B*sNNW1O*3vpT>P8ZmiT>2f8QB!>6QGIs&OHnlEK$* zfKN-i{I3l&P_+)}vknwhN4@ZFb8+YrmtGR^?_~iTI+rI)24Cj&itErdd>?cF)1`wc zeyEwTy8W)HH~a^6`~*br(0i<`ULu)~)@Sa%mx?t8(>vDm<*xek%$#~ujQZR9^tems zuUt{Ter>6C|5}e3(0|36w6JzsgQ@>PRPJPks>bdgFvgQc diff --git a/sky130/gds/sky130_fd_sc_hd__xor2_2.gds b/sky130/gds/sky130_fd_sc_hd__xor2_2.gds deleted file mode 100644 index 46aeb3c8309af80a8884f0ea0d7e15ed7d305c85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9222 zcmbuFYlvM}8HU%K%RXn$+$WP6ryV6xBNn4+I)$KtHi_{9v9U3oHVsKeYq2efs0r4l zh=@>2z=HiHHe#oEDb^qg3jV1O1TR!6SgS&fhy@W$(f$b0mJr`(ee2tMPjb#m8xKsL zbG~oA>;2YcU(P-WMQAkkg@vI;=f%(q^Pv;o8rId{htWoHBy!^nYj^40*LkO*I z2*p?s=xYtdA)z8-kFnH z$TRBiM-__?tFKe)Kau*1&s%+vdfH#ANIpDZdDwVff72Di#Soh8r$qAY{g#Ksi*HwK zp3wTgS(-$~+0_npw!fo#JL)5`wV1}?Jkxi)2N>_vg8F_z>+!*g_zV~32dSrbYeniE z-EH+k^7P|WfBok7EPnAgTGGClQ~SimJG5S(RDX%Yr=PVvBtE^NBKZ;KCy{*b70W~7 zo&QuM-=W?_@~t0Q9ujY9oKEsX_gWqj4?n9&KE5LDxR^WORA#B~_~ZFxOzY12OsLM1 zuWJ5@I~V)vk1&6u-?Vm}eHGc4jnlS2A^kMg*C@Z{VSP?ypAtzAhv&5(Z>v#x`bD4m@3(*A{I%9vy+x}=jW@=f z{pasP%-_>!|D>&MOe#p!0D_)zA5w<2q7#bmWu1UwvPR`&-9hai<-BPWo9RFK7E< z+wV?}w{gv%v+$6kwnV(xeQt>(Yl85pgT%Yz?yzXeoC3i{t9(_(^ zoXs0;ypVYBcNNKx{KoQ-{P;B$$xkTeBpTzNG4oac8Ffu?<%D*t1Tndu)RX8etVHtuG} zY2$7jbjJ9=@zW09rmo{9b<->f-LY<|}C zPQ?f6hu>wo$$wQuN8EWOJ@un^Qa5^MuKw__`F7V;#Fw};=TAF)(L3=a?!3f*N1Fd5 zeE(RxRmYjGT{BukXZxMH5Br+>OC-K#$nr4UXL)DyMbkTp)2~zd`uwl*pU|4o|HM*7 ze8(rvACez?up<2ucjAlQNt}M21N=|L@5f&>pV1=~@f-Pr`9bRG{i-7Qo*n=?WByGk zFH#42Cv~8A5~p7$ar~XcM^%?o{r8){`2Df7V09E$#G1 zSob@`or+&R|Ed1QU8ZY}RzyeKnbS|miswBOPt|xvpNTtHKR>bKJNb|E9O5Che@n&Y zCLO-jI^h*aG%?#$HBbFLw+U3}h|*!YY+|8gon zuzvKcJNl9rOwanKd{)o6(K{J8I%jVDJojYWJa;XramTnbGk%_ra{SP~r1pJ`J2U&A zcGQjDN!`Sqx%zpIOx?6Esk&p_nW>-W{?y&mel4lGW89gkpLXnD^iK9Iac6G-(ypWR zM_=-S=~@4jAGrSHnK$%K=8d>BH-9|GX52jAE~#8_JI0-v`ngV_Ze^>&t}m(i|?7~TGy9L<;aGQm zmn*4tk8x*a{b@(t=u4{Z7N*vtU)rVqqyMl@v--k*MBj-ZZ!Yd`!!Fmgkrwfm&Tl`e@*I%_e=C$)H|+1-TH!i zZ(pt6HlXr>Gk1x*>9<~a=F`mWzC^z_`fnVpUuf^xFD)-yMSI_yFVcU&iTj|VQMJPV E0HD@BW&i*H diff --git a/sky130/gds/sky130_fd_sc_hd__xor2_4.gds b/sky130/gds/sky130_fd_sc_hd__xor2_4.gds deleted file mode 100644 index 8223521065ca200e6fd7ddcdb5cffc0f89b34a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14550 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 diff --git a/sky130/gds/sky130_fd_sc_hd__xor3_2.gds b/sky130/gds/sky130_fd_sc_hd__xor3_2.gds deleted file mode 100644 index a5240b8430561dedb884a60375165aea26d482e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12450 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 QlTTiDqQ(WLcrF+GADPBIA^-pY diff --git a/sky130/gds/sky130_fd_sc_hd__xor3_4.gds b/sky130/gds/sky130_fd_sc_hd__xor3_4.gds deleted file mode 100644 index 92c12a8fd8cbfde4886abdd21d1d245cd654e418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13442 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a2111o_1.gds b/sky130/gds/sky130_fd_sc_hs__a2111o_1.gds deleted file mode 100644 index f2a55fae9e667a8446acbaf200345fc4a7f29f71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9062 zcmbuFdyF1c8OF~y-^_gXOLYTTS}Fl+OuA8aNwipEwo990Y$_nPP+-HQ25b{d_aC5O z#8{|_5HA=bi^QlzR7?zpq(EW_Niizk{!sq_4S}MBda1W)f>NL7yyy95cK4ej>`v1B zcHZ|q=Y7w0X3kfayCk{7ZKx%Umt5OTx`unZJEQ!!>n8dBo31->?SWgJo2X~+-}dSE ze(;%Zo;Y{=k#~P}@ybiwhOAn0I7R+#N3OCvM8^AJ&~4p6OgR;oRW&C2n-C_X_Ss_&fKT-}8CrYOmv7gx~$Z{3QRe zUJ>=D>x%euKK_KoAIu=Bml6N0g59?`*T2U(k^cV2&F^^t`JI9L!0esyKY;jwwG{QC zUJ?4r_-(YifsSb--4U;LuJu>k2QrV=9?OUH_FV-tw6}dB;s+-0z&+{}QSZ3;x3m9S zZ$r6Loon7!ko7nBS^XsAH-1%+{>C%rC$k0oeXJnsV|mg2)Z&P+kIUyX%qRbc)yqC- z9Fp<#4;A$G+29BB7XH1bAme6>7N2BX)+5rNKWl!H`7^GF`p4zx`zyNvaWP&Q#&<;I znPL7gFOvDDVg8V`r7aeu33nKer&`CttTbNXAX> zE68>xkD~s-i^xX;Ei|}W6o1b)#V}3#> zLO-s48{bz^?s?4js|vE-8tfwc5*>)|-=0~;HV4<5%N?b$8n zCuvXfg7ote)1M(9?4KgnV)p~6Ban9HAtH}*zT4Nh9#-g?+nZRAfAsO4<`dOR^;(A_ z+~xc)^7?eu`t!@}AK-aX`!(Y4D42W#&wD;^0^u*mU!mvTO8tm`GksmWAg)iJFullU z1>=jbN8{&HrXLaQp*|O<;`#>GAoCZSXb<%w?9uqGq3K6Nd#G=T!??bUdCT}>2koI= zguOC;bG?mQ^Jqbi8|`9j{PL})Zx#)M}*GX#faW5TDxmI3bNg_i?Q}62TfPsRFFE_#hAYJn&sVos6^!L?c&n> zZU6Dl6Xc0Y&vCK$FSCowp6AQ-c=mKK|M)!fgjVknp5DH4{^@y$e(HV~ZAbr!y~|Mt z>>})ydiE1_>_3q@+Qpcj^Nc#qKao1x#h9M+j5^LgkviJNn4a^DI?g|lI@-mUp5sg% z$6ut5b}^>!JZHM@p@P)WF2?k|Cr#JiTaY^1#h9M^6!Yf(B~nMb7}L8&%&+fo{)m`6 zm)iU>dV6I4n6AD_G(G1J^~u4wKHX!wEE7$~`9pp1SH{n`nl67?G#%#;^}%1MZ>~38 z^QdS#&L8T7zf#|N&2;UDMALEpP#^r2`p$Ev>mCwK$N58j@K@@4Pnxd3S2P{x5B0%c zsUIwwZn#4<9p?}A!M{=;&O3S++j}C(`Iqi0*vhf5;JZMipO?t_Iefw9DM@=j=t;hZ zhWf|Ff5g9!{|FVbpFw_;^7~J${|@VV0XYQv{@7>bdmz7|x$Z>znTOH(!+%d;efSIh zbf@`A)|-8B&r-(SzpF^jrvIHxKD_zw}F_V z%2m|o+sE@3o*On_D#&x3@_7vWmHE_Ow|vOj5&V5eLFU1+5}8jZKd!#3*k3&RUT=!}w9p z@gq5Iw2QIv<2N?*&if@IZ*LbP`Li7Jre0*;w2QI)eL3V!J@Y4-H|=69f9_d4t52>g z*t{2W5q1&&%JE~l7M`WlkBDcew~IUDdge{N$h@f+WBCtmvUM|jYeB9X+Qr!VVL7fF z>P4;_+Qr!V;q#{c3i=N3K4SWL+`}%yUfqAcgzits^zgpk>7__%w z|K@v0V16d{Z`eiHE62a}TZ`MiyF|qGb}`BtmWTDia3+~u**;3@4fk{HJ7>kv>LX%?)q$Y^P!DLE;@df>u$*Au7r(Om+wU3 z>Q3gPACG;1g!*QEeOp)5H~D2=_gfuJ^rt)Mnv?luyXP=G>+o-h9+@o5XNA6d*y}G` zrpI{@+OtwWY7g7M_|ji~@sjv&SReA=xqJH(Jc-#KqHgV7iyH6MtL$^m7#p$kr{DZ|^S4n`&#gkuU!Sedx6Q0B_UhGa g_v+RBjoRA1Z58cKez6uc|IdYGzCFZlV6CO@f3qq4z5oCK diff --git a/sky130/gds/sky130_fd_sc_hs__a2111o_2.gds b/sky130/gds/sky130_fd_sc_hs__a2111o_2.gds deleted file mode 100644 index 98c6f864ae3d677e18396f605050f8cf22055a64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9080 zcmbuFTZ~;*8OPV0*=L{onRCVwGqfTP_Q6oKtq;c3OFK-}Xl;rhH7#X8s1cb2Z66F4 zjhYlCkpwk0V9^*AuRzpD(%1y?QZ+`64_+RM4~FmrQ6gSLV*UTtx4*OZT=ps*PBQuR zd~5&K_wBtdd(WPRJTw~b4x6VMttUb^%!gKZdAPj#@6d1L%eTDe=#58j4`FV)`NrLM zz4q-t|Hd<~TRi>hFP}PiP1xM5cQ4EHW4GSE{WaT`-h1=Xv746OcWi0t#vR+YZ@+D6 zM+jLvgnZBl9|`%e5w?b{qv;UBqxLh~DA}B|e>-(dHZJ{z=+A{^{MiHQ^qvq#Co6nX z-|y7-g8kVLW}XSbNqpun)((T(MjtBKe6#iIRR6X4XJ#z#P?w83BGv!!{nkGu@8I_( z$v-%2?T|cpPU@jwXDWaHS4gcXx&AzpDW!4I5h@@22Ge2{vk?=49^ z(|1{Wr2NKl^CQ*XShjYEKlR6w_*1{Ic9{K4-^p2!y6MMBeEM_N4vA;4C`mi#;new5 z&-eOb{aqK=-(#A~`r+fu@6h$UTJ<;|)_i`YzB?5k{mt4V6`y^~+M)WX=KFBWH!AiE z66wQnd?Np8{|-)-UfC~pt@ir^^PJj~;>W3Y)!$v5ukBZl>)IaG_1RG}yH>j5PPNzj zKh?F_CSU8t*}F%+;!eeD{nlp7JN{Tn@)CEZ^0zcc$veKUBzcKDSLHt(&)@g!aQ^)H z1+Jgd#*quicn52*)^FE;j`1^x<6iVpJ01>-zMN{W`b)+2-|O=&{~CGZ7tDUE`TTdC zzw^7gzBlW;Q*q`A?NDB||HT(LKi2rvb`kUQ>6ky%&u^cXPIX_c|ElO`8}_fPo`1em z*JrDKw0}&fy(Y$;TUX>?;kP%L*FIaJycl;TeC`9}?LJVUycl<0z;AuYd}sTu<~tRy zUcVLflczH>f5IP{-*Jx8e)kjRJ9|1G`gJN^o4&WxW~9NG5#FKxZ^t+cjC@f<8S*%+#lIFbYEY6fBLt@2L)H%pH}(WV|&H^94XiD zi;=N??fmoo{gm=Qq4Lvg3tYkkfWpYwO(5qGBi?2viQW=TBa&XmtSMPBwV zCmwNU%4eU#WB+pE5qGA1);S*gmlKb;Gv%|+@mT*(JmSuj&pO9r{X6l9J5xUE9FO(y z#3SxZ`K)t1*1r>vxHIL4Q<|UOVg5Na_uggm&luy0`Dfnr7N_~lKm5k=w4WU^ui12( z$Na-D+H3RYJI%|VbehNf!!O!v{q`pF+Gm~SG5_$3_FBL5oO#^`oaQnA@Qe0Zzjw~O z{t2gf%s>31z1AO`F>iRpX&&Q9=r`l_Me_v32AJBW7=Jnm0n*~!o z?>or9;{As5$M+!xQ~uzK=8tYFN!`SqDStdLkM~y85#L|QCyrmVuXp~x=K6JisWG|U z$nQL@zv}uIBu*dB_&d?ptvwU@eLl-e#`hG8J9$3J&uMH5_VoJ|??0S+Zi?>(oZ0=V z_nYdkAbCgnagx9H6Uz^Y7xk}qetS7T-oud}l6U;$lH}z*m6P_t_pBYdC$883>*>Go zeX9d<-i^a0>2LZv>km?IaeTEud;eHGFAaaBxwoKouJt?N(^_}LoeL}KS>t!VZN9U2 zjrmT+Yx8HfS>EP+g~}V_&P0BWBQL&_yu_WU{NX8$$Fi=~$&$QdBkojtZT%eA>6t&_ zBj$IUy|ho=n5d(%GSPJSojPJU-<{QFi>yst(U7CxEJJnu0|AsF%kLLyY zfq2B7DSxcz7rfb4Nj&1tl+WJ`_&aMeRQRaQow#$ZzW$b;&&c1twIq3oJ5%|4|22>O zj(#8>ai{xzg$9jqb;vK_@5lK|rc`!*>6A+EZ))zk;>2aAuX^gv(BIr#IH(w(KF@r` zr$3)h{umv{qv&r}>~H6q{^sxF^9AdpbAx(09@_KywfpqAx7JrBtLjslEyY(!UZ`AG_c_FrbQ{7v5nZ{-%acdRNk1_ d+Q_Rb?Rm{qY#Z;5+BV)BwQaoJ*0!8w;s0E-BBTHS diff --git a/sky130/gds/sky130_fd_sc_hs__a2111o_4.gds b/sky130/gds/sky130_fd_sc_hs__a2111o_4.gds deleted file mode 100644 index cad7d46cb3496963b1f773fedf95a530efd4df21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13964 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a2111oi_1.gds b/sky130/gds/sky130_fd_sc_hs__a2111oi_1.gds deleted file mode 100644 index 6b51a02dc47bd66ed245d52bff76eaa30b1feae6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6816 zcmbuDZHN_B7{|}OcV_O)ec9HyTI()ml!UaYtA^B4?5^7jB#UopX}S2)izq2dfoUI# zHYy9O4?%78LP}61K?G7{e#oGLD1u%P`V!WM3M6{P!v6pBoafHm-JO%(2A1FMbLM~k z&pgk}**Rk(Q!L(MdJ4tzccx;xOxav&W@mplwPLh=>!w{BckMBzQ3|ged~C^0AHI6( zs^KH^Um9Px+Vq6^+F4Pwd)uDAMGHpn+%md*^XT2XM@Kgv30c11hFwuy=WdV zQAg4An%>TmG3KcJ)HbCI8}hpn=LFMCQ$J+&4YQs4Qa2_&3D#29&NrrbpD{{~7w?jB z%LB#~KF8mV;q@3FGe&7n$-GMFr}E!N|8R-S6TF-u{DP;&k7ORDzf;_=R zt9&nhB=e~(Psw~LgKiw8f90!`!3V~0UM1$w_G5#)KbP_TsL#gFF=%lpqkXvl-opG! z^dxx_e=8BEj^j?Bo&SD2f2VtX?96hW^?=UcTJ51ks+s3!V4}WO7rheCs6CX3XZ3^b z`g(bN1zy80)Z^Eb!5WDxF`lpAjC*SV^nazS9)KQkCC0P*+pWK@ALh)NGegW@DRtuo zuzp6yvwFGy2J0spTjy`({5n`a=H_z5cve5^uD{ve=pcQdcMLwo{c;70u6z^M@*@6L zBF?^Y-1hlk%lyOtvp0s}UrYXRxA@1$GlZ{=D?R>Z9BWG_o~P?FL_RjI?9BJ)d6kDmudJdDj4Kh( z&7XauKl|4td~ICm@#lH;rCv#2#+5#Q_L;uyf0OXFaizzf=h2sXC4CuJPVkrK&#o`1 z6AoQhmGwU)uAH#GPS9g5s`9y2LaWcMrHxOnzpjtt@P9-4r>w8V9Ed9s&(*We)Up0b z>KIr0^sEzgte=uP#+5!jpEK(C+$pJJTC^K$ zr!Sv>C3TD|eR?yF{=UxsDbc%|rGG*j_w-M6r8!E`vwzeV_xkn0deMcUQgrMe^=>@Z zKk64srQJ_(f6#%t%XqGT z`5*CZ*{{HtapvL1r_$T~RQYPuY6H##+1FrMO2$hoWt`+VcGpc-@je<}f_v1ljNTS5 z!(5KMuJ~cOE>eBKsq(pv{fzJ)OFhYXV{9yxG42oUla!3tE|zh!+#};nx_K~P)=&2L z?*CVE5uVZM_`!a-$@lR)%)8S zOpTyk*l#!aC;Gy;awK10Knj-um-?-HvmyUMS-k_#1I0;`#l&+|$=YCYl5I>dO?_&>=V9bHlSv01Lj%{X9Z?4LAa*RwpHlUev?WA>W3 zD_S#x4@$P9EqdfKA)`t9+M`y#e1aZ3I$Y6Yee;U!e^&Ube(lN@|FhP+{BIZ;Zqeh5 z!hic0KSTK+G*MSHjBoYRPyu)KXQk%1Em1FRL(STYdZ-O`Z2|7h^O*VI!gJ3&-l^V$ sZFt*n(|6Dt55zfF&3##JQ_YSgZF^IVx3xCC+3)tfsc!Wyqk4h)7qYtN#Q*>R diff --git a/sky130/gds/sky130_fd_sc_hs__a2111oi_2.gds b/sky130/gds/sky130_fd_sc_hs__a2111oi_2.gds deleted file mode 100644 index 838ec9ea442b62aa132c9bd2e8dfef0aa9a5a54e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10046 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 CkC%}E diff --git a/sky130/gds/sky130_fd_sc_hs__a2111oi_4.gds b/sky130/gds/sky130_fd_sc_hs__a2111oi_4.gds deleted file mode 100644 index 867fc7b16472170826c4126dba31823337b3bbc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16246 zcmbuG35;D=dB^X}ylv*a8PDqR?E4s$M8u&jP_rb)W_2SHLIOBp5|U6{qPE0>5)1-_ zj1qysEqlybC87(f*aAj~C^c1t*hEtynO2BkTD7hkMNkR}GXLNC&iBr>J@){^NY>Bq z`|j_a@1A$wcb7L)G>YEd7Z$TUz0C)Ufnus?7OTZ#`Ts?yw{gqCm)?5At+y4$cwhag zm)-G%=YIWT4?St`J&*gyu@_%e%+{;j`9|Z=D{kBM_=`7QcGJe88#i8lXk+7sOLpzr z^%n;>{-CI}ilQ;tTfDw#4D}Wl78efp6-Dt?`?vnLiS=>&zf;@PMvAV#C-~z%`|+Fa z&`wW@Z%pir>i_>$6i)Jula>!0DvJ6y_1dX?U3IV>#H&9hF~p~09?Gk=OO)65sO2Gk z-^&v5`>u(3D8KjFB`V+h$CiiqJ$EJI_q^Nku=Y=?@1n%wA-%p&a~4US<8%^lzS8or z{u-M%r}ketzeDe}affbCq`tw2tv*P7gAbPYN#!2UYp3#^uUj7CcP>uE?<~bUJX#d( zu@aSU*DMe52mU+}e_+G%f%5yWFh5ZF{ymn5_^pp8GG6PrZ4X%ktveE#zy1ZAKgik` zctRri0j(z|dFIVoF~8TcekU1M^-ZcCC-qHkxB6g+H%nB#6Ti@Fr~C=6ceaE06IUgM z_`aBj^2Swvm-5C{GuuJ@vA;cYfaLh15I0 ztwhy3*Q3`?9HW7dJPhuX*n|WG^%FkSEd5AxKXCnUeTP+_bf9mz-2P!|M z_0M(?f5-O|iSM}I@{oC%Qr~hie^Z~b`Gdr#|2dKT%ypKBe7NPgua%R}-jnqMdR)svQo#MjjKo#dHkr|K!cA1|@c z;>?*dI%n>@-f8a}6Uh5lSiW4p&Hp&>pE+#z82W1D;MXkfRJ`nO#QERv>#uPaJD_JFmAqlvm#W-rsY5oaa*;(Z%GO6&7<7{91q-@Y!L z+HKjtBKWl}`%gdX__eNUU)I{%msr0^BP#AxzC8YUe&a&(yZl%48_o->{ocbiZr@rW z;}Un~#;+YPuU=2YBks)kjos$albHvIN8Fk7`ybJ^I{tyXOVn|PxHEJ7?UUwpj+7`b z#GM&`SpQP2KTuwXJ2U=r ztbZleA1E)xof&^M*1sC-50n?;&Wt~O(vExPNQv@7+?nxbkDE7lbBXdo+?ny`kD0fy zuS9tv?mXMK{uTPOKBxNe^P+R`=N5OKbACL>S1)hJ^FyFq?|XqEe}4b)^NZ^5e8T#N zbMPANLvg3#l|Fp}kN)ArBks)k^a(urhZB#uGw0JM@aP*(JmSur-gJo=9lkGM1E4<0vf=;lN`;?A7Ubrs_d?@PoZ?#%i0Iehw`6OXtv z=hNr#=zmT;;?A5;pTnd7Iq`@)bN=Lvd6Op+@rXNf{*Fh?o4Pv@kGM1E)2FDL{^i6Y z?#%i0DLnd@6OXtv=hLU~=wD7e;?A7Uc><5~h7*stGv{-jz~j8(#3Sy^`J5;4IBz)d zh&yxs`iyz&Clc|9J9B<7P#Z&KFq!G=_Mlf11~~<}{!FiQjuT@7E5PSFbzG zqkrPZeC7C!-R3n;InASg;>UcY-(eoe#}?;>oex9pKzK-|HO~^^ZoJS<2+wr zoYuoe`uEZe)`uZ+p36DO&tGJDNPPCeMDo*muHq!m^DifHew_68o!48Rhs4+ZFcB}- zw^{wCsh{tgI8NC6AzjDn*`AYl^M#g Mlf=_Eg(=cCTPXQ^L2S^J74KJqThL$0w$ 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 K*2$q(D}D{bt-;3t diff --git a/sky130/gds/sky130_fd_sc_hs__a211o_1.gds b/sky130/gds/sky130_fd_sc_hs__a211o_1.gds deleted file mode 100644 index dea1ba01ab7fe9708646b6c01b1f0a3c6b2c99f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7314 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a211o_2.gds b/sky130/gds/sky130_fd_sc_hs__a211o_2.gds deleted file mode 100644 index 7006a2d5b9abcdb12be63e9f6e4e05f17a9b3014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7536 zcmbuEX^a#_6vu0N`k0=cSr*-BRyJx>j8PI;j1qzeEOfNP_Ym((R^QwRKUUgMh z_Y5XAQFNi{t3}xlrfGUjW{xn2mfxFJlrFvcvSpVpyUCcIdUDdVyC$9a-qTwr&)6`2 z?V5RWOkYy%_ND3aB{%gSJ7MsOMT5&PAG~V$;NYbb`}?mQoM_^PF=;z8t4!JznQ>-Z zcikBCmi%=McqTpaUWsGk(Wc`MSii@tq~G-bI{m|#_7cx*AwDlKM%miWnAUsvb7Z{r zsuI5;^mt>6_dS`f*dX~x)=?bhY1{XA?I8W;Yo4s5 zI2-50G2Q|fd6YQ5vYuul{pNppGJk%F736Kju-Q zzsh>DpCwQBjVJ5LW=K6G>&cGuWIbsv^^nZZb|ve}K9KrI*1=+56vT`w6n?)GGi-;vi< z@)G(}KE*ol*)je|=1U2$-2aSyoZk^XbK7;L)ODpCy1us9{HA(+>bg>*+j9N0tsn2T zKfOHu_C}nyaabRVOZ)=on{nm1A^C^+#kbk5=I1zK;E8tY@+a`yb*;w3pBSkn!_4)=j@d&DWym-EZ{*ZpY?^1p!n>=e)T1?U5DCE6=}j*~v;Pf3q)Wyp``iXXQ`go4>uf*J+FY_<7@xc6xS0AespYu;YS`qf+`QjysQasK-eb-)@Kb<08 zx>+e6=byf7uk;&Z#B02(6p!;y-?dlz`F8P|>y+Yg{^`5+O27D4yw+-^c$|OwuD#N4 zZxpXB5lkI#dxxRScRx+NSDD7ku z&$T>{O139wN;|1}!JXCjyshs}B)~XgF!~L(%<`;VjQ%E~W=DIzj+f&LkjJ<1r{r

      %RxbKZyE4KHt}W^|aqx z5Lfbk)jkX7#j(Ki7{4DYaUZka6O=KYE89Gx=*{r--+m55jR{9bIo_de-K&wgKaM0=&*`TlsG_!&swe!p}K`PskX z4f*~Hk8$?n+IN=UK2OujagIsOOTq6Ej$F^IL&-SnQ>q76_8*;$`9VJ3gq{p~2`RO*(H`{knc{c&m-zgRjQt=U^f_ORe zubJ%0>yB|{==$Svyzc0Ci0jVAm4WMz$FXkuO4iM|GE~34AHInBpNTc=h~LxgeNu^d z_4>j6w0@oV${6=hdmna0ywcBak-W{LJeikqWhg(7<8ui84spM*apmdN`R)Az`dPlR_r#)|vDGM$Rgh$|7V96$G&FU|aV6r`Zy|)= zu+B5-0sQ}#^uU@)OnMNW*iCCpGWD3%2XC1D%N?fGmki89jIS1-(cG)mo9chv4C!yG z?QhD6{(2wc>tX35yA{2xFpb`H?kwK!N8``cBR(n_R?i5(b*J^u8Rp~n3yf!^-x&|b z!2If8aPE-&yY0LBPn$Jkh>zbtcAdWqzX_$cnY1^Z-oNK|Yl7MXdtvkYfaIPwanEx% va8){cFLFnpV116_xUngeXMMNM8g0qFw|2H|UvlS*_r-30S++BbKQ{jZmd#Vy diff --git a/sky130/gds/sky130_fd_sc_hs__a211o_4.gds b/sky130/gds/sky130_fd_sc_hs__a211o_4.gds deleted file mode 100644 index 1626ee4219f8809f76b928bba3d87a111e150155..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11728 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 STXOdOX4bsgdsmRX)cg;+&xTe2 diff --git a/sky130/gds/sky130_fd_sc_hs__a211oi_2.gds b/sky130/gds/sky130_fd_sc_hs__a211oi_2.gds deleted file mode 100644 index 0b419613f3040f837a43504ab2e34c8064de0a40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9072 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 lulxUV=U3J2n~c5+e-kX#eV<0||3>flA zm1YQK_aZ7vDncr|&;|NX1Vt24eMlmt3thk*uPQ0J#>gPKBfElH}a~~T0*_igq!1O}gFEd8j+TWPg+xU6X-g;Te zN%IrxpAncmDeWrJen0AC@Z_PyU|7L)tfR z4?jw@*Dszg7>~tx*baUN7sxTB&69B@*GhaO?a37dqHeNCG-R>_u`LZ`{dj@YC)r;8 zr9hU~ACq!2eha_z0@*+IRmpOT`BT!)ekc)pzy7-Mk3K;Qkxc6-QVNC4> z%(*A+wMV4f5qk5Y=t;&Aofueq7WeR@923t)a2%NdGn?Z-0Zp}c;2&H{yB>c}LHnL5 z#*6ios8{UYb*{aMe*LwUZLf1Bf<-RWum+S7^!1tW;aOXa{Q>oqsMoJOx4&f= z*Yt7JUlquBX;-4WsK3zlPxnW&XU`t2)d^k7JaK?HUq zO4y6~5kI~ze>tBiHtsh1ujD#UpFw*{uX+g`WF#eLiAM3fzsp z(5{@{<6q{_bOk~-RzRr+j_=(3%G)X}c2 z(&vAQuCXnUI@*<0dgdA9X8tLuqg`30XP#5X{8v&(yRu4eHX}ct;`}Qy_vgy|3!S}U z{zX?mN-28IKlRbNYJI#^bV;HV9p|5VUta3p&JvydRw+8pKlQ%6RG&=}UA9vxI?g}! zzPwbQ|0%l0Hl^q||J3{PQhoDt(X}=zMaTK4-j|o^+pmhQbE#5voPX+l`FQ<+ap!%` zQv>fOx{jf8c|p5h#+WV^{8X`iIM?$;Tqe!ZI1^dPK0neWq z&)w5yzfh*jF%CE{D07~zaJEo3?u1XA<&^1=lq<6xh~aUx>B;9vts~D9GD3Zxzm<&sTjuZ9u&T;s5VIp8xUIi^sSS<^9ITofr8Y zs_&gj_kIhz682I(_f^K(!g*Lp9qmfk`{_qHKlQ)-xPaLKh~<_*j(7Yh#>O+Ai1IbC zc`_gPUZ<>GgfhGzD&2TX`~Cbs?cNWOSIpadaiIMQG3-R!o>>d`DSn`PzIljZ!Lq11N3qCffm;m;%7_Zq{p&vf|%+Mr!IT&|DaN4*u8^Q!}!=r8R` zl$ZLqXNu1L9!MSS$|`;PCd|XL==U*!T&uJzQC{kw^_W-GcZv1y?8@HrWY73z*avD@ z9~tse$$gJ@CG4gCIc|JM=RT>77Rq=kVK3FUw;*4BMEs`&X2?g{l_;;&=Lrk9kLZm%ByJ=a4Ti_s{(SIqdcW&m6hTeM5=zNuY|o+AKxY8p3Dg3xYMqz8vo=7jN8Z9FFy?A*@$)}%1ixo500M4FAJ;GB&3g;{4*jQHIlEk6i&1Yt=Dy3yhVkb5Rq{+nyAt-&_$}t1`(}zc zS90H^U8(yg9@qT-f3~p)@cX|#ux1it4}xdYnv~2rdgCG67yodxX$>WFm%zrW#b>I& zT7y>qD?#G%?aguR%^KI<-~+riNgL@6Xl0$r2JLwZaU5{{>Cq#SG4YJkw{CU%MPu~% zzJUIW*LVBFKG47F&p)fj|6c2T{HH9O*Q3Yz^WXjRTXiyl@z0$$vT)z^9h~v(jm8ez mVf;_dei%VNdVA%)HMOgrw(n|wC#-LwZ*0uYHx7SsZ2kdW>lGRR diff --git a/sky130/gds/sky130_fd_sc_hs__a21bo_4.gds b/sky130/gds/sky130_fd_sc_hs__a21bo_4.gds deleted file mode 100644 index 6745bbbd38dab60c384d4de467ef4f7ec4e60739..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10170 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a21boi_1.gds b/sky130/gds/sky130_fd_sc_hs__a21boi_1.gds deleted file mode 100644 index 2bcb12f13de605ded3dfcc7c3c01633e0b55d393..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6936 zcmbuEYlu}<6vy{H_ndRjed$z_F*=A)(g%lh6q3?n9PNeW`;m{lI+`R6B_lzmf<}fy zn9&Oxi=xCHWI{im;+acKOD zy-OFE)*xLwIt(}5yRm)JgxcCQwGFFl_iU)uR!wa0x_@1*-55VICaij9iwTE$rp>f9 z<&80izcofld+`ft zC(UW}uf_B~lW~<8zmfmP=s!A(adv~xCy4Q*T{1pNzlC!#>A!GF+AX0kyeWDzxEbfa z$7FobPKl3XJN+u*zfpWPKjCrl6Mh+!@r2h(JS5`@uTBv83<8`xG7sTRSO7=H!*P|+ zH}b!i`SB-VtjWfB<6?3w?=~5eEc}i0>tiy$+$$0v$@bjSF{w8Xik>umGQQG($(TIW zLzz1uaVQZ_GTs%go^EHn)iL-T!I(Id;b!=L9R8FTuXs7mm9SICcBfB{|BxNO$<@0Z zS^8NY(3vyNs6@DldhZyluT({^#GbN;685Binwwu6=VzWk?c9p|+!3>k`lDTm_D1@t z)R!?we-ZNiR7`II)^;jvj=3J`r$qlo>v>Few3 zWImL#4onEw1I5Aiq+asb%=HkBUAGg`zY125xUn43p48V|K5c#5b^ipliZuz9s9FD6 zoGW4H!FGFmk9z(Ze>wVJq5rS=Dc?rl)i_teUOXu6mavzxU)gSncE&-yizgZHjEk(F zIz8t=KRhh8Zj}fnQNKT1|0ccuwQiLdHmRR$_5P6c(+AAIS8|`jHH2$GdRyTUb|vgd z|8@F2_78Ra{7v+E<-q+@r}sY;y)sxMdL`_s{{3axCof=s1TndvX;-2>Q(tTneLoQo z^+jb#nkjdod5?pzH4-J+3Wf?i(e9x^FD4y*__>z3YX4JR`9F zl-0!;19m0ssd{gd=<;J@Qb)ToOV2u?U)G2)NgeIVEIrqWIBsqN7UDas8-w?Wy|WdC`^j zDMiQiqu#Zr>dVJPSJ|!<9oLU~*IuvJ{qLSPbG(=1xsz=0JlaUV***^=&hQZO3>LP6 zH^eOCc_BE17#s^-Xq%6pqrVsVsX*hHTY)w{D?9T36TXJ~lB4VV;g&E8^?M z&(R-=zfYmvG5iHVuY=x^`OCc{c_a&aFdqCU2ffe9{khpJXFm8ISb!grxeh;$$#Dxm z%D7~N7!*ZwOeNbx)R@vchnQc-8aQ$t{FV4QvY$OHWuMvm9j<%MUoswfpLh4S z=!Dc$aYxKj2|0#ciF!-b+j_=Y^Zph&7O}@@SHhmDFJW%fE6WQ+uY^5SUwQ_$cK|ie z5ffir4DCv^r|S6(lluqx#@Z>pSCMbnm9VGkOK+ieuvf}UVn!q2A9f|$GxbG0pHSb= zgQDlV2giXuQ_s9nuVmh+Q)cC_P(_@}5&Qcwiy_WoSE4=DKl{-y^-B7sU76+Id;q_X zAor_d7Oz1y!>&Yos(<#QU+R_gOS>}5zrCKLehMF93`f=t?aHkBVZZ!((JQ$xX;;FY z8ovj>-Z6}^HYUfRU5WNoeJ~TgP=CRhn5;Y6m09)2eyls{`-!@}7jBc0_yX{LSZBx7qmhB={%RpLXT!Y`uqTIrU0@tD#;Ad#3;V zSw;=?AF8izhJ$K|CU)Z2E>o&x&QXhZ`b%Hjrn)B*Jce(k8jKur4NP=UC(;P z{|LgCaLK^cyP(-qUA+5Z)TM8RsxHmJ?i^0_w2A*e@0AG`qmI_2^0ryu?c%$D?D^(j DHzFE@ diff --git a/sky130/gds/sky130_fd_sc_hs__a21boi_2.gds b/sky130/gds/sky130_fd_sc_hs__a21boi_2.gds deleted file mode 100644 index 04987e85a56271dc8c8060e49c61506e2e134f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8126 zcmbuEd#qel6~_0>oO9;P^G@px=F*BcDDgoFZA~;yQQJ!!B#;V-MXB`C@`y+crj1}N zN>J+?g@i=$f;LgWU=?2_)dC^{Ap}&SVj>|yYyU711;a~8tlziS{$`)Kcg_KHlF9GR zTKn5;?S0nXXP<4$u&Td(`V(TRr&8~DV z$(_r3b@vIE_3Lh#TQ+Do=kB!c;ONM7(*73FCRr5qGhRRG9;ANa6m)tBJR!2X*tz~q z&WZH*zh-{VzH_~g;CXzpIFmQwcOdgfeqs5L%s2gGB>mZk%}-|U4ta^=ug~Sozy1fbe+K+^Wb+*S zz7}H$WWKfkSiU6fwSPoX@2)XDncf2ZJ0ojnS{xDWi}SfTtOuXZ;BnOAUFZ)VvB~)V zLcGB2a?D2u@x-eUi}6L+TU;+9?48$`-xGGmp+Cec=JRo%&mgRCpNX~OpKR}*>~W*^e6E8HZMhD z8!>-xjjTO_{-$9QQDI{rPN{nIYOUaC*_A=Yx}P@5vhLAwZh zQGbq~5AC<^@ZrNVoKMlNBPW#C)0w}hx9c&<>uDOcTl7t9PxkIIy9j?#KO3&cHqNK7 z8|+zreTsKuF0dZ5z$OZTA2Ing*3S2#5r2sN^|kmd!p?r_5B(S8ulqmiX@Q=(`8pO= z$0AZG)bo=*zAIl3s$&t|7WJoleeyr+PaGNl9Oii$=6ijCk02uL;&^lKVO8 z_1?(zeEf!8guj^oh`x8gbo~n=siR%2(zjl;yxTVxh`haB9L?XZpRZqx6Cdp(V()pg zi}UuAd3w}3_D;WkJfYQf_w@dSBdMcZtkP$zO~-pK^CzjJU98fxPN-x3h}6+8R_S@2spIt*siR%2(sv#;U3YgR zb+n6Bde$l9vVKMCXcw#W6LY2;tdFFQcCkwD=1^bXW8H|To%dS(7`?rseoWUmMl?O^ zhx+=iYJIZFbZIJ@j`c%*@R!EVR+}z6B$|%(Lw)d<>hmS0%kLFU$NHf@_)GPz7fsi` zQ8XRvhx*_z)ps5>U3a%=I@S;M!C$KH9WY)00?~A=AL@g@R6j9iy1{zUbgUohgMXoZ z(tVltU-v8AS8>lKS-<>^HBNyPFti*hSdK>HTm| z%Q5y11^x-OL%TTo{5n!UTnpT1xrTP6;F zyI7Tf@|fk%eVy}9GH=?&s{GlGv8fvpd3(E9kw4opZ|X(nO}ki?Ki~H?|B8CMA~OF9 zY8Q49{?htkyVgmjAM$C_^BryQSL&HJK)#{IQ30FY=r~y$E}$zI`^X{VL2=Qs6<1iFR>Sxt`||=FM}3 zSU5-cb4ykJ)HkM0KjZ`WO}jW<9zWk}aa$WB8J~8sD!xBQBmZ=d=}GEn7hg)xd8ba~ zyi+e$%|Fjz^~LyNyhGlOTxb^;mye(A7?*mHacLK;;wL+i`^WIbc|**Oh8A`a_R{)s ze}?Ygi1(#P-g{{m;V;$q7C|?O^VWd^@5FD~#mRC#*BtZaS`(Q!?P68_Jm>NGljp}F zZ?p4XE_Tb~`+Wj^aR0~yTj+~+5%$vY^PItT!}Ev8x}#lG{UJ^MKjS?vJA(i3%wAo? zqgHlg4YS={lCC*+_fh*#f8w*QyEL7_>h+(le?|{~Pi4b@p89-3e`|bys~7Y)bsaz7 zaK4WmHRg7?d@9?xVFu-a%ae@gk;%M#7U;X5_xjW3>G3`k<5{R5j>kX8A-?oyoiP&s zW$Q!!Cv8|aqR0E>myYlMr*|dupII@x;g#z-f9ZtFrZPNy7H98eMeh%!Uc2&@tJ|lc QaIR$RwJS{BL=K7jFSGWy@Bjb+ diff --git a/sky130/gds/sky130_fd_sc_hs__a21boi_4.gds b/sky130/gds/sky130_fd_sc_hs__a21boi_4.gds deleted file mode 100644 index 0eef3b034babd9c6a977e4700d6c073892c0ab4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13102 zcmbuFdyHLG6^GB<*WA~<=g!QXnHGZ75UJ8q5U@epX%P*il=q{+q(~7EA8CC61%zN# z6eH1~LZfIxLsaAum7w)OG$p9S5K%D}Ly%PepePz2Aw}!&+v}`*?zD5Zz)aG9Gi#mi ztiAWyd!KvGOj1b-h4Yf>oD=yi*aq~4vGFmLZb@eUB zo$}~CFP^aW;iJB~{erWS>2kiixKi2jo@4i=Ln`H}rwG?TGBYTr9`Olc_dXM#W4b1Q!D9XjbA@lzR_ z!}|UoN#Z0w=ihBfQhrJ?r}E{;>==kwJ~|_A`E_X?$}6?HsC=nnd5B;9Kt}xHM#~4v zFPv$9pz?*amWTK~_hrQIxy$mf{C55P*Nn-F^0#TsQj#xz+47KhX+=iz#>dSky)38~v7t`1PwZ;@7XRe4zZ=2J-`zubpanh+lmuBYyQB%R|Pec49`x zrGB=J4Pp$squ6Y?|ablka+*e8OitGY3JKy!Vit91HM8|DT zlGfL|sQ$F>)XypDZ>wbeg~Uhy*+uyye>Oi*`H|mQ9^#K^Jv;G7H2*r3KfJ{JK;?(W zED!O9Zp?@`c$VcM`2p=4PVxiyTR!kK`P=k!O2%(^%Ek|tpSJcm$&dWZ^00h_`m6Qe zB;WdomWdAE^9D%kqI5gYh-`*{OW!N6KF91(PSKMoQ|^E~nbn z-TrGs`v=qeO=!6t&$oDq=63jUYP;;Z->f>&Z}yqz)IBYHITi2rSEu7=_q#u7tTt=D zuFqIHN4nxp<@5dR>i06uzi(x1Xq*zooyzC>gBmO9x1Y{PUEObX_tOZS<+hLJWd_gU2p9I=gUDpwZlAh`aE^c zov(XC{Um?B`#g2hm9F`IdhkoH*;TMn_@rL zc>?8yxHIBU?=)}GrY_10ac9II*sj6(zSf8K8)sR2E^(*g-Qzc>{TxTT@jF!A5O+rE z4{f!&+$X6IsY~1$tIu)N4fk26>V~*8Qopv({Q8bA$_sI4#Bc02ueq&@@lo#U8h+o)hUU5km<%PI2;+Hmn#hnM-uMY6Fw>HxKI#90fJAom8@cj4vUgO`?y^8U7 z_MNM9DDG4|*JqsZ7=I@oac9hDobeccCmwNU%x9eO73- zsLT3u;t_YoeAXEr>(7Zt+!^y(XLzhXCmwNU%x9m&WB+sF5qHLX_9;B}FDD*xXUrej zVBTmsBOY;Q%x|qUueB#59&u;PAD=RBd{;(1;?9`QeNy>w|8(LJcgB3~lX%=Wop{8Z zF`xS+9`{ct9&u;PPqu4+_$KS$skMK$t$$;PN7lc2#U)PjS^xNjt#QA!!Mt+WX&&nz zKh5XXudFn$vd3v2>mNVO=lazt^Qya?=CS_q(|oR9+h<;VhtoXPKYp6e^&7j*Yi@Iz z$NI-l^SOTCPV@RVIn87J+KeEBR z(X!J#)<1rl&-Gg?&1>y(n#cObPxHC{_>_6$yPW2+{_)d%u0OHQy!H;Kd8~i@G@t8F z?lx~~o6|hjKYp6e^{025w`h~oJk~#cnm^bdP45Z0$-Y;>!{y$Ftn>XqN8YjrR-M*h^B+mORC-01h)~SstiH|&Bd02dd-b;NWBl+>B z~fp-1E^R@Ql@TGX|aPuMUtG_QJe%k)|`WN13a6Nf%wCLuHyr&}W zRDM4HR>o)i7VV*%jaBu#{Rxe0%EsNApLc1GO4<9U&bvbAP09PW$&%`(?73LJy5lU} zVCQvm9Pc5WUiX0ab@u!=+S8y``qH}{fcrQQhS{0ckeH(-+_uJTPzRh zN6&jR@*bshvd)o`eCcnNhr~ILlRWjD#OwPl4~aM5nUOs2hn>809{Y`sNy+tT{m|MA z>DS018NJ`)eAn+~#%JJqwRx|R-?@b6+>~{_lO57~QYY7q_p46gtr5#Z+B2;A;N-fE zou~7s&&hlre%ax%QWFRWMg%kmd&UO2gK#GQ)g`ugo%@Y!ea!+T!&#PQR7w{O3%OP>e1 z4^%&yJMt?^f+2pUK#Gv-SzaoyzC>HF>oe zxw`*!xL4m3ch1Cp+Kum|-T2N}`?()dm-}OfsvF|YNPUi@F20kx#GSGFm73M9e7lRP z8{*DLeU76pzLUDdow54-o|AqTkLsf8hPX3QpW~>D@1!nqXRQACg<5}iYW`F*a^EEG zR6ck9jB1G#mf3y0!{6&?;?BA6@8_(aLGAH{58LMiXYo+&yNWv%&#lkzQ)z$SwHawQ zac8XkwGWzCUz`z-xHIPS9+-7Md0Ix+J#lAj{c{}G4d2OiBkqh{ztOh#tcx_>Kh0R} z)z6AMmCqeNj;oi=@9=)}xu2!^T)&}q_p)!ll(DM)ow!r^sL$`D@jLvN`8DUMai4L+ zcQS6&cgDsqe6G1lZRK-M%IcWD=W|L*#dF)wakYl|9e&sRnzIr2X*czqw43ufW9{ej z7UR$7D<|U~K8K}@jX%dR?)V*Q+(Xp^*DLp&!yESJ?^MSZi@!a{-)34h1>EFW{`MgBj zseIJu`3m1znl#_3c&{GuHn8CvD#H+`#;W%v<8l*!<-<<}F@_ znzteDjLct-quuyU+D+UUYyaTwYWGFD|Gq6F_YLCC*!_d!xNqQhsQX5UJInd=r(L&s z-~LWU<~?y|Z2of`^B&*HyeICA&HvVYR+r~8)*+-Wac8VP$59v0NnPU3SpDHMtZsPT zlLM(s+!?FSan!|gQkS?hRzEy<-KhC>Fph4Vl>;?9`Qa~{vl zJpVZ>tF)IX?o>Rt{q<+fYkWE*9&u;PZyswNe{V_s@OPK;iQ}jF-1>cbKZDo5A|oDg zXRLnsyH)vxJIsf8#GNs}xW>HV3mNf(d zd-eX*vW5AJ1{dZJyr?xbkW|{0^XFc@SJZoK_5L;5Lr*NEHuh_;U0?6^>Z4!%RckI= nh}}Q95Sza$wtlZ({_0y^cw!-T>4AmV{GIXKmg@t3sg(Q=sgeR+ diff --git a/sky130/gds/sky130_fd_sc_hs__a21o_1.gds b/sky130/gds/sky130_fd_sc_hs__a21o_1.gds deleted file mode 100644 index d05a07aac192136652f12b1cc551e7d09793f911..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6532 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a21o_4.gds b/sky130/gds/sky130_fd_sc_hs__a21o_4.gds deleted file mode 100644 index 166746bcbf6912c45dd353b3e6d20b3d14eced1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9972 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 AN&o-= diff --git a/sky130/gds/sky130_fd_sc_hs__a21oi_1.gds b/sky130/gds/sky130_fd_sc_hs__a21oi_1.gds deleted file mode 100644 index 4afd189c63124435e24dcac1ea1cd868d9680c20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5046 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a221o_1.gds b/sky130/gds/sky130_fd_sc_hs__a221o_1.gds deleted file mode 100644 index ad9d4a07d6b0cd1dcbba8eaa4d893a16993158df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8604 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 To?S)c-7BP?3u;q diff --git a/sky130/gds/sky130_fd_sc_hs__a221o_2.gds b/sky130/gds/sky130_fd_sc_hs__a221o_2.gds deleted file mode 100644 index d3ce490acedb27580117e879ae428983684f7a28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8450 zcmbuEeTZF08OG;+oO93pzOhT{Hft%8BH~J#RjiUA$u=Ra4e5t5iD{cPO`=vKl?0VG z=^qxOEtDD&Yul9~YPD8ti%<;)Ll9d9Md}|~q@a-`iWo|?TG68MdFGwx&bhnyoVMwO z<#+Ep^UV9soOj+c=d4RzwYtqsRjQ4XuH`0O!!380)89J#u60LNe06^NW;c}-Yp2q5|3`0I`L@gEKDc{s|E{?Y@1L97IWx2J*0~v1 z&zwuURdrUy0W+%fwbyfHGFu71DU55J#8|3G)v^kV&|Hm->A$N4`<|J{@3w|jRa{dR9R|0Ml(PDQf4 z^BZd?8Gq-2NXF4!fi(zZ9P}d=#N*ea{WBZ4eI%0p+gM+b{@WLXb};>ibImVDCXb?h zrE?e_=f7 zmoUyd@V6?G{?cjlM>3w|zDTwwpR;z7`h@uvSU-c`=Wsm&85jMC=r=B&Gt8Iz4d}ZA zd}ofQ@%zpA9msfUU$l5g+H0T55&G&UP49{JD%UHJ`pU0OPtsn&nhptl<;SKcxz8#m zA~_F^E3&?|fA3F3KTocLhX&2F6sCUoe+U|pXb7XxB;)7j8 zdtQH&pO5OZJ9qBfEZ0M{>%ax!^>Egn*V}qd@Oqer{gymr{mJfevx{iY>*vCH-lKeB zJ!s+Di4ELHTK8Z*#7+4A4E{veSwGmWI+Fa{^q${f-1r?>{}uMiA*_e^gkAr7ApGXz zTlX6CWs#n-_&gPrr{ZY7p7H)&alR{0MGTvd|2nU)pSS*s{QUd#82m?we|==K8~0P# zMYQMrkLbHcP1oBKNgeHCnZEfFt|MxA>){-Ki~U8rI9=@D-xr`~ZR9wf(0RL9qR*C@ z&foW-_k_;d#S(q>0CE(2qIPLyb|vaB>>}C=*N^?01Je(Q>*4L(k?hT671vbz;y zz%HV_P|tZ%&-E9nqg^c1^S(!2l0;HRyI7`Yo>9-d6RD$JEYma3sAJxV)X^@M>A6p+ znHUjb+n6R`tDKFasN|KQb)U3re~d@j`c^Rj&`w3@8*$T-(miU z$es6D{usTzB!5g-yHqqi^N0HCfpUHQ2Gb>pXgcN(^`X7cf4a(a>1ok)%pdAQd!asC zX1eSt(R9oo>O*^>zWI{rS`Uk+WByPd+6(pV=SC$aMg#h^Kc~B<&p6X!G~yIqV1jLA!e#e}OfO zQTaA%WgzW!)NHZ(Jo4@J7(bBq;D20v{(Re?#28;e9J?a@^E~V#+6(oar%l(pHPSy% z!!DNT`P|Fr$QI6r;+W^*LjMWZ;0%17j-;M;5$%Qg#^=p%b~2JW+C{`QPX9}ukJ~ug zH*Q9rzBRIqbM4?$XbVj7E}%1o@d9he*TF$t$H2-C=x1cwBLjFK-wFptevdg zkGbMGN91!~wTt)z{qrqyNUY=efx02F7Z^A9M2LUf{PuEwZa1{w$N1YKIj`E+YNB9kFegOON&-e@MpufM5 z1xg2w8{f~b^8&_v9Ajc%iP;Y@CUR;>T!+Sm_#Mdkr*E+NlZ}U|e&@C4yB#uPe&8C2uowDgzvf2M4f&$!o8rcD zJ?BopVtaGQtw7id{kuOQ&hH{OP?yE#7UT!)BJ8Dl`lVi^f9l0D|9n5lcQn1_k^bxn zyNLEe|9tlHdk_0$$RA?0EuZ~q(X#(evFj>unc z7f17d#6SDB64MXK{Xn~z6#K6}g1p;{{eFF9wiI)LT||4~`mtXV_b}>*eA4tyv0bj` zb*EnBb?3NZ+4b+=iM9V8>hW|WYaQ((+6&{)-fp_=_mR}mF20<;_Hp!wUaVhadJ*_O?S=l?uerhW zL;lV5O>slHo^jK^$hbMKSQdZla`=A&THIH})^_}cU4*?b{`6y*H|j3$4


      ?P6K| zWk1$k>W6&M^sK+3z0^PFO})r@Qzw?qzxtTvt-nuWACSyj+QqW`Wk2REbt3bYcCjpf zJAbizM;Gtec@ObChI&N1I8nU*jbEVOf3Vh{h~#@k+C{V%u3v2@bg11tM~ghS(k{YY zsOR~E{###&q+i;_GXDvlbNFsLU7sWFUEVIPF81HQ1%0t@g9~!Rx_P@;vVJ^gFmHJN z5Scf$i>3L~g zckc4~YZvJ8J`nR+tRK#YbD)3ew_ZQu{}t;){2Ml{8`0x^;>-K*pGAK4T{@XwvGUcc zdjqLwXI{OUxs-mIzGu(FcY0XrwddiR>u$c+o`>)1GpK|wFmi0Ee9pY0HK)3{=e4L? M&*s$)#87wt2eAX!Y5)KL diff --git a/sky130/gds/sky130_fd_sc_hs__a221o_4.gds b/sky130/gds/sky130_fd_sc_hs__a221o_4.gds deleted file mode 100644 index a1327c5a2e37041cff0deb63c5712b7f9f69425f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13584 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 Ve$U-{ICf*9@~tU%OS7gK{s%bptJnYl diff --git a/sky130/gds/sky130_fd_sc_hs__a221oi_4.gds b/sky130/gds/sky130_fd_sc_hs__a221oi_4.gds deleted file mode 100644 index 0e6b7dc48bbfe61f05d5ae95197d727945d9e848..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18014 zcmbuGdyt)HUB}-&XV2Nqp0k(iC40YLve+=a;0#j(n5GG>7DG#s+Ga|omQ+eXOQVA{ zR9l^hC{DxRjRtBR2o-@+h7qd)EHbG#szn^piTuGZv4f4JiV94?`u#k==Xahrm-i8} zJCph3e1GS2p3D2Z*RxwRi(2g`ikYrj&sU4SVzTHdR*Hr4|BH65`NrFS@~&I%dTUXP z)*COo;vFx(=81=&yL{JU7e935rdJm;jcRwU**tK^TQ7alCHroB-M$02?tA@#efw^? z?6OOL=JtI*SQOp8MbYf9755a)fm*Sx*fvxzisCc&Z~d1N8>9Arr{2@OIr%$-Kic(9 z{GKO@qM^^|xj(UaQm^k-W0CD){r}&J!b#pdVfDbna-Y;|r|Ntr?}K=a^~8`*#yXVO z-6~OD{X15N`1RWo@#{ClI+S1gkrGv}{gBlme%A*Q@wX5$G))I^7^!ihp!$|7& zf3P|v?|wrf^@ir(NxeB?bx7WGNg{RT-KjaM+&-K4SigrJOQiopAF}=j9xjT(BYN#r zeej)Dhm3#Ve-iNrp0;|Ry#9YSKT!4lzqUHW@7Dr!;`gt{I+WiYFH!Y&uhk)5>#jun z)~!~DjhE~7TN0Uix&84#@|;m`Hu_cB@0`L-!?8->m*Rsc-&at3$@a zygSwZ%I!0Gjg4dSC5eo8;)6C`$ap7yr^H8!V$1vW+Nt`M-?Tc!AN$`#{IRcFJy87{ z{fb^YRUiF(t3&)z^~Z@n`odU;@JV@E?nM0IJFFfkfB0haA@ewVJdyQ2 z@@36uB=yk)R)^$czn(~a%c9jG_3_ISsgM7i)gg7}-KqXnZl8tw^}c^8iiPVF8PCEl z8xLf>^V$|p>hr&6^}xeLG50PTZ=mXP+TVE}#G5^pNIt9acPM{G{bt?+RiAm>>JWeC z2NLmSreht-o7R5Nq3TmwAG{CZPrW`d+aqbx6*X7lT{8u9WivD#dfB8%12dcLGmsW@P%aTh{_Toj}L6$HUt@Y`#tBTdltiwXgNOS+AX{w{}}S zQ2G3)tsbcQ;+0kpRDJEZ)dN+hT|PgyU+&-Cp?^cw<17B#`rF}|mITi1TCDYdVf_EztY!#Fn;Cq1>r@rQbEHxx7ohjwjCU*XaMsoysfyzMnR4;-3=n z$elTV@?Xtczcvw%+?n(H_Sv}COJv;S&a=jUbC^HB-YuSg{`sBEztgrmTafKvSiL-c z+kT^Le{;e*;rPjV5&Ivv+^M|m?>l4rsfF&pwe9b0>e`YYr}DDDYlG|O9G|vWfBXdI z*YBy&eo?*tecd|svE}|>c}D+_XuJQT{%L=8*6x*|+^Ib4*RM9e!~ZnD?z}qhcmJvR z&c^G^cPh`e-`r+?hZ+z4Z#uW-{hkNSclK&L_)g{7_BRcg-=W5XzsWh2_xp6s!TdX0 z8V|lxd1d>xgBqvaUtcXz;|{qqGyd+q<~156$_u$O<2SdP$2pRI1j-A!GvhDB{x8P< z2g(b%GvhDC{x8S=2g(b%Gvlws{;$OT2g(b%GvlvK+qlDdOXCle7jkFDpEzy)@)@{?#%h@r+DnYPCRmF&SyWxW50Fckvnrf`zap#uM>~lne*9C@z{Tzc;wEU&wh%> z{_DgecjkQdQ#|%xCmy*o=X0LJR*9@jliJaT8w=Q;mDZ_xijZ) zJ#F6l(L_9QXU;E<==l6$j=xSFd-d#vUWWzv;AjeMg<}bVz<#HB9Dng+z0w~%V&2ehr+FNI@ngNx-+a)#;Z>)39Dng+z0x1q zYu;$XX&%R4{8+E_$F`d{cG77c$6x$duk^>K%^N@NG>_vieymse6Q|9aJnA%$<1c=! zSNc;Y%$q*sG>_vieymseGsn!E-S0Gy<1c=!SNd~D%$wisG>_vieymse3kS_xTy>hq z@fSbVEB&Rt<}Ejz=5hSRkM&A_WxIJRC!OYT{Kb#;N`GzIytU&_^Em$E$9ko|^|X2G zN1f(z{Kb#;bN$icBRucl^2fS%d%2P0|A;&%`N(xvhvY+VNu)mbq}3ty_BRr#xAi@+ zlR7_6&JR2+X@ZHDUuhk*>n!bN^QV-Aj0&V`o^G==5!jJOW`}My_y!yYJ56K(PCsOaxd^xGd z@ttS_p7||4&-`*-)b}y1gM*1YS6seA zeU7BQsD3-i`JTi{K6k+CkbLIyMCyDW=%n8K3#&u&##a)l*RQlXq+YuyvFAbSw^Q}= zjIV1O<6D2bZO6$MCT`Mt+0w6Thsf3kbbsX4l40Vnm= zeO8C$eOiA`*4xx>jW3e*IP+E2Bgtp~%Ic7O;inR*FaDU-A$7jDb5dXVg4H4U*563% znX!3sYMq~F{_Oa<{_|RA8qdNLiTaJCVovL$!#_}er}WyX`gE_=1C>vH#_Ev$f$uM! z>?bQrw!c8~mCq+q-}(zyht%npvtoUJgzZ16U73E3e=?Ep5yrGlob}(;_PL2gp^W*y~`@?Y& zpWh>L(hqW{@=Aa6&E}0W9(@kPBX^$V+wY&n=V4)eJrdVfB&DqknAa^RSY(HG@$mco;AL5Za zbN=9y=5d{b5An#IIX_%4$>TZ-AL5ZabN=d6nx{QF{@-2Vw{-p@ckZbk|I*Kzw>(#( zypTIH{-FBY^?=5$K0CSYB6ljUod34oi`RZO5s%!N^P8`$P&H>XqYP{TuD;4{H1UTq5Uta;NH*{=y+^ck$vx z+9h}9+F!cL+FkmOMA{{H=Gve8oO$zaO2i{~=KR?%>-X%36X`d(GuQuVU57A#(_c%Z zU2L`*ewaq}SxmR`vYzKDIx;lYWysbN%0ZzqLDjd5LN_x@57 z*_dc9RyX4MX`@E0q7JMhyE#%JJ^$YjCv>)zwBWai1nQNc-(Qdd;j-*|3XRdwj zV|w1G>wn!(IeWL*{f$$3<@U#C|HJQ4`(4PLnf;IVvESi4S@-15-1?uqNA2#^_4C#e zPw9Su+_|&5|GbZO@tw3w?##8{{ZjL~pH9Rhcjo-!Pi)?K&cggd=AGP`n}6QNyyJDK zc@McWGylAgapODbH@P#{|8W1Pb-TW9>lm_b$(_0N8}383Zt+;hkabJ$%&lLp^YOU< zb>fBl>&Tox`v&Xx+-M^GCU@rgKQ&<9)MJTwkB> z{*HMgA56p}cjo-gee}2FKdbY;$bC7vQ+Z|k;XZv$=j->%cWOK#cdk|YeY)qwYwaje zUdWvpze~@3G{5#dF_L*Fcjo4w_pxqx9_eKLkUMkhr*^a5H`jX-n~X)dGk5=7|G0U4 zf5`ne#3Og+e0~oEuko=&yzu*dkvYG4qj^2`M0|2*&R>lE=lc)(0rAM4Ie$6!e>wIa z;*mRZ{z~kB`2Bjd5An#IIe+z|*6+0&67k5LIe$vmeX1AJ*C*nUJ9GZ@cg>r5I1!KB zne%6_GjH~EA|AOj=g%EAZ~m2uc;wEU-};1k?YJL6JaT8w?~nUUe_TfpkKCE_2jaTp zxv}0Co+IOtJ9GYETz5lp9YH*DXU-q~MQeBD1&Mg%&YVB;Me|1QNyH;}=KQg(=8b(J z5s%!N^S6A>yzzG@;*mRZez?xod4ub3&L5ET2DvkL{@^^rbvx%BXKk0Af1J7Ncb*e$ zdRq4@Z%XWYmpwmls$O~i;yD4=k32u@!9m(x)6OdMBH&*`wuluCJb))t__x_OAy2+OvH9eyzrHuHP9C zW1xNaZ+O)i?SIdH?Eh7JcAeqt?_2)=_W7H-+C@ckk_(&i=)Y%MPk1+AHwHIiH}Bhs z-Sdr&*qiom#P0jjh1%Q|*|@K~^!wjp-H&d><}WQTyzPZf&v#z-{r7yS)AI|lS2{hv z5PR)TANPgWlh=0a3)o`Qmu$qI9omRJ_uNM8-aFmC;sUmJ-?baD+m~#_9vIq)J^0*4 j?9ESg>mv diff --git a/sky130/gds/sky130_fd_sc_hs__a222o_1.gds b/sky130/gds/sky130_fd_sc_hs__a222o_1.gds deleted file mode 100644 index 0c7418550b042f305197092f0326439a558afd4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9100 zcmbuFZ;V`38OG1d+_`gS=FaTQvZ-vl5|mayxWQ6B7+Pz#+cp@i4NwFG?Y7WT|5Vi0 zL}`nO#^Rs!1Afq87ql4u7_3T6)JB9fC`SE2_+Svl4<-anlo&(>643fQ=RMDy+1&ikJCzUSOKr*)~TR ze%87Clg^23&);P2Wc>lOeJnEBW$mJS9^Ze07y{Gd=10VMh4FO%VdHk6ilqPUugyQn zxVjfd`u5eK9b|l+`y&}gccaBaGEVvt(Z4XBKIWUkUw=F@$93-r<`~HK9`Z5ZPUpsc zh3|p9553zEPaxyzPgy)9?ersJoKf-Y=l!bgz&!C+-4dCjFe=|iJb`Sle9PKN=EMCl zlJl-SZ1X1>562auALZZIOZ{dWCwVZE{*t@RAIUh9b|l+tuUb2qyom3cBk8yHd-G2+ zKKc<0?$0siqwy8={WEg?WF+e$y$5X~{HI?t|0Lt9pNV9Ab;KaDPSY9u1txdm`d^4A zknz&52>*roYGSU;fA&Ho{bbLWKa%le?~P3Vi|-$R&p_rOJ7oDF>9^U7WIO$ci}H2I zulHWqFCgP*{IrMh-*)Xp3^lZ0%q-UD9n*{0ll(`7eOSLK>^HVweG&8irgN=UWE*S4 z!7ieGlztoU_xL5~cRSYC1w*_M*XQCduyGje2Qj|5)^x0gpdU5gs6Oy7RmbotRp>S!0s^vzdH*Sa^7I@-n8(lc+=4~V=`&-{5# zFSviU{w8AmYu$>SmymaS#F6WFpvRtucMHECdP1n@mZxuDdjGVa&f_`zJ-h#6=NgOw zy9j%szIxd7wKb8{(Jq$hxlZYq>sO?XcCk#)I-`ztCsIedSfoFkSkr zXgby(^`X5`pRF=o_Lyio)*tnuy-?qL#dNKEMbokVs1NOh`u5YN%a4ktWBpMd+6(oa zhfLSqE1Hh=M}257)Q`=ZuD4Y*9qW(!&|awTA2!|i8qsvDKk7sKQvHPUzaQHPa{Mah z39^3q5m~={FA{0*z2Dl&#y-S17RmN}yS0-V7cBJOT@8nbldRrg}NFb}mHb6y`= zxeRlE32Qo#?G-!=#mY{^dnqd9KC!;Q5uvvjKnJ611xF}Avsh_&GD;>zOrvtR30(~Ir5nqGvxFn`gDn|2ZQLVbJ2bnU-JQb)U3rsp|1 z*G&ayk|O6#yI3}V?h*by2+usRc^~}4E-rdMTCjgHPmTSSKQUWj`4eF;oImwV{4Qqx z2Sh!1yVx$*bKj$0WbD+7W&2-qHT-VF-{V7k5!bYf+lu|OAJ+}_BG(P=V%hp}cW8Bn>jGK0`EdEAj>%Q^BNUnR@#j^F! zeq8s|i(L1#i)HIS`4raagV?X|ULw}7!!_(8?1lMDZ%5zf;BS3o{p)!Cz%HV_P|q_U z`t9BwNx!sgs6OwT>0^%?lX{wcQKjPJ0EuzUYGZYj>(cer!~|2;f?L&eoyy0U`V=Bw&6 zZ##P4sVn|=o6D!_v&f+T*7^|trQ5eG(Br)S zwf(cU>timROgFE4{p$V`*dhK&^|cFgcUHcsZtnem)UDqwSIvKW4fDqT$QZioXB9cs u>F0dbmZA20sL%QAGIHMSDe_IrQ0Hq0>SaXUx?JknWvVS}Qa4aFiTfXJ%onWy diff --git a/sky130/gds/sky130_fd_sc_hs__a222o_2.gds b/sky130/gds/sky130_fd_sc_hs__a222o_2.gds deleted file mode 100644 index d38f9af67c375a11a70e6870d59e32e22d427d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8818 zcmbW6dyHLG6~^~{o%?>w+(DdnBp|dJ9i$BSz&1K91xzSd6a{I^Sb1o*D7GdB27H%? z@4rA8P)tO8M8)`^ikkXB6N9FSk!Xr0N{TU7s1GEuf7I{WYkzm2J9E!zos-=B?p^DA zd#%0q+WS1NOI)#dxtl5!t53Lwn{-uonmalD-L;Cz&K+;rwSCtO&P|jmuUdcm%P;)- z1BcJqxc7|v7OuF|O;xhBQ%SP>9XFhL)|$C%ub$g|)!f^5&&_S0nVEUl+>9&NoJ-n8 zce6`6MK|p>^-9k5|Lk04!nyj26ld`Lo%o3GyC0dKH0|eOWVy)QeS#eB=aflvwX<%A&Vp8{89Nl&U_jtp`C+ZHi$UjYuB2eq`!eF z5;-2eAL7B0{q^JDLSD(Ik=sX8M1HM#{0?m1?OYSzMcSK>ncoxo=5?kgE9XOhN~AlC z--sh3-l*~S`E*aUcDj=(B3>6AWL%PYbWk@U?VW4P?}>ccx0{}1KAlfQG7rWP^YR%( zt#N#M2U0}5-lGn7@Iz>i?P{|UbX3%f8LI8VfRquTqppHHl_CiasKavKme-TEzli|{u;W`0lD z8#~PJiSgo|%<=MsKUr&jvhfwG1+lsY`5~@|xas`1`T3bveH=Y{bOYyCL|dpc9!76Z z>u2Nqnuh0{fNPi7-e-0Z_OyO3=>7b%9ur*SxIYj06Cd6sf#qLguG632VLrbPn+PA< z;W?qbbi9o|UTQt4jz!h6xTv0&=$Rek@bJ_+5|PRnK4Co_^6{Oo4*8 z^0M{kru$!8iMseK*2g1}wb$S`>>~W>_(OWPfO(om?Vpz-)~C0N)7koN(D#Dg6FP4f zbM)$-u?MV?jZx@fD z=loGGa^9#H7tNp5??kL0)xFq$)@o85S^on))^?M1FG8!j_w@Fq^`re}0l9z8>PKu} zX7wY&o~h?JQ^)ZasiR%Y)0elHu2PAlj&?Cm&;6Ehd94?zqg~9?bDdGg^(RtCyO^i1 zA2D6y{z&R*7xVP26UJrzh}6+8=IOc4sN=d5siR%Y({r6u$8|4KN4uD(ADcJb_^L?i zXczPJT<46-^)FIKyO^hU3#jj}vVKL>?i;LrjozM9zosj#5>3zgrM@_yuP<*gU8N$L zj`d4@@Mp$P)|xIkD4LG-OMUQX>T4@aS9?S>9qX6+;Lp_8kC?7;zi2wvFZIEnsc#-I zU2BhMI@T}s!JnybKWw_rHKOTQztjhRroOviy54!B=~%zi2Y;r1Y~FO^t3=bWeyI=s zOnrZg=_V?o=~%zi2mez2g!A{K3GQnfcVM1D);|xC_0Rhm(XWrw!#V+Zz2WnWNPiRW zF+{f8Kn^19)pwhpR9rAKztRIp2yKwXr%=zIkEFeJulY&d-`D>VNq-Obl41$h#WA!Y z($4-FZTy@Q%^u>9%FjO^Bu+ z%~RpJ$igk?|89(DU>VOxJWpi((=RqrbJUBhkIFMvA0+Fz_T5PT{s>KooafFLZNACk z4={f}j^sS^`B&sSMdl--&PI)of4(Zd6k6m@GQZOMBkP9{_Xzxfjc?d>S!Dm{7u60p zD&8iJXYXk{pKQJf`j=DA zYO$V5&&_k6uiBBxEcS2MMfkJ(|9jJQJ{(D18+I{IKYp+2`lwgtK~hJ%n5VBN(5=H9 zKA0lr!`sDm+4+}lG+p_$6ruBWF-Pyd2i?`EUyfs7(s7P<5%$dSYyJ>A^t<)eNcNj{ zF|YsrI)(c&f87eK-(%Mwu{QjFz|j2jI>B|v>xam7N4u!?hi#tw&+A?C9R6ROoLF!b zm#iqDx2=_x*%$9QY40U}yT!GpDjTkVjYo_3VBu&@Ci?5!#v`;h>)Ttqq`k?zc-(Dm zG&ZA^c~_fE-gq&}+mGjv9+@o4XNkUbo7Zn%q{sV6^k=Dl&>!}J@uk1)bwlxwTOabj z;Np!#dc4m*cKq7)SmXb4$z*c*aPN;x%{#2*gH)e;=KmkNJ5X;3SE4ZT#}&KNQ|t}P jh~0ls>h;Tr%^fuKdl~B18mZSWBXg>4#-y%d=F0AW2tgdX diff --git a/sky130/gds/sky130_fd_sc_hs__a222oi_1.gds b/sky130/gds/sky130_fd_sc_hs__a222oi_1.gds deleted file mode 100644 index fd02f3483deb5bebf0c7af52caeae2469523c9be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8968 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a22o_2.gds b/sky130/gds/sky130_fd_sc_hs__a22o_2.gds deleted file mode 100644 index 3916a2562d11815a74f706d0dee32b5a4cf6b23a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7360 zcmbuEYlu}<6vy}6d(OG%p8If=p&FI&gBImLI#Lq$m>DglhvXwIHE+HmOVYF;ACY~~ zk_?Qphh`KeQK1!CScXYxA0kSKg0P4RKP4qmC)OpLv{<>4iJLxohwLUTg2Q z_CDv_Ya&x9++l{d6iUCE#I&1|8EHnO|2Ne_v~20Zl?zs`Hm0o@Ue~>8{LP=gapLMp z`>uF(`<$6(c$lpn9!0C}Up;o*n8rPe8><#I?p@VrEa>c9-sm(Yh>eMA1@owh>IKtb zI$Ddym;>^z_jrbF^1l*&g27(jWA$xj8TIuSFz6OzY70_4hR@US*|DvxJ;f*q`65|i#e;xf-j*8#Pohf4c%1tspNx#WnPx?=GNxLQDPo5Dy$#^Q4 zdNL0BQD(%mnemiAm2t{TQiQ+qEb&J&p7@|AeDqVIe>$GK?0odRGiT16>EU`P zB`;hM=EsOVt(Wy|V?IQ~euHpsDr*PDu7o|UZ@BfGr}YuNj3Tty2 z-pY5eUfc0m2|M%2b`s;H{Y^U0{P)u{Hd}W}tve+`N!8zR>)&M8uhyLs!>0AqtUfqr z{lxVA3v02~-(f$G@+_=J{lKn7d)j|LeQ}EDoBUJsMdg%yeekj9mEmI1D`C&|A9aYn zNz8}wN6Lt6}2*1e^*_s^f6H{0QVH)`(& z&)RH^0lO0InR@1#de*O!I@*grFp5AOneZ0;5E0O!#CI3Qe z&&j{&ildaGXa1=#tj*U4b43@1O3^X@)Vuaf|Iq}|MaPt)WB#dk?V0*`nCRleO3^X@ z)VuafefhNLl3hyCG5^%N_Dp@{sOYL2l%iw)sdw#}`r3Zc)t4wm$NW?8+WYI<%w}Hi z`CLvNT~S3tH`*L$+v-WOQP`q=v?)VqDbZg8z*KQg!v^O^6de!+p_v-eAd zA)+Bm3*mc{X9f3B!E4B&BiAz+C+kT@`_O-$Cw;r|2J*L#`3kOuhU0*I-Uxp5j4^*c zcPW#1K@5)S2OKD#WsIkE3FiMM#yRB4@#+uBxFqLQ zyWErGCJ)FwNOJ~p{ou(wa$F_GAIQJG|L5~CpZBUeJ)^(e^Rgq_Gxgl(`dq4{o_1xP zzILnV`8@;m_WK6tX{X+`59I$AyM8$LSr;Xq|5(rJOPp;wnAp$+&1&_L-l2f8y>BYR|&|@0b_rO&Pz4dBLuPJ?+1rKIs&FlgKsoiLx_W zAATh36D{&AqrPZY_L+Y#|Ai}|n`K@(<7dC*Ezv70Gexh2JyT!Vh`v*i z(=jQYLJnzHPR-Wy+@qfN=1oFp?aCaz*^7O*NA{i)-|rdPm9S^V&wj-fqE`kuGiX=B zo~bW=D|w3_^JLy=SLWrfvQ_H8dc7ylH`?#-e_0m<&XWCH|mwl8|})x{PCHF zb!VUDl&A2Sc4bce6>v>t-4%JS;K;aXSLVgfevF%XCF7=DnHPWYB-XkIeQ_Ob@;Jt# zUD=bp{_MwnPrZ`+o_1y4{*Ol>R$QCnFFcF5Hqfp_duINVpK;bb4_{AtMqP*nb|u;~ z^?a_OzP#L%I{Uorn5PeLpBA>^JwC+)SP$BjZQ1^7JJ1jQ>ytg{pLS)Q{|NUM)R%Bi zqNI*?WuD%i6S%%||MPlD^4y_anRov1oZ`8`^Q%dm8`iGOIX`%vqK?dxOm^R-!_`+@UUkNY$0Ow=r>yXOMGpU5lZVZ##$4%N3*7Kvkb<&mmYESiKd^v`lQw0)<=(TD=?e>`sQrx zT@d`Me)jZU{?A(P;-5TqQZGHeE&Ff(g(KLVqfOKv;b=aqWS)#|OP?mh?K_zlTL-tByskh#G83*f;}u>b%7 diff --git a/sky130/gds/sky130_fd_sc_hs__a22o_4.gds b/sky130/gds/sky130_fd_sc_hs__a22o_4.gds deleted file mode 100644 index 7eec6313b9906f1c68d7f41fcf5ce2919be9d14e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11488 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a22oi_1.gds b/sky130/gds/sky130_fd_sc_hs__a22oi_1.gds deleted file mode 100644 index bccec0a4be95ac7b33593114abe0759d7bdc57e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5858 zcmbuDUx-yz6vp>G_ndvt{bw4NYMh}Wnulm0oeGPom>KO4WP|3UrRc?!YD!R)0@EHU zj3R=bqM9fPB`DG$A}cbXEa<^{3VP@%q=zglDg!C|zPJcH7kbJ2&s#ZA`12+%opuvOB+g>-3E) zj$E^Udi|ssNQ$)s*6w;__tI;Zv>({o-nFIu(5`lS^YHNYsrFJ6r^eW3WS%f~L1c!^ z(897Y=BRvXPi0J6@?D8*;zg#TA9wne*+zYJJDk2~O!|F}CvpBY&OI9!;`};el+Hfr z$3b%%0I{ZU?iqi9@qNg_lljoE68ijlZ1VlElJ%&M8q++6YjG&;Ug*Dpf8`;p z?+Z9r!cHB>y*}^%ap!-b?^owpuH#o;Z~o*r97?2~>(|kl`bJZ9O6&=DC}Gd*$Nc=< zekmcx(oW=$+9>0-_zt@g_G0}O^wtvS(J#t6*1rV1685})ql>Tm)tozbZk+imrEZ)6 z>t|#&-gv${}tx1JR$XE@4Iz9 z(B*H%d9Fu~p1HU_P--72yZhmki*JhiN&7$vxA}UkcKUeU`sH2opN8{~QNLR=CR-5^ zb|uF1@q6@kNc0_kCwi+KD%MAPByM>yBjeJp48`Ylj7xooi0kaiK>T=v=#nHy=$u^{ z(5L;POONLWowF+g`s!KH)ehzeowF+gdOIRI_nU$`I6~*_%5J^%uiKAUCmeboQZ~8u8zi{!up9!3XS0*bDVsXX?2AO6q7=hV)!# z>bU+&>S$Mn^sF;=th2bH2@{i*lkz514M&nxzQ#P}U~f?PiyO0J)K9`U3-#e;=Xb>M9N zxAFHfeG?8j4={ch`JBo~yZha8l>FWAH~PUHu$Lx9PnPe%dcK}f{erW_ch4()u8UuT zAIwi_|A0@}m9WpIclno>i_Tt=v9t-_F&AYS^@}zlFV7TtmhZxxJ!^+?eg=EQv%)#R zud*P%%b(B1`rNBz-tKwX6ZYBiclyddqOX0Pk$T#dAwAy{7`N+v0DAZS;8~z|^@~4~ zd6M<}P^Wzv**_)h6J-PaLcdDZkMBjwI-a*`3G|+8@VtsM}=K3po;G>M`%Q%N!iSfetyso-Z^d0^s`l@neSkJmMzLIsPUuCHN zRXh_g|LO-BnK$jqQ2xA*c~jpZ@^*G*Ab(!Rys1|*Z`zfi{COW?{=9!EnYX*Yc!u)l zb&O5Dvep*8686IND?JY#_D^(uj@UQOt_yh*^5giF?MkYS2y~T(X01edSvy_ z&zQzQGQJ)*9u5A+`=ilk^{=)rf1}RdNRPk1S9rWCK9c?Lvd5%-cI^b(&DGQABYI>q zBcC39<5{O)HA9d01c-1Y#zs@+D?g{qsg~IDQS(0&pE>@aU4;04)#nsD-J$BSc~q^o>U`Av*HSVc L^O;wWeQf>%5t5cE diff --git a/sky130/gds/sky130_fd_sc_hs__a22oi_2.gds b/sky130/gds/sky130_fd_sc_hs__a22oi_2.gds deleted file mode 100644 index 6b58157569a7b1f5214d532701d09b822b3dcd5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8374 zcmbuEYm8l07036Sd+)jLduN6T*oR7t{UVLDg~UL8v~?;(Yr{*xA`FFsqBW5AgTX-~ zCT%p~1Dc515z}ZX_4Z!-DK zUF-b!T6>+f_uc2-kcTY0KCGR{+RuhwSQXmgwc-5o|6!2jd+)eq-|l^PhcMGBm1dJq+?q%H|{w;y4v=rFtE-r|lIL?at#QU8ev^e>P3X)Ijca{$% zpVlu+R36Ngd?MvOzPw~tB_~Dq}WZJ(-OfRnE z75NYQKR9)Jw2XcK+p=6g7@E!**RqCi%3juQP4$WU=frl^VxRV>_ZDnktN&$p%3rO2 zyK1#T`iBelxsS3tYW~innv3pj(9xlCX?;dY>-$n<^q1q?{qyy`p!nag z`a6f$X$;w&vRCS9TQ(LYXf*qwFye6#8J%t8;*VRzQ)xzFgh|4ww+ zopt)|i>B*6R1h6@XPurtAuj#nM2Fp3rym|S9qSi8M2Fp3rynnvZgP7;bl9DB`l)%- zO|L764!g5X9~RV~U#I_^>b-Ya{~4pbrvFUWSm!i7{f9oAuh%zkFkP$VG#&kiKKU!- z=bKHJKj$)bU{f9pJEA{{)uXCD?{zISqr|W0JUd|V} z&Y3-(S0U@C@!NvfInO%r^K#PPeC|83cfM_Y=;Ml&@tb-GCr_BoY9IVzLF|J+n;+sI zT~rW%JanXm{xVmno`0;!>e5YbQpm9H2F#o&eB)e1omGtkSeuFP7_mjF$ zTMP2M?$7Q1Ts?kXf4E^ zgIu3IS+K)7;7j^TWPF}0ojgl6?vgDLdm3-0d{0uJ@#8k$^z8*FR3E;-a5mqsdOfB& zBr^WsQi}s~J$rTkSrA=kx9MTyb-MQ71*va#p4As}{lqH^a=*Ge@T|ZL_wZWvY*MH=;Meh z#rrw+o;;|zyj%UO`8hi}$8nZ+V()#;{ID}nJ#H>h*Jo?(ddU5lcum3n5%W8{Ur;T- zqA?P&^L*~a&iKxO@|=1~HBKZi@^&h}mFBl2_LIJEpble^x{Ur*kopbYqTCYWGu}Do z?~ATmRzLf`Eu9A&7u(uoA7qWfzT#ka%3jWIiN1Zc>DvD(hz`56PCvXv`5w~!dbS|@ z9(JevmGPTDF7BAy>YG~U z^g-)z!Pr-_JLRv{6BoUcxQy$pi_dorZS_y=`^1j=4ZBnR%J^Kz-hzISiXH9F9rb$h zM(-qV^v=5c`?pF<{|^h&_t>5CSLe@u^oX?Vn~C~9Jxs7aCCXl_=Q9Gmlg}pfPT4E< z?6d4Q?5|GWcb&4=>bsAc-r1YedyVUqy;48C%KCn&H9-GE`X0NpuK&4?`-aZReZ%go zyMNuIimNZvdb>*0Su)z4Q`Px%UGKZ5cXIEsJ7uq&fB#<9eXsiGf`XlMrIp<&f32Rn zqjyqw^v=5a$8&-DZc6(&{Ring?9RIW<2w2dos+)9?yT!SK2KOb<4+Z2-C%dtt)Kk+ z%KHbZ9p6_bW~wK4r|gyWYpk)j<#PaWu{-PHcYbYk*^}p=SW#`i+pPzi@a!%&6a*^5#qTM-DUBAg!NViA#TeWv`uEy?^ zy|VsUN4f`8t8Wz~Z|u&x{M!$kuA}wNI1n9nXPuriFgoV$M2Fp3r)Qma^&JTNhqE`< z|FSz}ubh88PaU%U=NuB(!L0RvmRNUwV2?q^=Z_N|c4wWQK1WCYJJH2;k?49ITlu~9 z>X4ty@2&ZH6QLFI)e}MC*R-}=aNt$Pu6+Jr7_4n=+a(*X0cXhc8m!9wr(3H>8gEM+ zZ}Vy6t@=E#LpDbDW{ol*I;-+)cW%?|;rEXvdS$XKpVRb%PelC{%k=twQ}a1pzc?S} zKz!FkFI%7Tzij9161~13{onCNlPdnbAzzhm(=Xqp*}p6`zf_od>shGd?|d=# p){SQ#J9}y|_F1Sqcc~X2WZrs+I^%f{HfU9kW7SgZwnk}&{{m{T=;8nX diff --git a/sky130/gds/sky130_fd_sc_hs__a22oi_4.gds b/sky130/gds/sky130_fd_sc_hs__a22oi_4.gds deleted file mode 100644 index 9f49d78e70e103681e85bd6872ff10747442812c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13672 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a2bb2o_1.gds b/sky130/gds/sky130_fd_sc_hs__a2bb2o_1.gds deleted file mode 100644 index b504cd48913ee18ea63ba71dc27591e220292e39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8276 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a2bb2o_4.gds b/sky130/gds/sky130_fd_sc_hs__a2bb2o_4.gds deleted file mode 100644 index 7c77447e710ed1cc7bf44663c5297fe27e0ad755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11684 zcmbuFYm8l08HU%K%RXoBGoAZPt<_L9T9j7QkP=f$D_%$iselw1DWE7-NHHoDZ$FBN zsQfT0)(})0yit$@Z3IoDmLH^|qT;1UG*A;GLE;Szn)*KLTi@BIo!Lt$Cz(8R-fzA8 z`_|fPt$mpZMX1%z4oiD#tw%y%m;1+XdUM3}L+9eCe}o1*^AgS$*03@gX$Y zArynP@S#u))xyfKa-<$Y_<{Y*Z7JCtx8I#=(-!N==+=GAinh;v&i61CAuq1?; zKZf8WKJ$RZVe#q^rhiPMR`l;``ZuI`P~4zep6cR3egCt*CsOag z8CEZh`udX1*C}?L>Pzg=m=7)w!HG^Dr}8Z}f3{LjziQ|B{TG%bf8S3mKP29#G3ikC z_q{~l6Uo!}kmZBa!Ev4PEt0?Idh++4X~*q7r6l>=-?sdayzQ@a@qC@D&+5BV@zxHD zL;S^GOX4s7VDU)#nh)r^Q}O1HEDrHEk1dJ6xh%z@e2tMVD&FX^IK*GSv?TuexfYL< zzy4D5L*`R`Z%OvC#&47}k$CgH7KiA?H6@9+mRcMVZy#Thcw6hmNt|(as=n^?bAH+{ z&*l6qU9P#cS6+Rb#nn3BeX7B^Tl4LHeNSw?Nb6^lYD%OX$8qX7-TAJH`9{+I9y3{c ze#IC5$#42NH9VvG(Q@Vbu=Ys*z@Yh@Y7;+B>D~U5Qh($1MOVAfI!=B4Ps#opLO^#a zzL@`1#%sx~DokTrdqK&bZ5r=iXgxR|3}N_?zB{GkBcA+=9Y5AL(okJr3t{fMlGKIn zRJ_tZrt1}X<~~!h{x|Jk(w&NT`_GHxczJM!Z1P+M-c)~Isy|Y`s5=k$+xm(7hvtbszOOq6pETWh#QuJSUwch|+P@;@^>r5+ z;|u4n?|(a$|2CVy&cU;E4Czkkm44d5;zM`l{LEAGGJl=;(49H|@J{oM zY$%Bj-I?=`Za3eO6(#YZJ9GZA&E^|#mc)nd%=y`;6c6lQPJHOjoS%IPAN!XRAG$N= zXP?5y{^i7n?#%hwr|_|VIq{)8bN;YX>-(FmU#HgYTW$Rsqn=s6=Bux8nxFNHzqUQ^ zZ)`SSv*|P+>lc5DSLQF)n6EhKG#~31e~MT7+jHh??{k`u^@~5nEB(Dso3C$|(|oL7 z{3%}P?>}I^fgMisv3~KVc%^^vZu1RY>@*+i7k`RZ`iFO#Z)Ahhe5_ymDPHLx-EO`m zE1c$I{o+sYO8?kq^Nly1=41WhPw`6s#2WKW9CVtG^@~5nEB#Y*=9}8*G#~31e~MT7 zr=K?8%r2+-SiksFywX2=zTtbgvSo#-<+ zr+r3j>p5roUnPl8>e<0beBy-`hv>Y|aJFvJ{C>BdGZN8x=57>tk9+kCdbybf@B#{^{SFZ|O`QE=@btiJ1f#2EjAoFfWd7O$bR?qe97h`X?Jh1<5 z>aX6pIoZ#KAJTCX2h@K29OX(R@8qMF7m{!K7nyD>W|mYZ)uO%t$GvV-v}By#+lMZ>6P^p zCog^{dC{G@{I!o-Uas5ZhvY?f=JL~yy!f2tMR(@%b05|7bIre9C3&_$cPd`l|B)A~ z-A3(CI!1?2={ve}W3|6mf4{)Tb-qLSqVCN2o2t8}xy$`Shxcl4M0YN&&R=_j`M6KP zA1Pndof-e^9-H_4eYo|w_7{1Vv=N-S3^N#M!o&Txh zt?sFZOHwzwGgm+Ds2hKWsyph=O#QT@Zv0N_MtA1wAJn{O+y{SIlDg5Ix%z2G-S|6H z-BEXD>Zcub<9AXwx-(aQOLMHXRkdDTvOTHar8^a`oIkYd)jbdX4(~F5ud_ezr*8aC z>gKr4T>V^2sh@jLCv~GcbM@1Xy770Yx})yQ)K5F=#_yzVbZ4&qc)zw=_jMo9{+Gyo z9lBF`<@nRCuCc@KY|N(n$VBPYe$Cz1qjsO^Y=2sQ=}zfcKj)eIRA=A3`JK`${bP41 zzjAS(=49QVJ9F!YcB~ux9ctY~-I-ZGwBx+tcXHm)ow@TjvQl|otgU| z+L0H(lf3B8T>g0fxLf=0J8k|z<_)?tH-F-N=YaX^&hMDN?i{E-fARiQ`MGap{zCGi zJ9GKteX{b#`(CH=M%|goKc?rzdQ0c;<6YDiQ=>X?0J&sw8!zJ9G8N=bWGE z8AH!JwZ!^WI(K^haZ0b8|1J3#H{J(0$&2pH<)0_IkM7K^|N4`bm-h|ihvY?f z=JL~yyzzZSB6-oBx%@N7>R#zY-T(c%i+|F0bmxiH<2NjCF{I}{we4_^zN0&bs{Ir1 zvAmO0UDUCn?#$#LTrS_|biKW=WU*G?r8^a`JpVj5;E(Sg67iusbAH~VH!sppvn1ny z?o_-ofAeO=Hq^w<3N1q&YYk3aJ7v(-^;rA zREY2Cxc^V_*ne#={Qt}up_t_VD~qX~&OW=U`osMCe~15{KmJeGa42Sqvk&k6Gjb#_d*00Mz8OCr$ZzM|`@iShbI;7Z zGn&YF-dr=h?W8BJnR;;hiSb=~FW<6h z-Yhdb%-4>HqLp{A8h6Fm?xjn*S1#_pb7gn;qV}Gi_IsCgk267ROw{C=2Te4{Gi|1A zuy2gnC;yV3lwq^{twf*TLQ~gwT79!wPJOZmgAOvLwkE@)xV{J1j>$#FRKG)CN7}20 zq@6S;(0^gd;8Ph_iSZlx-$4JBlj66sIYW$Jc~ZtF={No-CH=?0NV_HCk9Ufmq~G|D zl#H*kUg9I!PQS{W_-ua4-;1B}=P4Oa`6`KrWIW|dGekV$5?njdPq|C{k&K7qDxuHK zPw{P7YGY3*ZDhJT}d3Sv^ehU=$r?O1vfv5hoFNjv>2F}FtX zt>OB4_o3e-;M|n-@7*Z=Nyb-tJ0;souSh!?U5#8UOBozT`%j3$k#W(F68^IBEOhle zjqx*%jfnnbU}J#BwV*t7acZhmc?pV@-Acfi5VDQg?Wu0(qy{Y2`MJD{D7{Xm*<^lLPpjVHPUaX^=>P02WDSE4&o6WO^yyCKLn-Tk2<>_pY0v6A z(tL==wd6=OKk&U#bAZ#KRz8(*g0v`&;-C(3^HGC5o54ty3jJ$<*s{ z>)+(pyZTjP*sOl0)d%OTzdk$vco_2j5}xM=QpQto4Z9NUS^s_X-fHB&4Y?nc;kT%D z+Ldkjdb3G%rO6pWXYI-YedUzss#`OJ&f1k{&~yIOD>-lKl|}Qf9me9kkNb07O72ax zE76|KpVUutx_(-B$|mf^{3#pOUtN!TvBtVnLa23TY3*76vVQt}*o4^Mz_TCuS2oST z7_cj0&((9CspI-9siR$4qz~qcE(}vrN4v5}&*v)r@{FLQj&@~{o^?(g>t9J7?aCrO z>x4SikCHmtl|_2i33aR=C3Unbi}Yp_*7tR;pAu_#tE`{U+6&fCbp9x%=(&E>d#j7} z!Fqot7AE<9O_IzjVm*)=2_2*B?_2+(~q`f*?+Q}OB)9SI5Rh%m; z55eZh{w3_8NjN^5@ZXetH;8UR zyCe63GS06`e+AmgcxE`379wu=Rlu%*m1Y@b^nTNaj5_nKHOb;#GRX(I00QB{ks|8H42e z4gD(ny-&&WyxH8&^HvT0${3HV%*Njzres|4Zi$OT$hM!7?a2;lCv_aKQ9kT>xAFsG z3*ZBcmtxFMQZnB9`yy+_^#dD?XV;hS#ldF8u_q<-ZQqw2(cVbESXnR}I%QG(wP&G4ttQu{q)z^Z~gYkzd4P5_*TGmRr-%2 ze%O_;=lTx@OWt_~y$q7N4paC-2B_;-E!0qVlF$zLoj#F z$r1KKJ@+2!>wH)A6=khh&%9HwWZvmtS(yI>y3vSrcZOf%ns(*reE-~MIdAS^O3vHv zzm7%oXFtYGy^?X$t}KlIKkQY_$lbOK_aT1TmCgC_bB%d+;4@Xp?*z0fVb5K^@E!3R z;S9kzEaBJMl?DC{z9WPaQTupa)Oif|Kkdqi`TlDkp&$J6yHB0)YwgMc|9sBz+ZmsK zb$$aq?aDFv{)3lsuVDSdsVVKg1-laMx%uNdv+lY6b)xRAUFqr{CCTsOx0q-MzmG>3 zmrQ7)p(SK185VY2wr<4UnZG?|lHpA@TK6=E`FQNhZWWCkT=%>dUIc79aU!M_YLI0|sb8{d6XRUYf z-!Q$aj~*wuGy9KM;12)OL@m*6eP@4GYVRw|;9<^wQhWFGbN9|~=}tfHeDu{BR*&dA g+t1xQ)iU?e?{uweyw`3M5@KSECx1ONa4 diff --git a/sky130/gds/sky130_fd_sc_hs__a2bb2oi_2.gds b/sky130/gds/sky130_fd_sc_hs__a2bb2oi_2.gds deleted file mode 100644 index 9baa013b6b7bce4faf11b0c2b982edbb27dcaa61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9084 zcmbuFeT-aH8OG1tnYr^lJG)(qOABcTO^n@0yM7Q`CEKNdkO+jUfH=tFF02nb*_0qjuXx$&*Ha;y!)BuNq(slp|1?Pe*aUx z|55i8`yV-kqKCnQ8QUZHz1%s`=NE@O`E}=pX;y^3_ixLS)b(~`q`tQ)ae662boz@RC z(ogGD^Fz{4tD7Un(M0zgk0XWQrzAj_s*ZBQ4cnU1xSmnRT$8j*=ODvs=wx}bb zzr3I6aQ@!P`5E1hdAT38ewriK1kbm?S{?npfHr}Q^CP;ypw=%D2(0`DURFRO{sHUc zb^I0)XIjpWyHX(9 zFVvs+(?*}A-MF7%zQxLBtaZdi#0&NH4`Mtkp~qSgIS$4}#Pj+q{Cte-cpN)+Y>M+K zVk|h0{1|;aub<53(==>%64sa4dBWl%;(7hL6Fi>t^z`}`*3(PAzSH=r9@J|ciAd-D zU*z?b|66}fe*6{O2hwp|8*yFj^BELmTpS;$KcH{Cfws7}H6O@Wy%P5W#6{%u{s;7} z=SO#dNfCmbEOr|KTimC9rX11e0@89 zI)CA_{jm8LJC~pj#6`pl^~sFs%a}jvN$MCEV|uPr>iqs7kUGZ2m_A)&dcUWGo}`X( zF{ZCCF@62XjMOnM#`HW-=%440NFC#1OwaR#I-WNob&QKKJajgF)qgRJWr_O z`6E)txERy(JfY4%j|5W3xERwf+G6_AYDVf97h`%ii}n3|u3r&r_anA`jXoY(zosiM z7fsLgOMNmE*H^Zfu38mM$Ms8n$QRa6*O)FnESiq%m->(|)Yq4ouKuKGI<8;pL%vYo zc*Atf2Sn3x{Zb$Dh5FWWrfcsNO~>_1eaIK;I|ohIy-GA4*Dv)UU#K6NHC^vq(R5tD z)Q5bbet5=oBg;k8as5&s@`d_ETTC}v6-~$WOMS@C*N-~?e2}cezUy|ZGmz&IKO)yZ z_a!3ZBk#66S$`Gh?cXyp-+k2bB=eoCGcwQT98q<_h5Q}hezkWPhAFK9KR?Zz2Ew z`Ly-yc$1oC;Bc@gy% z^5ggGl@FlZLpE-a&(DmDh%cn~<7xZ}Z80Zg^9T4opRxKy9NYWQe<0g+e{1c@a)R}6 zOOC(8I1b@=U}+zIFT=b9s?MC}58FSCx{q>w41F2L_EKZzF06O@3oLELdi@6a3oO5i zbT#VFbJJzLMWL?I^SpDR7tOs~6pPjLeYbxU+@`e7{u5rHU z`+UXpe76_!Q9XULzDVEHi824f@4>Nu6Z4JhxR^YM--wHd7uIj!Jwbx^1x=i1eLjmZ zF)j|iFBn)q$;0seEqrkw5Gz7l-pY5b>zKfonhYeLiOT zhS-YhIq%eqoOgdc35?Bu{W|l_>jwRk^v}2$^UrqlOqRYTwBQPVfX^>ICYv%W~*{#|uo%s=lB^w0Z(NZ*W$ zG5>5w-_-XB-##uz{IeZ>Q!mm#<6_Kz>oxesy7Bj=K&~6c#n}2`JFXk*`^38OaWS%f z*p9xb7wMaEG3LKHVg9*q;W$Y8W?YQ-v3EAnP(N#_D(e2>mwP|Gt!w zdtt^! zh!^^=T#GuZalIJJ5%+T+7gxviyl+u2^1emA7`uOQ?^b;s-y<3M??a4>$QSzW+>N%l zR&=q45c%xHxQKY6zQj_x|+c z5*`uLQ}8dQuDzr>xnl2Wk6-kUeXhN{IvN@6h7UtbX)&F4-E7;>3du=ug9@( z^K+;5(%guCW?X$N-MoPdY#86*$n@|s$I(1}`zv0*agH8ukTIh9`u>PG3f7nYk`E8m zKW=^SfBuHS8O0Oi|E^zo6x06&`d>RSyR(J1%v5<%y`fJ?|a0 pr||zqa!2mCY7ZUht5>~s_3+atqUQf;z`reX)>moPYnZ=^`!7$(I4b}E diff --git a/sky130/gds/sky130_fd_sc_hs__a2bb2oi_4.gds b/sky130/gds/sky130_fd_sc_hs__a2bb2oi_4.gds deleted file mode 100644 index b41b4a55c92a83c44c874bfa1a2743662fce9b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14706 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a311o_1.gds b/sky130/gds/sky130_fd_sc_hs__a311o_1.gds deleted file mode 100644 index d987e05d07b54bb050122e2314479ab323827b89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7712 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 U+U7mGgviS;Xx>s6$Xx3F2jzZxrT_o{ diff --git a/sky130/gds/sky130_fd_sc_hs__a311o_2.gds b/sky130/gds/sky130_fd_sc_hs__a311o_2.gds deleted file mode 100644 index 55417b91ac80b7a4c8a03e21e1dee8ba7eef7db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7348 zcmbuEYp7L46vyZ6v-h0WJ`d|sT$QNEg0k`^6`_<~wSq)?n1xX{d(n#u{m{bJF^3q-#Kf|f7Y6rHFNfy zYph9<3(fROQrl&kX3*5k5$4e1dy^;j`fDy*xnkw5#tc-mQ|I4v@>%aZz2}sLTaMp2 zx_qgbp2fA(tzC89twXbCja+rb$g0anu3j}VvSRko(2XM}n6z$;Z6{`pv7N-sG&6fu zW6YcK*E>8g8<6)(v`MF!zJA#02h8o%_ijd~-y73;G_ZCtKCd@MnIB+G`zK?Rw6}MO zpR~`SeI?NBk^Yp~Mv0?Dyl6h{8@_Nzpmlf`%SVLz97v}*&|zg;Q)lZ>Bz z5lDabzW7P5NA^%4=iM%n`6rnl<0vERv776WJ}I$MY%azmE!H}{Hjw#LKbCw*`l~wv zsY_5_O8X!_zY4z+?UQGuJ<0wO{3+RAf?WE9&RipUGCLi9&VeV##du2E)0X&2+Bq&I z@+z*!C4RrUdhG2)?Y@P!cq#1*##BB+eC6$!`v>sZvxeMTL$G<$-tCH?tl?l`ze@C5 zjDMSp-}C2 zK%8eJN`Fx=^D)5r6b;)=*&yx7_FH0C!e7*n`1!cco!>j5`y2TW7Wg*i<|usjehdHSdQZ?ZwyQIx)|ql_z3q1K zO}t*U&Xnl3nEyFWpYFGQL2>-7Lpu}sFDmd8sZXn%IVS!XeGBIz_4&F2p>uX+iN3v6 zbe$^;gwENOC3-tYbUf>rha+^(t}M~lr-`nR3NY z>S$M%=~*Y#v3``)(XK4hbDvSi{imdkc4e8qy;XGFf7FxI(XK4h^ZcNW=ZBIy+LdK` zGm83pp7o&9z_{lN^C|XD6Kz4(A74t=UvH<>AxV1^&%es% zOPF7@QPQ4m5#N(fGUvQ^$L>lDgvkIHKRi=Ud*V z8ka(Qa$x;T%m?m$$`+nWyW0`Nv$jFnE7M{4-^KVnD_FbE9awYE>SNGu!FQx5?M>X# zl(eV!i=V8&0^f^)ywB;q&*wYYd@Sa8I1j9AlKJMiCo1bdVNNeczn-*no|USL><8C> zb(hp?zOuDc^h(&H@mts*yvy>LT-mxBYY)2;_Nd;zC_4T|6k4D@lp#3;7S%}ZDE8&mMUw$I?+FY#vmj!-{ z&$KJ&#`XN(qu$8tC@mc?9RB(qcVmSHd3EbDuSOvj6&g9rZxFvKQBLpHavC z*C%w&t}M~BPO5iF{V3Dpq<)mJyZo^&`Tvshj6I0|FR=$#OlIuV3T7*xmd!h6-631f z`QdJpPtS&z!^T(co;m#cL973I8Pnf9*Wa88{S7|O*Avo59cQ#zZR&$|*%CZ<6!Q^1 zG8vc81bx2V>CYag$L|Xm&qRHHJRAe#tNwy>$Hd=fz0d!QB@4&s@%zNT$M5dJCBsbrs7gDP=#6|VqMxPC@2<-D8(WZm%3I&h-<}2v?u|@ zC4yKNTq=TVG#Wxlt!P1w8jXreL8G-HN>NXf&eZD{z4DDKRvth9k{8ck^rHEfT{J)cf|V;)yn6nGq}oi9 zdVe{&IH?bmljX^qhbl=jJC`K2Zj#LWIm3&SWc2g8cFI3;v-wl5Ns`X%bnSd>k~Htt zwNvGjomL+5M?Fr}S6!0y;+ae1=_Yp)Pff+@kCXF9k&Wl;`kP7O>+y?6kwF_AJ)k z@6z7pxoYQG;@OeJ(LB}SfyCSRQY8MyC(NHx@z&q3Yp4A6OU)0_*Y1l%U;DNBVNK&x zC+0xnu50|A*c-Q*A7UqNr{Z6veWef4z9lc!z4nP4B8g|{R*MJXANq2JcO=Q+c3nH= zAH3T95dEO~*NJ}MPv%c4UH@Lwrd!#@ZQa9(z5f{V!_v{Z-W7>|;AiHC_y^CA#83Y@ z>#M^!IQK0!UY38O%WYna&PLMS?mMi#konVnLnQq*qIvJcKeEyM5dHA(Nc_WJH9xFB zOxG7g*3=f}g|l?I%^zn~ZKk{v`$%2w53F6G^-Jw=s=h_$r?q$X8rAz(t$$}m65q^P ziw_e2^yeb+Pk+Sx5dGAH4}fvD^{T9D;S_Zs~`SjYn!d z*ZS+k&${Tu-gv3`VO?WAIG>@)k37xFr&RxRzo%=b{No=tKWs1`l%r1SnPJ@t#7^AK z{#^^k^G#{{hLYv1ul}JtpOp98|A|wnlG$%pAFA*4o6e~-Li%yap4G1j{hQWbI!AG8 zZuXJyfo=5tIRKmJ+sL+oAkU5~$4eyrEEQ~u$7M_Hb*rQ|-(4 z&&mI1{w&mQQ(I0|{HJ92X9bVld1`U}w3Tt>r2dwHE1&k*;qkCG>flGWBQYpX<~8qwi~)JI84KfM+X@ zbl&Pw_C)(Mepnqczq7J8=mN2~wC_86_dRBj`RD8NHtj{9v;1}TD-QD4DSI}4o4-NN zJV(d;ccR1YEYepunyyxhM2Fp3q$f|PH+{AVM2Fp3q;F1}zPURR9d>7tzVCqPTH7Ph zVRshk+j~sc*&2xsyR%5&zr%C`nBxWd!Jn&dPMfZ|+i5!TAARuW>iZ6uuC?81I`SWV@aO8= zdra5a>NFksk3RTw_5C|cH?YZRI`SWV@aO6Wx0!C}6sPIPfAqnht6#Fkbi>P>rX&B+ z2Y;@9WTWZ2HK*ywfAqnhs~=ruy3u`3(~by|LB81S3hyUbd%ei zrX&B+2Y;@9YLDrrw>nKn{-Y26T>Z=r)6H&jnvVQOAN;v`<|*fQ_OBjwZcpvbh3EGL z`+s`QKeF?`>AT5(p3i1Z&~wj6jI3Y0M{+h*|HONhgMrw`Hkco_o~rRZFB1Ro`^*np zFV_6iv#%5Xpq{Ip*!y>zA7XD`9*MuT#{3XJA1CW8&nr&svu`m!^md7d_kU>rpvH)C zg1j#nIwQl6X+Jzs*MXJm&F@4<{YD%A^m$tAdHRu`cZ&F7`K|i{0ueexz|02G+@{sRDs%p2hbgAxf zneG|L_fMR~osHkBkJS&(=DVc5Qtb$&T(e>2Vf{ioFFEyPF1NBVuzPSvgVDYZb} zpDg&kX=lE^cF=SU83vsi4MCnM}Io~*LSz|GbG;!l-thI`?Z#6Or4b8`SU4mio1%{CE0&#Kr2nh5ANL*FCj9!#?F%<24!9 z)hD;>InYXLG`c7l^F_Fy=s6N@9@)zp+G?wUle8BX5 z&eMzaE%HlxXZtMEJ7v$Ue?n_q-<-|?+cMm*e!}jYE7nsldMEXwcNW#3o+qwTK5I>C z1-74V=M1Opx$!T#R=Rg+o~(^*uh2Y^-6?;rzV#l{wO2)=!|p874~&{_;A@fSuse(N ztfTBJBX>tu*Xvq#r~J9`^Sy0ppPf^j<*T$G$?lZBP+!qp--`^oexsGbK(2&1^Lr_pLDlruBpAw$_2_D*`2cI*3UVlq&10ijkBz^2)k4ETz!ds z_zsob8d-j;{+Hb;f3BYOko-^Azd-UnT_*#J@}F|#J^CJ%_o>}kkpGk;@6bERJM7M) z{2M>Y;%9xQ9qBr+xUtiY;LmM8e&R;g;{&E+{R;jl%Aec*j`le8oqtE7!|p87Pienr z?oPiZl6@4rQ~uogTj$%nZ%;%r@3A|J=0D|FH_$s-H?TX4)(_r8x3qWEz7W|yMc1-B z<X!nBZ(Wkvnc+G z_AQ=UD)&b6+=AUHe{TJpYZ(98heR^&>3JuxX#CT1dri+X75CxU3A|g0~WgvNr z-C2~sl&hRz`W`i&sokmHf-X@w+UEH^=z{$_eJ)qMRplRXKKTEFKb`3)m>r~J9`*UwP70sZ|W!<+O!cIQC8zWfx^m4BC^bgA80pr84$ z;?_GjelOzWcMaH`vggL1{_aWo2|d%Hhv=|7i}dY}O7{lsH>XAN`#S7S`E%>%{S*3r z+7XBjyR%3?K)a>mcbHCe*qufC)-z1kx<3*fc4v{Eb7Eyo+Fxh5OV`+)W7htTZmIeI z?4&-%@1g7CCH-u-K2=K8-09ltW4A87Y5hHy>J?pW?s>BD>F~@RKAp+B|Fn9+{Z^;< zTXop|Ca>l5LA%EwH`$UjC+p8$H>Y$VA45E*S0snTbC|yK&Q$-bL-hK7T)7G85K(Dvk|2_Kh4>WX_5dGQ}N3Q1g wd#0Xy5bBXHx_ZsZBd>dQsHcAHk*miq=&2t>=2Vma0LvNcrT_o{ diff --git a/sky130/gds/sky130_fd_sc_hs__a311oi_1.gds b/sky130/gds/sky130_fd_sc_hs__a311oi_1.gds deleted file mode 100644 index 47be1d3083b18d9306a3e4201664c041528e5e36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6622 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a31o_1.gds b/sky130/gds/sky130_fd_sc_hs__a31o_1.gds deleted file mode 100644 index c4ffee3e5bdeb2b1ad496e7bd3e0c7de7553ec8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7150 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a31o_4.gds b/sky130/gds/sky130_fd_sc_hs__a31o_4.gds deleted file mode 100644 index 341a53ddd70bc1a22fb54040b2f58006f32c4459..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12970 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a31oi_4.gds b/sky130/gds/sky130_fd_sc_hs__a31oi_4.gds deleted file mode 100644 index 7d86e04c3c2625552bb1325efde7bed974fb3705..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14192 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 aRnQSu=(A3)PY-CWVcQ*Zdq8Jt7QY1p8K>F+ diff --git a/sky130/gds/sky130_fd_sc_hs__a32o_1.gds b/sky130/gds/sky130_fd_sc_hs__a32o_1.gds deleted file mode 100644 index d6088381b993370824c63720c3fac3126f3b28d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7170 zcmbuETZmOv7{}K+XYYOXxs4{1H9Ay~5~O&2h_b>_OQSM1Q`2tp!wAq;UQhaUKqgUMc>AsU!&Nw*! zrQXH!O=lc-JCmem-R6mtCv>k_)!lPv_gy{R-76+fx~F@hF;Qwv(kPk-P1060W6jv1 zC1cD7@~>^0XWTA7D{)M8p7*C&zuj!3U;G`NE(4clcmluA#_x{xVa5~=8lz;q@S3z+ z!Y}L*pEM`oU**XqKjQS3BPpIlTL)m zP!{H+7UWUl_+UNdG15=+Ooqsp?8HAu))V8Lm5j$fNIS{A@mWviWq(SxGmkQ_o(j%` z{a4m{GH-fJ@{?>&k7kJRDF21u9hoN`Dfvj&ksk15JM$>fUvPYC?@Pb6DH$SvZLH)c zSzq;8Pu5p`SlTU7SG7lcl6h;Fd9ps{Q3l3mJ=b&FDCwuMB17bB%#(a1>!~01WIgpa zrJZD+#&l2C!+w=5`IouNG|KG|jrmRFOFBlra$CEBy&xyAZJ-F}ust2ewVBNYCC?*(fI-#j`>j*HsR-S7!Tz)7!Mp*aKv%p z{;-Z}7h*r|%WxO^e-ghtmM5S;9H+$b+5VQ=`t*8d&YnGsYu%70Wt`EY9d9G?tS{r! z&hZu3&JV7e%El3iD_iELJ3BshUiUB?e8=cZoFDd2lW)uTM~*lyThEODIbZ#J)?(L* zQrC$RrDfL3FE+mkuQy#MN_3m`=UP7+v_HMi`S;2?DqQDT+>VThE3wY9`TO~$S#aSu z`J4D9<*cyZIE0gX59@EWXS@n~6>%lngZV3`#jEc1q{p~2&rha^$7>MlAn7r#%=7Ja z93HRt^htV*EA#wliFk4BNsn=5i!bZX?k9{hK6;%|Hcm-g*>b&U@v--6Za-VX)pcuW z+xw5dUJrWZ+Rgd5*KV+}5Pcx7L_Fvhw~AL9?MaVuWuDJ*VqT7)k{;vAJfHJSFMAK7 z$G9@j=RDKryesK3uFUhfPU&&|D(Nw<%=2r<#jEe|q{p~2&u<(OkNc1LNqUSc^L*2b z_3;MxzY=qQo6Nt^#&hOhywYf;_?&`I9N)B`1{PasKJM z_Mo4R6fZrh6p!;y-?az*%4zYcdzIpG{^`5+pkF&KUVVpBJkCFT*B6B+$$Nb%kF>qu%KT57I-Zzzur}Lzp)PBKW{>J6# zfOUe=P^{nkJQ=t5WlK3f`+S1+YCnh<9}}M}z6y7Qr}hgDl>c%2{)Y1_p;n$J->>*S zrnK*Mh%3u0F(0>JtQ@Ov;aqoP?>i=V$17poC`)H>{8Ypo3;QuX&mo7S<^>0;?~D{#+mC-6Jn{XYVO)v!V16D~+9vP_ize&s+eXbwNocS|fNZo}8JXts6%Dnn{ zT&0HbgWn{sWj3y?h3n^W-2e2I-1m$t^Y(x3Mby0%*W4RC(=uGdm1qx+ACIeI572KC zd%?z)aoA5LVz1!7pB&GS-)%6iY!Ca<`Qk+%W(d#5l{tPD>y-Ix8#07v~DiI1FJ@ec zcsM`q6QwnB|4{NdlJ^fK;z6I+DL#ks`qkta{LZ*?UfAb#k{++0O~SKrrStK)z`sA- zYLemn`$KX;!NevRQNV7gkBp~|*>Taqxj*kT_0D+OV#N5V+h;)ex!RGqKV{gnalK8o zy-n%YTgPsGo|hiV+tI~VlXfHvX5-7h{yyqxsivP_f5iH8T6}yPfwSrFH_wJ=!2Iej z>^mCg?7RAB&Ysbyemsr-dw%;Dl`$siNN{V(p8Yx7r56Tkw_!EnuO-Mm&0WXc%$-y2 m>YS!M@xND|>{7dH5V_NhO?wcz`R%Qoch_X89GCSdGXDT(5hxb` diff --git a/sky130/gds/sky130_fd_sc_hs__a32o_2.gds b/sky130/gds/sky130_fd_sc_hs__a32o_2.gds deleted file mode 100644 index feb4bc688793265b01237d797e31754da4cebc94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7108 zcmbuEZHN_B7{|}OcV_P0nYl04X05JKmQ=Xq%MuYAvD%ttCYq+DQ+~3>>4)#?-bLqolp| ztoTWD1oxkpka5|r673Hce?8+@UqU<2fumDI`_)+5CmA=sKOy7CE5&aKeLPq6B=d=X zO6XrLag>OcnNPG-+KFyX5%HoK5|3m);m(B2C)_4}OXL%_iJoLW;oAwB2jeI+^0D*N za*?!Cc|JwNt8A2bB=af%l92h7zY{;n_?7z-GA`RyX2iGi6Z|T1gMBHY{oo^MpJe=? zBO&7lW1OGFc=+2AGH!tJRWd)uQD)?Gfc4^aLWi37&Pd33UVt_n0byx?oqNI#dXpjlJ*knTuDFsp+tYu z^|;ur&s*&JJc!!egL`o)IiAI95ns6;Z9jqEO5|SMjo(Vx8wbTtqMdZShitrt+fNt> z7w_X`c~t&3N~E9KPr3)|#OhJDTD*>Fqj#zP4QSme5(dGDjbDiH>^+ z^RR@@+Lbx_%4pG5_NEA(wJUSpG$~u37xeobM)N5%Bb1WxP+B!WPek_pPoOd zA6x&d9PFcm_k+L0UUeL_9}LoCtwe79SwgG(kfrsfS$Ny>Agjw^ZkU>(XPzXvrZV7b)%$?c4eNPbwVBMM@b#+$~-;mggVxZ zk~-RzdHQI-=;BQYsiR$)r?2i79oHS>lho0!%+qt7Q^)nMq>grFp5FAMzTRN{C{a5% zO8p3}J*R#|R~n}jJ?n@1;<|jjw@7rpuM{2YhkEDFj30D~E;ytV9qWgB=g-tvMvJbp zS1CHy5B1KUsc$(Zx^SCPbgUohoj+3_?H66VNhvzk5B1KUsju!9U2VBibgUohoj+4w z?-yNTno@MEAL^ZdsJ_)a!}k%h25V=TkoCt)$@*&?lsY7757DMF#Cvk(8`vCa_kR>W z$#%V&3F$9N*C;!B_!yY)opQ-10kmrorV+pCV=S4^OGxa>T*mDZb zCraw=dB!nM&+`{`P3JA>?D@G#fRv`E7i04?C0sBhy!O?pdzrRHLj;aIG?aTKU_kL357@$0@ellK{9XJm3jH|KIToGl6ljv z%*(&}2yLF8qs|A2y0La;PW=?I zUzAs)?^uV*%1DeI>`K_P<6j`-9_>rWagShE=8Zq^Vz9b>PVbQLHKQsUM zHLRT%P%qaf47yPduq)xu)K@U?)bl+>NgeIVJbk!IbkXSvsiR$)r!Qcx{0GtZ{RxAy z_zk-f{>=RA8=zZ;@khNVgBr#kb|vhYdjBYN=zp*^A@inPnU_EJc|KpuI}-A_O1l#N z%=nz=(ngtorFV(UzY_LLJ=ZzobNwsra~*c2#*fh@e6yKrf|30Hhv3YD@l7zQU?3mu zcaPt6_O3aHA2)HkKXoB&ykh$fEPsb>f%~rvn~iI&+qTv+)zF87?jNref*@=&mN@5*9P=vsD7X~>;dDee!&e*@lROq@}EAdr%8{m75^Q- zj-5Do)C6t8RJRwn(K{h^tudgUbn>zJm04m>={$KgN6x8FA@gwdfcg|NFMf`7^an=` M4-{K7WzaMK0usnh=l}o! diff --git a/sky130/gds/sky130_fd_sc_hs__a32o_4.gds b/sky130/gds/sky130_fd_sc_hs__a32o_4.gds deleted file mode 100644 index 51a741093900c140717dfcab02d1adebe604317d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13552 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a32oi_2.gds b/sky130/gds/sky130_fd_sc_hs__a32oi_2.gds deleted file mode 100644 index 4443131d36cc3080d3b779844257e0290d591d65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10626 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 W@7Y%{YE+EP*vWal>ancR2>$~TJ>{MN diff --git a/sky130/gds/sky130_fd_sc_hs__a32oi_4.gds b/sky130/gds/sky130_fd_sc_hs__a32oi_4.gds deleted file mode 100644 index 55ea6c050788eb28e800fbf2296a49e85871c826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17348 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 diff --git a/sky130/gds/sky130_fd_sc_hs__a41o_2.gds b/sky130/gds/sky130_fd_sc_hs__a41o_2.gds deleted file mode 100644 index 32403201dab60c31e6de0157e5238e1994f8da25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8876 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

      Td! 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 diff --git a/sky130/gds/sky130_fd_sc_hs__and2_1.gds b/sky130/gds/sky130_fd_sc_hs__and2_1.gds deleted file mode 100644 index 35d2906f4441b78066121fca6e4299b624a437bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5204 zcmbuDOKcTo6vxlZotgXAYU-nppbJTiR4orBTB24z`u~65cRF)#?~K(>a`T%x-~7)x z-}xT*yH_Id{bA|!{QUP)k~Yc96>@pP0|^rYdfQ8{NcUJS9aHSjMm1t*LIHAY9o6_SJak^1O<_(>dStK&hw>9?rF)1 z6po36ts?oq5r`~?@p@%l}?Ryo9Y`IAWEWpFUT zvv|H4&yJM~asRf6lJ@AZZ8wBIdITTGa6RrnL_Ut*82sIaoE>RrTqSg=`Gxzf-*9zI zQ=2Q{gEaz~SMW+q+Jk3oJITC)l`$DNc+|!xy{~W|#$-F=Dzoy-t+jD-t70-A|8<)W z$$b2mVn#(gUx$1g{Tne>yI^yaa~SVDY>u@1pWAja97j9iD&ap_zin=OH*kE5_lZB+K2vMg!sx6$n8r!D`BUO?M|Qc|Ag`1B3<;a7vJM$_`AIqCBh}u77LHdf6dT#`tn>DGRrvHb=1r9P{0{$9qb=*UXfAM@cgZgy9p`(wz zg_jccq<&zL^I@KzvHrt+{Mp189S^GO^*RrgXinxoWc0!R)~~JW|CHT_ymc}CNkoKQ ziTx@WzfSK@SY2*uOzLP?X6b{i=-kH`d+dkGa1{5jD`8KKU+BO(!=6{b`cZNn(yoL( zQ(tVc`Z*#W>Wj*jY<&symhqM4E~{6BqIF>VvIT7lul! znW+EevWkJUwIl~xz^D2+W;U+A#9!fB<|ar_zIwWsP?r^grFmY#K@j_XHB9qr02J?lgr&sa+8Xjf+GStsf^|CQ9yu57Ar6?0xN^B?oi zT&Q=r26v9RUy#QE)W(r^v(FmZ@pAh4^=*~idR|~&yqFL5O4_4o*Ke@!BI56f$#x$f zCELAiww+YJV6*u4`w8bPnMEIPep2#`X3k%Zu&3&Ijtq_Pp!VFY|qwn-mrd3&Ku^X%$h&^{TRNA&($%bUi2My zCE8Q-myb{@yzgyK@JA72SN5js{i@aZSda8$2%WJjGxX6XHt+m{F_|~*%B=kJlZb^q ziS?V~x3+%1vO7J0&U4nC^Iyrj)2`I|SCA6U*mp{FG5-&VF7YIksNF-gDji|(vgeje z5B+pNDxG2f7T9=I^g9LjrMAfZwPHrYdFwUadggg+dyUs&>mhg_`UxqtMRyPOV{rLv zwN8&b8nT(EuN*Y`jSYI7F43F$`nle)2aK=!&3DwrU$EZgf6L%NogSyde~-_98vJDv zwMBjPyp|6(y}_B}kGu^TG4pxA}SFc*KN8WSuzZVOfyA6SgK^mS65M-GAf1EE4e Aod5s; diff --git a/sky130/gds/sky130_fd_sc_hs__and2_2.gds b/sky130/gds/sky130_fd_sc_hs__and2_2.gds deleted file mode 100644 index 068a905ff5cbfb9a42d4cdb0d51a7a0fd0be6152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5334 zcmbuDYlu}<6vx*+?>loxrno4hgZM!sY9KQzLNlF=f<)4Ml&_nQLQ^EPFFqm-vH~Id zRt`i&U=NBQB6|=L*_WahmDJaepe&@95QY8!d+jy*+?hG2ArBmW=d8W|d#%0KI{Tb^ zC6g$+O9mTJ{=M|bfaEe;W|gm{6=gfOZ{EFW_g;~9oGx7a#Pzp-bo|^6OHN$%+{oIM zGMH9t2eWL?j=fi3Gq-c!*3ODEB% z(^bBmgg#vmDCcnhC1UnWK1AD(2-uVM{Ghgzv@>oa#-C_@M>xOaevGvd><`R0;J$$| zJQ;7iL*pfBkJkrMAJ0-f$#snv1~R_*D~*q2JN+7=pD4baj4xWIexjQK8BgOSjfZ4B zjbnj~N49G`B>gl_1Tr3uYlOb+f1}U8)(^U62Sl3p1ooYT5r+}&W&J*<@AvhmU7enn z97q1(6%Heoqf~#3#_C&rsxzX--C=~itY7ToU%>S%z7^>`itdjE<}bqGI;@v*uJ+44 z(SM@xbUj9}mb5F)^Bj}*z+hCE?gMqe2luToDkPpw7sm?^=NZFRl|Ng zGqpe2cT(-fG5P5D^;pmKaCv+I_4pa|#t-Nh_nyh8sFlkxALHw2LwzMi*f|c{{dnbg zmt182#_1WGs~e-$jS-=g>gTNUFV*#Dbz{V^W&LuePyV<5=C1jpF0vui%q=B;1CO*D zhr0ZC>7)Isi|3RGowFNj^x1sW`Lobsk2Myz;U0D)?B)4)`Dedozv@T%j_RAn{(61S zBdRy{Vm&yn5%#iw&A+R6tP`JyUgqBjljYsf*=zLJC&%s|=Q%E(8_zNOhtA)g*Aa~W z3iD@#a23uGqqCR&cj=@3s*C3sRmc2s9N%84Pu8g}O^vGK{zbiSuheJrRhOMHs*dYV zy>GA77c*2>oHDAem|=AGNfBrh(Ma zZmiRDov7#YW2BCDW1XJsL|t(zkUH9p6YAUI-v6%tQGf10zT$Ur-f5$hD3AiuNOZiN4G zeENIB@29Rl)?=*WI6a#ge4}oRu-EE)URJ%accto$uvhAn2jOQJ@y;yqEMlkKI9#u% zU+RtYOTDqqKYx$qzaSUe0*j}SAJ~m(uZ*AlnoCtb%0E@#G%l^zGj94fGH#A*tcySY z8rs(o>%)Qgy(_dE(OwyUf_HfXduj4!VDu#JVK<_^QZJ{~Z{tuP{nBo%^Ur?q1JFWm zOs1>e2z#Y}_naVq@fDgsl6j-uSeHNcW8SD6CGzI%#+v-GAM-}Nk$I!tSeHNUQ~6Fj zx5$C9n2LMYjj&hFpZ%K174@S;E}h-jTd!x_)EgN$^~T!xn_4#+_IcJ3$-3eH4aU0q zVb1yA19NTUK1RC{_R9IEN1$t??{y{O*>QGb_xq-6{}b%@^xN1HNWZij&3_9f{6@J` zvZ?$(C!5xgRI=^&t(nVK3I`hQxpAJiFFdbeC8;_Q~vvJ)skomuc+-&@4i`;1Q z$Bj1d43A?v0)OereklgB)yuG1j@KiOG0}|Ew;p%;JI3hob&uJM*N@JIGoXLduUXOM zf6{s%|ETPv^pq}9!P PFGk&Sx~$F-Ln8kIj^J3K diff --git a/sky130/gds/sky130_fd_sc_hs__and2_4.gds b/sky130/gds/sky130_fd_sc_hs__and2_4.gds deleted file mode 100644 index 91a0073ecdae58a3e91eba30849d6253cba43772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7706 zcmbuEYm8l07035I_dM?7+_|?fMW-De3ViC2R*;ZdFl}jr1j4gCD@-aN5FP>MQ>lI+ zqyq5+nh*$#3LiuQ1rjwxNO>vmK!SvzVohj*LjO2bI6OJW4OW^gGvVxn`?#ux&g zglF&BvwFkBEAN^;caxh;s!`nwlS&s;El$;|ZhmMbqjeERFo#VzO3 zUgW;-(y_=*xf2IX=LTPOE*W>Ozo*0-oO8Su;dhUlpX48PBJ}Z+qW|^2|8e&y`|n-r zT=pyQvVz^`oXcNxPNYA7*8HB^;JXvoBK+MSnV+Pt^GQMKJMWmEOzwlPU9j;AuF;=J zfBskVle9BW5&bPTp1*KB{i7{T|FDA0XY4l1hh#ouHx^6|!1XT>FVM|7*ZvdcFECk$ z{3qZKOn(Uf)3{lI?63Wh^+z&Z`@n+UKL~!1y4K4D*>8Kj^-sD>Z5-m_<8Aze4^zqUX;g3`E zlhik_DoA~Ei}^jFk4`teC;ZU{^OMv!9xO z?@6mT2sw)xha{i}!ef+ug$Ck$*;WsRu!umV3#6O@`XcwnO;*aRNyG)mF zFA+L#7i;wGPfgdkyF}=`T^!Zh{QG+2%%Qfrp<(z^Ea{__0I)1%hruWzg!etLoP z*0+sc>tz=G@4#ByC_;D!{$@pQFUKFzN83!-JXACt=b!xqf2BU&Y`P>7O&4z#y}eSO zt}$KumT01 zeQ&4f#x4>~*V`$2d!@cVYr4Tk(RBS;v0l$Q$sb_-6zrV^E$kxvmGN08)N}oc)X^^1 z=~*Y#B}qZ*Xcz1BtP|>aCK0KlU98iyPN?JWqeva?Vx69KLLK)HkviJNIz8)zI__U0 zb+n6hde#YbV;2>qj&`w5&pM%gu(2R@w2O=C$KCyQzOlMP#n`?xQ!xIUozXW^8@xpzd!F-q<+WUOFEx% z{QPjd)Qf&zE(!AjX8%BZJfn#8^Z7_@y^s5L2Wlsf_SWm>Cuz@aE=Yg;p83hvO_+<1 z3)0WCu9!_CNzAWEJ3rvU^*QeR^GWm-(C5i+L3j z+%xJ#J}b5|%zGg7=G=*VzGGe@;xCr}iGKdtm}fk<^nO{eiCANs(PyB4u6_bZ%we1$ z?UHX#bwp`w?DGHJ9m|cyuDql$)D|*H}xX( zrd_PdpKG4)IJnmg`L68+ZE^JZYUKV?-@*GK>c#FR(~GcI-oN-bXkSOIalZ>}Uyp0p zMc8Zgj7z=9xYUbv@!eC%^>VBY>@#9(Kdc4VMc6CjvmJkvs2}nn)AQX^@Ym{@H}xX( zrcSKOzdwV0LiT+=QdUmc(G9IdeVAM!Pu|43X>ujjn+{)x<+ z{fc$@r)|{TcKf{*TPtx5y9j&b{IOkosp*G&!t~tBgTGeKy5sM>$hxCWtgF8WxifE` zCq(8=yI7Y$+c9tIheY1qE-tMeKie^H>P6;FyI7Zh-b7o}FV9Y*e|CXgtgGL2U+7Rj zJogNVy76|grheG2`BT%2+`DKOVXwS@(bX20=P}0jL|ktdYvQvV>y|o^bxXTgSHC=0 zL^!ALJRvrD9)ewjy)u8kmrs6-d;dZ~KC96#!e6P6k1-w3{OpIMj&`w5PYwUrRxE!H z{>u3N-8=L=$FnU-J?$dwmHIB~Ciw*QcX2_!H>6#Jzf#ZojT=_KL+-#e?P8-^@Av7K zv39V3^I43Hw}SnGuvf1lb#T_>`AO{JEJ?cvyVvKK61;;v z-KG2S|8eP;8aOhi%P@MEFHhF4*nYsnr@r$8mro|^&xMVjT+ej)-kC_lzxK+#t@XXF zSaTO@M0)n<==VyUuaX)MGUd73D|P1-sWo#MdWqft E06u)6RR910 diff --git a/sky130/gds/sky130_fd_sc_hs__and2b_1.gds b/sky130/gds/sky130_fd_sc_hs__and2b_1.gds deleted file mode 100644 index eef19595726a874c32d71304c84e9e4d8d8ba4bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6250 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 diff --git a/sky130/gds/sky130_fd_sc_hs__and2b_4.gds b/sky130/gds/sky130_fd_sc_hs__and2b_4.gds deleted file mode 100644 index c48217cf97ea4fcbaaf570ad5e561dd859976596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8556 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 diff --git a/sky130/gds/sky130_fd_sc_hs__and3_1.gds b/sky130/gds/sky130_fd_sc_hs__and3_1.gds deleted file mode 100644 index c6e2190621d4a0141106408a0ffc72dbb20eeb8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6146 zcmbuDe~1-T6vxk-H#2YM?OWSwQP$leDnoF=HH$DScGpdVOf)S;v(+@yvWVS(vQ;S| z`+-6f7^am)(l09`C<_XyRQjX-u&4+F!wf1T$s)*T`+o1e=gr;SH&3yF;q&I4`QCHx zxo3Voi6saYNLwK&9g(uMNJ%c13;f?w3F6hOZtGjxw??G77+ur#=oQ!Rf9d#?o;?$H zY+E=_+M;}ITO9Y_wPw=fj@}i^d;6F5uI%saU3$;*$-R?A!bBu)3}l_eqXKD{Tbha@ z!md0dQaBgKN}Mkr+Ve^797l=q!n3n@-6meMtY*CQc_eWZd?I7z z9FgQ75heY}uhwt)IF3i-*s;)u<6X$fF`912RYG4Y{#wQ_jlnp7V4s??G=Sgj@HsXh zPP9ctNqh9L^^?)7*binbdjy*L+}GF}V)MC7OZ7qQ;N zv11ASR=OO!V~kwW_3$g9nuJs%o9PDO2ly)6h5Uz)avHSW? zR}ZX*)tGg|S}Pm(TDuZtF3V zrS_e2SpSXCGn(mprS`pYX#XEG@kQ6$=IZM;t`cYX`Oh)>@Qn4-{P~BA(D%4+M^VP$ z0R)6y3BMnIgg$)V>Xp%Qt5?EaSI=h;<5!7%7(Z6F=j+XL40=8@sW*hq*p+qk=}GkM zv*^E_8I$X9KY(2ce{TLfFKx2=Dp3z(S2oqx^WA~*l?|8&^-9?N__qI=b^UQ|H?aSd z=oaleLu0R_$9u={`!AlI+!`H+^}k(zyrq<#pCSW8-{iVOPSRt7o05FOJJd9qr0`de)hGUcXA}Xjj(Lv(D7< zx>Zs~yRx31b*3)amytT!mG$(jGxfawl+@9#tf_An^FCmn$LN2vv0w0hXZi*Vx8t7j zQ%2g&ecsTnx6_YYANRe$ahVr4=0m-b_B6JBGWi|xFU&}P@h$5o=@0N+SL(Q6t@u}& z_q$aHJcu3Sdun*KN8C3fJhuZ!JrArko_SvLJ)L!-PHEl~U{}JPtB*c|cI5Yk&`!Pc z*V5bf#obsF%p(OG@SanKPFX~K((h0+$HHOM>PcK%j?9lfXJG4MP| z_GaXFT)G7LI`X@X-*-wrj~G)K{2(IuW>7X@jSC+jZ%2;L>rF{J<0@hI^RwTh?*1M3 zL5KO4+A^k?C+$l3bM+y5KM4>IJzeE4^thKMBf>^vQGaMpF!`k)-y8lx~5$Te{TNC3h1_A zzD*h9PRs>%CH%Si_&n(T#<>SF^81Z;CH%R1!S`$d@e0d4{*3w4uI$X$2aQ%2yz3D< zV^`MGLzi}=UQ0b5gPwL}cYgf%6|CEI^zK}b$1!)>mDBU}NyX}tcRWI8?8;NolWH9Wh$VR&Gz*5uzO!VnC9X_~uzC_DDVQ7?#ZledQ6OpFK>EuMx~< zq`o>E^AtpU)z80iNc_{*yZmR&>KUTP*Tkvghr7{H6C`elyN1sGwAImBR1cf`X{+N0 q&s5EOh*eKJgUrjbab=ufZ2Z;buli|aPIY?w|52B}_SGfi5Xygk`OMk? diff --git a/sky130/gds/sky130_fd_sc_hs__and3_2.gds b/sky130/gds/sky130_fd_sc_hs__and3_2.gds deleted file mode 100644 index 60dc07ab89d8f6a84b75eed20c889f4c6c244005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6546 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 diff --git a/sky130/gds/sky130_fd_sc_hs__and4_1.gds b/sky130/gds/sky130_fd_sc_hs__and4_1.gds deleted file mode 100644 index 583e7e00f6c2fc08a1204239b6d516f8cccfa61f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7430 zcmbuEdx%w46vp>G_ndQI=a%VUj1DoSQsMZ*Ai}JfaV()p@{x+7<74QlB@R@kQvESK zC_?A~DM3*7PAYmxWk_NKK@>(7LKxv6Js`0x%4+()z4kii%;TJf>xJQW&)WOjYpuQ4 z-uLc1CN!S6!n72;()XrnnoY?}Hm&LRCi23KH?QBaZp&6c4&BrgCxU6g6 zjAwSQTxwc^Y;8*z_T9R5*6f)*H}v-OZRokFucv3-ZM~QD%reF=8xz(&v%`dEd8W;@ zjVT&qK9s*`eZrtg-Ye0^KPS<5T78pwg!;-V47wAXov`!|o+lfljK&&Me$*Hx?d5x< zous}D2g=|oJkKyjX-?qz5MpwqoqmW7BeRN`L~EalJOM3OvreO$X6L0ME~0{mLuZ` z0*QyDoqm+?Gg3Tuy^5G`|FALMuL+r_*Dv{!^y}S`knt6cNqi*R3tuFpzVMRhNq;W% zKO|(l^s9vbk>a!KRojknjvG_kl#u?bN5ntL_Ub1oZo%_3JUh})6?38tF2Z;iR|$RE z|C)3?*ISLLAAlAwWe9Bn>#r=eAfNYLU)zW3Bh(}PC~+p(mlF20zQfJW<*eu0 zF$}&;_PerpQtCrlz&fy>68$pAiylW`%!7F#VR-?@{|tNHk$ac@l<1!xZ?%n2&oeVH zFwn{TlrpbOkn?M#J*}7dY2y5f#;(J+(!UPY54f=$(Vo`#xcT{j^TT-!pF{kJA?8Pj zeF>f&OJni=N7$5TD_{??k0tB{)Cb#1>iAOnm>b$-cB39kcvhl4_)gj_VdvOvw?uor zRoY3!na-!{4C`f>p0U#pUzS>@N`#WC*PpF_lU?sxr%DW))-SSpzhV8nbpGBp4E`SG zcS^#b7v~%7O0=i_57UQjqL2BN=tE^&w%*6*Tmk)f&MUop5ew`}*fagJUlIF=`j{t0 z&;9D!bM?%hdL{FwPMMcK`!R3oVmUX%$s&)UjFRIys3}LJZM+uSJQwtX(;H{$&5#^AtOi=WUJqUI~-#drNCi*WVC*@;McMUj4ywF{a~?&nww~ z`gyP$< zbm4KO=vY70yY@_dd7|jbhm@jY{ZQ}PGxe3zqO0yvimq~6Y3-T%+ELL({YufXe(2w| zXX?35(Q914g!Sdn!mdPnrk?9WJfx{ja2sc4eNP z>qH&*y^=cGm3exu6Lr-+38|x9nWyJEQP2Iaq>gswi25ee&F@2Y|6~8z7whd+ymRzJ z#PK`k(vkLhtF+tm!s;^W%iTXYF5}{h@lda%z5154ljXnR5BDu4+e6$}logy)TvsLS zh5gb_(r)?^vYjt*c>THa&)$dDqW*B7<$aMHc3)bXtuKCq81|w5CMD!Ol6EE9GyMmr zM92Fo$07AztIX5$uBZ2GW%wJ$fn5pvNdE2mS6_zTHCPAG-gVDU$oo?bZOR(HH%Fhs z=BPSwr19R+fwtQBiZiQoGS?Mm1)=a2o0n?3Dpbwj<9bwj%{uYNr2UHUKLtWeS~?aDm=>_@-UE9sYZWuAYYO~I4!g*~hc z+Yt-wO4u{=ukL{EF8I1IVR!*zfnACAOno>X=kx36`%A)LC7xkdqCHn1`l64CdZeDe ze_8t3djDed83*5oQ{0bd+Lhz7^@TqrZV&6tJV?e(yD~3+_G8@C#YEiJuFQ#_b|sHH$1udG*6{iaMTOO6q7=svg^%{|{JV!twlnKzMG!1SXtN zK<{W`&_1>QynTy)y5B@CK__O=z9RWfXWv(wL-(%*TMcfsc01afVWTxa#n&!lN8m4? zW}7KDhszdrVxjo!&mcYG7!u7eee|H!UpGXL+at0Wu8*@}2K2A`<%vCI=rt@wcQm{sU9+Oqw-C4@#!;BOWuw8mb@ELbIm=Q z_q+z?oNCFtQMKgVs9N%FL|xvDdbicm)j;0SOr13xV(EQ4s%oKHW=+-nnc6r10lqC! A`~Uy| diff --git a/sky130/gds/sky130_fd_sc_hs__and4_2.gds b/sky130/gds/sky130_fd_sc_hs__and4_2.gds deleted file mode 100644 index 25868fedccb6f7cefe14a89f85861914237b42b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7336 zcmbuEZHN|C6vyu~&ph+Y^QzXOtu7^%AIv4SvJzuk*ENM~%Q6j3H+8ivd%^u=Dj8)Z zW%wa_aWjGx!(Ql1VM!*HeJJQl5QIU289`B&nS|x`|KD@Z&g{!vZ5>#CJLlg2J?EZt z@12=l6PX~m!!+fB;t^9ejizWWHRIF2n`#iPU9)1{@^$NtX~-8^W^TRa#?ST~o8G=} z@~b_I7nr6(wzesXy6;;*^~x!otGhb8S9adh-PyVPfv&4MuP`QzjfrZ3*<_-6V46+y z$h=ohCnuzT>XqTAGOiNi59NO&{TG=p_%Gsj zCH+Q!ihq*+ZA~0)`^~N$q^@uxA>)XimUu|UK|jijcx*lj1sNxNFd_YgcZole@#H^G z$oBkxX(#DFoS%?>Ij%Cpzs*PR1^VtaCSV;MIezepj8D>kfW@z5d+u*(Cz&hLosjDw zn1=Bj86W*9;U`_6Wk_gX8r*(Dw`ij=BT}p##0@Sb+SB@nt$t*pXJ6`hS)x|*2 z3y|w|=zmeda3Ow&U5WOzeyNQ|&nMH{+l#YlL?0!;oDlPD#GckmK5RWiYwK}9`i}r> z2gR-&P>)WRk2{$UTgP44uP32beoVi(cMQM8dftQiDBnT8w&7k0JI7(W8!sJi`#IKc zke;#Gb)(dEqeLjF_4AAMZ?e~)t{Ww%lG4w&`f%9#S?T%5<1qLKay}{xUATu`347Xq zKYcU{&lPWuJpvuevI3mzmANXcBLwE-I5~W zwsxf_e)ePh)GHY`?Mh$#?8o@2?<3;2cI6r3FY=iKy)s5Us8_Soi)X}c==}V_XSKghFI@*;!J=Y2S za{VZ&qh0CK*Y=C9zA7Pgv@3mj(}VT#2J5dx?QfU*3$5K#f6?V9C`HfuQy*;b>%%3Y zD-@KXWBsXj?V0|g8KR4hDn-ZoQ}5a{_3=2-#fOxlWBsXj?V0-0Dbba8D@DipQ}5a{ z^_9b-t8P(>j`gSBwP)&U`$bn@r4$|OPrYj&tZy)H@_nav8NQuxUXomY!nlh1e1txZY|nit?Ih1bzGo}h&P&Pl$@dl|?e%TaPHJ4>Q1RRE0sG#AdDiD( zAjj}pjCm7cbHw+zsXm9b=*WKMOQb)^=Y0H4Lblt>Qu1ogSL_q#Z>V@|KJ$1{${&QU zj)b{o$V-SH$M9aX-;MYjE4$Da{*}cQa-Jz^=l7(tgy$WD!7ym_EFJo-H?I$ffk~-Rz zK0VhP^T73|idYZ z#M+hf{Cd`ndL`>dz0y~|_z|2H4e&iN#RG_)c4hzbwBP=XW{WQREk)?8UFp$>__m?{ z@ZA)lvv#FNU)u>?m%JY+`5d8L3A;D{)G>cb>X<*JPtWIaz6JhHrigRf+LfO3n|aUe zK>l%lDuZ^ZhZ1%he-$C&Z#K7?Xf*%cAC1YGf{DiF5N&l_p>@)h3-`_c`3X~PDzq(z zjaQZLfbJ?cM($q+>Csy4Xfpy9Wp|3Gsf6p;>KuUM;nSW3O_Cy(Ibul(G1d8 zpR)Q}2I%p%i`fj;_sxbgpnugby0xGGv(~%#=XA99)8lLT%>HAXFnA(IjS)(dp8Z*= zqwP4$CQ&_WnCkq_b5Tp=!|~0(cuM30s&-cMrdlE&u391=j@teYn+a diff --git a/sky130/gds/sky130_fd_sc_hs__and4_4.gds b/sky130/gds/sky130_fd_sc_hs__and4_4.gds deleted file mode 100644 index 2a486b9cd7c7771cf5c332601f31fda90c7920c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11062 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 Ps)xAmQ=+;dR zS?hdzt-bcz=T+xjl3ecAHImk2uH&X$%e~aSu>7~{C4Tq2cI?@{=LY8{o7rnOeC*se zKm7HlUNd*!nTHm(UFz0l)!KF5@4fbhvtBtf|BjvWd*42P&EEO>?bq)-XUF_mF3p|u z{ltC1`9b2Q-R@!2x#5eQ%O;(hc&fw$&UOBSWARDnTJOWLcnE(l;GYP+dkDvo{F~#7 zu&1ZEQT&Y|{-nE+@h3JQsmH;y3-+Gp+~A;dBK?C;nm_PX=lXxaab)&-`0qme$i^Ow zcfNBX?TjO0yvlrf|H51^N9=Ex_&*$f3CEGltA}EWw0Hk){y^xv-!MJt2RL^}!N#v~ zj5s3VRp!HWNZy3?z#PQvW*mPX^ND2q&NnSS$-FvP3o-b!=m-7toonA)&>hG5h$AA- zxO_st9{MUOd6Y=K|IdBdZ2 zK8d*H{N5k(8@g%crytMbFYxd7w-Yhd()DC^slL}Yorr5*_=&KW^&4V+EdEDO>piH) zrh?7eA%|Urf1LjOP~R(1n_KOCF@GcG{2A0RvNePJaGr?s#*G*Hhv%ig!I-lJvvW-= zrpK^eXTu+v?1ujj=n3(A&|iaN5&hlA{BR!%Y&>K6h=^Ct=c-VjX|2!kcl1eGauLQ0rj`XUg@`R zeq;-E=-!6$BK;4s7TEt{>jC(%CrA7n)*jcWmWVp>$Lk4y>8DY{nYtW}F)^94$e*(`bE%eUtf`Z(Kw2SbU<1f>3aK1gf7^{8hySNv2k90 zq+s$v9K$ZcUzvaVS<`jyEJz*gVx8Wvx4e13<@^JYPq2&6kw10Je?-m)`E!p3F4kNB zPZs^B`-s^8C+d%%xa5AaM2~A-m;En7sC^R{?91z?>+J%rg?JX_`iuR`Fb3=*?3Mat zpXr*X6{L=Ku}+^}X}T;cNFD8Bou2E&yt!^7b+n6hdae(3TtAUI+Qm9O`;0pFpGY0; zVx6A*ggWjYkviJNI(`3s(+zeNq>gs6PS5KUWp8Z38vaepBUTL~46HUkdp+5R6mc&Emwu7+YCLH3BJ}pc|B=vFYy@WM!UH9{c=(M$$QbO_dvh4AnQWA2!G}LyIA-9 z!&sZ26y&uhshtO+Vr@ruX87)%wA!5$AK*KYuFdXK@U>2!Cb#=3lMu>E{cw?zD?__2=^@ z>(^RckaeS7tgB!DCd68Wd~qKd@i6v3?c%EH{CS`0JcM&`{}C5`J2iipe-CNl8`dSx zuj2ow`PB`VIll&19@kr&&7QIU)cdwRd5i0<%QkLvxa<@H~4mQNgSHjKA^ z*?3c5;O`C_gZ<_9xqQmMZ8L6{<$O$!OqS%cOyB!x&~I6y$M*}&XSsefAI^dCrN1mb z-^Kh-SReC$!{)g~`Q!WBbI0fZSGJyZe#)ac%CkRVb$i#zs5_6WRL%dj@gHL4H_UHd wLGHbopvTPTR-op(C1)`AO)F4$ww#Qb&&QZKVlU~q6I!!yMO~zBVFs!DKW~MrlK=n! diff --git a/sky130/gds/sky130_fd_sc_hs__and4b_2.gds b/sky130/gds/sky130_fd_sc_hs__and4b_2.gds deleted file mode 100644 index ea23b92581f7a1b9879e3b7c242edc68ad5a0197..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6730 zcmbuDe~1-T6vywIH#2YEd-Hyni?!}%5lK)>+V3A)th!e8L)I)UB^Pb2OtaFWOofWJ zEP|{c(v_0RgnrQI?rPUu5R77cn5Ehk)P$48{-|s#5II}-y5*rvkZ_b(TJ?Gwg z=DxXOLgRTinD&BK`pHyGt0|dN&B^KCCicRmix)0muzaO4Eydu{DUV-p)s8LuFY4Ml zVN?Iy>r8u)t!)p(6-!p0b(wm|u88=#xka;nVG9#ZKIA7uWIOpR$KSjg~Ps8aL zABVP|#vC}(9y~05OX&T3L~jYdzexNfb;U0eQePYpKN-A+YmA4IdHWYi{v_)@=uSv~ z@U!?y`q>X9`jc6o-Ykjhq5hZ$S^3+T!dnSxFT5yzOY{#_q}IDw+92s? z93|RI=QH0uuai0c&E2Tw0kn@p8Lr0sK81Knw9orON8Fcg?*ZFh)2$!2CAptJsWX4^ z7Y-$cH?@9r4%Nps(J8S;*+U6?T0bS-pT<{cd^T=>ETK0Mq+xQJO{jgT#6^)_is3r@K-(+za{LYm&I?n4zXXrwPWRe$xm5AUW}teymUS{+5YMJ zYz`kjJeA|4lzHL+alVZB(|Q@-7S4}oc;6`GqpS^xT?u zC}B_QyZ-0=4%0K1tt+M0m2z->?X~euc71AHDbZ{?|Cv_rAG3a1y8r$>%rnM52ogqD zARz2Y_|x$R=}kYzxdXL3J;iU4G40BZY<<)wx@dcf&{?}OM_)cDy2|Dhp|f^nj=s7} zba7vb&{?~3uwLfh)-U>rL)Qgm?SR;oL)M2OdenN=JwKMvYTZ~`|M2nG=MUo?<3Eq% zudK~M8?Y;3&(wRXL{}W2kUH9xd3x3fT`cYCxyE0E-+a|jDqJ-4ZuFTUn`bF2Ao{&1)m3ey8 zkNSF@^`k`XTrc$_wDz3(5nXY-QuM4J>b+I@dVikifYYDRAGL`t+O8BG>xX*h&(xO>imtL*DLU2<_0FHEukI3E+@};B>xX*h&(znpiLSm# zDLU2<_0FHEZ}f|JECOA^u^jut;j ze{^p``q?j`jGukq!SiGf*Dm}c#lM>4=VN~vJ&*NsQ^Ha^?AUK9{oCQkK2}+nFFGak zBelPg?H8~QDDTBMW51&0{-}<)O71J`*vBc$c%Lh_;eN;BfV89Zke^wBF>_>I96u%B zC+JsJo)oX*p4k&GAqnUMK3upd%#yy_c~ zi=)N?N6JUuFLi(OiR4iL8N=>>9Fbq9{>Xmx0Q4C52(&q(R+X@4>bdWxZqR-jaqWKG zF;8E`{8K;Z`v7#bGrseuZ!eb{R$tC$1Ym9S^(xeukTbZbKDXjkUx zOAkt&MW?5@1MShSY|oDGeJDCU*Q{4d=&W6tqpwYnda8Y&knhE`D^Yiu{jcNM<9@h- zwMdEYYle0u?78~lU7}a|V@0ooJyY-BDRG0=gp5nOGA};wV_fQ$j7z&RFTVK*arPlL z)@fxC&n@jr*faBQ^h(_{>j_ymv@0t)_2=yrUGb5G)X}cY(=$(gV`BbFt~<0VVb9E; z_m!U!y|OY{^h($>_0f+~cjdJSS$DK6^Xkuk6}mpmUw6W20_F~OCH$H3E135HwOc_y zlwl{XVOPSQsgGxgES$Ny>FcOd>Km>fBz3ea^Yj7x-HUrM z|H=@xNV^jD%>J9tMOU~lA$7DX^Yr0~s8y_6A^vxc5bKt;E8Y4P!;EhRvrIUK-_OJ2 z3nnn(*aD)(Z9(T5edD&y{QXfAw+B<_!p0-!JAymn)=)piOMhH@owmJ6!`f?I&trqM z5n+umt4!1y&YpqS20I>u^vGmLKEw3!TC49KqQ`z2{TZ%5(jWGL@l`+P+ClM;TJQ3| zd`8zGJ-&DRcYObC)Z`x~Yz?`%j>74Be^hFI!3`f`@2B+4I0ij?4?UuH9fP{kt?FsV PppGZ1TIa2VR($g>y)HUO diff --git a/sky130/gds/sky130_fd_sc_hs__and4b_4.gds b/sky130/gds/sky130_fd_sc_hs__and4b_4.gds deleted file mode 100644 index da00a49933023ab227f5f4aceb5a5a082465ac62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11374 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 diff --git a/sky130/gds/sky130_fd_sc_hs__buf_1.gds b/sky130/gds/sky130_fd_sc_hs__buf_1.gds deleted file mode 100644 index 7865b73290d66b560967fc962ba5be9a8b0a8b42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4452 zcmbuCU1(fI6vxlrkGZ?q-4ZoaHVse4KGd{O ziysw4`rv~a5D}qJwQougEI~z3@dF>!2j5CxY9ERph(d|~|I9r*v&r6Ts27soy=Ufs z&YYQZ=gx|eD0)yvDp7Vu2BamKTq_&Hduc>w=J9>A56>PH8H&^KiI=zC{l$q3w@fYG z`1Zo?9Ws&@Yln@Qd-CAco3?Zg?C;Dy(s^vI)7kgTfzDP*sv@Qt$zd_;A{mv@!B|92 zyFc@(XFBBWmFSaPCSCoc)ep%G_31BgdKUb~vvE0|w}~ii`}KJ{xfjlkc`{CV2mW%( z1>D2068e7e4>5lHkw|tCJmJZ>F$S!(?NQzinm?RxWqK0*VOLg8;rVqDWj2jx#!+7E z8PDE)K5pfBvLhnRCHTjs%s8I+(U#L3a{ZL(7v}e@^*5NWk8@@H@|OPPPu}5DVmgEM zX|L2bnog%g4cJQwd#IlX^WhxTk7F**c~S&yCHnXCcMs>s{0;3+gn!91 zzF8!yVvce~@E4zfEoWuc>6Fli{vWdA)q0lY<>g7{tArNw&CAi+Lw!5X7w?19uwQlD z^(UK4&aOmzsPBaH#q}}oV*KxTX2^|~GWpi6hZ6lme^b_9u>QJkN?kYQiuGHix3Q1# zzl+h#Jw=7WBfu!r&8 z`VaZ}*Sb+Q|6(Peu5grFnO+t!KkqSrC31hjj!fF zcquu5+%J{1^9-O=9a!xDJ2=ERVvyh1wB<=V{X4qx3%?Io4}0Z0wD`I&)`srV>`ZgrFncl2J4a{J?i=Nf>c!phx z_QLVAUk%?6>bv~V>1)b*xt{Azy^`xrzsj=pk5ISO=aKLCp0&+*hFyvF!tt{o<5I6= zT-udo@spqN&g{qEQBRJYb|u;i<5$|y{e$&C=gIRW?Mk#4>Z8}3E*|%!j&^04p6?0k zpYM;7bx*re>%Re)I1}D4W<7sjnky^V^2~4r)!NvQwr_ahs>SWUz9@~6baFRryc%|o zboT=-<9?{RY;tdH>uqe6x7HiH-gF+~CAgTEYRl}L=4QiRLp^$oW5sAz=^Mwa{@xXO zoTiY?YJE2wX2AHW-*sP4{59+I@!vT;)uYF0>c8Xjm$G?IOv_C4X1^viYx~mG<~VkS b-x-@_5zPFWVpCmv^#7;_ehSqY#*oOrO>pL` diff --git a/sky130/gds/sky130_fd_sc_hs__buf_16.gds b/sky130/gds/sky130_fd_sc_hs__buf_16.gds deleted file mode 100644 index 1d8ad6888576ffa4d2e1b66da792e012d68915c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18612 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 E51){FRsaA1 diff --git a/sky130/gds/sky130_fd_sc_hs__bufbuf_16.gds b/sky130/gds/sky130_fd_sc_hs__bufbuf_16.gds deleted file mode 100644 index e914b607b734e9902257a2876e1ccbff2e5c57c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21314 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 yZp;UBK<}0P@}K+joZ*4gK_ceccvo_y!7HQ(&D zXZD_%J-1n&RVrs>i$j&+XR=l{mkno!XNL`b&pMU-(u=liJ8#>SS=Ou8-+jW3?|Ajg{O&tLk;_NApQS8Ub4rDLJrJ4i)9>F< zW6oQ&znAoT!TNiYzdOsExRrO>J|Nq%U#IrJQu|lae(f4i5nGm&N0 zhqKH{yn4Uo1LarWWIm+d)xShiJMB2t-U{^$9Zx;&r)NcuB(pY;dQpSfKF zRDWh~*6&W`XRon5#Gldmb>h$b(ei=vrhj98pz_m?SRUd{zcCVjdZx%j`BTjSD&Nx_ zVLOQ5yC5>ePc8CL{^a@r%9}je@(_RG>yh{qpSOIV{PAne4^)2q6PAbgV|yd<$DXu& zp#0HC%@0(5^gEV^_@i@?_@g@Seai3t+WbJ}yPALGA%1stWQb1}d6Dtb)%LRkCS{)OYo;#HYU$Nq**K%R}R>ykwj12v+2MHk{W?2v;DD|Ti-$Sw zJafP~- z`8aX7Z~w$){nxn5*XUet z9N<%Gk+^fsvi6tx^Lx!((0FD)f$~D!x!kwo*NgT0ad&qAq4xFTT=Dq#eT|iNG5!K2 z`f(2o`N897_51i$KRbFBq5sbA>Dq_lPQ^?8$`13Yt0VDIGGO!j>IGGO!-_Vln>VpCmwNU%FlLbet(Pk>(tym)#k4;#7oD2 zWrumy)lT!7zxYMI)URzeuU>bW$Na@F@}+*h*1UY5(>&%aevvQr8w=(&_BhRB{^A$; zQop(1yw+}~dCXt@B46sa_nOz)=`@e|i(lkR{qDo&ja=w7kNJyV&%cevvQrr`DP`wa;lD^B2F!m-;gc=FRMJ zn#cUbFY=}S?0)m+c00{u{^A$;Qh$E0c?&z8<}rWqi~ON}Z>ZzzY1aI#H<sMGG6(qiJt>vNjTP#05=WB-?N3o`w7PJp1@$lRkXvaT1Z|iy(eiW~0 zea&{T`aXRgjwH_e7-!`P_2p)5Tab8L@6DXVJAbu2BtEKjk(2z`?<^0APdpPzzV{Z( zL-Nx*BFS?fa+0Ut;tI#d-uKmirEBCls$1)DC+k+?&LQP%7wR5Suy(O>s}w89IH>7d zI@?-5;5)V7mD&&MF}=ME?+tlR$os?azVPp=S@FD};w$;jGyWI8skUF$di+O`)H!>Z z)eEZ{ha*o%lJDMXc}PFl&N^ZO6Z$d_m$9H(DMN=Y5frJnxg7 z#Cf0PB+mOTC;g^hPW5l4{@+3W^DkRJAoaIC7RmX@x2c_i?0@(XYX|a9u&I7I$+y>8 z9x@(gJ{!q+=p3W-RFLC3tmEM1xEA%SRPRmHTf5x$$NXpiu%XY;)sd~6bpE%iF9nD1 z)VO$2Z56EDVR>g|QT|V~O~LBRwqGap(ysHM@o4YAi}g(Hi)!~iZF_uV`xN<#JCz^o z-!eaYTy_3X^?Wq4ah~c`+^Kx2Kl@X8mufs*6xo>8cv0M`e5pV3R`W*w5Q#_Jnetnj zgS6jzDH4ykGv!bJTibp{==yhdB=16r zJC#rR)sxNd^ELCU&Xdc1o|lH6)cCz3vhqoLj&dqr+CJ~|@h6{-#3SxZ`J=x#Z|u5A zJmSuj-~O9<9o|2x4v0tGnerRAn%8_+Bpz{R%CG!P+ilYMzhr>_)OX^}P36ar=XT}~ z>v1RZhPX2|f5sm)Z{n;-JmSuj&-)+7ANMt9co(m@Gd2G3{eI}I&FfyLxKr`c@iTwD z+I~^v_sB@@kHnqICw-p1@%wz$eD3w^NAaZ3yvKJk@9~_e`Okfl^Tz$t$#Ey{OdWr= z=V;?o3?&xKDE4xPLl1Z^WIc^T&3aH+(1Ojkq&){(1+@o4Pj=kGM1CkMA^Z z;)qB*;?9)cea8AdqUTHc59v2?XR7~fN5Ao$v`gHXYQJ@Yd9CLn@rXN9eog0?y6a1k z)J@!(s-Nws8{bL0#GR@3c~0Y5ljk=l(mikHrxTYEb8`Uw;b{WJY?o9b(+7>VT{kb3>ac9aOS||T28b8lQ=86$_Dqnj37-u{` zG5(x9HxYNHo}Z>4wEAas|Dzv}x`{he^-pO{hBvLXuM>~BGv$wOF>j(1iAUU-@+W>^ z-sHKFc*LD4zt=La_q|9w;?9)Mb)Nek*MBGXJ>t&P{g3UqZ{hc;Yfp$f6ZbFHNvvO3 zKRH>q5O=25FFYqvH_uN_>L%_?)z5a+jo+v04smCqe%5K!&HBwr-Nc=#`gu;HZl2$q z)J@!(s-Nws8^2H09pcVJ{j8H|m-Vxgc8NPv?Xw;2;`ga`L)@8YpLJH_F}d20vw5+; zEACXh^!mX%ow`}SJE@zvGgUv^Q8#{{syoD;iTb(E(JuEtC+!kJ~|ET888Kjt$-Sv||=hjg{olHS5gf z{r^lEj%TsIbzy&N582<`ZT#GB`{4eR?Z_H)`DvTh>(OFdpJl!(IjEjP{LT%*|Ik6c z{=TpN9P0P`!+SK^cmMQaJzKQ@y8WX5_ioy-tbYA{|9`j7|9Q%<%ksIL2fKmZzb>2A Oh1opXVGrw5%l-@C#4sEH diff --git a/sky130/gds/sky130_fd_sc_hs__bufinv_16.gds b/sky130/gds/sky130_fd_sc_hs__bufinv_16.gds deleted file mode 100644 index 798b4ec32bf449983cf2ce62d8da5a9b686c6a1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20254 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 F{{YQ-g0TPq diff --git a/sky130/gds/sky130_fd_sc_hs__bufinv_8.gds b/sky130/gds/sky130_fd_sc_hs__bufinv_8.gds deleted file mode 100644 index 5dbac2c7bcefa6514bfbc1ee712f75edf8ede0d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9306 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 diff --git a/sky130/gds/sky130_fd_sc_hs__clkbuf_1.gds b/sky130/gds/sky130_fd_sc_hs__clkbuf_1.gds deleted file mode 100644 index 3e027888933c6b19dbfff53526c5303229b1494f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4930 zcmbuCO=w(I6vxlJk2^D&nVM>hL}L}S3vIv_7g8fNNmE-emey9QEoSJ4^`q@3K_sSy zD%6ja6%?&O5iI!aPAoztCg?#RZfW1in0)A&KP3Uz- zTpzagi0_ZBSDBle8(}?0xENm^N*@pXp}Zb-cwJ?KUQae=HEx_YAI;1kV?BNzu{M0Z zjLCPHfUEJz7=Mhl!TK^XPS5C0x79c5+Yjd3=E-RDWSlo&3w-vC`FMERIx)7dmkU0> zbY5?k*NA4r@!jtI(3 z_XuNj9KR7aA|BS?mY>(fThwpy5A|c?mSUfKrQahnrU%qF;(TF#jvxINSr7Wfd(iU| z^_Snqb?}W9)&t*&cwzo(xB4xz4)|4Lcd_5~ochKZ>w#}XJj}1_zb9XRcHbBq|6={% zFfMxkw0!IZHQqNyh<4w2`goXM=im0H89Zk`(e-O=>_Que8xim5bDh%T`ZdyH+*sr% zd(=zQob(ts7Wo`!=H>hw=`n6B@?{3&gJ*kblM%H)p!F+#yr6#d;?+j=SwH<~y4X+l zsF$Wj^;kds?0m=kZcsgU&Zr*ir=Oi)==X?!KE(IoKEZuXa{PE0Iey%ajf^L+>v_^V zuw(ntV`z}$07mcQIn$SualhYtYX61LOU#EqG7r}+*1o>49LwHoHs*AH!A9JO_nyUk z|2`;_sOd@6|7%X}Bc+FRKOt*)Zbt9sx9;kdtxaNU`7b zq58(!PW6q5cg!Dsj{bg%>-XlwKMY~qi1Qu&j$JB4}AN8xov0|U| z#{5Rk8}l2B<}ZB({XUHG!v12cV7)SKM7(4Fd0iFHEBY;drhe5}EB4uM`bPGf?HY^v zpG;w`;CY|k6cEpOA2+r?@7wMlUdQ(u`bM`xeIw!>>zDKDm0rt9k8xv>AKk59^h-{9 zj2q3bBZPP09pZZV|Jhwrl2qKaC1k5#mkzBtvFgnB^Uq7YKONbP7>~ODkDYz*bFDw) zzMibTA>ZEMg7*4O@px0);NBQ mq};UeG+2h6Ua=foN9}TZUjB1AxvP&Z$L{(uw96R#ME(c8xf)Uc diff --git a/sky130/gds/sky130_fd_sc_hs__clkbuf_16.gds b/sky130/gds/sky130_fd_sc_hs__clkbuf_16.gds deleted file mode 100644 index f1f7ca5094be1abdbeae64925ae8e8d584fd4e42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16060 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 I2&%=u0BTt81ONa4 diff --git a/sky130/gds/sky130_fd_sc_hs__clkbuf_2.gds b/sky130/gds/sky130_fd_sc_hs__clkbuf_2.gds deleted file mode 100644 index eb0c82c8c793ebf5989b270cc0f927099ba2f21a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4300 zcmbuCU1%It6vxlb$K6e`Tcd``+E5h?6%(;lq-eAxF@B*GTdOIpX0a*3()eIPA8IPp z2fskDFA6mvJ_v$e2)uW@e-rfv;68hwa zjPW_#f2W91&f@wMatfrKagETgmES4mm-K0z_@9i-Bc9cKNahnyDI|BWu$jA7e-sb{wUw*tN{doPMKXfQRE>AhW{K+#MMhu_pkFidDy`efIde9$6 z*z@}FP>=TKbI@)^?tf?OI|e!IM)*thm3h@0bc9ezUkn44cn?hu0?; ztiL^9f3%2a^?S_SP{!ye<{Ne+{Q3B8`eZMX`w070nlasvbJ&gWm+IY!>Q{+;sCUMZ za((qR)f;PftKJBEKEAHsfXyFz6MK#CcTdc=t(&L!m*}xCc0TWaVGJCNz>faW`LpM3 z3FE(wxxd2*;e+@s8NEFpzfB)4sxBTfs*dZ&ae}{4pX^m#ni^Hd`KLbk3-xYPb?&rL zb$lMF5B@?u>#V=a`ZG4BpoQHCf1#drQqTT1Qb)V7OwT&0WB(edqup4hXPwmXooJ+v zcH^4*0h!}|=l4^rzdyL{3-|?czpgxv+5-K0T%rC1jITxB_?|G*@An~3U5_w+_x!EK z*Sr~@`BHCWJ?YjkFJLd8>-e{f^jAJmKS{qF$Vfkrg8J`c{n1qzV_L~Nqp!4HvO0+C z;fytWyTpg^ZV5CUxK@4seVW_`%{kO@G9&f08{uC|e}wtDr=i0&HAnxwg#3;1 zGKyuKz#i_4E6@e@;k{NxJx1oAey;VC76;7dqu-xlzhK_I_!dZh&e*p_>oLM#sCPYD zhr@cY9#7=w?Z*CMy?m%~D>E4xmv&=m{7X^q?}+zt#^^Y%VK>5Gm_PfTdcOaS)X{D% z(+lSt&nllQWAqa8husK!Vf^R`)x{e!Qb)V7RKJKGn8R8RWvsF9VK>5G7(cxZwc`7X z{k+OExTf7WQLay4QN7WPson^CVf@M_#Nl)BU5@A*Z#S0o5AWl50rf_=PW49E3*)m- zd*9N&HTLb&{x!nx^>vu>4fTMy_5AbfWEdDE@_naqzj=EocD8n1br$E!Mq-vbt<)^rbT$8vS+kx55BUHba-UVndw9^Wsh zr(3^T4{Kn2(@*Vei+|pF(fse)KG~+n_s4(7kG@4u4~uKM-R;$%mpXYL-Ek4s;}@vL Qe*Hhx)j#s;Dso8VU(Q$QTL1t6 diff --git a/sky130/gds/sky130_fd_sc_hs__clkbuf_4.gds b/sky130/gds/sky130_fd_sc_hs__clkbuf_4.gds deleted file mode 100644 index 600a342a8c6db22f238ad1326b2a694f318dc556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5630 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 diff --git a/sky130/gds/sky130_fd_sc_hs__clkdlyinv3sd1_1.gds b/sky130/gds/sky130_fd_sc_hs__clkdlyinv3sd1_1.gds deleted file mode 100644 index d4a636256e5a96e04448de7d1240928cf9d84bf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5952 zcmbuDZHQD=7{|}tnfp4kxyGWbO7%elb0HTCGs9M0QE4$P)6#M(x6oV)T!_p9D=H0p zCrHH?Fzt=L1&M(OWl&!tf~39_m7k2V%p#2J|3A-t=G>W`dso~G!*Av}_y7FQIrp4% z&lwXK&%4u1DS6>fCNbS6G*iu0+3%+21w$L}-+bTZEyi?}{dx0u%)aHbx6jP!KXUDX zJ!@8)DSp0oY7h)>+R{5~X8pmz`tbVthT(dB{m`btp)DI9estFGU~j$GR3c-74$nMk zg3CP9V|qHv#+YOBNuG8re<9zMxTiASH1rFszRT>SKHiR`cY%*&cnZJo#qX50%Z-VU zQ^|Prv6NdvAI%dz>5s$j{-`%XA|El;_&O7=a8dLrfWhpBU z;d_DxrlgO5K>SGF$2>~3qn+On{k-pSAN1Z*N4D3yQQAwgA4+dIvb^+$l#}%LW;j+3 zOI{`NXZ_cu&tri8)jnf7jzfz}89agZo{H8}#Iyb_`U@8>RH;`&doHcErHyCx z3$4G-mp$f4$%v3JXh~+72onSNBT0ZEb{lZif?(E zQv9i>e_EdFUs)@@zVAq1#+60>m9^sQ`%3Ypp8jchu75CBd^uxy!a-E zl;TT0{nPTSe?6UljrAqik9%<`E3aXFxdzWp8OZulQ6e|j39i9*o!Q?sKjeL)^9yTj z%=xj-F+sfy;!2cf>o-DQ`c3poZ|deh<&~DaYzc z)E#jp$_w@Ecj}e&re2A7u0B2tUySW!xnuQK^abKdl;`S0ynm^Wb~sYUxNU)D@5F;PrN|fj7+0J;nw7b_5CL9AA@(HeFZn~bPQ+8deY!Ka$lGd_qWR@ z`!(b#ZI=6$WsFDWS0bLP4?jXbz(0A+k@aI-iSj}{eG|+{C4H$^w)pp@{ek*RAKHEK ze`o{u$zaEEi7OG$`pbT?E8Xw%-GRC1edieVqy300QQl5JWX~_%7`J;-ceGi__06C? zN{$nrXO!iCrCeF+g?=|aDa+SkJR`3XdE5Eh^Ap!Gp6`OM9PNAHdGrO}3t+Ma{KSzy z!4dHz?Kus3lr85q?JwKjYM<<5&;q-kA-T`SN=|&SHJIPxQ)YiRhJx=eD0dW!z8y2LBL!S-GTGUqU;n zS9;q-uSC4ipZ!n0lKswlDU13)L07Zi?H*Oh`Y^5>rT_U~7yXr0DAR8wEhLxl(*03ojW3L z_by($C0Do&*|wUfJ6N?0uk&oZM2{M^)N6#kw%zKNx9IV|2--DL-)I-xlJQ@>tiQ?s zqV?*(`nD!L=GEx__P@AsCg=|4H@E(x)i{YUVz!2&+~3pFUP2QfZms? f4$qE7UEVtuHU57bL(TD~AA>qMnN^4A`-=G=g}A~Z diff --git a/sky130/gds/sky130_fd_sc_hs__clkdlyinv3sd2_1.gds b/sky130/gds/sky130_fd_sc_hs__clkdlyinv3sd2_1.gds deleted file mode 100644 index 9be89983422467bbabd327543c38e2fae9e2fada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5952 zcmbuDZ-`V?7{<@sJNMtrZmzK?t5SW?z}!f)Ff(k`6_pm#GA%8qatqC+z=g;xu%gni zlp;t)TPXWWAA%q;3ZV?@OGJ>=m!jHFN?B$RM)o}Cz3-emvvco?dtvzPyl0;GdG9;t zoO@A{C*5B6VOn`O$eF=4xB zdQ5ncXF5%Hhkx$exrGQmW=!=z$M&NVS7N+8-qiIAQvD4bJ~VGbyT=%_%Q2d1jK9d3 zI^UAdMJe(5R{2nmK zF58c8_7im)>0Px)DShP#`<#wv^$Q#H9~hIoi`v&aR&Ij~aV5qJ_0g}QSH`c1UWs_2 zzVw^umEK;_D-qAtmxeJ>{xZhf?HCLpAL2@k=jy4ee1h+4u48qhdjbx zh$}H(s81$|zRu4?pC~64>!ShDD`V~-@K+*U=wJF%^h)ob=#_})>TQo}So_zZXDP!3 z`S2Ym5zo~p&!g}Epm%c|z1NTraV5s{^>0YuD=Qq?_XKfeQUCe5WID9a*ZGa;6Xo<` zfA*bvCHv02%BKF;(&teh_upy{`t+)?m$LjK*7FrugUS%Ouf==iS<#hKLYM8&qK5r> zzcFp^p|^`2+t-Zt^|rzypk zditm1x&GyK;u{2x^krOGJVzCoZAU+U?fj_3M^^TanCcBC)k$|C=8p7@5tO7W$h z{^@wGe>_=y<71BWWn5Y0A5RwF_?S|Bsi%KBp6j2S6<_X=@UeR(eHm94`6p+^w{l1+ zzSPq{9nbprrt2#`-@vzB){ClIJoX-={LVT=oYg<91(334J!doZmXlo!ox{elHiJ0IYFk z_%ZUokNhdi4`BQxUMbBf=!T3@GR{0osUvX1ymsfT1d z{wPD}C&)RA>1tEE1Y-<*qp|U&QpU>H(1K$_caGj{f#+4n#`skqOmGM&1 zD-qAVfBN|NJpJqZL-f9KX|cY9`=nm!Z5O=~@j`$0pL!+x&bpLE{jZ?a?7RJqtYkfm zD@W;nUFYoxw@U%Z!$|B~gs4gTk?SN}D)H0ZIeM)$X8qH!kd3Kulq{dueLpNR8U zH}sDGZxb~hfZ5LHc{i$8U{>8n?+aB&r^ll94~#{P^VS$D$CG{x>dNt~IzsQu=6`5- B!WsYo diff --git a/sky130/gds/sky130_fd_sc_hs__clkdlyinv3sd3_1.gds b/sky130/gds/sky130_fd_sc_hs__clkdlyinv3sd3_1.gds deleted file mode 100644 index 8d8f51419937fb0d7594febfb0ef1870f457189e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5936 zcmbuDZ-`V?7{<@sJNMtrY_72=t5SWiz}!f&Ff(k`6_pm#GA%8qatqC+z=g;xu%gni zlp;t)6UzQcAA%q;2%!w>OGJ>=m!jHFN?B$RM)o}Cz3-emvvco?dtvy^yyrgebIyCu zIdf)AXgu#uGo|E3Kbwl_Hj$ZXuE@SOH7^|8c>m`6Hg7Se%Ma$w-!c1^&)+^hr|-zM z2luU6X{H4E+NohUv}w!CSu^Sn4%CO%*EbB+>+1(M4GeDC`0%5%h6ZNUXPR zUK3v8nJ&}Q>7PG;egT3{7*qYvvE!J;m1r-IHx2##RDV;a56!#K?l#8kbc|*g<1aL( z!FS}oC?)Q1mk<4sJf+QYztW!|aV6rp`sgELsH@Z+sbgF@nx6fxJSP1oIX>!@XwUlJ zW9!kwdZM33YFF)5N?qB)I;ZVf{emX_hsGp_(f4(Zl{+9qT#5EVee|p7mGNt$S0Y}h zFa0KZrME})O2l*ZrD05zzl`yAIR*!j4{;^hbM@3!KEbn^<5=Aw`IKlc)F=I-Z!qmo zqUVTdj{R36o~w_3z_i0J{lCgGUomPee@p6KS?d*U(GHto;* zjH$hk+AebJSPeVGm1r-}<9mVo`ywT@+~1)W+IX(s+bX{Pm5%gfTv_DrZ53btN~QQx zPye(%*T1}0e1pJ|zKko2{L5>_HwcvCOFjM5_FVsPuK0$-j`U?*S>zwi72j}JDZbRx zKW)$Tk0*<7eB6<~j4O-$$e}K6bC9FXPH0|KyzbRt_n} zmwNiA?OFf6bbY1g8~Ap}dQo=#4J|Gu;stv6R;gD)c-G2O+IUvK!upr>d?ojCo%14b zrnQ$6AF}#&t@}gAvGo3wJeT=+p33Md*&mdQ+kGV^^x6D!e(N%J{|We9E=9f%9Lo=( zL#OacX-;ErKWL1Saq5)Nx68ki`&+Ud{k#i&B*S5Rz89ZU(m(!E{7J^+k28cmo+o-T z7>Cct9NDjAmGqBfJAIY#Z`Z#;_RqujWB|Rl)RF$)jp9$Tf2B7a*OUZWTRU&VpzukACS9+)`^D7zmUy*jw{tj5`$aZ^K%D!s% zx5Ls8w72u`XT2*YaSzUm$uo}8M11}UeMsq@k#=Qiz37zCXY)U9=W}QNd~V)vZO^m% z-d4Tt^Ge-km2LO?jKAuXs#A`pXAk*2d0C#7_lIk(joBsicNxvun diff --git a/sky130/gds/sky130_fd_sc_hs__clkdlyinv5sd1_1.gds b/sky130/gds/sky130_fd_sc_hs__clkdlyinv5sd1_1.gds deleted file mode 100644 index 8e380f9a83e73c91c544f8dc496fea1d474e2a26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8112 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 diff --git a/sky130/gds/sky130_fd_sc_hs__clkdlyinv5sd3_1.gds b/sky130/gds/sky130_fd_sc_hs__clkdlyinv5sd3_1.gds deleted file mode 100644 index b1779c5ec8f8a0942df2d055b930450d9be89156..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8064 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 Nsi(@`P1L^O{tpG^**yRN diff --git a/sky130/gds/sky130_fd_sc_hs__clkinv_1.gds b/sky130/gds/sky130_fd_sc_hs__clkinv_1.gds deleted file mode 100644 index 6ad00104d2b519ad31a5aac36748afd91ee0ca47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4134 zcmbuCTWB0r7{|YznR9lV-PI~fWi=EZEC`90QlV(0Bxyv&Qmj_1t!Aky)zIie0zw-r z3f}voqM$})LBV>(H>;o&1s_FUeDg&?#T&&cA}I0yKi_;iv%8sXNe|5acE5A}-)+uZ zR=h;f?J``7%HPY7G^H#T$%XmvQj7fD?A`Nw=MRcBVt38NQ=4!6;>{CRP93|fy|jC$ z47+0OdhZtw9Nf6+^49)+t%aG^y$h|@%-n(5`yXg+6iF%~z8=Y8@n=OcDx+&-5&2Y) zpEJq{=pRPTDLK!)jL_%vpHB1N#{6Adq<&n&F!~4K{|K6uvV0W2 z&;TRtuC4PVbb0@Wg8#K?e?lo`)??H@ zvLNrB#k3V&W=d(|b)Wo&%f#KTtuzh6g-cP@V_)@$dZ66uoF`xgApifq< z-`Z9G5}bdGeqNi=?L$P^jhN5J@6-EH)pz)f>b-HaSfA{H7VDhL$a@FvM$8w+=en5J z6Z9Saq59a^eLZ#MPd)3W-pIOXHx8sUAS9ipCKH=d$??sw{qygyKHggsxs?!R#T zq0bn0A2QbeR=ct1e$=DKwOU1dUjKp6+P)18_I!NppWQ!}5dS?r|He9=DcnCs*bDX1 zqUz%f8L6Y)I7rVvF)sUOq>gsuAiXT1zIT|v5xL*0`748cK>n(WHyBmV{Hc!?2kVnP zs&me$I_6J(I^Q3^A>sZR|0XhYG4?*l`b#qzD_6kBEcQ`K&T|;qAJ^7Ck+i$b8O<-a zQv7Yaf6D?6_6v-DNBmDR((c-r3)K3;^9214Bh_KP(0}PI)W-JJjKi@H|e*{v}syAIaz_j(akerco#S7~wA; zPv6h%difmdzQ%E1#;{jlH)6g}&ovc3?{K{s*IcSvBkaZc4-xl$==WyC8?Z#M8!=y~ zPd2G8`8FeUv>ONN(Z8W*vHr)5)h*gzBjyX^%ST!__c`k)SvT#*LG^Rp(A%mrR(Go2 z2zz1t(m&|kPpI|vjLCEG2fGpT1NCl9^&S48dS@IPtoL|dWPD>8@92zgguO66_YeEe z{bOX`X*XK`YY2gNkXyvBNPRJ+qHy-?L>GRioiQ{GU5q$+Gi&AO&+qUENv|o=*dh+Sh*Paaen|kzk{-K_J zeWxDQ!1$)$b#qtz)7Gc?U$=d#OONO0spIp%lRH~{(@%6)f7)vQ$ZFNe2dIC9>N{2u co9g)0Gf`{ZtBtL7uU1_?na>=5N|HqW2OcxhDF6Tf diff --git a/sky130/gds/sky130_fd_sc_hs__clkinv_16.gds b/sky130/gds/sky130_fd_sc_hs__clkinv_16.gds deleted file mode 100644 index a92b31899d6e57807a00469f41d235359a098f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18546 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 diff --git a/sky130/gds/sky130_fd_sc_hs__clkinv_2.gds b/sky130/gds/sky130_fd_sc_hs__clkinv_2.gds deleted file mode 100644 index c11e596f22a2d53f7e46aa154164d0a6234a7bef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4236 zcmbuCO=w(I6vxl|x-)5JYSlrR8mpiM!GQGxiU!Ig#xD%PYPH&;V{NIHMi&W+H5PPX z{h$k1qDI7pASjC9!XQ+F1<{4#%9T6m${Y>>9p?dAT9s0Ge&#Ujy^U3Cl#*JtX{chp2e-!syt)J0h5AiS} z9{SVX57y7>ZnU}^2kJlMbFBZc{;Pg`Dc?Uft`Xgb`S0|8dd~jM;r!hMI{yr{;x(Q# zJAmJa8xar3@AG8|=Z<6V+!FA6WX!m6yxfl$)l0Spgy-YN3P0VeUX}%f=i|nHU)Qf? z^}}AnJqWk&T_Kl*ulsqZG#bEk~zasSZI+e>}Uv+<$sA7gVj zT*Qrtm-?J1J?0x`y(?7!^XB->m%fqnsnxZetp9>};n{0s zJD(9o#^YDCon)K`xZe23{rgE9eZb4W=x_Ls7EIs5c$Z==a@O8PXHO%ioTGeKzto^S!~ycrDR((#8eX%TJ%LN41aaih_LB;w{ZTb4iR5`uhHrU*D|P2%e8_ zIpC_+al|-P?QeKredFjZ^^J&^j?Z=A_*|zRF|LmrE5_$}9GAY4<1%in8sA-rbFoL= ziGZKtH{-_s_nW@@$w~F1#{I%H~L1_jlQv}e)5&(9nBYH-i#Zo^5=QXn|_bT#m9{m`SU#HP2b4888=qt&oz!` zv48dj`~%+^H_len?=tn$uLHtM88=q=(HUHyui;$WGmNf-`5AD5qA;)zqyMe$;54rP_4!#S?B5(wk+@b>6kRevZ+0Y@o4BXK)<(L@6Vvm zC-1N0`_JSWQ zi-JA{woySzkZDC9vY;|T3yP>Oy&&|Zgdjgu6hQ{t|9_tI%(*k`J;^#S{AQo${Lb^- zd(ORcXH90}_%1Uqit9g_rWrDIbD3FC{%ndk+p%r)u1&l47&A~yZ&>!!wYQvj{kQAJ zjxK&>a{XE}FRgaxXW97nJy%?{q;v1q&iIzjedC?ZmL1!-J+QlTwJ}L)R#p6AReOSV?ab>{I=Zcpf zFA<)ND+7MxjCjq1CBn0DWv?&$$L@db80_^H_l*)E-8YstUOxYQKGv@P{(*ZhUv0;} z`-iNbUcZx={}8VI8BAzS3`;5wCerDIV9KzROqot&`#v`;_AG`lIji zl|I+0IL!6)Y_EfhxDxqFpX)@Q*RPTu=kD z#&eL;_OHhQCNHAaho1G9Fcxto#-Htc*yqJ~qkE42)RVtW7+2zXyX?#FEBAfTLY)Sl z_X>>f@-+HkTsa!{?Qb#o%GO%(m55i?=e}Xx{Gk$2*T$8B`W(l)^p&j3xH43q`;zs! zZ@WZY8&?MEa~$i^SF$eS%20iSbz@y#7hR&RjVlB7IgWMdD_NIuWvD*aId04Pcln;I zU##r?z0$LPc%JF;{C5e@#+3n|eMVnO|H^o`^shv`a{t8Fiy!~&Nsn=5$Zvcs*I9F$ zr@bE_uEcd%S)YDm5zamQF2BcT#+8f0KG%)DlIuoa8Ct&#_d(t#GIzfq**D|LQ2!jq zzUg&|zHM9?=%3@*H+?1hW?UKSKgRbg`>!qbWZ#S{L;Z6c`=;L|`nGXppnr~I-}II2 zn{j2Rf36evJ=d>G?0Xwm2KIk~-s3^sFW9T{6a3A%a;@c&Envb`n3vvFm>uf2n@ z&!gT3&uj$e192ttmHVI1iS*OAJn7lre~uwPyIVYd4|5)pKI6)eUq38fzRr^#i4 z#m_@o_n)Qqe7gBY?0ie7%{O#_uNPzv{!h?Mn0zR^b0xp7=HT7qqm#aVruoHw>#yqb z@%t0UGu`hV508QM)n9jePyKWDUH>aqj`jHX{rUg(izQf}3rse|jZr@ObF$;FaRhs5 dFPnj#ynQ}4&)m#w=R42GZm#OL>p1?z{0Fc7)f@l- diff --git a/sky130/gds/sky130_fd_sc_hs__clkinv_8.gds b/sky130/gds/sky130_fd_sc_hs__clkinv_8.gds deleted file mode 100644 index bfe5f4db5cc32ae38c190540020b61ae56d7ad8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10004 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 CBb3_! diff --git a/sky130/gds/sky130_fd_sc_hs__conb_1.gds b/sky130/gds/sky130_fd_sc_hs__conb_1.gds deleted file mode 100644 index 4d5b471903c96fc7afb1344ccd7256cd49d7ed34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4476 zcmb`KU2GIp6vxke+}Tb$E0r{o)%x)uPi%q>4+JGrYmGG^iWM*rnMhe-El|@%4c5f3 z_(6O&MjOreWW*SKF(E$jWa1l7;ycmA-~*8mpG^Iqd*@ri_b&~eCJ#&BeoO|ZZ z&XfXj-REf1acfs-lp0i{`{};?XNuh5Wc%py3(IGTCOq@-Bj>j7{^_f0J7zCzO;!&* zOOvMDoeYA`;@PQf55zAXi#rSPiB23ZES)|YPZ9YeL_yu9BNW``(gZcfJ+enMOJouv zW&I-ALy5S5d*(lH{igbBYil#?E0N?4@r5>?_h$P{(|p>MBy1+oKG@FD?}Vu;(XqJ-R2+H>nFKPlH(2eOiE0jyZ+O?epHwGmDpqU zP$J&%+x;hdhWANuMD`7{eo^8|oX`8SL+0=Exmc6n7Y>u)m#$k`T>qaoKb7}S*R8~i z`TF-+-yhh2w6K2cedibaJeJXY3mFkt;(R`TpYP3y-{oK8d&;?T-#?7&)$`%${Tol~d<`JLA?I$z^&#FaQ->AQFzayQ{e`H%Rna=zU6&LQtr)W0pG z^D$~iT#56g`FWhXOZ+bX5Z_hqD))8WT)*u;0~9X6l`+H zP;jS%&P8{b>Bgsgd`8ivnK^_Q9}(XJ{+D=mJV+CbV7b+4ch0n5ZN(?sQ}NQG^kvX_ z>38h&8~^{j&Tp7^C(nC&DSqjdQ!lrcrFZ`n`le|&HH-(-4~@HV=Be*b%H?YAjt1bdz;WWQy*c6}H-YzDr*SbZt=E-7-w&-sgkbyj!Gex?5_vXMFk>l_l(o diff --git a/sky130/gds/sky130_fd_sc_hs__decap_4.gds b/sky130/gds/sky130_fd_sc_hs__decap_4.gds deleted file mode 100644 index b9be9d5786dffbbb131d9e8e385b4bd655424ab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2994 zcmb`JO-NKx6vxlJdGC%NGodjRQ$w`KHVUN$5{9TLE+Wa&ETsn1qR2%!i!ci$=yMS* z+N6tG1bq=L+Sn$fC}`6nXjO~8B*+#8Nzlgr=iYnfy*K)Xh#m~TH|M_p`JZ#&z3)9z zt$sDd(-p!Kvacuq-2jT}2PIygE;l#YANt(O{iytw^+Yy0%Zn^XNgl=Y&u zS*7yF$Lcq4${iWb<%e=d^SRvc;i173xh>?D5vi0zXGkq`sE+EY;zabs{M1vQUfP@s zagAF|1$~>=r)eAOy=O>Thd~r8bXO3?-Xdm6bLKiBu8YohmMFO#`bnSe7b52~@>wP} zARn$1;`(5|Ze5>i`$H>yBqlU8F$ek(;!jZDZu>LygTZ9V=!L0YR&R-T3H`#tLM7{k z(9RpZp^gXj+e7zf3jPl;A00kZeb6H=#CW7$H6j0f+?!b;w7vM>B-HUpJxv*1tV3vY z?9X}Zc%pQaJsU%YPlIzEJ)k8&m-GjSQ~=3 zVwN1|yh7w%Tz|k{ua}?jf~3j&UK!^`U9zQSS$=OT909L;ktq z{pY?i*9p}vlTL_uuzvG=vd=f~F|?>n4f!m)g8C5`Vmwk$4~;Ii-zV!hE-a;YU&5;a zzkGo2a4$G6Y$)wt-iiAQ{{nv)|8ikxw4VE{;Cq4og_S+HB>NNIBGjdp_W=vd&cu@aM z>*=50->0;`Dq0_Y|DqRc$7=lS_mQbTpqKZ)P`(?4OTPdAqn-=o^}~neyg4uQVe3y~ zic!-ZQY-oUPOXZOM{0EpS0~qaEw$&?PIu3pr)1V^>$e$_`Ww*vNoJIMDw_GQ`7j^I z*R&{K<~kpfq;te)kYt?7GHP!ZmaCr6kRFv3)f3h~N0Aq`epitm-(&D!tS|J#Jp}wa UyV^tkf2|k)zTHNjKp!ss0Y^4$00000 diff --git a/sky130/gds/sky130_fd_sc_hs__decap_8.gds b/sky130/gds/sky130_fd_sc_hs__decap_8.gds deleted file mode 100644 index 9025d6fc8f2d7df13f9f12711c9056ba301588f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4082 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dfbbp_1.gds b/sky130/gds/sky130_fd_sc_hs__dfbbp_1.gds deleted file mode 100644 index dc5ee6c25ae48f224838d121d55ca249dceac024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20052 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dfrbp_1.gds b/sky130/gds/sky130_fd_sc_hs__dfrbp_1.gds deleted file mode 100644 index fd09e30bb03a427ad3cb17cbcea87d5384dbc6c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17626 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 G-TwpRd~1#X diff --git a/sky130/gds/sky130_fd_sc_hs__dfrbp_2.gds b/sky130/gds/sky130_fd_sc_hs__dfrbp_2.gds deleted file mode 100644 index 6e4069bf6dac4d0c563285f8f6a1f96b99323808..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19776 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dfrtn_1.gds b/sky130/gds/sky130_fd_sc_hs__dfrtn_1.gds deleted file mode 100644 index 0154afa4e6696923fd833c05cfbe92bd9e1f14ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16856 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

      ;vFF@L0U9XaR3((4e<-yk1>$vDQk2IB|T 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 tRr9g)vSv(i8>TL8+}(C``_W0^w9BN3jJI0<&x@ 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dfsbp_1.gds b/sky130/gds/sky130_fd_sc_hs__dfsbp_1.gds deleted file mode 100644 index 472348fb9ce9199d9b7789e730ff09d0b79d5672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18242 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

      ~*4&y{eziW2%kGpvH-7G`Jl*sy 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dfstp_2.gds b/sky130/gds/sky130_fd_sc_hs__dfstp_2.gds deleted file mode 100644 index 894b784ee3ddc1c8f72bd8c5b0d6eed072d33c2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17252 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dfxbp_1.gds b/sky130/gds/sky130_fd_sc_hs__dfxbp_1.gds deleted file mode 100644 index 5b283b73dd0625ea4ef1996a08f0435cde1c4e62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15130 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 Th%P<3|G)HPzf4~vkFxt;B(XG| diff --git a/sky130/gds/sky130_fd_sc_hs__dfxbp_2.gds b/sky130/gds/sky130_fd_sc_hs__dfxbp_2.gds deleted file mode 100644 index a0d9bac1915f32b3bdf6a4afa519d19ed7906a37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16412 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 wmb!eUj}Gnu4|606ivR!s diff --git a/sky130/gds/sky130_fd_sc_hs__dfxtp_1.gds b/sky130/gds/sky130_fd_sc_hs__dfxtp_1.gds deleted file mode 100644 index 982fba6eb7ca01bfb2826a4a36a45d751adfaf0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12764 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dfxtp_2.gds b/sky130/gds/sky130_fd_sc_hs__dfxtp_2.gds deleted file mode 100644 index e05567fce0a27096f55f088fd80d34aca3aaf40a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13500 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 GYyJyeAFMq9 diff --git a/sky130/gds/sky130_fd_sc_hs__dfxtp_4.gds b/sky130/gds/sky130_fd_sc_hs__dfxtp_4.gds deleted file mode 100644 index 32a122afc0ae4641e7bf17305843b575c0441a38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14984 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 L|E$SiT~hK70eHAj diff --git a/sky130/gds/sky130_fd_sc_hs__dlclkp_1.gds b/sky130/gds/sky130_fd_sc_hs__dlclkp_1.gds deleted file mode 100644 index 7283a76f87794df38f449a0c748768c7304933be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10900 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dlclkp_2.gds b/sky130/gds/sky130_fd_sc_hs__dlclkp_2.gds deleted file mode 100644 index 1f03c06eea21f49219264bddaa218ece11fd4903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12624 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 JGR84>{|8=k33vbi diff --git a/sky130/gds/sky130_fd_sc_hs__dlclkp_4.gds b/sky130/gds/sky130_fd_sc_hs__dlclkp_4.gds deleted file mode 100644 index b2d5efeac27494966f6e58818bab9de734ac2f25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13088 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dlrbn_1.gds b/sky130/gds/sky130_fd_sc_hs__dlrbn_1.gds deleted file mode 100644 index de3a1661f68e6b2af5304a5447d5cb10a8a3181a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13742 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dlrbp_2.gds b/sky130/gds/sky130_fd_sc_hs__dlrbp_2.gds deleted file mode 100644 index db6ede115663a957c31f9d528f0d5b03138c9d2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13922 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 KsBVbW?Ee7L#gJtH diff --git a/sky130/gds/sky130_fd_sc_hs__dlrtn_1.gds b/sky130/gds/sky130_fd_sc_hs__dlrtn_1.gds deleted file mode 100644 index b17f2947335d9895f75188cfd425d2a6e93579a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11104 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dlrtn_4.gds b/sky130/gds/sky130_fd_sc_hs__dlrtn_4.gds deleted file mode 100644 index 2db36c8c0cdeb0caa65c7004765cb0f3e0e9a099..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14376 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dlrtp_2.gds b/sky130/gds/sky130_fd_sc_hs__dlrtp_2.gds deleted file mode 100644 index 887a9d6cf54014b42402ed756e29d6057b0a94c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11154 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 diff --git a/sky130/gds/sky130_fd_sc_hs__dlxbn_1.gds b/sky130/gds/sky130_fd_sc_hs__dlxbn_1.gds deleted file mode 100644 index 32f2a7e3b6c26784bd5f12b4c8defe8be903bae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13118 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 E1G>Z=PXGV_ diff --git a/sky130/gds/sky130_fd_sc_hs__dlxbn_2.gds b/sky130/gds/sky130_fd_sc_hs__dlxbn_2.gds deleted file mode 100644 index aba0e5ea313e596b2ddf81f3013f7d4d9caffa4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13966 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 LDc=>u5V`*X*$7fN diff --git a/sky130/gds/sky130_fd_sc_hs__dlxtn_4.gds b/sky130/gds/sky130_fd_sc_hs__dlxtn_4.gds deleted file mode 100644 index c381b91963a5edf0b6b3e16a23a7f650e29410ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12508 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 ILJtD>KSBGDlK=n! diff --git a/sky130/gds/sky130_fd_sc_hs__dlygate4sd1_1.gds b/sky130/gds/sky130_fd_sc_hs__dlygate4sd1_1.gds deleted file mode 100644 index 629c4f4a16ad5cdaa99148df30647e590747dc4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6620 zcmbuETc{OP9LCq4y=P`$k0uB0q?APkrjeo&W|)^_S&H4gmM8Pl?L28cm<1MD8B)>Z zA?@NrS`j^Tfh0kUNT?nPiX?rg2m>j~F4lvEec$@ew`a~ddq&BDeSUlXYrg-tZnI|1 zJ}z=Wu*8ii1@RBA?s{D8&Ua(8-(53^`tQ1Z-O6|49KZ~dyiJJPRam!)}z%PZ>-!z39u4SA@Qk|5mma zoR{5cwORf4$dN{w!{A|%C3oS zB~E{hY@*ko09- zEb@=0n{RYjG+*lJpOokNS4W$F_2ZQEWn3)suZ}j~>c^t_QcwS+JlDT=+7SHm{ri&j$3Ks_-bJtA*>h{kcp-u~#L6>xK3#;lEJi4sigWR} ztzVUd$d~oA=daeA_b?`0FYwF}>!_zgTtvK3U;5SbV(^0LMZ|OUm2*(<5AgXUWw;vO z5f@ROt1lhKwSQqvqF;=cYgW#d|$BQBym*T1pUbWQBd{F)0=$GCVheRT`gD(J-8WYdd?7y1XIOyA~* zrVqqX`T8dI%3&Y$@1%@sIOoekLX_wFv!80?tpD2l()zC^jw{y3{iYYWXJ%dz@qGUn z^A2;Rh5f!*!CYz~E+Ss2FTHDeF~HhQy@+^LzXB60aNX{5?#G8YT)Pi{aES4Rww{a8 z19qK=>$3T7_4%}(bKf~T*?)Rs9H8f6^yOLotfW2*SfA((jQ!K7`}-;DA3?ko^D|)$ zYZlAJ_;u5X(09sj`)lMWt+VSz-uKKeBHl^w`>XZ4)vGZn!!yxeM{u4no`}B0bz)9^ zEZ;X6=S8L$1I%US7g^61t`l)xwth2{{zLn$@BKLKMH@M8U~8YnMZ~ju+y8eb?=O7z z?Sl8glyNWm2XPVQo%H?weYOYl{w35EV<>W6akxjt_!so`=g60^{EwB3CA7V?4WESN zDY&nZL+#<`t2*Q~$L6xesOiMXr0yD>7bw z*2+o0kGVP}%l+Yrx&3Cc-gtUlC;tT;pRO0-^(XxQO&O0uU)+yAPguFl%Ei(u(}~b$ z^WX39zv21s{{!E@ea*A_nS=Fu?-%vEgV^!?KjSZ*D4lpRJ!{DE*5G-Z%XHKpeE69-@yXn6AyQO&^I9^8NXq!@U^apV~w{d|Vt} ztdCzdy;z-RdJ*y5_S2_~>*?Pno&`QG&MVfJ&`#>bV3X-Z#0&k|@6?OzclwJ({m<*z z@6@-6`uMnblK!thYihWOwmkw`)?1`_o_6OBZ8P-D;#i4qlkK!gAP`R3c1wmZ{?PO|;&d}sdO z|J>%xnXU1S>#i{49XI&Nluern%vEMW`n!o-zvrR*H?G^b$(WXcH+#_$J z>H3|q^TEXP2{Im#*n^~&hZ0}Y`XyFhyl8!AJRfB~BY9L6e`WO_y2C#v;%WZ@`U@8> zRH#=%c+SdW+IU(&&-&~Av>X2KVt&t0SX~Z1;!2d~=#d|D*_p3|_8!p-Z9G%&ZV}(Y z#Dw%^T$$(ZZV}(YM5XvsPye_))4#Y{d_6BAeHmBg`4?A zx2ZcJeHmBg`Bx8#Z&SBYe5t2@T%Pu?#p{oK9&x?%-@vnHO~PO?f;g1Lm+^eM26I{I zqihDwmFH#sD#k>TbWN|a~nom05>Z>%dXCiM29K8Pz(o~frU+=Kp{nXr6|%HSLZvK-AIc|(A^TvNA+E$c%JdI0_c+hW z_$aAkT$!h@PJp%#_x0xqD|g@=aV5$#{VOX)7h!K^*IbY~#+5_qOWUzlL8lC-iC&3# zuD{zV`Z_-my{l}^)<@VYdo}3aPw0m@=gUG&lxO<0pTbGfe|3H>{TC`H{Xu4$$)u+VZr1PF$ZwtdIW=#{MPL{iB5C zPa)oc`580Bn#FQu@V4lb&^O92`)lNJHp=x%-uKL}M7)vS_E+@}saIucikG0jPUAdg zFa>>y>y#Pwk$m4_oR^7S>0&N3zmoN=;yNX+OV_U>?mx6o`reMyVYHFs23C(qT#0yE zFZ=(N`2B^?zWwk%kuc~){~)eJc_V#~eV=W^yx)tuVhojBR}Ah^W$+vN`b*@CS@>7V zl@8kO?7}BzVLI+@zU+R^1T}ECd z@;36{!S?fg)4ty>O&ELuFRU@j(hK;GwM`jZf$_%vN6GyN%a!gi(JQ$wM98nS@4fI< z4tT%S@wMY)@Au{CZyelD^1y!5xHl&Z7oo4W!!st!E1{H=rN_iy$#UjZB5$Mqsrz#u z%K9t0?lG^D@xm)oPTGCU!h|fhhb89rfq1>Kw7N$Ai#R?_d*JmK{QpZBw4yIIqt9a& z?~`(+vtD#c=+pT(+xxFM`~AQF`?sxmTHi5HukZaz{oO&?@clpKuR5jbltbxRLyjj8 z%X9L*-VRK?(fIHYi<~mQ)PJ|kTmF8)`AhP?;qM2^0sHAedcR$Cb$%;)U)i4R&-Wbe z#rXbIC+cD2%I181@Ve-gr3Io_BA(fP`V??I{p-ZDz{Zse^7RhdNxjnDDtaa2x&G{T z>Xqzw`YZGLpVzV9sjn0Dv2o=P{a=1c^vVkIQLjYY)<2T@v()%w`FpP4>KM=XmpT~j zXq?wEdD~?Nm;CySiNe=ZJNx+$Td)4h@9L+=T{X17 z{Uv#n@!R}4{aZh5HQw8XukP1(O}I-%y<&LYgVbR+y)RZB{5cYJVed%P_;0}oYL4gp P2-M}{X?1|UFPi@WYBKM7 diff --git a/sky130/gds/sky130_fd_sc_hs__dlygate4sd3_1.gds b/sky130/gds/sky130_fd_sc_hs__dlygate4sd3_1.gds deleted file mode 100644 index cba08162ed2e83a1865be8ef53ddb7de0762bf00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6588 zcmbuES&S4_6ozkCcUARL-3(;HI6@SSm>^?>05OO`mO()YiYTknA~U$n6Qd7+CTK*( z5H&6jY|4X!8sdXXB9Vk(3?%AzOjpf>sigU)&aMCa zcdJ{s3KJO5TWQAUyzmE8Hti-fSC|ROzfI%?JrCTwaoxsE#ksFd&{vm&dlsQ zc+I}utM4%5{dDc+LD2iqrm54W)Hih1d)L?R@2%IndN$p+?&0p~yXR}3vc#1rFN`(~{XDC0H9gdO-x}ke0T;zAeueYvj8Rq= z7?XS57$xJmSEQUY)K89C*e`jN$luKWdiwi)#zbR`$-fh`@E|JtJARJL&+C-9zF9uo zp7M|Aq_xJB(J#u%F4XlG)ZdZu;#ess{Z?Fmbxd!H=#{n{d6m#N^WVYtV0=ul3T-)^ z;3=G+z_}ya8+A&1NgJP$AoP`kq9^@PxEAA~WIse-NPm!w(^m=qWc_}&<89o0fs6+v z_8_U{p~Rm_{ZgwhT(G{=%{Q5^NFG(iUs?T!?(la+Jn26`fByXW3iV0|&sw>ojVJZ< zt-szcyW#&f=I?@-)fLbqu0(l;9{CSYuY~qa(F<)nRqt&P-~7aw^krO`=GRwboPJGLK zO7W$h{;oXLzj9K1qir$i%eXSjzj9K1qiss@rJnw-Jk`H?NPKJEG3m>=GRwbuNPKJE zO7W$h{;oXfUw7-zU0k2J-UY826W$#&T!J7DW#L6UkFLU8Rt6}Wfpg_K$y0DdzNDW# zUv<5CA7jGx0?!;}8TB-XD-qAs=YA8t(%UI|CE}_2!lkJ9hxmOG)9=FHh$~T^s?VLm zwSQw>c|NAU5A{J@iSkrEb)`M%&zUjHH%dMw%G32|YwkPf=g0J(g&uJw%2V}hXHY}k z(f$VUOto=kEnV*)mvIXokI8XkT$wd~ypH2Wy^?ijT#0yU{fpSRg)d`W!TeShXX6}k zCE}U-JoY%$H+V$!dF9v){RWvQrIwiN$0FiN%%fEQ66PM~Ss6bib&M;s^wkN__Tj$% zG-l;ioFlG8d8&V9mFObe`*zI*sbgF@l)ktfYZY|L(lpU45zqAZ+C<;rN22$XZRz?5 zn|{9z{kt)P63+QD;E3{6fA&*plJsALUrPU#l#{acVUOsQ+%q$;67h8Z5c3XmrHcK% zvVgf%MO=w^rat$c=#?JUZt9hYC-rMFu{_gi?EA$igKLlA9~{c?N?Fg9!K3cE;E3yz z`R=y)bUo+3bDrCOT4Efa;~})=N&Q?`pT&Is1aD#NUqIbIh*|y^;vJZujwP&FELVna zicSfAv;4BZMxNY8xn9Zpp81uCH`Ckxs{SGMs!UDrBJ|g3oI8e7(3iMQnNlCg_YKB* zx#*Q1<}&juS3|8I5gFMRgxhxdt? zVJG?raV5%|>3i(^YCGorUepz1sN}k0aE~g(U(wf}BcEgbUny7S(DvLe{2cSsac?89 z5_wbo%h)#rH{*wAmy*8z)8bE-*5Dj-Ny&Eu#+CG?UTN25c6{vpz5@M? zgZoJy*iRbohM1+r=Y{@jPM{z|TU%&TNP|B{rG zb|14SCd=(%iMf5itv8ld*UW!0$EUUjUVp*=znEbg`eHNs+_7+vlq+-VMW=*5nSZmr z|60=D|NFmx+nOi!a|Y`5ysoml%6%@c=E73D}OiIfvGndKli;& z=9l{KmU+wX2b{ko?;CzUP!8Bn57Gx6qHFML(Fe+obbr3*a4*L9rv_0E8&|eu>%&(? zuPiPUy%O=%_R}Yi>*?Pho&`3pT$ruTp`Fw#y{)2GBA)5bey3i^ey6`OtN(c&`rGr?GXuMOIA#y7#mIgEBR&Yv@R+a(8={`8cI z#{2VDBgP}*J?xG#?Lq$!!2Pn~u0qyXgR-{orYlB|{JQJ(>| z8l;b&vHIHv=uU+@+#kIXv${>QXnoFH{}=ITCe#??}}6-+&R+9MAa?sLRKb>JWWjF#iLw Ckn7F> diff --git a/sky130/gds/sky130_fd_sc_hs__dlymetal6s2s_1.gds b/sky130/gds/sky130_fd_sc_hs__dlymetal6s2s_1.gds deleted file mode 100644 index 12f7cd5c0e7fa32567de044f4dab2b357f707cc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8188 zcmb`MeT*Gd8OG0@J9qBP-TT#Lsjh8M0yRn(Z9##ihP1USL`-89%SVB=+64(~)UHVC z;s?em#zsku1lR>= za^J!wix(}f%%qRUI z;$YqMiV6`wz0Bg1-AU(~-wI@Y&2QMaC;Xdh&7VwP#`n(!x)b>QY}8PabZ2czF^?o!Seg7s>JVjTIuF>@NJ2qz-N9EmEiUv!)kGJL8Bky*d}#x}B*C5x>*I z_mb4B_?YQM(q2$!aTf88n?Fe%iq{8Hr{W3Ii{v=tiZQ)*tkI&_~$ypq(bcbn-&(#|*{)?01=e18r8W9tt7R3YLIeuwWRsn=k;=|y_` zMHM2y{`bwFqz?U`22!uV2TU)L9yNmk7;>5!;PQGBOac(=KV*+muh|Qtlkd> z%coAA`VQ^~vm$0AhrzPw?Gb;}{ayM8_O3C15#v$+_Jigx=2x1(2z#x6?`g}sKQCI| zy{E-^{+!4B`}2X!n|3jl|HLti+dU*&+=*jiJU-_!e)muyBTyM9X{4k{HiFUuS;#QPKSJb>f-) zt?vA2AnT^T7^^?qYH_odM2nkk731+akNWeTAu=xQVk~~T*W$KXqQy=3it+fI$GELl zAmh?5#^c+*)1UiKa^LAM#`Zrc_rF>0e{+N7oh*s*{5g;L(@$jHw2QI)-LmP{m=!Iq zTNdN-IgfE0vw@6DyBLelKBxa=nLkNC+Qn7DBO{d8tq8~r~{#?n=>wsw@>*cy)ks;RY$gw2t`P*!q zq`lZ1$nk!|#z~G3-W14j>LMcUYWdy3^W*SU%mW9%4$MD}?_Wj^CEFV@?`mjPGQAk% zUqFwSbf;_`5$mlM&(0H%mFIxp2j(|G8(cFZ{s8xXp6_`+;(2Ofb0GEM`B0=T#V<@BlDc%Dmq=ZT zKbk%yb>Vtq>pawpIATpcUaz9miRVk^MN+3W`e#Jwl=V$7k~-z+Cy_eQE>b7vDpDt| zD^e%M6>IWaVE^#^&AeLs1F2K`X48vgtn{fs>XYukPf6-Rf04RyU9l#<*C!oXT)wX` z50bhxzE>giaaf=IM7F<<+Mf@kF0_l(rSVnMhomlCSEMeCE7s&ULw($>sN*WEwK0&- zI@(2ySFe{je?FZG=iBtpc0G&PL-5B(guUu-@2lne?%*(LLA>E5feGrTUBr0Qzq!Ty zM?7x+O>s-T|M0cYc?teM3(Pm*JM1FHYvXfXvD^Gdg#O+x?vDF+aP2d`IDvZ^{YBVo z;}4)S_mB6F5&wbjw2LeEZ-xGR&*HPVe|MmNKEW%6$Zf_SO_47X6>|*|d75)gZX&1Zo`FD4rZ+;B_e+TCK@Evv$ zL{ELXS2S0BK zWZ%;+#`@pSL;dt;{UqzAU5wSA{mSa*J&g5xqHb>&BlTy9#s1G;tq^_h?P8?=`FAk( zKcAr@`<`|&*8k~ytnbr*2D0yI7i0a;dF*@okBGkab}`cbe5QKM&I@GU(=NvPpYz!F zJPVA7zV~)9(*K;teW$<3eWzWF?SJ!T+jlN>MfN@IVyyrDJk(Er)=#o-+QnG?jm=hf<5-2L+uOxR{qAwZME^H#st|qe z?P8?=Igfo$f02DpyExYWH;td4vPbRwB=(NLA0H9+>ht49@2~$aaCpzdS=GPqdE(l; z!~BhYyz0NbjQ-`mL-Gk>h&edZ68$1u+ z2t7)+H(@=@6EUxLz0Nb1S2h#Kyz;e{AIZEpPmJX^!E+Vz;~89JUfFe)AIZEpPmJZ) zI>+*IhXa{k@+r%YWL}&n#`5De%)EH-6PX{^7nzs8*Owg2Z(Hau>y7MA=g#^pYAo5~ z-v-btBJ5TDU-tekobTC9lSlZkQGd4lW9QQohMU2<_GfuZ>d5gV&`RGoBz1Dxwvbe*$0vVTfu_nG1UQ{NG+e_E+rM kxgz`j*xvf$3^C~YlEr#FHgk49{>OV diff --git a/sky130/gds/sky130_fd_sc_hs__dlymetal6s4s_1.gds b/sky130/gds/sky130_fd_sc_hs__dlymetal6s4s_1.gds deleted file mode 100644 index dd304872c22a290cbf48a5b942751ed43b3f0b96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8236 zcmb`Mdx%|E6~^~H_uO;OxpQ9`r_q>Dl{TVg)Wp_mh?FE|tXK&~Yg(JOV>GFjj;I+Q z#Ho*p(TbrKL{SIYA{0?kRD2XGH3$);f+$vnpio0qv`GH&g@MNJ+iQP!pLv{}B3_vM z=B~ZhUTb}Oopbh?xWZ-G4Q@*->z;Kzx5;(gD1kS8SiZ^~n6oE`4Gu-%@KIP$wYu%KH6aw0z;h zg|Fd$FehR*au_X(-k$JB-Cw7FO>|KZU{=1sep%75yN#qFOEE$-AAF&&@t7{7lal5uGlQ}L_w7Pt3+XmP9aVmdzO zF@EoXNXDgIOvlH)2>VBWk^4q}F|~gimMrh-t)k_{#JK+ zI+AtMUrg0s?6SDUO>fBK2cn|3jkzgsrlT63bsb<1Kp zKIbuRYc7&;X%|!R+2{114*8Sxqg`Crf5!RelfUodem(rH1k>{Kd;)<)z6Lua5=X;)yc%GWt5lMY`J`|}-^;6S_q%J+^B~q8_52g=E zUAUguxeWCpj@Xco*Q*LT@qEd=Nb1x@|4ay-ilOO6Ql}FABvL2ZMe4*{Me4+LMe4-3 zVncol>>r-LnOEmXBz4N4Z+el8mH!};`s91@6G&a?FH#q-D>lUU`s8Da%l8%LK~k62 zH)@1F4(qd@$nK|6`=gQ6g?5p;v_56}kkp0iiqwU1#fJQ5sgJu2bzFsJ&!;o-e4GEtu4l2h5B~Uwu-E=u9{ZmD6LK$U7Zd%@ zdE9sUi`;kG#nk>+xJR?^`8=2q`|j;xV*kslt?$b}N3!o}7gPOTehje=;^#$??0ee9 zRR8;VsGt6dmHUs&C|hp~Q7)a~tJqW%K0*#E_oHKOmmT}<>p{|?6f=QC7f z-_tIp`agfI^?m-&NcKJLVygc+k9|-73DNi7E++b)&s4A3Ws&TA+Qn4=a~}JiXMqXP z_ueih`k(W-@AMbB@3f1l{cqoD`_AV*_umuy?(Je?|1;e8c>izXd@Hi=X%|!dpJDIW z|84BK$iAmtO!dE?hx+Ny`bpMJyO^rKwZrOeov9IZd%KvZ-+c!$(f_SmYDC|AyO`*I z&ST%xUu56YF0ShTTUMW+im%xDNgSMlKRzPt_25dRha{R(;K*uSZtMP}bdY}78cj^R9lc_QXFulEAs? diff --git a/sky130/gds/sky130_fd_sc_hs__dlymetal6s6s_1.gds b/sky130/gds/sky130_fd_sc_hs__dlymetal6s6s_1.gds deleted file mode 100644 index e3adb2a11b9b80d3be6b418dc823972a4c6da447..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8236 zcmb`Mdx%|E6~^~H_uO;OxpQ9`r_nK?Ds4o~sEO5Rh?FE|tXK&~Yg(JOV>GFjj;I+Q z#Ho*p(TYI}qNoFH5sIiNDn5#p8iWW^K@_V(P^h6QS|oq?!a(Eq?X|zV&rIg*6!F63 zH+Sv5_FC)P>zuRC#1$^fZg87hS@*2#xmnkBSGs4`e|PB2 zy!6_ieEHnYeGk0wzLguVbDKNOzE>8-((T8$U$t%F)*}l`Z&`TT(!#=##p7>3`tHMv zJC=4VEo^r#FP$p}nfrh%hMAjlbK|yi?os?aoE`4Gu-%@KIP$wYuiu(Ovv~uCX zg|Fd$FfU>@au}_M-k$JB-Cw7F zoj>O>|KZU{=1sep%75yN#qFOEE$-AAF&&@t7{7lal5uGlQ}L_w7Poi5XmP9aVmdzO zF@EpVBWk^4q}F|~gimM!n;Eu!VUVOdP)Uv4tL^0a7vO>fBK2cn|3jkzgscgTJxgCbt_^z zKIbuRYd(^3X%|!R+2{114*8Sxqg`Crf5!RelfUodem(rH5*qvu3&oVtjJyIy`b@%%V`0`tJpFC)u$;`_&uLtu9+=3NKP0`sdd{t@(e zpu1q}h*)pEcy^xnYB&e{F0#A{+Tfa*@LRb5Bd;>B`&QI@8R7@#cww0OJK_gsKSb^i zL({-E&Q3gEh&<caKJ&K0N^am0pvyk1q%iRVk^MN+3O`e#DuR18fok~)>>Cy_eQE>b7vDpDt|D^e%M z6&vzfWdHE|&Ad8CBB@jUT+@qWto#R&)FFeF0_l(rS(bEhomlCSEMeCD>mdeM}6FFsN-6!wKbB@I@(2y z*RPiae?Faw=iB^Gc0G&5z3|6JguU)>@2lZ`cXSf9Al`UKWQO`_7crjnZ|^k!3D25; zTin^~KYki?UWWgVBg-xL4!el)#`v699Weh1p})6_2h#pMT>FeKPT^ige-ZY^_#^1d z{p0;(!hhg9?c(bFTctnWv-m6?-WBPePq2#^Z;U@g?R@VWqE@ko*tCnVC;eGB{YBPI ze=${m|6Nx1U{j5#+uOxN{k%`N`p z=W*ZZFLK{$7gPIR;U3Mt=ks7f?7O#%iTy9Hw!Sa_9Lc_?T}<_V`BB6=h@TfkvhQgZ zQ~mGfp?>)4TQMb2?iTVq~V*eLU)QGi_&T*7x~8BiZ+~i>dzSJoY{PCq&7o&_dE z-+Q~5=zq@RzSCdizSAzI_P>3r?K_|M+<#B(ySIyp{m*dUnB+^?P99_)^@AAb*4tt?d@Wse)k>3ME|#LsS$ne?P8+; zIgfo$f02DpySS$RZ&`bOD!yXpCvk8J{`iQn*PkCZdw>0Zfx~+q&Z_=>&lA_)`^?|y z$Ls!kLj0He_bcR`WB;ap7MXn;u~EC&I)?KI=82f!yxw21*4=o1<6JG4zryqI+0Y}f zyAA7Mo``vk>-8S8yo$L<=2dRA{7B}-d15NRDW0p4AJ5<-^D5qG`H{?v^Tbqsoy#pR zcQTUsW$(58Nan?PVk$pg!_15KK9TuxeUW+jdwt-V{C3Cwvfe1}aPBD|M2&$1{%rug zBEnwR|8ei{;`yH4G<}Ny8ufQ;5$3x8z8Ie#h&2`Z(-S6Km;U4F#~b~tqu7TJV}Bow zEOF1HUBq~!KjZWVmbWKcEIglHG%O#ePi(B$>5*vS9SEuPwP9alWPh1va0o!whcT>ij; zzkba1H+S~l2pd0r{|;`yPtO)>{)^b}N?3KbUv<|-tImFbpD)@<-4j@9*_E@!!Tq?v zFZM@1YqGk?zkiqaf9)E7sEVpC_McS6N_x1<;mRy#iyKx)e^TDH?629sZ&mhB+F#jU a|GHKF*wagA&%VOB71`rr_u6&A-2E4W`oyOI diff --git a/sky130/gds/sky130_fd_sc_hs__ebufn_1.gds b/sky130/gds/sky130_fd_sc_hs__ebufn_1.gds deleted file mode 100644 index 019f99f6a8cac589aa7617331b993090e34a808a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6522 zcmb`LeW(;w7{<@e&dh$y?y4c?)tgypMBeC%gp?Imy_%8S{7Oa9OQuq05t@)+VVPM< zP(+}mWtoX)VL>EVW`%wDNBBnsW`9(63Hl%@>;p-Ap7Wk}XI6J6krpn$JMTNsdERs8 z>^W!0gvRq`n%10GIBv?O#T3jCGdTIbsd(YyyXP&rW65%3`sRb1Mn5s~){l3dxUO^G zHQSz_HO;gJ>DtyXTzb#);Un6+7tZfqdS~}tOS`)l%v-kbzV6}1FB%h8J+s<`HP5t} zw%&PT%mMkUjfolbmH(Bv$M0k6`Y~4D*DR*KIs=U^F{biCf<3r?3)ha7i*VhFKSvv{ zx;$u3Ah$hcaHX`XMElMBC(=K<#F${UF@>&}{s?1=n^3UwC1c9#aqUPy>XgtoYv1;d z_p#on7L)xbKPdennJ+#QGx`wq+yaebX$Y?WF-95QCjNEyH1%J_{)HQ%y#lqrpWtR( z@5Qxa^aid6piM^`k6fOFK7TwW`|V?LDTA-YM~VBJjfbtr`(4`crY49wyiQy@vW^`7 zl#J(Ilsriv@3NSz!+S^SA#EN$%CqX3Z0Dcv<}YOY^b%NNj@yqC7s>u~y7?>fAIS>l zAoa@XpH^;^h-c`}oH>Ir?q!tFo)o>%#*_N74d1`#;rlwqXIxBvrwrmsgn(Dss8?K@eP8Q^krO`=GRwa>P<)Gr zl;TT0{arrQzjR7`%R6GymvLp5f9aI?mUk${mwNiUe5!wROnfWrV$zp!WtM+*OnfWr zl;TT0{arrQzq((1YYSr1mvLp5e|5k3))pwmmwNiU{JH*a|Fr8C?kjJT`$=yN#%+2` zwv#_9c``o*xp!kSZ$Fk&hh2}bF1Yra`P==ohI^t{(0A;=$^!Q4S`O>AqrV9G4frlO z=H?>LHOCRUX6@VcHUEpO;|1(xT+d0nA0e(pyqVtazuZ@KA61qIq5s%Zlx!!rOWGsp zlOG$i^Z;_$kL$#K%yzjSyY^H4Iewf6{3tOWjEC`1mOq8x7pTXP@zRZwCyUsRc>Yi_ z&vun)H`Sl#nBWG~-<2TFN9GK!9ScX$|Mzf@W7L5>=7KW!3F^g}Md?3;T6jKkMElMB z_ax7E(cf6hmY_|rFcW%=iL$r?Iqd6o9!A?ZYZV^vGdo;7?P|r z*c~%}6~=Eq@{W2gRGxJ{>~{ORt)Jr@Vt#XdtrO=m)*Ct&u8043s86{8-luV`L_GJb zv|~9G|T(4iA)dX94`lJT$eZ5jWPGD`11_2u27 zS4PuBuS7g`{Q295`$BPS%n0i!<4WXH^_4lYu2c&#!^`21xDxA5s-8aF_vo+WzG>@n zL_Af`dB)#zoPSEZzp(R9iFm5M@B*IoTKG?h8C(s2#FfaW>Pt_`_?Jh<d@g9)C-SYf_IO61LY$&-ce zMW=+mS^IWB&G{G$eE)(+V&*sDf5er@r|L_KM8~mZJEV{K#kew4KN9G`_FE*rF?a@K=Nd-l2$pLa*;h zl=_}U+4OzM|EOnyoR9oio|OOV{b;QJXWM_1-hZuIiPn<+m-jWUe!f@WKFIeKbz&d1 zab@HDYtYyC(H_zBeFM)iy05x?sy}~M=5RlMuPVJYm;;C_5zo};u@+Nb=Wn9VD<`Du z`CfLQICx)UH>b%1!FqZg#GxwIlMS$0uv6vFH2Jy7<3Fi+H2X&&vVAMQCNdkR+?fp=$4ltsKvN+PH4F&*13f`{rL5{P%hQ diff --git a/sky130/gds/sky130_fd_sc_hs__ebufn_2.gds b/sky130/gds/sky130_fd_sc_hs__ebufn_2.gds deleted file mode 100644 index e4716dd5207099384a8cc41a91c39102c3f52913..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7324 zcmbuEd#GGj6~_0>dCZxaGk2zPZN1H{);_3Uz@!n2hH4UXTVI4e($qeO#wJ!9#U_ZR zsfb9dPgJBrd!tw|)K+Y*Xj=`Ih_oPxk3aMeQ#B$%r3$es1uMkw+iQQb&)hrbwAO*k zZ)UCY?X~vWYwtN{uFGA!{Z6;oYIpwVdTzmW+U&qV^F8m`x%Z~M`<v)CZ&)|pee-zVyT-Td8;^JG{NV2Qk1up- z;aomwyN|ehuI<*kwWGv2_qhFy&WX(C?Y)R=($m~Tzs2k4-BZ-3-@~9cg1ag_fzLbe zIk0?*bIDQXMB0;w&F=|)`!>^i!r$I$ev-P@Pa~;s{m}em_5ePAJ<^?o{tcKzAm@=> z0e>Lv$)C+n($0B^n9r>F?%{lUhjHCS_`5TbF@l){3Pw&>mplA zHm->AXT|>y`3Yg zG{A(==hv9t6aM^d<|nDoz8gthcG&!$7a+&G@HsGh6|Q|Nt_ftlI8PDtomG!JSdZam z8+UkNB9WGdWl6J-sFrj`0~U^)@k_?HNKRlhmR*Uk^@gVtX3$KN8k_Z{pa{Im4$V7+Aanwd9L6UU{mYdz-kebgtAe(FT%s^f3{Kl^8uo;mrx71g&QQmORsUwwR6 z-~Z}c5yMvXmwSEsqV;dC&OgOD-oct=S!D4R1cY6LzZ!o^pKmlB&nS*VQb)Vkr0*X? ztRG;n9E{9vMsLC{!e1MIa0Ici7v^?V_-phS?c&-gy{(_`Pp%w#u^;-|6DF;jr}tOm zuh1j+mFLg192YqRt~h_Je%fEl82_8--6avitMIohdV4kgl)inybjkUm>DmXxW_@~{ z>9R~T9oL_E1b=P(e52{|6Qb$3{?rG5t-e@ey5b4Zbj2Fc+iUgR=Sgs6NzXo^ zj`zhPb+n63diDu*JikQhXcwFG>=WvEeu>o4E;i}eC)ACWBB`TYoT;C8dwBoi&p(_$ z{>A;;#k;`dbe!q9M)dt$ntuTD{$p-OB>kh~=J)pte%zY=oy51iq4N1s&%8-rkNuH7 z+#{EFW32+|@BGI6Wd9cAk9#eVe!iOKpWr^a*lqI^JGjwo{|L6g^u3tlt?22%_PgOf z1Al>?@8CVwU+g`E>oKl~aaZrZ@cqN*i1ZM0#Pfof@5LNo7h$i}555xa>lY&Pf1-x4 zi@5KfrT?sd{`fKC=I9rY-`~S?Ba5S`4c0>R&!4D+$miw`YAkk9AL>QkqmJH(xdgUw z{SfORDlRxHKY#zneaSv6@f32$+~qOwfd0>)+ZZBx>Lw^AN~TVZ=wF8#s#bK?e~yyKQeeN^2Pod{I0^M@R@cI zzr|GUXQ%Y}am*k4u=D9iK2Osw!e6T&pw_Jiaju{zMf~36Xcu9x)ekQ--SFR$)X^?J zpFY9aM*W13m_8B9`uLnX^X6Pd#-&|siqGF8+KZ?kdTl~HTY9^=SRa3g_2)hwofXOZ zaN0%q>+6T>dY71f!jq=&iPPuF)cP0CLVqXr!M&0F^@t6-2!Cz-^e50^KV{4#khP;- zguPbp{(xAwqxPSP?4E}`0lNr)t)6kZ8!Y~Wc*gg3aYMbn{VUY{2K3HHBa05!5_S>( z+W5S#mzjP-e4lu`m^J8c!?ipc)wZ)q2s`j^)wA27X` zo@sg!_S*RU3sAQ`SnFR#@?57~guhnL8Z&R6nP6;FyV#V!!+FoR zJaUl=-dxPiyg!ta@cCq36gWq%1@%wK==)7HQ(ED@#8RyUcBCvbN z&TkR++WdJ=_8!36er5~N$~D=hS08-&W0ybu30E#=TdswTuhO1b?EONne+^BIx5){9q{>#( diff --git a/sky130/gds/sky130_fd_sc_hs__ebufn_4.gds b/sky130/gds/sky130_fd_sc_hs__ebufn_4.gds deleted file mode 100644 index 011db6c3ba580c5722aa04be8f9a6cb4f984e4e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9612 zcmbuFd#qel6^GBvoH=)%_s)H_^dTD4s==xi6|6N)TUyaj8!EME3tX&}pjJa#d_e0n zqL2{9_y|xV_`qk?La1p(n+5?1Az%zqBS|$%`3E8(B4~~E_wBXUoVky4M4aU2n^|lB z_F8-Ib@th3<|bKEt-d2!T&WKIIcX&elA&Zt@}j}_NvE3ae9!h>@7i^Fl1$X=ZO{T4!!E8eOosti|fVO#aXudeV4!bHOr?izG!OqyQePMJvFss`v))nz|?D# zw2>rPx0-x3$%d=RvSeAWmL$nx`#Wo)i7prREQmessI(1LYq*$NUg|@8>zu_kLvl zKOjh@E+MDxW#lBe{n4sD4*@ULZ0bPUT-+XZb_MSJ8Yp8DHf_^9M>-(I0w9 z9aQeiNgh?rzY{-kozl&bUu7rxb&pz{?gKf=qr1ZLf#lOYWq_>ZVtsbX-|3nkqHljV zC;Ij!<`0yvwbk^2^0&@1KSbX=m=k^T+vX3HzHy!D1LbdAZGMP;=&79OhaNV6p!Df0 zO&=(K`a<(V^tIRzL|?liC-a>4Y`$T7r~ZDIGka;ASLfXIv7h-LUZ{0CU4P%tSy`r7 zf72RAreD|i6yHhwW{eN9w^XA}{H?>5AH?4NO-}rso#u!5yPwX9pS+yPZ?JwYu>B_4 zK>qVSA?*>h)ytXfmHvK>!FjE&uYc*YQ+9OtqkgdeD?ED#It$9df zcgkO=&+aqb z{r^C9Up1U@z1+7MZSbm(z5OMb2`4^SJ3+H#<$&Jnk&lw;wWH=SrvP+7CI)_1)V|H@w4X zy6)}Ha{b6Y)AiOnO*gX7S*{=5W4f`WPScI7#o;pX@xGN_*?9MVhb&kGub53;Fon?CJ9DV1?oanGS%k8W${ zz4bZKVRx44sdMyWOLL;b?kv+&=jgeAIniNvmg%W;bd$$&qQmZ-Q$JzPi{bvG{Xe|e zuiv6~k+r|7uD__iNbHSg%nxh#YTei5#NW|#r?aMKxb9o!kHj9%CxLdo#`v?ZuYP_u zF7jhM=$(wa^Q`${<5JblzjNYm-f4c=x=lWvGo4%R z)_RF8o!uuiHYd;EOk8HnF`JX3! zB-a<;V>z)8>+I}A7xOJ1&(k)aEit`JeVvh$c^={E#B-7ld5VMMvF|_Q`FVVcaz0&5z!Ut8SX-kik6?ktN>JL016Q*ndcSrWgqQE^mLVgHS6 zYM!w>`s(K`Zf!+Q;$nA}#pga< z(|mLP?(-I{8+PYVar_b0UiA-}f7Pm!?*OqoWiQOX^G)fN+kLjr-)sJ`JEwo&Gp&A` z+L!q*xcOvG{XUUkcgkNFKkVD*ARCvW0A$(w$iW%-BwQT4;VNgYAz2D`JYerQ+Y+$Nnf zU1)lz?8W1M)Z%jACO#x?BD=FJKJAE$&PiPC&a(L7ez{ZknLDihAa#e`Syq3vqwdi4 zdC>IKU-TD_A3y7c-pRUQcb2W+=$Dk|5#2Xeug^gxx87;ryi+ zs;%xdoO_)O-HWh0WiQl+^Ns3$@|RZskh;h2EUSOoQTOPa)O|QFMV8fnIDb8E=dMa5 zdpCBc?1lLcZ?e2O*Kz$q^2Y8g%b#}Sjm}B_*qvqhhx4Z5at9Za z-_Vcjh5Fi2wV6q=yY##r=lFhFq^(0%!6I^Feef7()Jo(V3M?a%~6{xS>DjTm(_)RswUy%8~ z!c6OLb?9&9to{~U&+7*3qrF<4>`596vMn3eYIvjii}{#dnas#%mcDaU(4Rd+uitYt zp4s~Tco+lmU4QP|rp15G`k4Qj8`n+K>-U`h9)J9R_Oz#xY(b`}9UT30RyTJ%Uv>DM cb%eRwynbr!{~kT;3!fyqzN`$n4~c2=A7%A%N&o-= diff --git a/sky130/gds/sky130_fd_sc_hs__ebufn_8.gds b/sky130/gds/sky130_fd_sc_hs__ebufn_8.gds deleted file mode 100644 index 6b37d7dd8c4eed0ee53bf1535f9c1b813abce3c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14906 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 diff --git a/sky130/gds/sky130_fd_sc_hs__edfxtp_1.gds b/sky130/gds/sky130_fd_sc_hs__edfxtp_1.gds deleted file mode 100644 index 4bbb6552e651a5e6f21ed78328967e2dae02e09f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18594 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 diff --git a/sky130/gds/sky130_fd_sc_hs__einvn_8.gds b/sky130/gds/sky130_fd_sc_hs__einvn_8.gds deleted file mode 100644 index 4c818706a85989613b11d0a1514e788fb6ee164f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14230 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 diff --git a/sky130/gds/sky130_fd_sc_hs__einvp_1.gds b/sky130/gds/sky130_fd_sc_hs__einvp_1.gds deleted file mode 100644 index 75d98ce6fd9142719261ee4b68a9bb5f02b97e5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5128 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 Lp3GW;UPAL9x1<^e diff --git a/sky130/gds/sky130_fd_sc_hs__einvp_4.gds b/sky130/gds/sky130_fd_sc_hs__einvp_4.gds deleted file mode 100644 index 36d8329e194f32069d4643d05a06526af3b20724..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9576 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 ZLUteS&1d0e7e0G;^ZU!)ZPm~W{{@*EKe+$^ diff --git a/sky130/gds/sky130_fd_sc_hs__einvp_8.gds b/sky130/gds/sky130_fd_sc_hs__einvp_8.gds deleted file mode 100644 index dd4c43add2a0b590c3e5318c2229dbb3cec01e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14452 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 diff --git a/sky130/gds/sky130_fd_sc_hs__fa_1.gds b/sky130/gds/sky130_fd_sc_hs__fa_1.gds deleted file mode 100644 index 0ab1d06d7bb45e765a4969563a7be32e73140190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14168 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 Vy?6KO`n$imb=NP%7tl^N`X5T;o6`UQ diff --git a/sky130/gds/sky130_fd_sc_hs__fa_2.gds b/sky130/gds/sky130_fd_sc_hs__fa_2.gds deleted file mode 100644 index adad01fc8de4b537ce0132031a90139a0c5183c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13544 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 diff --git a/sky130/gds/sky130_fd_sc_hs__fa_4.gds b/sky130/gds/sky130_fd_sc_hs__fa_4.gds deleted file mode 100644 index aea3350d86911da93a9c723f030eac4023bf5e31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17172 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 Ns(ztcm$h;^`+p%9a-skL diff --git a/sky130/gds/sky130_fd_sc_hs__fah_1.gds b/sky130/gds/sky130_fd_sc_hs__fah_1.gds deleted file mode 100644 index cad54fe1d84fa85aba6a41e26cae45f264d35ed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20584 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 diff --git a/sky130/gds/sky130_fd_sc_hs__fah_2.gds b/sky130/gds/sky130_fd_sc_hs__fah_2.gds deleted file mode 100644 index bd1855625382d3d6978aadaa702bc10780ab4746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19798 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 diff --git a/sky130/gds/sky130_fd_sc_hs__fah_4.gds b/sky130/gds/sky130_fd_sc_hs__fah_4.gds deleted file mode 100644 index 3f94ea16697f5413d57c3e4fd6e790959d6fcec0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22438 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 BK`a0O diff --git a/sky130/gds/sky130_fd_sc_hs__fahcin_1.gds b/sky130/gds/sky130_fd_sc_hs__fahcin_1.gds deleted file mode 100644 index c5cf30d69eb7d4d365a5be91810ba4a4b70406b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19264 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 AwEzGB diff --git a/sky130/gds/sky130_fd_sc_hs__fahcon_1.gds b/sky130/gds/sky130_fd_sc_hs__fahcon_1.gds deleted file mode 100644 index ea92dadf1511a37b621003f80ceb4fc574782071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18432 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 diff --git a/sky130/gds/sky130_fd_sc_hs__fill_1.gds b/sky130/gds/sky130_fd_sc_hs__fill_1.gds deleted file mode 100644 index 160da0a6cbe83cb03d2992e0b128ef7edb7bb8ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424 zcmbu9y-Qp{6vfXz_sxpF7Ys;b%@R_ib0LuwK?E^ogGE3zCQ$_Q$OociE4L6oT0{I3 zR0wt!!QRr!ze7kF3mZwfp1CvEo!wOvlWET5&il=|ckX=;22nJNQZ6d|L>G!E;1M2% z&qyLuUHZ8EVR;qk?TAO7Z#{c;yni-SIefggJNE{q_% z*}_t_nhgT^PQauQ)?n^L=s~%s1D7jz;vPlMeOQ(3-3C9}$|oscIaPYdQe`~k-wWT{ z@HZ=tS51#R@0Ib8pBKKYe7#;Dv%D&cvY)mXx5{(*G8ocirv#CrVc5 zPE_{8{9iQnf0uK2K>lSz(;1$@xGMK=;CcQJ%d3)o>v*RUZ|B4Mt^bMlr;0C+P`%Rs zlJ~xLer+D)#h2o=;h%6s*;CH%y$HiFeL2K1{W-pw+>b|#+ji|Bk?;D9(RFkd&ASPH z9+H0(Px4QE@=f^37Jgd%%WeF?=7YnjUtf`w;;}iKK9|eIJ$Dt2{}qMVa2i<6EwY(; U-BitA^Zqu*Cn}CF@K*A;0M})-CjbBd diff --git a/sky130/gds/sky130_fd_sc_hs__fill_2.gds b/sky130/gds/sky130_fd_sc_hs__fill_2.gds deleted file mode 100644 index ed4a9965abe8945ee2e68654d300a3c5d56b16f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1552 zcmb`HzfV*_5XZl7@7^AP_Xs9Lb9ylrP;rT95s)7t!54%OiC1xj!83Lk z_!IORI}2k^N#);RVkw1vHcX)eu9BAS+-*>a`v)`H7y$1_pR#Aye={p8dMhRoM z5k4a^w!ZUxcVl-C7%jw84-W4>{`%?Xz1q>ukFB+*sKou*inWcGd$;aPX4_j?V>5fv z$g=I7dOf=h6bAsC8a#v@HW)>9qyUNJ3s5))RMQogSEYRMQeVE^ZhvN8mDnZ6JC%Gd zU-kYi=NrxDD!!CgJ=6b`cfQfAs`n>e{9EVyo2KIm_nQ7DZwl2U?U;WTPxTG?`HK?xOK`8U9?pMW{EPYd^V@v>9ISLlBvk1~$WQ0> z)7~?5sou~FZ*xugE>K>T)cs)P3cjf*N!~XV_^LHxiA^$A*&)-u{>Zd(8(qj?c zFXUefKhnSd&iTn6A@BMRcsd`cTUF<#dgl54N1iL>zBxoY&R^1D{U_2t`uDGOtI`g_ zCv-HFqy8@&+=smqA%?vg(Ry+%o-V)V_<)4JE73Q~HZf4P%X4(By*!Z@@yUVkPrCR; z@vrvq6Z_YX=6}3HQi*5Q$elxKagP`*TmLBxtD%1rb@LC^tSoeN^Vhte#-q8K<4ZJ^ GBK`nEN5uF5 diff --git a/sky130/gds/sky130_fd_sc_hs__fill_4.gds b/sky130/gds/sky130_fd_sc_hs__fill_4.gds deleted file mode 100644 index 3af1734c461459b51236b86024db62bdb17cb2cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1808 zcmbW2y=xRf7>D1T-I+V$u0#mR=^+-T@<7Fa$U!*c1q&e@_4 zbn|?DqtnUf0Fo+z%MAPkciaF#V>-s4epKGb1rh&-hZ28DP85EN{TcFy!{Gwn^ff?r zzF;hqcC-uL-To)7aMm-F3A$ya6rpYMtF&|hXh`S0_4#C}74><`b7_m7F^i2cwI z@_d*t>-WBE%KF`&5=C6MYbv=u);B%z;#sA5rl*|jLm!_TJhy1EAfF%Bl?R@muD>t2 z(V|jv>Arl9GC#KeWKD9dEl9akS5C@L)+Ej|B9cVX?=dMPaNU*WAy#w>9GG++1K}8sox#tf$x8iubxspAM;au-b!a%{^Gc*NWFa;-h((pT1}RcFDiX z`Hg-4g|}ySmw&v2v~CwxX-zn|7rBI~n)Ck(!fxm6!)! z!6)SLN;907x+c~$cyxUvUK82d!b@^}l%Jyh0sN|X{p~o(OLfhC{eO7z`rDe~C!YL% zHQPV7C*Ie!HLg{Lm9`ZYEChQe8944?XebW;Df1JfFYp zr}~|ac=MBSl9%e5S^m{)Be^*bILmi%T;I2jcxKPUFUk8! z|NY_fqx-0D&2US2O{^#R=gg0%_dj@k{9Q@DG0fxpVZWxHo94dnFX2~CQ#s9pcH%5 S{55Y+zbq&X=7 diff --git a/sky130/gds/sky130_fd_sc_hs__fill_diode_2.gds b/sky130/gds/sky130_fd_sc_hs__fill_diode_2.gds deleted file mode 100644 index 13ea39352eb61907ab2a050947705875fed1abcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2088 zcmbW2&ubGw6vy9Al1*uLr9x4nK}77yh*b|#1WjX#2ccMhv{KNe8cTx#Avx8E;K5%v zuQnHN9>jZ3(v$y!SHY9$!Hal|-}h#oyV-ObbRc{;Z{{=a`{qru<$qr4pLX@XK;8~fZZ6jRGW;X1 ziut7f5xzKUdDYTu%c~-uf_?=k86$CLp5<~gs+Kc7)p5M*+f1zNn|alg|HerFL)U+&;cw)|Pz}PN^H1^cS90es3hC%XozLaPhUJU!kf%S$xBaOA diff --git a/sky130/gds/sky130_fd_sc_hs__fill_diode_4.gds b/sky130/gds/sky130_fd_sc_hs__fill_diode_4.gds deleted file mode 100644 index 6e48c26d798b630d592a2f228fbf51ee99adfbdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2600 zcmb`J&r1|x7{{NPoq2cB*)Wh|Yl(TXco;yDp zFW2LZ`|-*~951h~t;O}#NA(Bs1)`utWXe8GkvZhk2#pLBxVTN^Z4rgH68bf%EBStK zILGh%D890PMSLaKGkt$pa{bQYeG$)l zmJlB5$~+%A=o|S;^o_bQuYcsgL%tFo>dG#E($0TS=1(u#UFZDY34=NIxvu2<>G}2e z#ZmE<{cprqay{*TxB2Aq`J=dsPc1BYkJ?Mgzoh+%r2lriJ;m8ih)UxL%PpxZ`F`53 zCBEcDWyx2Tf4O`|uIKoi)em3E?oaWBwx0Gc_vG)me8=*<%Xf@+I`TVxo)evs=dZN; zj_XRUXXo?hux~JbCFj}sE4%hjXFl=zw%z(I+2ymuUY7QLI{$9>`Y}JuUs-O6uI!rM zto4Hf@1Hx?cjq6Wf8IlOewNY)IzT_}e!72Izw^zQtl#V@S>bh?F=fyCJAA((USUWn zp5IXB`_v@DoV@9TcK>i)x$pkb^*1Hgn^sCL{;r*)+|OKpuqe4?MSUy0XiEZ1>MV_WtYq{_{HaJHJxCo;ylC z_mumdKmXB3gX!}(tN(}}3->fZ=7>*YWR7|ik~!wF9vu%SDsORZQH1x3LW`>nDpkzf z41cZc{5pI#|K>-ptbeV`zhU!7di>$%Cw6DQy`ZQXPAzacF58RzNYzTl8xr1)@P6a^ bAMZc*?#1_mgA3iy<}aS1jws*V9>-JHr}ysb zsf`ZTrmoe-rfRj(@rjAr@c514k=g;GuuK%E0S!>x98ec^wG_Fqi>NTieD4?xN?pn8 z;l><4{2*R*+Yuh>%0_KJHkU<*~rKK;VaQMe5J4dpi{iy zqa!@jm5qGt8@>{K!&mzHPq|O@-E8{@k&C+0mrtL>FWhs4hq}_|BL{sWSBbt+SNi%# z4m{*5;i0bd`FMWe;rUgVs7x2zWG(`{Hu2UAUxES zjePVEPl>+aD}DVp-50O2#}OXt%0@o+4PS}A;VXUpm%GI)e|Ch2y0VdveZyCxZ}`f( z{`<}O*DB{9J>=X;et!ALRfgyI`Qy5h>)G>XjbG{!Us-)3zLM)%zt82btgH<1vwDkY z1D;{abW!R`u4nzj&gUGyl2`0!n4ULfQu2Df&-*04ci6uYbI1ObT=)8zJA5Vjfv>Ea ze_j8)*O%yD$?jSH!ewacYxC{fz$QRIkR)Rn&c>XPIpvr5TD z|H!xNx%ug9$!#8SL@w$|Uw-;pa+^n#k_#XCc0D&g91<^zl;UCk@a=l8ANNY%@vcv&gA@R4uVv-yK-&cD>2f0pS_cKK2!>8kUq&ga~!J%0>Y{9$xUv!2aA zY4St+{;|ZjzJ--O&Cci_>`DrNc5j24JiCxd;U#_2@ zdGFZYH~lZd<9#d|;O}Jpo5pX+?|=3D%-_iRef2)yA9;W2{i~bby7w=W|Gz#u%-+Ae z{u3T4-&5{?Q$W2GZ!Sh?%rKDZMv<>AC_pkLeUb0D)v(`Knu2|SV~ufDp*LgO^9_X zQDX5URY8dc77>-IktmG`v5}}%q5dJD;#agy{6vk^ND!i?n)P|+o#&pjyZ0QL?n!Qb zopy@?(o_7O>NukmL%ocu{7PYYwtO)UOw^m>n8SGJ8}J`2#46Xz%cE z_Dk|ZKO*e$a30SZAJ3>ez<7oiBFNjF>poZDQz+w;26jeJ-iR0jy?s@vC!rsDJZJI- zw0{fY39Q|O@;{stX{TQi`hM{}#`p$LI+y(he4@brq5NHx0~y!gD=a?J+s6uAhx(l; z2fAs@?{UmeV1&7EKIEL3+=}wg5MN++HOh}bA4q@Av&OGX4%eBK>vVVg5*Ozp_9iTKjI41DO}pi?yGkfA|sMuQZ;<+15{XSAiIJ z_ECHS8BdCQ5ou>mi1eEcn13=tTp99RWIg?eh`ThN&Cf%^{^cuPt3J{M1)&7pH|J*caTHWiHwnt z2zyb#I?T^&>7Vl$-3hM98D9Z0&RVgC{9!v0?fdn&o&B|*#JZe^`CM9H3w^CYIk5f( zly{=fzzBP%@pJeWziItMf#|QFKl{GGxzNV>%Clc=Ay4AZqmMw^IUX@v4&PjF@hfQi zILd*Ii?F^pgGII*fgch5^oz&OC)>q18{5Cj$-OYdeH2*3S z8gn;tM6|rZhoowR)0veuwqA0qcqJWg_b1&saT4 zef`%3!apCz!6$wK^?%KoTnFus(5HyAu|1Bm_(~f`5{Q2Kjo0tjCg#Qc-f~NfaGugG z!d}#`o9BL=qvseo?|eLUPKX$K;k-EE{X6ATK^OEoCq$Tw`pdmOK5hNl;`rOguuho! z&i(>_iS?je9G~HThTctK-=JM>ea`6ph!}Pe^~Lz-=FeS})%qB@PQA#y zqJI(gO8*=`^*v%d)N}lvFEIY>Uek*_r>GNQuk_#Sn!ZPjhx(@2t=6}0HND8aM7;=m zssG_g>_x;svNR{-rd_OxpY0eo^*thPZx<`#XFJACy~wy}7pvlLp2XO(POXDEnRm2{ zv+~dO?`Xb%^gS&O{0sAkN1XM2JxhFsmpU*9KF*n3~I^%DoSq7T?b z*h}@%r0MIJKk7;9Xcw#W@l~cvlAP4hE>`K&m8Ro6BmI-q(Jof$8;ecXcr+(qZ?DKd)76)Xrf2?9A5B*4i>jm4&GJSv)w`A2=IFV#0snyz(FG#&Gg`cPl0Zyz&VXTNAV<{$N; zzEnT(u;~VOil$@!Q6K6{^+Qvp>#i3~$NZx{)R*dqCrvl9R5Ts)kNQwQS0Clj6?SvWMezppOLeDzxfkq-M`uUWcYpM_P{sV*S?*Tzhi3G z!e3zgPOBGdJ22bOiO~0(4?o{sylZ3^U>!mF89_dXwPR)%xz5Ai!`K3)1N-&Ao%7v9 zTfPUAjF0c2Vstag$ZwJNEo|50#n>xMJZ zkA!-$c?flQcN6*hKE=9=++Vz>5ZPby9_x>kU$9?%_WSOWSet3|c|2!yFZzUCM14_j z_r>A;YUovHhqGu1dXeu)w2QEp>ND(@=qPd#b0pT^g&crgguPVH{mZ*Go*g1?_x-*W zVK3DWTnOJE#D2iJBJvKGb`kbUee0{H7u%anFT!4`Po9LIFJWEx%rU#gF9f$qPU@0aI{u^zOGs4vws&zU#Of021ZyI7S! zY{$HzUS!_TE>`6a?`^sNd7steA!unAXMX?A*uQK?ztoHLOS@R*zrGeaoKajmk-sZx z7iayxoZ+8&%I|pQpV(Mo`6t3&I{(x+$4uYjBc|uyXhMCZp5vx}k>jRLtQx=j0ph+9 zXU|PJ8w+rj!Y-n|)IZxb+otdFA=C4nE!0=)88`iljGH>KDt`ZccNFIjz6W{!l00{5 z7pu-+wu>?U{(Dr!ynDMiRy}^6+l*i2xy|^+s`H!e7$@~2$NCe?zQ;$p1SF zJdC-cT^uaeXXlzO`)z^HdAnGlZ{q#6wh?Q0puqniCukQpmizC%7-tvGzU~imrmIkf zT||B9`1yA-jz2kAAma9Ru_Aun0rMWPp5HVJvg?y|MUrX84zW>zilzKV^N0|BV~g&Cuhw#S8oI zEXTxuz@>}QS<#=8+W!@G8Arcq%cV1C@09iR&(2Su49!oE(a$UX?4R?~H+RlY-}=?* u>;0R7kALmPE#ZGEgzP`1^`qY6KYhK$e|mbp#p4Yf*}FPqACAg6cK-)?JVX@$ diff --git a/sky130/gds/sky130_fd_sc_hs__ha_2.gds b/sky130/gds/sky130_fd_sc_hs__ha_2.gds deleted file mode 100644 index 16e7ff11cf759f16291aba981aa4194fe2549056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9138 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 diff --git a/sky130/gds/sky130_fd_sc_hs__ha_4.gds b/sky130/gds/sky130_fd_sc_hs__ha_4.gds deleted file mode 100644 index 280e2ae9386702974e5efd90762319ddf7264348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15250 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 diff --git a/sky130/gds/sky130_fd_sc_hs__inv_1.gds b/sky130/gds/sky130_fd_sc_hs__inv_1.gds deleted file mode 100644 index 35a71eeaeab783c4d7ca07a0d0c4cb48ba8621e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4062 zcmbuCONbm*6oyZ|ZolIwO{B*`1kFM+kOUDCMP?==1{{KkF^P$$QKJ}*A~PVwNk9cf zaicqRPWx$G5Yb{`8atD^S@S*d6N4?jB)|*f5SOB zeH?j=m@lm7SYD5=2bw#La|Z=G=fodIjEDX+-k-_)p{GhV&=;P6>T5Bg7ePN3#{G6j z^Bd7~e;5%D{l&2U=pT{VPWYDKVxI(oW_k~{qN`Nzm@wb8^C)9^*#~sGo;1ga;9JCc}AQc z*0Vh2=P}_kcQ(L39N7T>Y#$g$_rotfzm)GM+XqI>7}mef`{^b7yTkRTN72i#QFm4_ zeijK4H)1@@Kj9~P)E^SpCVgI`o_nhO^b_@s*>UxZh*#!!^Xd!IH;&Q$x&=hZj1upatG#7pzb2G)u5quT>w-9By{UBB*Me?8(n zUau|W=k@G~knLMf9}n}7`M8gd-_LL_=F!PHc0beoWA~E{%>O>?H$uDze^{5&$HV+1 ze!Q+;vdySoyl$-a)1&HTnNdCVpZW9g()_Hm{ekx1*f|6jaUpE?B;v zY*3K(a(*MPKjt?w&ZDG$|2$8=g@b2Fc5T5Ho)3&0F+SOU+y7_a^7{qqFuFgG6mcWs zp|9U>^8Fj%hNkw7YM*_h zZ)D$?-&oZ@p2xn?H?nVx8>{-q^Vm1~M)r+yV^#m;d+b|0FQZoqx-Hnhh#N6p+CT17 z`rN-pdW;**ZzF{7BzKG3%HId>%1APCvk@=RtFnddFI;_g-_I{fdoEi#f*6ms-edgh zX3yyl4Xq}hZNblW%fxKGH+a0MGsItFhIOg;+`+y0^66JI;-ikSY9{>lOWwb0%*WFV ztC{qNtKkZm-~2=SNAh2^pVxoK-sKS=PqY8epMHcIwu|ezdq-D)(RT9IG&X*1Op)6? fH;rBUeHy#*@HBSwn@hF%+f>)Rn15n5FqMA++9tHp diff --git a/sky130/gds/sky130_fd_sc_hs__inv_16.gds b/sky130/gds/sky130_fd_sc_hs__inv_16.gds deleted file mode 100644 index 0c560a93f352b92e042cafe5e7e65a83cef94ff3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14252 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 diff --git a/sky130/gds/sky130_fd_sc_hs__inv_4.gds b/sky130/gds/sky130_fd_sc_hs__inv_4.gds deleted file mode 100644 index b2d76c75dcfcd556462df4faa149e4ce5f1ddd9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5284 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 diff --git a/sky130/gds/sky130_fd_sc_hs__maj3_1.gds b/sky130/gds/sky130_fd_sc_hs__maj3_1.gds deleted file mode 100644 index 0cbc3aae65c16e8e7b4420bdd72099176eb06604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7028 zcmbuEd#oK*6~_0Ob7tnednJu{+e(apF>rwvFhr~5_O>8|raS~`pmM2LgxX?kA%PZ? z3RZbkBs@%@$U`8!q9K7l2(+Y8OGqH`AH%CeKwgPf(^w2Kh~@kC+TYo8?>#ftI!XE6 zS!;i5?Z?`CW)3cMNwVC{t0no{uI)x$?hbRGEB@`eNw((FZ?9Xq?keYI*V7XhU4O!9 z&pou~%S)a*=H9L6o$cnO<=S~!w*GrpEjVue_A*REWB+~fl18cpZ2 zUgCb}vVP*m+=`L9bNvbD(%H`SJ}mHcG`t=6;uh!J9^8v)@1C{xB>ypvhaYe+l3qiWk<8a=MJ8Wyu6+*j1=boE-1*Ll>7lsCVu{o@R-2w={Q4gw>96lJKj|)m z@1DqXJ?_y@5$%VK=W33peS*zn>%K_FZ{1??N#<|PJ(_=rktXuUT2GU-8(fpp! z*B&rESz8A^YD-K{#y#?g$XD#o1z|tk#rdA)Q2RUZA6#N~HDcX}_#$e(jt!ZKu%}0v z-}68C`w9FL;rI0*!p{1q-xK!k&rRvK;IDvRi%h?WzMqac38ddWYJSh_aQ{=>2i88o zd>)TE4#aux$3Ec07C#BBuduu#;t%WJQr|zEBb`eSe?x(&7xyIY1M~UjA8-@mLzf3a zUyT1PKmIYz|Gs_ua8}Q9BKnT?} zx9%O#i@!x(asP_2H(xcsC+yiH=J$j@<+&%q-^k4Gi9O}V6PO;0_Nc7^ud(_`0}*Ff ze|^2S7a`K?n0xFGFq&ChnN5z`O&wCP*oNVUF=I%9sZgYht~2zzP%)<-t(_Jajt+}3i{d}rhM#ooDy0lNr$sXp0g zy87Xf)X^?h=~*Yt%lZ+iqg|}hXA4coXE^mFb+n6B`sQ5IHFri*N4r?1=Q=Yl*I%TL zcCkv|*=4%!=1A&j7pwH#r_9U!D^f?hSfzJcQ6G(7O_#kZnvUyFeejp+n{!Rq+$oxl>rZ{~m+D&|nXdhy zXgaPx^}%1N@9Z*Nce7|Zu0Qp`U#jmtW4it-(R5sY>Vto#K78-BuEiMtfqsIlpZcF7 zc`hfn*||*8&r4)|@wq3`&hIl(alv8v{r6GwT?9Zs$@)!}U-a`=Gk*)Dz4Q6V4r)y+5$A8*|O}ft-K;y%pHOdma5EpO5^`7HRMQ%=~12gZT$UoF-n} z8JA?9{^gN%#ybLi3S_@?d?Sg;67>Cfj3rRx0*8&?zn?Ym9?$Q#?Dj~$7t$`mKTN-r z^T##q;61U1Z%i@AdT{Q=#$E7lN6f(5o2Cz>a8v4wuoE>7DIQ}nFm{57j_vH4@nIqV|r#qrG0^F4-pMdW)7 z_2RVmnJN0#pRH|sOC)2_E+STW{uiLbIZ(eMvW{~ifn9{ZRG+Q2@#hCea@@3wRpVzn zj+=UsK*DQ!S`Pc`3A&#db>EkT3`Q_>BYuU z(~Gc|=I`BV^TzLI)(^>fqg||;KelTfZMp&Rz3uJd(bf4m@60Q5-l-R>=AXY~^1Q0u z8QDA@3f*N_aph7qFsc)G=KMF)Ab&T zq>gs6N?-dIbU2Tb`y(@qhjy{*{7tu7-t44E=A~V%%FlC}b<6n@S+}%{RrSkrhWm!+ z&w$uB-Y!<`AD+|H`LkAp&fCSH?;fl}ntgNG1PYTc z6I1l)$F$ze(08x%`ZK2K@pX*R%+wD?!x1pQ^yi*6CI5cwL;t_NY{?Woe%<)*`THYS zkt1C;n&D@r;^_BF-FO@e_amyOjeWn={)F61_3{JA?a#+m|Bt%;@`0+`XK37uL(g-t G;XVOxc2wyA diff --git a/sky130/gds/sky130_fd_sc_hs__maj3_2.gds b/sky130/gds/sky130_fd_sc_hs__maj3_2.gds deleted file mode 100644 index aa4fcad63391fd4875d55211df87cdf661ddf580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7956 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 RwPpTN)i!EU=g6Vq{tJH-r;h*t diff --git a/sky130/gds/sky130_fd_sc_hs__mux2_4.gds b/sky130/gds/sky130_fd_sc_hs__mux2_4.gds deleted file mode 100644 index 81aef7485cca4af6c4ac0992f78cda5093f34c09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12544 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 diff --git a/sky130/gds/sky130_fd_sc_hs__mux2i_4.gds b/sky130/gds/sky130_fd_sc_hs__mux2i_4.gds deleted file mode 100644 index d8f54ee2fe709bc77e91dae556baf294b96dda19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14492 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 z 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nand2_8.gds b/sky130/gds/sky130_fd_sc_hs__nand2_8.gds deleted file mode 100644 index 35c15019be457d245206837c1f82a648c5dbbfeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12224 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 QRI`s&-3QdeYJVgA2O5Y}EC2ui diff --git a/sky130/gds/sky130_fd_sc_hs__nand3_1.gds b/sky130/gds/sky130_fd_sc_hs__nand3_1.gds deleted file mode 100644 index 12297309deab11048d8ab3626ac27ebfe94dfb70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5456 zcmbuDO=w+37>4Kk&AGodm1|2(EH2C{0UL^lMkGm7T2PAB+GAJ6Fej{0`cT*3X<8RIWy zTqVXY^q)*X3;*%EIl_N@M#d-UKeid^Kl)qRN&1gp%1FN)S6Sfy6!VW#@f-e;ClS9no{@gT$HhO%_~=L370+QmA2OflW=|PYeJEq|0*ttnXwTR4 z38(M#>p{9YJ#RUV`HOeBln8AjK7Kuock3HX(J8U!+@*v)ub;@rAM7q zd)Sp|FVvfFpxuhkzZvVN;U0D++VlED&c8knW@%|@lJP60j!b}cHPW8fOa3j^Pc-aT z+amqR<^{1UyXxQe`QO3ygsw)%5A>qE}XSiCzhNssC!9=sQF_^j}r>mFsKIh+bJA5xo-jLjUnW)DC-il4J~@ zLM>odqPU0 zvP{o9Q^)!%siR$4re~e0W8Ib1(XK4hR|Z5^xtNhU+LdK`vw-^IY!K{FqIUO7{e;e5 zQa{l}LrT%Je$MH}Ht6Wryj`gG7 zxA*G(`ObWXch4aDf}B5IO4gt61tsmaD(z&Yf&9*AWP9+Tw39k6xRU?7`92KB;Sh0> z+%LixGt%zfOOBGCdp~2o-Q{)Yx6=4>Uc$MHXT)fG#-8)onHBZ!{1;z`JdPr7oL`mo zv&i`p&KsWG_tJmh!!tOH{_i6vPv%v@^Qp9p$ny~Tcyb*2QNmAQK0MC`(DD4LWIpb^ z>j`_I-rgW};JKc4>74Ij=QzGSub1Bge!ohtk@-%rUO4}bpMbP08_WFn=xZN|PFY8t zs8_;X=s&<&FF+cV<#mZ4pV_CkGx=OUd!y|CXXE1U2gb|vhk`YQH&>O1^c^i^fO zTwi-f^vXKUzVxqzz0iMv=ZVO$-HS-mgOJs z#9D9R+50`mbNEiXvQ<3)_G!_j!#P6d?8*{7_j&pcj^zlQvnxyVVN-PBr#V9B?8*{7 zpL6c%+&7f98otA>guQV6bDi+4!}ZhQC0Rd_a;R9(eS$jfA00yH>`Jf4_QwBH?lX21 z|4*@-1CtngeSm5;29ojNXSXcw`Sm%|7)&M)xc3q4e5dJsztz8HBpyHBxEpV*XT1Jb zc)coP@VB6uHi6Hf%>SzO zKK`A%rKD-`v?T59hIcwoC g)m?MGs;W^Py|x~;%-C9d+tWH@6Tas7LoANX|6rp)kpKVy diff --git a/sky130/gds/sky130_fd_sc_hs__nand3_2.gds b/sky130/gds/sky130_fd_sc_hs__nand3_2.gds deleted file mode 100644 index 4508d3c89afb1f9d822f0e2f69e8ab661a0b2165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6760 zcmb`Ld#Dvv6vp?NGc)IHSGgKjFL9})(hFJ=5kg(B*NhU$G%a5z&BDk;y#HisVPF;& zDN*F3#~+E9WzqvAMD1ZjQ1qe*t^SZpgc9};DUsXv?X}m;oO91iA`KjV=d3l~{?^`m zX7)Z~LgRUNn$Db8IBv?O!xYTrrYrf~RK0M;{YzIbS-r-X_Iz-|lqavd^^;wvuJ7AF z;nnT)=a|kQUE3Lk{SU0UdeX%Deaq_o_tcm7*Xt{ntXwv!evR>q#)LJ`tT*8>&vcs^ zZFys=ON|NI!5b5tf)khHw-R}CQ1T={)G49&hnuMVUfX`VImY(=k!WiG3}aSD7?WRx zHXNDHFOj_EFk`&g_^m|V>ytc5U2bno>T|D1-V(ap^P(rsDd@+?^go8*RMh0ieEtW? zlQw=PChM^MP!6>0?>hE3oQ%(Ad`bzTzThAHc4Ym*GO3@m@jDWP-v3?nBi!k751M85EW&(rKrF z^ki@)exHuX`YKOJeI)brRl+}6-z=GRwboR(#7lmEuc1{arrQzj9Q3s~cm|mvLp5f90t7RyQie zmwNiU{80aPcmJ)&HL?TO>CZ8_{$SO%>miAJs=k10CwKwld?sf27oNwwrW}z^)dzSU znn8J9Ds#Kh7UD|8Tj}56^RIjYeS8h${A0`#`ct?TF-PVDcOJ=j{?VAsdpKXowI%-& z+HmxH@qH`C!7;xJ{XLFz9Q~8XO~=Qv_=nV`M7yo(x9fMbzHt42JyF}W@# z*JqBmU5_0(Uj>YXvhXte>xen(I-+b^Pvm*rZgy}ys|Voq26MSw^;X_KG}ZVt?vu9{SenT52gPF#slLW zaUZ!aTh$^R2ARfgW)s;;DMxSEZ2{E3AhR56S&z_qLKx)zgQ2TV7`o-xL3mvXbsk zePM;@mBmq_S0bM3pF`dJf8{-!;6b#j#8hW5R*E_mH(yZyip$!^F}@A&oX2F znCHAvujITjuFRUh=sAh!qkUe2e9khiL_Br;Dj&*RS9uK$;JF0yT3}p>c&487Po0wU zPQ5Z~{_XP++Ug?dKgoVGuFUE`&*QjL7ZKxbXn>##+6y~UmnDL@(|A5 z9W%TXZ6U5iK6U&``2TFz{p~Ti-(Xyce5Rgtm!Vg(Zt9g;^_RZEvjVl2*T>{Oig9Jr zeyZX5UF3a(eMJ%PC6tvO{6<`fcxwHHa~L=3aSbU$=owcw?FSqD1Jus?L)5Ia`#{8$ zS@rWi;q%AtFC6*YvGN>|HaMg zb?vaRhca9Tf6QM*tc!MSQX*g8B6-WrvR-rFSnI;)aKn5pvVOW=8|)`~d7e_*VFC2R zBruWJAvrRaP@7KeNb0#q1=p3r8jtP3kZ@gsx ztP_u$YG=?p-_2l^{|WSaN2ssrr5@K_k8N-AkoG#Z^4Ml<8+^8ywWin+&Yjuo=CeVM zN}B2!qOU$-^|v+Y@qQBh8LE%^!#>bo_496TsQU~dg=vwha0GF8u#<6ytoQuZ`D}n>|Ia*ee*BqbsUNS diff --git a/sky130/gds/sky130_fd_sc_hs__nand3_4.gds b/sky130/gds/sky130_fd_sc_hs__nand3_4.gds deleted file mode 100644 index 4053249b1ec03474a2345402443ca588e970e468..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10832 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nand3b_1.gds b/sky130/gds/sky130_fd_sc_hs__nand3b_1.gds deleted file mode 100644 index 502e1a94e3989cdb65c8d7f5a6c9ecd899825425..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5770 zcmb`LTZmOv9LCq)XYY0PK9`tkFvgjzBq4Gr#RoAZX2vm#OtdUb(}R~Hb24&@@=~Ow z75ET7R2G#FNznZzlAw^%q8_S;sK*|}mz1!JMG4vWt+oDV?K9)rign=dJNv)(x4!?n z?|qb3alB0RMRE0rs;M4TRadIZi@#MP)+6iJY+Ai(vr^ra^!mYPXWsnz8z*KBAGmhk z%gdLjzBH_zr1j{A&C_R0Yu&T1HM+KS?`W&FarMS^GuE`GE0ttQ>1M1RQ~H8f^{WM4 z6{TuBluEmm%3mmOl2Ymfu7xO9pV)GeU+RR=Cl~tqhfMw5Y8&fky?PUPS%F7!-Gyt% z#zjhHTa*$qo^7z@hR|oXSUnjfxIW^UUgh$4gkLb9>Q>bA9KL@Q2tWN3zK+a8FR}TM zCO)q~>d~R59+3IyFFey5l%kIi_XYDw2W>s+%mR@I+eBZI`6PQh8BdV!@75kEr2OZ2BtpRQ9cgz%)1JDPY= zKi91<>;E!*-$8%O^K34K9&sVcOZ2E8V;Rj8LVLT_Tbg)KA7dWUzcR&>zKjdY{Nt_G zw=zX&{i&zFD-Zf7E39vtdeWD1VVQrj!uqDE(E3tOe^(y#*R!oJ=P3Juq%Y&bGJieW z`s$-X>q|ZTU3t(y>$SewVNd!pE-drUdaZAESZIBzr@t!?`sb&tZ*9LPeHj;)`RAvs zZ*9NO`chASS3cgq+pgc}W4F%ddg|XXpAi>g9|-F8rB>ImpF+<#^{zaqm;I3YANL!x z-$G~hOUHnJ$N7~_ffvsqFnJvLU+h_Z73*Lb_I$_MZuHH1?2nG|G~E9P?s2SqhkCw2 z4vuFzzwCa}ZO?174|3igvi(n1u14Kgcye6K$Iy%U!hHo5yrI!Um@x*=GPi~o+Mw}_6Rld;YWygQE#7z z`rUc<8GLbmMfVr@HpGkzz@l3li_Fll{iHu&n>8D{a4Jc>ZSpk?c3dg=PK6`#A5YYZLR%#DyjEkNZq@ z1X}Dr!fXPr5f>sJ?0??Jyr~y5Z^ngV@?Yil@4MRP+d*YMO-H>AYxy=F?yC>j`$^PO%y(tS^S{FRi~cg_uc6g30s1LhUeph|eCL?+a3-|yt<3VQ zVgHCGqy3ImJXh3kpAh$l>w6FL{65$|?HLbaE$_tFG1`UtaGwzO7wa4F=b>#I+fo0= z^#|BIXyZbZ7xi0=zAOBG*ZF?MKI+h0|AJoL>xA-NC_Ll)-T$a(f}98Z7@oAh+wJJg z|F~(t3b$YK7NWLd|Jmn3mp|XbbU)??pHGF~V=NgL_J{R+kD`w6XKg}f;=&TWS;sg} z_#@;2m6ojacno= z3)@7yO&K5_OK1~7yZ&(JN(aC@A99&aJWN{`EYjs_*-=TcIH3WTG-kCbJ8d88@=w)bI(Iv kTZGyDn}Yhz^Hk?|{}*-bhx1kQ%tF5*a~X9U+)1MT1)HIIV*mgE diff --git a/sky130/gds/sky130_fd_sc_hs__nand3b_2.gds b/sky130/gds/sky130_fd_sc_hs__nand3b_2.gds deleted file mode 100644 index 57dcd9f2502bd91515431e7d869b5a56a38afba5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8264 zcmb`M3y59C8OP_Id(OG%-h1vNVQpCxqf{fP3q~VaO_gMmXwfAk8s8>MUZrBxkf5lE zqC$LtFAzl&E2;Rxx1bpCiD02nN{jYEwKgEOs8NE%iiQ&Z|M})Sb9VQhX-Iov`R#t+ z`Oo*w%r|r9&YILj(M4uvEoyvXT4vZZ%u(iu^6w^(()E|G-neSx^~Maz*0 z+KJ4KChbOM#EkXp#`J$;OfqClZ-0q*8IxUuzm@Qtx5Q8KhdL$n@igE5sBM49{EqGS z&Oy-ozy&3KiocOi>X=VAru&F7O4_@3i{BFZ&O*^!!rwVb{3Lbxqn?bHKQGUd$(eY* z;aS^=zkg+nlK$?i;wNcm-b%DLsDB@^f9)$JPV2=IkzZ?voU0fpaOVEGjX$gPq`cG0Huk)lnzCiS3a*8qa4W4EX{3+_sG5$4t zvtVm$T)OrF75K7bq? zYs>Ncaj-e2D;e7${rlV0E1~^H^g?Sd>leEHMdEKq+~?7E)Pu5fA@r~-VGroh{&pLTj(o zN1G*XeYPj#(yk1}k2Xu(`fR1dr=IbhzcPM&sl-hZPsXKP8HyiYDshuUDRHT1eCMx> zpU#uGTvHr>l5uHQhT^C5ByRetQsPq2_|9J$Kbs+Ov-dn1mv&_+el|nmX74E_F7=G> z{FU*!zp~%0Cp;OKc4a7jbDzX*J)xAi)HA;GSH^FDC~@}#yUxu``) z`WqebleA~(vy%SSKgCbdp3m{5zjvhg$;P9|<4RBZnU@mdI4J)|n1AK>M=^9V^gqa?1S`nzM80`$>%wadHn{o;mG;n`$x(7shuG6Lvoy> zKX_7S){362y^Eifp7AK!x*vW=dwxV7%1P%zdA|>tpV{@X1v<=o4`)eb4gGDrhW3@1 zmp-23{E!vnZ|9$N&2`Q9lrma`T(I7iwAW7(KUu#AzUiLy+mEH&H+X)*Il{GH9{+K7 zUb;-zdy4Vo_!Y!>MW^9!$3`a2D`V7F<4@?9V{)RzQKFr4Jo$b!BKuS41GLS$yvdVw zPP-ERpq}fDdL`$9dL`_Ydan1@Gg!aB^=vP9`++0;m3ppA)_L}cXF6Zjt8!AkPw0Oe z^US))v0e-AMJ>~=Ji9u+c?JF6fM-$9%J@*s59~_VEA!`btR3nLz9ITZIlWrn+k~;g zcdY(lCBBdKK)dpoYJF`4 zU_UI8x3wz+`SUsMH`FP)FVU`qJ(z!UO!6-HZ^^%@9IMvn|B<@uJmtx{qg@%QKjz7C zWBy8x8|})__;H*YUrGMT4DTh{m9SU#zkRaAZSV4AT-ueP_1KMJC5tX&zXAFdPD4cCv7bwj%{R6q4qGH!9( zljBCaGBkdCt~rXm0{VixMc-78R`;Lpb)GYL{!sEpP zq4DE$T=&!!#Jab3)nbve+=t)#4{el`h{Hye^4LI z5q-hGi9S-!3Fxs;aNM|mC^>H2Ka`>I<37c@;r^v$-O#QK)eqlMJa@Hrc=FsuyK>U` zYo$AHZqf5*=N)4|$_CCOtUYDA1#SHl^`v|O?Q?xAVdwdYeoNSUYsGH~JI}rJlZaEE zj};T{>kQ7x*bnV}pQY%SAoWK4W&HxzpE33){UdU}8AJ|B-r<_t(FaGKb)sugZ_16L zL_$EJ?;SP(jER|fRF$EA+p7(&%@qV!&bk?p6=y{Jv9q$JVLTBwtr_b>S=JY(1{)qp- zOn+Q6iAfKwVYKrZ$^7HC&f2-`i`z^-Ga0=EHhyyMN$!&mr^P=*Z9Ta5=G*q>O=)lV zVSctr8`%c5ve{(A=>MuNZLi_{P zyZp~uvS@-H>*2r0Z!N{(-(u3?lpESK{J7COAhp?J)fl}6<4X=gAHSs07aoL~_i2** d!KisNE9yz}c0fJv_Wu`kZ_i{kj%#sjegN6S(RBa- diff --git a/sky130/gds/sky130_fd_sc_hs__nand3b_4.gds b/sky130/gds/sky130_fd_sc_hs__nand3b_4.gds deleted file mode 100644 index d9255240b335160f531002a5b4c2c0cd0c06c0a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10450 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 mFRqBwRNrfkH$J$4@IpT72UG diff --git a/sky130/gds/sky130_fd_sc_hs__nand4_2.gds b/sky130/gds/sky130_fd_sc_hs__nand4_2.gds deleted file mode 100644 index f27ef145e475ffc10c1cb0f287a4945e702b6ef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9054 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

      iqrn$Nc-9`qNqXaaM0vU!IZPss7FK zw^Q+XX~;wATA#13TD0FP)Av1VXy-H?hUhcPx9ZQ%`*#NY8~m5*aG&^6Wcf15zN+;l zXUAr1=T!Tpju*baLDzMP`lI?dd$-&1oQf}{w|bqfe*9GW@ksi?zECIMGYoerpOb#g zOXrln_4sGS?-Q&>)a8UPS$$wVubor*R{d>3KiGbM-s1gn)O?ZN{9E+CFVE@w`kYJd z&-*{>=^*oppTIZm_hKB2`+p#eKWjgJ@3&J&YptK{56t_|K7i^ftz~*1DEN}rBI3?f z?e*+qK*#=ug3^V!Gofc620GrK6_hT-oe4erNYJsrq@Z*m?o8;}2Z@gTkp-m-ac4r$ zK16ivZ!9QXh&vN{z6VFg{=|aPg}5`JXCDN*u*cRZU5GmqdiG(U=lk}8(uKG)p=Tc( zI`+2}lrF@b2|fGp(6K+SpmZVbOz8PO2p!)C6_hT-oe4erAj?ncx?34pxlW%a6n84$ z_WGe6zUT|eH^iL@fA(RaV}Djb=|bF@(6f&W9sA1)N*ChJgr0qH=-3}uP`VIzCiLv% zL&yHUg3^V!GuQX2iPofxv+6ki|D!t5kyWzlwB7_~eT~XlCvRKv#D#ykE9+}k)?Asd zfPLH({r9P=|5p+_ANldl3ddW0)bXYsQq$^ z>aC-HN9sO3K`dX*9;xN42M!*OI{e>&Fz&U>7={P^*x!yDaY_q=xV@pv~* zarN2DsM^fn@u*iEJRbGj3tG1anCDk4qvxn?rY=W4RH%Pq7HuAW8FGoGL{dm+9 NHy^3i<9xZC{SOIxj;sIx diff --git a/sky130/gds/sky130_fd_sc_hs__nand4b_1.gds b/sky130/gds/sky130_fd_sc_hs__nand4b_1.gds deleted file mode 100644 index 5d8e27eaeb6f18755a10e709023d5bbebbaa32f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6140 zcmbuDYp7IJ6vy|RIp@ronKO2+!MJ*{8)Xq1Diu*mU9VSq7?x#PN>1KH62(eCl&`+o z(@6SON>nKJAnQX92@;{~Lqha`poAd8PZdceJtS`b|6Y5|J~MOA(d@vzzd384|6XhD zwf8;`6PqBo%M6r)$`7Vy`c1`LYzDKxO&Y}O*N$#nwQ;jC&2n_zyeF?-_{shg*NhyT z`O@y?OUyu&ubmplo7QcfeZ{QSn$@jM_qFcd)M{;5wPE#@qpjJ-go!b6BQV=dJRvYM z%#6OWG3Jo`rK6rvQ+_LPO*ql(hpoP8)>B`97@bZqruKb?$8r88&K=WpaX!}=rL|w~ z+Cg&y?H_rDA4|VV^go{eZS-GVA%3eDWC*|2KIxyN-(-s?{U__B-4gL9NRWAuj3?Re z$vEgonG?@W##6ao`k@c@XUX4RyWb$=iHAJxH7HP<&_yS4?nuA!dE%dBeDQ0ZY^Psk zPJFgr(M95iwWU9j@q~|h(jGn_?Usn6{0+_>=_h`@{VJi)tyj4s{RH1;2!Fv* z@kiGF#`#sAj3>CnwUdaW^r0u?2_BMo$kGAC3qQ)P@mPrt0@HN!A7RJajA;ydHV(sx zLy7imK3lB5&+F~AgZwZ37}U-lN`!`KrR#5~Tc0*Wr^FhyhZ6Rzex8eeF6Uc19cyJ5 z@}1^cdjz>-jFgpGa-9;_=lAz40$mFCk9!8tm)Bv89ZMV0AFfm4`fPvq*!XmRF=Jz6 z!^}@9#h)Un;^v+<4m&-(S~85{lZu+({@L@1g0^ON;&^5>t<8zs8U>K9vmc-H#) z+5Cg8===kjf68bz<_hde*t7mS^da|E=%dJ!I@*;*`eX|Bz8A4yAMs3X#5wFrwCDPd z=ZIgs=OGS~erZ>p&OhU)e9H2-oHt5nb>3K7 zdvE@_K6hg+zlrs*z_YOoeZa0nd#;{!rk?wck~-RzMS9kmI@VuF9qq~@J?lgr>!zfR zc4d*Cb)t^-Q&LB}vPfS&CA!)^PwHq_7U}E9M3?UHq>grFk>2b^ecxdHl&IaEQa_=! z7t~L5_KY@o}Z-SU>7rd#*m2BD&;=Qgo~z z^{zcvUp*zd+CHV|SU>7rd#=8IOmyiErRZ2c>Ro%UzG>|9Vi_BIWdQ33q=iBhQ*%T>u6V^J=cGPIbB(gJjXnfNjQgHiS|N$wJ!QL-xYmTSufVtUKhQxzC`p& z*mM1tb|KF{@pr9f`4x->>`Juf>gx-TXNr0CONQ^^oOWeetgpQzdS#vS6M7}=x&F(m zWZXlHA?rYL+-X-9jX$sBxKr0A#@*VL1>;}3S^SoM_oQFil|}w}UG+I!551D#Mrc>U zo|}Ia^Okw@{-mT|+LcBAc^&hnzD?w9?aG4uc^&5+^-9h=+LcA~&+bPDun%$Xcf=Pl zyH6=$&&{9u@}TJ3{8aR1jgE9i&sDq3JuO z9$ft6VnNyMZ*Yp zBK|t`h@>l?9)0?R)!){o$NL}h>D9OMVGi`K`enCw_&;O4i~oj2BOQ9Yzn|WJ@Hyt! zIgEc^Yf)$ZXQb!180h2v7!PjQ(K{n`@}QkzP-DCJ&uWgH_?~|jYWfzn)~$kGLh~;m Cs-3d{ diff --git a/sky130/gds/sky130_fd_sc_hs__nand4b_2.gds b/sky130/gds/sky130_fd_sc_hs__nand4b_2.gds deleted file mode 100644 index 1600d98d3dcd37f4a136408468591bd774b840f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10308 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nand4b_4.gds b/sky130/gds/sky130_fd_sc_hs__nand4b_4.gds deleted file mode 100644 index 78264ddbce70487a847bc10aed4a111102f98d00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14142 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nand4bb_1.gds b/sky130/gds/sky130_fd_sc_hs__nand4bb_1.gds deleted file mode 100644 index b9603fdab5db8c3b25f78e6cc43aa91d7dbc5985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7662 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 E2e^L^rT_o{ diff --git a/sky130/gds/sky130_fd_sc_hs__nand4bb_4.gds b/sky130/gds/sky130_fd_sc_hs__nand4bb_4.gds deleted file mode 100644 index 405dce249b1486b512069f01831145e0531cde72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16040 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nor2_2.gds b/sky130/gds/sky130_fd_sc_hs__nor2_2.gds deleted file mode 100644 index 629b72bc175850bf87fa0b7c3e0992b910b523ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5380 zcmbuDU5Hgx6vx*+U-#UZJ2u6|xXvIwHptruY1nDGv_pn2QI&J*WUlV)?Rz< zbN0QGND$mBgO#9qR(hlcS%il{qNcKN^|HR&jLn4hZzHQyhYsP-~@chlACx+gh z+O<^%<6`Y#l1x5+Xw{7?TMzAPO+L_iWU|$I^1#IE)@qR`6-oL6c}9{&fvk`f{h^4Q z)KB_u#<-#PM)ZlU&h#Tr-;kfEPj_I@4ICQ)fiYxyuN9 zUcas*{uhyp39RL-8Kdox!)`=-vHnx6^-8SonT)-!Ko7eS?RovU^Kbh>W@cta7{5{T z$O$m7C>pls^*a9s^QRj2>shM($-Yx+H+JQ}<>!9~>&>m(`}707XY?6z@hj$U{26VR z@!eDY@ayCWT|U0iD_oyhddBAJ!f172?5vN!oPQ~(_V8e+q+t zjeKs%81I8e*o|n<`|r>Phf!B=VgE17m~O;=h24nuQhlvo^=%>^>TAaSVtqP**zs&h zPiN#af_5X?3;nZSh>f+d_x@fo2*$ef_TGb`fM%5*2jph1uKy~S9qw2VRjNi8x`e&Z%$94Z0`}i(} z-3WW3o_V5<`^QKf?Zz@a^F&=7XQYmHW0{_LqMq+$BXzVJ%k<0>b*z6Qb+jAj)Hh_m zJ8!Z6QGf1Y-QgVI>JQ}pt9+A@_N*>&{}|@|K}NQ_=dh!V>o`0A4RP-m`eod_7%%lk z+LPaXUchuc{NbHqG+n{`@czS~m`8L}=V7#SjuG~`;=6_VU>wiYL1ho#+2QASmwHzA z!2U4C_OyQBT;sX<^4!OB9?5g6oma{DIeb5xv2sG&jiv+V8sDvFbO7gyorvl6jEsx> z!C1$<;wJLySv`Wb_we!T#d|*e8+y;=ALJ0@8Zmy}zn;JS^DJ2f?Q6Pj#v0G8up417 z)%Sd)dSmZa)f-_i)HBX1&b*wTFlruoM#k;d#j`B_ z>IIEEJ(iJi({3z_pZyp&^=%?znE$qn_-^6CIBV~7?wwGEcKbtNxz+CdEeyj_=!Lh2H`V_R<92!Yj$4l0eB`bW7CXhId%k?h z`+xQ5sdw!=ap8AXue&NN7tQW+SswlPT^GH5$I3@;TRD2`%14i`tbFp$BRf|v4x!r* zp`5hC-Jx7)hwWketP?_b#@@3xCl-tLw^PS-wu z@{u}baLD{fL9NQ1g_2zZr)M@Mf!RU9-*ndxb{DW6@ z@}FxzdnB>AP5YnXPUY+Euk*vId9D44c*LDKzkSTS&bCB6;?A7kJ!D={B;pZw=KOM( zdF)v_F7CT{#GN^R^n!Wge5>F2eyO!N zs@8j?uASFyWX#vE{{~-cZ{vRViq4_eq~eDC&g#ean^m3vF|F_YPKj6Rt^ONhyx#sg zzkSTS&Nioc)DM1@Z}hu|%qt3~dDIVnm2dRRUFMZ9I?bbg@T+{I-`{Fp|9Pi*{jJUz zZ}bPRnm2sJX&&pB_N#oOKYGEu@o}el)GvOOZ}cZmnYVDe(>&@IzsfiI(^d0k`<>=d zzxY+Y(Wg$v-=}^OC)dhV+^Kw{Po3bi|2Xl8J99pDg2(>j#3Sy^`P2y>`;QZkxHIQd zCwTqm6Y+>Ub3S!~&;IYkBks)k)CnH@pA(O`Gv`w$c+uvNDi{Y^K&&DMyjt8G{LB?DDII%z0=YjfEk$mSu%R}OAT_-1bUJdi}3)<&< z(C`O(>-p2!yG4E2rn#s{eBn;Z!}5e3?<~Hk&(CR%RP26JpY^x1b)(vOr{=n1=e;_| zgX(+5)>Z2F=asL>ymGv=`!VaMQ~i0Z`LyrHcU!wXjg9sp-;eYydQQa~{n69r&2CM^ zC+=+UA7?&C7wN5M`~KGxnJ4PbIeJ)Q)%l#vbLSPCZ%Dk@lSsaI%<^!oc4lhF*<03n zSW>YwlX{?EPQ~lvx8Db<`}ODxcHH=a8ueW|#+~E5Km3W>m+u_uy5l<)Z)`u- z_w|}9)qTI>fbX)Zd#B=AfA~G~og>v1zEkl=zk8YH@vyG_KN9=r=(FNZ<+J`^Wd58_ znm=%k@;?2heJA~|$I)+mC;cYw%=Lft4!K%?qmzm41NyAEQ~Ad0Kl!wI3vW!s zBks)kQ|%M9KRZ7WkGM1E_r4+T51Q*s6M5Dl?o__9|KTt4p3wWAME(95h&z>U^cg3= z?J$04zh~ojDxUR+h52*p{=<2>4@DNue($$dcYXSy`h(ORac8dnIF7o*oAXKYS-(}j zvH#?$JA5Z~N8FjKzrnpW@57ym%sX*sZvHur-}>;K-Sf^!8u z6?ZD%=y%^{UiXiQc*LDKzxca(<^73x#GN^RdWp^Z^skA`J8@@r{=cegrTQJ}cqer` zP~4fTUyh@0@#j?C#<(+6zdW( zC@;pH8NWR-ul=(c<;A!&~;of)6!1bm)9=9CxX z&Wz7K*=cL-YX6+`aoayT&UW+lW1X=7vwocH`*B@W%r0U z;>UfVV$P5EIqe_p|Lh}>bxYitUBBGtr=6v=E_I>t` zIaO0J?#w)Ya2)p?d?)uE;?CUthk5G%$mY#CIArtZRJ?Kjv@o9b-4KE=hHHLWv$ilh8+&?cqpgREZa4f7 D^$(=D diff --git a/sky130/gds/sky130_fd_sc_hs__nor2_8.gds b/sky130/gds/sky130_fd_sc_hs__nor2_8.gds deleted file mode 100644 index 4897c46f438c3d54a1756f4e8d40ac080aef006d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12336 zcmbuFdyHLG6^GB<_no=(>bz&}%v7ZiLxBn!AXRKj3q-J?yrC%*1XKjkv?in!R3t?( zA|{FmMHFL$@c|M=Ns6Wk7T<(_G?@Aa38^uGC?W{4G5GuTI_vH`)1ED%lQiF*wf1-R zKKtyw&N;V})v{9QlC0fRsz0CgW>Z-`J1Se={W)uuYS&%!p{-YJ-JWHmPDF zryhFg)b)>_@U2~!U68e_#csP++ji~tcb&9q;lo!gY`b#dquUl1uK&c=6Bka&vPvV% zYW=0`=BzeQ%2sA8hss%&{lfmuzdf=#YM-5IQyGr_y5NtNzKB0~jShN1yezV{EXxLd znPpD$1CLog@aI|9f4Y8mD&PNZ%R{`@1CjWxyDT3lukRM~1C{UFYI%s?`|Dc2W6?E->vNe)-#x#LHi?e4zZ&`Q`^IUs`W@h~M*YB!15~EgyJ{ zKL1Mpa%L~-{I+P#uJlKjALEDz~7tUKp{ z!>-T!S)X%*Htsp;oCoCmW}B>Ab`mWTM0_e7GPyxsB;f8ymx@)OTn9^#KPk2%SYKV^A{KfWq5m$jJE?6GokIYAs9~rVd#9ww}B>836S{~vL9~()2xNUieKXh9p z`Jo#u5AlbzHk_=VA+335+-b z*Lx1EAKLK~_^N%*oEmypy5We7A4sKg#@> zL%Zb~ud{!z#hr?G`wRK`cdl>kJM<$zXXR z`(Najc9>UQ;WV$LdEq#DzR<61Hm_QBnpfHE4Dmw0w%WYf0jGKFANtSpg??kkyv9DK zdF&tjJYVQH51QAz+i4#A2S3jj`hEM&YwdKJ$Ns_3^M!u@9`gpScACfj!O!!B{@^b2 zhBi3O8{Fj#@j`!ihk46ZIL%}I(|?{X^hY+EH(GU?H?r9o;)VX$YV*bpIL#Yd?M(X< zGv-a~bDB3X<4pUL2hE$>?KE%lpfl}H?>BE|r_;RY{m!)C-ecbE)lT!MYs`P1FPy)* zUFOYiaGE!_%NgQ@K6Rq?L+VFl|HX0@cPd}#Qz!7ts-I3g;?9&$oxrPBBk_nkQ$BS9 zpZl*9kGM1CQz!7a|2pxAJ5xS&0+0Kz6OXtv~BGv!k! z@P;--;t_YIeCh-~_fIDtac9b>PT-AJBk_nkQ$BS9f9yac9&u;Nr%vEc?2E)B?o9dA z34Gq8op{8ZDW5ulH?uPmkGM1CQz!6wesbawccy&m1m66HNIc@s!}_Dy?|FX=&p&$p z2tTS)c6vNbkr_-X8{Px&}Fkx1O*( zB;NQ^B>DP!%frh3c08xggLt_4dN1=e_YT$mOH~hcMAqB3j-BKu_F5hiAOBY*`O&qO zhxG?kPxbwcll;)#mWRZv>etEj$hK)-bM`SO`aa7^yUKQJ4~gSDS)cX)+B${A8?Qx@ z@B6XkA$iuallmWM6P%lyY9IbY_0^|(kp;?9&`{i}I3eP>1g z5RbSsU!& zW5zu{8_BqdJ5%GQ9plFDP~#49XJY)cW8C;o#!cLr8b8lr>^GjzoMC?`?o_<+{PCN| zo8RHH_I%fL9-sCZH~l*qH^+6R#^3*t`q%fL1Dm?|qVAK#o$HGGryc#`JL#9WGu40d zpVn_L^Pq7As^1WICi`Belb*lZk ze>$mq#GR@7M?2~seut`iA?{4nKiV;Fd?({3?o5q;>SnpRZ%rQ)$$g8sGj;!>UHOyd zJ1f)XI~6aS|FOHRU!F%92c%!(&Q$+{I#r$@1~msAzOLViJ2w{hU;nE0+c+(feu+C% z{nL)~#&>ew#GR@0pQziqnRqmkbwk{lT0gX7-Qahqbra&w#QLEf>jvM+x*_gNt)Jn$ zH0~{W?>IHGA(yyQ`NHc@yWXn#9X?_{?-_Z%(D&!$?&oXjCvj)0e$tM*iQnO~=5znf z^U401H+(1ahUZMp-=zNjf%%)-7RkI3cc$i#cFY@ohnlw#cUFt%f8B zHGi~Y-1tuVCGJf1-{$(=r1i)3%UL>F>yPV~Q}M$67ur2zeko`9M)RGDC;iG%=6CqC z`Qh&uSO-TH``mM?UsDaxy~bHvqu&*GDqh%s?}B-K%}6}r&Xmt{HvRJa?ZhMQO!@uV zt9bpo|2gr9J5zpL&xv>qJwH0}h&xk0&pG9Bd+zCQul7H2=Xmk_vCp(V!@hH}Zizcn z>z93o$NqET5qGA1_8A`g&xuFenezFbgnh&JCQkMZac64(@I4J4-`_a#h&xk$dAWIf ze}oV5h&xk$xX)cJH}IVz*Wui9IlMB=)TA(y`3il575^W(~XijkjtKKjS06G{0iHp;Ri_{{Unr B#u5Mk diff --git a/sky130/gds/sky130_fd_sc_hs__nor2b_1.gds b/sky130/gds/sky130_fd_sc_hs__nor2b_1.gds deleted file mode 100644 index c5b8bc4f63238a09a87dfce07eacdbe6a7591441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4954 zcmbuDU5Hgx6vx*+AN!p9F*?Oyj5A0@LexNG5fLMylaW+drfH2eHzzA4vzUR7fECq7R7a|KIDZd(NG?=PKiY%kSK^_kXRm z*WPEJeXlqPf;(lf5+pxKP5LE~OXR}hy)**1bH~Kw*2z60ePMjv>I2u@{MnnQuU&KO ziq~ewHp*aJt{rr4>Y+U=t{QGWu&p_DUvv9Zv$^Y$$tx$CDMDaXx%~my`DBb8YuT+^DYc zNyd$S&MBwWuMzrA@%J)*auj|h!HWt+yaYKgF3Eh{-kh|%hqaxIFU9?jIT<%W{fum9 z93$ct^BK?P>lWryy;r2?1hlw}jO}j4$M_uleS_~t*r{WCrZ4(`-23m%)|2=rcy|A@?saKI2yy-(UD{ggxG&?Vhl6UfE8< zPchz_bDYn4dgkiakeqXHv|#=9ZR4MT^N&&A8*;|m z5D|7G+Kchq^eOh&(vwEjv3}HN?eq10;@{WdE9ir>6UqAXGP3^M7mc*@oMJQ` z*vY>?A0@BDA@U%@%Mk0MoV5FW*HiQN?7WAGO8fZfRa z1Nbzue+BbxtR2+2M#S%wpMT#b8<4{wK42a1+bZ@TWB4_E{)0FfE907@q9h~c@_1HF(<4m$vU>3XWQ$k=lN{EOR$D`u1T@BTKoa|({3DYi{GY?9BOq0 z@pzWVh~GOxyAk$c{%v~B4|SYRBXzVJ&!i6@RlPAIeCoO9Q*W%*RBwdc>+xFR{|Ot!E#dzO?t%)of48)P zYBdJpRhREyc5MAGPf24i9vy>?SHti5*?qsWzb4xJt@8dx=K1S?k=IM=gY}VVN&DTV zb)!g^=l?7p)gzNR`OMQdp7HwI=IC*L#CYcGTjSvv7~k}pZ*Pl#*7_{}8`rIA)8qVq z=J@`t-4SiM+MgzfkCLnEk&ihf{7QAW@PW1SQajQZEI{^B-h(KsIJYY;ViSK-=`^%V9>JtXagT?qs9 zn1}UK78c07O3a&H|K+Z~Z2Xof#t|)#_ro;8Q%i747s@+;ZN)9Zap`# z9=q>PBLAPDSH6SmdvNVoYDaDVV!a$`=S%5-jJ3EOZ{>^V?Jseygq?Bdck$Bs%s$Qj z7^P=!jKi0u_N5Z3r22E%#y8pht$nG)v}yf(tM^Y?e|5V4XfoEd1LyTXis&zES9UbT zZ_<~Ki>|UKMd++unWOhMimo^{Md++unWL{B!s5J&{@XJm%lhK=5!o!f06am^EiO{pGCi4qlEA#ya$xlo{rz7_cn^I zI8`Y+t{>-d{!G2UM07!*6rI0BY3-T%aHiYYDRUp*wcc(YP;>>ui#KU2?ril68HC2Uy)E$mA8Gxgjj>e>HF>S$Ny z>A6qT1wlgUXjkUxxlh#d8AwST?aDko_lY{*Ka|wbuFTVOpQz*gLrER&$~-;yi8`Kt zC3Unb$JE!%cKiL#^N;gqU)b;B*ZAaE9KyPu3!5YDrMJaT7AGK2+&h%EUsi~}3Kp-G zoRsw2?*~hbYdN|d;vB2kMN*)dS!Ki=#;Q$>Umzu-O%n%aTuRzS9a&?8JBt`<5I88i|;*v zee}>D7pC|e&MECmFFQWRl^2R$Suvtl!k$?_^~{^`mCT!VWnTV#=H|W!_6HaDJlK zQap%j+Li6udjA5fJ=g2A6o+t4yK+Ldp7&S#em%wXXYpt6Km7dd3iNo+5aT_o_1wk|8pGgbJQs-b#)2nLqXHTk4hUTiTU*{mXlQ z@F>O)Ck(rA4Z9Nl%=rEX(ADtnPZ70SyR!NFyy^SX>qVSa!m)jk~dZ#qx|TpW8zHE4*pGE<4}MQS-I!R diff --git a/sky130/gds/sky130_fd_sc_hs__nor2b_4.gds b/sky130/gds/sky130_fd_sc_hs__nor2b_4.gds deleted file mode 100644 index 53743cee91e1699175dfee102d51deb92a6855c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8586 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nor3_2.gds b/sky130/gds/sky130_fd_sc_hs__nor3_2.gds deleted file mode 100644 index d5d0e29029ce3ccfd3872243f2a0d005be974353..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7010 zcmbuEYlu{37{}i^x0y3@*0cs=Rbrte!UZi+GbwakQz|0!mWr-7ENi>%24yNGq+RfX z5Ph&Ux~K?7rgTxlOe!OSF3<&1sURf6K3EVzez5=lecorznb|!j(Sh-|=XuZneJ=0q zoY6$a^X@TYN?!R_Q#I|TY_2gK*}qNVMZN1*^{wn%Z%o|}Z<+D@l-obsdvQ>4?WyBvF8S3f{HOwn`bteXqaa@P3Lgm z7;{v<$*PoLUH(?$o?t|(@3Q*3*+_kI2%QcC@ppqC8dKYhYvpNN_u<+xx!joQDQFyN zuYM`*me=C`2XXBfd@6pF@H13Arx;Idw=w>A=x&60RYw$raNXFQHDzF@Za z32scuc>Fgc9+L6+FJ}0QG2T2}E79(COFKz@X@5%UORq}1_@kvPe-#) z;!q-vY`)!>INpQw%$0fbW2y5@iBL21?GNkUHRsPZ}2bC`^q`R`T%1||4Qzm^sj`y(0|k^`Ua5?^^vkOUtc>Z zc_-MXeL|c4blg-UiY6V^dN`yRt-9)hy9{Y$Cmw0#$WfF0rdYS>#u}x0louDYtQ;`(t8_3=Z{s2j`_16 z*Pg2nmWnP6m7)ulDy=*fxg zxBO7Y5AWysqoh5)PTI+M1)eEzMk-a8(|@n@FY}81+x2*FO78`X+vgZ-N48hiN;?_c z4_`RTm29`?qoww1Ie326%{Kb?;IF(&Sj985e-O2Hj1FVouEtn9^1O-g?4=AwL3;%L z9ZSolU1`rNyhABzH~r|-QT>8L#fRr5#IgkUPezS*rL^xyuq)9%l-`aX-@^htE0Wyr z`P{GM^K#>T!M#5;-Ukn*I_QV$-^S-Hll%OyQ}TU=c4dyfm-&TPOZ{svrQ|yx=Z=!~ z57whU$J%1l0(DhZ5~-__@3QPynNwd|pYkNksrNCDzD-%%kGh{h|Bmc8#I=%k>XguD z>m%>i?)<8~gL``s3+kb)jD!|;CG3Uz80Rka4ZbJ(SXnF9SNDltS(`6zIE1l_}|$ zc4d)&zEe>jK9Q0-`>y3!q&J_)xR2 z%1T-CSHhkA&aZ&BYM_AP5y7VKZVkNXz&O72^ZrYX2@83=5ALm)T0{$@nlsq@=ymW*;*S|ey zFn@XeaQ>2;{_H1_XK4F(wLNnG zRbZoWy-l~hO&io(`wo6yHnxXoJ9^k)D(%t2JG-#BM&R3|M;tBD4ALjhS^Zrtdi)xI zYzFHa*)Rk8SN)>9oBUs}-o-!r&h92Xehv74|MnNq!D|1NOHqfHU5Yx| ke6i{TJBerWo^cU*Q!SCVjQIss&HF~xGo5c7%RylN11Vt~!2kdN diff --git a/sky130/gds/sky130_fd_sc_hs__nor3_4.gds b/sky130/gds/sky130_fd_sc_hs__nor3_4.gds deleted file mode 100644 index 7dc5af00a097993fc19c6fb95fdef19b825169e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10124 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nor3b_2.gds b/sky130/gds/sky130_fd_sc_hs__nor3b_2.gds deleted file mode 100644 index 4d869b5687eb4890b1914b97eeec13bb8b6889c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8854 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nor3b_4.gds b/sky130/gds/sky130_fd_sc_hs__nor3b_4.gds deleted file mode 100644 index 408e9c6cc3f91906d90eb7424656ba61079178e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11926 zcmbuFeT-aH8OG1f&fNLl*^k+sotbS_powCYDx#R8wxtC`tp)kARTc_WxtXCt`AJuET~~HTxYuX@c8x-E@uxO#J$LKn&b5b2?_K@X zcYWaDA3Xc+wY!eGb;rij+)OFoJCh{aF1q|}N3WRu#QC$^&YQhp+wAP8FWq|d=Gk|+ zV#T?nS#VdmWTfDhyXB+9&bdAIyJSsZscnCYIHow}2L3hP-yXV{{>l_ix*seDHpZPR zf7UsX@$zPidtQ&ftN0ZWFTG@OlD^XUf%KP7Pvazf#S=3`ym+j|N&1Js7fAo`w=C`n ze__u2o`@GNvp7lr&=Z054?Sja(mjjgKN(m$0q4IFeN4%C@vRmosh1uPWIVaR;w0nc zs{90K>NPq3`7Wag|`X}>yB3^yO;w1gmqXX%$9+Aeu z(i`#lbAilTt!DWn8LuA}$asC1#Yx7S$hXLN^G=JC)JGl)WSn^yk^kK5Gku2jbDHxN z{U$k{&QAlWcQ9WE9C2>y+xRRZJ~d}?lK#nO0_mH4!s4FrwI4UXC*th~El$$keoG+z zZO$JN{)tiZdqSTWvN%cq_(g&AjdT8p@Q?n_{3P=K&6{%0Gu{cS6@`6Cd zC)4wgjCatU$av>D^OL17AkWCVh<+_{ecb(AKQrfAzh_Pjtf2<=@5dZU$#M06WO2_Y zoa=oTpGCxb*IS&VuZv%i{_ay2Crcagc|#!k-^F?mIj))GZG2>Ma@tRE{&>!|dhC2X zUW(H+AHYBO5tA!XzkZJMhjC*nLW{ptC$`MkonKbqc8 ze9Lwm|K#xwYv2Ef7}^+qD>xG0qr_4A-o>W^sL|V+2-{yufJ}4?D(Z%^8wRE#Iyd{G@pa{l-$O4;7?in zjpbv&pJ2Tu7>|f}@1yuELhnCnaZl)+7mSlQZ?^rluW>#cta&Knv|0Zt-d{Xq|MA)JSNh1$ay$?0&F~NSOkG?)ul;%c=>zE8eVETX1Nm%4 zT|_+F|9O75!`dBMmm%8qx)^D{u-$ya%QA$|>te)T++@B|DMR?YE=K&xO7pP>GmoC| zd0mY7d;2VJ{kcHqjk>rXe>VU8`s0klTB~#3iI6n!JiVUH{{lbmvkU9tzjN!U?+(%H+4kr83){^%yi7D7uOH8o#&i9}P39|=MDy|b(Vxb1 z{mDx6CHqD5@%qu9#&i9ZzWFM9Me}j}(4WS0{nZ2JtL+rcS3MwlJ=b5~XTHXqXukSB zG45~fHs8n=(R|I_V%*=_VZPCIqWM}o#JGQKyZOeKiRK&IF2?;6o6OfPiRPQwB*y)d zE6q2#Uo_w3N-^&5^v&1VE1Iv<7vuiv1Lo`Q6wSx_$@!DUbFY7IpZWT8qWM@q=uhLh z{+Zq8Te3wo-^^~&>$!fe^9G(>S--{Rneajvq38O!&goe~R=`7h`^|bNXsK1L>nK#{698^f%@L>7y>j{9Nbsk8BB~ zkGdH1bDh&ax-O7D>SD~#bx!~IvOxN%i!ndfIsNTYAbr%un4jyM{>lA;^idaMey(%+ zJ9`7^qb|n$T<7%j`AMXYx)}3wozutX2a!JNV$9EVPT!I(f%H)q7xlM?8r;wL=MUWf z{SWGm+lJqi#S2jveu1@^l6tr=W6ht0b&GL}j90K96^D<+I=Bw;l+^3k7mL&z|FAeo zy@h>`Sa=xo67SPQ>Jyh*oGjdK*I8t|^Jj~b!`SP04-aJAKi_*=y-de{aD8jLJ1sw! zSDe-7lYZuv^m)hl#7e{V z^9Nj{|8{-L|3!OKs1Mf!mS^zylh~i8EPfI3zv9}8J>>Byd`>xZwyiI5_%rC&UgR|; zb*^`jI?pFkZ{q!`IQ)Bz;VHyZQm?JHI7z*HQy}BXhb>O>x(?(0n8-Naw~EE@z>jf@ z82=*qaehBPb{39%2>l27KCSy;ApO(Ki;RA;@>} zy)OmUu0@^t20SSlUvizrN#;Lof3g1g_0)L)HQ+A1ul!kHVuSMpbyj4*SZBpL-;G=jf6B^p81LceUrOrb7cEZm z8nRy^+Rygi{y!$&?@hl6xkA3Cf0rT7>vi#@eE-xj=qs+z)ZYT}|5c80k@bzb2tDd&`}B)!mwqwU{`7q|PrBISbG~?D z-g;eZL<5qFt|xk@k5U+wH(FvR&$8to_L%@^%jH z2bcpQ{||+_2tBv|V^`xi@r)P+Ju-C=)`TchfTHc2)31r@>i?RIk zIOd&xk$I;s#`52M(%K#2^BU$6$#$uWvG#c!+oexryVS*4`~Eo}?eh7b?UQVmx)^KU z?+?(v-#?^eyVS*4`^~T0bHm87fqZVDF2#MEB_OH$NUp3H`@FYq34dD{^|$K zKi~`I=l?CI@u;8o9kws>{zIP_yZPL-yg`lQx{|T=W)zC{UY;DU5w?w@CMY5 z8_*W&rI@V3XXqmI-0=^i?$TF$T_Anb#hAbNi1|v}0_meJ#{3EHpKL$D{Zpimx)}41 z{|7$YtR}vn;U3&isEh6V@wYdaul-Vn@OfQ~_$O~O-_-gH;q$r}@lU;IK7JpEte*uXEuKCgwJYXav0_^bP;;)_4nULg1@oZ{3LzU#hAa@FkkbYK>DbQG5^Rp=4+u| zu>T}|)Ww*;hkHNs*2g`6K;+HqVkCcKx0`SL)C}SCx)|~EId2GSmCt`-0c)AM2t7Cd ze9ohf&wnC))Ww*e`)t-9?!QIW9qMAN{;(bX-vrwq5bxr=F81^L&wXYU*NXdAk+t9N zOH)G69lzh_-EI3n-b1(#Gvu$^kZgR$Y4B3xoo*z9~(4T|+ zjcdGr!va6PKY;NZ>>rGWV_^I8pLy!M_FuI>?f;4E*Ut0f`vb4sKKFvjmt4|K@UkmA z`d8)l-=1sHz4{Q`{GOe)y&!Y1s_nvWUyGaHkvjCY{Wqq4)()lT{S~OGEzX(aXK{P< JSucY{_kT{Xn0x>L diff --git a/sky130/gds/sky130_fd_sc_hs__nor4_1.gds b/sky130/gds/sky130_fd_sc_hs__nor4_1.gds deleted file mode 100644 index 0c2e6a13278885ccff9a780f6ed85145e5dfa40a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5742 zcmbuDZHN_B7{{MGcjnx=FRPm^*6LDG`5|0LNs!WFU02JJ&9}6)yksUuQnB{Mv=0?U zL4puPWrQD+pePCoBuM;_K@b%MMPG~vBPc?852@|{KhJsY%)ZR5+y<84&U4QH{GanS zbLNVZD7sY!DpBn_X-L1+-I@BXnR?ZqN-D&l$~d05=6NCsuFw<;pX z^{?@0#-vaGH=<5_UZx-R`aao1ef=OBJtUI;nd52P|A70z)*Re#5Hb4r%1{o<8I*sW zFtPxOtp8-13M{?Rq+ zPtrd^KRcWSug`HG7=M8BHOL{5d9Yn0bou$&9@fWN&QEhlq~`?c;xf7e=-=CD--tP? zzm9t&;?%J`==1GA({re_4qIA%kTUTml3Jw*6+|{eXB=xM(h!P84=IxSA_og z{Zly~Yh#f}V|K>oArZ!nD4$Nhoa572j&%>Ed49N8g`r)YUzujA3j@l=f;_kXp16YM#maU;s}`gRx(-yc73uh0kj!1yh! z7mQJdpXhkUfvA^nZ{&Z@&lEj#@$159>%us3ef;G8rFebWx-g>IeE#dbKJHq-GT;CD zSOr?M(zvJ)!~aU;s}(8D?$g}l^=5OrTf;JF0B3`JE_N%_SAR~2*8_V<@XZmvdjnpx2EYowHQ^$30 zq>gc8nV$QMI_^Isb&MO!^xWsvasL~sW87G#m&2GJyjv@)j2Qb{bo`Y*UNZiwt1d9A zp5sq_w7*;*Z&O{87*)sdr#_Sy`nzSSbEl1}k_$_w@BeAT5VjjH4LQyJnlo#sx-9UZ*dm!BfE#k&9y`Arq%d{P`c_aFTbHA}nkFPi1?+9y({U`l79dRS# z`TX^JEj*9;4vR+7f6Qx#f8m~S<7lxyX{auFCr9Xf+*qQo?8f}zoF8$X1Mxj9j2jUz z%)f^9NnOfy5J(;4#+mfh2UKs2=c(R^c%grFuKHF_WTY?S#xj4_qc8PF`Z8`T^RL{D zT=&5H?~EyPLfnY*!u(mUj`unB9lopjy0KZVZ@i{@V{?=0jffZe*RMd{Kf@c}JI3^R z+#_y8yi{LbtNITAP<`FFwp`D=>2GA-^f#8}pFV@N{v7IGo6!v+cf^e-FU;TFrn(xw z{n!pk9plC_edSW<`Y_%f=Xf0Vj2ruk{o{+(H~uIieHk~F`eUE+dzJgQ!&C5Q+!(%3 zu|@fN(?)S~`FoSQpdyL5c@@DcZhkVf@bQa|t^e@}X$>U9TM^^c;yW!|jeZw?y7HqL zS{w4MEt}F>{|mfc)E1H>Xk)*m{ciKbO}dw)*q6wfF32-PE9sQK%cs#kWY vuKh~yZq)pRLA@u<+Bx-`YW40`UB8=|cdOPJ>qgCA;*#0)UJ=H;2FCIqR#kCh diff --git a/sky130/gds/sky130_fd_sc_hs__nor4_2.gds b/sky130/gds/sky130_fd_sc_hs__nor4_2.gds deleted file mode 100644 index 064cbc9efe94ed18e1d76c21a6f62f5a315672c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8252 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 J`Ll3f{sofKwQT?Z diff --git a/sky130/gds/sky130_fd_sc_hs__nor4b_2.gds b/sky130/gds/sky130_fd_sc_hs__nor4b_2.gds deleted file mode 100644 index 7008f90355a86da42de5914a518e9ad51de5d9d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10352 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nor4b_4.gds b/sky130/gds/sky130_fd_sc_hs__nor4b_4.gds deleted file mode 100644 index 5320479d46b1509836267ffb7c3f38ff1c96bb2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16104 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 diff --git a/sky130/gds/sky130_fd_sc_hs__nor4bb_1.gds b/sky130/gds/sky130_fd_sc_hs__nor4bb_1.gds deleted file mode 100644 index d90e3d37aa02fd2e7b0bdaf69e5e7d46352ac96a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7596 zcmb`MYm8l09mV%O_dM?0IrlNw5i+!pnuw3IY7r8HHKvcL7{w~K6e*U`@`%-tX_Ljp6`FpZI@iScJAgI=l0()_pbeObMJlMzRPy)n!Cig zwBuafOWf@)?-%kFkgq71~3i{DlV|Ki8^9>~0k)s`RW z<0~WSTYS&_N&2!~5qa18ch8t_m*aaFb3nqkyCahR6BuieSx1#wf&C5vS)g+_wS$&M7%+N=FFK% z>P2WzncnE*RsAOKAD%bqb@0dD&a%kfHAon75#_adH*dPu=1A%o7n}9S?;9BV%_6i{ zo8IW-wf@Ng^KD-oNnggrCjaDs`L-_>&7XSuhw@tgsh}SP{RnwbHx=}uyg_eyQ^$EA znK$)fQ~rZ_%X=8cZ@Ag~2lHa{_^}>+sT1kTxY*?1J7)gN9TS`VS&zQ`nM zUT3~pCYmpwU!4C?zI^<{eQES2%=MSC-*7gHoy+hY=b@NB8P2Cbo|8Q9M4nr{f7Evm7g1j8UmP%9 z=kZ9MgN%zc`cLtG(Ypg{cRT97I5K@V+QRx4Ti2r;_XDxL7vqWho5(otBVu}i)n6dm z%YSF>k)6_fMfi{FpUxqK|=X%q7dkBKf544{~xF+TIY!@&V>sDJkK;Sz;&i=! z;vVF71mpY4Nc@HC7#C4q>tFoYbe+#cQpdR1q<25GyjwR^h`fDVY{=jJ6uEvH-nT?{ zUjsejBFby?XT4&N>BY`@rWX;f)wh0)eq!vC4@S1Xi1rW{QC_Q0{$%^IeP@NwqAkY7 zZT0%J1)sfGD_F}SpL>jph}ZhF9_OEWk@Lp5*ff7B);*su=|3t&-aali<^OTa`+fL% zS!BK*dc;MP*XEy{vVP|eN3!3Hi%tD!J@%V=k^N>|Z0djUE6cm{fk@`fxY(5c)K>WX z4bPWnBKh27Ttskdr|HFsmz!Qhyiw2djs7C%lkJL2&Ywlkp8?OUr}6y$S|p!) zjEg9*^&i}8`487cGH=Gkruk=o`1d1S^hkCm_Nz985f)K_w|s!*99_f#>J-m%RgY= z-j4crL{9Ks5#l1sYsYW$pzXWzMUmWhjEhbCkM-KC;0OHze`)%*xT@a2n_-;s{ORI- zkCEB8b>*Dv*CF~WX4 zKa%kgJVp3c$9HG-eT{Rt?`&j!(R56h`cPigZwURn(%;XIA-BWGAJ1p8d^P6g^BD8M z?yYF%Zj4!Au@>tAIuW|s_D7dvthSq8OrUR{fJb0!pY3mvaq2|q#NTYkHz^v>HF{M`>(u3v{oHId*2xH=X)i-tLOWs1^yB9$GEtr zUeEW6>5uSifnLmRgd^f2;& zOudMBZT@^O)q)S-SBc3-u=Wub5%>BMDPm5xy8Jx;eEo*P)0e&8|HYVPIRt~t%Oul^!9#_lt z$Ye=A%kRi?3TCC*NR9_ps I3ov#61BjrQGynhq diff --git a/sky130/gds/sky130_fd_sc_hs__nor4bb_2.gds b/sky130/gds/sky130_fd_sc_hs__nor4bb_2.gds deleted file mode 100644 index 47726245e594bc20e40fc381673782a1a5e18f99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12042 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 P3X*p#5f*0zZi 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o2111a_1.gds b/sky130/gds/sky130_fd_sc_hs__o2111a_1.gds deleted file mode 100644 index a330d05b71b018446f1287601f4226c9a29d4499..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7934 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o2111a_4.gds b/sky130/gds/sky130_fd_sc_hs__o2111a_4.gds deleted file mode 100644 index db19cbc5766e15a4aae8f7f0ebd04a122252ce41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13056 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o2111ai_2.gds b/sky130/gds/sky130_fd_sc_hs__o2111ai_2.gds deleted file mode 100644 index 6a3d18e2caeb4520968768c691677eea656b3141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11050 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o211a_2.gds b/sky130/gds/sky130_fd_sc_hs__o211a_2.gds deleted file mode 100644 index d0cd3234ffd37b57f1cc5a501c163f8cb86a7220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7412 zcmbuEYlu}<6vy|y_dM?7+|g>ZMu(6{`rwd`1u|Koqn4srKGM*1@Ku>c;e0X`G%za+ zghtmzu+f(=?BNZ zG_Yi$=?t^Aol(@kZe#aN6Z-C7-PgaW@4^1QzDFi@cdzK1Xo9jaQN3ukn5eC2x=h#b zk}>9peA{|G!*=Z^yO-10+XDqrB*F?bnz zw54SKYA93Eo_r_eB<<{n68%Z%f4N&9bJ*Wus8&CUKlmu4&6rQfUxRNWo)NfKqMSOG zJAJzS$87t<-TJjHOFjN%eRGz7@KGZ4)cTz=SfA8Ir^Fs%KT6os`l;#uRcdG)Yv1hl zENnpR*I*4fa*v5SQOA*X>Xgv8YX4T|uML}EZ5Qf)lp@+TJ8_)Nj?E-S4U$ z;+O5xKgsxMSHhmwFSGsC{nA{xaG{s^Qpz|nVH__b_OxE|-Olk6jU89yLRmj5b|vg- zeV@y>&4-;A*u(gV9D{ezm(LKt@@pB-z!CM*?M=VT@gJgREOy>0b>1lvT5A6NV*Q)! z`K$9ziDuLKc~&1>vVK~+|IuXRu?t`95eaV?0QsNc8Lmdeuq#oX zj=xD?9xZ;$$5Mn}Yggv@FK!ZDX>5wnS-UbvUps-=Q7_r1SDvX4mWnP6m7)ulDy=t9)43@z+R*faGUXX?0qmDJI$%+qt6sS86- z>S$Ny={e5S+h;6C>S$Ny={e5SbN^CON4qjl&vB-%y5EyJ+Ld{Fjx+V#Ka|wbuFTVO zoT+PD<4GOu%9i?evy;y!cK^Zpw;#;6@GO2g7Jf$_f5qHzq`mTol#|>qt7kk}UY{@J zWbhE;+ULn~d!MzG`Re=+onMXkq+g7W{h?lI`~8gTH^^tS`ZQ0Lr^ls?{XG5&W9!KB z(gD$vv=^6ovYa2VRebh&jAsFRzCbRO5%OivKaQ|x>UnMpkRy9ubJTO366Klt7%}R( zMM?j(EA#xbztlCIPobxsdRN}c|9zZ4JZCWPwYxlPc&-sej(zK)E`AXX*q z%!88S#q*akenH}D5c%M^+A{;lxEQw*@wMvT9QH5%5x&q~INOtP1OG zl+dT!m-ij+eqVnUb=PBE-sV{ziFE_J66Lvio_(lq@O{x&l(l?)^$pQ0YYRoMggw)L zxd&s%^ZKb2u?JbZvU$BV^}m9>j`}M0pa!9{c4dyfh;>C>342k4&{?}ON6)i3=LyGG zY3DQSO4u{|Pd)uo-yr;2yE4ar{T0j;oYULpc;bDYpUuxILP z*i+~~K@ODkOS>}9KkLyi^-B7sU76>fIV=2w+#y%W;_H%2CG45;mv0tb`3FzxXjkUx zqZ!y6{>EN}`>N8u(}P_Jd!~Q$E$ShEh0UJK8|}*6{JkjaKAGjobzg&BnYaE~kL#ZL z2C?p~U754~S&!?UdL`FA?aI9MZw^V^g;k!6n|5Vh{I=e4V`Zc0m9S^$AAYJ6 zMc?2_(N~ptSDkua(6s;XzQuVLob%+ophyUN4rw>2~vu8SPM)vlK*dst}d9+M57AGRx&!AGH&~|2j~6# zgh@KX-X*Z{lgODues@IruN%pSYj28eZ}O1#I`;6hSK5fTqK!?a+z~CB+l%yaJvHeO z$)I?K=#wX{{_a6~ygxyIhUy#rvCm=fulmLFoBUt2-o=0C-04kvyg&JG|Mq_{+f39E zO?A78>-|Nk`DQ;HM)kDr|L?nu`z!uGL*JL6E`Fox-b+v?6R;M>(Kl{t=~2I^ep6j~ Q{&LikHT8`{K@gaK0qEvni~s-t diff --git a/sky130/gds/sky130_fd_sc_hs__o211a_4.gds b/sky130/gds/sky130_fd_sc_hs__o211a_4.gds deleted file mode 100644 index 62ae695a99f4764ad16318d044270fce00d0f804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11204 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 A7ytkO diff --git a/sky130/gds/sky130_fd_sc_hs__o21a_2.gds b/sky130/gds/sky130_fd_sc_hs__o21a_2.gds deleted file mode 100644 index d9100b4d0f0c0211a40693f8063d0d989785b8d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7120 zcmbuEU5Hgx6vy{H_ndvdM~%T6ooXJE9-Q*)A;JnBCo(I`G%YnJzd}o}^r37N^ufp| z62b?aqAx`%5+AZGp(N6vu!5i$g&x8uBPXBWycEyI}8#Wo!SxoMjx#O05j_*HvYyaU% zZw@V9V7ilRZMU@>pWHNM+T?-9R}E}jIk0Bqz`**cQ zqA}((`RnKlOgiPg5@X^qLEq=}on|xj#Yvd-G}seZ+ha`hqA^PPqe1aIc3}Rs`0N>f z3IEdw;Azfcz7ocGCeKP7CFX0F&pPIl_<7?WWPV4)=iJPLWM1*jfzE!t_k$cmosxNQ zUM2Ew7vI&R^p3)JTGQM3C$oTdV?+0D32Lc(l)GzT#`WZ)=krVYTger z@7gtiTwe|ARnlKSE`E}Bu0x6Sr0c)T_oMVPhS|-=j7qU_6d&+X!k^YZ=k%lf^&mr? zo^Lsi`IGtV)leI0vGof6ladnsX0>u09(FQBFc>_K^dV7w6TVOPT6PJbKs zyZ#MoxfA`dJ4MvGuu^JHmL|(MCC0a#&(*VXNb=~wVZ^*h=0Ur1SU!)s_2~IxE?l^P zvt?A1vOg>c_sNJo9bf9%$^8(m+fSTR%EnQ#D~IjpfUoDhtcUA^FR=HEpjYl?TzvM7 z52C+ueK+~7=weUk()smY;eLmS18pQ1PJ3`|xbBJ4`|)A3vMydO|soDfJI?aDlTyhLSCVv-wQ8_zb&-yXGl6iAp<;C*1y`pat z>!IE%dt2g5|GMiF`^@VXXS%z-9bwYGb#(sp`iJQed-!>Ij`QN0^&ECyO8@BjGKBfx zXa6Z7dn7MA0^Lv+Lf?p>bcL<@%&LzN4qjl&wZwj=Z}&)+Ld{F?lW~fca+r8 zuFTVOpQ$S!3#5*AWuBhUsVssiR$)r{_LX*ReW~I@*`M4^_0{)8udE>t>Xoo(>P!D1F8Z6#KTUpw8q%(;=j*Ev9*Y{nu7p2VU;a+?$_k&IpjX14tFKNKeUqm|&u4PZ1AC^P{lNU~ zje*RYc4c1vZXEKbp81o^n|5Vh{v5}=scRB>JG(L`f1bOA12}hY59IkxyAuA)^>bYD zDbXu=&b#y66ZT9!`;_t7|4PQCU6~i3;~1BECF9es%!^<7P2yIE0vVTfWnO%aEB2uF z&^P(D=!?pp?DZGsATG|$!XJUrT)c-}34dn&iaRhC^^2zkGH=?I7t5dh%lwt>Tdqr) z*S{Rc-)?c%AV6%j>5}+;^Q_+4?-+ za{pzYP{+P$5;|vB=IC9Y{Du6{KapqgZRsB+>@I)YX8HdC^Nk(L{|~TN7ffR8xB_;& zK0cW-arJm+#!}eYMN_|5`}THp9&}eZ*{CyZPE9GnBSshCx&A zvJ2<-VROge&u1fg9u#dY}JYbNgHL z_;ump@%c-3GRoL4J9EnaS4ZDpiJHH1`q=(H>??msncJPJ?z@c4>yy!y6S;2O64JYV ZNwKLezJ4WYS@-3}w%gLNOISf{{sYZ7F^2#E diff --git a/sky130/gds/sky130_fd_sc_hs__o21a_4.gds b/sky130/gds/sky130_fd_sc_hs__o21a_4.gds deleted file mode 100644 index 5fbd942b9e5863acbc8b2734e63a69f0bad148dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9846 zcmbuFd#qhW6~^bh_IaQCZoRZVqV^BdrnDddtYDua(jv9A#TK{}TLr z!&qX1z(pZKLn0zRu}LFAuo@##6N8!*jY_H}Efqv+u#)jg*K*^o?%wL&l>gs#%GveTUcGbM&fU(9R%++3_`=y2{q+84 z&s}}s^m`_^TQF3yr7wTfJ;m~~rgQbx z(EcZ~{UWZnJ12Vo#^49Df1t1nBI&Q5V}6pl%GV?5uYB43B=wb5k*r7MtB4s`V)TK$owSjwLeGF&w7Z6H(Py=vA&IU7PtOVB=f5uxBN)vU%xEU`!5WBkoniyc7cpr z|B}Tg-6`kF?})6u6W1Hy4`g{|#tdY<(zh%gNqgz;Na{-WnVxjlq8~^2k`?t!?;G?BJCq5&F}dq z=Z2rbwFv+4AI(ovH~gMR>W9w_ezND>;Lmb|fAE0$N$LmR97+A)Nbr-;57csmzjwm? zB=x+Gy-%GwwUX^6T0gPD*k4#2>Cfw}y+^4x4ey(KzTHoDA2quOe_lTk+WVVq zFZNS*AKLpDIX;H#ci}paYj^8&Xdm$`)a@9qMc6B+o1dhPACY@d7xQ1N{u0;QP=@$z z%$Hx`T7;c>(I4{5=fC#MI? zzbaq<#yqt1B8=}tIsO*cw2O%F^{+j=jDE|ShA!|ekH{x$n^!9xGDf;pr(^VFTrYr9e)B5UG)75IC>Dd3wBlrvB zXUj~N9T82JpbnO`*V`eQu6t1Q_Co!@r0E9Nh^8Bu6w~^lJ*FF8AewGykC@hvY&G3zO*Gxe zRxzy~TV}ekBckaz|JZ)PUs!*R^Ui}D|B>8_X&2!y)N`Cu&-0H+9qnRD&v8y2*FTXu z+QpQfzs7gKtUbLxi|L{dk)n9_5cQ$JdZq>gqmrRO-Op8JnT9qr<* z`ce0Uowse?V8r|RQvPsc<$jFohw&H4`INoR{3Px5t0U>}{@wg!tD0@BJKHp zZFDeB4r6Wv(%*Zd>B$Dp+&s66^f%FuV&k9i;UFi{Uiy*w$@(57xhs->e!$u4=g&^JE9wFpxP9?z7y<(t9zFZ;Rx3E~HYWd6ektsZ3cE4aTJS;jLw-_wY- z70|Ck`v!7+R^NvF0$UHkhde~YDa^Nxx|Y6&cp%$>&j@0vi5xMu#p-&LyB)CtnGffr zNIS=^NIS=`$UTjIv3e5YViWEUR36}L`L5;ql)WA~Vcw8@Z&kr_o5=cey%IaPzm98B zIxt_py-yA2-?0&Bj$^$sz;)UTiNjy$E|@{0w>X>{_22$+eqy5&lAbbvN=y zKiA$8*_yx_2fGM=p`PmuzeC{qBjWokzy64@C-s$&nO>}(W_l6!LjBOahgqmrO&RxeGj7jha)SS(f+WD@E67}|Il>Y7g!ES9qnRD z&wl1U!TuMUcUk|7sr|$6hltDX{1~5PT-wD{eBM_rnXb+$r+ALfS>x3-j+ZaNn=7UVk^TawD!` z7vV3|`*R}39rr$tKa%5)b}=>ncwZH3KXrX#J@a-kv41r#x46wLl5uGlQ}KBp$369Z zV%&SXm>B=uKUi<>KO*DOE~eu1KGvK1K2dLP7ZdfbZ@}Dr0b~EA$PDWs?IQez{ntHY zbH8^(j*nnJr(K-w_WvDw7 z+r@;Qzb|0>RnLoLyZPT81g6@risv`#Yd8al)YC4e^vyq*u60W!b+n5qeS4|t_`Ztq zN$O}9Q+low)1O=UJm&4IRq1;qPs-xg}R~*=blk zTxVWw`NF+#II#Zc&8{=QwsH$>{B-Ocm;b*to`s+8_}YZhmiy9{%_wdB4u0;m61Wq& zJ+3jHZMqoA&eS81Y1z!scRug+mrT>++Z@zproLYr)`0P)-~9e5@n5k%NQ7GiEorY&=`BbV~GBq~`akL4C&muWnr;^~zTfyR+oAsK@q6jU$Ec^*UH} F{{!GZkf;Cv diff --git a/sky130/gds/sky130_fd_sc_hs__o21ai_1.gds b/sky130/gds/sky130_fd_sc_hs__o21ai_1.gds deleted file mode 100644 index e8fe55004c54916e7f901e56e72f769daf7ff4bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5158 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 Tv5jXj=Bb~L;e5PxBh$WnK^q?%Sq1s z&i>Z=ukZWTZSS?m6)s7xcJsZY|7SOHbFS~sb+2pwc2!cW+<4&d{=>I8H=E`c?)=hQ z-~X%czwq|m$KQO<+BH|W`Mg~_Ulgk!y=Cz&=P%!I{qpL;*;(`6ki!K{D zSBw*Pn=2-XTW||AsdMge`%ac3^I7{XqE2>(tMyA>KkHVgPj)+3o#|Zfp~(I|Tz|{C znsDs?fa}2QBPc(H1_Rv-Xy+ZM6UcgOS48{M{NGCd*;lPz`mYAzKYb3@fs8M`%;F=x zeODyoNdIW@kc=byL?p}UM?_rH;<=si414J03EKW?Wd0ZYUUW{R|Kj!LpJaUb?U5|c zZ?keT`z5Z|A{igs6Io8bBK%K_&-YjPYKyCURfEquR}OI}2M`W<~Cl5>H6#IAV8`>owE#)W=J_DA(-B<Hr_RIJx z>mQPK`VrAyvwyA&^ZA1uzb%lBPv8$eV*d@u?S70$U~wz*`y2d=Uq{_f;#!2A?XWzw z*Yx)(?{6loKkv!v@h9uMfASALBHTCD-;RxX_62n!*0}$Ous8KPL%z2DF>d|)@O@uo zi98(aBFa1UJ&Z&DD8@T5{k!Q!*r(~=$^M>Ton?ES8{83@oDbh$!5$FEc3DqE{r2{- zX)^BeVC3j#TOVQ{?M_fnMEz!a`+Wase{?5Lp2Xg`rKXK5JDB6^%-+=7_{?&AP3z|Y z_E~X!!t5gKP5p8hpGP$xi(`oO*U*bUM_+v#*Ma?cT)z!<#69RM><@hrc79mS5Brgs+rS!!D z>Ox=hY10?tLc4#rW`29`j-+4O#V-G>N59n9gkNtLJN%Cy!Cd?%*6*Rn!F#d)!Y-n` zwf|UeIAi*n7!Pk3XS(&H&zfE=kq`AE>`nhRfBk-dJn_*!EspW*!jHINzuut7-cg4A z$P+@%drx29^l$S=``H@&<6g@C7yZ2wb`kbgeR9Nf>9$DfXcxQmoTv25`6p6GyV#{K zwwtc`Oh6s&VwZlf)%1fWBdMcZ?9y|cGH$M4kviJNE`9lo>8hiV)X^?>={e8nm-Anw zj&`w2@76Fs?&tW6m_JwIyC!;j$M~Br-6oojcy|tLX+$il*cEQyp~eg9l!je?q&cH_gBAAI3SveSqZog1Lx1Kk&I<>-zh$qr z{v*p{XzRvE`30xNhv!N7dJ1ja4Gqp$BF~%a&SQ7C>(gD(;XIq46UlQn?IOxs{p0O{ z*C#v+p&gPs+Qk;VKVJ>dpUHh#XCTjwJSU5T8!$(3Zx#8x%5$yA@gCh{<4vj^a9X?< zv%ffB+5cpE0(oQK7HQ|cBc^BBd>5qyTic%?KK292ILGYAK#uPOb5CS@;|t9nDcy$t zviB?DeqH_v_3y%b{Bk7UjnFQlycyp*eS-e&9Y@alBa;Kr!Y-n`RX_e3bPpj9oG(PY zzjCyTuy^XykDFf1&NjUWd#k>{dnEeh`BbD|+Qlyatd~}%ulca)Q?Y9IKl~p2{2TM` zlF0Nsn3u4NC~uA5{lenzeJql3(=K+!Um||KTd9!0$g>yiBJ8dHi-V@?k0Yt0UF^~` z&Ow6M5r54GEdGI*wEL%ixYzXJ2y)s**jwZG^?qRbQDAw6=|$LE_2WA*_A8iw?}{8? zozpI&yi-5Kb2jxge`5NfSa$0fH}xXprhl<3{^92=?$Mhf88_`>SNz#cHg5S`gBUk& z7dys}^*CIzNsD_dO7OR@0)6DR$1o$2hueoi~s-t diff --git a/sky130/gds/sky130_fd_sc_hs__o21ba_2.gds b/sky130/gds/sky130_fd_sc_hs__o21ba_2.gds deleted file mode 100644 index c2ce8f19002202d8ece8cb0cd46d8051c8fff635..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6954 zcmbuEX^0#}6vu1&nx3AXNtDI7W)(rj4+*#%MUe#AtnmP2i1Eb4Eap&S3~HiijDlCZ zh@yf3WOUWy(aTnij$S!!Xwk)^(@c~ale7YJlS$fvnQEp^ z42?1G$h$q_8TZL&CHh1Mn2vtL>if)%)VJ4T(6%wHZRm5WnN0e)hmCyUW2p6Z!pU<`@@*pi>SFH z~DVMAH0;9?!x{a9;?q=qEq4wu`ea;Mg2^d z-weCnKEdGUVLsM)hL1pgCu;6kTZvrIPl^7$#YUB>t%dp z9W|j&34P`GjJLi+;w2eZ6LYQPnVH`MAC9zheC3$F(Pvous7Hq{NxdUS^ec`x>wm6~ zaeBsL*QHX|r4peP*5_{P-;}R!U6)D>ThyOr_0fOUpIpqp^(F>?1NC3(885+JhFyvF zqW>;^G#~5cEA)*$gPSoH>`Js(>ci7T-{D@-hsx8-_04Z2?tHB$m6sk-4B*9Y27VtdolkpdhErq=M%1_e6<|MoKG_Ux*s=U z{O1|J62f!wMqWZ|FZ%D&2WvzZ9;Fl=&pYZ}d#OH}FSzuzJ>sQ%2A6nRzu$SstXX?VEJgK8yS*2&4sptMzQb)V8O3yk|$9onf zb+jw1^sF;==?9+F(XOo0v(D6KPkT~FyRu5pI#bW{M@b#+$|^nUOdZc(C3Unbd+Phl zI^Lhy^9TFizPMi};ge%{5bBBxkCOIykF=BFahT^HJ?(m3DD8aCsQrSNp7Uh8z0O(6 zdUgKCudhygk{9D+KGZ91zUy7yV0{2>XL_1q?eiewP{Q6zZ|~=LjjCa;$Q1J(KkmtVIHoeX9PKk;b5tGJYkV7D zhVeK?{-h`4qFq@MpVfEn_dkSh%ufwWelhYq;0Sv!|Lg4fT7~$xpg)+cgZ^#L2J%Rs zz+Q3WvlO5El<79i%VhL%48huB*c=&)Stc=&oR{EgPxTA-ifx5lv@2mR%|99uztL__`lVf2<)8h+ ztI!{MWps$>m9Urk=Q%|k&tD~Vv@5Ih=5@q5h}ahwxC3i}cI9BX|7@3B7n%~{N+05^^fbn!@aWpc^!1^HhwG#{(ss|b(&6(Au$L|Gy@4r0}>tljR`jeSM|6a{s>Tt?J&7+0aayR$?$T!vD=KreB d2Ro6w>*&An&EL+GTUfV|q0u=KdmZsd<}U>OD#ic+ diff --git a/sky130/gds/sky130_fd_sc_hs__o21ba_4.gds b/sky130/gds/sky130_fd_sc_hs__o21ba_4.gds deleted file mode 100644 index 0aef9a088535dbb9a6d6f9fb5ade5adf3c9541d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10150 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o21bai_1.gds b/sky130/gds/sky130_fd_sc_hs__o21bai_1.gds deleted file mode 100644 index 2ba396f65e01dbea7f98668789b8848578a9698c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6500 zcmbuDU5Hgx6vy{H_ndw1x%ZAtF({*h8DuXF|IHLu`l%wkxKD*$ygKwU= zX3@SYc2BHYX8NLh?QCneJg{}(%6X0T>l$0`X>8ciXl$B4uy)PH#(*(l#TeTan8%Er z7MOn1-(5Dwd?KIf<0+#a`L0Bt@Pbr7?DRcmC-uR7#>A(=l_~2N8dLhz7$w_F?@PPm zFZlf$etX)J@OKQsc}9DsU1?5W{HxH%GamJRm8Uz#x1I6X5TB#QM1Q7aTv0>fBVGIA zl=K^JLLW~%W=wf5+C4ch(L?xnGA{a2V!Yh>s?3pb;)59?zW77@_GEnV#S$Os?65V7 zIPCZMcrp&oiIQ<}Zk4ptuM)aW@wxe`9+q*FH!?(A$qV@H$@r3z#7ELz`8_55Bv$;9 zj3ap^CEMvo*%r^3udi#lezhTEy7ohhOBus|uoO9Z+U?R$iGJDq9(Ch&`+Aq5+_?P8 z@eOLjT}mu}rrw9z_4O{%DRED^O9^{cztHC+_uJE`?aipCn^TrwgdBDy+B@mpd{jSz z?_KCWk+OoZ!sS>4&v+i@7yXpz-)TG-4|R-({gt$3KW*{c?efw6!<;#DW|;G#L>*u~ zcnO_7>tE)xhwC94w{HJR{~Fk}U+hY>XY~y~pCeiy_I1qNA?TIZdxBf=+cU<-$4eQ0 zCF`ezE<66B^IY#qdir*Crqnu9w$|Hm=ilVltJawk!)D`O;`HH^^*6NSk2SoW!DO5VOPSQtLHpZ z$MctxI@*;*dd@R-QIwK8+Lc9m&NKDgKa|wbt}N1Xo~h&gr=*T{Ws#oqOdan(C3Unb zJL-GPIG>O1{zLt{3+om1;hSgq9n9-`d^~B7zmRq^cnf|mO38Nj9CMU<@Z(QjzovhQ zoBkOu^-7n|w>~eB`(yG$O14M6(oXV>$#qwR{YXmf2X-3I<)1t! ze6E$BPs#ZCKBZ*bY*)H7=mzvzj&VTFpMhT`{CA3Pgz+WcNk6i@A2H2HNxgkg+DWcM z^~;oO_xkMk@_y@|AFdvMgAUKo*t3H3I_*l>3-!r}=$rgY^oeq$SYJi`(!a8{O!P|F zbN$<^5%)Oe;pdc<>G%!1677Zhq$c_%KM;MQtQG4SH~lLaH~lM%;t#R^B*R#<&oexZ z-?S@-^Zm0Q{Zg-_U)q&L{sZiT^k04?L-=)eWr2V8qhIQk^h>+4$iF#^b$S9dyd!0D zIqnbGm1xghKlYXr0MyRyiCWe&9O!S|t*{I7?0CE9cS2jl36J+q9OYw|~Yr(HQO zUms$hqW@??O8TW;S>&Jn$`6ZP8O{{F687Bq`TrQ>=DyS<;&ygrLHuriLHt!bZG%A)w){s+I@7wMm*U)q&L{@IUy-M;EczivPEEb<>;in(70 z{nsh&H2j8LiT2$2Pks_z70(-vLsCb(vPjSSjym4&O6q7=7U@fa(EWqCJDQUJGtjO? zyNkaL6W+;}8ati;ui6n5~`&>D;m1&$=Ums9DB;t`=a4hu<@$P8BMwSsW%Q8l^8)IxUm0r7il-ni$zw+^j9+9-gGf7{6#_1Qg>G3{>d?xFg z`M7fu{HuP&?JfS#TJPh(X>?JG9`9rS@8A9Rx`Xi#4>U&4U2k`xCjT(D*WTGWduQdH y>g3+@QR93zMc)7=F|5^}pV$s#n$B zGbS-XaF!Xa1l6xh-3*zknQr#Xe>Yi>tiEK$n&oTO88aBh$IiL!h?6%zw(ZFIn+|?( zeCZixI4;)iktAzZts6OHX6M3{owet8E?(Q|TsCWD#qvu!vy6#q#w5+aTx*h6U}l&Z z?a&zWs(jjed&YzEU5RU=DPBL<>Icm=)DL`&M%RFIa@>k@1WX*Wos4O1G)75#>kjdg z@%}i!%hPOw9yTTYjH5)ne)+t@e41BFyUkUejGKKZ@kz$dHs^S!F^x?)SHjK>U zjh#KIZ$!=y#>e6Oa8Kslct`Rl>Ce9Qq@Q^z(O$p)+|K^gF&E4${WV9#Prs4)B=bub zc{0CruJe=7*WU7EKIwGHhh!ef4^or+S#=Lo%Q0exC6! z_`WOJccec_#ZOWnul1xqUMYUd7K$;!xnuMO{5Qhp$o{Z>CGFLj;wNdZZuX3q;vD@@ zB3{4#u4aG3sgg%n^=#Z{OmGF}+>!YPE5vVkr!kdBaPG+X!BG;Qx%Fn_ zx3{2nUV|2gGPwrrKZEv__#PgLb0zGxr^Igwd+RdsTOu#E%lusX`Tk#R%Z(*x1g_U(7z>~;g68Ru7tl(A6+22 z_5#mnF%pJdS)f0f^WQ!j^Neu{U(OM=RvE>)BWsM;DRF&1pL1=0bpJKmw{OQ9ZEsP^ zJaIrcpGN$7y^QA|=R-8SZps64J=uIs>`M6a`i>jVg|`QpwfZ_cp#Mu2-!yC7R9a7g>GupY`+d{coa9 zk{MWUsIM+R!W_}AoY51%N8k8NblHX+p|f^ni9T2_x^Ukdp|f^ni9VT)!FdVVt)6xd zhFuANe*Aj!r=I<$zDvZlcI7|Bud=qGSJqAty%P3(e5oJ1K3F+e3k|ovEMd~Rv9$gY zJ?=vj_p9I7F6Pj2!hR+F*Y!P)_MgQ5us{jnnfQz=tvw&VM<1*gUAV7Obeuo7eIhOSASF~y7Vt) zxxVq4=&}t;(Q*ASf9EfZ-+WngtqYW*OC~Txsovde%wyH0#H+ zxdd9+mGBqpStrzU{VS=XU0J4QolqCYp48EyLU;N4v62&pM%=`>&EZ+LdK`)(Lgo|CQ9yt}N5DPN?Jaijq3om3{St=62rS z?f!@T#~$1-_QE&E5c_Dj3Li(>`97hfy)hzw($@QO&+q{B3vDauZ*LL5eV(y#3+mhD z$LrY-9!mBz{6YFlR)b+juB^sCw5;CjTu{hDO{mEAp~jac^yK8}3<22Bb@gl6lV&^GTI9*~8)KhPR`6R!^(W{ZyLoKv$ya{g zanCPYN7dEHlXc)&n=0!|346Z3lk{mr^j*Fn`c&B{*VmsAy|QtJ=#{V+#&14_d4s;S z*poWim1X+co}%OWWjiEwv@6T>5$1*C7GYmia@=TFmW>~;zFt7 zO6E-oDF_2IM}p|f^niQc>} z{pNjz<3O_Cv@6T{&+EcWbX~qE`cRn_=Wq98#BHY%pJZIxm1XhmK92FHj^j^q+-X;q zjlbRR5uf)9_Mc>2+LdMTc^%_Yr(|5(m1Xhmee`Xtw?7ciF}xDzxW6i4FRmXv6V)HY z=Y7ux*EH-(_zU&+zP}Fn-i`gkvAz$q-=Ymi*bDX1L&$p!_ra5MMBQ1tvZVeRH$Zz2 z;veXlj3PelO85)orxFY+qg`31Z+!vXRj8L+JQF;d(5{5PFn%yBaf8jCj7z(+ zEIxk|<^Mpj$?;W;AMMJ);`qGJ^0|ojUnQU8Xjj5sn7`epq38ZfJxLwyO4VbT^Z%{W zO){1LZza1_kan_L1*vD#;?V;)?6GOlcQ>1CIG(!{HXa$D$=s0*CEY*EY(B2NQQO|^ zN$m~Y%i}(2qlPtR)|=W;vUm(X=T6omlL`4u(r33?{izf5_&p2#nXK>jhkamt)h{`% zC;q?IyZnzIo8P0y?@|98ztzUz-(ZrVWX{Nrt24~1Q_tFQb?}~5W9;XSblh5YbN8=u f=l>q@0CVTV_!NA0R4uvxS2do=bFr(4ADO=ab~}h1 diff --git a/sky130/gds/sky130_fd_sc_hs__o21bai_4.gds b/sky130/gds/sky130_fd_sc_hs__o21bai_4.gds deleted file mode 100644 index a5b8a760f9a1cf1dbef8c32751c06feee73bcebd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12418 zcmbuFdyHLG6^GA#&V9|D*PX|mX$TTZG*;;=pq6M`!AGnO2!hbSKzT$$6=cO(x&WTIV}^ z?S1yy=P@^_C*|^ck|m|`(4Uf4(ocqx!;?evzbBn?earcqx1P22k|gO>YHwV3&C&1p z@t2-_{jql)dDE`bPD+;4irqu%^=%hivSQWp`SZ@1-*)!=d$-NcU$}C`=CjV9U!5e? zMv~Nr%gNmk~qoN|6+Mq`~AWn^0l8^9^%!G&KUBqO!IK3ikZz(ezk3R zh+p|YM*PZomJgJ#qZIZNsC@bDmWTMIJ2K*zZniv3p49el$XI)e_J5^nPD!5noWyG@ zEf0y;?#)QP{)puv`JoSHB+ocIRnKC_;|7jL_cvB&_a_f89`k>vmW1>?=;<7!Uy%OxH1C}u-cR#T-uUx5${YWiCfm7tUr+cj{Pnp`SFV^56Mr^@08?w=U5&RpG@}y$OW; zc*fFIs^>DT2`R}_r&IgM_vZ{-FO%K$XUU;SGJKEvu8*^x?rXqXwXZwXzEk79w~>^|Jmcz-;{XNJvKtiaQn0`=^KTUFOGk-@bk8IX+IC7aSnwN0Nki-nZl1!#5|)qlaw! zCF1Zs7I!M2_vh2&yT#9sy4Hxr2KlVc3&kLv0`T9=?e)XXJH|P65vP(Pvj?OQw56+s_ zaN=vg}5`~m$#c&S(>A~5O+rW>L&AQwH)Pz zxHIC{*OA?}R$?FY^4?8s4Gh&v_Gtv^s+h&vyb) zpZ>#sH3lj7yFS_c_w{p^_Ww2JuT$c?^|Q+v;`#O$_~q^9RhBxn7{aGzR+*Xnb+9kG_Nt|4Dmw0x!1hbEl%^8|Foax3;p(k z=5=;B&13%Kr};vE_-^yM=Q_<}{^O_lLVskJd85ZU&13zAmpaWG+wKhU zLVseDdA*v`yopWDxIekZyvfI$=1s0~#{KCz^QQMW&6}Qc#{HSS=JjuJn#cOV_@(*6 z{?9&W-rNqSd8{A!X}-|sJneklu0PIUJv$M1DqiSwp5k%+apDno#(d6GJgz@ZJmSun z&v}Z+b;pTE+!^yZPw^UiGU5?;#(d6Ge6C+kJmSun&v}Z+^~;Gz+!^yZPw}{ZIq`@) zV?O689``>^JmSun&v}YBzBD5qac9iuJjL(TGU5?;#(d6Ge4cNdc*LDCpYs%NdQV0? z;?9`Qd5X_<--$=u8S^<$@wo0g@rXMY^?S+B?D^Erd!4c2d@sKuV@1zZl?(KflJ%hW z4a-B~ytj0cZ|WYxNxY?)lX&ObmWL%hgLg|A$^tuBNTwezL zvvJX`!g$~_E-;Lj_U~-0w)UOGr+;gC*mz3MQ4eP%KcV+lPTrwSyjJ;?#CZmD;@9-7 z>m*)Ln@-}qCv_6%BQDmz=Q(~Om#d8%HST%_b+&YDcwgt_`MC3p_M4J;SKB*@k1er0 zZ0osj{Je}qkLvuA<0L<+3h?>Vef8w7uq|vwWiV_bK%?WkvlS)APEM z_~=(G4~f%Hr}n$pc<6argQe|wZXMF^PTo%ucPd`!H~(N>_oEr{h&yBc48GoP&3!Q= z9&xAgi?tu#-*xrwp?#{3*T#&@hj!KG1tj0NG~*Csf4_d58u#QwHvW*~#JdzH$Gh^p z9dAgy`gBI}?9bWJSdJd0no?2^bvjkgV*R;}<1wXi;QbHec#Mr_lb8Q=xbg&Sx;uZY3m8}cK3UKWX})1B%D7Jf7bSzV^cdaR(7kMUucX{ zCi~Q1?ax_O9gKyubcSkd%1_BWZD@^g5+BmJ>?B^@Yk5e#s`vCx@}>7#9uiNsW#l}f zeJAVdh-!4wpYhLY`;^4#r&IC#@v{FYrm)CICQPnOC39BW3|>x#hr>5w$FCWS@Q?{k@-#MY}}`A+ILbn`*p_ZA2~*K zYW|Kqp0TO85=*gW8Clu)VPJXGctZ` zN8R{N>L%`t)z3D}`}PYtK4EUt8JYk1w2SW~mj8*hU+-GG^}BLZyCLq3w9j_5i|?du z;?7w6)_SA+Dre;y-M=aBRJ_n19@4RTPR~fU zXXHB^#GT3)`r$rD^>hD2KOl7zcgE^xyUIo8Ir(k~ai`*i?Kd~6osF7%97pFfn#;tU z8;kv#u5);GUH=A@7vj!{AMWGS?{Ht2l716+#`@28^gG-irljA*ow5FxFSfcXb2+N+ z5O+rEPkv~}t;Bt&>W9=#+!?E%?WiBmN!`SqvHEBJp<{og&X-*ox$h+IjNN~-9qSIh zlXZup$ByRVTi)HE+IC@xuP|{h9I+y5Ie5j;cMxoktY=;WegC2 z`SBcY*Zntf=TPzZjcDB~y`cMLU4NYAFY9mC!<32_9>1~8TI)WeHQAhU=Cxx?jUUDTUz-+*nO*9XUqB(^Xc8|OPOtan_sOj@O6=`R+Ik$ D%lPX# diff --git a/sky130/gds/sky130_fd_sc_hs__o221a_1.gds b/sky130/gds/sky130_fd_sc_hs__o221a_1.gds deleted file mode 100644 index a328e3275cc013bfdb07bd761dea0cb418dc8962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8082 zcmbuEd#qhW6~^c6v-dvxyzV_TSIBKEQ7l2zCbq>$Ox3iPHj-E?<*77qDS}ii5n2H~}k!Gx%Z_8+1lnjnfst)a&HeY55}v+rZJa6QS% z@0>OB&04een%R5Kaiz<$ce&NAtn+)vLCK=2jPJ?dr1J|Na9T&R;+K-s@-gzh`#O{@K|NY}~kE_v{9j zSI(8g%zf0A6Pa7*){WZExgXklbWUV3WuHa#$U}$s?Y%i`C(AwPe{*E<2>N1dk#P;~a8C4g_!Tj~rQ-AX>OF^f{LZ=V1Ciz5@% z7szvj77yXFvw^TfPnXk^R=C?c%$??l4ZG4jc%Qr^) z_VYqJ*t!hu$07^lmg9<;*HZp{K8g!$oZ_{S^p}6p{E_sReL@ja07wGLZ+B<-!QMRG2!zrbH0uS0got_Mjw z{fO{akLQ~D`WiihwQ(F;yu|W0jQ=h86Tg7*eu3|S9mLngyhZl&>mjhS8tZ8i?SX8k z9}#})@qEO`GYb2KkHq@(BX#Z{{DhZ?^kaH?g(0!uY+k4z3{5AZkAI1<*Y#UMKHlu> z^|u)K3Uq%uvW4r_{v&cC{u*;bzg8gnC&wGT8@WN=+@~Tt>oMLtFot+P;zhqsAo?#g zp5ITa5C{7+9rW1kn_WbET|XQ0>-SGz2R}xA6wn8zF>Wb(0RMqpf5L> zj(aBcp3r%_*r4y9Fx}u#jnH|!*r4y8GF|W98lm%cu|eV^9 zXn&f+_zy6C5yH#y#=MN)UiUvwpB*$^`&`j<*+H>cpYJkVQHZ8v{n3ADPx>!6nXY_R zG#%@Y`p}-#SF21{JuaHAS|xgWQr|sgy57B_=~#dCAKH`p{t43!4vD5?{Zk*>lltLN z(@oqUnvUzA`p}-#PtKWcv`sYKXi@Exmvad;)Pu#2!K^{f->+UG`6N4wah zXPr>b{Y#{dcCks%I-!pHmPj4#Vw0YALS6NEBz3flO?uV|_1wQi>S!06^sE!=xPOY& z(JnUWStr!-{v%RHyV#^>olrO07D*lL;*$C)=g%vC|HJ;{U#QpYVSEbAZ$e%C8`m#bF};7@^5Z7zckJKdrhmpuz3B6CAmjzC5KDhUB-`^f)=pN~ z@3Z?O+0IvD{{H!Lco)XF7Ww~cq(4u?E~0($`U&?BotNt8p(V~!NqzZBtR0-EI=4nr zPrHcrq@L$$os&hz?a$kRuqX9A@6vzoCz13^yO{95o#zL)AA8R=#y*};TgTu#kmsQm z<{`3ft)C%3f&M&uBVyV&j&G^>eSQYWLBSdXc?Rx19m#W7@gnjO z*uwcBe+a$;r32IBKY{)@yAD9kXJQoTPGerbg!4eI)85%=50nn9k8i(6h3At=T;I;W zkWXI6!0K+~4|WmuMtygu>Bl@}dhW3t2lhrie_Nt|v5(&)s1spN>if5wZm>3zI@-l1 z{qSR^n|NI$b+n63`pyt}!yegrEVBACKEp1eJsCgyb+?;-%zv7`D{gPrGjH@SGH#A5 zHpS0%&|Qg|Ia=dS@tt;YW!gXc(J%EP{n9Qr`FB{SoxP~>ncyt`TNCEDbtIC0X&0OP zvmgCZFVZjVVw3+NYK_|A@yP5te1}~`dvgB$bI|WssFf!p+uS=~7tx;7PxjDnfc@@~ z8Xv`X+QmUy-~AxsK8)JMzArLww2Mvo%in@pdl9+%LnNO8X&2F+j6XXIx(~zGk0MLv z1a=YaNqzqq`sKL4@qQ~}KHe_oX?^uwi@Uokl5x{6HpO3l$aI}oM^Z<-*rfOW!#srh z@;8vPz~U;@&q<6I2zzq=?8kXiKPKkw?PA0Hd7tBRGw*+5_nXKc>>})G|EN{!c>fcr zzC`tGprwU z6{_WFw#=<$0M=CfEo zo)72X{|^iLD=(Sn|0U}~{BPT_b)Fu-SN(7Qd~Pi!T{&G|h<{dVvwz9z^7iGbxh_q; xWf{KtFHul$eEE?N)=NFJ4Bx$r$LeMH_Wz@;W!7**c-c9px_wt&-N7ii`!CdqthWFF diff --git a/sky130/gds/sky130_fd_sc_hs__o221a_2.gds b/sky130/gds/sky130_fd_sc_hs__o221a_2.gds deleted file mode 100644 index 6fed2d5107ecd122f41eebecdd1cdfff41c2cfd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8466 zcmbuEZH!$-8OP_Id(OG%zTaIp;L?>;rSXL((3*&(2HRzkCL(D8!L%t$1yr;|)5gTQ zXw;;LFCW185-D#+8>6UT3=ts^f}$oS_=R91d@vzsj0hVe@k68a|DR|6_nfr7Uw>Ymtv|ntt_DTA0eW@h7Un}tzm4|bN34nGD;y8D!}fFJ zpGg1NpUgi=d-nSZA4A)3!F3?VA^j@q1TqfhhDdvM#LCJ1P59EU7|EX|^Jm~(a%F{x zCt1REAmeTP*y1H=Z`@lU^bYgIcE}WSn;;)W#z{XS>Q(dS+OU58{LMarT*H?ikz<#3 z(Y}ZnvO91s!rnSy<({zjud#B^+p*p_E+XpF58Dg=s_}fv$1@81k&ndc@h9uMSNRJc z5#d$#qn&H@y}s#0?0Nnp!d}(y3ghAT!^W)`YwRnxqP#l(6a62eUITtc(2L1uv0uS1!XDK(cbk69zni`(?ylFT`>p?3Rw3f? zc5$-*mcM>IqMux^*qi-&_Jm1!>*>p@@vqS%ch>HY|75#Z*MV#HM;kxwC&$tL{TzQ0 z!uR2e@iTgR)&GP(SutI6i)gxJMU3my{ie$@(R3U?`VZx`{_`EC%U={t$NZ%}l-KHu zO{OcJ5>3bar9PC`>f0wx*Eu1Yj_Z&5P+qI=K4-e#G0}8f|I~-_T7Caf(+zGEP1k=^ z^!8f)@VMzlmx!k0`l0_&UaOy3G2QGI(R4E_qPN%TnP+@P=K2@;%t5;dd##>%MqP7D zN$O}9V|wNp^<2Lqb+n5yJ@bq@?wcZYw2Lu4^Nc#~n<90zi!nX(j5_ZBB6YNjF+KB) zI^KUo>Sz~Zdgd8*gBwdyN4pr)Gta2!{w-2RyBO0m�T-Qj$8_#i{x^=g${@|Hc02 zKU}Zxz^}k2o*6rzM{Whu-ur`#`RwQ`bn|D57!>m~SKpWoy7 ztY1+3{!q_;k-pz(S8Oeqf06dVH?5p3a6jv#zR2?IRVycHPd-$V<@|ut;`7h5U7WFa zewsMn{sZ{~dmf1LTK)LEit{Pk@#kOY{CPGorq5qzy5fbB^h>)K)BE$*UD$tqig^mu zIZT9oTKt#sd@#T>ZsS@b=bP^%M9#x-7tU6JT|76BzK^j9ln$KMz8_znV>vDp=Tr30 zpKk+e`u9V|*WQo$#Pf}x|3JQH86pQoo`w5=gO9-0J;?bM;tph-JgbO&E=mrdP9Xc| za6S~fcn)k}{zdvP@Bl8-&bUO_r}f{DZx3fH&I?KZ-M5#d|NJV8!*etGFvNABbg}ts z73d4TB-eRyMM?T={>1!|oLAl#MCrh4{PsRAJYR7?XdS}3{8!213|prn%A@)=o(riT z^C8o7jj(;#qx#MdOfPmZX4HwW*XoCNSlpu>B^fvEVk~~vW8Bn_iMYL8jKt4+jGKCq zanmlw;_u%Lzc?=sF0Jq-6dmf=D)yugVsIPchRo{*hScD$DjHR z)<4H?%vES<7bo}Eb@|74PRt(>@2ma%i?G-FXPz`aZhA32%k(1bwff=N=6Cp;lJrZv z81v71^h>=+zqE@n|NXa`-~KZt>6dmf=AZTGmwJ(YX%}Pu+qc2b66R`qg)d`1X&0C3 z$1mga2mJFLfk?l!i!uMn&n$16A&)#);hT0bl0WH5(`P3tgwET=h~E9e_Kn8PCAn|V zF2?o`U+;IAJLrqR_EFP|u-E1v^&ETZ$9&%O9TESf%%DpJh8gdCCf1L?-(dZ8|7iI` zGH+-XWBJ2+oHy!3&KvDwZ2nsC#r!Ff3XwP7E=Kal-@gz)?^}q|lX257#^Pr^#!bD* zxc&VwFcyE~Nz~m9UxzBhecRi`$@~Ar`1jt0T>l2{|9>f&@5D9iBFby$uk~Bg6`v?c z9qnRF-^onZd7vb9w2Lvl`#E%T=0c8C$Zl#j==m4xF5kT!d~0| z6l;a!m%XthS!0G?_o%={;zcT8T>yrKeOR7m!H+ZZ1px}JI_6K_QQMsdaLU#WQ+S? zD$|}uD$th@pGrO(Y_9?thi!6zxwh;gvb48LXSw+#IsJ{ zyUpwOtkL6rA^NjkKkkn|C&0h-*IY5-|FrcX{!1?p`%#D=?+gFCe?H&mpL6+qzH8fr z_tR2$_KekGFaKYB^M5V#y|@8&f!%TAYX2YPko~@R1N|PZVkMkQHI`&GXHIL>sBYf9 RQ8oYV3H=U{KG1 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o221ai_4.gds b/sky130/gds/sky130_fd_sc_hs__o221ai_4.gds deleted file mode 100644 index 89d843d1ed0a2c6e51dcef49294aa8e51a5cce25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16248 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 G$L{|WXGQG* diff --git a/sky130/gds/sky130_fd_sc_hs__o22a_2.gds b/sky130/gds/sky130_fd_sc_hs__o22a_2.gds deleted file mode 100644 index 8d7b42edadfcb197d06c133d80f6fd3c271cad41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7254 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o22ai_1.gds b/sky130/gds/sky130_fd_sc_hs__o22ai_1.gds deleted file mode 100644 index 05532bd8db085b767d65f99193e9c8ed0d5596fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5812 zcmbuDTZmOv7{}Myx3l*-XKajB*=u)=%FI0e5!|Hp1L4i390G-U*G!9-uuk#olP4Kzq7x!{_DG} zwf0$Oo5*pgM(^FeaPflHU7K2?ceL&vZME)Sv}og&)VM?Mqxc zNI&txl;)%{$>oT_k?r)OgulXgs@G!NefYecA>xQ$#mA9xL^C8FlJ;;SWq38dZ-vc~ zaa36=N80H}34c??Gs60WXJ9PE6JRpigumb(@kcTq|BIB2$3G_RB>hmYWE>nWH! zkN2gF;~h^)f8GM|N7A2nUWTZN8O6P0@S!mk)K5vj-euyS3?IQg{3tPAwjRT7y{uq8 z>I24f9fcN`GTMcFG5>8ILVY*mUWs<<*zWY%@pstqyWM)WBTGMiWqr)16p@&_G_N@Lk z>tFY?nV6UuV*E;}8xvstjI?Lp6r z!3NZ^4|@yism-t8kalHX&VNpC#?bd&)c>lK;U+{3yAti$_;Y&tNxH>Ajtz^XDr?=j~LM>w^uV3qz&oIRA{pwHNx2`b8IwD@Dior{1*}>f<@0i;pQq z$N8t;wHNA>Q=+RKP>PQ8PrYj|)U(cwH)a1RyVgMqyAt+7J?l)JKR+dPv@6T>tTXl8 ze@g0TSC;8nXX?1`l+@9#EYq{j)N%hQsiR$4re~e0k{!rwbyjEfiJvF8&<8*h(`8?3$pf1jmfd*vf( zC#$^}WOqs(7o5t!J#XmwFgzb~jB_Fx{feAWZzb%7dYlYyAthF`M2|(%tNh)vHn2+C^UOgR{Al2sHf8ZS?a2+jKk+r*c_Q}?LNty z)N#SAfBC=Vp6AIqi1jD<|2Sp*JnmsvqP`Js3 z=Fff!&H>c7`HtulWxZU_xT#k%ZjP%gi@*9P_8Oiu@r4=UzoE4&dyD-i55e~#_@0{* z?=uYTO0*Z|&wl;`qE`m9MX!XtQ15&2^9#m!Bc=Z`?qOG=y-?42XZ+D6DH%8I%Ch*` zk8xA4WZbkX%i=d5h~LWAl=MrxvdlmG@%cr4n@2<+D)Y~;-18&e3mwk?$>NlJcGIpz zdtv>OuSHkG|51)ZQb)V8Odp&D-E*kb`zfOV+{3O!d!hg6deKFHrlgK`WtpD!^YJc< z^=lK)X=_(57yk_miT`*vnrIf^mqlk+OlYFn74&Y*2?s8EV(#J9-|sPv-f(C=Y`hwJ zCgAs;NMF6>#v8EX^-mhF=LKFb${68(jIh(hJ<-~gLnzNod|W)DMD~{}=!6pYIBy$4t}{4K4cbYWHT0YP|Q% v)b6x>CwJ2KE&0lywi>64X{z~-Q1Tv}M&2=>Otxx+)5yEFs#9G>{(<=iZ%B-( diff --git a/sky130/gds/sky130_fd_sc_hs__o22ai_2.gds b/sky130/gds/sky130_fd_sc_hs__o22ai_2.gds deleted file mode 100644 index 64d0c394db9d529de1691f26111c6f323efae56c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8818 zcmbuFYm8l08HU%K%RXo3T;}4Wq;xPuZ9+m-s2YNerX5-@u^mNf(H5E37PVTDv@rpy zM5C?OAH*0f6j6f>Q4tj*qNqU)=npjfQGd|HD3Ta#3^58AH1&Pfx4yIYw6ho3p5){? z=Ue+(>s!~^`?R45jmF!<+*qUYSeOVaLnpi>oL~JM`i)}W-goWawf}|?W}EHTZus;i zZ+hs?CokQ2-^;&xbo5 z5Q;$~d?XaZMpzTpOf^FYKeP8tqhx#5K09?yYdVbl`RLDvhw-QXqDpTTsoeQ^2vh&o z_r(5;zV8mf8RJ`1Ig~f~x(ek@USj1CZ}_#6_`}azISfzg`U^_7RoB$v5S)}x&sjMn zPTo$nzg+*0)4#zdtewG!N|I0ikCqQ4pZ+5iUL8X37y9m0dGGsH4)J^EmBjB2Q#q73 zv9~1iK)I9t^uBKWfyDdtCz0~OjaCkc(+{WGTdu!xKD#S)-SH4Q>W`EBIzPAkAo+JL zEE&r+t|Q*8&-BA7zkSlmA%0u^bK^(! zQchk@dDZ-{PW$aD@}GG?bE!8kXYpaRcUbK?@7DOdO5dG|vp*=0RGfM!PxV#XyD_#m zmClFQl3m9~t`Gm>lU`1xUpXJvpX&Dq<~el+#g|j@s=p!i*Ul%cgU&^o-@lgZX+DDD zPL74bACxY;?A5OKB=+Yulz49+1jS|6?dw<+WtFZ{(ioOlP6Ek(|@PU0|UT( z1S_xlHh!~=zd2m@f}8AmI7oFlRbKTMmyDlUX#Lj4-&tsF@^UI(^*5g7{GI00R$Mnu zUpLOB>*qvlKh&>3UpG!wTh0IS=(o<;zpUE-Vx7imjo#YRBmQ2Wi96RUX@7|yj+!^N zsX}=%?#%d&gXT3?S12#Wof*Hi!@PF8LU}Rn%=m-*%^O}*p}ZJ(X8g(2|EbjfNO>{t z%=pu(|1+uok@8~Pnen@;)Yl*D{CKcrdyl>=?o@eo{n+}A`%m-4{_Lgw8>x`5+sIg+ z@%8uN)bsCY>eUz~o^t-#`tkGQsOtZg&Yn$9iEq4;VUc2oykM)C}%4_{%oq5IMPV?A5_^G_s@2)bh`=HZ2<_|xW*ZSknnm2LGY2Ns= z&KR%tdykseKjbv8_oy@P5AHW_c#YFM_7C}|^4j(%kD52N$!Q+@2S1h9`qKx^n_2BN zkNtz6%4>brS^wLtzmkJ1kN-`+lfcq zne$m^c%0i#JmSt}{n@aO``vi{>iml@t=HaX^(nErLUsO5Yb!DC2bDRSZ&2P}QF$Wq zcpnmJ`ythT`uZKUZ+X)``NsR@MEWzO=MiW3A9jE3B;M3>myv)cIc5YYsfAvmm-KKeZkItCH#ub{!?D>Kk$+2(Px#whEw~wivMB-hIqm%gfm#iF8-$4BsQT?0QqVI`g zn#XDN#Yz4{?L8-Pd}s3kjp3hEp6Gdt%k?kr=k9+r7Mi!#%StjYJYzZIZyVQZPI*od zJDQhvg}rwuc8|&v*-zB#RQkN;WMU8Qjm$z!;)B<)WpLu0T@)+D}`9Rw5 z>Dj>P^@`Q@?f0^DKiBw-+Md^#sooJ!XzdVp&gcD!Z<_DyZ8hJicy0TWS}%u4|V`M*B|24bPbyzlpWV^Deo^OO9{Tcg3A5uWi5EkjHve9nSIF^jUGI;1o zZvS+*sGS9k)zcL|qwmC>nZLg+-H+k7^$atjycl<8{KgOE-J#rfmE_zZ?#!J({FcS< zW_?}nQ%#A7;+(P24#l}+LCbAbd;Nun zUU=W-e>)udbM5)-S~#=X8J6ANoN1?qB)VCG9_NKjr`Wg^f#m{XYEM z?ZW3?%CMGDYrMALBA(Q{oZf}{hl86 Y`%LWabvh9ynK3<<#u?L3Hmz3pANbZ5fB*mh diff --git a/sky130/gds/sky130_fd_sc_hs__o22ai_4.gds b/sky130/gds/sky130_fd_sc_hs__o22ai_4.gds deleted file mode 100644 index 4444c360a00edd9801dc156a6d2ef1e313a85673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12830 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 H%H{08epC#k diff --git a/sky130/gds/sky130_fd_sc_hs__o2bb2a_1.gds b/sky130/gds/sky130_fd_sc_hs__o2bb2a_1.gds deleted file mode 100644 index 959fccb1d3841285d06fe56dab74d52d3303a792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8008 zcmbuEdyHLG6~^~HulqW8?yVWoX=^nqn#ib~8eeHO?O4=kZ7ftk5Qf$kiw-{8KNJhb zM~V>9ph2w^-(Y=Ki7z6kC{`sA68}*X{G%cmf}}x#fWc6|Z?FB`eP`yLBc(UF`ORJX ze0#0E_S*aGbH)`eNzQUB8%gu;uH&X$(>>QcYxHkdCdK@P+jnovTw;;$Syd#hWSS8G=l#h!OvJoA#(a~JHG+w=ChU3=!{-m_-=_BGq)W}M4f z&K14HUFwR7#7(>DLF%0Qg?$Ilj?5?RZxPpI%c6eP>nGhj^@I02m;b}L{<_HKOY!@K z&WYXooSXQ(b7Ju){Qd@l33LybUd*nwens>@&i|G4-}{OA?d^}G-`*AGpQPXN!AQ23 zcUwEj_{;f7`Yo@XG+AluYQkNc%%wG%rIq)CI zxUzp)d?fAkD?&dmK0jXx>ZCZ&x#aW_-hclb zc!xy2^SVYLt{>N*wMXcxZsMRtCV{=SGc71+HB{yvWOz~*YSzX?9X4`V#&rx}R; z#`&9O{O#Ki7vdefH8TCT*+sOE>d*D#*M97d9Xp2gJ~$%UydgqA-_F`c^_Krh&Yx*m z7t6k6*OR?l%r2sRR6iH;f3xbX_%-4^AA0d2>_?B_cVP2*`1@tZMijVD--OZ1HWIM&1c z-oL9}Pg(~ex*v^yi`QpQTK}5S@ptb;=RZUK_C@A9Q0uUZXdm^zK;OH`bQ3!xsiR%2 z(-&(o@6-5Vj~o)~*4xGDYX9y4Y6UgiI5o2MdSncC5$%=n^SbuH^g|*a-YyR6^_`EJ zUhHB#)QhlJ`tRd9=6`_rMdpomu`YkSuQ6|VK0@Tp+r@?Xv-0pi3*`>@!z|hWAEsO{m2tS-3L5<`_l1iKf^f7?^*uD-kInFb`kbUeX`f|>B*7Q(Jt2MnJ4;X z{zU3%7whz_Q|eg1B6YNjb^6u{)3pvqQb)U3r*A)Iy3X~H)X^^1>AB7sH`l*N9qnSB zp6i@Cu78m_+Qm9O>zq2)zepYJVx8U{Kz)6O^&_Ho-eUD*^!A$iF>xcT#Ug^JBYr5hd(R8dI>O*^_zO}-1t;3?}SU=Q<_DX&GG1GOf7fr|d zp+2-%>brNEuG}Y@j`c%*Xs^`wZZh4(PSJF%AL>JUrM`c_bc0hx)3JW25A93!lg>YH z@HwUZ8RQvc{qZ~^^1hP1!|p32?fi(W&%qI^Qf+DZ8Z$Hh0# z^A>&hJb($}nfPiX?euH3@%!^1)`S0`J$awClj)~WkLO3KUvQlN@6tbY*(;3xdF5N! zD<`quKt2bhDF~`vk%|i(7eCIs=>O-4=UU|LW08EGr(HyQrJm2TdTtf{c@}mN_Hp`6^v@i3uR{*t zPi(HVF^CzS#Tvgue1Q$*l{yi+%KrO%aNSna8JObS!x|H5@BYx*Nj_f;E{c>69M`{p zKH__Z?0(D<$n}tYD6(}g=64g?0{Q--$#Z$&f@frmN&SH1{Q2j*>{ZAsYQpm&3FuJo}`X;u}CZ;6i)gQmKSi9$ z-N+r{7P*hmF2Y`^?>>&)-Hf{YW+cZ>yNLE$efuuciyhPf^&;$*dObttAAtX(m~*hT zALF?r681{HUtd_igJ&RrfyriDZzAlKdUrc?hww%HiFm{7Xcu9x)u-<@y_hXGy$E}y zzW;8^`{3!3%scI3UH*Ap`onvJb`kBh`p&maFLtpnQZK?@sdu-+?>zExeUHpFkN8Og^qK`n9_==fl>2 zBlC4udm`E^{j)}SpP^nXt}?v{d!@edALw=<*I$n;CNLMUi)gRZ_b;_^51t>%anml= zjlY<&xC@-;89&LmX&39_=Q?X+zvB8G@;A2r+T!x+_Sv zM{WNW)30Itu#2!)>is%_p6iEtk~)8$3ar!f9?SK^_Y)%54eg@VPl=S`o!{xMIEnv% zE1uSHxhs}8u-eNN`TA4#t-5i`KQD9T%6#^0*!U^^88iGnRSf@`=f@NJTkrc@yQIIV zFYt4X_0hsT#_e^jsp5>yvnZ8i_%6^Rl11?>(U+Hd{hJr*@xBP-S*jn7hhw0B>CZfE zf&VA05AnZl^Tq{woCp8E|8h0zyYGsrVs_2(t0x90qW0_PBh1}~HFKMf-#hcQ!aByxg(07U0zRjUb=nPwp~{{H`z$uz5X-D zo$|x4KKJ$w_r2vSi|224Ym##9;c2@2va8p=_1J|=E?(Gu(ZUCJFDzU!yM6oYwuM>e znl0zjUfq4nrTw~_aWjL4bM9e#58e=&OxkA=eVVJHe%|XR-2v(+)??78KsXTdL!9e> z**TH+{*Bh|d69Fy>+oGfd+$nXC#lOHkEA~TiM4w|m#;BBnM~pPA0pjzHonOA{uivB zq&XUM0>c&Hbf@51v{`2H;X1#*3pb8LM{Z$Cbgev$*`k4(Ofu`sTP@yGf1 z`DuRG{5Jj*$?+S1w(&{&Z)}P5?I(tIknuO(7)ig4v&=uq_!_^DWIO$eCGlO$^~3J> z^R1s0$#`ntvv^3xQ@bsa@zAG8KWrD-R)2@}A=3-ZkBIS#`MNOd-}f_~!IRi4k3fr; zm?56*n|O=Ipmt8j_rP>7`hF6A#A|JwG!Wwy{axez4Z?Y2uDoAe!@#cIt%B` z+;V-6dZ$jrndV<2>_z?hFy9%@*L@nf+lAOsPh#_2vx~5g)4$W_>tqCn{@uSuHvW$N zgMdYjJ3v1X{l|^x>vixxjCB*{^6>(3-gTbF_rMPFlA&FsJ>6*Sp3pm-KOBe5zJ_+x z%#c{i?$7XDJQnf6Zx#q$F}@3YzI1(XOG``h%(sZKvCe!My}hWPi}^MU`>ndw`jfp! z%r2t6s9y+rzhAh{DQdlo`HI<*$i)G~FP@FhSK%GVwMaMHnvmHhtOfK#wtV<53vB+> z>Pdv3VmupsJcasI-HEC@aasMX(9^rGdr@^Sj@JL5ynk1|f8)%_P zfBPlmb_V&sy})1L`arulGva?l-&HZL=E+KM7B;uO~Edry*U37 z|LoTun10CnP2Uy=)%wmSOfPnk4~{FsUh3a1+Pqnh%%dmf?d@X4{F_@%mm~#3=k4OC z-s*2s>yN$H4g1*>zEyXgzP%X#GJQOEhxPvg#=xr=xUBvy|2j_=G5$9=ZxOxp^{r{swf2jq zYfX#Q`u0nv>)bAyj{A@ChxStc-6u?!?-NbeeM0p1Qho0M)Ae_Vrepone`qh&Pb`{l zuu(MK#G>f!rFzy$j_Vlrjo8})E$kxfrFzy0b&aDVsiR%2(z8ye=l&C^qg|}hvree< z&oqJ5(Jof$Str!<{1mC9U98fxPN?JgEmB9jSfyv3P?ztEq>gs6O3yl>p69nn9qnS3 zo^?XqU}Ge8w2Nc)lg{67Io{9U{P8c;YaRCxtXr~iC*GGu($4!1v9TXMKZo`}+9xiy zcCz^)#D#lrk?n>=->0dA}v~J?ZZB_owL2`SHd1P%rvikdN3uN&?IhdNwUKPEec$vXue0u>k!mtc;8T&F(n1w`q<()jS}iQ{t@ zpR+{&Tn4)cd#Rq!mDKV45UE@Cyg5$q?}yXV5$_f71$sT!P~>cE*MT1~yBBSE z?h*NWNBacm1M9qh{x9YhC_mu1cznK_ueW@Xd@ib89?3jA)TfA0yf2aVpdUB>gIv${ z-=M$4$T)e=A-1>TGxnXB-HP!J!yE#+?rayCiyS!+{qIkx2hopi653Fk zBF_QVrl>f<;(YA)vT*;Ceimb5oa}9pUCfVm5$&aV_akWkf}G$PQ*3<^F~KgvUaI%! z#ZH_nuY*3Ywc5@R5%x-byKDL(?>2o~>{jbLsDJtwyPHif!d~jXi<)8nay+|<%p2|E z%jK_qs^xFU=PiHy&5n75z0^P388`DUGH%+%s`z=GsC^6b??>`CA=*W>m-=VF#+9ZQ zS@Zt-69{{$zWaITr;)$+6o@+Zc5%8~-#QI({t~tJLS*AQe1}~`d#V5WRp?hY-$UZM z>+NE_T;Ic)#=7le?~ANk+Qq8+Wk1#}^+Td=y%w;&1&1b(W!at}l>#hjuY5-+zs3P&+Te*HMxDU5<7U?WOxa z$KFjY#d@!fWbSAe(O#`Iod+iqVMXX|dgUv~Vy)=J3=c(iQFH%RlSf%GVO&#}uNFD8> z^f|)9Z<1%bbT$8POkZ1biAxWwp<46lWbT-Khu?SRv!B9WdCC0wu<@1a8Hk^!(&3+% zem-HmIX~XI72{2PiLYC14F2!s_PEwmdhVuqlWA~;9Oz&AEoY7Rf5rL`{|TEmjOg)u*vtFxoPp%;W&G>cE^K=Bdd460vj?N+b5-^a wmrkWToD121MbT5;-tqsaJC7Z#+W*tGm+JYouRikTcYNNco;5WN+h)`K4n=X~;?2&D*0Q5lTyw6dX3pI(vuXXzd7EZtE?ly1-IB9s4tK8JbT03! zy3e@0zv>pd#e+5H-2L`5y)H5vwckY?Qy+@@m0mwuxs3X$Q*qMW;Ht>(uyd2&aZaRv z@>cVc*=pzJT^~vRyw94Sq;BHbNcty!Yktpu=f-cwcM<;aYt2tmKlV~2^<((y5xUV$ zruT$zbc6Xx>PLPRN!`c;<|p0rIR3QA`cHBG|DiyE^pD?UevKcK^BBPRMcN0xXns%RGmx2{WZZ%KBAFNC zh$Z>_j{VyAsKx0!Jd*MH7Fs;dGo9-^f$t*xorld&GSAN9Na{Op3Vss0)(<1I+wuJb zVK}Nq=+P{3QJx zhlo5%$6Nm-j=K_TWlbdWsiXcP^R3-u`I5BPZi~#9I#=cX5=ejbTJw|CS5OO){t9|P zq|RadVto(%-#`w59A6c67HO~j!Tcoc9EXVU6vum}?Z0j#`+5EX^umKU79TOc3}e3) z@dF#kw|Ob@3#7gOujco>6YCk{&qeroULF_DUyOgLk3Sf$AI?5Jjvvo|+V4)pa0=It z<@@WqeWnv}jq)E6_M(187{6V=eu;5?6XW}LWamc6VHe>q*I$LXxfpZ#kI34K(8Dgm zKbPLue;R$lI3t)Zu{$62JQ?Q}MNA5s9#P8zz zi+a>W*cpfZ5U-feF>kOx5709=zb-_r3lXUl*2f+n-<7W~tqT#SE$UD5`ugkEzqdI4 zv1M2X$J_l=k60hxE*?KC{w)2(wCP!Y>OG6fx-YzEeLm~cfi0=uV zw~Mp&*1vu|W1RSCUl#kY*YYFow?FTv$J+0N{lpVO^}VO}7yH-xNBa@R-~BfBF4SM_ zI|Ju{U4*?<&pK1b`is=jE~fOnkDxBgBB`TYOzGLD)U$s@>Sz~JdiE)G>|c>O+QpQ< zwbyj*?UB^cE~fOIU8d`9jiiotF{SU@X}bP%BB`TYOzGL@@cX_OsiR#?>DlMhvF}Cd zXctrZku|0p%_6CzT}BlHr9Sve^_^X&>uwcI z$Ms8n@R#cQcABpL9MN=KztjhRseWLa=>}JcrsMjhKKM)ZLt9KYyihb9*Dv+KU#cHj zW4h5yG#%G3^}%1NA6sU+vE8ESxPGY*{!;zKwCN@u5lzSSOMUQ{>gVk>-Q;%BbX>pG z2Y;!4YM1Gzw~D6Y`lUYj57dvkJ$%0CAH;LXGe+(|9gJIS!Pj~LKY_H@E-^pZ#Qk0M zu}J#)5xIZxzF4Gv8b4wK&q-73@f;LLdvPCZcJZEV3(g-%{|KIgMCLtwwB=9IKCn7c z;{xXz|1UWH>PL|<>O@xmj`4jjlJ*?$oy6)o1Y08^>Q1Z zNIS&^d*ItMm!pU>laJQp=zi|>K$qY&@+I6jc?k|t1Bk?%R_7x|86Xc%=1 zbo-Fo&oRP4*1I!ebtfy|!uLg1T*rQ!cOl|T8S@=@&wLehfgL;#k3E60 z1~xEm9xu{9d7t^o3gXc(*4}P zy#9*$-!PYaUls`aT>6cSPaX3mYhS_dKaQl`Z8ASuUuk_TR!>1~aJlzmE9q!S_X0(TlW;@R!D~-U}V}K z9>+a~x*mUE`j*&9$7kPAFS2iVUNO}_T<6T2>tAHvw2P_yc^vbmzDMNk?P4N-9>=_? z7nwKhVk-Y`)AH_qKazRVE~fJ5{a*w3g}na}o478~F2Y_q|2&TKM7`LaF}(Mj8}U4_C-tlw zQyC9M}+QpQf$7C<# z*d3AlyDjY^{H5{v>`FcF;YI3b7gKsZhh=z=P+4E#GnhZx#iPpOSNlxI`!$}&6FP4f z6MEkFQCII22%Wc!3H<>2KKnBEkA0E(a(stfguk?YLtil6@R55;(mek z67R=%+QrfG_+zX)bmOd}2%Wc!3H>`PjUG;|9>){sJP7KQx$YucRE|XXzM{cPI~V1__vR2GGXL_;e@p-alg&&$ry4Z`lFoo4lEyui82I9@cGf&B^@q6S3VKs7EII<#T|(d$rep za6di%UW@S@sPB!3V_T52a%z1Ia=2#E2 z@v77lxWd1FHUA$nzk;z>E_v;-{eP~!ZZ-c0EW|$awa2bL{zlXT78^acV#&;juRZ#Z OMW_By=^L22y8A!KyK8Cy diff --git a/sky130/gds/sky130_fd_sc_hs__o2bb2ai_1.gds b/sky130/gds/sky130_fd_sc_hs__o2bb2ai_1.gds deleted file mode 100644 index 4dc220193460c6b007096eaf9eebdf53e9da913a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6734 zcmbW6U5Hgx6vy|y=i`2zYf}uysF)A=U=B1hJwzEYPFhhSTBhaK^{dP>679v0Km)Zv zNF*dbkO>r_Oo}KiF{Z*EfVRp_ak2%xpdF; z6L${oUoh8cj=&i6iCoEY&!|)WR-#XMvuWxFtiIE1roMR4m{Je;nrCf>F@?X4QL?>oNZQHh zCyc+^Gdv*eN^=S0-HSes@jmgR#CYxE*~xgqrQ#=?en1i~!1o!?-r<$`y>e#F)yPDI&hgZhUuST;+cxK9ctGuPH)beoyoy*P(Ko zC*!MpAn}p59e$PY-!8s2%x7|3#;t8l5&moI#6QXSs^>fzU-c_#C+WYo!jpbEu5y_F zC9b|_(tmvdt|4ggQO290?Zf!WWBB_7E+y>LvEAv@^V?|0?{NFijx7DG59rLF&ZtCr zrS@O{aD7r2y%Kxeew47M_0!z^WdHBL-oqM(=RJepA%|Uw_Dp>|N_5EG&4g`RVy)u3o)5!1Yl|Uf{vz z$4Glx-|yE)G&YalOaD4pA97ny#f$tve+`OV!^+>)&M8uliMD*tC9*)rU8%zdt?y z@>rZL9XNkZr}#0x)2{4j@jpUeeOdI%TDRzxu&3j1(cAMA{j1Ec@>}@6g73=iY`xi! z#X+2f8J^q=v@6k`>A!YX{3hE{gkNh{=J+pe62HMjPx_@@In2M*Pp8kH)}69`nU#cE za%@|FO+EHfjdiDlQ0vap+DFb`_czulc}LbyS)Y$FU{}JPspmYY(XPzXhYLj) zMV{2ruFTWNQ$)w#Ecz#@qg|P&XPr~W`d3m%yE0GDI;D>FtE7&0WuBgOMjh)Ro%L|9Fb%;tNXA zF@My%_Dp?wtmw+8m7-(*sCVs|`pOm2RSzpg$NW+6+B5aFv!YA3DMiQpQSaJE>O0L& z-XEEr_#Iv)Wd8Y4GXM1nQU|2157vsiN(V9i`_Mbm&U<`i={VN^MYKE8Uci~ARKH-m z_}19?)*~Ry!+^nu(4X?O>vK`sD_}4h`(TeJ+Zne|*2ms2pkD3Ajf?hn{uj}I`3=kg zzwOEEo`oft_rr+AF&ILgaF3#7jHTZsRx)@<#!+ItcK+;qgCjC7$@zwVdB$_GAGTnP z9jo7=?MuwrG5%N9U&-f(Xb_hp<8|Y=^Ka){nhu`_5IkCOM7?5E`T zv0E2X#{t{<>$dCbo;P@}$oqLR{sZd;yAt+HJ)cAEb0_Lh+2;8)Q(t>t{I)z#z(4Ku z@7go<#l`Tu6xU2oK8Mn-M0;8<&)@F%k9AwPAa$$cvpDTa*faG8>s2_03-K!PhQiRU zggsMV#*HC!T0ZH?nx|cf_FR1hbEm#Z)GYNC<;;A273)R4vNl)rO4u{~7tbJWoG-yf z&+;s? z{M0empHswoSi7?I`LU(`g3A(ji1!DKpJd#$D|6%L`H%WZQ143C4SyGudG*77tQ+c^ zMBP}sGN*pnk99-6l66D7GOvCjya!LkdDb!iB=b(YGB5w^$GW9X$-1@Yzhhqg zRti|Fm53d`$x6O^pj`=jX8oIwP_sNkS9nHyFn`#UXwTF~gVK-jvOgL3<8RoNuxILP zr_dMiC#yUeH|@&2_=81=`(0eIXS4uo3A+;Qnf`gs2Sv;u=YNw&jXnSQj?}eh>bcLU zo85Yq9ee#Oc&mN}76FFuyQs0~rXF>m}pZ{o!|7+H} z_#d1#y+w~VBLDBdycQXL%EVpqldZGAW;O0pZ%|#Gjrnh-dZ6$6Bj@|$=q9fGwBE+7 g>(?heP4Dfm-lO$IqyWA_dfMr!Wg0X4>E5Og#Z8m diff --git a/sky130/gds/sky130_fd_sc_hs__o2bb2ai_2.gds b/sky130/gds/sky130_fd_sc_hs__o2bb2ai_2.gds deleted file mode 100644 index 18b7ac88c3bb5e67d1ae799a12c1c1adc7561f66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9994 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o311a_1.gds b/sky130/gds/sky130_fd_sc_hs__o311a_1.gds deleted file mode 100644 index 5e1dd039087ea66f9a797ac147729abf36ead5c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7984 zcmbuEYm8l07035Iult^RO9o|VC5^%-Ds=3J+EjEp3`$}lR(TkzjJ&}%pshx0@xg}* zMvWMwQ6?$~4F-8?)G9{NSf8LVB%py01w)kJqmd9XO|1X_Ui*LdnVEYIbiB#U@1C{y zf3LOnUT2@jb%jfkce*u=r1@vpaZ|48PIha{zg;gWc3yMou1j|9ac(lr-?-&d8{hhi zI}dM~J8=4~3m2W|*5uXNHAS&|$DZj8>*ue$e17+3^H=YlpTBOy^zR4Uxhp|R_De@`s;ky{E>{K z{d6ST+mBj1neVr8M2t7ipU=PDu((_2L~^`h#>OM*&*vD(_I$zG$>Lu8{(fY3hI6eQ z$Ul&I(~nq@{~MS;*E~nfaa@tQV%qd%_5tfBqF-fx*{^M!?6Z-KKl_-)PcpysuaRs| z|77hX<48Xq$#}BkEgq6_(2rObPx3h%C%Gz;{&3FwdLtQ6<7bg&+;D;_OgCU$agF2Yj_rNxf$`F zUgC!!N4<3eo0z*k)_cVDrfUX5KW=x->R=!f3p9O*+sOM_48rA?)LL_2)a8k z*Uy*8+QfNS1U50R?Vn)20%_+*%(mk9r!gPm5c>lcScJXJ^GN(1#(x6GBJBNhtlblK zu0PvJ#8-}g?*FWpWqRg9Km2&APDO-Ls@K1H|E{{;Ri`3`E$g>=eYRr#nTzsAU1vW; zt)cG4{Bn4NU4*^te~~`hZn`{=q>gs6PTyK>y4Jx+>Sz~VN?)u)f9OYi%=Cr0t~!4D zX`<$-7h7kWUWC0e|6;Sn&Fd29&tIPqKkbY^v{&kV9YfdKXL^!4+Qqv32Mbs`@{7UHzKq; zZ#=zydHmY{5P$C;t6#ByA;y4RguPOq>@|IQN+fl(i*-4M->R2}- zb+n6hde$#>tY48j+QmA3`-tf}`y;8NU98iyPU)9*D^f?hSf}qlXu63jBB`TYtkbhj z>6i5@Qb)U3r*{jeuWzw_MAXjtRzF5>uc;r?rKgCdXZ=v0?5)>l+fA3}qUl&a)Q9#; z|HWq070-yKWBpJc+AH;~)uwA56ivtap+2-%>f1+5*V!+cj`c%*Xs^_FpDt3jZ8&OXQg6jY@s`Wz+fl1w5CK)YC3v{7OBaBl+CS=S8t~ zCFUA-5%zI#fo?z=6ok}n48}ii>opJHzMZ1F7BBde?ZKE&Ew$XI>Z=Ad++_$P8R<~J#UQk z?@79d1Mfrp`x88KFy11t^Ay^CfOiXl^qc&{{FCWg9K)B`xES&M3NZyLZgAZE_~)VQ zWb{YPlI)*f8<|{+_;|K&YoBKN5&vlVws=~-p7TckBIk|cigokn z_g>6j&N>g|ywNV!&EH@idB2FdZ%49jX&2F6nLqonZmAy;_3Q0oP5rVT>y~z7wgt-I@cV3Jei4pg7tvlBfBJjqeva>+NPo?NT||4OequZNeF^i;`47-T-%KW*`X=3X?;@!6XshCvjxzAC@{cl9*yj`r(^E$)p2d_UP;=1AO zV$Jn~*SR+Sx8U`2#J`|+X&2A1_~C~Cm%YOkui*b>#VZ>wcg2Yftafj8K6C26lMZZq z?vpr$@>#5)|MdJlcKAJ2=&!d$MQ)*;`|sbLu9xwDv_RrrQ@ zOpi#G#IsD_yUFX{wnUHjH^^tXev}V$pnvHveETB*FIyktf6KXZi}ZN^_|pFQ-$p)g z#Z+-7{<$n=|FYCP!%RK90yT3t^_C6C?wji321dS8b@Ta^s`*cBi2QZO9(iy5NWFqt a8yv=2bSfjq<=~iCjOz5OWi>a-%>554&ZW)( diff --git a/sky130/gds/sky130_fd_sc_hs__o311a_2.gds b/sky130/gds/sky130_fd_sc_hs__o311a_2.gds deleted file mode 100644 index f698044b78fae498be522bc052736a2fc2a278a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8108 zcmbuEZHygN8OP7PcV_O~xpQ}KVWlozO(XI}Hp)^GLaJuFv_hmIv?4_iRw!*mmT1~f zweUfc`V#$MVq&x_hD3=(gy3tcZ3rYFhD80K;D>6$OCTW<)A)jk80!Cjp7XzF?(WXC zY$w_L_C9C+=XsguoSC`TWv<=6$<4Id-IrbArd`*)*KMx;@5*+zbk`jRZa;9yxv5V2 z;cZ{N;@aQ*@YI#tkA2{Q<(qGCGikkcCd&@qeQ0jWrHlLTTs*jU@zVzv7eBjYZtnKQ z%UqH>mkrwPK9^0j-K?7(cARsM+u!g#k?EBEFXEhJgB$4=ynf1^pnl>dO!^A=$H?+L zeEyJgq91>M7$+y38*Hu+`T-p9Jd(Qda3t;Jl8uweQ~3P7NOual%Mo)R$0v5$I7vI> z6fxgg`P|EV`uD)kH=HZ}Tp|1yzcv3P<0~$UWPHU%VH`|9g3s4R(r@vi`6oF}KO+3q z#?#wkapcDn|1@cxrGZQkVd$o^4W>l;ziK>AOv4&x;J zc775`zZ@6om-C7>{(XP6pR{?~KaHf{_Kf)_>AyXw5dH4%!skHtC&xv`(f+>0LwY;> zh%4f`Ev&ztydJ|B(ECq7i$l!rMZVvJKk-q-_BDJKVW*DcL0_%+=l%S{us`^j?L7X= z^WDGs9}W?rR`!SamHHC7QYT^$@`ng}RlhCd_d%cEEMmv?OR=6te5d*D2X-&T{5Vg< zd27vQ_4)*YMX$IAB3tNP)<)!>nD53pfwT{y6QQrpf2)sI`>8v9`t$e3R+&rz?cc+r=~JyXbZ5#T@mdUWC0if1cMHntnvo)7!;iv%dJE>BTY z=VH-x?ZaZTKDotoX)2nI^{4+ZUh6;GYP#$d(R952)Q9m}eZI+b`O~85*niZA@mhWF zP16+*il*cGr9O<;>iZ{6R~`{f*FPzGd#!$O+;kKBMAHq9i_QAUWz!9Jh^FKI$@s%~ zt$+4O`H1zuIM@R%>>}*7diDu*or@!>qg`y$vrnk!`W308U2M{`PpIR*AyP-X*raEl zP{;jKq>gs6NzXo^j{Cnz9qnS1o_#`Hc_flL+QlY4`-J+5eUa4BE;i}eC)D%)CsIed zxTb!}eVxxse*eS%;}5Raqxdhd^)J+MKYA;W_Wp#8lf3WqIZE{XI%(sRAl~!c@SaGH z4_~lxzu$VlHS1#(pXCLW&xd;EMf!Z_Bl8k8Da=b*2BJZ!ouk1cc(w^*!%<;U^ z=|UgKaUS66^)uy`SU+C3&ijn5+YsB`s8?WeA+E!H@DZ3D!#JM(#Xg=-`F<{T??7IA z5nrI@1=sSA=VkQiU+ukZ?0p*7i}oxK?{&3$z8CYokMF-?|D%WjcCks%_gd=4-e2L@ zzwZV%>G@tteR@$O*@&3_iD_e>GvYvq4}^=sdX>y186uZZOJ$i86L zg=F8bFGTt)H<~}vf1mTqNWQn0;r*5Dgnkm)9}aaBX=fZ_cLw7x!e1bt!#FM?-nH`C z>H7h_)<(SPtC95MYZS=!THqN;M7e6<> z*oS}WMc8Zo4|bz2OISz$i{y7dw2K&T)c5+PAMqEa?}`0peeomHi~So+FT!5yzu!aL ze@Cw9S26!KKEp1;-l*?!&wzf!H%#9XcQ)%8H}xXprhl<1{`AWhcQzNvxM>%g;^%pc zoB9zEx3`N8@$)>!O})stX&0N~@9aUGSZ_%yvWN9dyNL1H`nQ-j`mc2|l6^y$E}we}4B$|0Djz^o5A;x;G%j9A(1&W_9->3mv*tqe`^*x)UWk?B4Gd zz5lMrY#zM?yNKG<)~`GP9j@JAe}#{uA7~e+>h<}R<~M&il749yoBU@X?(7-Ulhn~J zHt8Ln`xt*~Z-t24+r@_Xxo@y{l7}Pdmv*tqKl_Bwb?l!J|788s5yzkR#@8?Ilf6&b z{ZlLoyMKzX*IqyFa|PyLyd&aX?(JfDUM!Ik_K%Ob>;nE?mThdg)MXb!>B>#%{3S=; zeQej?zU0c8bm3;$c$9nw2}e1d>8Ce~C(JkR=i9n!zUlAqIBIj`pTjJNT|S-Nc-;cR z<$gA%M$Z>S@%_!2{qy;% zbHB@`Gi(mk?9W=APM(Vz&%NvPU0jd0@#<}JZ$EO@J*dN7EL`=o%A4x$KNXbkM8`l$3xgPBk~F1!wSYido3^i|EiE5Krcs#^ zDmr6oJ64BpC;_blv4~K>DpV>=EVS4TBBR2<1QiE63XN@%3Imx={r~pb>+bWCdyW|H z%$r}%TKm7(+WYLY&N=(ugjT54E(ps*wf48eNLUE%@T9O-{CDWqTCaQcE3dum+Ur8- z)tk@RebX~vc<*hGJZtZrr`>w!!k35TX1R8`)!P5s>vo*+w2fC?v9bU1jjQ)>Z2amO zJ9b>Q@$}H>gwPtRh3i9WOD${<+b8NFgwNUEdM&frvwu6)rZE}%`aMzK3pb-*KR<+~ z`dHJyo$ZT5*!pM)&hC_sFA2dJ?JrJ#5#82nG8@09;~Nw(aj2pGmqT!3C$3ZaLHYeP z`K@j!jt0K^lmeCC>Z-+u#e!6aT{X=7)_h==dX<#9iEF z@gaWVI2CVDK5>5Me_weh=KO0ii8sH`;z9D6yC)O>+^5VBTVD%d_MMsdXAhbmqMvy< z6aUP&%n!+b_BS${8vEQ2HNT1Y$GAV8Xmh%`o!kXs{embeu<2ie4W^**31vF zGcKpbH)#BE{gY?&!VpHMGr1l{u2=j-@)~))1!`DeWd)gz2=ALhi=bAKlDfDhs@v5cQb?5a_zT5 zaN@7O*ZdHB99c&JSC=cB0x1>M!QgJ6$@pTYpw2 z{bF~@KS+O3To2N5O-z2Zz<*YKxaQ5@;y8c)d=(yl z{P8`^zthe;CxCSj%wN>o`Rj51O+&jUXuh0dsV}GOMg4}IzoA$!*N;edx7OeO%=WU@ z=f^aEiTLMVWd2B9%X8n>abo*it$&TV&+qGe9oMl_{Y<~z`h)a0-YoD(TI27~u~Yt$ z5%WiWho}>@@5Qk5s*8!(e zDb#~wF@7koCte4f>b9tVY1B7PS$}46{9||NJZ}$S%asLwP3r@@bNi#cqTN}cpIb5=&!gxgrHgiFg?{aTCg(Gn_idTno3T6PFV5el{AovA^nEIBv^y)} zFW+Ull`9LBF4~@k(nY(oLLa1O{6o?^88>$43FEi*8|xV>R?iV9-jDRG z&Sxy~g!|D6dey{H*1c0gU-yyGe)9Z#JyxDw)jslfj-9VQWOvG5s;?a|U42_7I_%CW zePf^Ln$1jf*qv4S)=ty$d_?{b9d>7xzO!Vy&OMpvusf^t!^cfGaySzmc4w7-^r-2& z2Q$%OcUI}C6Y|IU;Y5esS*0I8WcrD-GSOjoR_P}Xm~LuYCOYiSDm`_Iys2AGbl9C$ z`k9@kn|UA;9d>7xo;pX|_&%P94!g5TKY!fx3x_k&VRu&PxsMWm>0l;0?9M7Zbq+oC z&xsDZvr12$Lr48{qQma2(o?6=QNNw&usf^t;gIUnpHY9Dsy(l;`eTgtiuz-^`ZlNO zsXypz2dedreWq(Rou;GypilnN_^q9$YdzpJ9rXu&@|Ws6OQ!4G<1`)h2YvFF>W7b; zZsf4jbkra8$zQ4;J!-n{L8s}cKj@RcR6ll?>9$s6XhF zzf?bYz;sjFoTj7xpill%{q#Q5^_ou8QGd`Uf2n?Er|D)MaGH+#gFg97^>a(6o4dzp zI_eMlJR$lFV(Le zGTqj*oTj7xpill%{n`Q3t#5Ohj{1W>`A^pOhPu4}PCle-g!f;O`o;T^v-98j_bs{x z6R{8LoyXbf%J(Y$C1P*xH$TMQ__<8{L)Vxe^1d0=&WWFollsZ~j1xQWW6t4YdM|so za&qp|ec(MhPHg|V&cA%l;XS7BGmTs0A22`R81u8LIgIB)ti4Y63GHt=vB&qVNSpuo z{;ql+KWH^R+QIt$8vkcAvFAFgezlLm-nkQh=ZNWHW6|D|o%q=gcaqoK-&=kV`=aLA ziJ$KuoY>R&28}=NuZ(>_=TvKP%l9(b*TU|Ue~>=zH%$MM+Fh-A7x~^L?x!cleQVu! zosF|KzQ52oonO$oyido8>}!r*qW%&a%85GZ^f=<6eByX!A5y%VwJx-doQwmzQ}#jn zxL>q3CS6b0l}LNOcXBpfWAojo^6r1Xa=qofG?(f9h=bzAe3$;l=4b2Wnam@0=L!4c z_I}w5Ut;~%uF{&*oI$=H)3<$nwyu@^8OkSd^g~*kZ_yklwqGgVisB?t|?>rQL$ zZ2qlck*9N2{!i*Sk#*adRs2NqYJJJ_gX~Gu-syRZ1Lnu-7vJ-AF4Fmf@74PMr_A;r z%Dz`QCvsjUzoYnx_1m-$^swS3az19>r+gEs8wxv5uYUcl1xKf5<$<{r^PP zZR0=mm&m&9oThe(%g7@<9eOH zPU}JI5!SUr_>u%xmw*Dag^>Z>=Z)?ik zN&FSnawqm>eNW=V9{Wl3yv0G|i}i#3RQ9D|SMy1Hr{+C=Z|)q`x#9li9MQjftD1vE z??)`gv+v{6{>HNAh&8uzc7fl}IIufUE7y0wqj(=ty?;mM=*yL}>`wVh<8QgqbmOOI zqQma2(sw?kJiEFNTv{Nu;$OEsKJB=tpm%Z)!S0m3H2;RyA@Q3}EKu5LcUHuw9dXe+ ziHqG?6@T@x*4y2>PG6kK{TsVe{?hyxKWncUI{q zUZDD`nmF-jX6FxdEW1FBya4_s{C8mC~vLTww}A3JcD3&%3eDEv>P5ZeV>16 z`eEm2wVu3*?<8;fbynqHJ7{^=Ps=24?9QtEX-D4Z`&8c1?ySh4cI1uTN#59h|sbq9T) z_nV&jll-OeYoE5bb)FlP2P7_bXH|UK#phw^oIJ;1cgkKGf9g3p@8@a0{xfqV=va2A z{FQpnJ9;PQ9lf*a{0BW}aoxrD{Y2I+c4yW4r5)=QeVBoh80cB+6d8e&*k=yl>TW>~k|mUl0Ozr~IY*#XF>H>V5a(0za(!Y;hQpfPsHw&zcl{xC$)BT-L7a)$;ow#-C1@0&fh29-5US?OrD#tJFA|b zXh+>a-{<|Nr~V{=Y5u)`v$!+Amq}dg&Z_wF{rHD^@4Q9v6B~c5=ZA+?e-dRcjX(Bu z#rdG#AO0n?evXc1cgkO?XWt1u`#er`*qv4S(OuF#Uu*5V1%6-0*qzTWkKg+%t+RLQ zJ@oQSwAh{Um*&rR*v$u(ujb0xdY8s8yHoa3{qzsiZj0jGTHu|!A7XcI{=M6#_rH+^ z#qB9~)w@1Fr(^8S&HGQA^mD57&2Q@ZQT=zeZqTvpPT5QIU(OSdv-x_}FWH^) zm+BY(PVJQc;u{N8-qG%?$bWg#<}LmnLh~4@d5d;u#r(zJRYV~TzxtFe+MN}8?(=os|G5A6srz2EJ1g#g>~rva0s9|) z9<%)qzIRCe()G(e2RimY`jjr(oqNjXk9~^aOE>@V8@afzktly@eD)d8v;W{kANM5^ zWsmx~H5u{Vm+W=Y7`4#JAMTfzVlKop-LLtC)}JmB|VDoTTsG81*kXL9gEn zX*?(E`{Q8@#CQGqzq~2_PpnV*pM7rny?&Zc?Z^M$@waH7qxIXNwa_|q$EN5%k$UbW<#diNRs|JZAKl4_2V`R>zCO>N^o74=Gg)^?x5xK|(PkNXtV{My{ceL-5U J+~OMHe*vUMcbfnJ diff --git a/sky130/gds/sky130_fd_sc_hs__o311ai_1.gds b/sky130/gds/sky130_fd_sc_hs__o311ai_1.gds deleted file mode 100644 index 82b6534910e6be33e7ceedf0a3c5b0359011437a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6910 zcmbuDZHN_B7{|}OcV_O~JF~XdVyrGElu@{ln}viGyX%@(B3Y)T=1tSgvNV?nQ=tNT z{UQWWZd8yGWJyV-1d34>^q~)ZP(lbIB*_EDzrD|y|MNWO zIWPB~F_9^kZ!=w`a`hWiH=U+xE;3WH|C_WNtzWll)5=Yojp?X_*Y-U<^TtnJKXui> zfy-VUTDr(|h56daQ8akp=AIeT8+Wg64BpkaXRy)OFr%ku<+?_XF+prh)K)gzOf;@+ zx=nX`#Tau)?sS!B*dhNb@k}t@>-(*~!)&F#{2`p40QY&O=i+mhF-qIs=Gw^}#*`lR z46noI?~GBJQ_w$(92{w993}jXmd|?T6Py;m!I}(_U$7XT9hq0TZR2>yub3o1|7s&TRv` z683yOa;#2=ewt^p1A5q%XwT~Ju<>=jFlWx3>1X~*)Dd;#CA9XeUi#m``iaKY`73$8 z4QxB?d^w^$t8cjeH^(#D<>EO8pJP0aq5sOarM`h9p3nLlILq-Ep=UN6PhOTf50tI* z;d>k3`Juf#*Zh7E#(MjIU(fX;&82pU<)G)HjL#Si7>I{(O#gr(Vgr)2=M4 ze>6+_%{`xWwBLp3Kke+lYtPnC)}P%^xZ<#PBwTk&m~`D)T6=*Wxewou|Da#^bR4!H z%ly^-a0veQU{9W-gz#3}LrQDU#&6M=w}`GXRVlji7G<$MSSGqKREm!CpLw|U-1yNf z(M2beqGR2uckQ|Qc#`PiBTCV6{!;JSbM>{;qO0##imrBAY3;fCS$LM={Zi+bN^LRN4v5}&vBxT>qbc(?aCrO z$B8=bKT7IoR~G3xPSn+Rds0WcvPjQyqMrMQk~-Rzqv|`1{e5ZIKh~eUFy3Ymw_|WG z#`Pd-=}5a@7Z{^wP^V`-*>1nTEoDAA|0Bo08DH{deCA8NlKrXAly)*sasS}S_VP4o zC%J!{uRYn$E2sbV_aM(LJePzQdL}o>c}9u$(ejtyliNhsa=!W%L1B*^i}cC;sOd|{ zala?eAG9mco*TdVx9IG70)F)TLOb=YeKfs2@9$u8vanrCzX_K)DlvGOz8 zFGg(~ODoWhbAXc1MSsfkB>ly+Jv9zET0XX(_WXu^@Vv&l=y}kd@6aFDKAL_x&np~H z<`=)|S;BZSwz7incl(?p^DnQJevq8+Y*)fxHlCc{-S<~A2fo*%k3V_F6Yv>!CE5%1 zwM6tyz9;&cGAY*A-w?erStNQT?78u4*T{OReVgI?m`AiL(_(%7T|5uHGC@75SHhkf zztn@e{fOFQzf#68;4|z>*bDWw`J!*~chT3B^NaPY8{;ckH^x^M)sMf?N_+9_QBS;~ zvcKJwXwS{Rx(~XY=<9ON@&IZ9yAtiW`ZD$n#;>gOWL(;nMe+GuWuxeo!9>w3Vb6_k zus<+<3Hz0jacNf;#piR3OTChDX;&7-uU;?fuKJ57*B$N3qV>n;xbCQL66?;|l?CgM z&vD*RujIU;U0F1L!b_xX;TN8)8|})X`UNFC`#fs3$2021XV{f!&mF(gr=lxA=t&*z z$|5~~C-FU}J$EP%;WO>Zj{Nw^LD8pcGlb6Cl?D3vA<@+?$PhYfR~G2Ge))aC_1h%A zKdfCjFF${-Q|h>Wn}p8Vl?8h4leIf>WB*jv>-ZmbCG2+mQj`_%G;T4`1ipWc&M%qJ zL=!R6CY==aPTM~Dz`~PHn6xYGUkV$ql;4T&N;{+G%j~SbUh8kx2!EX~^4cjr_}zEr%ze^O~dp!kD@;#_09gU5B9yU(=WNXCH{ZbyZq-a z7--SsJo)eO`7SJa%tW10-{oUdV~02kb#2YrsO!hZs^+_6*YBSH-|uufR^>U2J$nr5 rc%!QO$Dn3xsrl`#^YuTCH`P+}v8tu!V^MRiOV#>jNX@J0L16v?Vl@YE diff --git a/sky130/gds/sky130_fd_sc_hs__o311ai_2.gds b/sky130/gds/sky130_fd_sc_hs__o311ai_2.gds deleted file mode 100644 index c6d3f6357e9e0652d88cf62014b07e68e9e9f79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10888 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 LzSM51|BdW_!SD7k diff --git a/sky130/gds/sky130_fd_sc_hs__o311ai_4.gds b/sky130/gds/sky130_fd_sc_hs__o311ai_4.gds deleted file mode 100644 index 4c228a8f9329f506cbbb12b4e7bbb4cbbb50cf95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17046 zcmbuG3yfxGS;x;@zHe^d-0$fj2F;>tj9jF@E5G;sDj9@J^fkhL=pcut0A{Mp?)TSj`jjO5u-}}7J_nzIE^HO#v z+5GlbUEeBti|L}PSSl9E|1TQt^*7z|`nzww`)x%r z)=~SZE8cy{&wlBnPhWcFXU_Y*&DXxNn5|X2^Y!}SH@@wH3(r6JhFcFFzUAQUhYudS z^TG=*xcQEQ7ZpWkcTv>)+lzM;^?~+cPqAmHqbQ2c*}vVdPppmE|DD>Vb2$0?fpSCuV`W(r4ySr?>ka*XBmngsfJ^gbkUq5bnh+p5Ih+n@r=HaUL ze{&-J?*1?9Kdk+9QS=TblJ7lgc}TubZ9B;~bo`ve``>DLNStvy)$i@*=k3hT)Wg=# zsShSHo~gQx2Qr>X^|QtMi(=x(_1UTX#ERu1{QbH ziTI;BJzJDNa;f=&%8%@}Jj5UV%|yK64a-C3YvhfI%+qL_%@-s;Hl0X*?30#<p11<}GlZYd?_wFX()7GQJ%;-<-sE{FdbdZ!e1Z zcj>cJ`T1Y4Jj9!OJQ08HtCkPEzbIx|uTJG>ud_VFZ~l2Ae)AKS50p3aX7dA;pHa{hp0MKqiLbvs5ubT?s$b>fbCX>ki*Wv&v!Gh|m|Xoh>)Ka0 z{delxHl^!h-KqG@D=Z(V`20I8AE^AI&U^eo<=3g}PQ_`Ld~Cnmzh4af8;aNe&@SX|AE)AF|B5(2S5aRE*L3aud$E?-`D*Dp z-p;nWE$?jqWAmKyx7+_7_RoI0&e!%YOzgYg;!fo&{UM$A_&Zg9oOr~YIe*uk=I#DK zA|7#Pg&(emc+A7_U5V}Y==0UOr-@`<#J98mqA)n}*jQ_osHQ1O{vmJd{(cJO0+ z<@tDBI9`6gSUmUKbNe{nPFrW1(XieM%a?syFJr7XbHcj(hHZb2*#DTtoywQ}gK@ps z@l-pVe`D*-S=Y6PAE)AF|H`vmuUmZD3g?N_&l9J*SUO*x4DA=y=bN7=PVKhrUmN_+ zGxlFx9{T{HJ2QTd#!0`qk8M$2h&wZW-*NLA8zssMac9Qwf5g0jLnX=!ac9OK+%#`! ze~I!!+?nym_nJ3;qC|Ni?#%d;P4gy?l_)R7of&`TxOvTu66J-sGvm)bV&2@L66J-s zGvkN*4ITfbIQ~F+A@0ohD{=fQar}YuLfo10S5I2M*N&DbFT|av`c{8J{nUA)AHU8z z`+0WLkMp$a?PgYpV)tc_Mx~_`AVPj6rc0g ziAUU-^E(fi$8$M8#3Sy^`Src#aW9Dv@rXNfes|Nn?qi8~#GN^xIzzkEA15AhXU?b2 z;8A~^c*LDKpE`p_{c++EcjkQR3?B8ziAUU-^M{X^H?o|FN8Fk7M-P}cR!hVq?#%hr zIr>fgbK((q=6vcL9`({zN?D&YZt+#Jru$iFm}FIe*sy^A>A~c*LDKpE|F6sQ*qp;?A5;oyVi@JMoA+ zb3Sz*kNWS#Bks)k>&MO8y^)AV+?n%>P1W~@sozf3?pIm;Himenew){^>@=VHjo*GG z?{^+BuU2!KNBzc+`O5a|d(Eq#aGFQ`#*g_*zq@H(_c5n=)NlNluk?FPn%8^OX&&_( zKjtg_zT@UKHk{^Bzwu+f((ix7yn#bb^QhnWF<&@oe#}?;<9p2;KjAcw`i&p+mHuSYyvbuu^QhnWF<^H-5}l`ZLGPYi>BrqkiMZe5F78h4%wyK@qsdff7m_{_zL zszkZA5As+MVBp==@1={)u z@6&X>4nK;=@ozUj;rrP7Uu%DQKL6evvKB@WmXMK)jU5x&=t&cz* z?~#|=@eWkJTVrCoK;>zN^$@6d`?oC*`#z$5pPShIQrpf+p8Yt9(~h%O@3`rQlQ`e= zIf+mHlI0=sY0bOS=Rw?NzT*2dy;tXZZq65H{XaC@yl;|^*nWo{-db0qs^JEykWZhztZsDDp2e^A@&dkV;Y!}ng1idXuJ zUp8+|^N0`ei90L&k29W~Z`JuM4!tIk^LqHhnv=*r@{st#If>L8`sGyrwj2L@>HpgIH874X|FA;r@<$*zbn;_NINs%OYHoh#@(a+Mbws#UA zdx7O4@zI}1BtN9@YMgB^)BJuz`ADA^ahv(G`r`GWS9O>37jj;Q`Ve_qeX!rJiSOH1 z&Xe;8x-a>s#J*SRv*J$W%k7`y*VeS|_o?l_D^c}6#GR+s$1OhX<2z{=-CqCuq|d~iv(^5}OU+yPL5cE0 z+?nwg{?x|J_lL{_WZcA^x$(0d z)_R}**AjI-2yy4js{Qec%^Uw_iSk0+nem6;Bkw`o7hIIcc}Lu-eC6?9eJ0k`%|z-k zac9><)&8um3@9I=M>-Y4T-=gM&{W2eceR-ebPWw)dJDxLl{5!PnIes0w z?l?Ja#GSe0$96qencw2G=Jzy%Rrk1#Q~w}!kGL~e|JaVY zhv%g35qIY5U-L3+m-__ThqO!FnQNczXgAzvMA9yCXRiHlzqX=dwOj2uzoKKweVlWp zdj30?tl#{u1O12eo47OAf3B0Pd#=Au);)1&ZvC?z>mI*Ft@{vnX4XI3v2O64tQ+Fa z-1^z|u-espFTSe8FX}##xO1j@{y;F&}`;?A63e8K7t&kfWcNZlds%+(*Zqwe6f zsJav4&P@GbJNl3Bq~FAyx&HHBGCcP!m#B3U;?B(aSz_D|>G^Lmk?SsTXYTsT`xWjV zrr%ZKlSO#%(&NnBKj1TNd?({3?#zvUV#AKx;Kqq z*tmH=&pZTb+#&AFjGyfoH=dJm6L;puzgDxl$#W?66H+&cJ9G7u?Wq5FPU=2!XRiM5 zI%MtgTul3rc8NQ4?Xw;2;yG!TxHH%OkrSvc%zS(C@;jF z8Gk^>oag5O9cw4=5r{h#ue|?i{JQ4tLDjuW6S?mv?#$i)_kP{l?R#e;?Gkt9+V45n z+U@yTBJC1)=Gy1ExkJxx{LZ7ZQ`b}CPQ@$7-+q_8>-4W#;{U2`;?C=;ed;9Zj{50j z-4S=@)*suk?(m(gJL1mV`WyO~o%h4nm#DQ6;?B(Z&vu;m_)gAy;?CUp-+PDV`T=b_ znpnSF`%>JQd;b#t&P9IXHuE7Kac9o&A2yHgXXyvTBks)kGinE~8QX_=#GN^RHnz|A zgX{<55qIW%eoq8%UiHU`7k>XPGUqSNnYZ*8iTK2wIe+;s^Z0&__8}f|XU^yMH1JmM zOvEGZ%=v8>%ez(U|C@>R0ex27seJYM`yTUnUSdBGuU&Cx&gZ!cuT%H0PCVkyoX>TV z@pJujGH&9|-1x^&m^Yz%ix2ULJ9GY|>Neiww-WJ)J9B=|xOqK#ug`uU9&u;RAO5a+ zBkxbdBks)kqd#fh=ywwFh&yxs+O&D$`xNy*e4iqpIDX7mt{>i0QTNt16RCT|ow@qQ zcHDR2x2U=s;?7L{nP&-n43jGMSK zH-4TI@pyi8;t_Y|e4Z2Vb}lF45qIW%-qUg4%=3)+oHS> zcV>K^bMbioZBbr`JEPywDXG7~xW1@Q@b}U6$+n_a)MwfXHP@_Ne$K}HXRiJJJB!9_ zZQpAZ1$Lc z2aEc2{WYhK{(0N=d(YJ7@B7St@dc;M{PSv?r>HZxdo^ye_nkr8jq}gO9vC_sd+_PA zu~~06?kg_*(dT^fEoWml&u`f;_|e;*8#)_%DUJIKj`vC$_Zir0*R*;b?Jk{boyGqH DshT1z diff --git a/sky130/gds/sky130_fd_sc_hs__o31a_1.gds b/sky130/gds/sky130_fd_sc_hs__o31a_1.gds deleted file mode 100644 index e59f92bfc87c6869d653a1d296c164faec9bb23d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6498 zcmbuDZHN_B7{|}tduQ(4nYp&vYOTA3R6^iJZbDH;tlO4BC2FRj=w*GWOheNTW?Eoi zFH}$jfm$JzNJVc{WKm{?MIY>AeUOR}AxgrskdoN`|MQ&Z&fI%x_W znYlC91g2EF!}NKj>R}U^9#b`!n914yO;QThtXj5yWc?;%y377`GatX|<}ddgyLx!< z<-2w+ns562e77$MHmu$>FnwC%&J~Rf%NuuZXf)PN9~fy27*h$23F;;Dpb5s6Ouy;x zDjQ?=$zQT8rQa?8D{)Tc+|(bkez(~|zjPd(t_PQ7cm&6@aqO6kH^$p*jFNHhRcW_` z@4X^EX^z3aCZ&I=hoA?gTU!m%Uk2@|P@WW4%sN{*YplJ&4(CHfyLzuhnKa>*MV z%np9gF`UG93cmB@LvCV1vA z7gS<9X0FG2{!BL?w{U+X+cCHIV?Do48DAjdZxZuip1~L$tJB0& z!XK;uYqkH%0{D+&5RM+M|MCl%bLF?vpXZ44vi&Ww_3Hi0jE;^DalA^IXAYS2ZKOTx z%Y1cnzQwWY@`IdT2kZM?Uyf+c`VBWTgU$6h2=>K)ruY`Cz{!qWr#C z_T2oz4Do^^O7XaV>AUt^KkOARJfIYh`;WeB&-H63#fx?;#pCry-?iuZ@geb&ZA$Ut zLrNRZ^|?;T8?yhD^@VT|S0bM4bDijwr=+CExU$ISI??BKucXJgvdHH;(c^tbNsn=5 zkmS#j{b0Y8?!teL zeC96WIZQ1&i-lUm%3rudg-%nlH-bhNg4iud3p;u z9ob&NvxAcH(tXlSGR_a!x&Pe#ul9TToY{Qd{1fw!c;JY5uFvOseQsCMv(NjEi0Arz zZ(&~l;*|6mR~F^xb3J`Nzbon4=Y7W<-##yL&0;+7cweQg_F>ZS{-Wgid!NWYAibq% zho^);*7%;}^CF+)z0Za0hu;-Ses7k0<$IIl`yt;amG-?9>!{@SY4|Mu9OFTZ`+M~5 z$awOBw3C__9IHM%{^&!ghvfOSwJFQ{QOkR%(UI+ymC{af9L~@7FYnjx`z^ve*04uo zjH}6`@EBJPwba+*hlgc;YEPxK<40WC_I%OdN8BIqn>+>=exz*O-z|O_b6T5#Il#5m zlAS%+H>d69K^WSV9qzD3?~}HxDxG!ek~Ti$@j&t zDdS?F^)tVcbu+)RsQ&6O#yTFg|CZs$IA&ZqK0kkn`xx(|<&l*5{mC${M0@V|d0u&) z_{z#8@s)_@`W4I(J-?BX9^=X)-+Uo;d-tYf-Ha=X>gRdPPhZKrj4O-sbB}WVqg5GV z-fdi2F#mRsBR_rSCz+RVWl{bZzZ)@svLr*~wQ*%ZexAp?^p(uZxUwjJFo3mNfqN*P z2bA_VD#VqD=db?+c+Vjh#;Xhlag4YU@m!ztMK3-tB|XNKMZWhpJp7(fdO2lq5%vS( zO0?(Z4{w#c;fa*Y%eb;AKleG;kNdw#tecH13)YYKSw5HW{;RA#kN*)@B5vzXP!itR zZ!^I}{=OTW@8RdqV3LR3p7i>IQ@35XckZu`n554iT7(!s3BP0AC+Z2@PsQ2Z25oOM zI(qBb&d(0%fxjr4%_iR<(%Ri}?S+N$aBlgF$-r_IOPCPvfgH%G$}Fu(c>=e6WN zW#835YxZ!9kGIAD&mYY}4O>mn6ATTUzRl{zo_WRT+m*MQ_8H_3*EQ|wr=Od@)K`yl a+_)uYSN)V`jdpG2+1Sx{S-XlFD&{|}&F<&` diff --git a/sky130/gds/sky130_fd_sc_hs__o31a_2.gds b/sky130/gds/sky130_fd_sc_hs__o31a_2.gds deleted file mode 100644 index 7d55643fe4de268a7593b15c4fe7634cab4f3a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6946 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o31ai_1.gds b/sky130/gds/sky130_fd_sc_hs__o31ai_1.gds deleted file mode 100644 index 4a7aa4bafb71edbaae87baf29b428f2847350244..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6304 zcmbuDTZmOv7{}MymvydVQw-+lP(9>R13Aq@lo8`(7iti1X=!@!Qe+yI^OC6#6_t{a z4k4HO;$6o6U`b1FP0G2TW2i#&$(!o3T?O({K8_V`I!A zxoZz+Onc;6i8{&orllWt`W~}^`r21;y3&~H_JGIm8_8SG#s$VyjvAw+z4C>Wlja2K z-;12R7vm@Jo#+^DDnB z`H{|!xJtyIC_mRf$#d|H{z+^=#E<`y_$2d-S7l^=@j_n?GJgD1M)nK+Ds%d0EBhx} zEq=2IUs zrt2`YxRiD)Vud$ysYI|TQAQo>czx*qLFd2Q&u8aZ>hY2F%^!Tir9@ML`8?FAZ*+-H zi8bRcCG4Soj&EN-+h=xTuFS&x-J7w#OYBONPo#JKQ+pf9EkXUqGnO{tc@SgZX}(2Y ze1tllv{R>qKJ>rB<)`c2oIZVenC(+azrvgAUnAwAUiznp{VN(b4*yF1I@ons>`Ih} z`lj!nYjpfA=8}u&nH)gwXitluNdG6Es2}>9dyeBZPS0H2JW=XAQ6jZqzWnOqoBa8v z^F#@^p?-nWCzIA+7q-7L1LM$-^>QTOm-tP)vcD~Un?Bkix_D+l=$u`727UQ?>`%}u zD>sQ=347T7aq+9&qHpmX(N~q-#d^NG7++aOe=vU~?78u)r=;DreF4#KXIB=q-;7~! zk!R`pjOkj8IP6N4=f=0Q5ex0-9^4}QIlHo;{jA4!Q?F#ZX;*f%U*^AC&&ZSOz0Ucs zgh}VUqqB$kcj)mR>D({zPUF?(*|A^B`0IW&2LG?J|CA8kiW~hWboMZQn?Bkix_G8i zbR2)`eR-}vSuVOXRf;ZIu5|WXy`3#OdrT=h_CMqM@?3pohUh9sl%nJMrQVn4>Z_+j zSKFr)9p^9gzC2gYer~)b^H}Tq@e<-P=T{)rNpP$|O!~Ay_#>9 z(wB1#h1JppZU7;m8WaZ8@^p2_jjJtl`JpeOr|XN z!3p*vCGEVxiQ>ESk~??foXzh8o~KFsJMKLhVb9e^E1>H*57%$T{DWPI@?3rONzu1` zZy-MH%)^)G>UmD)S-kXmMm;wxQ9hCW4xWeD<~q(nmA5jof727v&t!r=uYH`cv=Vte zf|#E1VezAczub7y{h}l3H(sAHo{BuahRu`y%TGytGTI>Zl`QxE!g%t1==XQN!^_8! zKi-MT$}`9xb|vhE`s#@2Tl`b>Rpm&rzV?dfmG#AZhb%><9$LuBz3ea&!ms<6P+@dE_x;Gx$(>2BknPb^^S}Y)-vr%l;`TJpG)4g zZ5f$2?aHG3S&w;BuVmh|D~s}vU%*&l??|wQl-yToSHhl~zrlAg-w&lV0S{sPXjits zAKLe??<8&w-{Xu=GHw-iWl?L(symM0sxh<-eglj`2f#mE3n|R~GF* ztjB$a`WCV8IJ>f7|6x6@Tk4fux3nvZ)-TsdjPF6NpB7Kb`r*08m%H{i&?We0US#Z4 z{y%9iESc2U=_S-^%t(hWd-S4%3x0XbH2TuvWw7yTxc^-IbFbCEI;B6ozai&u_BemN z&+^(MKGMB#vc*(-?UH%Jm~Q;uZ_^`_j(o=H8{3_Jeup04OK8t{eXBk09Dw+$U%Id@ z{#omN{x{B>+os3&(wXB|utx1e#`fAdga2P0ecDoAF*$YlHy3-7>gt{6qQ=>e?Vd#J t+I(&IF#cZ;=FD03IsZpZ&vUUSq2|Bd((c>a=j&O;rdryq>N30}=0CIB(e3~M diff --git a/sky130/gds/sky130_fd_sc_hs__o31ai_2.gds b/sky130/gds/sky130_fd_sc_hs__o31ai_2.gds deleted file mode 100644 index 17edd94edcbb337d3b3d0a0aa73c15baaf4b824e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8912 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 Ob?3KbH4dm|)BO)(3?Z`s diff --git a/sky130/gds/sky130_fd_sc_hs__o31ai_4.gds b/sky130/gds/sky130_fd_sc_hs__o31ai_4.gds deleted file mode 100644 index 0dd0a8907381fd60e60dbd62d3465ffe6d808a4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13844 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

      TiQ@S^edEh~Q7mpVxWnc>Qk>I&T-p|9_@&&tJSx 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sedfxbp_1.gds b/sky130/gds/sky130_fd_sc_hs__sedfxbp_1.gds deleted file mode 100644 index d2dc1211cc53aa933125d033749bdf3f5e62a4f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22998 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 Ky2zDE$^QYm6VUzu diff --git a/sky130/gds/sky130_fd_sc_hs__sedfxbp_2.gds b/sky130/gds/sky130_fd_sc_hs__sedfxbp_2.gds deleted file mode 100644 index 9917aa2b28b36465fe57d9c8271eccfec5327fcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24322 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 T9Qyq3VCel;Tkk4rrI`FLQb$X$ diff --git a/sky130/gds/sky130_fd_sc_hs__sedfxtp_1.gds b/sky130/gds/sky130_fd_sc_hs__sedfxtp_1.gds deleted file mode 100644 index 567eeca6e7051d56101dba44d9a83020ef886384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22398 zcmbuH37DQ$d4|vY`!Y#pGLvOyvS+qrCdnjWCJ7TTgha4VFa$vf5EchnA|kj!*aT9f zEJe`*MkQVvg&Gy52yM71T7%`P)(xc^tfiP*6_-i@F;MzE=RMDV{vrSONnx%F?tJh2 zJ!g5(`fa}}xJ>5FZbnn4_@t}24p(&DZchEbU2~?e<(xAvJpICpoomnL4?XO<6-Pb% z+25^NcmI+d+fO>)&B!NfXB7$;opR#8F!g0Ow71JH`tPO&OK=VjjoN%x7)u(oRe#HHT_zzZ+A~ofAD!obRT$fWb8=Wg3?cDOcbwu5ke-p=ntk3ch zs}JezeRZV19Q0r*gX23Qv(GuV6y+CL&Sf1|UNU<+$}t>CJB;;Dar|N=<1=)N#fPMy`HIjtD&K0BZ}CTv4+hGjqayPdBa2>wK9K42 zJQ3$NO7Bvpw`dXi(NoS1VmOPe&)~UMACmPQcr=p!0rYt>|BQ1BP-iiB0`#{cy+D?O z`H0A;QF(m)`=3C%z0UQ2v5tsw{|+1nR&T~}#W|7ozWwI+guV~?GaWMjIL<#TlI7@s z%*sQ0Kk^l!YgE21j92extzY%t7RmVZqECzLcRf#=pUk5V_Z$=1bS92}=A4+j+R_!F zZwZ3x`E~!&@*`P}Zp>Yx_pc9rkox(kx5)W#HpaV1-7NG;k@gw? zW`44Cfpc9Sjw~Dt|4r}*GQKmrExsh}bIyolz32SF>QB<&{r1S>Hmj$IayE*G9}nG^ zBCdy_KIji3)1Qz2B642hc_Pkhl%8+j`FV@eyk{dBhk2)2JV?fK-iA8PMty#aNFe&R`)qK<^3p6Anj8wG(VZY*3uD?PNV#M z|K|C*Td}oxJknuqn|w0LADH_XjxT{fF#n&646e8|FKa_BPDnV&S_uJ^}3?$hfz?%i4i#`YqDIcoFGuM?NCbX;dEHA6nL+ zU*C@SJR6z28?nS3EH>SRc(x+_K<;mNzQ}fDIwI0*l%KDE^V?9bhmii8Bbz6n?q7o~ zkpAjD<|m5-&Q-n`na9|vU=9{pt}5mTk#^=IBE3fCd7R^+f^(T)<$IAVM`g8@horx> zFp~Zv=1Y+D2K%dY53bsJTF}vI1NpjrgHbgRxYy*+?C@r!2kkl84Bbjay<5gtY zd_Ba68rF9;>s$T_vDO??76IqHJSzyae_AHjc$T zIA#n3Isax+R?*wLf*&mY%=BV@2g-(gMC6xPp3E;0m;Z4t^M**KpJAN?nQzmlEq{{s zrjJB&pOay{1KD1ge|EmzNN-0zBJ!&*ͽ(zJ{5M)z?O9>V|dCl)S6e&{b^k@5Hv z>K#}*8FgKO@&p!chL80MEMn}G-vOJ5x;CRf6a$&=#DBH)$>Mz&pQlFB-?q~Hp1;NX zbv%v(ONV2A|1t6piMWlbxBJ-2n2QKEk5LkE~`)%~M8gc%zU)lL&`CMF|yfc#N ztwwu@XqWo-JH@x(pgUUa$MbxBMbukyP+Zu)JP(uLOE00Wt84W3`t&dH>9>UIVM_4F z^6<~|8T+>r(bX{h>Uw(3%k`Xxs1tF`?f*pB>-C3O{|xzGi@3BP@t;R>AMRim;ZM~! zAs+ej(We8mQ%x_zo~UQcG6U$ZSjR-p9kh$EC+pvia#x+3gnl7buZJFX5%xrV%NLL@ z`o`41jLc2Jc!6DnKUqJDe*7f*1LiZ4Yf%gABJ7F!X}4M2I-z0wNX{#?i)rzj&T)+S zt`q->Rg7iY#h1-b$_F~5rJH?)heH>$rMUkfmf zs}nK)@2(^CbB{DVS;k(duPL&Ky%%*N^vUTXF4^BhkM*s_>u`PaXE+XQ+K214C8)oM zcr1X9@gSjVl)hh2S8RtL{e8)o>xldYxb_7y9iAuR{6^{dc&ylI^Rb?Er;dKpk4t~ErJvnZo3F8^uk6G5BKDTU z7vMOs^c>>%HjLN6@@ZHvFxQI3W6++H5g+jnSbuilSe$|56*vxLy8Y0L++X$I0Kd2e z{qK`F4&=Jpdnoc3(N}tgaV$QG>)UVId_tB#gz

      S>tkyH;jR@*o|YPT@K{la5mah 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sedfxtp_2.gds b/sky130/gds/sky130_fd_sc_hs__sedfxtp_2.gds deleted file mode 100644 index c2b2743cfe29667a0e909eebbe1efd61ef008056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22344 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sedfxtp_4.gds b/sky130/gds/sky130_fd_sc_hs__sedfxtp_4.gds deleted file mode 100644 index 122224c985eeffef725f7ea73e0e84e385cced7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23366 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 diff --git a/sky130/gds/sky130_fd_sc_hs__tap_1.gds b/sky130/gds/sky130_fd_sc_hs__tap_1.gds deleted file mode 100644 index 56ab15b8717d5264ba5a4efaaced102e530f99cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2830 zcmbuB%WG3X6o=1!=5?<|C`xJ&7w#I+;zC4_G)626#rmogH1we;x{$_As|yh<`X^{r zvU4Hsg9|Ax{1bFraH)%;h>DB&n>llm$)nd|2ErH4z2BTOb0_D9LUP^9RCL_bXUbB6 zQgnd!+utd2!`nCKm*$q1iAKEO_{5VVXFj~zJX&oYY^=>*pklDKI~s=dTg&5z57n+O z*6Itj8}(Z4?%bW)IQeO!Fm`E$!W}Nd_!DM^ywY@LjMo@Ld0$Viq2o^GiV{-Y0Tj;^7#^>l_y%Zu=*?_J55ilSlrO7T+SfiVO3}e)b{z z!d!`cA>xVoedJO3g~1~GLc|k&=Og<<_W}Dt#1s7#_DzDjw>Q?)w)`59+-2n67^*b4^Ul=stqJAOby8ejY-{&dZ z?NW)tJq`sFj;d}G?G4IfkM=dEzpPSJ3@Whoh^%*fwh;0kfv(x`Ho|Pj`erLURpS}) z44atk9;FN6rKyTJ&88amQAbZTeSY*<`)7N6oF?S&_uH${D?t8W=fM2i_PrOw`R>?o re(L*h>(5*p&d+`t=%bqq-2W|~-^{tL^RsQ=oS#!u=HFZj=g6nO*F!zx diff --git a/sky130/gds/sky130_fd_sc_hs__tap_2.gds b/sky130/gds/sky130_fd_sc_hs__tap_2.gds deleted file mode 100644 index f06a57e84f08b1f3c6c6b7983d45a3113e846cb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3982 zcmbuB&x;gS6oqe9byxTF4;?`aV}{_uSvg>g3lTxa$w{K|jgE)} z5|Te5F$Q-o#Ql&(kSwy!D%l3I)P)#CC5y>9@7C$A?w+dFRKf7|+^+B4`|hjvsx7rR z{@7-txbe5OY{nY4+jiwYTPIGx`275pl`GfGwkP$&N4`7o{%`l599&x8d-wM8X`8JV zyF1f#_42iS``_+ey3kwwwD;L+uXlCj%icRyYnr9q*iKryCAON)Pbb#Dl8640#695> z@lS0V{xW|l_}d45r)x$}>^{%@jEI-`8yg#K`XbzC?mI&~@4p-J&u95>Bku#V=;(mm zv+xlY@qLMp@$b_Y;eO=4GsFx1c+I_JPINzB6DRpzcQQ91>!vSmTEF_gY}PoB{#_cd z{Svtm7xDdg{qk`u`xn+PW9S>=VrhQM=FRm(A309w8{jOMzw)EbXv*ss>v!QIE+U?< ze{ppETezR=FSd`v$NGzi7y9foJ@#Lu$GAAjZ$5Qjochsy5%JRe3D%qW#aiUPhz5JnyuUE$zt^1Jz*^tL%Oztsn~R8e z-oGCF>B0MhbLIN+3LHBBLpbky{+zG(j;QyRIP(7S_lJD+X=>V^zdnCPPR7OQq58-C z)>rO}?Rob_#PjtJ`P`?>%k}FMc|%+*$*l!Pr1}%& z3+I=J^MrmP9xKlu{o%eC-*R6>ys-Z8oT5)WKWZ847rg%>;-x7ql=gt0$oHzR~j?CYGzv=l$D(xFl`$inuKVv?Ic%A+G zIP8Bb-v7!gV)(Fr9UL);ow9UCZ1a}B5n0{RoqXGL-mEX|`TDK(laIc!&TM^gnKj|+ zWtlJTw|k6O49fY_ys0dHvucM1NtdHEYhKXHF~*SK~hF7^!B=?|d8l4@P{P z2FO3|_h%Dk@C2*5b<_N>>?e1s`SG4=e&e72KmYi5?5>Lb)WvG~TYpybtMs4quiF1A p^EW(yRp(#u{Ngm(^!YE`KW9H2+P|;tXZ!cP6WOo92KI5y{sU`nt(pJ; diff --git a/sky130/gds/sky130_fd_sc_hs__tapmet1_2.gds b/sky130/gds/sky130_fd_sc_hs__tapmet1_2.gds deleted file mode 100644 index d68ef60ae275ffecef7b26ec5b49cd8746dc9d36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2962 zcmb`JJ!lj`6vyAr?(JRfb|pekPLE*WRXH%xLPU_{j0g%L@hck8BZ&q@g^){=L_`Ed zJ6nxKun`gaRB~8YTWKp;Y7qocv55aSvoAaMv71C3IDVTq^UJ(>Gk3G(lTsI{eIFB^;&Iya`yJM`GML&@^VCesA!D*9f~}vbi1_C+=h8%VvKG={Ne4yC-R52 z-xK+xM9wRGp2SpdU?46;f1+1#fg%E#eJ)(}={&BtjO0@oE%!~CpCt`-<@DUfHKgGxYf6cxSF6zO)p^m5ca6g*) zh3cO1g@`BmYRSy&mW5_swIocRpU3g~-EvG`H^+r(>*sO#`^Fa*D#jNg-k!glzX_t; z3-~iJ3%`*&;zIN%`xvV8Z^YF5hPbd}{xUyBb>s7cedKef_YE*isGs=A)9Et#3%xP8 zhzk+7^RKp^zx;~Xe_`Pi{AH{^BI1d@u0MR%@8U_gBbyb6l8~Kab0Li5OLeT+;sjhH2cf=Le7Vq5b+cr z-;XN$LWsymH%%S4{h_A$QK#G@{Bq2~JJ^T|(Vyx&gT@znxO(;eMMT{82jlvioc%l4 z>$|vIBZkphgoxYzqV~I!@89P8M_0o3&HR?%cK<2uY~14=@4x@#|MUHA&Cl8L`Q@hB zbpPtGy?*olAwJ$Sw)y_?P1m22>mRn%4;kqB18gz+Q2$+uj*`FIp$z$Z_}d=r%?uWw za(hMrzgIb*5nZBO(Z4WK?c~GU%nu%Ef3(FvtLLw@`F#(1SI53Sq@a|k;`Y!@=Mp{V zi#}ck@gmr?8dMXj*(4iU!>>_a$JK1fS08Y@eCoKGE%{tcsmA!3?dNap#>tWB*D#AZ Gc=Q)3|3*0g diff --git a/sky130/gds/sky130_fd_sc_hs__tapvgnd2_1.gds b/sky130/gds/sky130_fd_sc_hs__tapvgnd2_1.gds deleted file mode 100644 index 85946c35a7a5eec2b14ab9658a8c1612caac3e4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2040 zcmbW2&ubGw6vy9gb|*=*TOt%C8l(qr7PNX0FOtTHpdzimDg|Ad)?X+hjR;k*7QK1Z zisa@&yax|bJotA6dhno!B8ZBI_?~)dWpQPdXd)LLn|XHR^rtslM;o03?e&EVR1Jr_lS;L2uTCF6m|R~@ zT1&~zR+8Lby!YV7-Q`2cG*M6>Qn63RNsaq7MN{P*5v})ny|+Z(2_a$^bzI2tV8>9O zD0-*;l<~arg&5EDi)G{g<$L27h2=iK!Szqr`e%s>oA95fEPjTMxDexR{(c{~Mlt+u z%J>I@xP%zb@bP|1+809n&blSXU4M@24{ZJRR-Ip8nph*gg!tq7U)iUT{h9vt$9sE- zyjVYB=_4{?{e_6T`M3FA&G^Cqn^*fn#9hDsZ~n2i@r9*RHoqm}nSSA$t>3cv%J@Qz zXZktpSN;6Lz_ayRBA)4c9sB&2e$)6ujJtk~pP% zhgA8W$lpyFH4wxl#CV2pa`FB}ExZpu7@wFt?)q2L`ptbhkM@M|hKUOi&-8U3$*URs zHog$!u5Zq7S^5{w`6&HEe5BfT{(W1&<-qgr`1)?HU)Xp4c`mnp(|@IZEnwZ6@Yhn7 ze!)Rpi19)G8Qs4*FZ#9ib>G$u+xQJ%$o(84L#(In_qty(IX-B9^L@ZD_xEl}?(2vP zrN2k!`*NPtPW^pRyF3a>?bfF#+7s6HKiS)v`?5w+HLRmLz9Rkxncw3T<$SKVB0D2i z95Z6BVKee9Ti6NLs8CUtX0eg~$FIE5*Gn>0z>l69fBxKPK0RXpb%7 diff --git a/sky130/gds/sky130_fd_sc_hs__tapvgnd_1.gds b/sky130/gds/sky130_fd_sc_hs__tapvgnd_1.gds deleted file mode 100644 index 27208f6fd2218136e08880b668db550dd7b99902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2038 zcmbW2&ubG=5XWaXyPKHZEftCq4aI{u16n+Y7fEA8P?6SO)q;lB;tv#&Mue)Tf<?z7pfPetFgS%D85HCE~8%l=>%Z{WC;m)a$*-7+-;pxDw-|eLR|^@Ov54 zp9tboVm!yk{}Z#Xg!n^rONqPwtkfUa`t75fpD!lXNG>IQxc)csY1{tv;QAAl9w9H* zPZ@tiMy$UQaX0@K->Vy68DQ(OuSDGS8~^4ncZ{!$PucvIi0AsH@3wx+9j}eA#CWb> zz<%ZTR|cM~-xBd$-|O1|8ebKIQOgYv3^SJ8_J>mLw%&$a{hf=zva;L@A&+*)UO;k|1y_bzv;i)zvi)S zi}2Sn#=qepuEh8-{|xtU$;FbCqwZA9k`*NP5UHpBCc6$_3w1-bovNx9qm*-T=yD^-dT4I<*rfEEwpMbelesEAQ(rJze|QAfyp%XSTBfj1`LKCSIMn^!3Bm*;eo5`r6D5)QUU1$CTS{h4Cl8GrzF>&ej*|xSp4g-uC=;)b;$a=EhBCG<6skGEa{0)-fq$ zPQ6b0mL~4|Ew_KRK8MALo3CT?n?W`q`*VEeuekj*r1;C|j;7!D+opcx*6)Uz@5pCO zeq+;weDVDW<9qv8eoBw~C#-y-!SxFn&-H_b^@S0Sul9wE`+jq{{>ZxZg_Vo0z9Zwg ze)*@HzvG^_))%rr*DvsV>h%kwz|G&0@mxRXx%E4SbJiEK-}f8Y`Qf*1@=`tr!uJ`I z4I3A--}i41>>o>&{;>XL#<;~Gn~?oEzO7~MGv{K?(P!(!(DeKMooxPgoUWriVX|T4 zLdJ7_T}SF_Mt`j@WWVp*`!|}M|84g#boCwod;dINk2dv%1NYD5^6URF>ql09*q3`J zWWVua`~STTbs$6?>R^B()FFM!;={$pi5EwD?eD9IYsDu2j;6)tA7`KUSJmJTeIP4$ pg;|+zC~Nh#Zf{^SZL!o#l&k9I)#+=y^YP617p}OkTH@*=`~yiC+DZTb diff --git a/sky130/gds/sky130_fd_sc_hs__xnor2_1.gds b/sky130/gds/sky130_fd_sc_hs__xnor2_1.gds deleted file mode 100644 index 147198de4e8e175e83a0b5892543a772d4261596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6092 zcmbW5dx#cQ7{<>x-`u|WzO^-$Vs#aRq(9n7vkPXIU9%g>mU&InB{j>mvNb3(i4s#I zy3$Rpj1noc`yU!qYiSW#Q9&03Bg*>23aO;RYI~mZo_A-y-JMAq`1sAdXP)!C=Q3x` zd?qxWH^a1)yy#n#m}V21W6g-{xv6>K;)Qd&uIO53Oj9{Ht9|Wh7rndrz}N}fPTaVD z<`mNsAcRXmv(mEeBJe3Cv}cCer!zG;F%RB9ORi+GqJI3 zOl__)L6b55#0*y(W4_0=66NMiDJS`(P6@p~7*)9X$J_dw%-yWtKLpc#;L4QI>A1ep z7-jWhW6FDtQ8HfsSjtK2%P*%4Ucl)k;QCQxl)-TERYE^de!H1pbd}T_%}7~0 z66bHDjgIsWUzKvp`{2DF*N(w?INyz!qv)Vo{~H()eO;|_%B>LvYqh)X)kHx(^JxidZjra^(xU1 z1NE;R|LPm4XAatSZieu!o+|Z|^iMXXqA`$voJHN|w`C3IA+< zlkEKTO)L9HkA@L)M&cQb>RSTOOH`zKko2{JrJkTOO$tf9mP)%5(kwS>hW6De23&vdG_`CB8wR6kqD; z@5*!i!*SxvIm7-Z>C3pX$Uht>zTrNl_)<@QSDx!14;9~dS4#Rat}OD8hl+2!ODVq8 z)8Ccn`d1E#Z?Y*ReHm94`Bx5!Z?Z`#zSPs-mFN0b_lR$8RZ99Yt}ODe?h)VGDy8^R zPk&e5-@i$oU#`P;9Xusv_#4g^bD*LRDvVJrf>tFi-y6>=_tw>qLdm{Q9ZFh`+!8nXTK8}1p)Q-VD zj{Y^c_etdJSi*YAdX=bup!QGX`j>o)wxPXji?Z|&`U209(nGr{Yp@nLGESWmx`FC{ zp7mF6LS1uk|3xYN4aoI<{FFbyJHoXi`?35J+UJ;j1MjC%ha<Ur&|Lpq+&l3+mPdxBE8S`Sw=mz*di<}%ePfCBvd?9&1_i{>>huAYI z8Lu8EGpeeKJz~AbAl5x#9k^m0@q69RDK-SO2m1voCmdh zpD6v0#9xW}v;MN*Y<2JR?J{>t^HTCzHi#=Rw+i(h#};~Jd93J_i0A4#-;?LiS9m^^ z)hY5EC=t)qbI(|LK*m#TsbUX&*v}R zEYF{^GD)64CE~gM)G%+}t7P7cD~s~4tdwy}u!iyZCpm76D~raD_i@~)>*Y?-bNpO+ zZvHHf?h?H+K3Q~1#PjuE%J?UDWQcLEFs>{Z|KuI?+kCY3+LYlSf2qut<2Y~M!!y$^+M@?CUGU=1L^Jltu`Bd zgMBOaZ_4CD=+WQG2z&EjJKC!ph5m&ua)d6werWt@qF0u>pxugba^(L&aW_028Rz$a z61r^tZE5?Z&)825d!@g~hHlrFjwsLSZ?XEu{O@;j5V`PBq6vfXi(!FpdhyTbYYj5q zO8xFvBA(Sx=iE@=BKmZ)36J9cr{U2h6PR!a-t49}G-x}1)$nbT z_TOo0Ey4JiwgSZMGcFgk=1~8NmHu$`wb}Z{^{cP>F&^ur4t|@O}kU0u)V(Z choz2}U^ZS!^=1De*wOk%8Vyus}O2msF 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 aGxv^s=kJnw{=100v5(YqgSrUj-TwjF`$X#i diff --git a/sky130/gds/sky130_fd_sc_hs__xnor3_2.gds b/sky130/gds/sky130_fd_sc_hs__xnor3_2.gds deleted file mode 100644 index a1ed2b7a38c9f3ecd6c203ce88773ca60021545c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13416 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 X-(A(S-$l!_cd8l}R6FZ=Fl+t`7s-|$ diff --git a/sky130/gds/sky130_fd_sc_hs__xnor3_4.gds b/sky130/gds/sky130_fd_sc_hs__xnor3_4.gds deleted file mode 100644 index 8ed03ae60276577dec595d8ed6402f800d469ed8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15998 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 W`-ytLS8%@b7_Fk7@6<&wZ~hBJrrOT{ diff --git a/sky130/gds/sky130_fd_sc_hs__xor2_1.gds b/sky130/gds/sky130_fd_sc_hs__xor2_1.gds deleted file mode 100644 index 532bf9352518c33a90428062d3ace1310ef143e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6424 zcmbuDdx#ZP9LLX{J2Q9gy>nNKZEJITPzr%dY7Z(lY~3s)H`9FPW=r`%X)9U@w6##k z-c*0|QhNv`y{L$gEGZ;VD2Rw&kQJ0kM3NR+e@JZK@A;kIow>VrMzMjrpPk=1-}C$Z z&iT#EnK7a9yhWy?;Fb27ifK0`Gv1t;{@=u2II!yG!J7ux8q-<~rcQhCqM3VMK6J_S z9h0_hSv=2l1lih-FkF4h+9~Hx?q9L2fA!M-m8<*v*W5mMUjGzh{K%NF=9#-q*y5Q^ z(>u0kOiPb3L8~#fg(=Q7##@hbCECr0(oXV6of3Nggk=04JASJf;P}Gk^d#emUrZRB?q342=K@8;9y!*vK> z!f$DcAJH$)9sNIKy_D#m9&h^pT;EZ8`es}_EVZtbjrDcF`ZqeCDV@`6T`6Hs$3MsF z{o~eO-jF};CA>Elu1FXxgGbnvXixiZ(3g*3-aGL;*_PthxSnZOcIN8~=tsSh_bTd@ zu;=uc~yg6*3Z@>@?^bMT|HaEr0ZsB+tdC>=#%?G{r>O|$Ho1@am4*W z=1;GuEg1iG&c71E`S@Y}h1Q<--=Oz~L|2@k6rDGu%-8#Uq6-40==?rqzCP>{UASK< zy0A-`uaCxwF50aWT{KRauP+}FU1gh6bgUoFpKH&Yzv^Dm#T%8PtL{}=d#1j&Q*jt?M_G??aDko*O_|WKa|wbuFTVOovDjACZvvbWuBhvOnuApgw)ZlY^rZH zcK>ScKe+zw!R!7l{2YrvU|q4lQ_^1Qkap6CE?SY0?eRm>PI|v02JAbPY`4!ROQ~1q ze{_Ah_YI6@^COuL^-AVlxnJ7J%3{RxSwgmZk4ZaOdP3@4$#xzY^CSB=>^=QwWge8e zPgTO+EdE~ZfB3${_Zq(c)QS9A@7&ju-0$1>BjsPB3mu_rHvSD9zx+LNq7L-$K^+tl za*b*eWX;Gb_AM<~Gi4ELQ{9Z*9CaM9nLoR~4i00E@w|(N6597Ltc{ZIPu0(nn`7yD z#MFm49R0EAyAn1>Zx3R48*Amr_~=Iof6d~t^BWS$Ny z=}Ru|(pM6{CE~VrWlsF;N59l5>6dn8p8vv===(F)_OgW0qo`Tfm1xh*pZ&@+L|-TN z*Ve9_k*{am^si*x)GPDi_m3d%-%*d-5=PIUc41edJu`mxEBA`N&c8)pR`%xW88`ha z88^pO=EWa>i(C)lK5%bBZxiYfb|u;~6| z{6=jF>6dn8o_``Js}>dkxNtFSah#9-~p`Pq7}COYrk6rrqxFbmL^PxH@dH*rdxRcu%gAQ5zMc&;pnugbysp9j zG3#CYGiFV1(Bp0S=>E+iRL2+-wujRivp*(vWi}RW1JxsPKW4Qzk?KXq>AUz`T8%>Y Gee)mS9O!uf diff --git a/sky130/gds/sky130_fd_sc_hs__xor2_2.gds b/sky130/gds/sky130_fd_sc_hs__xor2_2.gds deleted file mode 100644 index 64a431c2813ad5474d62f502c4e9a6b0629c2f11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7828 zcmbuEd#Gkr8OGP%-?#U7za3A>aZV-ZAmIUTh1pQdwTn%oGvlop^k`}rO&Mn*8b_m$ zu?rc65ZLh&p=o(V5T-PfN~63`2t|p1lnoRHiA*;qot|gC>-p9`=X`rR=?9zN+3&lb z^}cJZcddOnE_Z2qftyXz#`CW2W?aJ^?~X10?Ye2c>*F6?xMX3EbJMl#z3aYm`iCCB zgL?su;!e5#Ez*nGMl!)MO;%KMg4lOpLS1DKbmze+W{UOnIFJ8g9Ub{oEt7U zC(=H=)cl@(=LW~&T!eps9C#f`UH|iuwD+$xzbAD4(@amg7jgc}$okI_?>clKkbdSZ zBL7MKyPN&%U1D*1+aj4y_hHM2WIo+{3jBt1om+7(!r#H)ypE*4{c{K5Pr^^J{@ z)HmK4{2=pfJQ2w}o6lRmB>gQEw@5$p6ifQ^HTEZa3dav{%tSUWbguRn#0+G9wQZIk z>FpaL^IxDAu0_6q^^0+S7mh&Ym94Y(}G@R}e3d`LJCP?HA);6xQQr#-Dl=wSj{_F~1sZV||Xv*vKyz;ir!N zpf9$6m2ZC-_6y&#UB^Fpz556M!cRo%h5cgfa(%aFIuU!4|B0{{_3J|a=GZ^?CG_P^ zjO`$jYl?Oe{!)GZ7U)h!{4*l`+Js$%f0EwUA9eNfFji|KYcE-Rk$YiAOsTAt}Z$7>&Uq7mQ5zQ9$ zTfM&iy7e21{ZIE|eCDv9tS<1k7=PNuxh3(J=z9+#xgTLZE|1JE!(Ics2!ApECHfKK zB#1MG_+t76+>c=wVXxHJK4AJWUot({AKQVwQqTMuUu53YiLaGE$B+6k(I4tLex6Im z&+5moFU&00Uk7@wDNmSGH=f>J%zv34d-wAF^IvQia}c;}|FrSf{;-Jl@50z`5+OVn z$D-)%#rR9~>0Z;-R*R-%{jiI{H6I1 z7EL$YB${rpD0+LTezezgQ>#VOvF;f^_)GPyGd?RPn<9JXLkqhIf2p2zMm_g0kviJN zDn09rx-5&Nj&`w1&pM-?&%7daw2M`G)){rp$0DhtU98fx&ZuwS9!VYTVwIkCMm^sz zMCxc4tMsfh>bU=l)X^?h=~-vg@%}ARN4r?1XPr^U{a2)pc5$M9+WF@bzyD(Y^FP$9 z+l?bIIfy!X9JLupd-f^wlf2*L`y=UZ;Tc4vu2VNXNxOee@U-<3;;*dlaeme>sC|E^ zXTM1HcX(E0>rWWB3^@eS-+Ghz$@bZJ#(g4^{^ZBzC!7C85cFT9pFeO?ew+FHoqiB& z<$7cOD&jqZF$v`R8{Y%P{2Ywc4e$p_2bQ+)-?MH)pKnH-Kz04`YS86B~cV zJbf7cK*a$k<#QAB$&SPLZ$rB$MDo46i*Xb=p6zRFTuHwF`1i#?=ErXvBIDMsvVM~6 zAD=Nq#;fCfU+mmwd5Ex2%Ga--{!Yv}z8MVv6G`43Xo~c)-Sm_lqU* zdsuHA_x^h#8JBjkDn74kBM$Xq2kV!15%$vfypQqT#QU4r!PwC*!d|LxV**-OlkFcC z_)nbEE^e;YGjHle=1sj=l|R=-19Mk@CbIe6uwDY;FU_C&)>hMxdC2ssU9`i>w>k z#j5)8_t&r5eYFwTd)PUHEUQrh;!P-Gt2c{_x!Gv;XW^BJ8VA?VK0w=I<(V>hwo=&qV@)~i__)$ z^hU&b4t?Danc>?i?IQf8@f-Va-M27TCq?FKQ4g?-@R#bFzc*d$+DPhX7pwH0HKywv zh@_5ou}aVTH0zf4Z;^FNyQuo@qDee2Zg=^c`Tw;1=)`3%KPGV~zg5}V6ZgG!|JE0- zbKTi&J!a7Vx_m|nzxGTX{x#=EBeb^Gx3*?QYcn_U_ig7}XkCmp_PXXwe%_Y#m?%CC zEYTy6W!bFIcfaiQXD`#^YZH32Qa|nud%*b8pC6tUL;NGwhy35aW#f|k@wMr-sry6J#(?T&eLo`g2(i->sm5*P|Bg*{?dCV4w#;8|Y#TMH8|XpZ F{SOQNv$p^M diff --git a/sky130/gds/sky130_fd_sc_hs__xor2_4.gds b/sky130/gds/sky130_fd_sc_hs__xor2_4.gds deleted file mode 100644 index 38fc596b0dc7930204b49d735bc0afdd9ce86593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12988 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 O%Nb#|U~^V1y8i+Ax@d?1 diff --git a/sky130/gds/sky130_fd_sc_hs__xor3_1.gds b/sky130/gds/sky130_fd_sc_hs__xor3_1.gds deleted file mode 100644 index 8aaf0bb06bdc20604c943240b809b841c72e6d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14044 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 diff --git a/sky130/gds/sky130_fd_sc_hs__xor3_2.gds b/sky130/gds/sky130_fd_sc_hs__xor3_2.gds deleted file mode 100644 index e04cb922e2f22a51fe63ed7d8617b1b20b9c73ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14716 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 QrKp=<%d7ElR;jrE2S`dBGynhq diff --git a/sky130/gds/sky130_fd_sc_hs__xor3_4.gds b/sky130/gds/sky130_fd_sc_hs__xor3_4.gds deleted file mode 100644 index c05367b220dbaa9362cf8d6eac1693e191f3d61b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15794 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 TRc+OOQMF=I`-l)-0gLY6n^4LW diff --git a/sky130/gds/sky130_fd_sc_hvl__a21o_1.gds b/sky130/gds/sky130_fd_sc_hvl__a21o_1.gds deleted file mode 100644 index b161d55cdb05e1d53c00b47e78176631c88b9b29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11766 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 b=I;J;n%w=})7XP!)7bIbi*^@d-**28V)nfL diff --git a/sky130/gds/sky130_fd_sc_hvl__a21oi_1.gds b/sky130/gds/sky130_fd_sc_hvl__a21oi_1.gds deleted file mode 100644 index 7b420f35878f0699ed09b81863c792301b7bac78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9658 zcmbuFTc{mZ8OOi9&&=%mJ||MFX^thJQKUz08b#WIZ7#)2N@z_lwy`<3UTAAoY_Jew z1(kTeqYo00P>p@?exU}b4}$HhKADHo2hnQ1fTfBTf;s;G>s$XlGbekN$?Oe>-{xEM zo3+-r)~q#q=2&6f?ptlO)9wAvhPKsu_EOtk{chuK@xXoeJb3qmN6ju-%3r_xQ?J|q zu)`rTLUeE)sxJI%7b zSuyF_!&XeYc8RU6ENyITJZ;uFY&O|jvbfjdBFeKZrN6)GpL=X$ZHVtXc0XC8ysuV_Zae zWBr{sBX948|L>CdEAbt15#{sz8&{T4=ks1q|BWU4uYrFKWsz)0C-ZW$_i6V;l+Qaq z#@B4{EgU~F8$MTZ{J6(Ol+W`+`^Mk!dPmJ=rI>Ax2F zh|E7>wsbqr7uoqLzQYsY&pUs}53eI0*T(`N^1O_Th|lvw`$ivud$rjJ$BXm^Xs?)K ztOuV%n<7~cJrQ2@{D;f@V{AT*Kb&jwh={Q}!?+mY^Zd}hFmIN9yq6<;ccDF>#Pt%% z{EnucUy^ZpBE0JP?+Wc(i|Z@e!ShZYDY^1~ zlbFA_wnWCm`W~5|!nwbI@<^7mUJ>W7wr^i(-wMaa{Ie1B6WRTMheg}?KRym;ef$Js z9*2*J%d@h7o>%|mgYJpbKe{d=p7fVd59^&#^FlmQ^Zy$9ZG!)%@4`&*KIw?$7u$_Xpxi+8=(@eQ|_-@Vp}8 z$@)kCa9mx|MBYMNOyrNp zF>mxm=8bVNmA`Nt@<*TfBbhhG#ZCG1^&{NBW1izPyYAyUu!8$Cenga4^M9VNbw|{? zBhFoaD)nQ1^!4Ln*3X%by%2kUxc>@7!?kV(hVp9reg2326~~@HIq#2e5D~kTaWTXj z{q8aMmUf8l@%ra^VtJ#V9da+vMfZ69(~sqiesQgP#WSLNT>t3D@BsU$e{j~l;VIEQUcdBXd80pi%DwS%(LK&z`mwyx=Q#2Ho$I$4?%NR;=ia}^@#i?v z zKW{5JJp>nV5#^2JmtE#w_REs=7#CB1j=huh^WI6M$GDjCi$A-^=Qs38dW?%Hf6?`4 z@%_iIySD4s;`^7^-*)|5eE;+M+peFB@1I_O+x2(x{nzVnyM8aee|!CH*Z&s#zdyff zfB#nVTg?BO-(vpO{1)@C=C_zXHNVC9*ZjrD&*#rY+`rZ8Z*l)t^IP1%)%+IsZ#BQg z{aej%asO8HTin0ZeEvr6{|bN4mmD0$cRquNM0s`pKhGb&&wX*kXX5+~9*KC;AHTr; z86S6_?$9~fn*>A?hRR6QLqyNw1esfro&!!m{H@*L>%^w~&eAs<)^m6w_#2e=? z{qd^%Gvc>Ih>NRfpZ#Y0MfRJ%nCk!NH172eq7C;{_+N}2`XGFar zE+*9CE@sXC0Kc2V`{9!n{uKFST&%wz z_V=H30zC+I()ACP=*z>m1;`N1aNpBr7s``0nLg#TYSXvGV=wr0hp9m}n_471P1 z+w$wLIDYx*oB#50Tu%9(J3|8ypS|P3_pL?wzYtq6T=9H(9*XnfOikzGIf^f0O*w7- zt;KC`IIz$2d9l7-6Z`{vP_eBO}D?Loxl8D_czs#=cyOgf6U2ZYq5K0t@aDD z4gY-*?W-={?*4iaJNv;R_V6ZL2Y+Y3_q6CY?ZLYiv4>|CvBz&}Ymcu~*6yg!)(aYM Y+Mczxwr8!a?OAJUd)8$4(ErT-2Vsw@3IG5A diff --git a/sky130/gds/sky130_fd_sc_hvl__a22o_1.gds b/sky130/gds/sky130_fd_sc_hvl__a22o_1.gds deleted file mode 100644 index bb942f078acbf9e87789cc91b8d5704343e914c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13980 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__and2_1.gds b/sky130/gds/sky130_fd_sc_hvl__and2_1.gds deleted file mode 100644 index ccd181e48421cb751703f4ded98848c6e10f87f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9098 zcmbuFS%@4}6oyZCS5+_5-7}GBj0qYrc~D1V3?dr0#JCX&YFra_h$a#>#wA1vF1Rr6 zg5vfNToAej6) zC6j9PJeggo*1waM%#^y!l{xu;OS_t_zwF{`S6{nXWO^+(_`h?-wz$Ud(I6 z`KPKM#uvwQwO?900=v&^+!*Vh>=M-LO5|G{m>vutaU;qL^AA0v?P|Xf$h?dj(e6SY zJte~rVt&pE99hJuh!N!xA9ES`I&+K=&vv?}i|75tetsU!{%hZZdftw{|1Ge!3~gD5 zKJjckr^gv_eDr*2im|vF{pVSG3-x&vr)&%9@xOV zkq?o>GdTwJeGeDsX)^7X$ctT!0zoAHPGbe=Y%ufAm5 z=;BlPuKjKv4&zw-hCS;SqCQuljh?J`>kq9z$v8bDy!`nuboCqc>oMxV^LCyN9C=6U zXDs$zwbVyGcOLS4A2$}}*W(0h3+roSz4UP8+YTzKL2Oe ze#x~T>GJiTJbzG}&wqyVlhVHK2dw|M;N)*&JWmWv*B~R}MwI9C@8oBr>i77C`k8UG z*iTkrZ9GNS<{p1VT^Ki>68BkuuI)zFo4zqt|Dmrne|tPf6@k86&o-y_=N;>MA<-@@LC`He$p4}Bxz z(fmWdt8Z+hJ@k!;=Y73?-F_PL48PuW=dZ&N+ynVDqCD!`b#Jum-Zd}->RHwMC@$FjV@m3S8q_SHqWSD^#)_yPgbdy zrbhL6{jnatyfA;ZNWE;EQN3)D(Zvh>#w_(3?;F+Qy^HyMd7OOpKT4K$G9=(*RNBrF(;57$FEM}n{1Wr8&o425`uq~( z-{%iLemZ}4WB=8czr_Bl&o8n6>hnwNzxw#H~#Qv+#FR}mX_winv-y_<~1NrWX z@4JnY-nZ}Mx3JftZyds2h`tf={QhSrzrBb0J-)4e+qg&E=Y5~~jlA!>_w}BW?*D!H z8}qf@jjsaTyF0{=Gv$_Ipzc@$i-Cf+cqBuW~OZHR0 z$B)!cjQbV)jTev?&mPTla{LMX$++>jxSuRkzsGOXPmBwTeR&so9!7ty3*_FNaU;qL zub&Fu6(xAz%I5_mzi}{bL_F$q4W!@WHubqD<9QG-^qXj7y@R=bXO8%G=HkXqv7fw# zdT&Nu#{$#+@o&V9C@;+Kj^lS7_^D@hz4}JP3;pZ??f3dof$Vq2jg$Iczqi@`1w+N> z-VUCBjC}6p&p7G%capE~J^s)4zBa0b@8K&X+p8+0lFg_{D%n02q-xJfk3VR9->qkC zzeC!y(Iksv+)eF1tV&L4hJ{Ym-pHgMPNmmQd0!;;O+@L4%u`~Picx0bcJ64xH5 zU8d%=wdQ5)_Mw*hyb|rEt+~tE+G}NPd;>?Xm9_B(XaF1kzrz4_`_#N$N8cy%ADCc) AtN;K2 diff --git a/sky130/gds/sky130_fd_sc_hvl__and3_1.gds b/sky130/gds/sky130_fd_sc_hvl__and3_1.gds deleted file mode 100644 index cf94e0444a16bf13a303178bb76b145138da3daf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10302 zcmbuFYph*G8HQ)Cz4zMpOOc4jR*(Qc(4)3#)BpzBQX;oBKv56^$7-vfg$Ru%O;Hqc zP@^WAD4H}H{}8+c<0X*BO8j9!jT$eB_6I?KU^RG&MorWZIlk|F^X|3QIeSg(?46uG zJ>SeT-^`lXvu5vgT<)^$X1Ar0b)I#7x8yqReE0J5|J^Xl58nB~w1;{k>X+NwRqk)|FPQgt!bKm%;bpky-^QET9w|BT8`$ce_$=zf6XBQJzrEP+uvR{Rp9|5}10v?` z1mmKQ&+`v*J^6LafAE?FcCd%F9>e$pd!NH~#TpkGAMCJl&*yOMp2F`U%Gng_h4#z& zZ}a_M4)+W6lX)lDKg8)1)_)Q48lSxmUYXdt`I?BQ@ZAa2r4Yz|^Cco)&cCC4{dr$v zy(#8XtlqDDyzH+8|0lZsop0g#eHZmatT(QYj)-{YVk;+m=VLy$mH0_p?>!OaP4tWP zNVe<86PWj~majq^f$bI4JC5}i$av=-D<>K6K3kCGyj~*OFOP4xAK#SoYkA#TxW0iI z+T=?_dE7@`KR+VgfBq$6_?z$(&LbQ0kKSv(IR1m_BH~ehf;`MWqt=ypsN(@w1%crY~~bjEk}H zbKhj%{A7v9>*Hc1KkG3seUW(?7i0Omn=Nnm$r6#*$Hho~)?;4!BJ(mX#`2GjTi)@3 z5|P)(#YleEV_y0q^D-`;Du2Fg{*1piKNpwl*B|qAzG%MK#e6a@B3`@xS&!?M{htxz z@o_P-ep#=Ndn0{ufblRcA|A~@_^0{e5aXdQB3|}w|MZ{dY}1ya zT~Yh4ICuXot{#IYhECl$Ni7(gz{Ryb*p*pwrC#rANrxZ*3U07FFz@o$NhtTD6jRqo6YM!DVo>a zEc$q@-+SJ?{==eqz30WaKX}@_;i_of;At`LkB*x+J|LRM_0RE#^4k7$p80vNaYaG@ zIS+Ah?&rO*emKwcdH)pYF)qe@&NDsUe?)qWi!q<`Opo^uksjk>%;!AQ{V?O7ZKKD&aO|2X=OGq9Mw7X3$DM7(zW z41QqV@ScM77#CxHhVOAk-$dPi7vyJo#zmCZ=I8mJe(S9T=`k+G{Px-AwSQQU9^+!n z?}q%nke{T-xES;MA%8#QC+RUR#{9v9*6-ogg7g>{WB#J=|Hbbgwr*4RkHzmlmOpj> zS^WNG`BV3=#qWQXKXw0G{QhbAQ}@rs@4uEmb^l%b{%!eF_wR)JzkPoh?%zDK4$r_| zaZZW&uExj3Gb;OU#ZP$uSNw$cZ^ch||5f~i_fN%7SpOA2Vf|M8g!NbP7hOLI_m4{c zg!5y?PdGnT{Dkvk#ZNdtR{VtXW5rK6KUVyN^JCS={=sK?+&@GOH z{!4#G?7KcLM)qIU@)Z2Wxg*?$P%0ez<6UIw%_1!NmFQ2orAO3kO@-xo-p}f}be*&KsE<@edmG~UmVqBc}{3_i4Sg*C+ z{28Ayza?&u^ncC9>YoQ=%p|V`zta(MEo%Ee!gK3vFXn1jiT}l1GA{0o`z^e8=+F2g z^IPIM^?vp!KI`CFX!E9m{_hA77g1i@|H0Q$?-y9RHy7+2!SzI3M0u^>J`eA^`;q&n z1$!6bcf`eY&+{wq-_EbB-@XlugJi!M7uWUQo;U0JFH99bH~Z%wf&ARem$>fp^E%(Y zcR8Ks-9vN+<8<%u|m)`#Dzl7hJxS@2vLzwC(m}5xaMQc1q7%-@yA|A=}1%dBV7v z+s2(@=bzFwPqou?ci*!}ZrbU&$5Z9TmRNqLoYq>SZMjoz{M8ZGTB_ao$0D|^)YRPl Q6N}^?URAa`xb`jgKMKqUZ2$lO diff --git a/sky130/gds/sky130_fd_sc_hvl__buf_1.gds b/sky130/gds/sky130_fd_sc_hvl__buf_1.gds deleted file mode 100644 index be4a72cd87a0ed026730b80b300d380f08d383d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7688 zcmbuEYlu}<6vy{H_ndPdb7$s`NH#fWK@&tnB@#UhQByJ$$;>iMudmEXgB%P*dYBkU zZzu@N2r2}l$Re|cpTZ#e5PfMN=!<22sK_#^FFF1Hd+l}4IWza{^xO-V-<@^#f3LmP z+K+S2nAiltDl=3HD&L#B88j7hsku1)+cbiB+kG2%Y}m2On5pGx?)?4NF8Tb>>FXCB zyXv(At8X_$QNDI4jz=HZHEZ_Otu32dqnlb=AKun#ZQQw~HOrW=YE0Z4m`6<97nrGL zq*)#xAOFsn(mG>mdlSZ6#jeEla3IkyN$bxZ9UnjYw=wm@N@E80;rCIcwWswrIsJ{z zvN6GB#`L{qj2TT>`VC{*j;~|&F=?kn`%e8K9<=+`7`BU|gzTSoC9db{qmQ7)w}QTu zjZfvb682nuaEXkadd5JO55Yg|O4vK;@8H1d>BF>i( z+l+*Ld!av#dO22+Kekh%y|=&eCzz}sAZL!upE)4;BZFzupAzlT{Vj0gTgrNbCFBMA zpf_RVUgY)-G9dR^-I3{ z9V=_0N1V#)Fn(kHDQTxp30j5JH8ROzn~q*RXdrm zd0h0$3I0?1Brc89@<(S^X2(BCZ^k5ECFABt3440{^IU#y{M^Ubu6{USc7L<>w7%u^ zuWoe$$H5+%(%;!WAKpJmALNLqdEQYV~KIwj}k*2z}KBell=GY z6rHl~Cy^^*_v-uMhko1Cd7>Q6=zp>Cn^gR8mmYt=>Kt)7?SHw|hlTZW9=iO;b5N%d zd{3qL4Sv(E9Le~fq_4axdS!L7=#{Xi$3ID5Yl^|Xz@AN6gbZuHOkS$gWn z>#Q5~O4f~brLTT$$GTD9CgQPnrKf&u$GTCkWZh_2`s!!fp?=h}ekAKgyK+MPWc}Ow zQMALSy>8t)Zr&w!C9bFQKS{6qhEn$pWyk#^<-gGW*Vf}~dxram5@XkW&(hk{7?X(XRCA znJ4Ob !2cBN0xJW-D{(zH z|KU>6g?}Zaj&`L_Z=au@g1;|OL&xA6{EhopCG5HW%lkza&Q3@j?Mk0M{9Sasf2Mzu zI@*;!eT=<|I{WDzl^>>{xkaS^C$H?kMk$vzrgvE(HA&>GWr7NPexzh z{K@F~-mCf*z8ezOc40q-U5V@I{eP0a{+Z~NJ=;aEggsXuUMGG-yszLmNcyE+>GRKa z^#?_#?72|%O4z;r8&gEzCf+}?U%r2|oZ{E>{N}io_S}VDIpO@xLgl$>-~TxB+~h|&;ryJSm*G>hKQPhM~Kt@OL7@G(;zjPJO4 z*+R+2`RdILR=;ckd>8TGccsRT#SR4o-Ns+NisRZGQGT|w?c F^B=juv=jgU diff --git a/sky130/gds/sky130_fd_sc_hvl__buf_16.gds b/sky130/gds/sky130_fd_sc_hvl__buf_16.gds deleted file mode 100644 index 31cb2d0713d97c3ff671db148c9e874ae0187cb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39408 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__buf_2.gds b/sky130/gds/sky130_fd_sc_hvl__buf_2.gds deleted file mode 100644 index 24ec6bdf66fcd9195f20ac5a9aae385b002bf3b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8694 zcmbuENsJU#7{^~%cUM>UbocZSB92VVVB}yNS6qS^c3grXprQ!E1T=^^pfZ7o2ujSj zo9MxVffz$X4#q@1AO|@qUNn)D90)EkxC9f4OH2eA|Nr;Bud8a9dO~$4lOKFlzxTbZ zUcIU^p$URzrmqlGelRuDYbxea)1UmesR!ZE!)rFJ-n7-2iN*5FIWOM0@bi5qr_Vod z)!Vz4-);KJ*=}DL4nMN>nrT-Lu6=ND_<_N7TZRS)*KA%pc&#y|$e6GZnC&KP24WTe@N&n3L(a|%18`E5`G^S?+|K6{(@uWX5_Km6h zi%R`wOzlX_=r)NfaXixxo5n<^;h&7zd=F(IuEgcq=8OozlUg%hU9p@e}Mp>LLz5^5(kw?PmQdZ{qJE{EfuyM!B3@ zN**u0D#ytP^R0x%MalC5_{#Dy{*Q8%1+<@@lJW9hIZiUpdMJ@^y!zh3`gZMe& z*3ted>Z4@&Rpe6!--@S1y_4mya{VFe*$&L#%P_z9C@~j~;NLrxHa?zj>u0a4Zk&r> zw_{}`>hmbt=on4Kdh-|R@5nekCA?($D{cJ-+Zi>1ZMDQhKI@Y| zy0|hkzno{V*0R1z)|)>i;>r5YPWCU?b)MH;A2Yq)+j!C+bp8;>-}V#M%-RW@=NL_v z@mDf#>*E+!F&F;9_3K#P4tEGKN5)yM5`HrOe4D?;{+DvisB6Dt@VLa4IPUjxy6rzD z=BxcFak=#1&)sj&%HP;5zOwm~=t{)BemC+kf15h)%Hfp%t8KqYv>)k`^&dNba5$NN ziS#?l^7)?dcouAew}7mnk8Us#|-Y$@YP z8_)EEZQ>QDD#hdYu^e|i(=V+MuUuA&$MK`@j%WJe4DrI_O7XZ?r0U0K$20xvDe-E1mE!UGq3@1o`dvrGtB)wf>pH5m@l2oN#Crc{STC3OyxJ?`E4ywGUx~Oke|?JhZGItsT{*??bKl7NE4goEy_942kE!|>T>l5I z|4H^c<4Rxu^Ss(d>~-KNyYMW*xDxTq_Vc{@1o7KM-ECYs!SA!(%&%m-=_`Hh=l2E9 zKYo8uvfYd;eeLIYY&U%++s(Mr*M6SIcGGVY?Y42Hr~N#S?WV6}yBSyd+RyJ+MLet2 z*TgL0S%z^Xj%SWv|>^7B0ArQas<+PKn_zkq&X-T?jACi2?2(vzR(F)#f#k=MqRp8Vk|)ct$(Qxr4A za|q)~9M9~(DsogBn7hv>_%Y@_<#tH zc@H|&eC=KOgmBtdn*X)Qyz2QB#E}AdBalXE}$YqW^a?_p%(hgTtNJTt(BlE2u-s{0CiT BT@L^N diff --git a/sky130/gds/sky130_fd_sc_hvl__buf_32.gds b/sky130/gds/sky130_fd_sc_hvl__buf_32.gds deleted file mode 100644 index c1a845acfec875ede7dd7e1519664d5398def8aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59888 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 IeoXcM0pM)u+yDRo diff --git a/sky130/gds/sky130_fd_sc_hvl__buf_4.gds b/sky130/gds/sky130_fd_sc_hvl__buf_4.gds deleted file mode 100644 index 6a42c2847f6065caab23230febe10eda48f67d3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11338 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 A_W%F@ diff --git a/sky130/gds/sky130_fd_sc_hvl__buf_8.gds b/sky130/gds/sky130_fd_sc_hvl__buf_8.gds deleted file mode 100644 index bea88407a13d36f9b81800224ddedb4a978d745e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20202 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 PS4KOrlk;6d)fVMHDqCgO diff --git a/sky130/gds/sky130_fd_sc_hvl__decap_4.gds b/sky130/gds/sky130_fd_sc_hvl__decap_4.gds deleted file mode 100644 index 455cbfe03efa6f968f9871f6c57e336f12f68fc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4884 zcmbuDTWB0*6vxlZ&de_BW;cOQiH72XeUJu?sMuPSCZ_bETCDX_Tid0!O2rD=pi)X} ze5fEI-ta*JB2*9+UwkNeQ3Sz7bu@WJl| zeY7T0U%=0YxR3-kVv*=w5hJhjFs5It&Io%l7W~h8|2NZr`l(3!ANcz!Fne31whl2p zn;pH+i2F|p)f-{Y>yL-{ywL1|1J>26NJqG{K z8KGOrzs^t4E975aFv8b8_~GH`>?L}U4(4B92prwy)MCW-ynbK4|Gg9Ne-)n2iICI9HZ*2%oNR~Sb>QoC^|zs>pnah)=5<4oY-`gQhv{5hu|6+eHU`$CTM zdM-vR!QB3|T;KEcdd5$v-YC6t{m7H5H@1INy%F}(_#Ncw)}QeQ)pv~Z<$B&tJr75# z+xQ>#uQL8GuK!Zp|9;*+f25VKe}~g2mGwHm@t_~hfAoIW3Nhk(KK?Sj&CO_YGp;zl zTzsq#?fYuhPhXE`SN0`xflRq5W$}5C7Odqb)|n z=e`NO(%B2+N56@T{3H^;5!ike{$MxadZC_sO!NYNo(+s|Ky28JxL&BQJ)m)uERb<& zHP6Yv8;dbG3{Gzol*NnJ^Sac7v>+oq;=Oe2C{D2jb-(x<63w6 zaUkoa-B?zCvQ^_Ie*`iv?Z&eB$sX-nng+6Ov>VI%m+aBLrKwT-Mm_uIuNU?&#U8`; zlf4|sylFR<<)0x}&OJLH$h>JcmgS#q(!8_tM$Mag=I^iP^Vj#|>d)_ho^#^666a^E zzp3*x!d@7^LjMQir+9B1c@44gK4@&;g8uV;(i8T=_`EOKp!z=XzUb`64aNF+z1AI{ z4P@Q48_Vji@cb{UzcsD-_xYvf-!e`Y=YO&5r^5a-kbi~ecR&$9K$`#3l1`o!Fv-B>a|-p9JBH?nTpjivSD zzW9{tjqW=Lb|dVC{bT>#+DCk2?HTRA5%xlTh5b*zpKbp_soX!^`>QASO&-Rf{c}jK z^Z!5JZ!Ih{{QqL7WNTuXlI+q*Qpqlh5UO=~x_SM{wM#pGeok7G>FjQo0POA?Uw>&$ zWZ{1yW7u}QKfDjZA3PQLqmSAraB`D0CbE0C&q7;8A1yik*6nlE^cNeyeYJ~!=Y4lo Si{JS`^;PR1*4NR;ME(VFQjdZF diff --git a/sky130/gds/sky130_fd_sc_hvl__decap_8.gds b/sky130/gds/sky130_fd_sc_hvl__decap_8.gds deleted file mode 100644 index 33550cb42377e5efd7cbf8ee249e38aca5072fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6964 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 d?)AW8rL diff --git a/sky130/gds/sky130_fd_sc_hvl__dfrtp_1.gds b/sky130/gds/sky130_fd_sc_hvl__dfrtp_1.gds deleted file mode 100644 index 49804a0d55310087292002c91efdc42f93562655..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29300 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 Ieki&B2X+x_bpQYW diff --git a/sky130/gds/sky130_fd_sc_hvl__dfstp_1.gds b/sky130/gds/sky130_fd_sc_hvl__dfstp_1.gds deleted file mode 100644 index ab76a2151ebfc1af6a0311d34d756543c36ce12d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29300 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__dfxbp_1.gds b/sky130/gds/sky130_fd_sc_hvl__dfxbp_1.gds deleted file mode 100644 index 3650e02e84150159a40b46d27ebedfc0d71d13cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28546 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__diode_2.gds b/sky130/gds/sky130_fd_sc_hvl__diode_2.gds deleted file mode 100644 index dff4e515690f9427f7a2ff795544fd882216ae6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5168 zcmchbPiP!v7{=e7-I-0c+w2yKVKo#F_RzYt{yB&W(!?z`1X62ktA%u_rqW4;-a-(Bo(kT?gEX1KZ#5etEv< z{oe1-%v2%?f>&gs6jZNCO@A1SO@8v!%++siKiyeB z{LSi_mt`UxtlbwyOK&be{^VobHx{}}uXiuJd$HSHSbS^YeD?{F%7{p`JCG9+jRi6; z?Pgg-J{JkbMal92MI{GJs zj{ej;=IH5PMZH*mjGEJU#s*)QSEHe^dX+*v|K-j{XUuqd)bI z+vqE(6ZOV$L3KvNbH`uCc&ShLm+H&LV}tb^KXn{`Lg-xFxQ(89Q*UJ6)EoQqe?Q&7 zyvz-}Aw22iFb8MRBs%+ zp?V|Yx%$RZTtB1L&A61WryJ|f%Mty!%ZT!N&)>Vof1mwtx%!K@{w(j9$-0ThkFcM= zzJFAP*6a9_^8;(`Q`XH0H>;bYi~Ih4di?z`>nHISv2|m#bz|Ie{doHR`D?z4oNyV@ z?&q)PXT1M|%NQTezx_rCasKhSr*!dwdOjz3{_^=@bmuPO#x2iZJAYQyw{+B~zUMB^p?`(O!H z^@qYEtuJ_eDRuW2k6 zFo){jMRO?D19ONzESf{{9>PY^9Lir6>49}9-owCA%(=bUzH4tjy0UNm#LbVTJ`qlx z!G7hX`!v39Md|+&@m(|Csd!h~a<3=-aj%#Dz;9hfTG6Q&W;>ake$RS&#_4DA8R4H4 d_f0=`$oao``laFg8{eyb*!=tTRn(y(cK`)uihKY7 diff --git a/sky130/gds/sky130_fd_sc_hvl__dlclkp_1.gds b/sky130/gds/sky130_fd_sc_hvl__dlclkp_1.gds deleted file mode 100644 index 4bc099d435f9d3f38273f3d6dbf4815f1aaf58a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24070 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 O7s}smzh1OM#r;3tKrMX$ diff --git a/sky130/gds/sky130_fd_sc_hvl__dlrtp_1.gds b/sky130/gds/sky130_fd_sc_hvl__dlrtp_1.gds deleted file mode 100644 index 28d3fe0887419babd44cfdcbe593a1dd041b8547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19870 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__dlxtp_1.gds b/sky130/gds/sky130_fd_sc_hvl__dlxtp_1.gds deleted file mode 100644 index c027e1314ee75d7526648a5452042a2e3d13c3f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16574 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__einvn_1.gds b/sky130/gds/sky130_fd_sc_hvl__einvn_1.gds deleted file mode 100644 index deff9672f9e66f51898da8a4bfb8ea08c10a02af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9902 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 Jrx^Q&`2xt-*+T#T diff --git a/sky130/gds/sky130_fd_sc_hvl__einvp_1.gds b/sky130/gds/sky130_fd_sc_hvl__einvp_1.gds deleted file mode 100644 index 45e95e074d129c3614d1483842be73943d04fda5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9690 zcmbuFZLAzs8OP7g?##~a&fa@Vh~?TV=?8%rE`vxe&we9dskL&y!n>> zx2|k|EzM=f;?@x(7UiEi-zsLM;@)~cnU&;B`?ROD>RsBoq`JL-u%lswl`F*_VUt0Ri zgRwr2@oy9n`V`}MdHQ&xpI{8>U-7e8GW)Z0jEgwFmcN(dAE7Y)pE@^uyX4>v=LQer zCy>YU*X%f%U2Vt3-u>o_jI&)4{#yAjWd7lsm^+NWdr`^!@0L#-{=m)?asFEEeO&Ez zUol@yFTi}9iTMdkUd3AD90hj1V(p9Y8rv^07wqroXC?Db;P01^Gcf&y9T$^}ouel< z^nbD*=fBJKfOQzSu+^^yCnCO9|9n03b?Cy#q6NY*$44)%@GSdiM1!;LP0zA1TGr_tE}C$RC(Liuqvw0&!lny_DAh)_~Z3 z(%Ki3FIsyd&a1Y!z1lyHV;-H$-d8f;g7)^IKY`g}VZ4Djf35Z=^PL{C_QcLxm|KiZ zWW4ti`De zvtRa0{q&rAJ{-??s5?E8T!IW?#D0UTJtZl{(Li*tW7T|_+E|9RwL{t2h+x3A{E z;m7YP<43w`|Ftg=ak!e_p6_A)2JfJLKf?3nk&^jkxIPgVaXjj0%jQprXBT}w-#wR` z{p5C>2fvGJXhJ^w7#AacZ;yFtS|L0i7b8BOi(QPjI9TDoaKB+(ysWwZJg@h(`C@v5 z`6A+t^GBcKX8sA$Zyy(r(|^{FzR0@K7i0C~d4mP>C&YMsTwI9ve|WF?;t1oRFCrct z|L8yFiv`9*Uqrmo=lWv5xqc@^zkOVc^q=RkZuCXgjd5|Res=x)_Xl>JPp;c=9WPvM zaS_L>{XfRneM8iJLtOLzQOS?{n_d4WbN`$8c-A~fUqs(^-}ChGYX9y2;h$eP_YjU_ zzuDO-BF6pDA<@Sh{p5D@x@U;y@%m>w;drCp+hbmuiste9ryq_t`q@_VvZJDT*;diV z8~uEPdHHjqd3^RUe>mRg58g3v_=sp8*B||GywM-MWL|MlG>_L0{cya|XPvl@@9Zq; z_wk5}YwqVm{aGjaynl=I7#Cwc>qL+DZ;>A3V$5fq=w(Ms(qmkV`K%ND{JE0!7#Cwc z>qMXT50M_@V$5fq=<)t7(qmkV`FvkGeiHMK_oU+79{i2ChJSQ z&6$@SE=iAZG3NL8o0o4aNsn78$3z299j`4E0bT*UE4pLL?o`ib-y7h^u_M340o=`k+GeAbB`>nGA%%AoCH~aI?uKTw4&)J`!mcQ-&clPJ6!nJ*$9^@}C*Cw$)gLR^ab95?$fa{TO<7#n}* z1*?04{TkN+$+|Nx#_G@WhWOl;p2*Mm85a?696#%ne8=i1cDGplM8u_Uz^c?d= z#2bCi6Z3NZMCN5&jOFKf%u8QnUdF{(e)lJMn=oH@RQMOXcV}GO6zM?iu5{UZ61VKK^&NZ-n!UG!RKpbo({F1Bh4t2ccNZ%Kw#Ehv^FK;qy$ihnAY!V;k8+SmTFXzL%oTg4)q&mQ=NBCzP9ZIzNkT<8GVVD%RE>+&D|m bheu|yi;uOnxl(P;+pbg_x9mRZ-gEy4#?{JG diff --git a/sky130/gds/sky130_fd_sc_hvl__fill_1.gds b/sky130/gds/sky130_fd_sc_hvl__fill_1.gds deleted file mode 100644 index 075c3db7c2e2d9bec793f7d281b53e6b42218c0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2512 zcmchYziU%b9K}ywl9y7_ycCKO4dUQp4Qg=^6{L+R4uxXsE289l~Rd8_7 zwTqjBxRxxg{tI0Tf(|-#bL;bazxSQIo1{r?6(5Ap@>YFZUJ0 zC?SVaIO*Oa@A-|D`s%~gHDD~Ay*l;!;>?#1JC|y$bMH6iZ=;;;?=Aa&^U2!8h4bOk zYP(fLcR@>{HvK}UX%A6wQ(nt7Ou z6unQrt<%iYt4sf57C&2^6y5btCjGPPY;w}$HqWqg{Z)7UHT4&h`6G(!kLf+N^^@{^ zuwVXe`erU=)82!Wch`A;d-6w~Ssz*WZvCX_1O0*InA|qGZe(+?-=t~XB$m$KzyFPR-ig5KpFWa4azB64H$6Y3kL(-S)xW8Ze2G!tc0%=uP7e0R zb^pQnleg#ZE%-+~RNx;?Aq)RlN}}?|vy*4mPqgNKyh6U5tS0<`J0VxG%Q2+n{ diff --git a/sky130/gds/sky130_fd_sc_hvl__fill_2.gds b/sky130/gds/sky130_fd_sc_hvl__fill_2.gds deleted file mode 100644 index a3d507ba737ef3d3f69026e5934c6a5d3262d0ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2896 zcmchZ&1(~35XPU~WH%+G*%XQr4dTHb#Ng*aRFF2NcqkO>w}m$NL1{4;8x%^>TLlju zJm=!ggLo~u2tD~P^dtxcJ?O!kx2`ku?quI=yTPW|h42f{=6Pq{d1q$>AFg{J701nO zA&)Y0IDzB#cNAQ|x%6oH;qnSFn(?kqytz2_<-_kw_0F01?b+L?cq^mW|D43Ha{Z$`H%)v*dm@+p>SMEAL zb^f$XTxU{g;_|vOKh6Er_?)NA?Xj2~mv!a;jKAOg?>GMe&aWoV&*1e>_~UcubKpME zb5|zn-{T)({|UeLty23|DZ1T16FvKt-74)sM^KpQabJRP&(y#nTf1#=V<^#ScCi|DgFN{W+>b7JmUI51wuS diff --git a/sky130/gds/sky130_fd_sc_hvl__fill_4.gds b/sky130/gds/sky130_fd_sc_hvl__fill_4.gds deleted file mode 100644 index 390c368d5f7294ee4b84bced0c253b8292753f85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3664 zcmbuCyK59t6vn@q-MPDjO?Cr8i7sMc3NiRVK{OyqOt1(9*EAO&E zPek>*8@|8$7btHjf!;N`-%#3kRDU(p!(P?5niYR#wJLfg#oOp}XNfB*-bODzth4K{{1L>Jas6<(eo|-7v%DqwGUN5P@u>fp)z>2P=ee$m zr)5j-p`^VR*?<4*{XiekeJXk-{B(WyGtn!1eu`d6@l^jR{j$`5&mYjb zE4A**ed{05C)dArpXUWA>Gx><(*J_v>A?EzT&@{rNfW+nyJaeL1d7^LJOow=kd-Uw1{B?$6J$e_n`!Au-ynkZ)9QBXsbDaN#UiNK<{u9&ZsDDhKqy7oKHGgC%pn(pFozv@Fh?A+svPx(Ppuu> zoci?&mAW@NO)ih_)g~OZyjGNUN|GwP@Eua60Fncjo=bx%BQ^^kDc5=iTr9-k;~)_dtQ;+=cFx zll=;<&vf>+>U@-~YNexPJQG%J@y_cAIOvm8v~n zID76)W#&<(_OLShtXiqe%vGzE3y{eHsDcB}K@}b7fSz)?Uax-vNKFBhj`~!y92esK zOgl96BSHP%TD`va8=yQa1ZZEz|7$`W59+V@deB$tE&Ag>VY!#%LW~>q*wzoE7ozqS z>zO(p)K5kIvy<#EEKy_d5@NiG9_xOAzY|z?Nr=KNiVJl-sGrpSJv9F0g4Y)N3#lD+ z2{CTeQ#Z-fs2|k& za-jd%TyMykHEur$aqR`x-{1PWr}yYQVZ9LQW_{r)>xISdtQTV3=wHHi>hTxKxC?7$ zJ-H?6e@y?MdiWIPpRv~S{OSBdJ;$~7hWanWkj%TLjtBiCdaA-3 zzc};X@CT527s|W~_nrTMK05y8d(G9>y!~I;!2V(WDozVgi219qA=Gh$ z9{Y~@vpDUO@+Rqp`{qy2zipd+^O&=#9rWV6OL3veKi9>+xlJMa=DLJte=0}*xlNzsOL3veU-h!D+7Ys^!a8Uj zc=wymKb0eYwd0d~DK0emXC~O!b%pGknGouDQ-3N){;unjd?_w8`8$j3n?5dNUuRKh z_NQ{>pFZxBd?_w8`NInPriO&<3oAmiKb0f@)R0f|rMS@KpLG2v-M>lm&;Q;(l;>#t z?eib&?eiDwZSzmk^^59iO0j;M(k|61E!Kh!7E7t3 zQbk3?hdu>m-zrE&eJDXHh=TZ}J{d#{f~Z&(ixtI}uK#n-{CDo8*=e&o(EgG$^P6+d zy>stQRuT!rhh#Je%RkD1j7VA5$kqPOQVElNdmlNl>%bwAm8JNO$yaXP^7-+zw@lC9 z(43pOPe$X;?r4(CK5=O6#Ep%|cQX`WxQT$ zwOXe|f}JAqXBm?{7AJ8&8qWMJzJLB?t9AZg-1rPBGJF(2pCnz}_cvs|h|GxeJtq>r zld<})#Yvnm^n)kOC*$kPClT-LA3^O^knweeQTr)j zOvvC*yN<;5OWhCifxI|sZ{qr9#`EcWIuD-a5I%>EU2U*^MdcMQ+LY_c9 zyYM@Sc-*w}N_hVLcewh-)Afit^uEdJjP;MLKC-hf?odB&n(z3txT8jP%x~Apg88KO zr3Z<)U;lc4e0AOHb;+5G`TfAfeZP_UmM7`A{ABqn+rLoX%5e*SIFkGl44Kj-+*VeZGV9yWUX1{pO@j_2~{{P3`Or7@52T%0WM zqwQFGo6tA*iZ=g3!x|?ybqqaCp6}>K+s%t((mb6%_0#hmeXUd9Uv&MG?!5(Z za>@6Xw12HrJzf8#dKxE-e63SGU4Nu{8Yhcls) z^V7xpvG?EZ*MH9MqW_%Vd;K&4&KYCeQTU7 z>R+$ZzSSqSZ;g{h{p)qwxB6|OZx<&E`q%5UZ}myH?;=hX^&hRlKDiF#^`*yO@w>*! zbp_*(>!Jzs+dOT4L{4<}1B{jC4?gvXye>`_wjSi7{d>lAW#lfQbs^Y4D}p6>kG3G)}_$J^+|`C3pX0z1RZ_z1Wq_zFo%HNAf>~ C^}AdE diff --git a/sky130/gds/sky130_fd_sc_hvl__inv_16.gds b/sky130/gds/sky130_fd_sc_hvl__inv_16.gds deleted file mode 100644 index 36742de57388d043b7d9de6d47c90025490b2340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29772 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 Qza7W!Zdh!$aP^w*Yt}j3Pyhe` diff --git a/sky130/gds/sky130_fd_sc_hvl__inv_8.gds b/sky130/gds/sky130_fd_sc_hvl__inv_8.gds deleted file mode 100644 index 145250233929ed6e4b8035f964933b57ee6db423..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17150 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 f&#T*=lho9paYN7=$E zGbk!V5cLm5g&CYeEuupdWm+whid0cI^dGHK2I>qVIy;?1q-gwppWpf3^OBq=yJr{D zPx?FOd%nNt_x#S=lj|Z^sod(ec2v5baeZ#gb-P!(sr2uzR*6pBd)I?^KKQV6Bc0Xj z_I&)B13&rdb8o!<>{VZ0zU^kWwOXuwRTM4U_wbILSI^&b_x!?p=Z~K{F+YD|;jV}7 zIezN($4|{4KQX_i;Mzuh^;MZ^pB{g+UOrgOEW6n_9M<6<+cr!Vy)eW@2W^6!4s z^kUC`(~F1)^N-+1{}z8^`bgYftY@7#e%7x=jN8Y>4aVPv{pc@N?>2uC@xuJ+!*SDJ z@6V5Nh zMQl&|OMfH#pXXb17xq1pu={<;=kKUTOdfyWk9K^rx)7glF`-W%e@~p>n|S=;KVw|y zu>WepY8B&K!Es_%Mr}V4`v;F#`vr2vIVv{3kKeC_N6g-*?RX;gTYJ3icK-6Z()cvS zhI)yt2R|a>h58B9kGkpe38`aT4C(1J`F_)jQ`3w(Cn8?x&v7?@YU34$E?7N8#0&M# zt*)*2;w|M)QKAzTF|EPY;mVd`=LZ3I{VlMwRdS7?wMPGO5#a#Vzdds_GR*dt9 z-j8EBoPTA}be%Jz=_-rjMtU1}=S)J5n|d)c{;oOmtyV?z?V1zA{@jm!!*fZbFXLj! zKiXx!(TZrk(JnFU&;95dtt6x`<6_9aXWV>yE{NvaGcJbxxgY&|E+nKc<6_9a_lo)U zoe|Bq_lg+y=YI6>JCl&UjEf=v{!8XtTN2He_XYNEyuI-J<9_t#{X?WL<6_9ae$IRc zj)~@5KPUQlp+EPd@4&Hy^krNO`8Sr$w>c}CZ(~^u`*T0~H)j*lmvJ%VKe%YVLo=fJ z^8U~I$J-0X&;97n=LeC#jEf=v;W_gisfy-1JSX~ip+EPd??^QveHj-+{+o80@1_;e zd^hb9!~Wcl{+m`3(wA{Dc#Gde|1&OD zi}hPB*|^7-L>u>(OJaEZ+>hfQUrNYvGcJb4zxAB?ZaXHL@78l-*ni;7xcB`S*B?A* ziqZY}KjI?dh360JTsds@Z}GoY|B86HSU<6Bc~8!YmiNT67|x&LWc{`sOUSx0E{5vY zcmer;7W4n5gq_!6{t*|ky>R?fi43y{1Fi^tRJ7T zhsJTeJ((h7>7Vgp{Xk^8fp4VXUTyJN{GV}gU)Z1Zr@zR$(_akL zpMB2$ot#a`zGYkt_3v#qLLJ{zb$K^XGZS zy7ByL5xM)gxIz8uSifNXTEw~q>sJ@oTfd0kA30B~8|O`A-53``^<$s#zQ?|45%)bG z7X$Y{=E?J(`HMX785cw6Kj(>k!ub<<-D6xtys-X_G2G{OLW}EVi%;YKjEg&q^~{sw zX8tW=+&(S_#?R{?`=8f8k>g-o4E4Y7ar6&+r}cxrQSZmw3&+pxoOfzP#?n8b`DdQ& zJLcaa`p(D2K>x8%`u}77Bi2q^|A>gE^SAZi^6MXK^sF=2Pek^OTgI4TA|CL!`*s`a z9~pnHQ}FuJ#`;B0Z~kqppJenU)-Q5;^KWDQB%?2}ev#9ge;ey389mo2SpPQGFLHYG zZ)5!=qc5?3k<*)h8|x<-eTnspoZkG~SU<_=ORQhy^yc5j`bkD#V*MhgH~%))Pcr(! z`225U{UWC~|2Ec7GWy{;>;E>^FLHYGZ)5!=qc5?3k<*)h8|x<-eTnspoZkG~SU<_= zORQhy^yc5j`bkD#V*MbeH~%))FEaYZ=kcu6iF@tt6u*IcG2>!q@%^{N`+LT}#QH}@ zU*i2Mr?>jGv3`-!mw124>CL~5^@ohUv4Cf%PhkGGC9J#w^M|;I?S;=zC7$0i{saBy zJMefy`Z6wt{0ClVeK+vi6w!A+E(ZFK^Uvo-zJH5+Ze&~xJwG-tS>A(737I$JVlMwf z{_ne8$=^@$wCexK`4Gn4!1L==!sZhe7qLC< zpVH&m|Lw@`BG%8pp0N9<#YJo{)I;U<)8`XX$B!7&Z^Qcs^MCo?gv}?g9*DRY%>OL* z!`zSDn{fCBRGnQ>QI1BEDXIVmRATA-giDB*ZKGnbL)K?ANtA0(Q!ZOaT@+HyZ&Ku z5%EHQf1aX`*#GP+l6~aQ+nBk2+8v+o-k`mLY}9Li`bs_&*=M}Gu@^g2}c@O zyFy$n)~~Mq@4Kes`M^BL%_l7`=JW@W{J9@~{>}VF)cx0{H~M%w|LeUz{=T2XXWN|B zO`Ld&QCuHlA|BK`d>4v!7b_1?jr(m(#KU^*>-FLS)%b|n`)xM=x1v{ZU!MLz!rEV; zMO?)8pg*6jeE-Dcxx|l%?Lj@S&A#tq4jnPQi0wgr{UOtfT({&$L_DaUM85QIG55TJ z_*#AHdfd{*$C-MIw|C-3di9N{z7f~$ANiM^Kk1Qbsrsk%rRG1SSKo{3dvV?VPw6%9 zqUK#(cm7*?+?Toj0C7?&rUTTM)j_jO*{qDz56H(GLE*1y?#(8?Wwu?b5{A zLx264tMR&AyBgQ9i!K_AZjH~rcGQEvl6p@GHNAU}mG!2&`}wkJW^UePGmkz})|;7E z8!ts&ds|sG$8A+BJMPXeuH${!_uBU2UfWvTdz)QttncFAN5-PH-^U+BFU4Jmd%(Iq zJoX4bU$A2}fA8Nrd&Z)7zw^ku>>Ajve(+J(jy`h^(SKsZ>u)%C{fqKnqwhHT()8|H zuRn;#{q!}UsD5kwYe!veEV}U>NA|zy8m>7;<4;z@jdJ+#I@clAaPl+RF?3@rUGD$r CiKa~e diff --git a/sky130/gds/sky130_fd_sc_hvl__lsbufhv2hv_lh_1.gds b/sky130/gds/sky130_fd_sc_hvl__lsbufhv2hv_lh_1.gds deleted file mode 100644 index 1197b6ca2b5db3e768d18244ee45084cece16a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21610 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__lsbufhv2lv_simple_1.gds b/sky130/gds/sky130_fd_sc_hvl__lsbufhv2lv_simple_1.gds deleted file mode 100644 index 2160ff5ae521bf6251404a61976a9cce5ff549b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13082 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__lsbuflv2hv_1.gds b/sky130/gds/sky130_fd_sc_hvl__lsbuflv2hv_1.gds deleted file mode 100644 index 1b8bd39312853294181e12409f0db378195c50a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23376 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1.gds b/sky130/gds/sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1.gds deleted file mode 100644 index 2f6ff43a6e1654d1de6c51373604adf1a63c56fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29020 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__mux2_1.gds b/sky130/gds/sky130_fd_sc_hvl__mux2_1.gds deleted file mode 100644 index e95be3c21ca57cab5078fd817571cde51ebe23eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12504 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 NZeN?V>lpi*`#<7DP>}!t diff --git a/sky130/gds/sky130_fd_sc_hvl__mux4_1.gds b/sky130/gds/sky130_fd_sc_hvl__mux4_1.gds deleted file mode 100644 index 699fb6f11a8e43fc43fafdf498d2d497ea32c542..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25182 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 z zH@Jt@U&OJ>`qAIr#r!?KVg9bTOTfR)`mM8Gw0`6K!SU0!|aX$#um#vx-Td5 zrY?r^=XuPVevx@o7eo2iSU*eg*I55b{(%!MZ?0pUKS}0IT@2-4WBn?%Ut|3$`(LoQ zSCz>=wscIw{x;x>SCz<8tZ2%{~GIO*^hlI^KRXq zlX)l5#Zdk=){j#AHP+v<|5%GV{XQq-PN9pT_-pJxOYLXti<`pwQ}WkXKl=PyH$<1M z8=}{X^Y21G|4%PGzdneu%jZ{5_*UbOA5X6b{5Wrt{+!Wu_>PZ=<3az>_2w6czcarG zJ?I}noNQklJ;(ea^rC;M&%des?OY!}zWVEYYuZRg{3`m#v-;h_=YO8xdI|fCU32oD zNT0Jkl;RG7enjrY8=GxUP9|+@N5px>c#g~ab8_;ZS8$#4F!x-M za~k#*)I}UG`p@%z|2_kKeH-dHg7%)sIr^sQB92%1Ef2TJ;uRSWKO*#^|NJcelT}Z) z&yPqS_cCHS2ld9DN2KoiA!A>Bx<205Fc19g&-_F*w8`=_dc7E*z3-Ur&SiYf2I7h_ zwuf@I*5DeKBfgCBJ?Os=(0>^lk6=B09a=`}ypD+L?WjFpk2c52k;oVKrpWeNk6QaA z-@mlJ%E@-<6XDy@_5J%Rjz6B4AYPHzr!GP-`tALf=8sG|*?%kI`~$UnCTEJh zlY=hecy;{Pw=}Lo?oa284}>4Oh~q&&-`gZx&|b#j4dxg7-rtnsk8scMJzWc9TV&kS zMd+37^Bn2;HS23SgZGQE7(SK{vKZ)EL=VQDbpEJ1(a}IP7 z$BTYjuSW~(Rh{*==*RHjc<0A+wSDic`zY5m{G|v9@4L5aU+c7}bz0ovdR=H=>vWHO z>uuk9{gbbsE99@ZGisd{As6Gf@vinKkklAzk2$kP>~$S=aV+d_J#K!{-{L z^B#SCUn=_h47wQd^LdLt&W$2{)WwjW_XK@>UnkN>T@3lTx1o>ki$wbTo+smf`P-xB z?-BPR{k$hVN2}|{+jF|-TZ?YyUYiE5qhPc&kGzko%ID`+<09K zj31uIy3sGPe$>TK{dgYhMt_f}o7cra{dgYhM!(3qQ5Qq?^XH*%^s{~>>qcEv{kkX- z=8t7A*^U1%OLlL#*d=>nrEuMu@o@*N-D~60AMbYES@DA9(D>=v|J3~V&WuF=dE;!9 zT@AAlu7>MWU5!_W*WnJ`=+YUUylBNyIa52bw{6KWP5j=$obx;zB_qnXWZ$va$|A!GeFko z|Ep?rw=ZGU>bg6dcE;U3sjj=TM56@{&Qs2tZtJnSZmU{dw^gmK+o~pa3;8$QzcXw8 A;s5{u diff --git a/sky130/gds/sky130_fd_sc_hvl__o21a_1.gds b/sky130/gds/sky130_fd_sc_hvl__o21a_1.gds deleted file mode 100644 index c42fdfb6d5d2332d8d45de223a4f2e273061ef53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11886 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 WT77^Qa~Cw0Vx)(psf%I5fmv# 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 OskUW{><;EWbN>gEnhGrd diff --git a/sky130/gds/sky130_fd_sc_hvl__probe_p_8.gds b/sky130/gds/sky130_fd_sc_hvl__probe_p_8.gds deleted file mode 100644 index 15e04605466d2fce5c5b3f8b8904f3d4bb309ddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20954 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__probec_p_8.gds b/sky130/gds/sky130_fd_sc_hvl__probec_p_8.gds deleted file mode 100644 index 46b038d9ad9699dd400a237692f7a733086d63ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23282 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 K<1Zr*f%zXy9f{BY diff --git a/sky130/gds/sky130_fd_sc_hvl__sdfrbp_1.gds b/sky130/gds/sky130_fd_sc_hvl__sdfrbp_1.gds deleted file mode 100644 index 52154c4ac6d674169b557691844be76d2a229fc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34228 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 diff --git a/sky130/gds/sky130_fd_sc_hvl__sdfrtp_1.gds b/sky130/gds/sky130_fd_sc_hvl__sdfrtp_1.gds deleted file mode 100644 index 229f720d24002979d3885bdef498aaa668777513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36482 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 Gv-^JljXv7| diff --git a/sky130/gds/sky130_fd_sc_hvl__sdfsbp_1.gds b/sky130/gds/sky130_fd_sc_hvl__sdfsbp_1.gds deleted file mode 100644 index f383cb49d4daddad5800b3156db5b6b98981b75d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38850 zcmbuI36vdGoyKo3@Ad1~OFCqyv!^?2C!G+ob`r956GA5q2#63NY+;QG#0>+AOBCfe z2L}-$gW!_UQQRFt!weD4j0-Y4Gs7=6 z*IaV0*wN^2cE!#{H`euaH9i0Q^G`b0aFKH(Pk9!vvbc!!=FzU=4_EuoeewC{pZkMz zXO>0hM(@S{e^E^0)&3^$JJ)!Nb8SN?*mBQKRGo1V>G}TMDEBMipW)eb2Ykdur04oA z4?5Sf%(>PE&(@{*f5b(k*Ya=bYO*qy--Em#b53mkxpVF<&WR1bLi!Q>m$G@YbEW@9 zgQhIZLRz15V(U+_u3_Y#vgOB?kBEF~mFMM2d2T~nAg}W4tN3Qr2W2g$EWHNpb0Nx* zvhaj0FS1;1SdWPH)yfa!$GMJs(a!VHSJ!x!uCTa>^nCw3bP_j@)y#%Nww5d>G|P*@o?+ z{BexAl-zFEmLm5LZO_^^K(^k6G`4$6Zs)CNbCKIw`KxHpl#N&)*CooBl)V z_nzB5n+{rB%<2EcpYc(&3*6odJvr_e7m;2o|252iHulqn%blC~xM%aLvA$iXUrLS_ zE+=C7-1W`<63X!@=jOc1v-OR(ezEkg&T%;r%hy_8QongitX=wk>e*a$j&U)keRi>a z3vWh0A9bz|eJqxyJ2!0r`KN6Em~&IdVvM9@zfM8j#l~BZ{`aVV%9hvKdPS@^xBTf_9xkcFbik+Wuj&Tw3TK;1!|Ki_ZyFS~wew0ltK8o_+fbBJ9!{;&H4x)Whmf%de z81+k8c1TAVL@qaJzb#L4xk=bZi0$vf_(z+G+z(A$Wcwqsp%vp3`&Y3U{X2ax+AC#o zqLo`jxog$$0oLzijN8&5uspUyu^rpe{0YcEWk);4-)OX7%JRP>zY^+`lI5Q95-UGh zJ_*Yo@Z@^tVIMEHVOw7GEXHTb(l+OoB3&%J!^$P1T(!!djL(xF#(FT8R^H&r?T&E~ z>9zc1e6IRG^ds_Kj(x7k{#m@q`iJE9Ip;~w<}YJB+>Q25$$nUIf%OMjc#m^juZZ>5 z%0D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 L*3g0x-R%A!gv(ov diff --git a/sky130/gds/sky130_fd_sc_hvl__sdfstp_1.gds b/sky130/gds/sky130_fd_sc_hvl__sdfstp_1.gds deleted file mode 100644 index 15317445bf087177bb1682d0298224bdbed8d85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35086 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 RZ8JuyZ8L`KD*C?U{vZE&utxv@ diff --git a/sky130/gds/sky130_fd_sc_hvl__xnor2_1.gds b/sky130/gds/sky130_fd_sc_hvl__xnor2_1.gds deleted file mode 100644 index 71e4206cdb1008fbe6328623acf10a9f8b6e9a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12322 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 Date: Wed, 22 May 2024 19:02:27 +0200 Subject: [PATCH 05/11] :lipstick: Update examples to ipynb --- docs/notebooks/Makefile | 14 - docs/notebooks/intro.ipynb | 282 +++ docs/notebooks/intro.py | 127 - sky130/compile_components.py | 8 +- sky130/components.py | 4362 ++++++++++++++++++++++++++++------ sky130/layers.py | 2 +- 6 files changed, 3922 insertions(+), 873 deletions(-) delete mode 100644 docs/notebooks/Makefile create mode 100644 docs/notebooks/intro.ipynb delete mode 100644 docs/notebooks/intro.py diff --git a/docs/notebooks/Makefile b/docs/notebooks/Makefile deleted file mode 100644 index e370e6e57..000000000 --- a/docs/notebooks/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -format: - jupytext --pipe black *.ipynb - -sync: - jupytext --sync *.ipynb - -python: - jupytext *.ipynb --to py - -md: - jupytext *.ipynb --to md - -nb: - jupytext *.md --to ipynb diff --git a/docs/notebooks/intro.ipynb b/docs/notebooks/intro.ipynb new file mode 100644 index 000000000..e381d6276 --- /dev/null +++ b/docs/notebooks/intro.ipynb @@ -0,0 +1,282 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e4abbd64", + "metadata": {}, + "source": [ + "# Layout\n", + "\n", + "## Layout driven flow\n", + "\n", + "You can import the PDK and layout any of the standard cells" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a160bbd", + "metadata": {}, + "outputs": [], + "source": [ + "import gdsfactory as gf\n", + "from gdsfactory.config import rich_output\n", + "gf.config.rich_output()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b4ea2e4", + "metadata": {}, + "outputs": [], + "source": [ + "import sky130\n", + "import sky130.components as sc\n", + "import sky130.tech as st" + ] + }, + { + "cell_type": "markdown", + "id": "2c622905", + "metadata": {}, + "source": [ + "If you want to see what are the cells available:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a9b61cd7", + "metadata": {}, + "outputs": [], + "source": [ + "# sky130.cells" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19872424", + "metadata": {}, + "outputs": [], + "source": [ + "# sky130.cross_sections" + ] + }, + { + "cell_type": "markdown", + "id": "8ba69f30", + "metadata": {}, + "source": [ + "Let's explore the available layers:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab318aea", + "metadata": {}, + "outputs": [], + "source": [ + "# help(gf.pdk)\n", + "# help(gf.get_active_pdk().get_layer_stack)\n", + "# gf.pdk.get_layer_stack()" + ] + }, + { + "cell_type": "markdown", + "id": "6414d6cb", + "metadata": {}, + "source": [ + "You can also verify this is the active PDK on `gdsfactory`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7512a8b", + "metadata": {}, + "outputs": [], + "source": [ + "gf.pdk.get_active_pdk().name" + ] + }, + { + "cell_type": "markdown", + "id": "5747fd38", + "metadata": {}, + "source": [ + "Now, let's explore available symbols for the components:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a0f3119", + "metadata": {}, + "outputs": [], + "source": [ + "# dir(sky130)\n", + "sky130" + ] + }, + { + "cell_type": "markdown", + "id": "f769dbb1", + "metadata": {}, + "source": [ + "Let's try exploring an example basic `nfet`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e4a603c", + "metadata": {}, + "outputs": [], + "source": [ + "c = sc.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15()\n", + "c" + ] + }, + { + "cell_type": "markdown", + "id": "b03fd5c3", + "metadata": {}, + "source": [ + "Explore it's ports:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bbb8ef08", + "metadata": {}, + "outputs": [], + "source": [ + "c.ports" + ] + }, + { + "cell_type": "markdown", + "id": "af7e5375", + "metadata": {}, + "source": [ + "We can also explore the digital cells:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8946842c", + "metadata": {}, + "outputs": [], + "source": [ + "c = sc.sky130_fd_sc_hd__a2111o_1()\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d5d6f687", + "metadata": {}, + "outputs": [], + "source": [ + "scene = c.to_3d()\n", + "scene.show()" + ] + }, + { + "cell_type": "markdown", + "id": "19a86bd4", + "metadata": {}, + "source": [ + "TODO: add Parametric cells natively into gdsfactory `sky130` pdk." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a72f996", + "metadata": {}, + "outputs": [], + "source": [ + "c = gf.Component()\n", + "g1 = c << sc.sky130_fd_sc_hd__a2111o_1()\n", + "g2 = c << sc.sky130_fd_sc_hd__a311oi_4()\n", + "g2.move((15, 10))\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "90789eb4", + "metadata": {}, + "outputs": [], + "source": [ + "c = gf.Component(\"demo_connect\")\n", + "g1 = c << sc.sky130_fd_sc_hd__a2111o_1()\n", + "g2 = c << sc.sky130_fd_sc_hd__a311oi_4()\n", + "g2.move((15, 10))\n", + "route = gf.routing.get_route_electrical(\n", + " g1.ports[\"VPWR\"], g2.ports[\"VPWR\"], cross_section=st.xs_metal1\n", + ")\n", + "c.add(route.references)\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da60090f", + "metadata": {}, + "outputs": [], + "source": [ + "scene = c.to_3d()\n", + "scene.show()" + ] + }, + { + "cell_type": "markdown", + "id": "018d097d", + "metadata": {}, + "source": [ + "## Netlist driven flow\n", + "\n", + "For netlist driven flow you can define circuits for place and route. You have two options:\n", + "\n", + "1. in python\n", + "2. in YAML" + ] + }, + { + "cell_type": "markdown", + "id": "e60fcf66", + "metadata": {}, + "source": [ + "## Spice simulations\n", + "\n", + "You can use `PySpice` for running simulations.\n", + "\n", + "gdsfactory can extract the netlist and simulate the circuit.\n", + "\n", + "TODO: add some relevant examples." + ] + } + ], + "metadata": { + "jupytext": { + "custom_cell_magics": "kql" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/intro.py b/docs/notebooks/intro.py deleted file mode 100644 index bbf2a4721..000000000 --- a/docs/notebooks/intro.py +++ /dev/null @@ -1,127 +0,0 @@ -# --- -# jupyter: -# jupytext: -# custom_cell_magics: kql -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.16.2 -# kernelspec: -# display_name: Python 3 (ipykernel) -# language: python -# name: python3 -# --- - -# %% [markdown] -# # Layout -# -# ## Layout driven flow -# -# You can import the PDK and layout any of the standard cells - -# %% -import gdsfactory as gf -from gdsfactory.config import rich_output -gf.config.rich_output() - -# %% -import sky130 -import sky130.components as sc -import sky130.tech as st - -# %% [markdown] -# If you want to see what are the cells available: - -# %% -# sky130.cells - -# %% -# sky130.cross_sections - -# %% [markdown] -# Let's explore the available layers: - -# %% -# help(gf.pdk) -# help(gf.get_active_pdk().get_layer_stack) -# gf.pdk.get_layer_stack() - -# %% [markdown] -# You can also verify this is the active PDK on `gdsfactory`: - -# %% -gf.pdk.get_active_pdk().name - -# %% [markdown] -# Now, let's explore available symbols for the components: - -# %% -# dir(sky130) -sky130 - -# %% [markdown] -# Let's try exploring an example basic `nfet`: - -# %% -c = sc.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() -c - -# %% [markdown] -# Explore it's ports: - -# %% -c.ports - -# %% [markdown] -# We can also explore the digital cells: - -# %% -c = sc.sky130_fd_sc_hd__a2111o_1() -c - -# %% -scene = c.to_3d() -scene.show() - -# %% [markdown] -# TODO: add Parametric cells natively into gdsfactory `sky130` pdk. - -# %% -c = gf.Component() -g1 = c << sc.sky130_fd_sc_hd__a2111o_1() -g2 = c << sc.sky130_fd_sc_hd__a311oi_4() -g2.move((15, 10)) -c - -# %% -c = gf.Component("demo_connect") -g1 = c << sc.sky130_fd_sc_hd__a2111o_1() -g2 = c << sc.sky130_fd_sc_hd__a311oi_4() -g2.move((15, 10)) -route = gf.routing.get_route_electrical( - g1.ports["VPWR"], g2.ports["VPWR"], cross_section=st.xs_metal1 -) -c.add(route.references) -c - -# %% -scene = c.to_3d() -scene.show() - -# %% [markdown] -# ## Netlist driven flow -# -# For netlist driven flow you can define circuits for place and route. You have two options: -# -# 1. in python -# 2. in YAML - -# %% [markdown] -# ## Spice simulations -# -# You can use `PySpice` for running simulations. -# -# gdsfactory can extract the netlist and simulate the circuit. -# -# TODO: add some relevant examples. diff --git a/sky130/compile_components.py b/sky130/compile_components.py index 4868cf453..9928e350b 100644 --- a/sky130/compile_components.py +++ b/sky130/compile_components.py @@ -1,9 +1,7 @@ import os -import re -from functools import partial # Define the PDK directories -pdk_directories = ['src/sky130_fd_pr', 'src/sky130_fd_sc_hd'] +pdk_directories = ["src/sky130_fd_pr", "src/sky130_fd_sc_hd"] # List to store gds file paths gds_files = [] @@ -12,9 +10,10 @@ for pdk_dir in pdk_directories: for subdir, _, files in os.walk(pdk_dir): for file in files: - if file.endswith('.gds'): + if file.endswith(".gds"): gds_files.append(os.path.join(subdir, file)) + # Function to create Python code for each gds file def create_code(file_path): file_name = os.path.basename(file_path) @@ -37,6 +36,7 @@ def {cell_name}() -> gf.Component: """ return code + # Prelude to add at the top of the file prelude = """from functools import partial diff --git a/sky130/components.py b/sky130/components.py index b6364057a..1bd4a29b2 100644 --- a/sky130/components.py +++ b/sky130/components.py @@ -42,6 +42,7 @@ gdsdir = PATH.module import_gds = partial(gf.import_gds, gdsdir=gdsdir, decorator=add_ports) + @cell def sky130_fd_pr__rf_nfet_20v0_withptap_iso() -> gf.Component: """Returns sky130_fd_pr__rf_nfet_20v0_withptap_iso fixed cell. @@ -54,7 +55,11 @@ def sky130_fd_pr__rf_nfet_20v0_withptap_iso() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_20v0_withptap_iso() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_withptap_iso/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds", cellname="sky130_fd_pr__rf_nfet_20v0_withptap_iso") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_20v0_withptap_iso/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds", + cellname="sky130_fd_pr__rf_nfet_20v0_withptap_iso", + ) + @cell def sky130_fd_pr__rf_aura_lvs_drc() -> gf.Component: @@ -68,7 +73,11 @@ def sky130_fd_pr__rf_aura_lvs_drc() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_aura_lvs_drc() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_aura_lvs_drc/sky130_fd_pr__rf_aura_lvs_drc.gds", cellname="sky130_fd_pr__rf_aura_lvs_drc") + return import_gds( + "src/sky130_fd_pr/cells/rf_aura_lvs_drc/sky130_fd_pr__rf_aura_lvs_drc.gds", + cellname="sky130_fd_pr__rf_aura_lvs_drc", + ) + @cell def sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() -> gf.Component: @@ -82,7 +91,11 @@ def sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pnp_05v5/sky130_fd_pr__rf_pnp_05v5_W0p68L0p68.gds", cellname="sky130_fd_pr__rf_pnp_05v5_W0p68L0p68") + return import_gds( + "src/sky130_fd_pr/cells/rf_pnp_05v5/sky130_fd_pr__rf_pnp_05v5_W0p68L0p68.gds", + cellname="sky130_fd_pr__rf_pnp_05v5_W0p68L0p68", + ) + @cell def sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() -> gf.Component: @@ -96,7 +109,11 @@ def sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pnp_05v5/sky130_fd_pr__rf_pnp_05v5_W3p40L3p40.gds", cellname="sky130_fd_pr__rf_pnp_05v5_W3p40L3p40") + return import_gds( + "src/sky130_fd_pr/cells/rf_pnp_05v5/sky130_fd_pr__rf_pnp_05v5_W3p40L3p40.gds", + cellname="sky130_fd_pr__rf_pnp_05v5_W3p40L3p40", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() -> gf.Component: @@ -110,7 +127,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() -> gf.Component: @@ -124,7 +145,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() -> gf.Component: @@ -138,7 +163,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() -> gf.Component: @@ -152,7 +181,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() -> gf.Component: @@ -166,7 +199,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() -> gf.Component: @@ -180,7 +217,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() -> gf.Component: @@ -194,7 +235,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() -> gf.Component: @@ -208,7 +253,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() -> gf.Component: @@ -222,7 +271,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() -> gf.Component: @@ -236,7 +289,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() -> gf.Component: @@ -250,7 +307,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() -> gf.Component: @@ -264,7 +325,11 @@ def sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() -> gf.Component: @@ -278,7 +343,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() -> gf.Component: @@ -292,7 +361,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() -> gf.Component: @@ -306,7 +379,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() -> gf.Component: @@ -320,7 +397,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() -> gf.Component: @@ -334,7 +415,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() -> gf.Component: @@ -348,7 +433,11 @@ def sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() -> gf.Component: @@ -362,7 +451,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() -> gf.Component: @@ -376,7 +469,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() -> gf.Component: @@ -390,7 +487,11 @@ def sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() -> gf.Component: @@ -404,7 +505,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() -> gf.Component: @@ -418,7 +523,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() -> gf.Component: @@ -432,7 +541,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() -> gf.Component: @@ -446,7 +559,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() -> gf.Component: @@ -460,7 +577,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() -> gf.Component: @@ -474,7 +595,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() -> gf.Component: @@ -488,7 +613,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() -> gf.Component: @@ -502,7 +631,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() -> gf.Component: @@ -516,7 +649,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() -> gf.Component: @@ -530,7 +667,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() -> gf.Component: @@ -544,7 +685,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() -> gf.Component: @@ -558,7 +703,11 @@ def sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() -> gf.Component: @@ -572,7 +721,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() -> gf.Component: @@ -586,7 +739,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() -> gf.Component: @@ -600,7 +757,11 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() -> gf.Component: @@ -614,7 +775,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() -> gf.Component: @@ -628,7 +793,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() -> gf.Component: @@ -642,7 +811,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() -> gf.Component: @@ -656,7 +829,11 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() -> gf.Component: @@ -670,7 +847,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() -> gf.Component: @@ -684,7 +865,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top", + ) + @cell def sky130_fd_pr__rf_test_coil1() -> gf.Component: @@ -698,7 +883,11 @@ def sky130_fd_pr__rf_test_coil1() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_test_coil1() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_test_coil1/sky130_fd_pr__rf_test_coil1.gds", cellname="sky130_fd_pr__rf_test_coil1") + return import_gds( + "src/sky130_fd_pr/cells/rf_test_coil1/sky130_fd_pr__rf_test_coil1.gds", + cellname="sky130_fd_pr__rf_test_coil1", + ) + @cell def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() -> gf.Component: @@ -712,7 +901,11 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2m3_shieldl1/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2m3_shieldl1/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds", + cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1", + ) + @cell def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() -> gf.Component: @@ -726,7 +919,11 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_l1m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_l1m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.gds", + cellname="sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell", + ) + @cell def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() -> gf.Component: @@ -740,7 +937,11 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_l1m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_l1m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield", + ) + @cell def sky130_fd_pr__rf_nfet_20v0_aup() -> gf.Component: @@ -754,7 +955,11 @@ def sky130_fd_pr__rf_nfet_20v0_aup() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_20v0_aup() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_aup/sky130_fd_pr__rf_nfet_20v0_aup.gds", cellname="sky130_fd_pr__rf_nfet_20v0_aup") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_20v0_aup/sky130_fd_pr__rf_nfet_20v0_aup.gds", + cellname="sky130_fd_pr__rf_nfet_20v0_aup", + ) + @cell def sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() -> gf.Component: @@ -768,7 +973,11 @@ def sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_noptap_iso/sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds", cellname="sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_noptap_iso/sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds", + cellname="sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso", + ) + @cell def sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -782,7 +991,11 @@ def sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() -> gf.Component: @@ -796,7 +1009,11 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() -> gf.Component: @@ -810,7 +1027,11 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() -> gf.Component: @@ -824,7 +1045,11 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() -> gf.Component: @@ -838,7 +1063,11 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() -> gf.Component: @@ -852,7 +1081,11 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() -> gf.Component: @@ -866,7 +1099,11 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() -> gf.Component: @@ -880,7 +1117,11 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() -> gf.Component: @@ -894,7 +1135,11 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds", cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8_lvt/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35", + ) + @cell def sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -908,7 +1153,11 @@ def sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() -> gf.Component: @@ -922,7 +1171,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() -> gf.Component: @@ -936,7 +1189,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() -> gf.Component: @@ -950,7 +1207,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() -> gf.Component: @@ -964,7 +1225,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() -> gf.Component: @@ -978,7 +1243,11 @@ def sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() -> gf.Component: @@ -992,7 +1261,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() -> gf.Component: @@ -1006,7 +1279,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() -> gf.Component: @@ -1020,7 +1297,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() -> gf.Component: @@ -1034,7 +1315,11 @@ def sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() -> gf.Component: @@ -1048,7 +1333,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() -> gf.Component: @@ -1062,7 +1351,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() -> gf.Component: @@ -1076,7 +1369,11 @@ def sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() -> gf.Component: @@ -1090,7 +1387,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() -> gf.Component: @@ -1104,7 +1405,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() -> gf.Component: @@ -1118,7 +1423,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() -> gf.Component: @@ -1132,7 +1441,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() -> gf.Component: @@ -1146,7 +1459,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() -> gf.Component: @@ -1160,7 +1477,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() -> gf.Component: @@ -1174,7 +1495,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() -> gf.Component: @@ -1188,7 +1513,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() -> gf.Component: @@ -1202,7 +1531,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() -> gf.Component: @@ -1216,7 +1549,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() -> gf.Component: @@ -1230,7 +1567,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() -> gf.Component: @@ -1244,7 +1585,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() -> gf.Component: @@ -1258,7 +1603,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() -> gf.Component: @@ -1272,7 +1621,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() -> gf.Component: @@ -1286,7 +1639,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() -> gf.Component: @@ -1300,7 +1657,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() -> gf.Component: @@ -1314,7 +1675,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() -> gf.Component: @@ -1328,7 +1693,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() -> gf.Component: @@ -1342,7 +1711,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() -> gf.Component: @@ -1356,7 +1729,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() -> gf.Component: @@ -1370,7 +1747,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() -> gf.Component: @@ -1384,7 +1765,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() -> gf.Component: @@ -1398,7 +1783,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() -> gf.Component: @@ -1412,7 +1801,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() -> gf.Component: @@ -1426,7 +1819,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() -> gf.Component: @@ -1440,7 +1837,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() -> gf.Component: @@ -1454,7 +1855,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() -> gf.Component: @@ -1468,7 +1873,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() -> gf.Component: @@ -1482,7 +1891,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() -> gf.Component: @@ -1496,7 +1909,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() -> gf.Component: @@ -1510,7 +1927,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() -> gf.Component: @@ -1524,7 +1945,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() -> gf.Component: @@ -1538,7 +1963,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() -> gf.Component: @@ -1552,7 +1981,11 @@ def sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() -> gf.Component: @@ -1566,7 +1999,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() -> gf.Component: @@ -1580,7 +2017,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() -> gf.Component: @@ -1594,7 +2035,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() -> gf.Component: @@ -1608,7 +2053,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() -> gf.Component: @@ -1622,7 +2071,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() -> gf.Component: @@ -1636,7 +2089,11 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() -> gf.Component: @@ -1650,7 +2107,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() -> gf.Component: @@ -1664,7 +2125,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() -> gf.Component: @@ -1678,7 +2143,11 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() -> gf.Component: @@ -1692,7 +2161,11 @@ def sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15", + ) + @cell def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() -> gf.Component: @@ -1706,7 +2179,11 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds", + cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2", + ) + @cell def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() -> gf.Component: @@ -1720,7 +2197,11 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2_noshield/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() -> gf.Component: @@ -1734,7 +2215,11 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2_shieldl1/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2_shieldl1/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds", + cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() -> gf.Component: @@ -1748,7 +2233,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() -> gf.Component: @@ -1762,7 +2251,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4", + ) + @cell def sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() -> gf.Component: @@ -1776,7 +2269,11 @@ def sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_withptap_iso/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds", cellname="sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_withptap_iso/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds", + cellname="sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso", + ) + @cell def sky130_fd_pr__rf_test_coil2() -> gf.Component: @@ -1790,7 +2287,11 @@ def sky130_fd_pr__rf_test_coil2() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_test_coil2() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_test_coil2/sky130_fd_pr__rf_test_coil2.gds", cellname="sky130_fd_pr__rf_test_coil2") + return import_gds( + "src/sky130_fd_pr/cells/rf_test_coil2/sky130_fd_pr__rf_test_coil2.gds", + cellname="sky130_fd_pr__rf_test_coil2", + ) + @cell def sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() -> gf.Component: @@ -1804,7 +2305,11 @@ def sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() -> gf.Compone c = sky130.components.sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p9x06p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds", cellname="sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_02p9x06p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds", + cellname="sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() -> gf.Component: @@ -1818,7 +2323,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() -> gf.Component: @@ -1832,7 +2341,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -1846,7 +2359,11 @@ def sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__rf_test_coil3() -> gf.Component: @@ -1860,7 +2377,11 @@ def sky130_fd_pr__rf_test_coil3() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_test_coil3() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_test_coil3/sky130_fd_pr__rf_test_coil3.gds", cellname="sky130_fd_pr__rf_test_coil3") + return import_gds( + "src/sky130_fd_pr/cells/rf_test_coil3/sky130_fd_pr__rf_test_coil3.gds", + cellname="sky130_fd_pr__rf_test_coil3", + ) + @cell def sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: @@ -1874,7 +2395,11 @@ def sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() -> gf.Componen c = sky130.components.sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p7x11p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds", cellname="sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_02p7x11p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds", + cellname="sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap", + ) + @cell def sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: @@ -1888,7 +2413,11 @@ def sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() -> gf.Componen c = sky130.components.sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p7x41p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds", cellname="sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_02p7x41p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds", + cellname="sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap", + ) + @cell def sky130_fd_pr__rf_nfet_20v0_withptap() -> gf.Component: @@ -1902,7 +2431,11 @@ def sky130_fd_pr__rf_nfet_20v0_withptap() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_20v0_withptap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_withptap/sky130_fd_pr__rf_nfet_20v0_withptap.gds", cellname="sky130_fd_pr__rf_nfet_20v0_withptap") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_20v0_withptap/sky130_fd_pr__rf_nfet_20v0_withptap.gds", + cellname="sky130_fd_pr__rf_nfet_20v0_withptap", + ) + @cell def sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() -> gf.Component: @@ -1916,7 +2449,11 @@ def sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() -> gf.Component: c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/esd_rf_nfet_20v0_iec/sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00.gds", cellname="sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00") + return import_gds( + "src/sky130_fd_pr/cells/esd_rf_nfet_20v0_iec/sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00.gds", + cellname="sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00", + ) + @cell def sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() -> gf.Component: @@ -1930,7 +2467,11 @@ def sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() -> gf.Component: c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/esd_rf_nfet_20v0_iec/sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00.gds", cellname="sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00") + return import_gds( + "src/sky130_fd_pr/cells/esd_rf_nfet_20v0_iec/sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00.gds", + cellname="sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00", + ) + @cell def sky130_fd_pr__rf_pfet_20v0_withptap() -> gf.Component: @@ -1944,7 +2485,11 @@ def sky130_fd_pr__rf_pfet_20v0_withptap() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_20v0_withptap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_20v0_withptap/sky130_fd_pr__rf_pfet_20v0_withptap.gds", cellname="sky130_fd_pr__rf_pfet_20v0_withptap") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_20v0_withptap/sky130_fd_pr__rf_pfet_20v0_withptap.gds", + cellname="sky130_fd_pr__rf_pfet_20v0_withptap", + ) + @cell def sky130_fd_pr__rf_nfet_20v0_nvt_withptap() -> gf.Component: @@ -1958,7 +2503,11 @@ def sky130_fd_pr__rf_nfet_20v0_nvt_withptap() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_withptap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_withptap/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds", cellname="sky130_fd_pr__rf_nfet_20v0_nvt_withptap") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_withptap/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds", + cellname="sky130_fd_pr__rf_nfet_20v0_nvt_withptap", + ) + @cell def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() -> gf.Component: @@ -1972,7 +2521,11 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds", + cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4", + ) + @cell def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: @@ -1986,7 +2539,11 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() -> gf.Compon c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds", + cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() -> gf.Component: @@ -2000,7 +2557,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5", + ) + @cell def sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -2014,7 +2575,11 @@ def sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() -> gf.Component: @@ -2028,7 +2593,11 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_l1m1m2_noshield/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_l1m1m2_noshield/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds", + cellname="sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell", + ) + @cell def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() -> gf.Component: @@ -2042,7 +2611,11 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_l1m1m2_noshield/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_l1m1m2_noshield/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: @@ -2056,7 +2629,11 @@ def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Com c = sky130.components.sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds", cellname="sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds", + cellname="sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin", + ) + @cell def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -2070,7 +2647,11 @@ def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() -> gf.Component: @@ -2084,7 +2665,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: @@ -2098,7 +2683,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() -> gf.Compon c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top", + ) + @cell def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: @@ -2112,7 +2701,11 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() -> gf.Compon c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds", + cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top", + ) + @cell def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() -> gf.Component: @@ -2126,7 +2719,11 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds", + cellname="sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4", + ) + @cell def sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: @@ -2140,7 +2737,11 @@ def sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() -> gf.Componen c = sky130.components.sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p7x06p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds", cellname="sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_02p7x06p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds", + cellname="sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap", + ) + @cell def sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: @@ -2154,7 +2755,11 @@ def sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() -> gf.Componen c = sky130.components.sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p7x21p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds", cellname="sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_02p7x21p1_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds", + cellname="sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() -> gf.Component: @@ -2168,7 +2773,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() -> gf.Component: @@ -2182,7 +2791,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() -> gf.Component: @@ -2196,7 +2809,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() -> gf.Component c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() -> gf.Component: @@ -2210,7 +2827,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() -> gf.Component: @@ -2224,7 +2845,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() -> gf.Component: @@ -2238,7 +2863,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() -> gf.Component: @@ -2252,7 +2881,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() -> gf.Component: @@ -2266,7 +2899,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6", + ) + @cell def sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -2280,7 +2917,11 @@ def sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: @@ -2294,7 +2935,11 @@ def sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() -> gf.Componen c = sky130.components.sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_05p9x05p9_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds", cellname="sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_05p9x05p9_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds", + cellname="sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap", + ) + @cell def sky130_fd_pr__rf_nfet_20v0_noptap_iso() -> gf.Component: @@ -2308,7 +2953,11 @@ def sky130_fd_pr__rf_nfet_20v0_noptap_iso() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_20v0_noptap_iso() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_noptap_iso/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds", cellname="sky130_fd_pr__rf_nfet_20v0_noptap_iso") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_20v0_noptap_iso/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds", + cellname="sky130_fd_pr__rf_nfet_20v0_noptap_iso", + ) + @cell def sky130_fd_pr__rf_npn_05v5_W1p00L1p00() -> gf.Component: @@ -2322,7 +2971,11 @@ def sky130_fd_pr__rf_npn_05v5_W1p00L1p00() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L1p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L1p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W1p00L1p00") + return import_gds( + "src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L1p00.gds", + cellname="sky130_fd_pr__rf_npn_05v5_W1p00L1p00", + ) + @cell def sky130_fd_pr__rf_npn_05v5_W2p00L2p00() -> gf.Component: @@ -2336,7 +2989,11 @@ def sky130_fd_pr__rf_npn_05v5_W2p00L2p00() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L2p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W2p00L2p00") + return import_gds( + "src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds", + cellname="sky130_fd_pr__rf_npn_05v5_W2p00L2p00", + ) + @cell def sky130_fd_pr__rf_npn_05v5_W1p00L8p00() -> gf.Component: @@ -2350,7 +3007,11 @@ def sky130_fd_pr__rf_npn_05v5_W1p00L8p00() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L8p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W1p00L8p00") + return import_gds( + "src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds", + cellname="sky130_fd_pr__rf_npn_05v5_W1p00L8p00", + ) + @cell def sky130_fd_pr__rf_npn_05v5_W1p00L4p00() -> gf.Component: @@ -2364,7 +3025,11 @@ def sky130_fd_pr__rf_npn_05v5_W1p00L4p00() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L4p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W1p00L4p00") + return import_gds( + "src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds", + cellname="sky130_fd_pr__rf_npn_05v5_W1p00L4p00", + ) + @cell def sky130_fd_pr__rf_npn_05v5_W2p00L8p00() -> gf.Component: @@ -2378,7 +3043,11 @@ def sky130_fd_pr__rf_npn_05v5_W2p00L8p00() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L8p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W2p00L8p00") + return import_gds( + "src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds", + cellname="sky130_fd_pr__rf_npn_05v5_W2p00L8p00", + ) + @cell def sky130_fd_pr__rf_npn_05v5_W2p00L4p00() -> gf.Component: @@ -2392,7 +3061,11 @@ def sky130_fd_pr__rf_npn_05v5_W2p00L4p00() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L4p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W2p00L4p00") + return import_gds( + "src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds", + cellname="sky130_fd_pr__rf_npn_05v5_W2p00L4p00", + ) + @cell def sky130_fd_pr__rf_npn_05v5_W1p00L2p00() -> gf.Component: @@ -2406,7 +3079,11 @@ def sky130_fd_pr__rf_npn_05v5_W1p00L2p00() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L2p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L2p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W1p00L2p00") + return import_gds( + "src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W1p00L2p00.gds", + cellname="sky130_fd_pr__rf_npn_05v5_W1p00L2p00", + ) + @cell def sky130_fd_pr__rf_npn_05v5_W5p00L5p00() -> gf.Component: @@ -2420,7 +3097,11 @@ def sky130_fd_pr__rf_npn_05v5_W5p00L5p00() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_npn_05v5_W5p00L5p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds", cellname="sky130_fd_pr__rf_npn_05v5_W5p00L5p00") + return import_gds( + "src/sky130_fd_pr/cells/rf_npn_05v5/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds", + cellname="sky130_fd_pr__rf_npn_05v5_W5p00L5p00", + ) + @cell def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() -> gf.Component: @@ -2434,7 +3115,11 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2_noshield/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2_noshield/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() -> gf.Component: @@ -2448,7 +3133,11 @@ def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() -> gf.Component c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds", cellname="sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds", + cellname="sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop", + ) + @cell def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() -> gf.Component: @@ -2462,7 +3151,11 @@ def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds", cellname="sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds", + cellname="sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv", + ) + @cell def sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -2476,7 +3169,11 @@ def sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() -> gf.Component: @@ -2490,7 +3187,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m4_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m4_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -2504,7 +3205,11 @@ def sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() -> gf.Component: @@ -2518,7 +3223,11 @@ def sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds", cellname="sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds", + cellname="sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3", + ) + @cell def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() -> gf.Component: @@ -2532,7 +3241,11 @@ def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds", cellname="sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds", + cellname="sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4", + ) + @cell def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() -> gf.Component: @@ -2546,7 +3259,11 @@ def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds", cellname="sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds", + cellname="sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -2560,7 +3277,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() -> gf.Component: @@ -2574,7 +3295,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2_shieldpom3/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2_shieldpom3/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3", + ) + @cell def sky130_fd_pr__rf_aura_drc_flag_check() -> gf.Component: @@ -2588,7 +3313,11 @@ def sky130_fd_pr__rf_aura_drc_flag_check() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_aura_drc_flag_check() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_aura_drc_flag_check/sky130_fd_pr__rf_aura_drc_flag_check.gds", cellname="sky130_fd_pr__rf_aura_drc_flag_check") + return import_gds( + "src/sky130_fd_pr/cells/rf_aura_drc_flag_check/sky130_fd_pr__rf_aura_drc_flag_check.gds", + cellname="sky130_fd_pr__rf_aura_drc_flag_check", + ) + @cell def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() -> gf.Component: @@ -2602,7 +3331,11 @@ def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() -> gf.Compone c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds", cellname="sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds", + cellname="sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test", + ) + @cell def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @@ -2616,7 +3349,11 @@ def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds", cellname="sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: @@ -2630,7 +3367,11 @@ def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Com c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds", cellname="sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds", + cellname="sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin", + ) + @cell def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() -> gf.Component: @@ -2644,7 +3385,11 @@ def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_m1m2m3_shieldl1m4/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds", cellname="sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_m1m2m3_shieldl1m4/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds", + cellname="sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top", + ) + @cell def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() -> gf.Component: @@ -2658,7 +3403,11 @@ def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_m1m2m3_shieldl1m4/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds", cellname="sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_06p8x06p1_m1m2m3_shieldl1m4/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds", + cellname="sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4", + ) + @cell def sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() -> gf.Component: @@ -2672,7 +3421,11 @@ def sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_pfet_01v8_mvt/sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds", cellname="sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_pfet_01v8_mvt/sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds", + cellname="sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_20v0_nvt_aup() -> gf.Component: @@ -2686,7 +3439,11 @@ def sky130_fd_pr__rf_nfet_20v0_nvt_aup() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_aup() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_aup/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds", cellname="sky130_fd_pr__rf_nfet_20v0_nvt_aup") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_20v0_nvt_aup/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds", + cellname="sky130_fd_pr__rf_nfet_20v0_nvt_aup", + ) + @cell def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() -> gf.Component: @@ -2700,7 +3457,11 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2_shieldl1/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2_shieldl1/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds", + cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1", + ) + @cell def sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: @@ -2714,7 +3475,11 @@ def sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() -> gf.Componen c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p3x11p3_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds", cellname="sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p3x11p3_m1m2m3m4_shieldl1/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds", + cellname="sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap", + ) + @cell def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() -> gf.Component: @@ -2728,7 +3493,11 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds", + cellname="sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3", + ) + @cell def sky130_fd_pr__rf_aura_blocking() -> gf.Component: @@ -2742,7 +3511,11 @@ def sky130_fd_pr__rf_aura_blocking() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_aura_blocking() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_aura_blocking/sky130_fd_pr__rf_aura_blocking.gds", cellname="sky130_fd_pr__rf_aura_blocking") + return import_gds( + "src/sky130_fd_pr/cells/rf_aura_blocking/sky130_fd_pr__rf_aura_blocking.gds", + cellname="sky130_fd_pr__rf_aura_blocking", + ) + @cell def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() -> gf.Component: @@ -2756,7 +3529,11 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds", cellname="sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds", + cellname="sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() -> gf.Component: @@ -2770,7 +3547,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3_shieldl1/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2m3_shieldl1/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() -> gf.Component: @@ -2784,7 +3565,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldm4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldm4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() -> gf.Component: @@ -2798,7 +3583,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldm4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2m3_shieldm4/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() -> gf.Component: @@ -2812,7 +3601,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() -> gf.Component: @@ -2826,7 +3619,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() -> gf.Component: @@ -2840,7 +3637,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() -> gf.Component: @@ -2854,7 +3655,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() -> gf.Component: @@ -2868,7 +3673,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() -> gf.Component: @@ -2882,7 +3691,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() -> gf.Component: @@ -2896,7 +3709,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() -> gf.Component: @@ -2910,7 +3727,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() -> gf.Component: @@ -2924,7 +3745,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() -> gf.Component: @@ -2938,7 +3763,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() -> gf.Component: @@ -2952,7 +3781,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() -> gf.Component: @@ -2966,7 +3799,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() -> gf.Component: @@ -2980,7 +3817,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() -> gf.Component: @@ -2994,7 +3835,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() -> gf.Component: @@ -3008,7 +3853,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() -> gf.Component: @@ -3022,7 +3871,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() -> gf.Component: @@ -3036,7 +3889,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() -> gf.Component: @@ -3050,7 +3907,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() -> gf.Component: @@ -3064,7 +3925,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() -> gf.Component: @@ -3078,7 +3943,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() -> gf.Component: @@ -3092,7 +3961,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() -> gf.Component: @@ -3106,7 +3979,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() -> gf.Component: @@ -3120,7 +3997,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() -> gf.Component: @@ -3134,7 +4015,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() -> gf.Component: @@ -3148,7 +4033,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() -> gf.Component: @@ -3162,7 +4051,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() -> gf.Component: @@ -3176,7 +4069,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() -> gf.Component: @@ -3190,7 +4087,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() -> gf.Component: @@ -3204,7 +4105,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() -> gf.Component: @@ -3218,7 +4123,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() -> gf.Component: @@ -3232,7 +4141,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() -> gf.Component: @@ -3246,7 +4159,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() -> gf.Component: @@ -3260,7 +4177,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() -> gf.Component: @@ -3274,7 +4195,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() -> gf.Component: @@ -3288,7 +4213,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() -> gf.Component: @@ -3302,7 +4231,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() -> gf.Component: @@ -3316,7 +4249,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() -> gf.Component: @@ -3330,7 +4267,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() -> gf.Component: @@ -3344,7 +4285,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() -> gf.Component: @@ -3358,7 +4303,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() -> gf.Component: @@ -3372,7 +4321,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() -> gf.Component: @@ -3386,7 +4339,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() -> gf.Component: @@ -3400,7 +4357,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() -> gf.Component: @@ -3414,7 +4375,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() -> gf.Component: @@ -3428,7 +4393,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() -> gf.Component: @@ -3442,7 +4411,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() -> gf.Component: @@ -3456,7 +4429,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() -> gf.Component: @@ -3470,7 +4447,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() -> gf.Component: @@ -3484,7 +4465,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() -> gf.Component: @@ -3498,7 +4483,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() -> gf.Component: @@ -3512,7 +4501,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() -> gf.Component: @@ -3526,7 +4519,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() -> gf.Component: @@ -3540,7 +4537,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() -> gf.Component: @@ -3554,7 +4555,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() -> gf.Component: @@ -3568,7 +4573,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() -> gf.Component: @@ -3582,7 +4591,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() -> gf.Component: @@ -3596,7 +4609,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() -> gf.Component: @@ -3610,7 +4627,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() -> gf.Component: @@ -3624,7 +4645,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() -> gf.Component: @@ -3638,7 +4663,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() -> gf.Component: @@ -3652,7 +4681,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() -> gf.Component: @@ -3666,7 +4699,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() -> gf.Component: @@ -3680,7 +4717,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() -> gf.Component: @@ -3694,7 +4735,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() -> gf.Component: @@ -3708,7 +4753,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() -> gf.Component: @@ -3722,7 +4771,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() -> gf.Component: @@ -3736,7 +4789,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() -> gf.Component: @@ -3750,7 +4807,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() -> gf.Component: @@ -3764,7 +4825,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15", + ) + @cell def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() -> gf.Component: @@ -3778,7 +4843,11 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds", cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_01v8_lvt/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds", + cellname="sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() -> gf.Component: @@ -3792,7 +4861,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield", + ) + @cell def sky130_fd_pr__rf_npn_11v0_W1p00L1p00() -> gf.Component: @@ -3806,7 +4879,11 @@ def sky130_fd_pr__rf_npn_11v0_W1p00L1p00() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_npn_11v0_W1p00L1p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_npn_11v0/sky130_fd_pr__rf_npn_11v0_W1p00L1p00.gds", cellname="sky130_fd_pr__rf_npn_11v0_W1p00L1p00") + return import_gds( + "src/sky130_fd_pr/cells/rf_npn_11v0/sky130_fd_pr__rf_npn_11v0_W1p00L1p00.gds", + cellname="sky130_fd_pr__rf_npn_11v0_W1p00L1p00", + ) + @cell def sky130_fd_pr__rf_nfet_20v0_zvt_withptap() -> gf.Component: @@ -3820,7 +4897,11 @@ def sky130_fd_pr__rf_nfet_20v0_zvt_withptap() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_20v0_zvt_withptap() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_20v0_zvt_withptap/sky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds", cellname="sky130_fd_pr__rf_nfet_20v0_zvt_withptap") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_20v0_zvt_withptap/sky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds", + cellname="sky130_fd_pr__rf_nfet_20v0_zvt_withptap", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() -> gf.Component: @@ -3834,7 +4915,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2_shieldl1/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_m1m2_shieldl1/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1", + ) + @cell def sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() -> gf.Component: @@ -3848,7 +4933,11 @@ def sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() -> gf.Component: c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/esd_rf_nfet_20v0_hbm/sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00.gds", cellname="sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00") + return import_gds( + "src/sky130_fd_pr/cells/esd_rf_nfet_20v0_hbm/sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00.gds", + cellname="sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00", + ) + @cell def sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() -> gf.Component: @@ -3862,7 +4951,11 @@ def sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() -> gf.Component: c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/esd_rf_nfet_20v0_hbm/sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00.gds", cellname="sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00") + return import_gds( + "src/sky130_fd_pr/cells/esd_rf_nfet_20v0_hbm/sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00.gds", + cellname="sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() -> gf.Component: @@ -3876,7 +4969,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() -> gf.Component: @@ -3890,7 +4987,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() -> gf.Component: @@ -3904,7 +5005,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() -> gf.Component: @@ -3918,7 +5023,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() -> gf.Component: @@ -3932,7 +5041,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() -> gf.Component: @@ -3946,7 +5059,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() -> gf.Component: @@ -3960,7 +5077,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() -> gf.Component: @@ -3974,7 +5095,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() -> gf.Component: @@ -3988,7 +5113,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() -> gf.Component: @@ -4002,7 +5131,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() -> gf.Component: @@ -4016,7 +5149,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() -> gf.Component: @@ -4030,7 +5167,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() -> gf.Component: @@ -4044,7 +5185,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50", + ) + @cell def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() -> gf.Component: @@ -4058,7 +5203,11 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() -> gf.Component: c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds", cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50") + return import_gds( + "src/sky130_fd_pr/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds", + cellname="sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50", + ) + @cell def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() -> gf.Component: @@ -4072,7 +5221,11 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_11p5x11p7_l1m1m2_noshield/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield", + ) + @cell def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() -> gf.Component: @@ -4086,7 +5239,11 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2m3_shieldl1/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds", cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_08p6x07p8_m1m2m3_shieldl1/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds", + cellname="sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1", + ) + @cell def sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() -> gf.Component: @@ -4100,7 +5257,11 @@ def sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() -> gf.Component: c = sky130.components.sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() c.plot() """ - return import_gds("src/sky130_fd_pr/cells/cap_vpp_02p4x04p6_m1m2_noshield/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds", cellname="sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield") + return import_gds( + "src/sky130_fd_pr/cells/cap_vpp_02p4x04p6_m1m2_noshield/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds", + cellname="sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield", + ) + @cell def sky130_fd_sc_hd__clkinv_8() -> gf.Component: @@ -4114,7 +5275,11 @@ def sky130_fd_sc_hd__clkinv_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkinv_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_8.gds", cellname="sky130_fd_sc_hd__clkinv_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_8.gds", + cellname="sky130_fd_sc_hd__clkinv_8", + ) + @cell def sky130_fd_sc_hd__clkinv_4() -> gf.Component: @@ -4128,7 +5293,11 @@ def sky130_fd_sc_hd__clkinv_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkinv_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_4.gds", cellname="sky130_fd_sc_hd__clkinv_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_4.gds", + cellname="sky130_fd_sc_hd__clkinv_4", + ) + @cell def sky130_fd_sc_hd__clkinv_1() -> gf.Component: @@ -4142,7 +5311,11 @@ def sky130_fd_sc_hd__clkinv_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkinv_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_1.gds", cellname="sky130_fd_sc_hd__clkinv_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_1.gds", + cellname="sky130_fd_sc_hd__clkinv_1", + ) + @cell def sky130_fd_sc_hd__clkinv_16() -> gf.Component: @@ -4156,7 +5329,11 @@ def sky130_fd_sc_hd__clkinv_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkinv_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_16.gds", cellname="sky130_fd_sc_hd__clkinv_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_16.gds", + cellname="sky130_fd_sc_hd__clkinv_16", + ) + @cell def sky130_fd_sc_hd__clkinv_2() -> gf.Component: @@ -4170,7 +5347,11 @@ def sky130_fd_sc_hd__clkinv_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkinv_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_2.gds", cellname="sky130_fd_sc_hd__clkinv_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkinv/sky130_fd_sc_hd__clkinv_2.gds", + cellname="sky130_fd_sc_hd__clkinv_2", + ) + @cell def sky130_fd_sc_hd__o311ai_1() -> gf.Component: @@ -4184,7 +5365,11 @@ def sky130_fd_sc_hd__o311ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o311ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_1.gds", cellname="sky130_fd_sc_hd__o311ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_1.gds", + cellname="sky130_fd_sc_hd__o311ai_1", + ) + @cell def sky130_fd_sc_hd__o311ai_2() -> gf.Component: @@ -4198,7 +5383,11 @@ def sky130_fd_sc_hd__o311ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o311ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_2.gds", cellname="sky130_fd_sc_hd__o311ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_2.gds", + cellname="sky130_fd_sc_hd__o311ai_2", + ) + @cell def sky130_fd_sc_hd__o311ai_4() -> gf.Component: @@ -4212,7 +5401,11 @@ def sky130_fd_sc_hd__o311ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o311ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_4.gds", cellname="sky130_fd_sc_hd__o311ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_4.gds", + cellname="sky130_fd_sc_hd__o311ai_4", + ) + @cell def sky130_fd_sc_hd__o311ai_0() -> gf.Component: @@ -4226,7 +5419,11 @@ def sky130_fd_sc_hd__o311ai_0() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o311ai_0() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_0.gds", cellname="sky130_fd_sc_hd__o311ai_0") + return import_gds( + "src/sky130_fd_sc_hd/cells/o311ai/sky130_fd_sc_hd__o311ai_0.gds", + cellname="sky130_fd_sc_hd__o311ai_0", + ) + @cell def sky130_fd_sc_hd__dlygate4sd1_1() -> gf.Component: @@ -4240,7 +5437,11 @@ def sky130_fd_sc_hd__dlygate4sd1_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlygate4sd1_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlygate4sd1/sky130_fd_sc_hd__dlygate4sd1_1.gds", cellname="sky130_fd_sc_hd__dlygate4sd1_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlygate4sd1/sky130_fd_sc_hd__dlygate4sd1_1.gds", + cellname="sky130_fd_sc_hd__dlygate4sd1_1", + ) + @cell def sky130_fd_sc_hd__einvn_2() -> gf.Component: @@ -4254,7 +5455,11 @@ def sky130_fd_sc_hd__einvn_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__einvn_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_2.gds", cellname="sky130_fd_sc_hd__einvn_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_2.gds", + cellname="sky130_fd_sc_hd__einvn_2", + ) + @cell def sky130_fd_sc_hd__einvn_0() -> gf.Component: @@ -4268,7 +5473,11 @@ def sky130_fd_sc_hd__einvn_0() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__einvn_0() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_0.gds", cellname="sky130_fd_sc_hd__einvn_0") + return import_gds( + "src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_0.gds", + cellname="sky130_fd_sc_hd__einvn_0", + ) + @cell def sky130_fd_sc_hd__einvn_8() -> gf.Component: @@ -4282,7 +5491,11 @@ def sky130_fd_sc_hd__einvn_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__einvn_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_8.gds", cellname="sky130_fd_sc_hd__einvn_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_8.gds", + cellname="sky130_fd_sc_hd__einvn_8", + ) + @cell def sky130_fd_sc_hd__einvn_4() -> gf.Component: @@ -4296,7 +5509,11 @@ def sky130_fd_sc_hd__einvn_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__einvn_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_4.gds", cellname="sky130_fd_sc_hd__einvn_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_4.gds", + cellname="sky130_fd_sc_hd__einvn_4", + ) + @cell def sky130_fd_sc_hd__einvn_1() -> gf.Component: @@ -4310,7 +5527,11 @@ def sky130_fd_sc_hd__einvn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__einvn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_1.gds", cellname="sky130_fd_sc_hd__einvn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/einvn/sky130_fd_sc_hd__einvn_1.gds", + cellname="sky130_fd_sc_hd__einvn_1", + ) + @cell def sky130_fd_sc_hd__fahcon_1() -> gf.Component: @@ -4324,7 +5545,11 @@ def sky130_fd_sc_hd__fahcon_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fahcon_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fahcon/sky130_fd_sc_hd__fahcon_1.gds", cellname="sky130_fd_sc_hd__fahcon_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/fahcon/sky130_fd_sc_hd__fahcon_1.gds", + cellname="sky130_fd_sc_hd__fahcon_1", + ) + @cell def sky130_fd_sc_hd__dlygate4sd3_1() -> gf.Component: @@ -4338,7 +5563,11 @@ def sky130_fd_sc_hd__dlygate4sd3_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlygate4sd3_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlygate4sd3/sky130_fd_sc_hd__dlygate4sd3_1.gds", cellname="sky130_fd_sc_hd__dlygate4sd3_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlygate4sd3/sky130_fd_sc_hd__dlygate4sd3_1.gds", + cellname="sky130_fd_sc_hd__dlygate4sd3_1", + ) + @cell def sky130_fd_sc_hd__clkdlybuf4s15_2() -> gf.Component: @@ -4352,7 +5581,11 @@ def sky130_fd_sc_hd__clkdlybuf4s15_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s15/sky130_fd_sc_hd__clkdlybuf4s15_2.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s15_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkdlybuf4s15/sky130_fd_sc_hd__clkdlybuf4s15_2.gds", + cellname="sky130_fd_sc_hd__clkdlybuf4s15_2", + ) + @cell def sky130_fd_sc_hd__clkdlybuf4s15_1() -> gf.Component: @@ -4366,7 +5599,11 @@ def sky130_fd_sc_hd__clkdlybuf4s15_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s15/sky130_fd_sc_hd__clkdlybuf4s15_1.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s15_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkdlybuf4s15/sky130_fd_sc_hd__clkdlybuf4s15_1.gds", + cellname="sky130_fd_sc_hd__clkdlybuf4s15_1", + ) + @cell def sky130_fd_sc_hd__a2111o_2() -> gf.Component: @@ -4380,7 +5617,11 @@ def sky130_fd_sc_hd__a2111o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2111o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2111o/sky130_fd_sc_hd__a2111o_2.gds", cellname="sky130_fd_sc_hd__a2111o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2111o/sky130_fd_sc_hd__a2111o_2.gds", + cellname="sky130_fd_sc_hd__a2111o_2", + ) + @cell def sky130_fd_sc_hd__a2111o_1() -> gf.Component: @@ -4394,7 +5635,11 @@ def sky130_fd_sc_hd__a2111o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2111o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2111o/sky130_fd_sc_hd__a2111o_1.gds", cellname="sky130_fd_sc_hd__a2111o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2111o/sky130_fd_sc_hd__a2111o_1.gds", + cellname="sky130_fd_sc_hd__a2111o_1", + ) + @cell def sky130_fd_sc_hd__a2111o_4() -> gf.Component: @@ -4408,7 +5653,11 @@ def sky130_fd_sc_hd__a2111o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2111o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2111o/sky130_fd_sc_hd__a2111o_4.gds", cellname="sky130_fd_sc_hd__a2111o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2111o/sky130_fd_sc_hd__a2111o_4.gds", + cellname="sky130_fd_sc_hd__a2111o_4", + ) + @cell def sky130_fd_sc_hd__o2111ai_1() -> gf.Component: @@ -4422,7 +5671,11 @@ def sky130_fd_sc_hd__o2111ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2111ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2111ai/sky130_fd_sc_hd__o2111ai_1.gds", cellname="sky130_fd_sc_hd__o2111ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2111ai/sky130_fd_sc_hd__o2111ai_1.gds", + cellname="sky130_fd_sc_hd__o2111ai_1", + ) + @cell def sky130_fd_sc_hd__o2111ai_2() -> gf.Component: @@ -4436,7 +5689,11 @@ def sky130_fd_sc_hd__o2111ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2111ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2111ai/sky130_fd_sc_hd__o2111ai_2.gds", cellname="sky130_fd_sc_hd__o2111ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2111ai/sky130_fd_sc_hd__o2111ai_2.gds", + cellname="sky130_fd_sc_hd__o2111ai_2", + ) + @cell def sky130_fd_sc_hd__o2111ai_4() -> gf.Component: @@ -4450,7 +5707,11 @@ def sky130_fd_sc_hd__o2111ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2111ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2111ai/sky130_fd_sc_hd__o2111ai_4.gds", cellname="sky130_fd_sc_hd__o2111ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2111ai/sky130_fd_sc_hd__o2111ai_4.gds", + cellname="sky130_fd_sc_hd__o2111ai_4", + ) + @cell def sky130_fd_sc_hd__sdfxbp_2() -> gf.Component: @@ -4464,7 +5725,11 @@ def sky130_fd_sc_hd__sdfxbp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfxbp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfxbp/sky130_fd_sc_hd__sdfxbp_2.gds", cellname="sky130_fd_sc_hd__sdfxbp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfxbp/sky130_fd_sc_hd__sdfxbp_2.gds", + cellname="sky130_fd_sc_hd__sdfxbp_2", + ) + @cell def sky130_fd_sc_hd__sdfxbp_1() -> gf.Component: @@ -4478,7 +5743,11 @@ def sky130_fd_sc_hd__sdfxbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfxbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfxbp/sky130_fd_sc_hd__sdfxbp_1.gds", cellname="sky130_fd_sc_hd__sdfxbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfxbp/sky130_fd_sc_hd__sdfxbp_1.gds", + cellname="sky130_fd_sc_hd__sdfxbp_1", + ) + @cell def sky130_fd_sc_hd__sdfxtp_2() -> gf.Component: @@ -4492,7 +5761,11 @@ def sky130_fd_sc_hd__sdfxtp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfxtp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfxtp/sky130_fd_sc_hd__sdfxtp_2.gds", cellname="sky130_fd_sc_hd__sdfxtp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfxtp/sky130_fd_sc_hd__sdfxtp_2.gds", + cellname="sky130_fd_sc_hd__sdfxtp_2", + ) + @cell def sky130_fd_sc_hd__sdfxtp_1() -> gf.Component: @@ -4506,7 +5779,11 @@ def sky130_fd_sc_hd__sdfxtp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfxtp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfxtp/sky130_fd_sc_hd__sdfxtp_1.gds", cellname="sky130_fd_sc_hd__sdfxtp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfxtp/sky130_fd_sc_hd__sdfxtp_1.gds", + cellname="sky130_fd_sc_hd__sdfxtp_1", + ) + @cell def sky130_fd_sc_hd__sdfxtp_4() -> gf.Component: @@ -4520,7 +5797,11 @@ def sky130_fd_sc_hd__sdfxtp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfxtp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfxtp/sky130_fd_sc_hd__sdfxtp_4.gds", cellname="sky130_fd_sc_hd__sdfxtp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfxtp/sky130_fd_sc_hd__sdfxtp_4.gds", + cellname="sky130_fd_sc_hd__sdfxtp_4", + ) + @cell def sky130_fd_sc_hd__clkdlybuf4s25_1() -> gf.Component: @@ -4534,7 +5815,11 @@ def sky130_fd_sc_hd__clkdlybuf4s25_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s25/sky130_fd_sc_hd__clkdlybuf4s25_1.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s25_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkdlybuf4s25/sky130_fd_sc_hd__clkdlybuf4s25_1.gds", + cellname="sky130_fd_sc_hd__clkdlybuf4s25_1", + ) + @cell def sky130_fd_sc_hd__clkdlybuf4s25_2() -> gf.Component: @@ -4548,7 +5833,11 @@ def sky130_fd_sc_hd__clkdlybuf4s25_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s25/sky130_fd_sc_hd__clkdlybuf4s25_2.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s25_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkdlybuf4s25/sky130_fd_sc_hd__clkdlybuf4s25_2.gds", + cellname="sky130_fd_sc_hd__clkdlybuf4s25_2", + ) + @cell def sky130_fd_sc_hd__nand2_8() -> gf.Component: @@ -4562,7 +5851,11 @@ def sky130_fd_sc_hd__nand2_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand2_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_8.gds", cellname="sky130_fd_sc_hd__nand2_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_8.gds", + cellname="sky130_fd_sc_hd__nand2_8", + ) + @cell def sky130_fd_sc_hd__nand2_2() -> gf.Component: @@ -4576,7 +5869,11 @@ def sky130_fd_sc_hd__nand2_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand2_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_2.gds", cellname="sky130_fd_sc_hd__nand2_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_2.gds", + cellname="sky130_fd_sc_hd__nand2_2", + ) + @cell def sky130_fd_sc_hd__nand2_4() -> gf.Component: @@ -4590,7 +5887,11 @@ def sky130_fd_sc_hd__nand2_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand2_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_4.gds", cellname="sky130_fd_sc_hd__nand2_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_4.gds", + cellname="sky130_fd_sc_hd__nand2_4", + ) + @cell def sky130_fd_sc_hd__nand2_1() -> gf.Component: @@ -4604,7 +5905,11 @@ def sky130_fd_sc_hd__nand2_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand2_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_1.gds", cellname="sky130_fd_sc_hd__nand2_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand2/sky130_fd_sc_hd__nand2_1.gds", + cellname="sky130_fd_sc_hd__nand2_1", + ) + @cell def sky130_fd_sc_hd__conb_1() -> gf.Component: @@ -4618,7 +5923,11 @@ def sky130_fd_sc_hd__conb_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__conb_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/conb/sky130_fd_sc_hd__conb_1.gds", cellname="sky130_fd_sc_hd__conb_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/conb/sky130_fd_sc_hd__conb_1.gds", + cellname="sky130_fd_sc_hd__conb_1", + ) + @cell def sky130_fd_sc_hd__a311oi_2() -> gf.Component: @@ -4632,7 +5941,11 @@ def sky130_fd_sc_hd__a311oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a311oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a311oi/sky130_fd_sc_hd__a311oi_2.gds", cellname="sky130_fd_sc_hd__a311oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a311oi/sky130_fd_sc_hd__a311oi_2.gds", + cellname="sky130_fd_sc_hd__a311oi_2", + ) + @cell def sky130_fd_sc_hd__a311oi_1() -> gf.Component: @@ -4646,7 +5959,11 @@ def sky130_fd_sc_hd__a311oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a311oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a311oi/sky130_fd_sc_hd__a311oi_1.gds", cellname="sky130_fd_sc_hd__a311oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a311oi/sky130_fd_sc_hd__a311oi_1.gds", + cellname="sky130_fd_sc_hd__a311oi_1", + ) + @cell def sky130_fd_sc_hd__a311oi_4() -> gf.Component: @@ -4660,7 +5977,11 @@ def sky130_fd_sc_hd__a311oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a311oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a311oi/sky130_fd_sc_hd__a311oi_4.gds", cellname="sky130_fd_sc_hd__a311oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a311oi/sky130_fd_sc_hd__a311oi_4.gds", + cellname="sky130_fd_sc_hd__a311oi_4", + ) + @cell def sky130_fd_sc_hd__einvp_2() -> gf.Component: @@ -4674,7 +5995,11 @@ def sky130_fd_sc_hd__einvp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__einvp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_2.gds", cellname="sky130_fd_sc_hd__einvp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_2.gds", + cellname="sky130_fd_sc_hd__einvp_2", + ) + @cell def sky130_fd_sc_hd__einvp_8() -> gf.Component: @@ -4688,7 +6013,11 @@ def sky130_fd_sc_hd__einvp_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__einvp_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_8.gds", cellname="sky130_fd_sc_hd__einvp_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_8.gds", + cellname="sky130_fd_sc_hd__einvp_8", + ) + @cell def sky130_fd_sc_hd__einvp_1() -> gf.Component: @@ -4702,7 +6031,11 @@ def sky130_fd_sc_hd__einvp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__einvp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_1.gds", cellname="sky130_fd_sc_hd__einvp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_1.gds", + cellname="sky130_fd_sc_hd__einvp_1", + ) + @cell def sky130_fd_sc_hd__einvp_4() -> gf.Component: @@ -4716,7 +6049,11 @@ def sky130_fd_sc_hd__einvp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__einvp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_4.gds", cellname="sky130_fd_sc_hd__einvp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/einvp/sky130_fd_sc_hd__einvp_4.gds", + cellname="sky130_fd_sc_hd__einvp_4", + ) + @cell def sky130_fd_sc_hd__or4b_4() -> gf.Component: @@ -4730,7 +6067,11 @@ def sky130_fd_sc_hd__or4b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or4b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or4b/sky130_fd_sc_hd__or4b_4.gds", cellname="sky130_fd_sc_hd__or4b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/or4b/sky130_fd_sc_hd__or4b_4.gds", + cellname="sky130_fd_sc_hd__or4b_4", + ) + @cell def sky130_fd_sc_hd__or4b_1() -> gf.Component: @@ -4744,7 +6085,11 @@ def sky130_fd_sc_hd__or4b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or4b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or4b/sky130_fd_sc_hd__or4b_1.gds", cellname="sky130_fd_sc_hd__or4b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/or4b/sky130_fd_sc_hd__or4b_1.gds", + cellname="sky130_fd_sc_hd__or4b_1", + ) + @cell def sky130_fd_sc_hd__or4b_2() -> gf.Component: @@ -4758,7 +6103,11 @@ def sky130_fd_sc_hd__or4b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or4b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or4b/sky130_fd_sc_hd__or4b_2.gds", cellname="sky130_fd_sc_hd__or4b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/or4b/sky130_fd_sc_hd__or4b_2.gds", + cellname="sky130_fd_sc_hd__or4b_2", + ) + @cell def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: @@ -4772,7 +6121,11 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4.gds", + cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4", + ) + @cell def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: @@ -4786,7 +6139,11 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2.gds", + cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2", + ) + @cell def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: @@ -4800,7 +6157,11 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1.gds", + cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1", + ) + @cell def sky130_fd_sc_hd__tapvgnd2_1() -> gf.Component: @@ -4814,7 +6175,11 @@ def sky130_fd_sc_hd__tapvgnd2_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__tapvgnd2_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/tapvgnd2/sky130_fd_sc_hd__tapvgnd2_1.gds", cellname="sky130_fd_sc_hd__tapvgnd2_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/tapvgnd2/sky130_fd_sc_hd__tapvgnd2_1.gds", + cellname="sky130_fd_sc_hd__tapvgnd2_1", + ) + @cell def sky130_fd_sc_hd__tap_2() -> gf.Component: @@ -4828,7 +6193,11 @@ def sky130_fd_sc_hd__tap_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__tap_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/tap/sky130_fd_sc_hd__tap_2.gds", cellname="sky130_fd_sc_hd__tap_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/tap/sky130_fd_sc_hd__tap_2.gds", + cellname="sky130_fd_sc_hd__tap_2", + ) + @cell def sky130_fd_sc_hd__tap_1() -> gf.Component: @@ -4842,7 +6211,11 @@ def sky130_fd_sc_hd__tap_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__tap_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/tap/sky130_fd_sc_hd__tap_1.gds", cellname="sky130_fd_sc_hd__tap_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/tap/sky130_fd_sc_hd__tap_1.gds", + cellname="sky130_fd_sc_hd__tap_1", + ) + @cell def sky130_fd_sc_hd__o22ai_2() -> gf.Component: @@ -4856,7 +6229,11 @@ def sky130_fd_sc_hd__o22ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o22ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o22ai/sky130_fd_sc_hd__o22ai_2.gds", cellname="sky130_fd_sc_hd__o22ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o22ai/sky130_fd_sc_hd__o22ai_2.gds", + cellname="sky130_fd_sc_hd__o22ai_2", + ) + @cell def sky130_fd_sc_hd__o22ai_4() -> gf.Component: @@ -4870,7 +6247,11 @@ def sky130_fd_sc_hd__o22ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o22ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o22ai/sky130_fd_sc_hd__o22ai_4.gds", cellname="sky130_fd_sc_hd__o22ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o22ai/sky130_fd_sc_hd__o22ai_4.gds", + cellname="sky130_fd_sc_hd__o22ai_4", + ) + @cell def sky130_fd_sc_hd__o22ai_1() -> gf.Component: @@ -4884,7 +6265,11 @@ def sky130_fd_sc_hd__o22ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o22ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o22ai/sky130_fd_sc_hd__o22ai_1.gds", cellname="sky130_fd_sc_hd__o22ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o22ai/sky130_fd_sc_hd__o22ai_1.gds", + cellname="sky130_fd_sc_hd__o22ai_1", + ) + @cell def sky130_fd_sc_hd__dlymetal6s4s_1() -> gf.Component: @@ -4898,7 +6283,11 @@ def sky130_fd_sc_hd__dlymetal6s4s_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlymetal6s4s_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlymetal6s4s/sky130_fd_sc_hd__dlymetal6s4s_1.gds", cellname="sky130_fd_sc_hd__dlymetal6s4s_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlymetal6s4s/sky130_fd_sc_hd__dlymetal6s4s_1.gds", + cellname="sky130_fd_sc_hd__dlymetal6s4s_1", + ) + @cell def sky130_fd_sc_hd__o31ai_1() -> gf.Component: @@ -4912,7 +6301,11 @@ def sky130_fd_sc_hd__o31ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o31ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o31ai/sky130_fd_sc_hd__o31ai_1.gds", cellname="sky130_fd_sc_hd__o31ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o31ai/sky130_fd_sc_hd__o31ai_1.gds", + cellname="sky130_fd_sc_hd__o31ai_1", + ) + @cell def sky130_fd_sc_hd__o31ai_2() -> gf.Component: @@ -4926,7 +6319,11 @@ def sky130_fd_sc_hd__o31ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o31ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o31ai/sky130_fd_sc_hd__o31ai_2.gds", cellname="sky130_fd_sc_hd__o31ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o31ai/sky130_fd_sc_hd__o31ai_2.gds", + cellname="sky130_fd_sc_hd__o31ai_2", + ) + @cell def sky130_fd_sc_hd__o31ai_4() -> gf.Component: @@ -4940,7 +6337,11 @@ def sky130_fd_sc_hd__o31ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o31ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o31ai/sky130_fd_sc_hd__o31ai_4.gds", cellname="sky130_fd_sc_hd__o31ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o31ai/sky130_fd_sc_hd__o31ai_4.gds", + cellname="sky130_fd_sc_hd__o31ai_4", + ) + @cell def sky130_fd_sc_hd__a22oi_2() -> gf.Component: @@ -4954,7 +6355,11 @@ def sky130_fd_sc_hd__a22oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a22oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a22oi/sky130_fd_sc_hd__a22oi_2.gds", cellname="sky130_fd_sc_hd__a22oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a22oi/sky130_fd_sc_hd__a22oi_2.gds", + cellname="sky130_fd_sc_hd__a22oi_2", + ) + @cell def sky130_fd_sc_hd__a22oi_1() -> gf.Component: @@ -4968,7 +6373,11 @@ def sky130_fd_sc_hd__a22oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a22oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a22oi/sky130_fd_sc_hd__a22oi_1.gds", cellname="sky130_fd_sc_hd__a22oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a22oi/sky130_fd_sc_hd__a22oi_1.gds", + cellname="sky130_fd_sc_hd__a22oi_1", + ) + @cell def sky130_fd_sc_hd__a22oi_4() -> gf.Component: @@ -4982,7 +6391,11 @@ def sky130_fd_sc_hd__a22oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a22oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a22oi/sky130_fd_sc_hd__a22oi_4.gds", cellname="sky130_fd_sc_hd__a22oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a22oi/sky130_fd_sc_hd__a22oi_4.gds", + cellname="sky130_fd_sc_hd__a22oi_4", + ) + @cell def sky130_fd_sc_hd__a21o_4() -> gf.Component: @@ -4996,7 +6409,11 @@ def sky130_fd_sc_hd__a21o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21o/sky130_fd_sc_hd__a21o_4.gds", cellname="sky130_fd_sc_hd__a21o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21o/sky130_fd_sc_hd__a21o_4.gds", + cellname="sky130_fd_sc_hd__a21o_4", + ) + @cell def sky130_fd_sc_hd__a21o_2() -> gf.Component: @@ -5010,7 +6427,11 @@ def sky130_fd_sc_hd__a21o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21o/sky130_fd_sc_hd__a21o_2.gds", cellname="sky130_fd_sc_hd__a21o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21o/sky130_fd_sc_hd__a21o_2.gds", + cellname="sky130_fd_sc_hd__a21o_2", + ) + @cell def sky130_fd_sc_hd__a21o_1() -> gf.Component: @@ -5024,7 +6445,11 @@ def sky130_fd_sc_hd__a21o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21o/sky130_fd_sc_hd__a21o_1.gds", cellname="sky130_fd_sc_hd__a21o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21o/sky130_fd_sc_hd__a21o_1.gds", + cellname="sky130_fd_sc_hd__a21o_1", + ) + @cell def sky130_fd_sc_hd__mux2i_4() -> gf.Component: @@ -5038,7 +6463,11 @@ def sky130_fd_sc_hd__mux2i_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux2i_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux2i/sky130_fd_sc_hd__mux2i_4.gds", cellname="sky130_fd_sc_hd__mux2i_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux2i/sky130_fd_sc_hd__mux2i_4.gds", + cellname="sky130_fd_sc_hd__mux2i_4", + ) + @cell def sky130_fd_sc_hd__mux2i_2() -> gf.Component: @@ -5052,7 +6481,11 @@ def sky130_fd_sc_hd__mux2i_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux2i_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux2i/sky130_fd_sc_hd__mux2i_2.gds", cellname="sky130_fd_sc_hd__mux2i_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux2i/sky130_fd_sc_hd__mux2i_2.gds", + cellname="sky130_fd_sc_hd__mux2i_2", + ) + @cell def sky130_fd_sc_hd__mux2i_1() -> gf.Component: @@ -5066,7 +6499,11 @@ def sky130_fd_sc_hd__mux2i_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux2i_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux2i/sky130_fd_sc_hd__mux2i_1.gds", cellname="sky130_fd_sc_hd__mux2i_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux2i/sky130_fd_sc_hd__mux2i_1.gds", + cellname="sky130_fd_sc_hd__mux2i_1", + ) + @cell def sky130_fd_sc_hd__nor4b_2() -> gf.Component: @@ -5080,7 +6517,11 @@ def sky130_fd_sc_hd__nor4b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor4b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor4b/sky130_fd_sc_hd__nor4b_2.gds", cellname="sky130_fd_sc_hd__nor4b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor4b/sky130_fd_sc_hd__nor4b_2.gds", + cellname="sky130_fd_sc_hd__nor4b_2", + ) + @cell def sky130_fd_sc_hd__nor4b_1() -> gf.Component: @@ -5094,7 +6535,11 @@ def sky130_fd_sc_hd__nor4b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor4b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor4b/sky130_fd_sc_hd__nor4b_1.gds", cellname="sky130_fd_sc_hd__nor4b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor4b/sky130_fd_sc_hd__nor4b_1.gds", + cellname="sky130_fd_sc_hd__nor4b_1", + ) + @cell def sky130_fd_sc_hd__nor4b_4() -> gf.Component: @@ -5108,7 +6553,11 @@ def sky130_fd_sc_hd__nor4b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor4b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor4b/sky130_fd_sc_hd__nor4b_4.gds", cellname="sky130_fd_sc_hd__nor4b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor4b/sky130_fd_sc_hd__nor4b_4.gds", + cellname="sky130_fd_sc_hd__nor4b_4", + ) + @cell def sky130_fd_sc_hd__a211o_4() -> gf.Component: @@ -5122,7 +6571,11 @@ def sky130_fd_sc_hd__a211o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a211o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a211o/sky130_fd_sc_hd__a211o_4.gds", cellname="sky130_fd_sc_hd__a211o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a211o/sky130_fd_sc_hd__a211o_4.gds", + cellname="sky130_fd_sc_hd__a211o_4", + ) + @cell def sky130_fd_sc_hd__a211o_2() -> gf.Component: @@ -5136,7 +6589,11 @@ def sky130_fd_sc_hd__a211o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a211o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a211o/sky130_fd_sc_hd__a211o_2.gds", cellname="sky130_fd_sc_hd__a211o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a211o/sky130_fd_sc_hd__a211o_2.gds", + cellname="sky130_fd_sc_hd__a211o_2", + ) + @cell def sky130_fd_sc_hd__a211o_1() -> gf.Component: @@ -5150,7 +6607,11 @@ def sky130_fd_sc_hd__a211o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a211o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a211o/sky130_fd_sc_hd__a211o_1.gds", cellname="sky130_fd_sc_hd__a211o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a211o/sky130_fd_sc_hd__a211o_1.gds", + cellname="sky130_fd_sc_hd__a211o_1", + ) + @cell def sky130_fd_sc_hd__dfxtp_2() -> gf.Component: @@ -5164,7 +6625,11 @@ def sky130_fd_sc_hd__dfxtp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfxtp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfxtp/sky130_fd_sc_hd__dfxtp_2.gds", cellname="sky130_fd_sc_hd__dfxtp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfxtp/sky130_fd_sc_hd__dfxtp_2.gds", + cellname="sky130_fd_sc_hd__dfxtp_2", + ) + @cell def sky130_fd_sc_hd__dfxtp_1() -> gf.Component: @@ -5178,7 +6643,11 @@ def sky130_fd_sc_hd__dfxtp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfxtp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfxtp/sky130_fd_sc_hd__dfxtp_1.gds", cellname="sky130_fd_sc_hd__dfxtp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfxtp/sky130_fd_sc_hd__dfxtp_1.gds", + cellname="sky130_fd_sc_hd__dfxtp_1", + ) + @cell def sky130_fd_sc_hd__dfxtp_4() -> gf.Component: @@ -5192,7 +6661,11 @@ def sky130_fd_sc_hd__dfxtp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfxtp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfxtp/sky130_fd_sc_hd__dfxtp_4.gds", cellname="sky130_fd_sc_hd__dfxtp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfxtp/sky130_fd_sc_hd__dfxtp_4.gds", + cellname="sky130_fd_sc_hd__dfxtp_4", + ) + @cell def sky130_fd_sc_hd__dfstp_4() -> gf.Component: @@ -5206,7 +6679,11 @@ def sky130_fd_sc_hd__dfstp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfstp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfstp/sky130_fd_sc_hd__dfstp_4.gds", cellname="sky130_fd_sc_hd__dfstp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfstp/sky130_fd_sc_hd__dfstp_4.gds", + cellname="sky130_fd_sc_hd__dfstp_4", + ) + @cell def sky130_fd_sc_hd__dfstp_2() -> gf.Component: @@ -5220,7 +6697,11 @@ def sky130_fd_sc_hd__dfstp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfstp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfstp/sky130_fd_sc_hd__dfstp_2.gds", cellname="sky130_fd_sc_hd__dfstp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfstp/sky130_fd_sc_hd__dfstp_2.gds", + cellname="sky130_fd_sc_hd__dfstp_2", + ) + @cell def sky130_fd_sc_hd__dfstp_1() -> gf.Component: @@ -5234,7 +6715,11 @@ def sky130_fd_sc_hd__dfstp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfstp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfstp/sky130_fd_sc_hd__dfstp_1.gds", cellname="sky130_fd_sc_hd__dfstp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfstp/sky130_fd_sc_hd__dfstp_1.gds", + cellname="sky130_fd_sc_hd__dfstp_1", + ) + @cell def sky130_fd_sc_hd__lpflow_inputiso0p_1() -> gf.Component: @@ -5248,7 +6733,11 @@ def sky130_fd_sc_hd__lpflow_inputiso0p_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0p_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputiso0p/sky130_fd_sc_hd__lpflow_inputiso0p_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputiso0p_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_inputiso0p/sky130_fd_sc_hd__lpflow_inputiso0p_1.gds", + cellname="sky130_fd_sc_hd__lpflow_inputiso0p_1", + ) + @cell def sky130_fd_sc_hd__o211ai_4() -> gf.Component: @@ -5262,7 +6751,11 @@ def sky130_fd_sc_hd__o211ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o211ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o211ai/sky130_fd_sc_hd__o211ai_4.gds", cellname="sky130_fd_sc_hd__o211ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o211ai/sky130_fd_sc_hd__o211ai_4.gds", + cellname="sky130_fd_sc_hd__o211ai_4", + ) + @cell def sky130_fd_sc_hd__o211ai_2() -> gf.Component: @@ -5276,7 +6769,11 @@ def sky130_fd_sc_hd__o211ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o211ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o211ai/sky130_fd_sc_hd__o211ai_2.gds", cellname="sky130_fd_sc_hd__o211ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o211ai/sky130_fd_sc_hd__o211ai_2.gds", + cellname="sky130_fd_sc_hd__o211ai_2", + ) + @cell def sky130_fd_sc_hd__o211ai_1() -> gf.Component: @@ -5290,7 +6787,11 @@ def sky130_fd_sc_hd__o211ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o211ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o211ai/sky130_fd_sc_hd__o211ai_1.gds", cellname="sky130_fd_sc_hd__o211ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o211ai/sky130_fd_sc_hd__o211ai_1.gds", + cellname="sky130_fd_sc_hd__o211ai_1", + ) + @cell def sky130_fd_sc_hd__dfrbp_2() -> gf.Component: @@ -5304,7 +6805,11 @@ def sky130_fd_sc_hd__dfrbp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfrbp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfrbp/sky130_fd_sc_hd__dfrbp_2.gds", cellname="sky130_fd_sc_hd__dfrbp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfrbp/sky130_fd_sc_hd__dfrbp_2.gds", + cellname="sky130_fd_sc_hd__dfrbp_2", + ) + @cell def sky130_fd_sc_hd__dfrbp_1() -> gf.Component: @@ -5318,7 +6823,11 @@ def sky130_fd_sc_hd__dfrbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfrbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfrbp/sky130_fd_sc_hd__dfrbp_1.gds", cellname="sky130_fd_sc_hd__dfrbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfrbp/sky130_fd_sc_hd__dfrbp_1.gds", + cellname="sky130_fd_sc_hd__dfrbp_1", + ) + @cell def sky130_fd_sc_hd__o211a_4() -> gf.Component: @@ -5332,7 +6841,11 @@ def sky130_fd_sc_hd__o211a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o211a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o211a/sky130_fd_sc_hd__o211a_4.gds", cellname="sky130_fd_sc_hd__o211a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o211a/sky130_fd_sc_hd__o211a_4.gds", + cellname="sky130_fd_sc_hd__o211a_4", + ) + @cell def sky130_fd_sc_hd__o211a_1() -> gf.Component: @@ -5346,7 +6859,11 @@ def sky130_fd_sc_hd__o211a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o211a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o211a/sky130_fd_sc_hd__o211a_1.gds", cellname="sky130_fd_sc_hd__o211a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o211a/sky130_fd_sc_hd__o211a_1.gds", + cellname="sky130_fd_sc_hd__o211a_1", + ) + @cell def sky130_fd_sc_hd__o211a_2() -> gf.Component: @@ -5360,7 +6877,11 @@ def sky130_fd_sc_hd__o211a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o211a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o211a/sky130_fd_sc_hd__o211a_2.gds", cellname="sky130_fd_sc_hd__o211a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o211a/sky130_fd_sc_hd__o211a_2.gds", + cellname="sky130_fd_sc_hd__o211a_2", + ) + @cell def sky130_fd_sc_hd__edfxbp_1() -> gf.Component: @@ -5374,7 +6895,11 @@ def sky130_fd_sc_hd__edfxbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__edfxbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/edfxbp/sky130_fd_sc_hd__edfxbp_1.gds", cellname="sky130_fd_sc_hd__edfxbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/edfxbp/sky130_fd_sc_hd__edfxbp_1.gds", + cellname="sky130_fd_sc_hd__edfxbp_1", + ) + @cell def sky130_fd_sc_hd__or2_0() -> gf.Component: @@ -5388,7 +6913,11 @@ def sky130_fd_sc_hd__or2_0() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or2_0() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_0.gds", cellname="sky130_fd_sc_hd__or2_0") + return import_gds( + "src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_0.gds", + cellname="sky130_fd_sc_hd__or2_0", + ) + @cell def sky130_fd_sc_hd__or2_4() -> gf.Component: @@ -5402,7 +6931,11 @@ def sky130_fd_sc_hd__or2_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or2_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_4.gds", cellname="sky130_fd_sc_hd__or2_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_4.gds", + cellname="sky130_fd_sc_hd__or2_4", + ) + @cell def sky130_fd_sc_hd__or2_1() -> gf.Component: @@ -5416,7 +6949,11 @@ def sky130_fd_sc_hd__or2_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or2_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_1.gds", cellname="sky130_fd_sc_hd__or2_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_1.gds", + cellname="sky130_fd_sc_hd__or2_1", + ) + @cell def sky130_fd_sc_hd__or2_2() -> gf.Component: @@ -5430,7 +6967,11 @@ def sky130_fd_sc_hd__or2_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or2_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_2.gds", cellname="sky130_fd_sc_hd__or2_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/or2/sky130_fd_sc_hd__or2_2.gds", + cellname="sky130_fd_sc_hd__or2_2", + ) + @cell def sky130_fd_sc_hd__nor4_2() -> gf.Component: @@ -5444,7 +6985,11 @@ def sky130_fd_sc_hd__nor4_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor4_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor4/sky130_fd_sc_hd__nor4_2.gds", cellname="sky130_fd_sc_hd__nor4_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor4/sky130_fd_sc_hd__nor4_2.gds", + cellname="sky130_fd_sc_hd__nor4_2", + ) + @cell def sky130_fd_sc_hd__nor4_1() -> gf.Component: @@ -5458,7 +7003,11 @@ def sky130_fd_sc_hd__nor4_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor4_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor4/sky130_fd_sc_hd__nor4_1.gds", cellname="sky130_fd_sc_hd__nor4_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor4/sky130_fd_sc_hd__nor4_1.gds", + cellname="sky130_fd_sc_hd__nor4_1", + ) + @cell def sky130_fd_sc_hd__nor4_4() -> gf.Component: @@ -5472,7 +7021,11 @@ def sky130_fd_sc_hd__nor4_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor4_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor4/sky130_fd_sc_hd__nor4_4.gds", cellname="sky130_fd_sc_hd__nor4_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor4/sky130_fd_sc_hd__nor4_4.gds", + cellname="sky130_fd_sc_hd__nor4_4", + ) + @cell def sky130_fd_sc_hd__dlxtn_2() -> gf.Component: @@ -5486,7 +7039,11 @@ def sky130_fd_sc_hd__dlxtn_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlxtn_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlxtn/sky130_fd_sc_hd__dlxtn_2.gds", cellname="sky130_fd_sc_hd__dlxtn_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlxtn/sky130_fd_sc_hd__dlxtn_2.gds", + cellname="sky130_fd_sc_hd__dlxtn_2", + ) + @cell def sky130_fd_sc_hd__dlxtn_4() -> gf.Component: @@ -5500,7 +7057,11 @@ def sky130_fd_sc_hd__dlxtn_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlxtn_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlxtn/sky130_fd_sc_hd__dlxtn_4.gds", cellname="sky130_fd_sc_hd__dlxtn_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlxtn/sky130_fd_sc_hd__dlxtn_4.gds", + cellname="sky130_fd_sc_hd__dlxtn_4", + ) + @cell def sky130_fd_sc_hd__dlxtn_1() -> gf.Component: @@ -5514,7 +7075,11 @@ def sky130_fd_sc_hd__dlxtn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlxtn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlxtn/sky130_fd_sc_hd__dlxtn_1.gds", cellname="sky130_fd_sc_hd__dlxtn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlxtn/sky130_fd_sc_hd__dlxtn_1.gds", + cellname="sky130_fd_sc_hd__dlxtn_1", + ) + @cell def sky130_fd_sc_hd__a41o_4() -> gf.Component: @@ -5528,7 +7093,11 @@ def sky130_fd_sc_hd__a41o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a41o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a41o/sky130_fd_sc_hd__a41o_4.gds", cellname="sky130_fd_sc_hd__a41o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a41o/sky130_fd_sc_hd__a41o_4.gds", + cellname="sky130_fd_sc_hd__a41o_4", + ) + @cell def sky130_fd_sc_hd__a41o_2() -> gf.Component: @@ -5542,7 +7111,11 @@ def sky130_fd_sc_hd__a41o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a41o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a41o/sky130_fd_sc_hd__a41o_2.gds", cellname="sky130_fd_sc_hd__a41o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a41o/sky130_fd_sc_hd__a41o_2.gds", + cellname="sky130_fd_sc_hd__a41o_2", + ) + @cell def sky130_fd_sc_hd__a41o_1() -> gf.Component: @@ -5556,7 +7129,11 @@ def sky130_fd_sc_hd__a41o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a41o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a41o/sky130_fd_sc_hd__a41o_1.gds", cellname="sky130_fd_sc_hd__a41o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a41o/sky130_fd_sc_hd__a41o_1.gds", + cellname="sky130_fd_sc_hd__a41o_1", + ) + @cell def sky130_fd_sc_hd__a21boi_1() -> gf.Component: @@ -5570,7 +7147,11 @@ def sky130_fd_sc_hd__a21boi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21boi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_1.gds", cellname="sky130_fd_sc_hd__a21boi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_1.gds", + cellname="sky130_fd_sc_hd__a21boi_1", + ) + @cell def sky130_fd_sc_hd__a21boi_2() -> gf.Component: @@ -5584,7 +7165,11 @@ def sky130_fd_sc_hd__a21boi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21boi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_2.gds", cellname="sky130_fd_sc_hd__a21boi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_2.gds", + cellname="sky130_fd_sc_hd__a21boi_2", + ) + @cell def sky130_fd_sc_hd__a21boi_0() -> gf.Component: @@ -5598,7 +7183,11 @@ def sky130_fd_sc_hd__a21boi_0() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21boi_0() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_0.gds", cellname="sky130_fd_sc_hd__a21boi_0") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_0.gds", + cellname="sky130_fd_sc_hd__a21boi_0", + ) + @cell def sky130_fd_sc_hd__a21boi_4() -> gf.Component: @@ -5612,7 +7201,11 @@ def sky130_fd_sc_hd__a21boi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21boi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_4.gds", cellname="sky130_fd_sc_hd__a21boi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21boi/sky130_fd_sc_hd__a21boi_4.gds", + cellname="sky130_fd_sc_hd__a21boi_4", + ) + @cell def sky130_fd_sc_hd__o32a_2() -> gf.Component: @@ -5626,7 +7219,11 @@ def sky130_fd_sc_hd__o32a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o32a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o32a/sky130_fd_sc_hd__o32a_2.gds", cellname="sky130_fd_sc_hd__o32a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o32a/sky130_fd_sc_hd__o32a_2.gds", + cellname="sky130_fd_sc_hd__o32a_2", + ) + @cell def sky130_fd_sc_hd__o32a_1() -> gf.Component: @@ -5640,7 +7237,11 @@ def sky130_fd_sc_hd__o32a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o32a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o32a/sky130_fd_sc_hd__o32a_1.gds", cellname="sky130_fd_sc_hd__o32a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o32a/sky130_fd_sc_hd__o32a_1.gds", + cellname="sky130_fd_sc_hd__o32a_1", + ) + @cell def sky130_fd_sc_hd__o32a_4() -> gf.Component: @@ -5654,7 +7255,11 @@ def sky130_fd_sc_hd__o32a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o32a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o32a/sky130_fd_sc_hd__o32a_4.gds", cellname="sky130_fd_sc_hd__o32a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o32a/sky130_fd_sc_hd__o32a_4.gds", + cellname="sky130_fd_sc_hd__o32a_4", + ) + @cell def sky130_fd_sc_hd__lpflow_clkbufkapwr_2() -> gf.Component: @@ -5668,7 +7273,11 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_2.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_2.gds", + cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_2", + ) + @cell def sky130_fd_sc_hd__lpflow_clkbufkapwr_1() -> gf.Component: @@ -5682,7 +7291,11 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_1.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_1.gds", + cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_1", + ) + @cell def sky130_fd_sc_hd__lpflow_clkbufkapwr_16() -> gf.Component: @@ -5696,7 +7309,11 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_16.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_16.gds", + cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_16", + ) + @cell def sky130_fd_sc_hd__lpflow_clkbufkapwr_4() -> gf.Component: @@ -5710,7 +7327,11 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_4.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_4.gds", + cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_4", + ) + @cell def sky130_fd_sc_hd__lpflow_clkbufkapwr_8() -> gf.Component: @@ -5724,7 +7345,11 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_8.gds", cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkbufkapwr/sky130_fd_sc_hd__lpflow_clkbufkapwr_8.gds", + cellname="sky130_fd_sc_hd__lpflow_clkbufkapwr_8", + ) + @cell def sky130_fd_sc_hd__nor2b_4() -> gf.Component: @@ -5738,7 +7363,11 @@ def sky130_fd_sc_hd__nor2b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor2b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor2b/sky130_fd_sc_hd__nor2b_4.gds", cellname="sky130_fd_sc_hd__nor2b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor2b/sky130_fd_sc_hd__nor2b_4.gds", + cellname="sky130_fd_sc_hd__nor2b_4", + ) + @cell def sky130_fd_sc_hd__nor2b_2() -> gf.Component: @@ -5752,7 +7381,11 @@ def sky130_fd_sc_hd__nor2b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor2b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor2b/sky130_fd_sc_hd__nor2b_2.gds", cellname="sky130_fd_sc_hd__nor2b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor2b/sky130_fd_sc_hd__nor2b_2.gds", + cellname="sky130_fd_sc_hd__nor2b_2", + ) + @cell def sky130_fd_sc_hd__nor2b_1() -> gf.Component: @@ -5766,7 +7399,11 @@ def sky130_fd_sc_hd__nor2b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor2b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor2b/sky130_fd_sc_hd__nor2b_1.gds", cellname="sky130_fd_sc_hd__nor2b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor2b/sky130_fd_sc_hd__nor2b_1.gds", + cellname="sky130_fd_sc_hd__nor2b_1", + ) + @cell def sky130_fd_sc_hd__mux2_2() -> gf.Component: @@ -5780,7 +7417,11 @@ def sky130_fd_sc_hd__mux2_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux2_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_2.gds", cellname="sky130_fd_sc_hd__mux2_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_2.gds", + cellname="sky130_fd_sc_hd__mux2_2", + ) + @cell def sky130_fd_sc_hd__mux2_4() -> gf.Component: @@ -5794,7 +7435,11 @@ def sky130_fd_sc_hd__mux2_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux2_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_4.gds", cellname="sky130_fd_sc_hd__mux2_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_4.gds", + cellname="sky130_fd_sc_hd__mux2_4", + ) + @cell def sky130_fd_sc_hd__mux2_1() -> gf.Component: @@ -5808,7 +7453,11 @@ def sky130_fd_sc_hd__mux2_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux2_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_1.gds", cellname="sky130_fd_sc_hd__mux2_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_1.gds", + cellname="sky130_fd_sc_hd__mux2_1", + ) + @cell def sky130_fd_sc_hd__mux2_8() -> gf.Component: @@ -5822,7 +7471,11 @@ def sky130_fd_sc_hd__mux2_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux2_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_8.gds", cellname="sky130_fd_sc_hd__mux2_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux2/sky130_fd_sc_hd__mux2_8.gds", + cellname="sky130_fd_sc_hd__mux2_8", + ) + @cell def sky130_fd_sc_hd__o22a_2() -> gf.Component: @@ -5836,7 +7489,11 @@ def sky130_fd_sc_hd__o22a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o22a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o22a/sky130_fd_sc_hd__o22a_2.gds", cellname="sky130_fd_sc_hd__o22a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o22a/sky130_fd_sc_hd__o22a_2.gds", + cellname="sky130_fd_sc_hd__o22a_2", + ) + @cell def sky130_fd_sc_hd__o22a_4() -> gf.Component: @@ -5850,7 +7507,11 @@ def sky130_fd_sc_hd__o22a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o22a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o22a/sky130_fd_sc_hd__o22a_4.gds", cellname="sky130_fd_sc_hd__o22a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o22a/sky130_fd_sc_hd__o22a_4.gds", + cellname="sky130_fd_sc_hd__o22a_4", + ) + @cell def sky130_fd_sc_hd__o22a_1() -> gf.Component: @@ -5864,7 +7525,11 @@ def sky130_fd_sc_hd__o22a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o22a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o22a/sky130_fd_sc_hd__o22a_1.gds", cellname="sky130_fd_sc_hd__o22a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o22a/sky130_fd_sc_hd__o22a_1.gds", + cellname="sky130_fd_sc_hd__o22a_1", + ) + @cell def sky130_fd_sc_hd__a22o_1() -> gf.Component: @@ -5878,7 +7543,11 @@ def sky130_fd_sc_hd__a22o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a22o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a22o/sky130_fd_sc_hd__a22o_1.gds", cellname="sky130_fd_sc_hd__a22o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a22o/sky130_fd_sc_hd__a22o_1.gds", + cellname="sky130_fd_sc_hd__a22o_1", + ) + @cell def sky130_fd_sc_hd__a22o_4() -> gf.Component: @@ -5892,7 +7561,11 @@ def sky130_fd_sc_hd__a22o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a22o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a22o/sky130_fd_sc_hd__a22o_4.gds", cellname="sky130_fd_sc_hd__a22o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a22o/sky130_fd_sc_hd__a22o_4.gds", + cellname="sky130_fd_sc_hd__a22o_4", + ) + @cell def sky130_fd_sc_hd__a22o_2() -> gf.Component: @@ -5906,7 +7579,11 @@ def sky130_fd_sc_hd__a22o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a22o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a22o/sky130_fd_sc_hd__a22o_2.gds", cellname="sky130_fd_sc_hd__a22o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a22o/sky130_fd_sc_hd__a22o_2.gds", + cellname="sky130_fd_sc_hd__a22o_2", + ) + @cell def sky130_fd_sc_hd__dlygate4sd2_1() -> gf.Component: @@ -5920,7 +7597,11 @@ def sky130_fd_sc_hd__dlygate4sd2_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlygate4sd2_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlygate4sd2/sky130_fd_sc_hd__dlygate4sd2_1.gds", cellname="sky130_fd_sc_hd__dlygate4sd2_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlygate4sd2/sky130_fd_sc_hd__dlygate4sd2_1.gds", + cellname="sky130_fd_sc_hd__dlygate4sd2_1", + ) + @cell def sky130_fd_sc_hd__dlrtn_4() -> gf.Component: @@ -5934,7 +7615,11 @@ def sky130_fd_sc_hd__dlrtn_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrtn_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrtn/sky130_fd_sc_hd__dlrtn_4.gds", cellname="sky130_fd_sc_hd__dlrtn_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrtn/sky130_fd_sc_hd__dlrtn_4.gds", + cellname="sky130_fd_sc_hd__dlrtn_4", + ) + @cell def sky130_fd_sc_hd__dlrtn_2() -> gf.Component: @@ -5948,7 +7633,11 @@ def sky130_fd_sc_hd__dlrtn_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrtn_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrtn/sky130_fd_sc_hd__dlrtn_2.gds", cellname="sky130_fd_sc_hd__dlrtn_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrtn/sky130_fd_sc_hd__dlrtn_2.gds", + cellname="sky130_fd_sc_hd__dlrtn_2", + ) + @cell def sky130_fd_sc_hd__dlrtn_1() -> gf.Component: @@ -5962,7 +7651,11 @@ def sky130_fd_sc_hd__dlrtn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrtn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrtn/sky130_fd_sc_hd__dlrtn_1.gds", cellname="sky130_fd_sc_hd__dlrtn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrtn/sky130_fd_sc_hd__dlrtn_1.gds", + cellname="sky130_fd_sc_hd__dlrtn_1", + ) + @cell def sky130_fd_sc_hd__diode_2() -> gf.Component: @@ -5976,7 +7669,11 @@ def sky130_fd_sc_hd__diode_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__diode_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/diode/sky130_fd_sc_hd__diode_2.gds", cellname="sky130_fd_sc_hd__diode_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/diode/sky130_fd_sc_hd__diode_2.gds", + cellname="sky130_fd_sc_hd__diode_2", + ) + @cell def sky130_fd_sc_hd__o21ba_1() -> gf.Component: @@ -5990,7 +7687,11 @@ def sky130_fd_sc_hd__o21ba_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21ba_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21ba/sky130_fd_sc_hd__o21ba_1.gds", cellname="sky130_fd_sc_hd__o21ba_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21ba/sky130_fd_sc_hd__o21ba_1.gds", + cellname="sky130_fd_sc_hd__o21ba_1", + ) + @cell def sky130_fd_sc_hd__o21ba_2() -> gf.Component: @@ -6004,7 +7705,11 @@ def sky130_fd_sc_hd__o21ba_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21ba_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21ba/sky130_fd_sc_hd__o21ba_2.gds", cellname="sky130_fd_sc_hd__o21ba_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21ba/sky130_fd_sc_hd__o21ba_2.gds", + cellname="sky130_fd_sc_hd__o21ba_2", + ) + @cell def sky130_fd_sc_hd__o21ba_4() -> gf.Component: @@ -6018,7 +7723,11 @@ def sky130_fd_sc_hd__o21ba_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21ba_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21ba/sky130_fd_sc_hd__o21ba_4.gds", cellname="sky130_fd_sc_hd__o21ba_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21ba/sky130_fd_sc_hd__o21ba_4.gds", + cellname="sky130_fd_sc_hd__o21ba_4", + ) + @cell def sky130_fd_sc_hd__xor2_4() -> gf.Component: @@ -6032,7 +7741,11 @@ def sky130_fd_sc_hd__xor2_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xor2_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_4.gds", cellname="sky130_fd_sc_hd__xor2_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_4.gds", + cellname="sky130_fd_sc_hd__xor2_4", + ) + @cell def sky130_fd_sc_hd__xor2_2() -> gf.Component: @@ -6046,7 +7759,11 @@ def sky130_fd_sc_hd__xor2_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xor2_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_2.gds", cellname="sky130_fd_sc_hd__xor2_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_2.gds", + cellname="sky130_fd_sc_hd__xor2_2", + ) + @cell def sky130_fd_sc_hd__xor2_1() -> gf.Component: @@ -6060,7 +7777,11 @@ def sky130_fd_sc_hd__xor2_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xor2_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_1.gds", cellname="sky130_fd_sc_hd__xor2_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_1.gds", + cellname="sky130_fd_sc_hd__xor2_1", + ) + @cell def sky130_fd_sc_hd__a41oi_2() -> gf.Component: @@ -6074,7 +7795,11 @@ def sky130_fd_sc_hd__a41oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a41oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a41oi/sky130_fd_sc_hd__a41oi_2.gds", cellname="sky130_fd_sc_hd__a41oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a41oi/sky130_fd_sc_hd__a41oi_2.gds", + cellname="sky130_fd_sc_hd__a41oi_2", + ) + @cell def sky130_fd_sc_hd__a41oi_1() -> gf.Component: @@ -6088,7 +7813,11 @@ def sky130_fd_sc_hd__a41oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a41oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a41oi/sky130_fd_sc_hd__a41oi_1.gds", cellname="sky130_fd_sc_hd__a41oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a41oi/sky130_fd_sc_hd__a41oi_1.gds", + cellname="sky130_fd_sc_hd__a41oi_1", + ) + @cell def sky130_fd_sc_hd__a41oi_4() -> gf.Component: @@ -6102,7 +7831,11 @@ def sky130_fd_sc_hd__a41oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a41oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a41oi/sky130_fd_sc_hd__a41oi_4.gds", cellname="sky130_fd_sc_hd__a41oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a41oi/sky130_fd_sc_hd__a41oi_4.gds", + cellname="sky130_fd_sc_hd__a41oi_4", + ) + @cell def sky130_fd_sc_hd__sdfstp_1() -> gf.Component: @@ -6116,7 +7849,11 @@ def sky130_fd_sc_hd__sdfstp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfstp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfstp/sky130_fd_sc_hd__sdfstp_1.gds", cellname="sky130_fd_sc_hd__sdfstp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfstp/sky130_fd_sc_hd__sdfstp_1.gds", + cellname="sky130_fd_sc_hd__sdfstp_1", + ) + @cell def sky130_fd_sc_hd__sdfstp_2() -> gf.Component: @@ -6130,7 +7867,11 @@ def sky130_fd_sc_hd__sdfstp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfstp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfstp/sky130_fd_sc_hd__sdfstp_2.gds", cellname="sky130_fd_sc_hd__sdfstp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfstp/sky130_fd_sc_hd__sdfstp_2.gds", + cellname="sky130_fd_sc_hd__sdfstp_2", + ) + @cell def sky130_fd_sc_hd__sdfstp_4() -> gf.Component: @@ -6144,7 +7885,11 @@ def sky130_fd_sc_hd__sdfstp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfstp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfstp/sky130_fd_sc_hd__sdfstp_4.gds", cellname="sky130_fd_sc_hd__sdfstp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfstp/sky130_fd_sc_hd__sdfstp_4.gds", + cellname="sky130_fd_sc_hd__sdfstp_4", + ) + @cell def sky130_fd_sc_hd__and4b_2() -> gf.Component: @@ -6158,7 +7903,11 @@ def sky130_fd_sc_hd__and4b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and4b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and4b/sky130_fd_sc_hd__and4b_2.gds", cellname="sky130_fd_sc_hd__and4b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/and4b/sky130_fd_sc_hd__and4b_2.gds", + cellname="sky130_fd_sc_hd__and4b_2", + ) + @cell def sky130_fd_sc_hd__and4b_4() -> gf.Component: @@ -6172,7 +7921,11 @@ def sky130_fd_sc_hd__and4b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and4b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and4b/sky130_fd_sc_hd__and4b_4.gds", cellname="sky130_fd_sc_hd__and4b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/and4b/sky130_fd_sc_hd__and4b_4.gds", + cellname="sky130_fd_sc_hd__and4b_4", + ) + @cell def sky130_fd_sc_hd__and4b_1() -> gf.Component: @@ -6186,7 +7939,11 @@ def sky130_fd_sc_hd__and4b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and4b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and4b/sky130_fd_sc_hd__and4b_1.gds", cellname="sky130_fd_sc_hd__and4b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/and4b/sky130_fd_sc_hd__and4b_1.gds", + cellname="sky130_fd_sc_hd__and4b_1", + ) + @cell def sky130_fd_sc_hd__lpflow_clkinvkapwr_4() -> gf.Component: @@ -6200,7 +7957,11 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_4.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_4.gds", + cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_4", + ) + @cell def sky130_fd_sc_hd__lpflow_clkinvkapwr_1() -> gf.Component: @@ -6214,7 +7975,11 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_1.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_1.gds", + cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_1", + ) + @cell def sky130_fd_sc_hd__lpflow_clkinvkapwr_16() -> gf.Component: @@ -6228,7 +7993,11 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_16.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_16.gds", + cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_16", + ) + @cell def sky130_fd_sc_hd__lpflow_clkinvkapwr_2() -> gf.Component: @@ -6242,7 +8011,11 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_2.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_2.gds", + cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_2", + ) + @cell def sky130_fd_sc_hd__lpflow_clkinvkapwr_8() -> gf.Component: @@ -6256,7 +8029,11 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_8.gds", cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_clkinvkapwr/sky130_fd_sc_hd__lpflow_clkinvkapwr_8.gds", + cellname="sky130_fd_sc_hd__lpflow_clkinvkapwr_8", + ) + @cell def sky130_fd_sc_hd__lpflow_decapkapwr_6() -> gf.Component: @@ -6270,7 +8047,11 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_6() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_6() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_6.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_6") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_6.gds", + cellname="sky130_fd_sc_hd__lpflow_decapkapwr_6", + ) + @cell def sky130_fd_sc_hd__lpflow_decapkapwr_3() -> gf.Component: @@ -6284,7 +8065,11 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_3() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_3() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_3.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_3") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_3.gds", + cellname="sky130_fd_sc_hd__lpflow_decapkapwr_3", + ) + @cell def sky130_fd_sc_hd__lpflow_decapkapwr_8() -> gf.Component: @@ -6298,7 +8083,11 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_8.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_8.gds", + cellname="sky130_fd_sc_hd__lpflow_decapkapwr_8", + ) + @cell def sky130_fd_sc_hd__lpflow_decapkapwr_12() -> gf.Component: @@ -6312,7 +8101,11 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_12() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_12() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_12.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_12") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_12.gds", + cellname="sky130_fd_sc_hd__lpflow_decapkapwr_12", + ) + @cell def sky130_fd_sc_hd__lpflow_decapkapwr_4() -> gf.Component: @@ -6326,7 +8119,11 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_4.gds", cellname="sky130_fd_sc_hd__lpflow_decapkapwr_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_decapkapwr/sky130_fd_sc_hd__lpflow_decapkapwr_4.gds", + cellname="sky130_fd_sc_hd__lpflow_decapkapwr_4", + ) + @cell def sky130_fd_sc_hd__a221oi_4() -> gf.Component: @@ -6340,7 +8137,11 @@ def sky130_fd_sc_hd__a221oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a221oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a221oi/sky130_fd_sc_hd__a221oi_4.gds", cellname="sky130_fd_sc_hd__a221oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a221oi/sky130_fd_sc_hd__a221oi_4.gds", + cellname="sky130_fd_sc_hd__a221oi_4", + ) + @cell def sky130_fd_sc_hd__a221oi_1() -> gf.Component: @@ -6354,7 +8155,11 @@ def sky130_fd_sc_hd__a221oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a221oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a221oi/sky130_fd_sc_hd__a221oi_1.gds", cellname="sky130_fd_sc_hd__a221oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a221oi/sky130_fd_sc_hd__a221oi_1.gds", + cellname="sky130_fd_sc_hd__a221oi_1", + ) + @cell def sky130_fd_sc_hd__a221oi_2() -> gf.Component: @@ -6368,7 +8173,11 @@ def sky130_fd_sc_hd__a221oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a221oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a221oi/sky130_fd_sc_hd__a221oi_2.gds", cellname="sky130_fd_sc_hd__a221oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a221oi/sky130_fd_sc_hd__a221oi_2.gds", + cellname="sky130_fd_sc_hd__a221oi_2", + ) + @cell def sky130_fd_sc_hd__o21bai_1() -> gf.Component: @@ -6382,7 +8191,11 @@ def sky130_fd_sc_hd__o21bai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21bai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21bai/sky130_fd_sc_hd__o21bai_1.gds", cellname="sky130_fd_sc_hd__o21bai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21bai/sky130_fd_sc_hd__o21bai_1.gds", + cellname="sky130_fd_sc_hd__o21bai_1", + ) + @cell def sky130_fd_sc_hd__o21bai_2() -> gf.Component: @@ -6396,7 +8209,11 @@ def sky130_fd_sc_hd__o21bai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21bai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21bai/sky130_fd_sc_hd__o21bai_2.gds", cellname="sky130_fd_sc_hd__o21bai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21bai/sky130_fd_sc_hd__o21bai_2.gds", + cellname="sky130_fd_sc_hd__o21bai_2", + ) + @cell def sky130_fd_sc_hd__o21bai_4() -> gf.Component: @@ -6410,7 +8227,11 @@ def sky130_fd_sc_hd__o21bai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21bai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21bai/sky130_fd_sc_hd__o21bai_4.gds", cellname="sky130_fd_sc_hd__o21bai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21bai/sky130_fd_sc_hd__o21bai_4.gds", + cellname="sky130_fd_sc_hd__o21bai_4", + ) + @cell def sky130_fd_sc_hd__dlxbn_1() -> gf.Component: @@ -6424,7 +8245,11 @@ def sky130_fd_sc_hd__dlxbn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlxbn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlxbn/sky130_fd_sc_hd__dlxbn_1.gds", cellname="sky130_fd_sc_hd__dlxbn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlxbn/sky130_fd_sc_hd__dlxbn_1.gds", + cellname="sky130_fd_sc_hd__dlxbn_1", + ) + @cell def sky130_fd_sc_hd__dlxbn_2() -> gf.Component: @@ -6438,7 +8263,11 @@ def sky130_fd_sc_hd__dlxbn_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlxbn_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlxbn/sky130_fd_sc_hd__dlxbn_2.gds", cellname="sky130_fd_sc_hd__dlxbn_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlxbn/sky130_fd_sc_hd__dlxbn_2.gds", + cellname="sky130_fd_sc_hd__dlxbn_2", + ) + @cell def sky130_fd_sc_hd__edfxtp_1() -> gf.Component: @@ -6452,7 +8281,11 @@ def sky130_fd_sc_hd__edfxtp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__edfxtp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/edfxtp/sky130_fd_sc_hd__edfxtp_1.gds", cellname="sky130_fd_sc_hd__edfxtp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/edfxtp/sky130_fd_sc_hd__edfxtp_1.gds", + cellname="sky130_fd_sc_hd__edfxtp_1", + ) + @cell def sky130_fd_sc_hd__dfsbp_1() -> gf.Component: @@ -6466,7 +8299,11 @@ def sky130_fd_sc_hd__dfsbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfsbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfsbp/sky130_fd_sc_hd__dfsbp_1.gds", cellname="sky130_fd_sc_hd__dfsbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfsbp/sky130_fd_sc_hd__dfsbp_1.gds", + cellname="sky130_fd_sc_hd__dfsbp_1", + ) + @cell def sky130_fd_sc_hd__dfsbp_2() -> gf.Component: @@ -6480,7 +8317,11 @@ def sky130_fd_sc_hd__dfsbp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfsbp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfsbp/sky130_fd_sc_hd__dfsbp_2.gds", cellname="sky130_fd_sc_hd__dfsbp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfsbp/sky130_fd_sc_hd__dfsbp_2.gds", + cellname="sky130_fd_sc_hd__dfsbp_2", + ) + @cell def sky130_fd_sc_hd__nor2_1() -> gf.Component: @@ -6494,7 +8335,11 @@ def sky130_fd_sc_hd__nor2_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor2_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_1.gds", cellname="sky130_fd_sc_hd__nor2_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_1.gds", + cellname="sky130_fd_sc_hd__nor2_1", + ) + @cell def sky130_fd_sc_hd__nor2_4() -> gf.Component: @@ -6508,7 +8353,11 @@ def sky130_fd_sc_hd__nor2_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor2_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_4.gds", cellname="sky130_fd_sc_hd__nor2_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_4.gds", + cellname="sky130_fd_sc_hd__nor2_4", + ) + @cell def sky130_fd_sc_hd__nor2_2() -> gf.Component: @@ -6522,7 +8371,11 @@ def sky130_fd_sc_hd__nor2_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor2_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_2.gds", cellname="sky130_fd_sc_hd__nor2_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_2.gds", + cellname="sky130_fd_sc_hd__nor2_2", + ) + @cell def sky130_fd_sc_hd__nor2_8() -> gf.Component: @@ -6536,7 +8389,11 @@ def sky130_fd_sc_hd__nor2_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor2_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_8.gds", cellname="sky130_fd_sc_hd__nor2_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor2/sky130_fd_sc_hd__nor2_8.gds", + cellname="sky130_fd_sc_hd__nor2_8", + ) + @cell def sky130_fd_sc_hd__dfrtp_4() -> gf.Component: @@ -6550,7 +8407,11 @@ def sky130_fd_sc_hd__dfrtp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfrtp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfrtp/sky130_fd_sc_hd__dfrtp_4.gds", cellname="sky130_fd_sc_hd__dfrtp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfrtp/sky130_fd_sc_hd__dfrtp_4.gds", + cellname="sky130_fd_sc_hd__dfrtp_4", + ) + @cell def sky130_fd_sc_hd__dfrtp_2() -> gf.Component: @@ -6564,7 +8425,11 @@ def sky130_fd_sc_hd__dfrtp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfrtp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfrtp/sky130_fd_sc_hd__dfrtp_2.gds", cellname="sky130_fd_sc_hd__dfrtp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfrtp/sky130_fd_sc_hd__dfrtp_2.gds", + cellname="sky130_fd_sc_hd__dfrtp_2", + ) + @cell def sky130_fd_sc_hd__dfrtp_1() -> gf.Component: @@ -6578,7 +8443,11 @@ def sky130_fd_sc_hd__dfrtp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfrtp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfrtp/sky130_fd_sc_hd__dfrtp_1.gds", cellname="sky130_fd_sc_hd__dfrtp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfrtp/sky130_fd_sc_hd__dfrtp_1.gds", + cellname="sky130_fd_sc_hd__dfrtp_1", + ) + @cell def sky130_fd_sc_hd__and4bb_4() -> gf.Component: @@ -6592,7 +8461,11 @@ def sky130_fd_sc_hd__and4bb_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and4bb_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and4bb/sky130_fd_sc_hd__and4bb_4.gds", cellname="sky130_fd_sc_hd__and4bb_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/and4bb/sky130_fd_sc_hd__and4bb_4.gds", + cellname="sky130_fd_sc_hd__and4bb_4", + ) + @cell def sky130_fd_sc_hd__and4bb_2() -> gf.Component: @@ -6606,7 +8479,11 @@ def sky130_fd_sc_hd__and4bb_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and4bb_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and4bb/sky130_fd_sc_hd__and4bb_2.gds", cellname="sky130_fd_sc_hd__and4bb_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/and4bb/sky130_fd_sc_hd__and4bb_2.gds", + cellname="sky130_fd_sc_hd__and4bb_2", + ) + @cell def sky130_fd_sc_hd__and4bb_1() -> gf.Component: @@ -6620,7 +8497,11 @@ def sky130_fd_sc_hd__and4bb_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and4bb_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and4bb/sky130_fd_sc_hd__and4bb_1.gds", cellname="sky130_fd_sc_hd__and4bb_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/and4bb/sky130_fd_sc_hd__and4bb_1.gds", + cellname="sky130_fd_sc_hd__and4bb_1", + ) + @cell def sky130_fd_sc_hd__or3b_4() -> gf.Component: @@ -6634,7 +8515,11 @@ def sky130_fd_sc_hd__or3b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or3b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or3b/sky130_fd_sc_hd__or3b_4.gds", cellname="sky130_fd_sc_hd__or3b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/or3b/sky130_fd_sc_hd__or3b_4.gds", + cellname="sky130_fd_sc_hd__or3b_4", + ) + @cell def sky130_fd_sc_hd__or3b_1() -> gf.Component: @@ -6648,7 +8533,11 @@ def sky130_fd_sc_hd__or3b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or3b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or3b/sky130_fd_sc_hd__or3b_1.gds", cellname="sky130_fd_sc_hd__or3b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/or3b/sky130_fd_sc_hd__or3b_1.gds", + cellname="sky130_fd_sc_hd__or3b_1", + ) + @cell def sky130_fd_sc_hd__or3b_2() -> gf.Component: @@ -6662,7 +8551,11 @@ def sky130_fd_sc_hd__or3b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or3b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or3b/sky130_fd_sc_hd__or3b_2.gds", cellname="sky130_fd_sc_hd__or3b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/or3b/sky130_fd_sc_hd__or3b_2.gds", + cellname="sky130_fd_sc_hd__or3b_2", + ) + @cell def sky130_fd_sc_hd__o311a_2() -> gf.Component: @@ -6676,7 +8569,11 @@ def sky130_fd_sc_hd__o311a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o311a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o311a/sky130_fd_sc_hd__o311a_2.gds", cellname="sky130_fd_sc_hd__o311a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o311a/sky130_fd_sc_hd__o311a_2.gds", + cellname="sky130_fd_sc_hd__o311a_2", + ) + @cell def sky130_fd_sc_hd__o311a_4() -> gf.Component: @@ -6690,7 +8587,11 @@ def sky130_fd_sc_hd__o311a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o311a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o311a/sky130_fd_sc_hd__o311a_4.gds", cellname="sky130_fd_sc_hd__o311a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o311a/sky130_fd_sc_hd__o311a_4.gds", + cellname="sky130_fd_sc_hd__o311a_4", + ) + @cell def sky130_fd_sc_hd__o311a_1() -> gf.Component: @@ -6704,7 +8605,11 @@ def sky130_fd_sc_hd__o311a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o311a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o311a/sky130_fd_sc_hd__o311a_1.gds", cellname="sky130_fd_sc_hd__o311a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o311a/sky130_fd_sc_hd__o311a_1.gds", + cellname="sky130_fd_sc_hd__o311a_1", + ) + @cell def sky130_fd_sc_hd__a21oi_1() -> gf.Component: @@ -6718,7 +8623,11 @@ def sky130_fd_sc_hd__a21oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21oi/sky130_fd_sc_hd__a21oi_1.gds", cellname="sky130_fd_sc_hd__a21oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21oi/sky130_fd_sc_hd__a21oi_1.gds", + cellname="sky130_fd_sc_hd__a21oi_1", + ) + @cell def sky130_fd_sc_hd__a21oi_2() -> gf.Component: @@ -6732,7 +8641,11 @@ def sky130_fd_sc_hd__a21oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21oi/sky130_fd_sc_hd__a21oi_2.gds", cellname="sky130_fd_sc_hd__a21oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21oi/sky130_fd_sc_hd__a21oi_2.gds", + cellname="sky130_fd_sc_hd__a21oi_2", + ) + @cell def sky130_fd_sc_hd__a21oi_4() -> gf.Component: @@ -6746,7 +8659,11 @@ def sky130_fd_sc_hd__a21oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21oi/sky130_fd_sc_hd__a21oi_4.gds", cellname="sky130_fd_sc_hd__a21oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21oi/sky130_fd_sc_hd__a21oi_4.gds", + cellname="sky130_fd_sc_hd__a21oi_4", + ) + @cell def sky130_fd_sc_hd__o221ai_4() -> gf.Component: @@ -6760,7 +8677,11 @@ def sky130_fd_sc_hd__o221ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o221ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o221ai/sky130_fd_sc_hd__o221ai_4.gds", cellname="sky130_fd_sc_hd__o221ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o221ai/sky130_fd_sc_hd__o221ai_4.gds", + cellname="sky130_fd_sc_hd__o221ai_4", + ) + @cell def sky130_fd_sc_hd__o221ai_2() -> gf.Component: @@ -6774,7 +8695,11 @@ def sky130_fd_sc_hd__o221ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o221ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o221ai/sky130_fd_sc_hd__o221ai_2.gds", cellname="sky130_fd_sc_hd__o221ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o221ai/sky130_fd_sc_hd__o221ai_2.gds", + cellname="sky130_fd_sc_hd__o221ai_2", + ) + @cell def sky130_fd_sc_hd__o221ai_1() -> gf.Component: @@ -6788,7 +8713,11 @@ def sky130_fd_sc_hd__o221ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o221ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o221ai/sky130_fd_sc_hd__o221ai_1.gds", cellname="sky130_fd_sc_hd__o221ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o221ai/sky130_fd_sc_hd__o221ai_1.gds", + cellname="sky130_fd_sc_hd__o221ai_1", + ) + @cell def sky130_fd_sc_hd__lpflow_inputiso0n_1() -> gf.Component: @@ -6802,7 +8731,11 @@ def sky130_fd_sc_hd__lpflow_inputiso0n_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0n_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputiso0n/sky130_fd_sc_hd__lpflow_inputiso0n_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputiso0n_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_inputiso0n/sky130_fd_sc_hd__lpflow_inputiso0n_1.gds", + cellname="sky130_fd_sc_hd__lpflow_inputiso0n_1", + ) + @cell def sky130_fd_sc_hd__lpflow_inputiso1n_1() -> gf.Component: @@ -6816,7 +8749,11 @@ def sky130_fd_sc_hd__lpflow_inputiso1n_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1n_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputiso1n/sky130_fd_sc_hd__lpflow_inputiso1n_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputiso1n_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_inputiso1n/sky130_fd_sc_hd__lpflow_inputiso1n_1.gds", + cellname="sky130_fd_sc_hd__lpflow_inputiso1n_1", + ) + @cell def sky130_fd_sc_hd__nand4bb_2() -> gf.Component: @@ -6830,7 +8767,11 @@ def sky130_fd_sc_hd__nand4bb_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand4bb_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand4bb/sky130_fd_sc_hd__nand4bb_2.gds", cellname="sky130_fd_sc_hd__nand4bb_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand4bb/sky130_fd_sc_hd__nand4bb_2.gds", + cellname="sky130_fd_sc_hd__nand4bb_2", + ) + @cell def sky130_fd_sc_hd__nand4bb_4() -> gf.Component: @@ -6844,7 +8785,11 @@ def sky130_fd_sc_hd__nand4bb_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand4bb_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand4bb/sky130_fd_sc_hd__nand4bb_4.gds", cellname="sky130_fd_sc_hd__nand4bb_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand4bb/sky130_fd_sc_hd__nand4bb_4.gds", + cellname="sky130_fd_sc_hd__nand4bb_4", + ) + @cell def sky130_fd_sc_hd__nand4bb_1() -> gf.Component: @@ -6858,7 +8803,11 @@ def sky130_fd_sc_hd__nand4bb_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand4bb_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand4bb/sky130_fd_sc_hd__nand4bb_1.gds", cellname="sky130_fd_sc_hd__nand4bb_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand4bb/sky130_fd_sc_hd__nand4bb_1.gds", + cellname="sky130_fd_sc_hd__nand4bb_1", + ) + @cell def sky130_fd_sc_hd__lpflow_inputisolatch_1() -> gf.Component: @@ -6872,7 +8821,11 @@ def sky130_fd_sc_hd__lpflow_inputisolatch_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_inputisolatch_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputisolatch/sky130_fd_sc_hd__lpflow_inputisolatch_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputisolatch_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_inputisolatch/sky130_fd_sc_hd__lpflow_inputisolatch_1.gds", + cellname="sky130_fd_sc_hd__lpflow_inputisolatch_1", + ) + @cell def sky130_fd_sc_hd__nand3_1() -> gf.Component: @@ -6886,7 +8839,11 @@ def sky130_fd_sc_hd__nand3_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand3_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand3/sky130_fd_sc_hd__nand3_1.gds", cellname="sky130_fd_sc_hd__nand3_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand3/sky130_fd_sc_hd__nand3_1.gds", + cellname="sky130_fd_sc_hd__nand3_1", + ) + @cell def sky130_fd_sc_hd__nand3_4() -> gf.Component: @@ -6900,7 +8857,11 @@ def sky130_fd_sc_hd__nand3_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand3_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand3/sky130_fd_sc_hd__nand3_4.gds", cellname="sky130_fd_sc_hd__nand3_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand3/sky130_fd_sc_hd__nand3_4.gds", + cellname="sky130_fd_sc_hd__nand3_4", + ) + @cell def sky130_fd_sc_hd__nand3_2() -> gf.Component: @@ -6914,7 +8875,11 @@ def sky130_fd_sc_hd__nand3_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand3_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand3/sky130_fd_sc_hd__nand3_2.gds", cellname="sky130_fd_sc_hd__nand3_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand3/sky130_fd_sc_hd__nand3_2.gds", + cellname="sky130_fd_sc_hd__nand3_2", + ) + @cell def sky130_fd_sc_hd__a2bb2oi_1() -> gf.Component: @@ -6928,7 +8893,11 @@ def sky130_fd_sc_hd__a2bb2oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2bb2oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2bb2oi/sky130_fd_sc_hd__a2bb2oi_1.gds", cellname="sky130_fd_sc_hd__a2bb2oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2bb2oi/sky130_fd_sc_hd__a2bb2oi_1.gds", + cellname="sky130_fd_sc_hd__a2bb2oi_1", + ) + @cell def sky130_fd_sc_hd__a2bb2oi_4() -> gf.Component: @@ -6942,7 +8911,11 @@ def sky130_fd_sc_hd__a2bb2oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2bb2oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2bb2oi/sky130_fd_sc_hd__a2bb2oi_4.gds", cellname="sky130_fd_sc_hd__a2bb2oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2bb2oi/sky130_fd_sc_hd__a2bb2oi_4.gds", + cellname="sky130_fd_sc_hd__a2bb2oi_4", + ) + @cell def sky130_fd_sc_hd__a2bb2oi_2() -> gf.Component: @@ -6956,7 +8929,11 @@ def sky130_fd_sc_hd__a2bb2oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2bb2oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2bb2oi/sky130_fd_sc_hd__a2bb2oi_2.gds", cellname="sky130_fd_sc_hd__a2bb2oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2bb2oi/sky130_fd_sc_hd__a2bb2oi_2.gds", + cellname="sky130_fd_sc_hd__a2bb2oi_2", + ) + @cell def sky130_fd_sc_hd__sdfbbp_1() -> gf.Component: @@ -6970,7 +8947,11 @@ def sky130_fd_sc_hd__sdfbbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfbbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfbbp/sky130_fd_sc_hd__sdfbbp_1.gds", cellname="sky130_fd_sc_hd__sdfbbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfbbp/sky130_fd_sc_hd__sdfbbp_1.gds", + cellname="sky130_fd_sc_hd__sdfbbp_1", + ) + @cell def sky130_fd_sc_hd__sedfxtp_4() -> gf.Component: @@ -6984,7 +8965,11 @@ def sky130_fd_sc_hd__sedfxtp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sedfxtp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sedfxtp/sky130_fd_sc_hd__sedfxtp_4.gds", cellname="sky130_fd_sc_hd__sedfxtp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/sedfxtp/sky130_fd_sc_hd__sedfxtp_4.gds", + cellname="sky130_fd_sc_hd__sedfxtp_4", + ) + @cell def sky130_fd_sc_hd__sedfxtp_2() -> gf.Component: @@ -6998,7 +8983,11 @@ def sky130_fd_sc_hd__sedfxtp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sedfxtp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sedfxtp/sky130_fd_sc_hd__sedfxtp_2.gds", cellname="sky130_fd_sc_hd__sedfxtp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sedfxtp/sky130_fd_sc_hd__sedfxtp_2.gds", + cellname="sky130_fd_sc_hd__sedfxtp_2", + ) + @cell def sky130_fd_sc_hd__sedfxtp_1() -> gf.Component: @@ -7012,7 +9001,11 @@ def sky130_fd_sc_hd__sedfxtp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sedfxtp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sedfxtp/sky130_fd_sc_hd__sedfxtp_1.gds", cellname="sky130_fd_sc_hd__sedfxtp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sedfxtp/sky130_fd_sc_hd__sedfxtp_1.gds", + cellname="sky130_fd_sc_hd__sedfxtp_1", + ) + @cell def sky130_fd_sc_hd__nor4bb_2() -> gf.Component: @@ -7026,7 +9019,11 @@ def sky130_fd_sc_hd__nor4bb_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor4bb_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor4bb/sky130_fd_sc_hd__nor4bb_2.gds", cellname="sky130_fd_sc_hd__nor4bb_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor4bb/sky130_fd_sc_hd__nor4bb_2.gds", + cellname="sky130_fd_sc_hd__nor4bb_2", + ) + @cell def sky130_fd_sc_hd__nor4bb_1() -> gf.Component: @@ -7040,7 +9037,11 @@ def sky130_fd_sc_hd__nor4bb_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor4bb_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor4bb/sky130_fd_sc_hd__nor4bb_1.gds", cellname="sky130_fd_sc_hd__nor4bb_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor4bb/sky130_fd_sc_hd__nor4bb_1.gds", + cellname="sky130_fd_sc_hd__nor4bb_1", + ) + @cell def sky130_fd_sc_hd__nor4bb_4() -> gf.Component: @@ -7054,7 +9055,11 @@ def sky130_fd_sc_hd__nor4bb_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor4bb_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor4bb/sky130_fd_sc_hd__nor4bb_4.gds", cellname="sky130_fd_sc_hd__nor4bb_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor4bb/sky130_fd_sc_hd__nor4bb_4.gds", + cellname="sky130_fd_sc_hd__nor4bb_4", + ) + @cell def sky130_fd_sc_hd__buf_8() -> gf.Component: @@ -7068,7 +9073,11 @@ def sky130_fd_sc_hd__buf_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__buf_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_8.gds", cellname="sky130_fd_sc_hd__buf_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_8.gds", + cellname="sky130_fd_sc_hd__buf_8", + ) + @cell def sky130_fd_sc_hd__buf_2() -> gf.Component: @@ -7082,7 +9091,11 @@ def sky130_fd_sc_hd__buf_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__buf_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_2.gds", cellname="sky130_fd_sc_hd__buf_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_2.gds", + cellname="sky130_fd_sc_hd__buf_2", + ) + @cell def sky130_fd_sc_hd__buf_6() -> gf.Component: @@ -7096,7 +9109,11 @@ def sky130_fd_sc_hd__buf_6() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__buf_6() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_6.gds", cellname="sky130_fd_sc_hd__buf_6") + return import_gds( + "src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_6.gds", + cellname="sky130_fd_sc_hd__buf_6", + ) + @cell def sky130_fd_sc_hd__buf_16() -> gf.Component: @@ -7110,7 +9127,11 @@ def sky130_fd_sc_hd__buf_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__buf_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_16.gds", cellname="sky130_fd_sc_hd__buf_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_16.gds", + cellname="sky130_fd_sc_hd__buf_16", + ) + @cell def sky130_fd_sc_hd__buf_1() -> gf.Component: @@ -7124,7 +9145,11 @@ def sky130_fd_sc_hd__buf_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__buf_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_1.gds", cellname="sky130_fd_sc_hd__buf_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_1.gds", + cellname="sky130_fd_sc_hd__buf_1", + ) + @cell def sky130_fd_sc_hd__buf_4() -> gf.Component: @@ -7138,7 +9163,11 @@ def sky130_fd_sc_hd__buf_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__buf_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_4.gds", cellname="sky130_fd_sc_hd__buf_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_4.gds", + cellname="sky130_fd_sc_hd__buf_4", + ) + @cell def sky130_fd_sc_hd__buf_12() -> gf.Component: @@ -7152,7 +9181,11 @@ def sky130_fd_sc_hd__buf_12() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__buf_12() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_12.gds", cellname="sky130_fd_sc_hd__buf_12") + return import_gds( + "src/sky130_fd_sc_hd/cells/buf/sky130_fd_sc_hd__buf_12.gds", + cellname="sky130_fd_sc_hd__buf_12", + ) + @cell def sky130_fd_sc_hd__or2b_1() -> gf.Component: @@ -7166,7 +9199,11 @@ def sky130_fd_sc_hd__or2b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or2b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or2b/sky130_fd_sc_hd__or2b_1.gds", cellname="sky130_fd_sc_hd__or2b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/or2b/sky130_fd_sc_hd__or2b_1.gds", + cellname="sky130_fd_sc_hd__or2b_1", + ) + @cell def sky130_fd_sc_hd__or2b_2() -> gf.Component: @@ -7180,7 +9217,11 @@ def sky130_fd_sc_hd__or2b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or2b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or2b/sky130_fd_sc_hd__or2b_2.gds", cellname="sky130_fd_sc_hd__or2b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/or2b/sky130_fd_sc_hd__or2b_2.gds", + cellname="sky130_fd_sc_hd__or2b_2", + ) + @cell def sky130_fd_sc_hd__or2b_4() -> gf.Component: @@ -7194,7 +9235,11 @@ def sky130_fd_sc_hd__or2b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or2b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or2b/sky130_fd_sc_hd__or2b_4.gds", cellname="sky130_fd_sc_hd__or2b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/or2b/sky130_fd_sc_hd__or2b_4.gds", + cellname="sky130_fd_sc_hd__or2b_4", + ) + @cell def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: @@ -7208,7 +9253,11 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_hl_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_hl_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4.gds", + cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4", + ) + @cell def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: @@ -7222,7 +9271,11 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_hl_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_hl_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1.gds", + cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1", + ) + @cell def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: @@ -7236,7 +9289,11 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_hl_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_hl_isowell_tap/sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2.gds", + cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2", + ) + @cell def sky130_fd_sc_hd__and2_1() -> gf.Component: @@ -7250,7 +9307,11 @@ def sky130_fd_sc_hd__and2_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and2_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_1.gds", cellname="sky130_fd_sc_hd__and2_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_1.gds", + cellname="sky130_fd_sc_hd__and2_1", + ) + @cell def sky130_fd_sc_hd__and2_2() -> gf.Component: @@ -7264,7 +9325,11 @@ def sky130_fd_sc_hd__and2_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and2_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_2.gds", cellname="sky130_fd_sc_hd__and2_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_2.gds", + cellname="sky130_fd_sc_hd__and2_2", + ) + @cell def sky130_fd_sc_hd__and2_4() -> gf.Component: @@ -7278,7 +9343,11 @@ def sky130_fd_sc_hd__and2_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and2_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_4.gds", cellname="sky130_fd_sc_hd__and2_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_4.gds", + cellname="sky130_fd_sc_hd__and2_4", + ) + @cell def sky130_fd_sc_hd__and2_0() -> gf.Component: @@ -7292,7 +9361,11 @@ def sky130_fd_sc_hd__and2_0() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and2_0() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_0.gds", cellname="sky130_fd_sc_hd__and2_0") + return import_gds( + "src/sky130_fd_sc_hd/cells/and2/sky130_fd_sc_hd__and2_0.gds", + cellname="sky130_fd_sc_hd__and2_0", + ) + @cell def sky130_fd_sc_hd__and3b_1() -> gf.Component: @@ -7306,7 +9379,11 @@ def sky130_fd_sc_hd__and3b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and3b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and3b/sky130_fd_sc_hd__and3b_1.gds", cellname="sky130_fd_sc_hd__and3b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/and3b/sky130_fd_sc_hd__and3b_1.gds", + cellname="sky130_fd_sc_hd__and3b_1", + ) + @cell def sky130_fd_sc_hd__and3b_2() -> gf.Component: @@ -7320,7 +9397,11 @@ def sky130_fd_sc_hd__and3b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and3b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and3b/sky130_fd_sc_hd__and3b_2.gds", cellname="sky130_fd_sc_hd__and3b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/and3b/sky130_fd_sc_hd__and3b_2.gds", + cellname="sky130_fd_sc_hd__and3b_2", + ) + @cell def sky130_fd_sc_hd__and3b_4() -> gf.Component: @@ -7334,7 +9415,11 @@ def sky130_fd_sc_hd__and3b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and3b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and3b/sky130_fd_sc_hd__and3b_4.gds", cellname="sky130_fd_sc_hd__and3b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/and3b/sky130_fd_sc_hd__and3b_4.gds", + cellname="sky130_fd_sc_hd__and3b_4", + ) + @cell def sky130_fd_sc_hd__a32o_1() -> gf.Component: @@ -7348,7 +9433,11 @@ def sky130_fd_sc_hd__a32o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a32o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a32o/sky130_fd_sc_hd__a32o_1.gds", cellname="sky130_fd_sc_hd__a32o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a32o/sky130_fd_sc_hd__a32o_1.gds", + cellname="sky130_fd_sc_hd__a32o_1", + ) + @cell def sky130_fd_sc_hd__a32o_4() -> gf.Component: @@ -7362,7 +9451,11 @@ def sky130_fd_sc_hd__a32o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a32o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a32o/sky130_fd_sc_hd__a32o_4.gds", cellname="sky130_fd_sc_hd__a32o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a32o/sky130_fd_sc_hd__a32o_4.gds", + cellname="sky130_fd_sc_hd__a32o_4", + ) + @cell def sky130_fd_sc_hd__a32o_2() -> gf.Component: @@ -7376,7 +9469,11 @@ def sky130_fd_sc_hd__a32o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a32o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a32o/sky130_fd_sc_hd__a32o_2.gds", cellname="sky130_fd_sc_hd__a32o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a32o/sky130_fd_sc_hd__a32o_2.gds", + cellname="sky130_fd_sc_hd__a32o_2", + ) + @cell def sky130_fd_sc_hd__nand4_4() -> gf.Component: @@ -7390,7 +9487,11 @@ def sky130_fd_sc_hd__nand4_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand4_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand4/sky130_fd_sc_hd__nand4_4.gds", cellname="sky130_fd_sc_hd__nand4_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand4/sky130_fd_sc_hd__nand4_4.gds", + cellname="sky130_fd_sc_hd__nand4_4", + ) + @cell def sky130_fd_sc_hd__nand4_1() -> gf.Component: @@ -7404,7 +9505,11 @@ def sky130_fd_sc_hd__nand4_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand4_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand4/sky130_fd_sc_hd__nand4_1.gds", cellname="sky130_fd_sc_hd__nand4_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand4/sky130_fd_sc_hd__nand4_1.gds", + cellname="sky130_fd_sc_hd__nand4_1", + ) + @cell def sky130_fd_sc_hd__nand4_2() -> gf.Component: @@ -7418,7 +9523,11 @@ def sky130_fd_sc_hd__nand4_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand4_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand4/sky130_fd_sc_hd__nand4_2.gds", cellname="sky130_fd_sc_hd__nand4_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand4/sky130_fd_sc_hd__nand4_2.gds", + cellname="sky130_fd_sc_hd__nand4_2", + ) + @cell def sky130_fd_sc_hd__nand2b_1() -> gf.Component: @@ -7432,7 +9541,11 @@ def sky130_fd_sc_hd__nand2b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand2b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand2b/sky130_fd_sc_hd__nand2b_1.gds", cellname="sky130_fd_sc_hd__nand2b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand2b/sky130_fd_sc_hd__nand2b_1.gds", + cellname="sky130_fd_sc_hd__nand2b_1", + ) + @cell def sky130_fd_sc_hd__nand2b_2() -> gf.Component: @@ -7446,7 +9559,11 @@ def sky130_fd_sc_hd__nand2b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand2b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand2b/sky130_fd_sc_hd__nand2b_2.gds", cellname="sky130_fd_sc_hd__nand2b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand2b/sky130_fd_sc_hd__nand2b_2.gds", + cellname="sky130_fd_sc_hd__nand2b_2", + ) + @cell def sky130_fd_sc_hd__nand2b_4() -> gf.Component: @@ -7460,7 +9577,11 @@ def sky130_fd_sc_hd__nand2b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand2b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand2b/sky130_fd_sc_hd__nand2b_4.gds", cellname="sky130_fd_sc_hd__nand2b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand2b/sky130_fd_sc_hd__nand2b_4.gds", + cellname="sky130_fd_sc_hd__nand2b_4", + ) + @cell def sky130_fd_sc_hd__lpflow_isobufsrc_8() -> gf.Component: @@ -7474,7 +9595,11 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_8.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_8.gds", + cellname="sky130_fd_sc_hd__lpflow_isobufsrc_8", + ) + @cell def sky130_fd_sc_hd__lpflow_isobufsrc_4() -> gf.Component: @@ -7488,7 +9613,11 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_4.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_4.gds", + cellname="sky130_fd_sc_hd__lpflow_isobufsrc_4", + ) + @cell def sky130_fd_sc_hd__lpflow_isobufsrc_2() -> gf.Component: @@ -7502,7 +9631,11 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_2.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_2.gds", + cellname="sky130_fd_sc_hd__lpflow_isobufsrc_2", + ) + @cell def sky130_fd_sc_hd__lpflow_isobufsrc_16() -> gf.Component: @@ -7516,7 +9649,11 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_16.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_16.gds", + cellname="sky130_fd_sc_hd__lpflow_isobufsrc_16", + ) + @cell def sky130_fd_sc_hd__lpflow_isobufsrc_1() -> gf.Component: @@ -7530,7 +9667,11 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_1.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrc_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_isobufsrc/sky130_fd_sc_hd__lpflow_isobufsrc_1.gds", + cellname="sky130_fd_sc_hd__lpflow_isobufsrc_1", + ) + @cell def sky130_fd_sc_hd__and3_4() -> gf.Component: @@ -7544,7 +9685,11 @@ def sky130_fd_sc_hd__and3_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and3_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and3/sky130_fd_sc_hd__and3_4.gds", cellname="sky130_fd_sc_hd__and3_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/and3/sky130_fd_sc_hd__and3_4.gds", + cellname="sky130_fd_sc_hd__and3_4", + ) + @cell def sky130_fd_sc_hd__and3_1() -> gf.Component: @@ -7558,7 +9703,11 @@ def sky130_fd_sc_hd__and3_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and3_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and3/sky130_fd_sc_hd__and3_1.gds", cellname="sky130_fd_sc_hd__and3_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/and3/sky130_fd_sc_hd__and3_1.gds", + cellname="sky130_fd_sc_hd__and3_1", + ) + @cell def sky130_fd_sc_hd__and3_2() -> gf.Component: @@ -7572,7 +9721,11 @@ def sky130_fd_sc_hd__and3_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and3_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and3/sky130_fd_sc_hd__and3_2.gds", cellname="sky130_fd_sc_hd__and3_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/and3/sky130_fd_sc_hd__and3_2.gds", + cellname="sky130_fd_sc_hd__and3_2", + ) + @cell def sky130_fd_sc_hd__o2111a_1() -> gf.Component: @@ -7586,7 +9739,11 @@ def sky130_fd_sc_hd__o2111a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2111a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2111a/sky130_fd_sc_hd__o2111a_1.gds", cellname="sky130_fd_sc_hd__o2111a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2111a/sky130_fd_sc_hd__o2111a_1.gds", + cellname="sky130_fd_sc_hd__o2111a_1", + ) + @cell def sky130_fd_sc_hd__o2111a_4() -> gf.Component: @@ -7600,7 +9757,11 @@ def sky130_fd_sc_hd__o2111a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2111a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2111a/sky130_fd_sc_hd__o2111a_4.gds", cellname="sky130_fd_sc_hd__o2111a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2111a/sky130_fd_sc_hd__o2111a_4.gds", + cellname="sky130_fd_sc_hd__o2111a_4", + ) + @cell def sky130_fd_sc_hd__o2111a_2() -> gf.Component: @@ -7614,7 +9775,11 @@ def sky130_fd_sc_hd__o2111a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2111a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2111a/sky130_fd_sc_hd__o2111a_2.gds", cellname="sky130_fd_sc_hd__o2111a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2111a/sky130_fd_sc_hd__o2111a_2.gds", + cellname="sky130_fd_sc_hd__o2111a_2", + ) + @cell def sky130_fd_sc_hd__a311o_4() -> gf.Component: @@ -7628,7 +9793,11 @@ def sky130_fd_sc_hd__a311o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a311o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a311o/sky130_fd_sc_hd__a311o_4.gds", cellname="sky130_fd_sc_hd__a311o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a311o/sky130_fd_sc_hd__a311o_4.gds", + cellname="sky130_fd_sc_hd__a311o_4", + ) + @cell def sky130_fd_sc_hd__a311o_2() -> gf.Component: @@ -7642,7 +9811,11 @@ def sky130_fd_sc_hd__a311o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a311o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a311o/sky130_fd_sc_hd__a311o_2.gds", cellname="sky130_fd_sc_hd__a311o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a311o/sky130_fd_sc_hd__a311o_2.gds", + cellname="sky130_fd_sc_hd__a311o_2", + ) + @cell def sky130_fd_sc_hd__a311o_1() -> gf.Component: @@ -7656,7 +9829,11 @@ def sky130_fd_sc_hd__a311o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a311o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a311o/sky130_fd_sc_hd__a311o_1.gds", cellname="sky130_fd_sc_hd__a311o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a311o/sky130_fd_sc_hd__a311o_1.gds", + cellname="sky130_fd_sc_hd__a311o_1", + ) + @cell def sky130_fd_sc_hd__fa_4() -> gf.Component: @@ -7670,7 +9847,11 @@ def sky130_fd_sc_hd__fa_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fa_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fa/sky130_fd_sc_hd__fa_4.gds", cellname="sky130_fd_sc_hd__fa_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/fa/sky130_fd_sc_hd__fa_4.gds", + cellname="sky130_fd_sc_hd__fa_4", + ) + @cell def sky130_fd_sc_hd__fa_1() -> gf.Component: @@ -7684,7 +9865,11 @@ def sky130_fd_sc_hd__fa_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fa_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fa/sky130_fd_sc_hd__fa_1.gds", cellname="sky130_fd_sc_hd__fa_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/fa/sky130_fd_sc_hd__fa_1.gds", + cellname="sky130_fd_sc_hd__fa_1", + ) + @cell def sky130_fd_sc_hd__fa_2() -> gf.Component: @@ -7698,7 +9883,11 @@ def sky130_fd_sc_hd__fa_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fa_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fa/sky130_fd_sc_hd__fa_2.gds", cellname="sky130_fd_sc_hd__fa_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/fa/sky130_fd_sc_hd__fa_2.gds", + cellname="sky130_fd_sc_hd__fa_2", + ) + @cell def sky130_fd_sc_hd__o32ai_1() -> gf.Component: @@ -7712,7 +9901,11 @@ def sky130_fd_sc_hd__o32ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o32ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o32ai/sky130_fd_sc_hd__o32ai_1.gds", cellname="sky130_fd_sc_hd__o32ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o32ai/sky130_fd_sc_hd__o32ai_1.gds", + cellname="sky130_fd_sc_hd__o32ai_1", + ) + @cell def sky130_fd_sc_hd__o32ai_2() -> gf.Component: @@ -7726,7 +9919,11 @@ def sky130_fd_sc_hd__o32ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o32ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o32ai/sky130_fd_sc_hd__o32ai_2.gds", cellname="sky130_fd_sc_hd__o32ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o32ai/sky130_fd_sc_hd__o32ai_2.gds", + cellname="sky130_fd_sc_hd__o32ai_2", + ) + @cell def sky130_fd_sc_hd__o32ai_4() -> gf.Component: @@ -7740,7 +9937,11 @@ def sky130_fd_sc_hd__o32ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o32ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o32ai/sky130_fd_sc_hd__o32ai_4.gds", cellname="sky130_fd_sc_hd__o32ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o32ai/sky130_fd_sc_hd__o32ai_4.gds", + cellname="sky130_fd_sc_hd__o32ai_4", + ) + @cell def sky130_fd_sc_hd__a2bb2o_4() -> gf.Component: @@ -7754,7 +9955,11 @@ def sky130_fd_sc_hd__a2bb2o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2bb2o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2bb2o/sky130_fd_sc_hd__a2bb2o_4.gds", cellname="sky130_fd_sc_hd__a2bb2o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2bb2o/sky130_fd_sc_hd__a2bb2o_4.gds", + cellname="sky130_fd_sc_hd__a2bb2o_4", + ) + @cell def sky130_fd_sc_hd__a2bb2o_1() -> gf.Component: @@ -7768,7 +9973,11 @@ def sky130_fd_sc_hd__a2bb2o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2bb2o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2bb2o/sky130_fd_sc_hd__a2bb2o_1.gds", cellname="sky130_fd_sc_hd__a2bb2o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2bb2o/sky130_fd_sc_hd__a2bb2o_1.gds", + cellname="sky130_fd_sc_hd__a2bb2o_1", + ) + @cell def sky130_fd_sc_hd__a2bb2o_2() -> gf.Component: @@ -7782,7 +9991,11 @@ def sky130_fd_sc_hd__a2bb2o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2bb2o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2bb2o/sky130_fd_sc_hd__a2bb2o_2.gds", cellname="sky130_fd_sc_hd__a2bb2o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2bb2o/sky130_fd_sc_hd__a2bb2o_2.gds", + cellname="sky130_fd_sc_hd__a2bb2o_2", + ) + @cell def sky130_fd_sc_hd__lpflow_bleeder_1() -> gf.Component: @@ -7796,7 +10009,11 @@ def sky130_fd_sc_hd__lpflow_bleeder_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_bleeder_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_bleeder/sky130_fd_sc_hd__lpflow_bleeder_1.gds", cellname="sky130_fd_sc_hd__lpflow_bleeder_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_bleeder/sky130_fd_sc_hd__lpflow_bleeder_1.gds", + cellname="sky130_fd_sc_hd__lpflow_bleeder_1", + ) + @cell def sky130_fd_sc_hd__sedfxbp_1() -> gf.Component: @@ -7810,7 +10027,11 @@ def sky130_fd_sc_hd__sedfxbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sedfxbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sedfxbp/sky130_fd_sc_hd__sedfxbp_1.gds", cellname="sky130_fd_sc_hd__sedfxbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sedfxbp/sky130_fd_sc_hd__sedfxbp_1.gds", + cellname="sky130_fd_sc_hd__sedfxbp_1", + ) + @cell def sky130_fd_sc_hd__sedfxbp_2() -> gf.Component: @@ -7824,7 +10045,11 @@ def sky130_fd_sc_hd__sedfxbp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sedfxbp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sedfxbp/sky130_fd_sc_hd__sedfxbp_2.gds", cellname="sky130_fd_sc_hd__sedfxbp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sedfxbp/sky130_fd_sc_hd__sedfxbp_2.gds", + cellname="sky130_fd_sc_hd__sedfxbp_2", + ) + @cell def sky130_fd_sc_hd__nor3b_2() -> gf.Component: @@ -7838,7 +10063,11 @@ def sky130_fd_sc_hd__nor3b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor3b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor3b/sky130_fd_sc_hd__nor3b_2.gds", cellname="sky130_fd_sc_hd__nor3b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor3b/sky130_fd_sc_hd__nor3b_2.gds", + cellname="sky130_fd_sc_hd__nor3b_2", + ) + @cell def sky130_fd_sc_hd__nor3b_1() -> gf.Component: @@ -7852,7 +10081,11 @@ def sky130_fd_sc_hd__nor3b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor3b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor3b/sky130_fd_sc_hd__nor3b_1.gds", cellname="sky130_fd_sc_hd__nor3b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor3b/sky130_fd_sc_hd__nor3b_1.gds", + cellname="sky130_fd_sc_hd__nor3b_1", + ) + @cell def sky130_fd_sc_hd__nor3b_4() -> gf.Component: @@ -7866,7 +10099,11 @@ def sky130_fd_sc_hd__nor3b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor3b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor3b/sky130_fd_sc_hd__nor3b_4.gds", cellname="sky130_fd_sc_hd__nor3b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor3b/sky130_fd_sc_hd__nor3b_4.gds", + cellname="sky130_fd_sc_hd__nor3b_4", + ) + @cell def sky130_fd_sc_hd__a31oi_2() -> gf.Component: @@ -7880,7 +10117,11 @@ def sky130_fd_sc_hd__a31oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a31oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a31oi/sky130_fd_sc_hd__a31oi_2.gds", cellname="sky130_fd_sc_hd__a31oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a31oi/sky130_fd_sc_hd__a31oi_2.gds", + cellname="sky130_fd_sc_hd__a31oi_2", + ) + @cell def sky130_fd_sc_hd__a31oi_4() -> gf.Component: @@ -7894,7 +10135,11 @@ def sky130_fd_sc_hd__a31oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a31oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a31oi/sky130_fd_sc_hd__a31oi_4.gds", cellname="sky130_fd_sc_hd__a31oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a31oi/sky130_fd_sc_hd__a31oi_4.gds", + cellname="sky130_fd_sc_hd__a31oi_4", + ) + @cell def sky130_fd_sc_hd__a31oi_1() -> gf.Component: @@ -7908,7 +10153,11 @@ def sky130_fd_sc_hd__a31oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a31oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a31oi/sky130_fd_sc_hd__a31oi_1.gds", cellname="sky130_fd_sc_hd__a31oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a31oi/sky130_fd_sc_hd__a31oi_1.gds", + cellname="sky130_fd_sc_hd__a31oi_1", + ) + @cell def sky130_fd_sc_hd__xor3_4() -> gf.Component: @@ -7922,7 +10171,11 @@ def sky130_fd_sc_hd__xor3_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xor3_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xor3/sky130_fd_sc_hd__xor3_4.gds", cellname="sky130_fd_sc_hd__xor3_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/xor3/sky130_fd_sc_hd__xor3_4.gds", + cellname="sky130_fd_sc_hd__xor3_4", + ) + @cell def sky130_fd_sc_hd__xor3_2() -> gf.Component: @@ -7936,7 +10189,11 @@ def sky130_fd_sc_hd__xor3_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xor3_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xor3/sky130_fd_sc_hd__xor3_2.gds", cellname="sky130_fd_sc_hd__xor3_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/xor3/sky130_fd_sc_hd__xor3_2.gds", + cellname="sky130_fd_sc_hd__xor3_2", + ) + @cell def sky130_fd_sc_hd__xor3_1() -> gf.Component: @@ -7950,7 +10207,11 @@ def sky130_fd_sc_hd__xor3_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xor3_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xor3/sky130_fd_sc_hd__xor3_1.gds", cellname="sky130_fd_sc_hd__xor3_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/xor3/sky130_fd_sc_hd__xor3_1.gds", + cellname="sky130_fd_sc_hd__xor3_1", + ) + @cell def sky130_fd_sc_hd__o41ai_1() -> gf.Component: @@ -7964,7 +10225,11 @@ def sky130_fd_sc_hd__o41ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o41ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o41ai/sky130_fd_sc_hd__o41ai_1.gds", cellname="sky130_fd_sc_hd__o41ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o41ai/sky130_fd_sc_hd__o41ai_1.gds", + cellname="sky130_fd_sc_hd__o41ai_1", + ) + @cell def sky130_fd_sc_hd__o41ai_4() -> gf.Component: @@ -7978,7 +10243,11 @@ def sky130_fd_sc_hd__o41ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o41ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o41ai/sky130_fd_sc_hd__o41ai_4.gds", cellname="sky130_fd_sc_hd__o41ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o41ai/sky130_fd_sc_hd__o41ai_4.gds", + cellname="sky130_fd_sc_hd__o41ai_4", + ) + @cell def sky130_fd_sc_hd__o41ai_2() -> gf.Component: @@ -7992,7 +10261,11 @@ def sky130_fd_sc_hd__o41ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o41ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o41ai/sky130_fd_sc_hd__o41ai_2.gds", cellname="sky130_fd_sc_hd__o41ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o41ai/sky130_fd_sc_hd__o41ai_2.gds", + cellname="sky130_fd_sc_hd__o41ai_2", + ) + @cell def sky130_fd_sc_hd__fill_4() -> gf.Component: @@ -8006,7 +10279,11 @@ def sky130_fd_sc_hd__fill_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fill_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_4.gds", cellname="sky130_fd_sc_hd__fill_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_4.gds", + cellname="sky130_fd_sc_hd__fill_4", + ) + @cell def sky130_fd_sc_hd__fill_1() -> gf.Component: @@ -8020,7 +10297,11 @@ def sky130_fd_sc_hd__fill_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fill_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_1.gds", cellname="sky130_fd_sc_hd__fill_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_1.gds", + cellname="sky130_fd_sc_hd__fill_1", + ) + @cell def sky130_fd_sc_hd__fill_8() -> gf.Component: @@ -8034,7 +10315,11 @@ def sky130_fd_sc_hd__fill_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fill_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_8.gds", cellname="sky130_fd_sc_hd__fill_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_8.gds", + cellname="sky130_fd_sc_hd__fill_8", + ) + @cell def sky130_fd_sc_hd__fill_2() -> gf.Component: @@ -8048,7 +10333,11 @@ def sky130_fd_sc_hd__fill_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fill_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_2.gds", cellname="sky130_fd_sc_hd__fill_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/fill/sky130_fd_sc_hd__fill_2.gds", + cellname="sky130_fd_sc_hd__fill_2", + ) + @cell def sky130_fd_sc_hd__sdfrtn_1() -> gf.Component: @@ -8062,7 +10351,11 @@ def sky130_fd_sc_hd__sdfrtn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfrtn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfrtn/sky130_fd_sc_hd__sdfrtn_1.gds", cellname="sky130_fd_sc_hd__sdfrtn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfrtn/sky130_fd_sc_hd__sdfrtn_1.gds", + cellname="sky130_fd_sc_hd__sdfrtn_1", + ) + @cell def sky130_fd_sc_hd__decap_3() -> gf.Component: @@ -8076,7 +10369,11 @@ def sky130_fd_sc_hd__decap_3() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__decap_3() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_3.gds", cellname="sky130_fd_sc_hd__decap_3") + return import_gds( + "src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_3.gds", + cellname="sky130_fd_sc_hd__decap_3", + ) + @cell def sky130_fd_sc_hd__decap_8() -> gf.Component: @@ -8090,7 +10387,11 @@ def sky130_fd_sc_hd__decap_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__decap_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_8.gds", cellname="sky130_fd_sc_hd__decap_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_8.gds", + cellname="sky130_fd_sc_hd__decap_8", + ) + @cell def sky130_fd_sc_hd__decap_4() -> gf.Component: @@ -8104,7 +10405,11 @@ def sky130_fd_sc_hd__decap_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__decap_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_4.gds", cellname="sky130_fd_sc_hd__decap_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_4.gds", + cellname="sky130_fd_sc_hd__decap_4", + ) + @cell def sky130_fd_sc_hd__decap_12() -> gf.Component: @@ -8118,7 +10423,11 @@ def sky130_fd_sc_hd__decap_12() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__decap_12() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_12.gds", cellname="sky130_fd_sc_hd__decap_12") + return import_gds( + "src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_12.gds", + cellname="sky130_fd_sc_hd__decap_12", + ) + @cell def sky130_fd_sc_hd__decap_6() -> gf.Component: @@ -8132,7 +10441,11 @@ def sky130_fd_sc_hd__decap_6() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__decap_6() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_6.gds", cellname="sky130_fd_sc_hd__decap_6") + return import_gds( + "src/sky130_fd_sc_hd/cells/decap/sky130_fd_sc_hd__decap_6.gds", + cellname="sky130_fd_sc_hd__decap_6", + ) + @cell def sky130_fd_sc_hd__inv_1() -> gf.Component: @@ -8146,7 +10459,11 @@ def sky130_fd_sc_hd__inv_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__inv_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_1.gds", cellname="sky130_fd_sc_hd__inv_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_1.gds", + cellname="sky130_fd_sc_hd__inv_1", + ) + @cell def sky130_fd_sc_hd__inv_12() -> gf.Component: @@ -8160,7 +10477,11 @@ def sky130_fd_sc_hd__inv_12() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__inv_12() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_12.gds", cellname="sky130_fd_sc_hd__inv_12") + return import_gds( + "src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_12.gds", + cellname="sky130_fd_sc_hd__inv_12", + ) + @cell def sky130_fd_sc_hd__inv_6() -> gf.Component: @@ -8174,7 +10495,11 @@ def sky130_fd_sc_hd__inv_6() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__inv_6() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_6.gds", cellname="sky130_fd_sc_hd__inv_6") + return import_gds( + "src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_6.gds", + cellname="sky130_fd_sc_hd__inv_6", + ) + @cell def sky130_fd_sc_hd__inv_16() -> gf.Component: @@ -8188,7 +10513,11 @@ def sky130_fd_sc_hd__inv_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__inv_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_16.gds", cellname="sky130_fd_sc_hd__inv_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_16.gds", + cellname="sky130_fd_sc_hd__inv_16", + ) + @cell def sky130_fd_sc_hd__inv_4() -> gf.Component: @@ -8202,7 +10531,11 @@ def sky130_fd_sc_hd__inv_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__inv_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_4.gds", cellname="sky130_fd_sc_hd__inv_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_4.gds", + cellname="sky130_fd_sc_hd__inv_4", + ) + @cell def sky130_fd_sc_hd__inv_8() -> gf.Component: @@ -8216,7 +10549,11 @@ def sky130_fd_sc_hd__inv_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__inv_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_8.gds", cellname="sky130_fd_sc_hd__inv_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_8.gds", + cellname="sky130_fd_sc_hd__inv_8", + ) + @cell def sky130_fd_sc_hd__inv_2() -> gf.Component: @@ -8230,7 +10567,11 @@ def sky130_fd_sc_hd__inv_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__inv_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_2.gds", cellname="sky130_fd_sc_hd__inv_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/inv/sky130_fd_sc_hd__inv_2.gds", + cellname="sky130_fd_sc_hd__inv_2", + ) + @cell def sky130_fd_sc_hd__macro_sparecell() -> gf.Component: @@ -8244,7 +10585,11 @@ def sky130_fd_sc_hd__macro_sparecell() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__macro_sparecell() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/macro_sparecell/sky130_fd_sc_hd__macro_sparecell.gds", cellname="sky130_fd_sc_hd__macro_sparecell") + return import_gds( + "src/sky130_fd_sc_hd/cells/macro_sparecell/sky130_fd_sc_hd__macro_sparecell.gds", + cellname="sky130_fd_sc_hd__macro_sparecell", + ) + @cell def sky130_fd_sc_hd__and2b_4() -> gf.Component: @@ -8258,7 +10603,11 @@ def sky130_fd_sc_hd__and2b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and2b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and2b/sky130_fd_sc_hd__and2b_4.gds", cellname="sky130_fd_sc_hd__and2b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/and2b/sky130_fd_sc_hd__and2b_4.gds", + cellname="sky130_fd_sc_hd__and2b_4", + ) + @cell def sky130_fd_sc_hd__and2b_1() -> gf.Component: @@ -8272,7 +10621,11 @@ def sky130_fd_sc_hd__and2b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and2b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and2b/sky130_fd_sc_hd__and2b_1.gds", cellname="sky130_fd_sc_hd__and2b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/and2b/sky130_fd_sc_hd__and2b_1.gds", + cellname="sky130_fd_sc_hd__and2b_1", + ) + @cell def sky130_fd_sc_hd__and2b_2() -> gf.Component: @@ -8286,7 +10639,11 @@ def sky130_fd_sc_hd__and2b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and2b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and2b/sky130_fd_sc_hd__and2b_2.gds", cellname="sky130_fd_sc_hd__and2b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/and2b/sky130_fd_sc_hd__and2b_2.gds", + cellname="sky130_fd_sc_hd__and2b_2", + ) + @cell def sky130_fd_sc_hd__nand3b_2() -> gf.Component: @@ -8300,7 +10657,11 @@ def sky130_fd_sc_hd__nand3b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand3b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand3b/sky130_fd_sc_hd__nand3b_2.gds", cellname="sky130_fd_sc_hd__nand3b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand3b/sky130_fd_sc_hd__nand3b_2.gds", + cellname="sky130_fd_sc_hd__nand3b_2", + ) + @cell def sky130_fd_sc_hd__nand3b_1() -> gf.Component: @@ -8314,7 +10675,11 @@ def sky130_fd_sc_hd__nand3b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand3b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand3b/sky130_fd_sc_hd__nand3b_1.gds", cellname="sky130_fd_sc_hd__nand3b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand3b/sky130_fd_sc_hd__nand3b_1.gds", + cellname="sky130_fd_sc_hd__nand3b_1", + ) + @cell def sky130_fd_sc_hd__nand3b_4() -> gf.Component: @@ -8328,7 +10693,11 @@ def sky130_fd_sc_hd__nand3b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand3b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand3b/sky130_fd_sc_hd__nand3b_4.gds", cellname="sky130_fd_sc_hd__nand3b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand3b/sky130_fd_sc_hd__nand3b_4.gds", + cellname="sky130_fd_sc_hd__nand3b_4", + ) + @cell def sky130_fd_sc_hd__dlrtp_1() -> gf.Component: @@ -8342,7 +10711,11 @@ def sky130_fd_sc_hd__dlrtp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrtp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrtp/sky130_fd_sc_hd__dlrtp_1.gds", cellname="sky130_fd_sc_hd__dlrtp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrtp/sky130_fd_sc_hd__dlrtp_1.gds", + cellname="sky130_fd_sc_hd__dlrtp_1", + ) + @cell def sky130_fd_sc_hd__dlrtp_4() -> gf.Component: @@ -8356,7 +10729,11 @@ def sky130_fd_sc_hd__dlrtp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrtp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrtp/sky130_fd_sc_hd__dlrtp_4.gds", cellname="sky130_fd_sc_hd__dlrtp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrtp/sky130_fd_sc_hd__dlrtp_4.gds", + cellname="sky130_fd_sc_hd__dlrtp_4", + ) + @cell def sky130_fd_sc_hd__dlrtp_2() -> gf.Component: @@ -8370,7 +10747,11 @@ def sky130_fd_sc_hd__dlrtp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrtp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrtp/sky130_fd_sc_hd__dlrtp_2.gds", cellname="sky130_fd_sc_hd__dlrtp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrtp/sky130_fd_sc_hd__dlrtp_2.gds", + cellname="sky130_fd_sc_hd__dlrtp_2", + ) + @cell def sky130_fd_sc_hd__dfbbp_1() -> gf.Component: @@ -8384,7 +10765,11 @@ def sky130_fd_sc_hd__dfbbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfbbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfbbp/sky130_fd_sc_hd__dfbbp_1.gds", cellname="sky130_fd_sc_hd__dfbbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfbbp/sky130_fd_sc_hd__dfbbp_1.gds", + cellname="sky130_fd_sc_hd__dfbbp_1", + ) + @cell def sky130_fd_sc_hd__probe_p_8() -> gf.Component: @@ -8398,7 +10783,11 @@ def sky130_fd_sc_hd__probe_p_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__probe_p_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/probe_p/sky130_fd_sc_hd__probe_p_8.gds", cellname="sky130_fd_sc_hd__probe_p_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/probe_p/sky130_fd_sc_hd__probe_p_8.gds", + cellname="sky130_fd_sc_hd__probe_p_8", + ) + @cell def sky130_fd_sc_hd__dlclkp_1() -> gf.Component: @@ -8412,7 +10801,11 @@ def sky130_fd_sc_hd__dlclkp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlclkp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlclkp/sky130_fd_sc_hd__dlclkp_1.gds", cellname="sky130_fd_sc_hd__dlclkp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlclkp/sky130_fd_sc_hd__dlclkp_1.gds", + cellname="sky130_fd_sc_hd__dlclkp_1", + ) + @cell def sky130_fd_sc_hd__dlclkp_4() -> gf.Component: @@ -8426,7 +10819,11 @@ def sky130_fd_sc_hd__dlclkp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlclkp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlclkp/sky130_fd_sc_hd__dlclkp_4.gds", cellname="sky130_fd_sc_hd__dlclkp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlclkp/sky130_fd_sc_hd__dlclkp_4.gds", + cellname="sky130_fd_sc_hd__dlclkp_4", + ) + @cell def sky130_fd_sc_hd__dlclkp_2() -> gf.Component: @@ -8440,7 +10837,11 @@ def sky130_fd_sc_hd__dlclkp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlclkp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlclkp/sky130_fd_sc_hd__dlclkp_2.gds", cellname="sky130_fd_sc_hd__dlclkp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlclkp/sky130_fd_sc_hd__dlclkp_2.gds", + cellname="sky130_fd_sc_hd__dlclkp_2", + ) + @cell def sky130_fd_sc_hd__or4_2() -> gf.Component: @@ -8454,7 +10855,11 @@ def sky130_fd_sc_hd__or4_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or4_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or4/sky130_fd_sc_hd__or4_2.gds", cellname="sky130_fd_sc_hd__or4_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/or4/sky130_fd_sc_hd__or4_2.gds", + cellname="sky130_fd_sc_hd__or4_2", + ) + @cell def sky130_fd_sc_hd__or4_1() -> gf.Component: @@ -8468,7 +10873,11 @@ def sky130_fd_sc_hd__or4_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or4_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or4/sky130_fd_sc_hd__or4_1.gds", cellname="sky130_fd_sc_hd__or4_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/or4/sky130_fd_sc_hd__or4_1.gds", + cellname="sky130_fd_sc_hd__or4_1", + ) + @cell def sky130_fd_sc_hd__or4_4() -> gf.Component: @@ -8482,7 +10891,11 @@ def sky130_fd_sc_hd__or4_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or4_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or4/sky130_fd_sc_hd__or4_4.gds", cellname="sky130_fd_sc_hd__or4_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/or4/sky130_fd_sc_hd__or4_4.gds", + cellname="sky130_fd_sc_hd__or4_4", + ) + @cell def sky130_fd_sc_hd__o221a_1() -> gf.Component: @@ -8496,7 +10909,11 @@ def sky130_fd_sc_hd__o221a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o221a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o221a/sky130_fd_sc_hd__o221a_1.gds", cellname="sky130_fd_sc_hd__o221a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o221a/sky130_fd_sc_hd__o221a_1.gds", + cellname="sky130_fd_sc_hd__o221a_1", + ) + @cell def sky130_fd_sc_hd__o221a_4() -> gf.Component: @@ -8510,7 +10927,11 @@ def sky130_fd_sc_hd__o221a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o221a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o221a/sky130_fd_sc_hd__o221a_4.gds", cellname="sky130_fd_sc_hd__o221a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o221a/sky130_fd_sc_hd__o221a_4.gds", + cellname="sky130_fd_sc_hd__o221a_4", + ) + @cell def sky130_fd_sc_hd__o221a_2() -> gf.Component: @@ -8524,7 +10945,11 @@ def sky130_fd_sc_hd__o221a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o221a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o221a/sky130_fd_sc_hd__o221a_2.gds", cellname="sky130_fd_sc_hd__o221a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o221a/sky130_fd_sc_hd__o221a_2.gds", + cellname="sky130_fd_sc_hd__o221a_2", + ) + @cell def sky130_fd_sc_hd__nor3_2() -> gf.Component: @@ -8538,7 +10963,11 @@ def sky130_fd_sc_hd__nor3_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor3_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor3/sky130_fd_sc_hd__nor3_2.gds", cellname="sky130_fd_sc_hd__nor3_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor3/sky130_fd_sc_hd__nor3_2.gds", + cellname="sky130_fd_sc_hd__nor3_2", + ) + @cell def sky130_fd_sc_hd__nor3_4() -> gf.Component: @@ -8552,7 +10981,11 @@ def sky130_fd_sc_hd__nor3_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor3_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor3/sky130_fd_sc_hd__nor3_4.gds", cellname="sky130_fd_sc_hd__nor3_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor3/sky130_fd_sc_hd__nor3_4.gds", + cellname="sky130_fd_sc_hd__nor3_4", + ) + @cell def sky130_fd_sc_hd__nor3_1() -> gf.Component: @@ -8566,7 +10999,11 @@ def sky130_fd_sc_hd__nor3_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nor3_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nor3/sky130_fd_sc_hd__nor3_1.gds", cellname="sky130_fd_sc_hd__nor3_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nor3/sky130_fd_sc_hd__nor3_1.gds", + cellname="sky130_fd_sc_hd__nor3_1", + ) + @cell def sky130_fd_sc_hd__dfrtn_1() -> gf.Component: @@ -8580,7 +11017,11 @@ def sky130_fd_sc_hd__dfrtn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfrtn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfrtn/sky130_fd_sc_hd__dfrtn_1.gds", cellname="sky130_fd_sc_hd__dfrtn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfrtn/sky130_fd_sc_hd__dfrtn_1.gds", + cellname="sky130_fd_sc_hd__dfrtn_1", + ) + @cell def sky130_fd_sc_hd__sdfrbp_1() -> gf.Component: @@ -8594,7 +11035,11 @@ def sky130_fd_sc_hd__sdfrbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfrbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfrbp/sky130_fd_sc_hd__sdfrbp_1.gds", cellname="sky130_fd_sc_hd__sdfrbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfrbp/sky130_fd_sc_hd__sdfrbp_1.gds", + cellname="sky130_fd_sc_hd__sdfrbp_1", + ) + @cell def sky130_fd_sc_hd__sdfrbp_2() -> gf.Component: @@ -8608,7 +11053,11 @@ def sky130_fd_sc_hd__sdfrbp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfrbp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfrbp/sky130_fd_sc_hd__sdfrbp_2.gds", cellname="sky130_fd_sc_hd__sdfrbp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfrbp/sky130_fd_sc_hd__sdfrbp_2.gds", + cellname="sky130_fd_sc_hd__sdfrbp_2", + ) + @cell def sky130_fd_sc_hd__clkinvlp_4() -> gf.Component: @@ -8622,7 +11071,11 @@ def sky130_fd_sc_hd__clkinvlp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkinvlp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkinvlp/sky130_fd_sc_hd__clkinvlp_4.gds", cellname="sky130_fd_sc_hd__clkinvlp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkinvlp/sky130_fd_sc_hd__clkinvlp_4.gds", + cellname="sky130_fd_sc_hd__clkinvlp_4", + ) + @cell def sky130_fd_sc_hd__clkinvlp_2() -> gf.Component: @@ -8636,7 +11089,11 @@ def sky130_fd_sc_hd__clkinvlp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkinvlp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkinvlp/sky130_fd_sc_hd__clkinvlp_2.gds", cellname="sky130_fd_sc_hd__clkinvlp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkinvlp/sky130_fd_sc_hd__clkinvlp_2.gds", + cellname="sky130_fd_sc_hd__clkinvlp_2", + ) + @cell def sky130_fd_sc_hd__o41a_4() -> gf.Component: @@ -8650,7 +11107,11 @@ def sky130_fd_sc_hd__o41a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o41a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o41a/sky130_fd_sc_hd__o41a_4.gds", cellname="sky130_fd_sc_hd__o41a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o41a/sky130_fd_sc_hd__o41a_4.gds", + cellname="sky130_fd_sc_hd__o41a_4", + ) + @cell def sky130_fd_sc_hd__o41a_1() -> gf.Component: @@ -8664,7 +11125,11 @@ def sky130_fd_sc_hd__o41a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o41a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o41a/sky130_fd_sc_hd__o41a_1.gds", cellname="sky130_fd_sc_hd__o41a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o41a/sky130_fd_sc_hd__o41a_1.gds", + cellname="sky130_fd_sc_hd__o41a_1", + ) + @cell def sky130_fd_sc_hd__o41a_2() -> gf.Component: @@ -8678,7 +11143,11 @@ def sky130_fd_sc_hd__o41a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o41a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o41a/sky130_fd_sc_hd__o41a_2.gds", cellname="sky130_fd_sc_hd__o41a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o41a/sky130_fd_sc_hd__o41a_2.gds", + cellname="sky130_fd_sc_hd__o41a_2", + ) + @cell def sky130_fd_sc_hd__o21a_1() -> gf.Component: @@ -8692,7 +11161,11 @@ def sky130_fd_sc_hd__o21a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21a/sky130_fd_sc_hd__o21a_1.gds", cellname="sky130_fd_sc_hd__o21a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21a/sky130_fd_sc_hd__o21a_1.gds", + cellname="sky130_fd_sc_hd__o21a_1", + ) + @cell def sky130_fd_sc_hd__o21a_4() -> gf.Component: @@ -8706,7 +11179,11 @@ def sky130_fd_sc_hd__o21a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21a/sky130_fd_sc_hd__o21a_4.gds", cellname="sky130_fd_sc_hd__o21a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21a/sky130_fd_sc_hd__o21a_4.gds", + cellname="sky130_fd_sc_hd__o21a_4", + ) + @cell def sky130_fd_sc_hd__o21a_2() -> gf.Component: @@ -8720,7 +11197,11 @@ def sky130_fd_sc_hd__o21a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21a/sky130_fd_sc_hd__o21a_2.gds", cellname="sky130_fd_sc_hd__o21a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21a/sky130_fd_sc_hd__o21a_2.gds", + cellname="sky130_fd_sc_hd__o21a_2", + ) + @cell def sky130_fd_sc_hd__or3_4() -> gf.Component: @@ -8734,7 +11215,11 @@ def sky130_fd_sc_hd__or3_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or3_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or3/sky130_fd_sc_hd__or3_4.gds", cellname="sky130_fd_sc_hd__or3_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/or3/sky130_fd_sc_hd__or3_4.gds", + cellname="sky130_fd_sc_hd__or3_4", + ) + @cell def sky130_fd_sc_hd__or3_1() -> gf.Component: @@ -8748,7 +11233,11 @@ def sky130_fd_sc_hd__or3_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or3_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or3/sky130_fd_sc_hd__or3_1.gds", cellname="sky130_fd_sc_hd__or3_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/or3/sky130_fd_sc_hd__or3_1.gds", + cellname="sky130_fd_sc_hd__or3_1", + ) + @cell def sky130_fd_sc_hd__or3_2() -> gf.Component: @@ -8762,7 +11251,11 @@ def sky130_fd_sc_hd__or3_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or3_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or3/sky130_fd_sc_hd__or3_2.gds", cellname="sky130_fd_sc_hd__or3_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/or3/sky130_fd_sc_hd__or3_2.gds", + cellname="sky130_fd_sc_hd__or3_2", + ) + @cell def sky130_fd_sc_hd__dlxbp_1() -> gf.Component: @@ -8776,7 +11269,11 @@ def sky130_fd_sc_hd__dlxbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlxbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlxbp/sky130_fd_sc_hd__dlxbp_1.gds", cellname="sky130_fd_sc_hd__dlxbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlxbp/sky130_fd_sc_hd__dlxbp_1.gds", + cellname="sky130_fd_sc_hd__dlxbp_1", + ) + @cell def sky130_fd_sc_hd__bufbuf_16() -> gf.Component: @@ -8790,7 +11287,11 @@ def sky130_fd_sc_hd__bufbuf_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__bufbuf_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/bufbuf/sky130_fd_sc_hd__bufbuf_16.gds", cellname="sky130_fd_sc_hd__bufbuf_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/bufbuf/sky130_fd_sc_hd__bufbuf_16.gds", + cellname="sky130_fd_sc_hd__bufbuf_16", + ) + @cell def sky130_fd_sc_hd__bufbuf_8() -> gf.Component: @@ -8804,7 +11305,11 @@ def sky130_fd_sc_hd__bufbuf_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__bufbuf_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/bufbuf/sky130_fd_sc_hd__bufbuf_8.gds", cellname="sky130_fd_sc_hd__bufbuf_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/bufbuf/sky130_fd_sc_hd__bufbuf_8.gds", + cellname="sky130_fd_sc_hd__bufbuf_8", + ) + @cell def sky130_fd_sc_hd__clkdlybuf4s18_2() -> gf.Component: @@ -8818,7 +11323,11 @@ def sky130_fd_sc_hd__clkdlybuf4s18_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s18/sky130_fd_sc_hd__clkdlybuf4s18_2.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s18_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkdlybuf4s18/sky130_fd_sc_hd__clkdlybuf4s18_2.gds", + cellname="sky130_fd_sc_hd__clkdlybuf4s18_2", + ) + @cell def sky130_fd_sc_hd__clkdlybuf4s18_1() -> gf.Component: @@ -8832,7 +11341,11 @@ def sky130_fd_sc_hd__clkdlybuf4s18_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s18/sky130_fd_sc_hd__clkdlybuf4s18_1.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s18_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkdlybuf4s18/sky130_fd_sc_hd__clkdlybuf4s18_1.gds", + cellname="sky130_fd_sc_hd__clkdlybuf4s18_1", + ) + @cell def sky130_fd_sc_hd__sdfrtp_2() -> gf.Component: @@ -8846,7 +11359,11 @@ def sky130_fd_sc_hd__sdfrtp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfrtp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfrtp/sky130_fd_sc_hd__sdfrtp_2.gds", cellname="sky130_fd_sc_hd__sdfrtp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfrtp/sky130_fd_sc_hd__sdfrtp_2.gds", + cellname="sky130_fd_sc_hd__sdfrtp_2", + ) + @cell def sky130_fd_sc_hd__sdfrtp_1() -> gf.Component: @@ -8860,7 +11377,11 @@ def sky130_fd_sc_hd__sdfrtp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfrtp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfrtp/sky130_fd_sc_hd__sdfrtp_1.gds", cellname="sky130_fd_sc_hd__sdfrtp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfrtp/sky130_fd_sc_hd__sdfrtp_1.gds", + cellname="sky130_fd_sc_hd__sdfrtp_1", + ) + @cell def sky130_fd_sc_hd__sdfrtp_4() -> gf.Component: @@ -8874,7 +11395,11 @@ def sky130_fd_sc_hd__sdfrtp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfrtp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfrtp/sky130_fd_sc_hd__sdfrtp_4.gds", cellname="sky130_fd_sc_hd__sdfrtp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfrtp/sky130_fd_sc_hd__sdfrtp_4.gds", + cellname="sky130_fd_sc_hd__sdfrtp_4", + ) + @cell def sky130_fd_sc_hd__a221o_4() -> gf.Component: @@ -8888,7 +11413,11 @@ def sky130_fd_sc_hd__a221o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a221o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a221o/sky130_fd_sc_hd__a221o_4.gds", cellname="sky130_fd_sc_hd__a221o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a221o/sky130_fd_sc_hd__a221o_4.gds", + cellname="sky130_fd_sc_hd__a221o_4", + ) + @cell def sky130_fd_sc_hd__a221o_2() -> gf.Component: @@ -8902,7 +11431,11 @@ def sky130_fd_sc_hd__a221o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a221o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a221o/sky130_fd_sc_hd__a221o_2.gds", cellname="sky130_fd_sc_hd__a221o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a221o/sky130_fd_sc_hd__a221o_2.gds", + cellname="sky130_fd_sc_hd__a221o_2", + ) + @cell def sky130_fd_sc_hd__a221o_1() -> gf.Component: @@ -8916,7 +11449,11 @@ def sky130_fd_sc_hd__a221o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a221o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a221o/sky130_fd_sc_hd__a221o_1.gds", cellname="sky130_fd_sc_hd__a221o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a221o/sky130_fd_sc_hd__a221o_1.gds", + cellname="sky130_fd_sc_hd__a221o_1", + ) + @cell def sky130_fd_sc_hd__a31o_1() -> gf.Component: @@ -8930,7 +11467,11 @@ def sky130_fd_sc_hd__a31o_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a31o_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a31o/sky130_fd_sc_hd__a31o_1.gds", cellname="sky130_fd_sc_hd__a31o_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a31o/sky130_fd_sc_hd__a31o_1.gds", + cellname="sky130_fd_sc_hd__a31o_1", + ) + @cell def sky130_fd_sc_hd__a31o_2() -> gf.Component: @@ -8944,7 +11485,11 @@ def sky130_fd_sc_hd__a31o_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a31o_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a31o/sky130_fd_sc_hd__a31o_2.gds", cellname="sky130_fd_sc_hd__a31o_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a31o/sky130_fd_sc_hd__a31o_2.gds", + cellname="sky130_fd_sc_hd__a31o_2", + ) + @cell def sky130_fd_sc_hd__a31o_4() -> gf.Component: @@ -8958,7 +11503,11 @@ def sky130_fd_sc_hd__a31o_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a31o_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a31o/sky130_fd_sc_hd__a31o_4.gds", cellname="sky130_fd_sc_hd__a31o_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a31o/sky130_fd_sc_hd__a31o_4.gds", + cellname="sky130_fd_sc_hd__a31o_4", + ) + @cell def sky130_fd_sc_hd__fah_1() -> gf.Component: @@ -8972,7 +11521,11 @@ def sky130_fd_sc_hd__fah_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fah_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fah/sky130_fd_sc_hd__fah_1.gds", cellname="sky130_fd_sc_hd__fah_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/fah/sky130_fd_sc_hd__fah_1.gds", + cellname="sky130_fd_sc_hd__fah_1", + ) + @cell def sky130_fd_sc_hd__sdfbbn_1() -> gf.Component: @@ -8986,7 +11539,11 @@ def sky130_fd_sc_hd__sdfbbn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfbbn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfbbn/sky130_fd_sc_hd__sdfbbn_1.gds", cellname="sky130_fd_sc_hd__sdfbbn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfbbn/sky130_fd_sc_hd__sdfbbn_1.gds", + cellname="sky130_fd_sc_hd__sdfbbn_1", + ) + @cell def sky130_fd_sc_hd__sdfbbn_2() -> gf.Component: @@ -9000,7 +11557,11 @@ def sky130_fd_sc_hd__sdfbbn_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfbbn_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfbbn/sky130_fd_sc_hd__sdfbbn_2.gds", cellname="sky130_fd_sc_hd__sdfbbn_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfbbn/sky130_fd_sc_hd__sdfbbn_2.gds", + cellname="sky130_fd_sc_hd__sdfbbn_2", + ) + @cell def sky130_fd_sc_hd__mux4_4() -> gf.Component: @@ -9014,7 +11575,11 @@ def sky130_fd_sc_hd__mux4_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux4_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux4/sky130_fd_sc_hd__mux4_4.gds", cellname="sky130_fd_sc_hd__mux4_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux4/sky130_fd_sc_hd__mux4_4.gds", + cellname="sky130_fd_sc_hd__mux4_4", + ) + @cell def sky130_fd_sc_hd__mux4_1() -> gf.Component: @@ -9028,7 +11593,11 @@ def sky130_fd_sc_hd__mux4_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux4_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux4/sky130_fd_sc_hd__mux4_1.gds", cellname="sky130_fd_sc_hd__mux4_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux4/sky130_fd_sc_hd__mux4_1.gds", + cellname="sky130_fd_sc_hd__mux4_1", + ) + @cell def sky130_fd_sc_hd__mux4_2() -> gf.Component: @@ -9042,7 +11611,11 @@ def sky130_fd_sc_hd__mux4_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__mux4_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/mux4/sky130_fd_sc_hd__mux4_2.gds", cellname="sky130_fd_sc_hd__mux4_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/mux4/sky130_fd_sc_hd__mux4_2.gds", + cellname="sky130_fd_sc_hd__mux4_2", + ) + @cell def sky130_fd_sc_hd__xnor2_1() -> gf.Component: @@ -9056,7 +11629,11 @@ def sky130_fd_sc_hd__xnor2_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xnor2_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_1.gds", cellname="sky130_fd_sc_hd__xnor2_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_1.gds", + cellname="sky130_fd_sc_hd__xnor2_1", + ) + @cell def sky130_fd_sc_hd__xnor2_2() -> gf.Component: @@ -9070,7 +11647,11 @@ def sky130_fd_sc_hd__xnor2_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xnor2_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_2.gds", cellname="sky130_fd_sc_hd__xnor2_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_2.gds", + cellname="sky130_fd_sc_hd__xnor2_2", + ) + @cell def sky130_fd_sc_hd__xnor2_4() -> gf.Component: @@ -9084,7 +11665,11 @@ def sky130_fd_sc_hd__xnor2_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xnor2_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_4.gds", cellname="sky130_fd_sc_hd__xnor2_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_4.gds", + cellname="sky130_fd_sc_hd__xnor2_4", + ) + @cell def sky130_fd_sc_hd__dlymetal6s2s_1() -> gf.Component: @@ -9098,7 +11683,11 @@ def sky130_fd_sc_hd__dlymetal6s2s_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlymetal6s2s_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlymetal6s2s/sky130_fd_sc_hd__dlymetal6s2s_1.gds", cellname="sky130_fd_sc_hd__dlymetal6s2s_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlymetal6s2s/sky130_fd_sc_hd__dlymetal6s2s_1.gds", + cellname="sky130_fd_sc_hd__dlymetal6s2s_1", + ) + @cell def sky130_fd_sc_hd__o2bb2ai_1() -> gf.Component: @@ -9112,7 +11701,11 @@ def sky130_fd_sc_hd__o2bb2ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2bb2ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2bb2ai/sky130_fd_sc_hd__o2bb2ai_1.gds", cellname="sky130_fd_sc_hd__o2bb2ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2bb2ai/sky130_fd_sc_hd__o2bb2ai_1.gds", + cellname="sky130_fd_sc_hd__o2bb2ai_1", + ) + @cell def sky130_fd_sc_hd__o2bb2ai_4() -> gf.Component: @@ -9126,7 +11719,11 @@ def sky130_fd_sc_hd__o2bb2ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2bb2ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2bb2ai/sky130_fd_sc_hd__o2bb2ai_4.gds", cellname="sky130_fd_sc_hd__o2bb2ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2bb2ai/sky130_fd_sc_hd__o2bb2ai_4.gds", + cellname="sky130_fd_sc_hd__o2bb2ai_4", + ) + @cell def sky130_fd_sc_hd__o2bb2ai_2() -> gf.Component: @@ -9140,7 +11737,11 @@ def sky130_fd_sc_hd__o2bb2ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2bb2ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2bb2ai/sky130_fd_sc_hd__o2bb2ai_2.gds", cellname="sky130_fd_sc_hd__o2bb2ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2bb2ai/sky130_fd_sc_hd__o2bb2ai_2.gds", + cellname="sky130_fd_sc_hd__o2bb2ai_2", + ) + @cell def sky130_fd_sc_hd__and4_2() -> gf.Component: @@ -9154,7 +11755,11 @@ def sky130_fd_sc_hd__and4_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and4_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and4/sky130_fd_sc_hd__and4_2.gds", cellname="sky130_fd_sc_hd__and4_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/and4/sky130_fd_sc_hd__and4_2.gds", + cellname="sky130_fd_sc_hd__and4_2", + ) + @cell def sky130_fd_sc_hd__and4_1() -> gf.Component: @@ -9168,7 +11773,11 @@ def sky130_fd_sc_hd__and4_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and4_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and4/sky130_fd_sc_hd__and4_1.gds", cellname="sky130_fd_sc_hd__and4_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/and4/sky130_fd_sc_hd__and4_1.gds", + cellname="sky130_fd_sc_hd__and4_1", + ) + @cell def sky130_fd_sc_hd__and4_4() -> gf.Component: @@ -9182,7 +11791,11 @@ def sky130_fd_sc_hd__and4_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__and4_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/and4/sky130_fd_sc_hd__and4_4.gds", cellname="sky130_fd_sc_hd__and4_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/and4/sky130_fd_sc_hd__and4_4.gds", + cellname="sky130_fd_sc_hd__and4_4", + ) + @cell def sky130_fd_sc_hd__or4bb_1() -> gf.Component: @@ -9196,7 +11809,11 @@ def sky130_fd_sc_hd__or4bb_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or4bb_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or4bb/sky130_fd_sc_hd__or4bb_1.gds", cellname="sky130_fd_sc_hd__or4bb_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/or4bb/sky130_fd_sc_hd__or4bb_1.gds", + cellname="sky130_fd_sc_hd__or4bb_1", + ) + @cell def sky130_fd_sc_hd__or4bb_4() -> gf.Component: @@ -9210,7 +11827,11 @@ def sky130_fd_sc_hd__or4bb_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or4bb_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or4bb/sky130_fd_sc_hd__or4bb_4.gds", cellname="sky130_fd_sc_hd__or4bb_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/or4bb/sky130_fd_sc_hd__or4bb_4.gds", + cellname="sky130_fd_sc_hd__or4bb_4", + ) + @cell def sky130_fd_sc_hd__or4bb_2() -> gf.Component: @@ -9224,7 +11845,11 @@ def sky130_fd_sc_hd__or4bb_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__or4bb_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/or4bb/sky130_fd_sc_hd__or4bb_2.gds", cellname="sky130_fd_sc_hd__or4bb_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/or4bb/sky130_fd_sc_hd__or4bb_2.gds", + cellname="sky130_fd_sc_hd__or4bb_2", + ) + @cell def sky130_fd_sc_hd__tapvgnd_1() -> gf.Component: @@ -9238,7 +11863,11 @@ def sky130_fd_sc_hd__tapvgnd_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__tapvgnd_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/tapvgnd/sky130_fd_sc_hd__tapvgnd_1.gds", cellname="sky130_fd_sc_hd__tapvgnd_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/tapvgnd/sky130_fd_sc_hd__tapvgnd_1.gds", + cellname="sky130_fd_sc_hd__tapvgnd_1", + ) + @cell def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() -> gf.Component: @@ -9252,7 +11881,11 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4.gds", cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_lsbuf_lh_isowell/sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4.gds", + cellname="sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4", + ) + @cell def sky130_fd_sc_hd__a32oi_2() -> gf.Component: @@ -9266,7 +11899,11 @@ def sky130_fd_sc_hd__a32oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a32oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a32oi/sky130_fd_sc_hd__a32oi_2.gds", cellname="sky130_fd_sc_hd__a32oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a32oi/sky130_fd_sc_hd__a32oi_2.gds", + cellname="sky130_fd_sc_hd__a32oi_2", + ) + @cell def sky130_fd_sc_hd__a32oi_1() -> gf.Component: @@ -9280,7 +11917,11 @@ def sky130_fd_sc_hd__a32oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a32oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a32oi/sky130_fd_sc_hd__a32oi_1.gds", cellname="sky130_fd_sc_hd__a32oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a32oi/sky130_fd_sc_hd__a32oi_1.gds", + cellname="sky130_fd_sc_hd__a32oi_1", + ) + @cell def sky130_fd_sc_hd__a32oi_4() -> gf.Component: @@ -9294,7 +11935,11 @@ def sky130_fd_sc_hd__a32oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a32oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a32oi/sky130_fd_sc_hd__a32oi_4.gds", cellname="sky130_fd_sc_hd__a32oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a32oi/sky130_fd_sc_hd__a32oi_4.gds", + cellname="sky130_fd_sc_hd__a32oi_4", + ) + @cell def sky130_fd_sc_hd__dfxbp_2() -> gf.Component: @@ -9308,7 +11953,11 @@ def sky130_fd_sc_hd__dfxbp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfxbp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfxbp/sky130_fd_sc_hd__dfxbp_2.gds", cellname="sky130_fd_sc_hd__dfxbp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfxbp/sky130_fd_sc_hd__dfxbp_2.gds", + cellname="sky130_fd_sc_hd__dfxbp_2", + ) + @cell def sky130_fd_sc_hd__dfxbp_1() -> gf.Component: @@ -9322,7 +11971,11 @@ def sky130_fd_sc_hd__dfxbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfxbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfxbp/sky130_fd_sc_hd__dfxbp_1.gds", cellname="sky130_fd_sc_hd__dfxbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfxbp/sky130_fd_sc_hd__dfxbp_1.gds", + cellname="sky130_fd_sc_hd__dfxbp_1", + ) + @cell def sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() -> gf.Component: @@ -9336,7 +11989,11 @@ def sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_isobufsrckapwr/sky130_fd_sc_hd__lpflow_isobufsrckapwr_16.gds", cellname="sky130_fd_sc_hd__lpflow_isobufsrckapwr_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_isobufsrckapwr/sky130_fd_sc_hd__lpflow_isobufsrckapwr_16.gds", + cellname="sky130_fd_sc_hd__lpflow_isobufsrckapwr_16", + ) + @cell def sky130_fd_sc_hd__probec_p_8() -> gf.Component: @@ -9350,7 +12007,11 @@ def sky130_fd_sc_hd__probec_p_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__probec_p_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/probec_p/sky130_fd_sc_hd__probec_p_8.gds", cellname="sky130_fd_sc_hd__probec_p_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/probec_p/sky130_fd_sc_hd__probec_p_8.gds", + cellname="sky130_fd_sc_hd__probec_p_8", + ) + @cell def sky130_fd_sc_hd__o21ai_2() -> gf.Component: @@ -9364,7 +12025,11 @@ def sky130_fd_sc_hd__o21ai_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21ai_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_2.gds", cellname="sky130_fd_sc_hd__o21ai_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_2.gds", + cellname="sky130_fd_sc_hd__o21ai_2", + ) + @cell def sky130_fd_sc_hd__o21ai_0() -> gf.Component: @@ -9378,7 +12043,11 @@ def sky130_fd_sc_hd__o21ai_0() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21ai_0() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_0.gds", cellname="sky130_fd_sc_hd__o21ai_0") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_0.gds", + cellname="sky130_fd_sc_hd__o21ai_0", + ) + @cell def sky130_fd_sc_hd__o21ai_1() -> gf.Component: @@ -9392,7 +12061,11 @@ def sky130_fd_sc_hd__o21ai_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21ai_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_1.gds", cellname="sky130_fd_sc_hd__o21ai_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_1.gds", + cellname="sky130_fd_sc_hd__o21ai_1", + ) + @cell def sky130_fd_sc_hd__o21ai_4() -> gf.Component: @@ -9406,7 +12079,11 @@ def sky130_fd_sc_hd__o21ai_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o21ai_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_4.gds", cellname="sky130_fd_sc_hd__o21ai_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o21ai/sky130_fd_sc_hd__o21ai_4.gds", + cellname="sky130_fd_sc_hd__o21ai_4", + ) + @cell def sky130_fd_sc_hd__ebufn_4() -> gf.Component: @@ -9420,7 +12097,11 @@ def sky130_fd_sc_hd__ebufn_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__ebufn_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_4.gds", cellname="sky130_fd_sc_hd__ebufn_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_4.gds", + cellname="sky130_fd_sc_hd__ebufn_4", + ) + @cell def sky130_fd_sc_hd__ebufn_8() -> gf.Component: @@ -9434,7 +12115,11 @@ def sky130_fd_sc_hd__ebufn_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__ebufn_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_8.gds", cellname="sky130_fd_sc_hd__ebufn_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_8.gds", + cellname="sky130_fd_sc_hd__ebufn_8", + ) + @cell def sky130_fd_sc_hd__ebufn_1() -> gf.Component: @@ -9448,7 +12133,11 @@ def sky130_fd_sc_hd__ebufn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__ebufn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_1.gds", cellname="sky130_fd_sc_hd__ebufn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_1.gds", + cellname="sky130_fd_sc_hd__ebufn_1", + ) + @cell def sky130_fd_sc_hd__ebufn_2() -> gf.Component: @@ -9462,7 +12151,11 @@ def sky130_fd_sc_hd__ebufn_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__ebufn_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_2.gds", cellname="sky130_fd_sc_hd__ebufn_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/ebufn/sky130_fd_sc_hd__ebufn_2.gds", + cellname="sky130_fd_sc_hd__ebufn_2", + ) + @cell def sky130_fd_sc_hd__o31a_1() -> gf.Component: @@ -9476,7 +12169,11 @@ def sky130_fd_sc_hd__o31a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o31a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o31a/sky130_fd_sc_hd__o31a_1.gds", cellname="sky130_fd_sc_hd__o31a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o31a/sky130_fd_sc_hd__o31a_1.gds", + cellname="sky130_fd_sc_hd__o31a_1", + ) + @cell def sky130_fd_sc_hd__o31a_4() -> gf.Component: @@ -9490,7 +12187,11 @@ def sky130_fd_sc_hd__o31a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o31a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o31a/sky130_fd_sc_hd__o31a_4.gds", cellname="sky130_fd_sc_hd__o31a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o31a/sky130_fd_sc_hd__o31a_4.gds", + cellname="sky130_fd_sc_hd__o31a_4", + ) + @cell def sky130_fd_sc_hd__o31a_2() -> gf.Component: @@ -9504,7 +12205,11 @@ def sky130_fd_sc_hd__o31a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o31a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o31a/sky130_fd_sc_hd__o31a_2.gds", cellname="sky130_fd_sc_hd__o31a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o31a/sky130_fd_sc_hd__o31a_2.gds", + cellname="sky130_fd_sc_hd__o31a_2", + ) + @cell def sky130_fd_sc_hd__maj3_2() -> gf.Component: @@ -9518,7 +12223,11 @@ def sky130_fd_sc_hd__maj3_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__maj3_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/maj3/sky130_fd_sc_hd__maj3_2.gds", cellname="sky130_fd_sc_hd__maj3_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/maj3/sky130_fd_sc_hd__maj3_2.gds", + cellname="sky130_fd_sc_hd__maj3_2", + ) + @cell def sky130_fd_sc_hd__maj3_4() -> gf.Component: @@ -9532,7 +12241,11 @@ def sky130_fd_sc_hd__maj3_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__maj3_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/maj3/sky130_fd_sc_hd__maj3_4.gds", cellname="sky130_fd_sc_hd__maj3_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/maj3/sky130_fd_sc_hd__maj3_4.gds", + cellname="sky130_fd_sc_hd__maj3_4", + ) + @cell def sky130_fd_sc_hd__maj3_1() -> gf.Component: @@ -9546,7 +12259,11 @@ def sky130_fd_sc_hd__maj3_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__maj3_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/maj3/sky130_fd_sc_hd__maj3_1.gds", cellname="sky130_fd_sc_hd__maj3_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/maj3/sky130_fd_sc_hd__maj3_1.gds", + cellname="sky130_fd_sc_hd__maj3_1", + ) + @cell def sky130_fd_sc_hd__sdfsbp_1() -> gf.Component: @@ -9560,7 +12277,11 @@ def sky130_fd_sc_hd__sdfsbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfsbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfsbp/sky130_fd_sc_hd__sdfsbp_1.gds", cellname="sky130_fd_sc_hd__sdfsbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfsbp/sky130_fd_sc_hd__sdfsbp_1.gds", + cellname="sky130_fd_sc_hd__sdfsbp_1", + ) + @cell def sky130_fd_sc_hd__sdfsbp_2() -> gf.Component: @@ -9574,7 +12295,11 @@ def sky130_fd_sc_hd__sdfsbp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdfsbp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdfsbp/sky130_fd_sc_hd__sdfsbp_2.gds", cellname="sky130_fd_sc_hd__sdfsbp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdfsbp/sky130_fd_sc_hd__sdfsbp_2.gds", + cellname="sky130_fd_sc_hd__sdfsbp_2", + ) + @cell def sky130_fd_sc_hd__lpflow_inputiso1p_1() -> gf.Component: @@ -9588,7 +12313,11 @@ def sky130_fd_sc_hd__lpflow_inputiso1p_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1p_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/lpflow_inputiso1p/sky130_fd_sc_hd__lpflow_inputiso1p_1.gds", cellname="sky130_fd_sc_hd__lpflow_inputiso1p_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/lpflow_inputiso1p/sky130_fd_sc_hd__lpflow_inputiso1p_1.gds", + cellname="sky130_fd_sc_hd__lpflow_inputiso1p_1", + ) + @cell def sky130_fd_sc_hd__ha_1() -> gf.Component: @@ -9602,7 +12331,11 @@ def sky130_fd_sc_hd__ha_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__ha_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/ha/sky130_fd_sc_hd__ha_1.gds", cellname="sky130_fd_sc_hd__ha_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/ha/sky130_fd_sc_hd__ha_1.gds", + cellname="sky130_fd_sc_hd__ha_1", + ) + @cell def sky130_fd_sc_hd__ha_2() -> gf.Component: @@ -9616,7 +12349,11 @@ def sky130_fd_sc_hd__ha_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__ha_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/ha/sky130_fd_sc_hd__ha_2.gds", cellname="sky130_fd_sc_hd__ha_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/ha/sky130_fd_sc_hd__ha_2.gds", + cellname="sky130_fd_sc_hd__ha_2", + ) + @cell def sky130_fd_sc_hd__ha_4() -> gf.Component: @@ -9630,7 +12367,11 @@ def sky130_fd_sc_hd__ha_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__ha_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/ha/sky130_fd_sc_hd__ha_4.gds", cellname="sky130_fd_sc_hd__ha_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/ha/sky130_fd_sc_hd__ha_4.gds", + cellname="sky130_fd_sc_hd__ha_4", + ) + @cell def sky130_fd_sc_hd__a2111oi_2() -> gf.Component: @@ -9644,7 +12385,11 @@ def sky130_fd_sc_hd__a2111oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2111oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_2.gds", cellname="sky130_fd_sc_hd__a2111oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_2.gds", + cellname="sky130_fd_sc_hd__a2111oi_2", + ) + @cell def sky130_fd_sc_hd__a2111oi_4() -> gf.Component: @@ -9658,7 +12403,11 @@ def sky130_fd_sc_hd__a2111oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2111oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_4.gds", cellname="sky130_fd_sc_hd__a2111oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_4.gds", + cellname="sky130_fd_sc_hd__a2111oi_4", + ) + @cell def sky130_fd_sc_hd__a2111oi_1() -> gf.Component: @@ -9672,7 +12421,11 @@ def sky130_fd_sc_hd__a2111oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2111oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_1.gds", cellname="sky130_fd_sc_hd__a2111oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_1.gds", + cellname="sky130_fd_sc_hd__a2111oi_1", + ) + @cell def sky130_fd_sc_hd__a2111oi_0() -> gf.Component: @@ -9686,7 +12439,11 @@ def sky130_fd_sc_hd__a2111oi_0() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a2111oi_0() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_0.gds", cellname="sky130_fd_sc_hd__a2111oi_0") + return import_gds( + "src/sky130_fd_sc_hd/cells/a2111oi/sky130_fd_sc_hd__a2111oi_0.gds", + cellname="sky130_fd_sc_hd__a2111oi_0", + ) + @cell def sky130_fd_sc_hd__o2bb2a_2() -> gf.Component: @@ -9700,7 +12457,11 @@ def sky130_fd_sc_hd__o2bb2a_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2bb2a_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2bb2a/sky130_fd_sc_hd__o2bb2a_2.gds", cellname="sky130_fd_sc_hd__o2bb2a_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2bb2a/sky130_fd_sc_hd__o2bb2a_2.gds", + cellname="sky130_fd_sc_hd__o2bb2a_2", + ) + @cell def sky130_fd_sc_hd__o2bb2a_1() -> gf.Component: @@ -9714,7 +12475,11 @@ def sky130_fd_sc_hd__o2bb2a_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2bb2a_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2bb2a/sky130_fd_sc_hd__o2bb2a_1.gds", cellname="sky130_fd_sc_hd__o2bb2a_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2bb2a/sky130_fd_sc_hd__o2bb2a_1.gds", + cellname="sky130_fd_sc_hd__o2bb2a_1", + ) + @cell def sky130_fd_sc_hd__o2bb2a_4() -> gf.Component: @@ -9728,7 +12493,11 @@ def sky130_fd_sc_hd__o2bb2a_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__o2bb2a_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/o2bb2a/sky130_fd_sc_hd__o2bb2a_4.gds", cellname="sky130_fd_sc_hd__o2bb2a_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/o2bb2a/sky130_fd_sc_hd__o2bb2a_4.gds", + cellname="sky130_fd_sc_hd__o2bb2a_4", + ) + @cell def sky130_fd_sc_hd__dlymetal6s6s_1() -> gf.Component: @@ -9742,7 +12511,11 @@ def sky130_fd_sc_hd__dlymetal6s6s_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlymetal6s6s_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlymetal6s6s/sky130_fd_sc_hd__dlymetal6s6s_1.gds", cellname="sky130_fd_sc_hd__dlymetal6s6s_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlymetal6s6s/sky130_fd_sc_hd__dlymetal6s6s_1.gds", + cellname="sky130_fd_sc_hd__dlymetal6s6s_1", + ) + @cell def sky130_fd_sc_hd__a222oi_1() -> gf.Component: @@ -9756,7 +12529,11 @@ def sky130_fd_sc_hd__a222oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a222oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a222oi/sky130_fd_sc_hd__a222oi_1.gds", cellname="sky130_fd_sc_hd__a222oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a222oi/sky130_fd_sc_hd__a222oi_1.gds", + cellname="sky130_fd_sc_hd__a222oi_1", + ) + @cell def sky130_fd_sc_hd__dfbbn_1() -> gf.Component: @@ -9770,7 +12547,11 @@ def sky130_fd_sc_hd__dfbbn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfbbn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfbbn/sky130_fd_sc_hd__dfbbn_1.gds", cellname="sky130_fd_sc_hd__dfbbn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfbbn/sky130_fd_sc_hd__dfbbn_1.gds", + cellname="sky130_fd_sc_hd__dfbbn_1", + ) + @cell def sky130_fd_sc_hd__dfbbn_2() -> gf.Component: @@ -9784,7 +12565,11 @@ def sky130_fd_sc_hd__dfbbn_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dfbbn_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dfbbn/sky130_fd_sc_hd__dfbbn_2.gds", cellname="sky130_fd_sc_hd__dfbbn_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dfbbn/sky130_fd_sc_hd__dfbbn_2.gds", + cellname="sky130_fd_sc_hd__dfbbn_2", + ) + @cell def sky130_fd_sc_hd__fahcin_1() -> gf.Component: @@ -9798,7 +12583,11 @@ def sky130_fd_sc_hd__fahcin_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__fahcin_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/fahcin/sky130_fd_sc_hd__fahcin_1.gds", cellname="sky130_fd_sc_hd__fahcin_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/fahcin/sky130_fd_sc_hd__fahcin_1.gds", + cellname="sky130_fd_sc_hd__fahcin_1", + ) + @cell def sky130_fd_sc_hd__sdlclkp_2() -> gf.Component: @@ -9812,7 +12601,11 @@ def sky130_fd_sc_hd__sdlclkp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdlclkp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdlclkp/sky130_fd_sc_hd__sdlclkp_2.gds", cellname="sky130_fd_sc_hd__sdlclkp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdlclkp/sky130_fd_sc_hd__sdlclkp_2.gds", + cellname="sky130_fd_sc_hd__sdlclkp_2", + ) + @cell def sky130_fd_sc_hd__sdlclkp_4() -> gf.Component: @@ -9826,7 +12619,11 @@ def sky130_fd_sc_hd__sdlclkp_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdlclkp_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdlclkp/sky130_fd_sc_hd__sdlclkp_4.gds", cellname="sky130_fd_sc_hd__sdlclkp_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdlclkp/sky130_fd_sc_hd__sdlclkp_4.gds", + cellname="sky130_fd_sc_hd__sdlclkp_4", + ) + @cell def sky130_fd_sc_hd__sdlclkp_1() -> gf.Component: @@ -9840,7 +12637,11 @@ def sky130_fd_sc_hd__sdlclkp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__sdlclkp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/sdlclkp/sky130_fd_sc_hd__sdlclkp_1.gds", cellname="sky130_fd_sc_hd__sdlclkp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/sdlclkp/sky130_fd_sc_hd__sdlclkp_1.gds", + cellname="sky130_fd_sc_hd__sdlclkp_1", + ) + @cell def sky130_fd_sc_hd__clkdlybuf4s50_1() -> gf.Component: @@ -9854,7 +12655,11 @@ def sky130_fd_sc_hd__clkdlybuf4s50_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s50/sky130_fd_sc_hd__clkdlybuf4s50_1.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s50_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkdlybuf4s50/sky130_fd_sc_hd__clkdlybuf4s50_1.gds", + cellname="sky130_fd_sc_hd__clkdlybuf4s50_1", + ) + @cell def sky130_fd_sc_hd__clkdlybuf4s50_2() -> gf.Component: @@ -9868,7 +12673,11 @@ def sky130_fd_sc_hd__clkdlybuf4s50_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkdlybuf4s50/sky130_fd_sc_hd__clkdlybuf4s50_2.gds", cellname="sky130_fd_sc_hd__clkdlybuf4s50_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkdlybuf4s50/sky130_fd_sc_hd__clkdlybuf4s50_2.gds", + cellname="sky130_fd_sc_hd__clkdlybuf4s50_2", + ) + @cell def sky130_fd_sc_hd__dlxtp_1() -> gf.Component: @@ -9882,7 +12691,11 @@ def sky130_fd_sc_hd__dlxtp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlxtp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlxtp/sky130_fd_sc_hd__dlxtp_1.gds", cellname="sky130_fd_sc_hd__dlxtp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlxtp/sky130_fd_sc_hd__dlxtp_1.gds", + cellname="sky130_fd_sc_hd__dlxtp_1", + ) + @cell def sky130_fd_sc_hd__nand4b_2() -> gf.Component: @@ -9896,7 +12709,11 @@ def sky130_fd_sc_hd__nand4b_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand4b_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand4b/sky130_fd_sc_hd__nand4b_2.gds", cellname="sky130_fd_sc_hd__nand4b_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand4b/sky130_fd_sc_hd__nand4b_2.gds", + cellname="sky130_fd_sc_hd__nand4b_2", + ) + @cell def sky130_fd_sc_hd__nand4b_1() -> gf.Component: @@ -9910,7 +12727,11 @@ def sky130_fd_sc_hd__nand4b_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand4b_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand4b/sky130_fd_sc_hd__nand4b_1.gds", cellname="sky130_fd_sc_hd__nand4b_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand4b/sky130_fd_sc_hd__nand4b_1.gds", + cellname="sky130_fd_sc_hd__nand4b_1", + ) + @cell def sky130_fd_sc_hd__nand4b_4() -> gf.Component: @@ -9924,7 +12745,11 @@ def sky130_fd_sc_hd__nand4b_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__nand4b_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/nand4b/sky130_fd_sc_hd__nand4b_4.gds", cellname="sky130_fd_sc_hd__nand4b_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/nand4b/sky130_fd_sc_hd__nand4b_4.gds", + cellname="sky130_fd_sc_hd__nand4b_4", + ) + @cell def sky130_fd_sc_hd__xnor3_4() -> gf.Component: @@ -9938,7 +12763,11 @@ def sky130_fd_sc_hd__xnor3_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xnor3_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_4.gds", cellname="sky130_fd_sc_hd__xnor3_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_4.gds", + cellname="sky130_fd_sc_hd__xnor3_4", + ) + @cell def sky130_fd_sc_hd__xnor3_1() -> gf.Component: @@ -9952,7 +12781,11 @@ def sky130_fd_sc_hd__xnor3_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xnor3_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_1.gds", cellname="sky130_fd_sc_hd__xnor3_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_1.gds", + cellname="sky130_fd_sc_hd__xnor3_1", + ) + @cell def sky130_fd_sc_hd__xnor3_2() -> gf.Component: @@ -9966,7 +12799,11 @@ def sky130_fd_sc_hd__xnor3_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__xnor3_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_2.gds", cellname="sky130_fd_sc_hd__xnor3_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_2.gds", + cellname="sky130_fd_sc_hd__xnor3_2", + ) + @cell def sky130_fd_sc_hd__clkbuf_2() -> gf.Component: @@ -9980,7 +12817,11 @@ def sky130_fd_sc_hd__clkbuf_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkbuf_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_2.gds", cellname="sky130_fd_sc_hd__clkbuf_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_2.gds", + cellname="sky130_fd_sc_hd__clkbuf_2", + ) + @cell def sky130_fd_sc_hd__clkbuf_1() -> gf.Component: @@ -9994,7 +12835,11 @@ def sky130_fd_sc_hd__clkbuf_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkbuf_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_1.gds", cellname="sky130_fd_sc_hd__clkbuf_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_1.gds", + cellname="sky130_fd_sc_hd__clkbuf_1", + ) + @cell def sky130_fd_sc_hd__clkbuf_4() -> gf.Component: @@ -10008,7 +12853,11 @@ def sky130_fd_sc_hd__clkbuf_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkbuf_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_4.gds", cellname="sky130_fd_sc_hd__clkbuf_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_4.gds", + cellname="sky130_fd_sc_hd__clkbuf_4", + ) + @cell def sky130_fd_sc_hd__clkbuf_16() -> gf.Component: @@ -10022,7 +12871,11 @@ def sky130_fd_sc_hd__clkbuf_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkbuf_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_16.gds", cellname="sky130_fd_sc_hd__clkbuf_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_16.gds", + cellname="sky130_fd_sc_hd__clkbuf_16", + ) + @cell def sky130_fd_sc_hd__clkbuf_8() -> gf.Component: @@ -10036,7 +12889,11 @@ def sky130_fd_sc_hd__clkbuf_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__clkbuf_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_8.gds", cellname="sky130_fd_sc_hd__clkbuf_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/clkbuf/sky130_fd_sc_hd__clkbuf_8.gds", + cellname="sky130_fd_sc_hd__clkbuf_8", + ) + @cell def sky130_fd_sc_hd__dlrbn_1() -> gf.Component: @@ -10050,7 +12907,11 @@ def sky130_fd_sc_hd__dlrbn_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrbn_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrbn/sky130_fd_sc_hd__dlrbn_1.gds", cellname="sky130_fd_sc_hd__dlrbn_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrbn/sky130_fd_sc_hd__dlrbn_1.gds", + cellname="sky130_fd_sc_hd__dlrbn_1", + ) + @cell def sky130_fd_sc_hd__dlrbn_2() -> gf.Component: @@ -10064,7 +12925,11 @@ def sky130_fd_sc_hd__dlrbn_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrbn_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrbn/sky130_fd_sc_hd__dlrbn_2.gds", cellname="sky130_fd_sc_hd__dlrbn_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrbn/sky130_fd_sc_hd__dlrbn_2.gds", + cellname="sky130_fd_sc_hd__dlrbn_2", + ) + @cell def sky130_fd_sc_hd__bufinv_8() -> gf.Component: @@ -10078,7 +12943,11 @@ def sky130_fd_sc_hd__bufinv_8() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__bufinv_8() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/bufinv/sky130_fd_sc_hd__bufinv_8.gds", cellname="sky130_fd_sc_hd__bufinv_8") + return import_gds( + "src/sky130_fd_sc_hd/cells/bufinv/sky130_fd_sc_hd__bufinv_8.gds", + cellname="sky130_fd_sc_hd__bufinv_8", + ) + @cell def sky130_fd_sc_hd__bufinv_16() -> gf.Component: @@ -10092,7 +12961,11 @@ def sky130_fd_sc_hd__bufinv_16() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__bufinv_16() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/bufinv/sky130_fd_sc_hd__bufinv_16.gds", cellname="sky130_fd_sc_hd__bufinv_16") + return import_gds( + "src/sky130_fd_sc_hd/cells/bufinv/sky130_fd_sc_hd__bufinv_16.gds", + cellname="sky130_fd_sc_hd__bufinv_16", + ) + @cell def sky130_fd_sc_hd__a211oi_2() -> gf.Component: @@ -10106,7 +12979,11 @@ def sky130_fd_sc_hd__a211oi_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a211oi_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a211oi/sky130_fd_sc_hd__a211oi_2.gds", cellname="sky130_fd_sc_hd__a211oi_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a211oi/sky130_fd_sc_hd__a211oi_2.gds", + cellname="sky130_fd_sc_hd__a211oi_2", + ) + @cell def sky130_fd_sc_hd__a211oi_4() -> gf.Component: @@ -10120,7 +12997,11 @@ def sky130_fd_sc_hd__a211oi_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a211oi_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a211oi/sky130_fd_sc_hd__a211oi_4.gds", cellname="sky130_fd_sc_hd__a211oi_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a211oi/sky130_fd_sc_hd__a211oi_4.gds", + cellname="sky130_fd_sc_hd__a211oi_4", + ) + @cell def sky130_fd_sc_hd__a211oi_1() -> gf.Component: @@ -10134,7 +13015,11 @@ def sky130_fd_sc_hd__a211oi_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a211oi_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a211oi/sky130_fd_sc_hd__a211oi_1.gds", cellname="sky130_fd_sc_hd__a211oi_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a211oi/sky130_fd_sc_hd__a211oi_1.gds", + cellname="sky130_fd_sc_hd__a211oi_1", + ) + @cell def sky130_fd_sc_hd__dlrbp_2() -> gf.Component: @@ -10148,7 +13033,11 @@ def sky130_fd_sc_hd__dlrbp_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrbp_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrbp/sky130_fd_sc_hd__dlrbp_2.gds", cellname="sky130_fd_sc_hd__dlrbp_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrbp/sky130_fd_sc_hd__dlrbp_2.gds", + cellname="sky130_fd_sc_hd__dlrbp_2", + ) + @cell def sky130_fd_sc_hd__dlrbp_1() -> gf.Component: @@ -10162,7 +13051,11 @@ def sky130_fd_sc_hd__dlrbp_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__dlrbp_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/dlrbp/sky130_fd_sc_hd__dlrbp_1.gds", cellname="sky130_fd_sc_hd__dlrbp_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/dlrbp/sky130_fd_sc_hd__dlrbp_1.gds", + cellname="sky130_fd_sc_hd__dlrbp_1", + ) + @cell def sky130_fd_sc_hd__tapvpwrvgnd_1() -> gf.Component: @@ -10176,7 +13069,11 @@ def sky130_fd_sc_hd__tapvpwrvgnd_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__tapvpwrvgnd_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/tapvpwrvgnd/sky130_fd_sc_hd__tapvpwrvgnd_1.gds", cellname="sky130_fd_sc_hd__tapvpwrvgnd_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/tapvpwrvgnd/sky130_fd_sc_hd__tapvpwrvgnd_1.gds", + cellname="sky130_fd_sc_hd__tapvpwrvgnd_1", + ) + @cell def sky130_fd_sc_hd__a21bo_4() -> gf.Component: @@ -10190,7 +13087,11 @@ def sky130_fd_sc_hd__a21bo_4() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21bo_4() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21bo/sky130_fd_sc_hd__a21bo_4.gds", cellname="sky130_fd_sc_hd__a21bo_4") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21bo/sky130_fd_sc_hd__a21bo_4.gds", + cellname="sky130_fd_sc_hd__a21bo_4", + ) + @cell def sky130_fd_sc_hd__a21bo_2() -> gf.Component: @@ -10204,7 +13105,11 @@ def sky130_fd_sc_hd__a21bo_2() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21bo_2() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21bo/sky130_fd_sc_hd__a21bo_2.gds", cellname="sky130_fd_sc_hd__a21bo_2") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21bo/sky130_fd_sc_hd__a21bo_2.gds", + cellname="sky130_fd_sc_hd__a21bo_2", + ) + @cell def sky130_fd_sc_hd__a21bo_1() -> gf.Component: @@ -10218,4 +13123,7 @@ def sky130_fd_sc_hd__a21bo_1() -> gf.Component: c = sky130.components.sky130_fd_sc_hd__a21bo_1() c.plot() """ - return import_gds("src/sky130_fd_sc_hd/cells/a21bo/sky130_fd_sc_hd__a21bo_1.gds", cellname="sky130_fd_sc_hd__a21bo_1") + return import_gds( + "src/sky130_fd_sc_hd/cells/a21bo/sky130_fd_sc_hd__a21bo_1.gds", + cellname="sky130_fd_sc_hd__a21bo_1", + ) diff --git a/sky130/layers.py b/sky130/layers.py index 2a62111d5..8a4efa10c 100644 --- a/sky130/layers.py +++ b/sky130/layers.py @@ -439,7 +439,7 @@ class LayerMap(BaseModel): TE: Layer = (203, 0) TM: Layer = (204, 0) TEXT: Layer = (66, 0) - WG: Layer = (203, 0) # TODO remove when updating gdsfactory7 + WG: Layer = (203, 0) # TODO remove when updating gdsfactory7 class Config: frozen = True From a7c2afe5a5a2f5c53c551575f27f2f5037d8a8d0 Mon Sep 17 00:00:00 2001 From: daquintero Date: Thu, 23 May 2024 12:54:45 +0200 Subject: [PATCH 06/11] :wrench: Components tests should passsing and proper importing --- scratch.py | 0 sky130/cells/klayout/pymacros/README.md | 0 .../cells/klayout/pymacros/cells/__init__.py | 87 - sky130/cells/klayout/pymacros/cells/bjt.py | 112 - sky130/cells/klayout/pymacros/cells/cap.py | 212 - sky130/cells/klayout/pymacros/cells/diode.py | 268 - .../cells/klayout/pymacros/cells/draw_bjt.py | 0 .../cells/klayout/pymacros/cells/draw_cap.py | 0 .../klayout/pymacros/cells/draw_diode.py | 0 .../cells/klayout/pymacros/cells/draw_fet.py | 1793 ------- .../klayout/pymacros/cells/draw_guard_ring.py | 0 .../cells/klayout/pymacros/cells/draw_rf.py | 74 - .../cells/klayout/pymacros/cells/draw_vpp.py | 0 sky130/cells/klayout/pymacros/cells/fet.py | 349 -- ...fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl | 22 - ...fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds | 0 ..._02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl | 22 - ..._02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds | 0 ..._02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl | 22 - ..._02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds | 0 ..._02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl | 22 - ..._02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds | 0 ..._02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl | 22 - ..._02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds | 0 ...02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl | 22 - ...02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds | 0 ...ap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl | 22 - ...ap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds | 0 ..._pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl | 22 - ..._pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds | 0 ...pp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl | 22 - ...pp_04p4x04p6_l1m1m2_noshield_o2subcell.gds | 0 ..._vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl | 22 - ..._vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds | 0 ...fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl | 22 - ...fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds | 0 ...pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl | 22 - ...pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds | 0 ...fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl | 22 - ...fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds | 0 ..._pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl | 22 - ..._pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds | 0 ...pp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl | 22 - ...pp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds | 0 ...4p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl | 22 - ...4p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds | 0 ..._05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl | 22 - ..._05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds | 0 ..._cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl | 22 - ..._cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds | 0 ..._vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl | 22 - ..._vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds | 0 ...r__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl | 22 - ...r__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds | 0 ...ap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl | 22 - ...ap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds | 0 ..._pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl | 22 - ..._pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds | 0 ...pp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl | 22 - ...pp_08p6x07p8_l1m1m2_noshield_o2subcell.gds | 0 ..._vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl | 22 - ..._vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds | 0 ...fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl | 22 - ...fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds | 0 ...fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl | 22 - ...fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds | 0 ..._pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl | 22 - ..._pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds | 0 ...pp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl | 22 - ...pp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds | 0 ...8p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl | 22 - ...8p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds | 0 ..._11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl | 22 - ..._11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds | 0 ..._vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl | 22 - ..._vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds | 0 ...p_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl | 22 - ...p_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds | 0 ..._pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl | 22 - ..._pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds | 0 ...r__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl | 22 - ...r__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds | 0 ...r__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl | 22 - ...r__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds | 0 ...ap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl | 22 - ...ap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds | 0 ..._cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl | 22 - ..._cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds | 0 ..._vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl | 22 - ..._vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds | 0 ..._cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl | 22 - ..._cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds | 0 ..._vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl | 22 - ..._vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds | 0 ...ap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl | 22 - ...ap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds | 0 ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl | 22 - ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds | 0 ..._vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl | 22 - ..._vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds | 0 ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl | 22 - ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds | 0 ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl | 22 - ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds | 0 ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl | 22 - ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds | 0 ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl | 22 - ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds | 0 ...p_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl | 22 - ...p_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds | 0 ...fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl | 22 - ...fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds | 0 ...fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl | 22 - ...fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds | 0 ..._pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl | 22 - ..._pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds | 0 ...pp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl | 22 - ...pp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds | 0 ...1p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl | 22 - ...1p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds | 0 ..._cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl | 22 - ..._cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds | 0 ..._vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl | 22 - ..._vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds | 0 ...r__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl | 22 - ...r__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds | 0 ...fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl | 22 - ...fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds | 0 ..._vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds | 0 ..._vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds | 0 ..._vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds | 0 ..._vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds | 0 ..._vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds | 0 ..._vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds | 0 ..._vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds | 0 ..._vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds | 0 ..._vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds | 0 ...x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl | 22 - ...x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds | 0 ..._vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl | 22 - ..._vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds | 0 ...x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl | 22 - ...x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds | 0 ...55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl | 22 - ...55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds | 0 .../npn/sky130_fd_pr__npn_05v5_W1p00L1p00.gds | 0 .../npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds | 0 .../npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds | 0 .../pnp/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds | 0 .../pnp/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds | 0 .../photodiode/sky130_fd_pr__photodiode.gds | 0 .../sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds | 0 .../sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds | 0 .../sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds | 0 .../sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds | 0 .../sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds | 0 .../sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds | 0 .../rf_coils/sky130_fd_pr__rf_test_coil1.gds | 0 .../rf_coils/sky130_fd_pr__rf_test_coil2.gds | 0 .../rf_coils/sky130_fd_pr__rf_test_coil3.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds | 0 ...130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds | 0 ...30_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds | 0 ...30_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds | 0 ...fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds | 0 ...30_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds | 0 ...30_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds | 0 .../sky130_fd_pr__rf_nfet_20v0_aup.gds | 0 .../sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds | 0 .../sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds | 0 ...130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds | 0 ...ky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds | 0 ...0_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds | 0 .../sky130_fd_pr__rf_nfet_20v0_withptap.gds | 0 ...ky130_fd_pr__rf_nfet_20v0_withptap_iso.gds | 0 ...ky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds | 0 ...d_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds | 0 ...130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds | 0 ...30_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds | 0 ...30_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds | 0 ...fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds | 0 ...fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds | 0 ...fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds | 0 ...fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds | 0 ...fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds | 0 ...fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds | 0 ...fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds | 0 ...fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds | 0 ...30_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds | 0 ...30_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds | 0 ...fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds | 0 .../sky130_fd_pr__rf_pfet_20v0_withptap.gds | 0 .../cells/klayout/pymacros/cells/globals.py | 70 - sky130/cells/klayout/pymacros/cells/gr.py | 113 - .../klayout/pymacros/cells/layers_def.py | 100 - .../klayout/pymacros/cells/parent_res.py | 0 .../klayout/pymacros/cells/res_diff_child.py | 0 .../pymacros/cells/res_diff_klayout_panel.py | 87 - .../pymacros/cells/res_klayout_panel.py | 126 - .../klayout/pymacros/cells/res_metal_child.py | 0 .../pymacros/cells/res_metal_klayout_panel.py | 117 - .../klayout/pymacros/cells/res_poly_child.py | 0 .../pymacros/cells/res_poly_klayout_panel.py | 173 - sky130/cells/klayout/pymacros/cells/rf.py | 144 - .../klayout/pymacros/cells/via_generator.py | 0 sky130/cells/klayout/pymacros/cells/vias.py | 199 - sky130/cells/klayout/pymacros/cells/vpp.py | 67 - sky130/cells/klayout/pymacros/sky130.lym | 0 sky130/compile_components.py | 64 +- sky130/components.py | 4362 ++++++++--------- tests/test_components.py | 9 +- .../test_pdk_settings_a2111o_1_.yml | 5 + .../test_pdk_settings_a2111o_2_.yml | 5 + .../test_pdk_settings_a2111o_4_.yml | 5 + .../test_pdk_settings_a2111oi_0_.yml | 5 + .../test_pdk_settings_a2111oi_1_.yml | 5 + .../test_pdk_settings_a2111oi_2_.yml | 5 + .../test_pdk_settings_a2111oi_4_.yml | 5 + .../test_pdk_settings_a211o_1_.yml | 5 + .../test_pdk_settings_a211o_2_.yml | 5 + .../test_pdk_settings_a211o_4_.yml | 5 + .../test_pdk_settings_a211oi_1_.yml | 5 + .../test_pdk_settings_a211oi_2_.yml | 5 + .../test_pdk_settings_a211oi_4_.yml | 5 + .../test_pdk_settings_a21bo_1_.yml | 5 + .../test_pdk_settings_a21bo_2_.yml | 5 + .../test_pdk_settings_a21bo_4_.yml | 5 + .../test_pdk_settings_a21boi_0_.yml | 5 + .../test_pdk_settings_a21boi_1_.yml | 5 + .../test_pdk_settings_a21boi_2_.yml | 5 + .../test_pdk_settings_a21boi_4_.yml | 5 + ...2_1_.yml => test_pdk_settings_a21o_1_.yml} | 4 +- ...2_2_.yml => test_pdk_settings_a21o_2_.yml} | 4 +- ...2_4_.yml => test_pdk_settings_a21o_4_.yml} | 4 +- .../test_pdk_settings_a21oi_1_.yml | 5 + .../test_pdk_settings_a21oi_2_.yml | 5 + .../test_pdk_settings_a21oi_4_.yml | 5 + .../test_pdk_settings_a221o_1_.yml | 5 + .../test_pdk_settings_a221o_2_.yml | 5 + .../test_pdk_settings_a221o_4_.yml | 5 + .../test_pdk_settings_a221oi_1_.yml | 5 + .../test_pdk_settings_a221oi_2_.yml | 5 + .../test_pdk_settings_a221oi_4_.yml | 5 + .../test_pdk_settings_a222oi_1_.yml | 5 + .../test_pdk_settings_a22o_1_.yml | 5 + .../test_pdk_settings_a22o_2_.yml | 5 + .../test_pdk_settings_a22o_4_.yml | 5 + .../test_pdk_settings_a22oi_1_.yml | 5 + .../test_pdk_settings_a22oi_2_.yml | 5 + .../test_pdk_settings_a22oi_4_.yml | 5 + .../test_pdk_settings_a2bb2o_1_.yml | 5 + ...1_.yml => test_pdk_settings_a2bb2o_2_.yml} | 4 +- .../test_pdk_settings_a2bb2o_4_.yml | 5 + .../test_pdk_settings_a2bb2oi_1_.yml | 5 + .../test_pdk_settings_a2bb2oi_2_.yml | 5 + .../test_pdk_settings_a2bb2oi_4_.yml | 5 + .../test_pdk_settings_a311o_1_.yml | 5 + .../test_pdk_settings_a311o_2_.yml | 5 + .../test_pdk_settings_a311o_4_.yml | 5 + .../test_pdk_settings_a311oi_1_.yml | 5 + .../test_pdk_settings_a311oi_2_.yml | 5 + .../test_pdk_settings_a311oi_4_.yml | 5 + .../test_pdk_settings_a31o_1_.yml | 5 + .../test_pdk_settings_a31o_2_.yml | 5 + .../test_pdk_settings_a31o_4_.yml | 5 + .../test_pdk_settings_a31oi_1_.yml | 5 + .../test_pdk_settings_a31oi_2_.yml | 5 + .../test_pdk_settings_a31oi_4_.yml | 5 + .../test_pdk_settings_a32o_1_.yml | 5 + .../test_pdk_settings_a32o_2_.yml | 5 + .../test_pdk_settings_a32o_4_.yml | 5 + .../test_pdk_settings_a32oi_1_.yml | 5 + .../test_pdk_settings_a32oi_2_.yml | 5 + .../test_pdk_settings_a32oi_4_.yml | 5 + .../test_pdk_settings_a41o_1_.yml | 5 + .../test_pdk_settings_a41o_2_.yml | 5 + .../test_pdk_settings_a41o_4_.yml | 5 + .../test_pdk_settings_a41oi_1_.yml | 5 + .../test_pdk_settings_a41oi_2_.yml | 5 + .../test_pdk_settings_a41oi_4_.yml | 5 + .../test_pdk_settings_and2_0_.yml | 5 + .../test_pdk_settings_and2_1_.yml | 5 + .../test_pdk_settings_and2_2_.yml | 5 + .../test_pdk_settings_and2_4_.yml | 5 + .../test_pdk_settings_and2b_1_.yml | 5 + .../test_pdk_settings_and2b_2_.yml | 5 + ..._0_.yml => test_pdk_settings_and2b_4_.yml} | 4 +- .../test_pdk_settings_and3_1_.yml | 5 + .../test_pdk_settings_and3_2_.yml | 5 + .../test_pdk_settings_and3_4_.yml | 5 + .../test_pdk_settings_and3b_1_.yml | 5 + .../test_pdk_settings_and3b_2_.yml | 5 + .../test_pdk_settings_and3b_4_.yml | 5 + .../test_pdk_settings_and4_1_.yml | 5 + .../test_pdk_settings_and4_2_.yml | 5 + .../test_pdk_settings_and4_4_.yml | 5 + .../test_pdk_settings_and4b_1_.yml | 5 + .../test_pdk_settings_and4b_2_.yml | 5 + .../test_pdk_settings_and4b_4_.yml | 5 + .../test_pdk_settings_and4bb_1_.yml | 5 + .../test_pdk_settings_and4bb_2_.yml | 5 + .../test_pdk_settings_and4bb_4_.yml | 5 + .../test_pdk_settings_buf_12_.yml | 5 + .../test_pdk_settings_buf_16_.yml | 5 + .../test_pdk_settings_buf_1_.yml | 5 + .../test_pdk_settings_buf_2_.yml | 5 + .../test_pdk_settings_buf_4_.yml | 5 + .../test_pdk_settings_buf_6_.yml | 5 + .../test_pdk_settings_buf_8_.yml | 5 + .../test_pdk_settings_bufbuf_16_.yml | 5 + .../test_pdk_settings_bufbuf_8_.yml | 5 + .../test_pdk_settings_bufinv_16_.yml | 5 + .../test_pdk_settings_bufinv_8_.yml | 5 + ...ings_cap_vpp_02p4x04p6_m1m2_noshield_.yml} | 4 +- ...02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 + ...02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 + ...02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 + ...02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 + ...2p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml | 5 + ...p_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml | 5 + ...ngs_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml | 5 + ...p_04p4x04p6_l1m1m2_noshield_o2subcell_.yml | 5 + ...vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml | 5 + ...tings_cap_vpp_04p4x04p6_m1m2_noshield_.yml | 5 + ...gs_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml | 5 + ...tings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml | 5 + ...ngs_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml | 5 + ...p_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml | 5 + ...p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml | 5 + ...05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml | 5 + ...cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml | 5 + ...vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml | 5 + ...s_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml | 5 + ...p_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml | 5 + ...ngs_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml | 5 + ...p_08p6x07p8_l1m1m2_noshield_o2subcell_.yml | 5 + ...vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml | 5 + ...tings_cap_vpp_08p6x07p8_m1m2_noshield_.yml | 5 + ...tings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml | 5 + ...ngs_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml | 5 + ...p_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml | 5 + ...p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml | 5 + ...11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml | 5 + ...vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml | 5 + ..._11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml | 5 + ...ngs_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml | 5 + ...s_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml | 5 + ...s_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml | 5 + ...p_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml | 5 + ...cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml | 5 + ...vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml | 5 + ...cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml | 5 + ...vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml | 5 + ...p_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml | 5 + ...p_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml | 5 + ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml | 5 + ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml | 5 + ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml | 5 + ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml | 5 + ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml | 5 + ..._11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml | 5 + ...tings_cap_vpp_11p5x11p7_m1m2_noshield_.yml | 5 + ...tings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml | 5 + ...ngs_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml | 5 + ...p_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml | 5 + ...p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml | 5 + ...cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml | 5 + ...vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml | 5 + ...s_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml | 5 + ...tings_cap_vpp_11p5x11p7_m1m4_noshield_.yml | 5 + ...vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml | 5 + ...vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml | 5 + ...5p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml | 5 + .../test_pdk_settings_clkbuf_16_.yml | 5 + .../test_pdk_settings_clkbuf_1_.yml | 5 + .../test_pdk_settings_clkbuf_2_.yml | 5 + .../test_pdk_settings_clkbuf_4_.yml | 5 + .../test_pdk_settings_clkbuf_8_.yml | 5 + .../test_pdk_settings_clkdlybuf4s15_1_.yml | 5 + .../test_pdk_settings_clkdlybuf4s15_2_.yml | 5 + .../test_pdk_settings_clkdlybuf4s18_1_.yml | 5 + .../test_pdk_settings_clkdlybuf4s18_2_.yml | 5 + .../test_pdk_settings_clkdlybuf4s25_1_.yml | 5 + .../test_pdk_settings_clkdlybuf4s25_2_.yml | 5 + .../test_pdk_settings_clkdlybuf4s50_1_.yml | 5 + .../test_pdk_settings_clkdlybuf4s50_2_.yml | 5 + .../test_pdk_settings_clkinv_16_.yml | 5 + .../test_pdk_settings_clkinv_1_.yml | 5 + .../test_pdk_settings_clkinv_2_.yml | 5 + .../test_pdk_settings_clkinv_4_.yml | 5 + .../test_pdk_settings_clkinv_8_.yml | 5 + .../test_pdk_settings_clkinvlp_2_.yml | 5 + .../test_pdk_settings_clkinvlp_4_.yml | 5 + .../test_pdk_settings_conb_1_.yml | 5 + .../test_pdk_settings_decap_12_.yml | 5 + .../test_pdk_settings_decap_3_.yml | 5 + .../test_pdk_settings_decap_4_.yml | 5 + .../test_pdk_settings_decap_6_.yml | 5 + .../test_pdk_settings_decap_8_.yml | 5 + .../test_pdk_settings_dfbbn_1_.yml | 5 + .../test_pdk_settings_dfbbn_2_.yml | 5 + .../test_pdk_settings_dfbbp_1_.yml | 5 + .../test_pdk_settings_dfrbp_1_.yml | 5 + .../test_pdk_settings_dfrbp_2_.yml | 5 + .../test_pdk_settings_dfrtn_1_.yml | 5 + .../test_pdk_settings_dfrtp_1_.yml | 5 + .../test_pdk_settings_dfrtp_2_.yml | 5 + .../test_pdk_settings_dfrtp_4_.yml | 5 + .../test_pdk_settings_dfsbp_1_.yml | 5 + .../test_pdk_settings_dfsbp_2_.yml | 5 + ..._1_.yml => test_pdk_settings_dfstp_1_.yml} | 4 +- ..._2_.yml => test_pdk_settings_dfstp_2_.yml} | 4 +- ..._4_.yml => test_pdk_settings_dfstp_4_.yml} | 4 +- .../test_pdk_settings_dfxbp_1_.yml | 5 + .../test_pdk_settings_dfxbp_2_.yml | 5 + .../test_pdk_settings_dfxtp_1_.yml | 5 + .../test_pdk_settings_dfxtp_2_.yml | 5 + .../test_pdk_settings_dfxtp_4_.yml | 5 + .../test_pdk_settings_diode_2_.yml | 5 + .../test_pdk_settings_dlclkp_1_.yml | 5 + .../test_pdk_settings_dlclkp_2_.yml | 5 + .../test_pdk_settings_dlclkp_4_.yml | 5 + .../test_pdk_settings_dlrbn_1_.yml | 5 + .../test_pdk_settings_dlrbn_2_.yml | 5 + .../test_pdk_settings_dlrbp_1_.yml | 5 + .../test_pdk_settings_dlrbp_2_.yml | 5 + .../test_pdk_settings_dlrtn_1_.yml | 5 + .../test_pdk_settings_dlrtn_2_.yml | 5 + .../test_pdk_settings_dlrtn_4_.yml | 5 + .../test_pdk_settings_dlrtp_1_.yml | 5 + .../test_pdk_settings_dlrtp_2_.yml | 5 + .../test_pdk_settings_dlrtp_4_.yml | 5 + .../test_pdk_settings_dlxbn_1_.yml | 5 + .../test_pdk_settings_dlxbn_2_.yml | 5 + .../test_pdk_settings_dlxbp_1_.yml | 5 + .../test_pdk_settings_dlxtn_1_.yml | 5 + .../test_pdk_settings_dlxtn_2_.yml | 5 + .../test_pdk_settings_dlxtn_4_.yml | 5 + .../test_pdk_settings_dlxtp_1_.yml | 5 + .../test_pdk_settings_dlygate4sd1_1_.yml | 5 + .../test_pdk_settings_dlygate4sd2_1_.yml | 5 + .../test_pdk_settings_dlygate4sd3_1_.yml | 5 + .../test_pdk_settings_dlymetal6s2s_1_.yml | 5 + .../test_pdk_settings_dlymetal6s4s_1_.yml | 5 + .../test_pdk_settings_dlymetal6s6s_1_.yml | 5 + .../test_pdk_settings_ebufn_1_.yml | 5 + .../test_pdk_settings_ebufn_2_.yml | 5 + .../test_pdk_settings_ebufn_4_.yml | 5 + .../test_pdk_settings_ebufn_8_.yml | 5 + .../test_pdk_settings_edfxbp_1_.yml | 5 + .../test_pdk_settings_edfxtp_1_.yml | 5 + .../test_pdk_settings_einvn_0_.yml | 5 + .../test_pdk_settings_einvn_1_.yml | 5 + .../test_pdk_settings_einvn_2_.yml | 5 + .../test_pdk_settings_einvn_4_.yml | 5 + .../test_pdk_settings_einvn_8_.yml | 5 + .../test_pdk_settings_einvp_1_.yml | 5 + .../test_pdk_settings_einvp_2_.yml | 5 + .../test_pdk_settings_einvp_4_.yml | 5 + .../test_pdk_settings_einvp_8_.yml | 5 + ...ttings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml | 5 + ...tings_esd_rf_nfet_20v0_hbm_32vW60p00_.yml} | 4 +- ...ttings_esd_rf_nfet_20v0_iec_21vW60p00_.yml | 5 + ...ttings_esd_rf_nfet_20v0_iec_32vW60p00_.yml | 5 + .../test_pdk_settings_fa_1_.yml | 5 + .../test_pdk_settings_fa_2_.yml | 5 + .../test_pdk_settings_fa_4_.yml | 5 + .../test_pdk_settings_fah_1_.yml | 5 + .../test_pdk_settings_fahcin_1_.yml | 5 + .../test_pdk_settings_fahcon_1_.yml | 5 + .../test_pdk_settings_fill_1_.yml | 5 + .../test_pdk_settings_fill_2_.yml | 5 + .../test_pdk_settings_fill_4_.yml | 5 + .../test_pdk_settings_fill_8_.yml | 5 + .../test_pdk_settings_ha_1_.yml | 5 + .../test_pdk_settings_ha_2_.yml | 5 + .../test_pdk_settings_ha_4_.yml | 5 + .../test_pdk_settings_inv_12_.yml | 5 + .../test_pdk_settings_inv_16_.yml | 5 + .../test_pdk_settings_inv_1_.yml | 5 + .../test_pdk_settings_inv_2_.yml | 5 + .../test_pdk_settings_inv_4_.yml | 5 + .../test_pdk_settings_inv_6_.yml | 5 + .../test_pdk_settings_inv_8_.yml | 5 + .../test_pdk_settings_lpflow_bleeder_1_.yml | 5 + ...st_pdk_settings_lpflow_clkbufkapwr_16_.yml | 5 + ...est_pdk_settings_lpflow_clkbufkapwr_1_.yml | 5 + ...est_pdk_settings_lpflow_clkbufkapwr_2_.yml | 5 + ...est_pdk_settings_lpflow_clkbufkapwr_4_.yml | 5 + ...est_pdk_settings_lpflow_clkbufkapwr_8_.yml | 5 + ...st_pdk_settings_lpflow_clkinvkapwr_16_.yml | 5 + ...est_pdk_settings_lpflow_clkinvkapwr_1_.yml | 5 + ...est_pdk_settings_lpflow_clkinvkapwr_2_.yml | 5 + ...est_pdk_settings_lpflow_clkinvkapwr_4_.yml | 5 + ...est_pdk_settings_lpflow_clkinvkapwr_8_.yml | 5 + ...est_pdk_settings_lpflow_decapkapwr_12_.yml | 5 + ...test_pdk_settings_lpflow_decapkapwr_3_.yml | 5 + ...test_pdk_settings_lpflow_decapkapwr_4_.yml | 5 + ...test_pdk_settings_lpflow_decapkapwr_6_.yml | 5 + ...test_pdk_settings_lpflow_decapkapwr_8_.yml | 5 + ...test_pdk_settings_lpflow_inputiso0n_1_.yml | 5 + ...test_pdk_settings_lpflow_inputiso0p_1_.yml | 5 + ...test_pdk_settings_lpflow_inputiso1n_1_.yml | 5 + ...test_pdk_settings_lpflow_inputiso1p_1_.yml | 5 + ...t_pdk_settings_lpflow_inputisolatch_1_.yml | 5 + ...test_pdk_settings_lpflow_isobufsrc_16_.yml | 5 + .../test_pdk_settings_lpflow_isobufsrc_1_.yml | 5 + .../test_pdk_settings_lpflow_isobufsrc_2_.yml | 5 + .../test_pdk_settings_lpflow_isobufsrc_4_.yml | 5 + .../test_pdk_settings_lpflow_isobufsrc_8_.yml | 5 + ...pdk_settings_lpflow_isobufsrckapwr_16_.yml | 5 + ...ings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml | 5 + ...ings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml | 5 + ...ings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml | 5 + ...dk_settings_lpflow_lsbuf_lh_isowell_4_.yml | 5 + ...ettings_lpflow_lsbuf_lh_isowell_tap_1_.yml | 5 + ...ettings_lpflow_lsbuf_lh_isowell_tap_2_.yml | 5 + ...ettings_lpflow_lsbuf_lh_isowell_tap_4_.yml | 5 + .../test_pdk_settings_macro_sparecell_.yml | 5 + .../test_pdk_settings_maj3_1_.yml | 5 + .../test_pdk_settings_maj3_2_.yml | 5 + .../test_pdk_settings_maj3_4_.yml | 5 + .../test_pdk_settings_mux2_1_.yml | 5 + .../test_pdk_settings_mux2_2_.yml | 5 + .../test_pdk_settings_mux2_4_.yml | 5 + .../test_pdk_settings_mux2_8_.yml | 5 + .../test_pdk_settings_mux2i_1_.yml | 5 + .../test_pdk_settings_mux2i_2_.yml | 5 + .../test_pdk_settings_mux2i_4_.yml | 5 + .../test_pdk_settings_mux4_1_.yml | 5 + .../test_pdk_settings_mux4_2_.yml | 5 + .../test_pdk_settings_mux4_4_.yml | 5 + .../test_pdk_settings_nand2_1_.yml | 5 + .../test_pdk_settings_nand2_2_.yml | 5 + .../test_pdk_settings_nand2_4_.yml | 5 + .../test_pdk_settings_nand2_8_.yml | 5 + .../test_pdk_settings_nand2b_1_.yml | 5 + .../test_pdk_settings_nand2b_2_.yml | 5 + .../test_pdk_settings_nand2b_4_.yml | 5 + .../test_pdk_settings_nand3_1_.yml | 5 + .../test_pdk_settings_nand3_2_.yml | 5 + .../test_pdk_settings_nand3_4_.yml | 5 + .../test_pdk_settings_nand3b_1_.yml | 5 + ...1_.yml => test_pdk_settings_nand3b_2_.yml} | 4 +- .../test_pdk_settings_nand3b_4_.yml | 5 + .../test_pdk_settings_nand4_1_.yml | 5 + .../test_pdk_settings_nand4_2_.yml | 5 + .../test_pdk_settings_nand4_4_.yml | 5 + .../test_pdk_settings_nand4b_1_.yml | 5 + .../test_pdk_settings_nand4b_2_.yml | 5 + .../test_pdk_settings_nand4b_4_.yml | 5 + .../test_pdk_settings_nand4bb_1_.yml | 5 + .../test_pdk_settings_nand4bb_2_.yml | 5 + .../test_pdk_settings_nand4bb_4_.yml | 5 + .../test_pdk_settings_nor2_1_.yml | 5 + .../test_pdk_settings_nor2_2_.yml | 5 + .../test_pdk_settings_nor2_4_.yml | 5 + .../test_pdk_settings_nor2_8_.yml | 5 + .../test_pdk_settings_nor2b_1_.yml | 5 + .../test_pdk_settings_nor2b_2_.yml | 5 + .../test_pdk_settings_nor2b_4_.yml | 5 + .../test_pdk_settings_nor3_1_.yml | 5 + .../test_pdk_settings_nor3_2_.yml | 5 + .../test_pdk_settings_nor3_4_.yml | 5 + .../test_pdk_settings_nor3b_1_.yml | 5 + .../test_pdk_settings_nor3b_2_.yml | 5 + .../test_pdk_settings_nor3b_4_.yml | 5 + .../test_pdk_settings_nor4_1_.yml | 5 + .../test_pdk_settings_nor4_2_.yml | 5 + .../test_pdk_settings_nor4_4_.yml | 5 + .../test_pdk_settings_nor4b_1_.yml | 5 + .../test_pdk_settings_nor4b_2_.yml | 5 + .../test_pdk_settings_nor4b_4_.yml | 5 + ...1_.yml => test_pdk_settings_nor4bb_1_.yml} | 4 +- .../test_pdk_settings_nor4bb_2_.yml | 5 + .../test_pdk_settings_nor4bb_4_.yml | 5 + .../test_pdk_settings_o2111a_1_.yml | 5 + .../test_pdk_settings_o2111a_2_.yml | 5 + .../test_pdk_settings_o2111a_4_.yml | 5 + .../test_pdk_settings_o2111ai_1_.yml | 5 + .../test_pdk_settings_o2111ai_2_.yml | 5 + .../test_pdk_settings_o2111ai_4_.yml | 5 + .../test_pdk_settings_o211a_1_.yml | 5 + .../test_pdk_settings_o211a_2_.yml | 5 + .../test_pdk_settings_o211a_4_.yml | 5 + .../test_pdk_settings_o211ai_1_.yml | 5 + .../test_pdk_settings_o211ai_2_.yml | 5 + .../test_pdk_settings_o211ai_4_.yml | 5 + .../test_pdk_settings_o21a_1_.yml | 5 + .../test_pdk_settings_o21a_2_.yml | 5 + .../test_pdk_settings_o21a_4_.yml | 5 + .../test_pdk_settings_o21ai_0_.yml | 5 + ..._1_.yml => test_pdk_settings_o21ai_1_.yml} | 4 +- .../test_pdk_settings_o21ai_2_.yml | 5 + ..._4_.yml => test_pdk_settings_o21ai_4_.yml} | 4 +- .../test_pdk_settings_o21ba_1_.yml | 5 + .../test_pdk_settings_o21ba_2_.yml | 5 + .../test_pdk_settings_o21ba_4_.yml | 5 + .../test_pdk_settings_o21bai_1_.yml | 5 + .../test_pdk_settings_o21bai_2_.yml | 5 + .../test_pdk_settings_o21bai_4_.yml | 5 + .../test_pdk_settings_o221a_1_.yml | 5 + .../test_pdk_settings_o221a_2_.yml | 5 + .../test_pdk_settings_o221a_4_.yml | 5 + .../test_pdk_settings_o221ai_1_.yml | 5 + .../test_pdk_settings_o221ai_2_.yml | 5 + .../test_pdk_settings_o221ai_4_.yml | 5 + .../test_pdk_settings_o22a_1_.yml | 5 + .../test_pdk_settings_o22a_2_.yml | 5 + .../test_pdk_settings_o22a_4_.yml | 5 + .../test_pdk_settings_o22ai_1_.yml | 5 + .../test_pdk_settings_o22ai_2_.yml | 5 + .../test_pdk_settings_o22ai_4_.yml | 5 + .../test_pdk_settings_o2bb2a_1_.yml | 5 + .../test_pdk_settings_o2bb2a_2_.yml | 5 + .../test_pdk_settings_o2bb2a_4_.yml | 5 + .../test_pdk_settings_o2bb2ai_1_.yml | 5 + .../test_pdk_settings_o2bb2ai_2_.yml | 5 + .../test_pdk_settings_o2bb2ai_4_.yml | 5 + .../test_pdk_settings_o311a_1_.yml | 5 + .../test_pdk_settings_o311a_2_.yml | 5 + .../test_pdk_settings_o311a_4_.yml | 5 + .../test_pdk_settings_o311ai_0_.yml | 5 + .../test_pdk_settings_o311ai_1_.yml | 5 + .../test_pdk_settings_o311ai_2_.yml | 5 + .../test_pdk_settings_o311ai_4_.yml | 5 + .../test_pdk_settings_o31a_1_.yml | 5 + .../test_pdk_settings_o31a_2_.yml | 5 + .../test_pdk_settings_o31a_4_.yml | 5 + .../test_pdk_settings_o31ai_1_.yml | 5 + .../test_pdk_settings_o31ai_2_.yml | 5 + .../test_pdk_settings_o31ai_4_.yml | 5 + .../test_pdk_settings_o32a_1_.yml | 5 + .../test_pdk_settings_o32a_2_.yml | 5 + .../test_pdk_settings_o32a_4_.yml | 5 + .../test_pdk_settings_o32ai_1_.yml | 5 + .../test_pdk_settings_o32ai_2_.yml | 5 + .../test_pdk_settings_o32ai_4_.yml | 5 + .../test_pdk_settings_o41a_1_.yml | 5 + .../test_pdk_settings_o41a_2_.yml | 5 + .../test_pdk_settings_o41a_4_.yml | 5 + .../test_pdk_settings_o41ai_1_.yml | 5 + .../test_pdk_settings_o41ai_2_.yml | 5 + .../test_pdk_settings_o41ai_4_.yml | 5 + .../test_pdk_settings_or2_0_.yml | 5 + .../test_pdk_settings_or2_1_.yml | 5 + .../test_pdk_settings_or2_2_.yml | 5 + .../test_pdk_settings_or2_4_.yml | 5 + .../test_pdk_settings_or2b_1_.yml | 5 + .../test_pdk_settings_or2b_2_.yml | 5 + .../test_pdk_settings_or2b_4_.yml | 5 + .../test_pdk_settings_or3_1_.yml | 5 + .../test_pdk_settings_or3_2_.yml | 5 + .../test_pdk_settings_or3_4_.yml | 5 + .../test_pdk_settings_or3b_1_.yml | 5 + .../test_pdk_settings_or3b_2_.yml | 5 + .../test_pdk_settings_or3b_4_.yml | 5 + .../test_pdk_settings_or4_1_.yml | 5 + .../test_pdk_settings_or4_2_.yml | 5 + .../test_pdk_settings_or4_4_.yml | 5 + .../test_pdk_settings_or4b_1_.yml | 5 + .../test_pdk_settings_or4b_2_.yml | 5 + .../test_pdk_settings_or4b_4_.yml | 5 + .../test_pdk_settings_or4bb_1_.yml | 5 + .../test_pdk_settings_or4bb_2_.yml | 5 + .../test_pdk_settings_or4bb_4_.yml | 5 + .../test_pdk_settings_probe_p_8_.yml | 5 + .../test_pdk_settings_probec_p_8_.yml | 5 + .../test_pdk_settings_rf_aura_blocking_.yml | 5 + ...t_pdk_settings_rf_aura_drc_flag_check_.yml | 5 + .../test_pdk_settings_rf_aura_lvs_drc_.yml | 5 + ..._settings_rf_nfet_01v8_aM02W1p65L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_aM02W1p65L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_aM02W1p65L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_aM02W3p00L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_aM02W3p00L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_aM02W3p00L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_aM02W5p00L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_aM02W5p00L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_aM02W5p00L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_aM04W1p65L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_aM04W1p65L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_aM04W1p65L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_aM04W3p00L0p15_.yml | 5 + ...settings_rf_nfet_01v8_aM04W3p00L0p18_.yml} | 4 +- ..._settings_rf_nfet_01v8_aM04W3p00L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_aM04W5p00L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_aM04W5p00L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_aM04W5p00L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_bM02W1p65L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_bM02W1p65L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_bM02W1p65L0p25_.yml | 5 + ...settings_rf_nfet_01v8_bM02W3p00L0p15_.yml} | 4 +- ...settings_rf_nfet_01v8_bM02W3p00L0p18_.yml} | 4 +- ..._settings_rf_nfet_01v8_bM02W3p00L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_bM02W5p00L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_bM02W5p00L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_bM02W5p00L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_bM04W1p65L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_bM04W1p65L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_bM04W1p65L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_bM04W3p00L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_bM04W3p00L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_bM04W3p00L0p25_.yml | 5 + ..._settings_rf_nfet_01v8_bM04W5p00L0p15_.yml | 5 + ..._settings_rf_nfet_01v8_bM04W5p00L0p18_.yml | 5 + ..._settings_rf_nfet_01v8_bM04W5p00L0p25_.yml | 5 + ...settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml | 5 + ...settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml | 5 + ...ings_rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml} | 4 +- ...tings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml | 5 + ...ings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml} | 4 +- ...tings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml | 5 + ...ings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml} | 4 +- ...tings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml | 5 + ...ings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml} | 4 +- ...tings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml | 5 + ...ings_rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml} | 4 +- ...tings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml | 5 + ...tings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml | 5 + ...settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml | 5 + ...settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml | 5 + .../test_pdk_settings_rf_nfet_20v0_aup_.yml | 5 + ..._pdk_settings_rf_nfet_20v0_noptap_iso_.yml | 5 + ...est_pdk_settings_rf_nfet_20v0_nvt_aup_.yml | 5 + ..._settings_rf_nfet_20v0_nvt_noptap_iso_.yml | 5 + ...dk_settings_rf_nfet_20v0_nvt_withptap_.yml | 5 + ...ttings_rf_nfet_20v0_nvt_withptap_iso_.yml} | 4 +- ...st_pdk_settings_rf_nfet_20v0_withptap_.yml | 5 + ...dk_settings_rf_nfet_20v0_withptap_iso_.yml | 5 + ...dk_settings_rf_nfet_20v0_zvt_withptap_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml | 5 + ...ings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml | 5 + ...ngs_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml} | 4 +- ...t_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml | 5 + ...t_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml | 5 + ...t_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml | 5 + ...t_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml | 5 + ...t_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml | 5 + ...t_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml | 5 + ...t_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml | 5 + ...t_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml | 5 + ...t_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml | 5 + ..._settings_rf_pfet_01v8_aF02W0p84L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF02W1p68L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF02W2p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF02W3p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF02W5p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF04W0p84L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF04W1p68L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF04W2p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF04W3p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF04W5p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF06W0p84L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF06W1p68L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF06W2p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF06W3p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF08W0p84L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aF08W1p68L0p15_.yml | 5 + ...settings_rf_pfet_01v8_aM02W1p65L0p15_.yml} | 4 +- ...settings_rf_pfet_01v8_aM02W1p65L0p18_.yml} | 4 +- ..._settings_rf_pfet_01v8_aM02W1p65L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_aM02W3p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aM02W3p00L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_aM02W3p00L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_aM02W5p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aM02W5p00L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_aM02W5p00L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_aM04W1p65L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aM04W1p65L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_aM04W1p65L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_aM04W3p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aM04W3p00L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_aM04W3p00L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_aM04W5p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_aM04W5p00L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_aM04W5p00L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_bM02W1p65L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_bM02W1p65L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_bM02W1p65L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_bM02W3p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_bM02W3p00L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_bM02W3p00L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_bM02W5p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_bM02W5p00L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_bM02W5p00L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_bM04W1p65L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_bM04W1p65L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_bM04W1p65L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_bM04W3p00L0p15_.yml | 5 + ...settings_rf_pfet_01v8_bM04W3p00L0p18_.yml} | 4 +- ..._settings_rf_pfet_01v8_bM04W3p00L0p25_.yml | 5 + ..._settings_rf_pfet_01v8_bM04W5p00L0p15_.yml | 5 + ..._settings_rf_pfet_01v8_bM04W5p00L0p18_.yml | 5 + ..._settings_rf_pfet_01v8_bM04W5p00L0p25_.yml | 5 + ...settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml | 5 + ...settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml | 5 + ...tings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml | 5 + ...tings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml | 5 + ...tings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml | 5 + ...tings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml | 5 + ...tings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml | 5 + ...tings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml | 5 + ...tings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml | 5 + ...tings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml | 5 + ...ettings_rf_pfet_01v8_mcM04W3p00L0p15_.yml} | 4 +- ...settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml | 5 + ...tings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml | 5 + ...st_pdk_settings_rf_pfet_20v0_withptap_.yml | 5 + ...t_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml | 5 + ...t_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml | 5 + .../test_pdk_settings_rf_test_coil1_.yml | 5 + .../test_pdk_settings_rf_test_coil2_.yml | 5 + .../test_pdk_settings_rf_test_coil3_.yml | 5 + .../test_pdk_settings_sdfbbn_1_.yml | 5 + .../test_pdk_settings_sdfbbn_2_.yml | 5 + .../test_pdk_settings_sdfbbp_1_.yml | 5 + .../test_pdk_settings_sdfrbp_1_.yml | 5 + .../test_pdk_settings_sdfrbp_2_.yml | 5 + .../test_pdk_settings_sdfrtn_1_.yml | 5 + .../test_pdk_settings_sdfrtp_1_.yml | 5 + .../test_pdk_settings_sdfrtp_2_.yml | 5 + .../test_pdk_settings_sdfrtp_4_.yml | 5 + .../test_pdk_settings_sdfsbp_1_.yml | 5 + .../test_pdk_settings_sdfsbp_2_.yml | 5 + .../test_pdk_settings_sdfstp_1_.yml | 5 + .../test_pdk_settings_sdfstp_2_.yml | 5 + .../test_pdk_settings_sdfstp_4_.yml | 5 + .../test_pdk_settings_sdfxbp_1_.yml | 5 + .../test_pdk_settings_sdfxbp_2_.yml | 5 + .../test_pdk_settings_sdfxtp_1_.yml | 5 + .../test_pdk_settings_sdfxtp_2_.yml | 5 + .../test_pdk_settings_sdfxtp_4_.yml | 5 + .../test_pdk_settings_sdlclkp_1_.yml | 5 + .../test_pdk_settings_sdlclkp_2_.yml | 5 + .../test_pdk_settings_sdlclkp_4_.yml | 5 + .../test_pdk_settings_sedfxbp_1_.yml | 5 + ..._.yml => test_pdk_settings_sedfxbp_2_.yml} | 4 +- .../test_pdk_settings_sedfxtp_1_.yml | 5 + .../test_pdk_settings_sedfxtp_2_.yml | 5 + .../test_pdk_settings_sedfxtp_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a2111o_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a2111o_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a2111o_4_.yml | 5 - ...k_settings_sky130_fd_sc_hd__a2111oi_0_.yml | 5 - ...k_settings_sky130_fd_sc_hd__a2111oi_1_.yml | 5 - ...k_settings_sky130_fd_sc_hd__a2111oi_2_.yml | 5 - ...k_settings_sky130_fd_sc_hd__a2111oi_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a211o_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a211o_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a211o_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a211oi_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a211oi_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a211oi_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a21boi_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a21boi_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a21boi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a21o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a21o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a21o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a221o_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a221o_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a221o_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a221oi_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a221oi_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a221oi_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a222oi_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a22o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a22o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a22o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml | 5 - ...k_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml | 5 - ...k_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml | 5 - ...k_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a311o_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a311o_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a311o_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a311oi_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a311oi_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__a311oi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a31o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a31o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a31o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a32o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a32o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a32o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a41o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a41o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__a41o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and2_0_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and2_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and2_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and2_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__and2b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__and2b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__and2b_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and3_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and3_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and3_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__and3b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__and3b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__and3b_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and4_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and4_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__and4_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__and4b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__and4b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__and4b_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__and4bb_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__and4bb_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__and4bb_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__buf_12_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__buf_16_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__buf_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__buf_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__buf_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__buf_6_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__buf_8_.yml | 5 - ...k_settings_sky130_fd_sc_hd__bufbuf_16_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__bufbuf_8_.yml | 5 - ...k_settings_sky130_fd_sc_hd__bufinv_16_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__bufinv_8_.yml | 5 - ...k_settings_sky130_fd_sc_hd__clkbuf_16_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__clkbuf_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__clkbuf_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__clkbuf_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__clkbuf_8_.yml | 5 - ...ings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml | 5 - ...ings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml | 5 - ...ings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml | 5 - ...ings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml | 5 - ...ings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml | 5 - ...ings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml | 5 - ...ings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml | 5 - ...ings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml | 5 - ...k_settings_sky130_fd_sc_hd__clkinv_16_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__clkinv_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__clkinv_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__clkinv_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__clkinv_8_.yml | 5 - ..._settings_sky130_fd_sc_hd__clkinvlp_2_.yml | 5 - ..._settings_sky130_fd_sc_hd__clkinvlp_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__conb_1_.yml | 2 - ...dk_settings_sky130_fd_sc_hd__decap_12_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__decap_3_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__decap_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__decap_6_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__decap_8_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__diode_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__dlclkp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__dlclkp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__dlclkp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml | 5 - ...ttings_sky130_fd_sc_hd__dlygate4sd1_1_.yml | 5 - ...ttings_sky130_fd_sc_hd__dlygate4sd2_1_.yml | 5 - ...ttings_sky130_fd_sc_hd__dlygate4sd3_1_.yml | 5 - ...tings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml | 5 - ...tings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml | 5 - ...tings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__edfxbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__edfxtp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__einvn_0_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__einvn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__einvn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__einvn_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__einvn_8_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__einvp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__einvp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__einvp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__einvp_8_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hd__fa_1_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hd__fa_2_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hd__fa_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__fah_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__fahcin_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__fahcon_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__fill_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__fill_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__fill_8_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hd__ha_1_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hd__ha_2_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hd__ha_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__inv_12_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__inv_16_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__inv_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__inv_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__inv_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__inv_6_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__inv_8_.yml | 5 - ...ngs_sky130_fd_sc_hd__lpflow_bleeder_1_.yml | 5 - ...ky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml | 5 - ...sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml | 5 - ...sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml | 5 - ...sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml | 5 - ...sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml | 5 - ...ky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml | 5 - ...sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml | 5 - ...sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml | 5 - ...sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml | 5 - ...sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml | 5 - ...sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml | 5 - ..._sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml | 5 - ..._sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml | 5 - ..._sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml | 5 - ..._sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml | 5 - ..._sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml | 5 - ..._sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml | 5 - ..._sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml | 5 - ..._sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml | 5 - ...y130_fd_sc_hd__lpflow_inputisolatch_1_.yml | 5 - ..._sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml | 5 - ...s_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml | 5 - ...s_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml | 5 - ...s_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml | 5 - ...s_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml | 5 - ...30_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml | 5 - ..._hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml | 5 - ..._hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml | 5 - ..._hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml | 5 - ...0_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml | 5 - ..._sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml | 5 - ..._sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml | 5 - ..._sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__maj3_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__maj3_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__maj3_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__mux2_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__mux2_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__mux2_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__mux2_8_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__mux4_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__mux4_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__mux4_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nand2_8_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nand2b_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nand2b_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nand2b_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nand3_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nand3_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nand3_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nand3b_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nand3b_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nand3b_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nand4_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nand4_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nand4_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nand4b_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nand4b_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nand4b_4_.yml | 5 - ...k_settings_sky130_fd_sc_hd__nand4bb_1_.yml | 5 - ...k_settings_sky130_fd_sc_hd__nand4bb_2_.yml | 5 - ...k_settings_sky130_fd_sc_hd__nand4bb_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__nor2_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__nor2_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__nor2_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__nor2_8_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__nor3_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__nor3_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__nor3_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__nor4_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nor4bb_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__nor4bb_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o2111a_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o2111a_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o2111a_4_.yml | 5 - ...k_settings_sky130_fd_sc_hd__o2111ai_1_.yml | 5 - ...k_settings_sky130_fd_sc_hd__o2111ai_2_.yml | 5 - ...k_settings_sky130_fd_sc_hd__o2111ai_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o211a_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o211a_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o211a_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o211ai_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o211ai_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o211ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o21a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o21a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o21a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o21bai_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o21bai_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o21bai_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o221a_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o221a_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o221a_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o221ai_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o221ai_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o221ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o22a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o22a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o22a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml | 5 - ...k_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml | 5 - ...k_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml | 5 - ...k_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o311a_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o311a_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o311a_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o311ai_0_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o311ai_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o311ai_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__o311ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o31a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o31a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o31a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o32a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o32a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o32a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o41a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o41a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__o41a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__or2_0_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__or2_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__or2_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__or2_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__or2b_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__or2b_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__or2b_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__or3_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__or3_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__or3_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__or3b_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__or3b_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__or3b_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__or4_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__or4_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__or4b_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__or4b_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml | 5 - ...k_settings_sky130_fd_sc_hd__probe_p_8_.yml | 5 - ..._settings_sky130_fd_sc_hd__probec_p_8_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfstp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfstp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfstp_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml | 5 - ...k_settings_sky130_fd_sc_hd__sdlclkp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hd__sdlclkp_2_.yml | 5 - ...k_settings_sky130_fd_sc_hd__sdlclkp_4_.yml | 5 - ...k_settings_sky130_fd_sc_hd__sedfxbp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hd__sedfxbp_2_.yml | 5 - ...k_settings_sky130_fd_sc_hd__sedfxtp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hd__sedfxtp_2_.yml | 5 - ...k_settings_sky130_fd_sc_hd__sedfxtp_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__tap_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hd__tap_2_.yml | 5 - ..._settings_sky130_fd_sc_hd__tapvgnd2_1_.yml | 5 - ...k_settings_sky130_fd_sc_hd__tapvgnd_1_.yml | 5 - ...ttings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__xor2_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__xor2_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__xor2_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__xor3_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__xor3_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hd__xor3_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a2111o_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a2111o_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a2111o_4_.yml | 5 - ...k_settings_sky130_fd_sc_hs__a2111oi_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__a2111oi_2_.yml | 5 - ...k_settings_sky130_fd_sc_hs__a2111oi_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a211o_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a211o_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a211o_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a211oi_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a211oi_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a211oi_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a21bo_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a21bo_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a21bo_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a21boi_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a21boi_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a21boi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a21o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a21o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a21o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a21oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a21oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a21oi_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a221o_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a221o_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a221oi_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a221oi_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a221oi_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a222o_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a222o_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a222oi_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a222oi_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a22o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a22o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a22o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a22oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a22oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a22oi_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a2bb2o_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a2bb2o_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a2bb2o_4_.yml | 5 - ...k_settings_sky130_fd_sc_hs__a2bb2oi_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__a2bb2oi_2_.yml | 5 - ...k_settings_sky130_fd_sc_hs__a2bb2oi_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a311o_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a311o_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a311o_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a311oi_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a311oi_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__a311oi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a31o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a31o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a31o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a31oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a31oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a31oi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a32o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a32o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a32o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a32oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a32oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a32oi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a41o_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a41o_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__a41o_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a41oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a41oi_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__a41oi_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__and2_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__and2_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__and2_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__and2b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__and2b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__and2b_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__and3_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__and3_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__and3_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__and3b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__and3b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__and3b_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__and4_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__and4_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__and4_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__and4b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__and4b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__and4b_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__and4bb_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__and4bb_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__and4bb_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__buf_16_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__buf_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__buf_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__buf_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__buf_8_.yml | 5 - ...k_settings_sky130_fd_sc_hs__bufbuf_16_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__bufbuf_8_.yml | 5 - ...k_settings_sky130_fd_sc_hs__bufinv_16_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__bufinv_8_.yml | 5 - ...k_settings_sky130_fd_sc_hs__clkbuf_16_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__clkbuf_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__clkbuf_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__clkbuf_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__clkbuf_8_.yml | 5 - ...ings_sky130_fd_sc_hs__clkdlyinv3sd1_1_.yml | 5 - ...ings_sky130_fd_sc_hs__clkdlyinv3sd2_1_.yml | 5 - ...ings_sky130_fd_sc_hs__clkdlyinv3sd3_1_.yml | 5 - ...ings_sky130_fd_sc_hs__clkdlyinv5sd1_1_.yml | 5 - ...ings_sky130_fd_sc_hs__clkdlyinv5sd2_1_.yml | 5 - ...ings_sky130_fd_sc_hs__clkdlyinv5sd3_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__clkinv_16_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__clkinv_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__clkinv_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__clkinv_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__clkinv_8_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__conb_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__decap_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__decap_8_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfbbn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfbbn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfbbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfrbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfrbp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfrtn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfrtp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfrtp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfrtp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfsbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfsbp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfstp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfstp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfstp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfxbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfxbp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfxtp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfxtp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dfxtp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__diode_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__dlclkp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__dlclkp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__dlclkp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrbn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrbn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrbp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrtn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrtn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrtn_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrtp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrtp_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlrtp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlxbn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlxbn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlxbp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlxtn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlxtn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlxtn_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__dlxtp_1_.yml | 5 - ...ttings_sky130_fd_sc_hs__dlygate4sd1_1_.yml | 5 - ...ttings_sky130_fd_sc_hs__dlygate4sd2_1_.yml | 5 - ...ttings_sky130_fd_sc_hs__dlygate4sd3_1_.yml | 5 - ...tings_sky130_fd_sc_hs__dlymetal6s2s_1_.yml | 5 - ...tings_sky130_fd_sc_hs__dlymetal6s4s_1_.yml | 5 - ...tings_sky130_fd_sc_hs__dlymetal6s6s_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__ebufn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__ebufn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__ebufn_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__ebufn_8_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__edfxbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__edfxtp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__einvn_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__einvn_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__einvn_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__einvn_8_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__einvp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__einvp_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__einvp_8_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hs__fa_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__fah_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__fah_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__fah_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__fahcin_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__fahcon_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__fill_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__fill_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__fill_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__fill_8_.yml | 5 - ...ettings_sky130_fd_sc_hs__fill_diode_2_.yml | 5 - ...ettings_sky130_fd_sc_hs__fill_diode_4_.yml | 5 - ...ettings_sky130_fd_sc_hs__fill_diode_8_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hs__ha_1_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hs__ha_2_.yml | 5 - ...st_pdk_settings_sky130_fd_sc_hs__ha_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__inv_16_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__inv_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__inv_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__inv_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__inv_8_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__maj3_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__maj3_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__mux2_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__mux2_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__mux2_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__mux2i_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__mux2i_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__mux2i_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__mux4_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__mux4_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__mux4_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nand2_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nand2_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nand2_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nand2_8_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nand2b_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nand2b_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nand2b_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nand3_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nand3_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nand3b_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nand3b_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nand3b_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nand4b_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nand4b_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nand4b_4_.yml | 5 - ...k_settings_sky130_fd_sc_hs__nand4bb_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__nand4bb_2_.yml | 5 - ...k_settings_sky130_fd_sc_hs__nand4bb_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor2_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor2_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor2_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor2_8_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nor2b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nor2b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nor2b_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor3_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor3_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor3_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nor3b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nor3b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nor3b_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor4_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor4_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__nor4_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nor4b_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nor4b_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__nor4b_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nor4bb_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nor4bb_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__nor4bb_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o2111a_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o2111a_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o2111a_4_.yml | 5 - ...k_settings_sky130_fd_sc_hs__o2111ai_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__o2111ai_2_.yml | 5 - ...k_settings_sky130_fd_sc_hs__o2111ai_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o211a_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o211a_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o211a_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o211ai_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o211ai_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o211ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o21a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o21a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o21a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o21ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o21ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o21ai_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o21ba_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o21ba_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o21ba_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o21bai_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o21bai_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o21bai_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o221a_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o221a_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o221a_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o221ai_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o221ai_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o221ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o22a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o22a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o22a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o22ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o22ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o22ai_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o2bb2a_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o2bb2a_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o2bb2a_4_.yml | 5 - ...k_settings_sky130_fd_sc_hs__o2bb2ai_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__o2bb2ai_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o311a_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o311a_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o311ai_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o311ai_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__o311ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o31a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o31a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o31a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o31ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o31ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o31ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o32a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o32a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o32a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o32ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o32ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o32ai_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o41a_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o41a_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__o41a_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o41ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o41ai_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__o41ai_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__or2_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__or2_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__or2_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__or2b_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__or2b_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__or2b_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__or3_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__or3_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__or3_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__or4_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__or4_2_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__or4_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__or4b_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__or4b_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__or4b_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__or4bb_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__or4bb_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__or4bb_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfbbn_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfbbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfrbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfrbp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfrtn_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfrtp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfrtp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfrtp_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfsbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfsbp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfstp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfstp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfstp_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfxbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfxbp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfxtp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfxtp_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hs__sdfxtp_4_.yml | 5 - ...k_settings_sky130_fd_sc_hs__sdlclkp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__sdlclkp_2_.yml | 5 - ...k_settings_sky130_fd_sc_hs__sdlclkp_4_.yml | 5 - ...k_settings_sky130_fd_sc_hs__sedfxbp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__sedfxbp_2_.yml | 5 - ...k_settings_sky130_fd_sc_hs__sedfxtp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__sedfxtp_2_.yml | 5 - ...k_settings_sky130_fd_sc_hs__sedfxtp_4_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__tap_1_.yml | 5 - ...t_pdk_settings_sky130_fd_sc_hs__tap_2_.yml | 5 - ...k_settings_sky130_fd_sc_hs__tapmet1_2_.yml | 5 - ..._settings_sky130_fd_sc_hs__tapvgnd2_1_.yml | 5 - ...k_settings_sky130_fd_sc_hs__tapvgnd_1_.yml | 5 - ...ttings_sky130_fd_sc_hs__tapvpwrvgnd_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__xnor2_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__xnor2_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__xnor2_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__xnor3_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__xnor3_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hs__xnor3_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__xor2_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__xor2_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__xor2_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__xor3_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__xor3_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hs__xor3_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__a21o_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__a21oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__a22o_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__a22oi_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__and2_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__and3_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__buf_16_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__buf_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__buf_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__buf_32_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__buf_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__buf_8_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__conb_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__decap_4_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__decap_8_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__dfrbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__dfrtp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__dfsbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__dfstp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__dfxbp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__dfxtp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__diode_2_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__dlrtp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__dlxtp_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__einvn_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__einvp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__fill_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__fill_2_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__fill_4_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__fill_8_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__inv_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__inv_2_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__inv_4_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__inv_8_.yml | 5 - ...ngs_sky130_fd_sc_hvl__lsbufhv2hv_hl_1_.yml | 5 - ...ngs_sky130_fd_sc_hvl__lsbufhv2hv_lh_1_.yml | 5 - ...ttings_sky130_fd_sc_hvl__lsbufhv2lv_1_.yml | 5 - ...sky130_fd_sc_hvl__lsbufhv2lv_simple_1_.yml | 5 - ...ttings_sky130_fd_sc_hvl__lsbuflv2hv_1_.yml | 5 - ...0_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3_.yml | 5 - ...0_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1_.yml | 5 - ...130_fd_sc_hvl__lsbuflv2hv_symmetric_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__mux2_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__mux4_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__nand2_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__nor2_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__nor3_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__o21a_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__o21ai_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__o22a_1_.yml | 5 - ...dk_settings_sky130_fd_sc_hvl__o22ai_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__or2_1_.yml | 5 - ..._pdk_settings_sky130_fd_sc_hvl__or3_1_.yml | 5 - ..._settings_sky130_fd_sc_hvl__probe_p_8_.yml | 5 - ...settings_sky130_fd_sc_hvl__probec_p_8_.yml | 5 - ...ttings_sky130_fd_sc_hvl__schmittbuf_1_.yml | 5 - ...k_settings_sky130_fd_sc_hvl__sdfrbp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hvl__sdfrtp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hvl__sdfsbp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hvl__sdfstp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hvl__sdfxbp_1_.yml | 5 - ...k_settings_sky130_fd_sc_hvl__sdfxtp_1_.yml | 5 - ..._settings_sky130_fd_sc_hvl__sdlclkp_1_.yml | 5 - ...pdk_settings_sky130_fd_sc_hvl__xor2_1_.yml | 5 - .../test_pdk_settings_tap_1_.yml | 5 + .../test_pdk_settings_tap_2_.yml | 5 + .../test_pdk_settings_tapvgnd2_1_.yml | 5 + .../test_pdk_settings_tapvgnd_1_.yml | 5 + ...l => test_pdk_settings_tapvpwrvgnd_1_.yml} | 4 +- .../test_pdk_settings_xnor2_1_.yml | 5 + .../test_pdk_settings_xnor2_2_.yml | 5 + .../test_pdk_settings_xnor2_4_.yml | 5 + .../test_pdk_settings_xnor3_1_.yml | 5 + .../test_pdk_settings_xnor3_2_.yml | 5 + .../test_pdk_settings_xnor3_4_.yml | 5 + .../test_pdk_settings_xor2_1_.yml | 5 + ...p_1_.yml => test_pdk_settings_xor2_2_.yml} | 4 +- .../test_pdk_settings_xor2_4_.yml | 5 + .../test_pdk_settings_xor3_1_.yml | 5 + ...2_1_.yml => test_pdk_settings_xor3_2_.yml} | 4 +- .../test_pdk_settings_xor3_4_.yml | 5 + 1977 files changed, 5758 insertions(+), 12223 deletions(-) delete mode 100644 scratch.py delete mode 100644 sky130/cells/klayout/pymacros/README.md delete mode 100644 sky130/cells/klayout/pymacros/cells/__init__.py delete mode 100644 sky130/cells/klayout/pymacros/cells/bjt.py delete mode 100644 sky130/cells/klayout/pymacros/cells/cap.py delete mode 100644 sky130/cells/klayout/pymacros/cells/diode.py delete mode 100644 sky130/cells/klayout/pymacros/cells/draw_bjt.py delete mode 100644 sky130/cells/klayout/pymacros/cells/draw_cap.py delete mode 100644 sky130/cells/klayout/pymacros/cells/draw_diode.py delete mode 100644 sky130/cells/klayout/pymacros/cells/draw_fet.py delete mode 100644 sky130/cells/klayout/pymacros/cells/draw_guard_ring.py delete mode 100644 sky130/cells/klayout/pymacros/cells/draw_rf.py delete mode 100644 sky130/cells/klayout/pymacros/cells/draw_vpp.py delete mode 100644 sky130/cells/klayout/pymacros/cells/fet.py delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L1p00.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/pnp/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/pnp/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/photodiode/sky130_fd_pr__photodiode.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil1.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil2.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil3.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_aup.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_20v0_withptap.gds delete mode 100644 sky130/cells/klayout/pymacros/cells/globals.py delete mode 100644 sky130/cells/klayout/pymacros/cells/gr.py delete mode 100644 sky130/cells/klayout/pymacros/cells/layers_def.py delete mode 100644 sky130/cells/klayout/pymacros/cells/parent_res.py delete mode 100644 sky130/cells/klayout/pymacros/cells/res_diff_child.py delete mode 100644 sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py delete mode 100644 sky130/cells/klayout/pymacros/cells/res_klayout_panel.py delete mode 100644 sky130/cells/klayout/pymacros/cells/res_metal_child.py delete mode 100644 sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py delete mode 100644 sky130/cells/klayout/pymacros/cells/res_poly_child.py delete mode 100644 sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py delete mode 100644 sky130/cells/klayout/pymacros/cells/rf.py delete mode 100644 sky130/cells/klayout/pymacros/cells/via_generator.py delete mode 100644 sky130/cells/klayout/pymacros/cells/vias.py delete mode 100644 sky130/cells/klayout/pymacros/cells/vpp.py delete mode 100644 sky130/cells/klayout/pymacros/sky130.lym create mode 100644 tests/test_components/test_pdk_settings_a2111o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a2111o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a2111o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a2111oi_0_.yml create mode 100644 tests/test_components/test_pdk_settings_a2111oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a2111oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a2111oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a211o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a211o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a211o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a211oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a211oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a211oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a21bo_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a21bo_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a21bo_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a21boi_0_.yml create mode 100644 tests/test_components/test_pdk_settings_a21boi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a21boi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a21boi_4_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__nand2_1_.yml => test_pdk_settings_a21o_1_.yml} (53%) rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__nand2_2_.yml => test_pdk_settings_a21o_2_.yml} (53%) rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__nand2_4_.yml => test_pdk_settings_a21o_4_.yml} (53%) create mode 100644 tests/test_components/test_pdk_settings_a21oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a21oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a21oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a221o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a221o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a221o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a221oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a221oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a221oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a222oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a22o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a22o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a22o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a22oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a22oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a22oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a2bb2o_1_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__nand3_1_.yml => test_pdk_settings_a2bb2o_2_.yml} (58%) create mode 100644 tests/test_components/test_pdk_settings_a2bb2o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a2bb2oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a2bb2oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a2bb2oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a311o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a311o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a311o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a311oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a311oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a311oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a31o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a31o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a31o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a31oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a31oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a31oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a32o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a32o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a32o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a32oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a32oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a32oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a41o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a41o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a41o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_a41oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_a41oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_a41oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_and2_0_.yml create mode 100644 tests/test_components/test_pdk_settings_and2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_and2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_and2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_and2b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_and2b_2_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__a21boi_0_.yml => test_pdk_settings_and2b_4_.yml} (56%) create mode 100644 tests/test_components/test_pdk_settings_and3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_and3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_and3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_and3b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_and3b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_and3b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_and4_1_.yml create mode 100644 tests/test_components/test_pdk_settings_and4_2_.yml create mode 100644 tests/test_components/test_pdk_settings_and4_4_.yml create mode 100644 tests/test_components/test_pdk_settings_and4b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_and4b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_and4b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_and4bb_1_.yml create mode 100644 tests/test_components/test_pdk_settings_and4bb_2_.yml create mode 100644 tests/test_components/test_pdk_settings_and4bb_4_.yml create mode 100644 tests/test_components/test_pdk_settings_buf_12_.yml create mode 100644 tests/test_components/test_pdk_settings_buf_16_.yml create mode 100644 tests/test_components/test_pdk_settings_buf_1_.yml create mode 100644 tests/test_components/test_pdk_settings_buf_2_.yml create mode 100644 tests/test_components/test_pdk_settings_buf_4_.yml create mode 100644 tests/test_components/test_pdk_settings_buf_6_.yml create mode 100644 tests/test_components/test_pdk_settings_buf_8_.yml create mode 100644 tests/test_components/test_pdk_settings_bufbuf_16_.yml create mode 100644 tests/test_components/test_pdk_settings_bufbuf_8_.yml create mode 100644 tests/test_components/test_pdk_settings_bufinv_16_.yml create mode 100644 tests/test_components/test_pdk_settings_bufinv_8_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__o311a_1_.yml => test_pdk_settings_cap_vpp_02p4x04p6_m1m2_noshield_.yml} (61%) create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m4_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml create mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml create mode 100644 tests/test_components/test_pdk_settings_clkbuf_16_.yml create mode 100644 tests/test_components/test_pdk_settings_clkbuf_1_.yml create mode 100644 tests/test_components/test_pdk_settings_clkbuf_2_.yml create mode 100644 tests/test_components/test_pdk_settings_clkbuf_4_.yml create mode 100644 tests/test_components/test_pdk_settings_clkbuf_8_.yml create mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s15_1_.yml create mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s15_2_.yml create mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s18_1_.yml create mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s18_2_.yml create mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s25_1_.yml create mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s25_2_.yml create mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s50_1_.yml create mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s50_2_.yml create mode 100644 tests/test_components/test_pdk_settings_clkinv_16_.yml create mode 100644 tests/test_components/test_pdk_settings_clkinv_1_.yml create mode 100644 tests/test_components/test_pdk_settings_clkinv_2_.yml create mode 100644 tests/test_components/test_pdk_settings_clkinv_4_.yml create mode 100644 tests/test_components/test_pdk_settings_clkinv_8_.yml create mode 100644 tests/test_components/test_pdk_settings_clkinvlp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_clkinvlp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_conb_1_.yml create mode 100644 tests/test_components/test_pdk_settings_decap_12_.yml create mode 100644 tests/test_components/test_pdk_settings_decap_3_.yml create mode 100644 tests/test_components/test_pdk_settings_decap_4_.yml create mode 100644 tests/test_components/test_pdk_settings_decap_6_.yml create mode 100644 tests/test_components/test_pdk_settings_decap_8_.yml create mode 100644 tests/test_components/test_pdk_settings_dfbbn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dfbbn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dfbbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dfrbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dfrbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dfrtn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dfrtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dfrtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dfrtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_dfsbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dfsbp_2_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__or3b_1_.yml => test_pdk_settings_dfstp_1_.yml} (55%) rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__or3b_2_.yml => test_pdk_settings_dfstp_2_.yml} (55%) rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__or3b_4_.yml => test_pdk_settings_dfstp_4_.yml} (55%) create mode 100644 tests/test_components/test_pdk_settings_dfxbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dfxbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dfxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dfxtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dfxtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_diode_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dlclkp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlclkp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dlclkp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrbn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrbn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrtn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrtn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrtn_4_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dlrtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_dlxbn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlxbn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dlxbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlxtn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlxtn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_dlxtn_4_.yml create mode 100644 tests/test_components/test_pdk_settings_dlxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlygate4sd1_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlygate4sd2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlygate4sd3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlymetal6s2s_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlymetal6s4s_1_.yml create mode 100644 tests/test_components/test_pdk_settings_dlymetal6s6s_1_.yml create mode 100644 tests/test_components/test_pdk_settings_ebufn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_ebufn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_ebufn_4_.yml create mode 100644 tests/test_components/test_pdk_settings_ebufn_8_.yml create mode 100644 tests/test_components/test_pdk_settings_edfxbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_edfxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_einvn_0_.yml create mode 100644 tests/test_components/test_pdk_settings_einvn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_einvn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_einvn_4_.yml create mode 100644 tests/test_components/test_pdk_settings_einvn_8_.yml create mode 100644 tests/test_components/test_pdk_settings_einvp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_einvp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_einvp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_einvp_8_.yml create mode 100644 tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hvl__sdlxtp_1_.yml => test_pdk_settings_esd_rf_nfet_20v0_hbm_32vW60p00_.yml} (67%) create mode 100644 tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_21vW60p00_.yml create mode 100644 tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_32vW60p00_.yml create mode 100644 tests/test_components/test_pdk_settings_fa_1_.yml create mode 100644 tests/test_components/test_pdk_settings_fa_2_.yml create mode 100644 tests/test_components/test_pdk_settings_fa_4_.yml create mode 100644 tests/test_components/test_pdk_settings_fah_1_.yml create mode 100644 tests/test_components/test_pdk_settings_fahcin_1_.yml create mode 100644 tests/test_components/test_pdk_settings_fahcon_1_.yml create mode 100644 tests/test_components/test_pdk_settings_fill_1_.yml create mode 100644 tests/test_components/test_pdk_settings_fill_2_.yml create mode 100644 tests/test_components/test_pdk_settings_fill_4_.yml create mode 100644 tests/test_components/test_pdk_settings_fill_8_.yml create mode 100644 tests/test_components/test_pdk_settings_ha_1_.yml create mode 100644 tests/test_components/test_pdk_settings_ha_2_.yml create mode 100644 tests/test_components/test_pdk_settings_ha_4_.yml create mode 100644 tests/test_components/test_pdk_settings_inv_12_.yml create mode 100644 tests/test_components/test_pdk_settings_inv_16_.yml create mode 100644 tests/test_components/test_pdk_settings_inv_1_.yml create mode 100644 tests/test_components/test_pdk_settings_inv_2_.yml create mode 100644 tests/test_components/test_pdk_settings_inv_4_.yml create mode 100644 tests/test_components/test_pdk_settings_inv_6_.yml create mode 100644 tests/test_components/test_pdk_settings_inv_8_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_bleeder_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_16_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_2_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_4_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_8_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_16_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_2_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_4_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_8_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_12_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_3_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_4_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_6_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_8_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_inputiso0n_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_inputiso0p_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_inputiso1n_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_inputiso1p_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_inputisolatch_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_16_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_2_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_4_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_8_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrckapwr_16_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_4_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_1_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_2_.yml create mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_4_.yml create mode 100644 tests/test_components/test_pdk_settings_macro_sparecell_.yml create mode 100644 tests/test_components/test_pdk_settings_maj3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_maj3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_maj3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_mux2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_mux2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_mux2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_mux2_8_.yml create mode 100644 tests/test_components/test_pdk_settings_mux2i_1_.yml create mode 100644 tests/test_components/test_pdk_settings_mux2i_2_.yml create mode 100644 tests/test_components/test_pdk_settings_mux2i_4_.yml create mode 100644 tests/test_components/test_pdk_settings_mux4_1_.yml create mode 100644 tests/test_components/test_pdk_settings_mux4_2_.yml create mode 100644 tests/test_components/test_pdk_settings_mux4_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nand2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nand2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nand2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nand2_8_.yml create mode 100644 tests/test_components/test_pdk_settings_nand2b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nand2b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nand2b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nand3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nand3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nand3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nand3b_1_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__sdfxbp_1_.yml => test_pdk_settings_nand3b_2_.yml} (57%) create mode 100644 tests/test_components/test_pdk_settings_nand3b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nand4_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nand4_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nand4_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nand4b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nand4b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nand4b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nand4bb_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nand4bb_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nand4bb_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nor2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nor2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nor2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nor2_8_.yml create mode 100644 tests/test_components/test_pdk_settings_nor2b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nor2b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nor2b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nor3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nor3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nor3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nor3b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nor3b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nor3b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nor4_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nor4_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nor4_4_.yml create mode 100644 tests/test_components/test_pdk_settings_nor4b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_nor4b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nor4b_4_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hvl__nand3_1_.yml => test_pdk_settings_nor4bb_1_.yml} (57%) create mode 100644 tests/test_components/test_pdk_settings_nor4bb_2_.yml create mode 100644 tests/test_components/test_pdk_settings_nor4bb_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o2111a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o2111a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o2111a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o2111ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o2111ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o2111ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o211a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o211a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o211a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o211ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o211ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o211ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o21a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o21a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o21a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o21ai_0_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__nand4_1_.yml => test_pdk_settings_o21ai_1_.yml} (54%) create mode 100644 tests/test_components/test_pdk_settings_o21ai_2_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__nand4_4_.yml => test_pdk_settings_o21ai_4_.yml} (54%) create mode 100644 tests/test_components/test_pdk_settings_o21ba_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o21ba_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o21ba_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o21bai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o21bai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o21bai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o221a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o221a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o221a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o221ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o221ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o221ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o22a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o22a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o22a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o22ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o22ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o22ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o2bb2a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o2bb2a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o2bb2a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o2bb2ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o2bb2ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o2bb2ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o311a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o311a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o311a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o311ai_0_.yml create mode 100644 tests/test_components/test_pdk_settings_o311ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o311ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o311ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o31a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o31a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o31a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o31ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o31ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o31ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o32a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o32a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o32a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o32ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o32ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o32ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o41a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o41a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o41a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_o41ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_o41ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_o41ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_or2_0_.yml create mode 100644 tests/test_components/test_pdk_settings_or2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_or2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_or2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_or2b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_or2b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_or2b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_or3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_or3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_or3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_or3b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_or3b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_or3b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_or4_1_.yml create mode 100644 tests/test_components/test_pdk_settings_or4_2_.yml create mode 100644 tests/test_components/test_pdk_settings_or4_4_.yml create mode 100644 tests/test_components/test_pdk_settings_or4b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_or4b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_or4b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_or4bb_1_.yml create mode 100644 tests/test_components/test_pdk_settings_or4bb_2_.yml create mode 100644 tests/test_components/test_pdk_settings_or4bb_4_.yml create mode 100644 tests/test_components/test_pdk_settings_probe_p_8_.yml create mode 100644 tests/test_components/test_pdk_settings_probec_p_8_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_aura_blocking_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_aura_drc_flag_check_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_aura_lvs_drc_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p15_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__a221o_1_.yml => test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p18_.yml} (65%) create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p25_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__nor4_1_.yml => test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p15_.yml} (68%) rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__nor4_4_.yml => test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p18_.yml} (68%) create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__xnor3_2_.yml => test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml} (61%) create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__einvp_2_.yml => test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml} (61%) create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_2_.yml => test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml} (66%) create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__nand4_2_.yml => test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml} (64%) create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__or4b_2_.yml => test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml} (64%) create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_aup_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_noptap_iso_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_aup_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_noptap_iso_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__or4_2_.yml => test_pdk_settings_rf_nfet_20v0_nvt_withptap_iso_.yml} (65%) create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_iso_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_zvt_withptap_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hvl__inv_16_.yml => test_pdk_settings_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml} (63%) create mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W1p68L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W2p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W1p68L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W2p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W1p68L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W2p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W1p68L0p15_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__fa_1_.yml => test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p15_.yml} (63%) rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__fa_4_.yml => test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p18_.yml} (63%) create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p15_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__sdfbbn_2_.yml => test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p18_.yml} (66%) create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hs__maj3_4_.yml => test_pdk_settings_rf_pfet_01v8_mcM04W3p00L0p15_.yml} (63%) create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pfet_20v0_withptap_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_test_coil1_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_test_coil2_.yml create mode 100644 tests/test_components/test_pdk_settings_rf_test_coil3_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfbbn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfbbn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfbbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfrbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfrbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfrtn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfrtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfrtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfrtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfsbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfsbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfstp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfstp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfstp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfxbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfxbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfxtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sdfxtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sdlclkp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sdlclkp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sdlclkp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sedfxbp_1_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__fill_1_.yml => test_pdk_settings_sedfxbp_2_.yml} (57%) create mode 100644 tests/test_components/test_pdk_settings_sedfxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sedfxtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sedfxtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a222oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_12_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_6_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__conb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_12_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_3_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_6_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__diode_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd1_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fah_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcin_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcon_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_12_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_6_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_bleeder_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputisolatch_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probe_p_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probec_p_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufbuf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufbuf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufinv_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufinv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd1_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd1_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__conb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__decap_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__decap_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfsbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfsbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__diode_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd1_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s2s_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s4s_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s6s_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__edfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__edfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fahcin_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fahcon_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfsbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfsbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tap_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tap_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapmet1_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvgnd2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvgnd_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvpwrvgnd_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a21o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a21oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a22o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a22oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__and2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__and3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_32_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__conb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__decap_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__decap_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfsbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfstp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__diode_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__einvn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__einvp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2hv_hl_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2hv_lh_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2lv_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2lv_simple_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__mux2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__mux4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nand2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o21a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o21ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o22a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o22ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__or2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__or3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__probe_p_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__probec_p_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__schmittbuf_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfsbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfstp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdlclkp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__xor2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_tap_1_.yml create mode 100644 tests/test_components/test_pdk_settings_tap_2_.yml create mode 100644 tests/test_components/test_pdk_settings_tapvgnd2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_tapvgnd_1_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hd__nor4bb_4_.yml => test_pdk_settings_tapvpwrvgnd_1_.yml} (58%) create mode 100644 tests/test_components/test_pdk_settings_xnor2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_xnor2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_xnor2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_xnor3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_xnor3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_xnor3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_xor2_1_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hvl__dlclkp_1_.yml => test_pdk_settings_xor2_2_.yml} (55%) create mode 100644 tests/test_components/test_pdk_settings_xor2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_xor3_1_.yml rename tests/test_components/{test_pdk_settings_sky130_fd_sc_hvl__xnor2_1_.yml => test_pdk_settings_xor3_2_.yml} (56%) create mode 100644 tests/test_components/test_pdk_settings_xor3_4_.yml diff --git a/scratch.py b/scratch.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/README.md b/sky130/cells/klayout/pymacros/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/__init__.py b/sky130/cells/klayout/pymacros/cells/__init__.py deleted file mode 100644 index 34a47f40a..000000000 --- a/sky130/cells/klayout/pymacros/cells/__init__.py +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# ============================================================================ -# ---------------- Pcells Generators for Klayout of sky ---------------- -# ============================================================================ - -import pya - -from cells.vias import vias_gen - -from .bjt import npn_bjt, pnp_bjt -from .cap import cap_var, mim_cap -from .diode import n_diode, p_diode, photo_diode -from .fet import nfet, pfet -from .gr import guard_ring_gen -from .res_diff_klayout_panel import res_diff -from .res_metal_klayout_panel import res_metal -from .res_poly_klayout_panel import res_poly -from .rf import rf_bjt, rf_coils, rf_mosfet -from .vpp import cap_vpp - - -# It's a Python class that inherits from the pya.Library class -class sky130(pya.Library): - """ - The library where we will put the PCell into - """ - - def __init__(self): - # Set the description - self.description = "sky130 Pcells" - - # Create the PCell declarations - # MOS DEVICES - self.layout().register_pcell("pfet", pfet()) - self.layout().register_pcell("nfet", nfet()) - - # BJT - self.layout().register_pcell( - "npn_bjt", npn_bjt() - ) # npn_05v5_1p00x1p00, npn_05v5_1p00x2p00 , npn_11v0_1p00x1p00 - self.layout().register_pcell( - "pnp_bjt", pnp_bjt() - ) # pnp_05v5_0p68x0p68 , pnp_05v5_3p40x3p40 - - # CAP Devices - self.layout().register_pcell("cap_vpp", cap_vpp()) # VPP devices - self.layout().register_pcell("cap_var", cap_var()) # varactor devices - self.layout().register_pcell("mim_cap", mim_cap()) # mim cap devices - - # DIODE DEVICES - - self.layout().register_pcell("photodiode", photo_diode()) - self.layout().register_pcell("n_diode", n_diode()) - self.layout().register_pcell("p_diode", p_diode()) - - # RF Devices - self.layout().register_pcell("rf_mosfet", rf_mosfet()) # rf mosfets - self.layout().register_pcell("rf_bjt", rf_bjt()) # rf bjt - self.layout().register_pcell("rf_coils", rf_coils()) # rf coils - - # vias - self.layout().register_pcell("vias_gen", vias_gen()) # vias generator - self.layout().register_pcell( - "guard_ring_gen", guard_ring_gen() - ) # vias generator - - # Resistor - self.layout().register_pcell("res_diff", res_diff()) # Res diff generator - self.layout().register_pcell("res_poly", res_poly()) # Res poly generator - self.layout().register_pcell("res_metal", res_metal()) # Res metal generator - - # Register us with the name "skywater130". - self.register("skywater130") diff --git a/sky130/cells/klayout/pymacros/cells/bjt.py b/sky130/cells/klayout/pymacros/cells/bjt.py deleted file mode 100644 index f83986788..000000000 --- a/sky130/cells/klayout/pymacros/cells/bjt.py +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# BJT Generator for skywater130 -######################################################################################################################## - - -import pya - -from .draw_bjt import draw_npn, draw_pnp -from .globals import BJT_NPN_DEV, BJT_PNP_DEV - - -class npn_bjt(pya.PCellDeclarationHelper): - """ - NPN BJT Generator for Skywater130 - """ - - def __init__(self): - # Important: initialize the super class - super().__init__() - self.Type_handle = self.param("type", self.TypeList, "type") - - for i in BJT_NPN_DEV: - self.Type_handle.add_choice(i, i) - - self.param( - "Model", - self.TypeString, - "Model", - default="sky130_fd_pr__npn", - readonly=True, - ) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return str(self.type) - - def produce_impl(self): - # This is the main part of the implementation: create the layout - - self.percision = 1 / self.layout.dbu - # self.cell.flatten(1) - npn_instance = draw_npn(layout=self.layout, device_name=self.type) - write_cells = pya.CellInstArray( - npn_instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.flatten(1) - self.cell.insert(write_cells) - self.layout.cleanup() - - -class pnp_bjt(pya.PCellDeclarationHelper): - """ - PNP BJT Generator for Skywater130 - """ - - def __init__(self): - # Important: initialize the super class - super().__init__() - self.Type_handle = self.param("Type", self.TypeList, "Type") - - for i in BJT_PNP_DEV: - self.Type_handle.add_choice(i, i) - - self.param( - "Model", - self.TypeString, - "Model", - default="sky130_fd_pr__pnp", - readonly=True, - ) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return str(self.Type) - - def produce_impl(self): - # This is the main part of the implementation: create the layout - - self.percision = 1 / self.layout.dbu - pnp_instance = draw_pnp(layout=self.layout, device_name=self.Type) - write_cells = pya.CellInstArray( - pnp_instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.flatten(1) - self.cell.insert(write_cells) - - self.layout.cleanup() diff --git a/sky130/cells/klayout/pymacros/cells/cap.py b/sky130/cells/klayout/pymacros/cells/cap.py deleted file mode 100644 index 1757b202b..000000000 --- a/sky130/cells/klayout/pymacros/cells/cap.py +++ /dev/null @@ -1,212 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# cap(Varactor-MIM) Generator for skywater130 -######################################################################################################################## - - -import pya - -from .draw_cap import draw_cap_var, draw_mim_cap - -l_min = 0.18 -w_min = 1 -grw_min = 0.17 - -l_mim = 2 -l_mim2 = 2.16 - - -class cap_var(pya.PCellDeclarationHelper): - """ - Cap(Varactor) Generator for Skywater130 - """ - - def __init__(self): - # Initialize super class. - super().__init__() - - # ===================== PARAMETERS DECLARATIONS ===================== - - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice( - "sky130_fd_pr__cap_var_lvt", "sky130_fd_pr__cap_var_lvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__cap_var_hvt", "sky130_fd_pr__cap_var_hvt" - ) - - self.param("l", self.TypeDouble, "length", default=l_min, unit="um") - self.param("w", self.TypeDouble, "width", default=w_min, unit="um") - self.param("tap_con_col", self.TypeInt, "tap Contacts Columns", default=1) - - self.param("gr", self.TypeBoolean, "Gaurd Ring", default=0) - self.param( - "grw", self.TypeDouble, "Gaurd Ring Width", default=grw_min, unit="um" - ) - - self.param("nf", self.TypeDouble, "Number of Fingers", default=1) - # self.param("n", self.TypeDouble, "instance number", default=1) - - self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") - self.param("cap_value", self.TypeDouble, "Cap Value", readonly=True, unit="fF") - - def display_text_impl(self): - # Provide a descriptive text for the cell - return "Varactor(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" - - def coerce_parameters_impl(self): - # We employ coerce_parameters_impl to decide whether the handle or the - # numeric parameter has changed (by comparing against the effective - # radius ru) and set ru to the effective radius. We also update the - # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2 * (self.w + self.l) - self.cap_value = 4.4 * self.area - - if self.l < l_min: - self.l = l_min - - if self.w < w_min: - self.w = w_min - - if self.grw < grw_min: - self.grw = grw_min - - def can_create_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we can use any shape which - # has a finite bounding box - return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() - - def parameters_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we set r and l from the shape's - # bounding box width and layer - self.r = self.shape.bbox().width() * self.layout.dbu / 2 - self.l = self.layout.get_info(self.layer) - - def transformation_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we use the center of the shape's - # bounding box to determine the transformation - return pya.Trans(self.shape.bbox().center()) - - def produce_impl(self): - instance = draw_cap_var( - layout=self.layout, - l_c=self.l, - w=self.w, - type=self.type, - tap_con_col=self.tap_con_col, - gr=self.gr, - grw=self.grw, - nf=self.nf, - ) - write_cells = pya.CellInstArray( - instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.insert(write_cells) - self.cell.flatten(1) - - -class mim_cap(pya.PCellDeclarationHelper): - """ - Cap(mim) Generator for Skywater130 - """ - - def __init__(self): - # Initialize super class. - super().__init__() - - # ===================== PARAMETERS DECLARATIONS ===================== - - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice( - "sky130_fd_pr__model__cap_mim", "sky130_fd_pr__model__cap_mim" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__model__cap_mim_m4", "sky130_fd_pr__model__cap_mim_m4" - ) - - self.param("l", self.TypeDouble, "length", default=l_mim, unit="um") - self.param("w", self.TypeDouble, "width", default=l_mim, unit="um") - - # self.param("n", self.TypeInt, "instance number", default=1) - - self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") - self.param("cap_value", self.TypeDouble, "Cap Value", readonly=True, unit="fF") - - def display_text_impl(self): - # Provide a descriptive text for the cell - return "mimcap(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" - - def coerce_parameters_impl(self): - # We employ coerce_parameters_impl to decide whether the handle or the - # numeric parameter has changed (by comparing against the effective - # radius ru) and set ru to the effective radius. We also update the - # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2 * (self.w + self.l) - self.cap_value = 2 * self.area - - if self.type == "sky130_fd_pr__model__cap_mim_m4": - if self.l < l_mim2: - self.l = l_mim2 - - if self.w < l_mim2: - self.w = l_mim2 - else: - if self.l < l_mim: - self.l = l_mim - - if self.w < l_mim: - self.w = l_mim - - def can_create_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we can use any shape which - # has a finite bounding box - return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() - - def parameters_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we set r and l from the shape's - # bounding box width and layer - self.r = self.shape.bbox().width() * self.layout.dbu / 2 - self.l = self.layout.get_info(self.layer) - - def transformation_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we use the center of the shape's - # bounding box to determine the transformation - return pya.Trans(self.shape.bbox().center()) - - def produce_impl(self): - instance = draw_mim_cap( - layout=self.layout, l_c=self.l, w=self.w, type=self.type - ) - write_cells = pya.CellInstArray( - instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.insert(write_cells) - self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/diode.py b/sky130/cells/klayout/pymacros/cells/diode.py deleted file mode 100644 index 522ddba1c..000000000 --- a/sky130/cells/klayout/pymacros/cells/diode.py +++ /dev/null @@ -1,268 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# DIODE Generator for skywater130 -######################################################################################################################## - - -import pya - -from .draw_diode import draw_diode, draw_photodiode -from .globals import PHOTO_D_DEV - - -class photo_diode(pya.PCellDeclarationHelper): - """ - photo diode Generator for Skywater130 - """ - - def __init__(self): - # Important: initialize the super class - super().__init__() - self.Type_handle = self.param("Type", self.TypeList, "Type") - - for i in PHOTO_D_DEV: - self.Type_handle.add_choice(i, i) - - self.param( - "Model", - self.TypeString, - "Model", - default="sky130_fd_pr__photodiode", - readonly=True, - ) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return str(self.Type) - - def produce_impl(self): - # This is the main part of the implementation: create the layout - - self.percision = 1 / self.layout.dbu - ph_d_instance = draw_photodiode(layout=self.layout, device_name=self.Type) - - write_cells = pya.CellInstArray( - ph_d_instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.flatten(1) - self.cell.insert(write_cells) - - self.layout.cleanup() - - -d_min = 0.45 -grw_min = 0.17 - - -class n_diode(pya.PCellDeclarationHelper): - """ - N-Diode Generator for Skywater130 - """ - - def __init__(self): - # Initialize super class. - super().__init__() - - # ===================== PARAMETERS DECLARATIONS ===================== - - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice( - "sky130_fd_pr__diode_pw2nd_05v5", "sky130_fd_pr__diode_pw2nd_05v5" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__diode_pw2nd_05v5_lvt", "sky130_fd_pr__diode_pw2nd_05v5_lvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__diode_pw2nd_05v5_nvt", "sky130_fd_pr__diode_pw2nd_05v5_nvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__diode_pw2nd_11v0", "sky130_fd_pr__diode_pw2nd_11v0" - ) - - self.param("w", self.TypeDouble, "width", default=d_min, unit="um") - self.param("l", self.TypeDouble, "length", default=d_min, unit="um") - self.param( - "cath_w", self.TypeDouble, "Cathode Width", default=grw_min, unit="um" - ) - - self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") - - # self.param("n", self.TypeInt, "n", default=1) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return "n_diode(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" - - def coerce_parameters_impl(self): - # We employ coerce_parameters_impl to decide whether the handle or the - # numeric parameter has changed (by comparing against the effective - # radius ru) and set ru to the effective radius. We also update the - # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2 * (self.w + self.l) - - if self.l < d_min: - self.l = d_min - - if self.w < d_min: - self.w = d_min - - if self.cath_w < grw_min: - self.cath_w = grw_min - - def can_create_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we can use any shape which - # has a finite bounding box - return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() - - def parameters_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we set r and l from the shape's - # bounding box width and layer - self.r = self.shape.bbox().width() * self.layout.dbu / 2 - self.l = self.layout.get_info(self.layer) - - def transformation_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we use the center of the shape's - # bounding box to determine the transformation - return pya.Trans(self.shape.bbox().center()) - - def produce_impl(self): - instance = draw_diode( - layout=self.layout, - d_type="n", - l_d=self.l, - w=self.w, - type=self.type, - cath_w=self.cath_w, - ) - write_cells = pya.CellInstArray( - instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.insert(write_cells) - self.cell.flatten(1) - - -class p_diode(pya.PCellDeclarationHelper): - """ - N-Diode Generator for Skywater130 - """ - - def __init__(self): - # Initialize super class. - super().__init__() - - # ===================== PARAMETERS DECLARATIONS ===================== - - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice( - "sky130_fd_pr__diode_pd2nw_05v5", "sky130_fd_pr__diode_pd2nw_05v5" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__diode_pd2nw_05v5_lvt", "sky130_fd_pr__diode_pd2nw_05v5_lvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__diode_pd2nw_05v5_hvt", "sky130_fd_pr__diode_pd2nw_05v5_hvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__diode_pd2nw_11v0", "sky130_fd_pr__diode_pd2nw_11v0" - ) - - self.param("w", self.TypeDouble, "width", default=d_min, unit="um") - self.param("l", self.TypeDouble, "length", default=d_min, unit="um") - self.param( - "cath_w", self.TypeDouble, "Cathode width", default=grw_min, unit="um" - ) - self.param( - "grw", self.TypeDouble, "Gaurd Ring width", default=grw_min, unit="um" - ) - - self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") - - # self.param("n", self.TypeInt, "n", default=1) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return "p_diode(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" - - def coerce_parameters_impl(self): - # We employ coerce_parameters_impl to decide whether the handle or the - # numeric parameter has changed (by comparing against the effective - # radius ru) and set ru to the effective radius. We also update the - # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2 * (self.w + self.l) - - if self.l < d_min: - self.l = d_min - - if self.w < d_min: - self.w = d_min - - if self.grw < grw_min: - self.grw = grw_min - - if self.cath_w < grw_min: - self.cath_w = grw_min - - def can_create_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we can use any shape which - # has a finite bounding box - return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() - - def parameters_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we set r and l from the shape's - # bounding box width and layer - self.r = self.shape.bbox().width() * self.layout.dbu / 2 - self.l = self.layout.get_info(self.layer) - - def transformation_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we use the center of the shape's - # bounding box to determine the transformation - return pya.Trans(self.shape.bbox().center()) - - def produce_impl(self): - instance = draw_diode( - layout=self.layout, - d_type="p", - l_d=self.l, - w=self.w, - type=self.type, - grw=self.grw, - cath_w=self.cath_w, - ) - write_cells = pya.CellInstArray( - instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.insert(write_cells) - self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/draw_bjt.py b/sky130/cells/klayout/pymacros/cells/draw_bjt.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/draw_cap.py b/sky130/cells/klayout/pymacros/cells/draw_cap.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/draw_diode.py b/sky130/cells/klayout/pymacros/cells/draw_diode.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/draw_fet.py b/sky130/cells/klayout/pymacros/cells/draw_fet.py deleted file mode 100644 index dcd2051a9..000000000 --- a/sky130/cells/klayout/pymacros/cells/draw_fet.py +++ /dev/null @@ -1,1793 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -## Mosfets Pcells Generators for Klayout of skywater130 -######################################################################################################################## - -from math import ceil, floor - -import gdsfactory as gf - -from .layers_def import ( - areaid_lvn_layer, - diff_layer, - hvi_layer, - hvntm_layer, - hvtp_layer, - li_layer, - licon_layer, - lvtn_layer, - m1_layer, - m1_lbl, - m2_layer, - nsdm_layer, - nwell_layer, - poly_layer, - psdm_layer, - tap_layer, - via1_layer, -) -from .via_generator import via_generator, via_stack - - -# @gf.cell -def draw_nfet( - layout, - l_gate: float = 0.15, - w: float = 0.42, - sd_con_col: int = 1, - inter_sd_l: float = 0.3, # 0.21 , - nf: int = 1, - grw: float = 0.17, - type="sky130_fd_pr__nfet_01v8", - bulk="None", - con_bet_fin: int = 1, - gate_con_pos="alternating", - interdig: int = 0, - patt="", - # n = 1 -): # -> gf.Component: - """ - Retern nfet - - Args: - layout : layout object - l : Float of gate length - w : Float of gate width - sd_l : Float of source and drain diffusion length - inter_sd_l : Float of source and drain diffusion length between fingers - nf : integer of number of fingers - M : integer of number of multipliers - grw : gaurd ring width when enabled - type : string of the device type - bulk : String of bulk connection type (None, Bulk Tie, Guard Ring) - con_bet_fin : boolean of having contacts for diffusion between fingers - gate_con_pos : string of choosing the gate contact position (bottom, top, alternating ) - - """ - # used layers and dimensions - - end_cap: float = 0.2 - diff_tap_spacing: float = 0.32 - poly_tap_spacing: float = 0.27 - - diff_nsdm_enc: float = 0.125 - tap_psdm_enc: float = 0.125 - - gate_npc_ext = 0.11 - npc_spacing = 0.27 - - gate_lvt_enc: float = 0.18 - - hv_enclosing: float = 0.185 - - areaid_lvn_enc: float = 0.1 - - # m1_m1lic_sp = 0.28+ mcon_enc[0] - end_cap - - licon_size = (0.17, 0.17) - licon_spacing = (0.19, 0.19) - licon_dt_enc = (0.04, 0.06) - - licon_p_enc = (0.05, 0.08) - - sd_l_con = ( - ((sd_con_col) * licon_size[0]) - + ((sd_con_col - 1) * licon_spacing[0]) - + 2 * licon_dt_enc[0] - ) - sd_l = sd_l_con + 0.05 - - # gds components to store a single instance and the generated device - c = gf.Component("sky_nfet_dev") - - c_inst = gf.Component("dev_temp") - - # generating sd diffusion - - if interdig == 1 and nf > 1 and nf != len(patt) and patt != "": - nf = len(patt) - - l_d = sd_l + nf * l_gate + (nf - 1) * inter_sd_l + sd_l # diffution total length - rect_d = gf.components.rectangle(size=(l_d, w), layer=diff_layer) - sd_diff = c_inst.add_ref(rect_d) - - # generatin sd contacts - - sd_con = via_stack( - x_range=(0, sd_l), y_range=(0, w), base_layer=diff_layer, metal_level=1 - ) - c_inst.add_array( - component=sd_con, - columns=2, - rows=1, - spacing=(sd_l + nf * l_gate + (nf - 1) * inter_sd_l, 0), - ) - - if con_bet_fin == 1 and nf > 1: - inter_sd_con = via_stack( - x_range=(sd_l + l_gate, sd_l + l_gate + inter_sd_l), - y_range=(0, w), - base_layer=diff_layer, - metal_level=1, - ) - c_inst.add_array( - component=inter_sd_con, - columns=nf - 1, - rows=1, - spacing=(l_gate + inter_sd_l, 0), - ) - - # generating poly - - if l_gate <= licon_size[0] + 2 * licon_p_enc[0]: - pc_x = licon_p_enc[0] + licon_size[0] + licon_p_enc[0] - - else: - pc_x = l_gate - - pc_size = (pc_x, licon_p_enc[1] + licon_size[1] + licon_p_enc[1]) - - c_pc = gf.Component("poly con") - - rect_pc = c_pc.add_ref(gf.components.rectangle(size=pc_size, layer=poly_layer)) - - poly_con = via_stack( - x_range=(rect_pc.xmin, rect_pc.xmax), - y_range=(rect_pc.ymin, rect_pc.ymax), - base_layer=poly_layer, - metal_level=1, - li_enc_dir="H", - ) - c_pc.add_ref(poly_con) - - if nf == 1: - poly = c_inst.add_ref( - gf.components.rectangle(size=(l_gate, w + 2 * end_cap), layer=poly_layer) - ) - poly.move((sd_l, -end_cap)) - - if gate_con_pos == "bottom": - mv = 0 - nr = 1 - elif gate_con_pos == "top": - mv = pc_size[1] + w + 2 * end_cap - nr = 1 - else: - mv = 0 - nr = 2 - - pc = c_inst.add_array( - component=c_pc, - rows=nr, - columns=1, - spacing=(0, pc_size[1] + w + 2 * end_cap), - ) - pc.move((sd_l - ((pc_x - l_gate) / 2), -pc_size[1] - end_cap + mv)) - - else: - w_p1 = end_cap + w + end_cap # poly total width - - if inter_sd_l < (npc_spacing + 2 * gate_npc_ext): - if gate_con_pos == "alternating": - w_p1 += 0.2 - w_p2 = w_p1 - e_c = 0.2 - else: - w_p2 = ( - w_p1 - + licon_p_enc[1] - + licon_size[1] - + licon_p_enc[1] - + npc_spacing - + 0.1 - ) - e_c = 0 - - if gate_con_pos == "bottom": - p_mv = -end_cap - (w_p2 - w_p1) - else: - p_mv = -end_cap - - else: - w_p2 = w_p1 - p_mv = -end_cap - e_c = 0 - - rect_p1 = gf.components.rectangle(size=(l_gate, w_p1), layer=poly_layer) - rect_p2 = gf.components.rectangle(size=(l_gate, w_p2), layer=poly_layer) - poly1 = c_inst.add_array( - rect_p1, - rows=1, - columns=ceil(nf / 2), - spacing=[2 * (inter_sd_l + l_gate), 0], - ) - poly1.move((sd_l, -end_cap - e_c)) - - poly2 = c_inst.add_array( - rect_p2, - rows=1, - columns=floor(nf / 2), - spacing=[2 * (inter_sd_l + l_gate), 0], - ) - poly2.move((sd_l + l_gate + inter_sd_l, p_mv)) - - # generating poly contacts setups - - if gate_con_pos == "bottom": - mv_1 = 0 - mv_2 = -(w_p2 - w_p1) - elif gate_con_pos == "top": - mv_1 = pc_size[1] + w_p1 - mv_2 = pc_size[1] + w_p2 - else: - mv_1 = -e_c - mv_2 = pc_size[1] + w_p2 - - nc1 = ceil(nf / 2) - nc2 = floor(nf / 2) - - pc_spacing = 2 * (inter_sd_l + l_gate) - - # generating poly contacts - - pc1 = c_inst.add_array( - component=c_pc, rows=1, columns=nc1, spacing=(pc_spacing, 0) - ) - pc1.move((sd_l - ((pc_x - l_gate) / 2), -pc_size[1] - end_cap + mv_1)) - - pc2 = c_inst.add_array( - component=c_pc, rows=1, columns=nc2, spacing=(pc_spacing, 0) - ) - pc2.move( - ( - sd_l - ((pc_x - l_gate) / 2) + (inter_sd_l + l_gate), - -pc_size[1] - end_cap + mv_2, - ) - ) - - if interdig == 1: - if nf == len(patt): - pat = list(patt) - nt = ( - [] - ) # list to store the symbols of transistors and thier number nt(number of transistors) - [nt.append(x) for x in pat if x not in nt] - nl = int(len(nt)) - - m2_spacing = 0.14 - via1_size = (0.15, 0.15) - via1_enc = (0.085, 0.055) - via1_spacing = (0.17, 0.17) - via2_size = (0.2, 0.2) - via2_enc = (0.085, 0.065) - - m2_y = via1_size[1] + 2 * via1_enc[1] - m2 = gf.components.rectangle( - size=(sd_diff.xmax - sd_diff.xmin, m2_y), layer=m2_layer - ) - - if gate_con_pos == "alternating": - pat_o = [] - pat_e = [] - - for i in range(int(nf)): - if i % 2 == 0: - pat_e.append(pat[i]) - else: - pat_o.append(pat[i]) - - nt_o = [] - [nt_o.append(x) for x in pat_o if x not in nt_o] - - nt_e = [] - [nt_e.append(x) for x in pat_e if x not in nt_e] - - nl_b = len(nt_e) - nl_u = len(nt_o) - - m2_y = via2_size[1] + 2 * via2_enc[1] - m2 = gf.components.rectangle( - size=(sd_diff.xmax - sd_diff.xmin, m2_y), layer=m2_layer - ) - - m2_arrb = c_inst.add_array( - component=m2, - columns=1, - rows=nl_b, - spacing=(0, -m2_y - m2_spacing), - ) - m2_arrb.movey(pc1.ymin - m2_spacing - m2_y) - - m2_arru = c_inst.add_array( - component=m2, - columns=1, - rows=nl_u, - spacing=(0, m2_y + m2_spacing), - ) - m2_arru.movey(pc2.ymax + m2_spacing) - - for i in range(nl_u): - for j in range(floor(nf / 2)): - if pat_o[j] == nt_o[i]: - m1 = c_inst.add_ref( - gf.components.rectangle( - size=( - poly_con.xmax - poly_con.xmin, - ( - ( - pc2.ymax - + (i + 1) * (m2_spacing + m2_y) - ) - - pc2.ymin - ), - ), - layer=m1_layer, - ) - ) - m1.move( - ( - ( - sd_l - - ( - (poly_con.xmax - poly_con.xmin - l_gate) - / 2 - ) - + (2 * j + 1) * (l_gate + inter_sd_l) - ), - (pc2.ymin + 0.06), - ) - ) - via1_dr = via_generator( - x_range=(m1.xmin, m1.xmax), - y_range=( - m2_arru.ymin + i * (m2_y + m2_spacing), - m2_arru.ymin + i * (m2_y + m2_spacing) + m2_y, - ), - via_enclosure=via1_enc, - via_layer=via1_layer, - via_size=via1_size, - via_spacing=via1_spacing, - ) - via1 = c_inst.add_ref(via1_dr) - c_inst.add_label( - f"{pat_o[j]}", - position=( - (via1.xmax + via1.xmin) / 2, - (via1.ymax + via1.ymin) / 2, - ), - layer=m1_lbl, - ) - - for i in range(nl_b): - for j in range(ceil(nf / 2)): - if pat_e[j] == nt_e[i]: - m1 = c_inst.add_ref( - gf.components.rectangle( - size=( - poly_con.xmax - poly_con.xmin, - ( - ( - pc1.ymax - + (i + 1) * (m2_spacing + m2_y) - ) - - pc1.ymin - ), - ), - layer=m1_layer, - ) - ) - m1.move( - ( - ( - sd_l - - ( - (poly_con.xmax - poly_con.xmin - l_gate) - / 2 - ) - + (2 * j) * (l_gate + inter_sd_l) - ), - -(m1.ymax - m1.ymin) + (pc1.ymax - 0.06), - ) - ) - via1_dr = via_generator( - x_range=(m1.xmin, m1.xmax), - y_range=( - m2_arrb.ymax - i * (m2_spacing + m2_y) - m2_y, - m2_arrb.ymax - i * (m2_spacing + m2_y), - ), - via_enclosure=via1_enc, - via_layer=via1_layer, - via_size=via1_size, - via_spacing=via1_spacing, - ) - via1 = c_inst.add_ref(via1_dr) - c_inst.add_label( - f"{pat_e[j]}", - position=( - (via1.xmax + via1.xmin) / 2, - (via1.ymax + via1.ymin) / 2, - ), - layer=m1_lbl, - ) - - m3_x = via2_size[0] + 2 * via2_enc[0] - m3_spacing = 0.3 - - for i in range(nl_b): - for j in range(nl_u): - if nt_e[i] == nt_o[j]: - m2_join_b = c_inst.add_ref( - gf.components.rectangle( - size=( - m2_y + (i + 1) * (m3_spacing + m3_x), - m2_y, - ), - layer=m2_layer, - ).move( - ( - m2_arrb.xmin - - (m2_y + (i + 1) * (m3_spacing + m3_x)), - m2_arrb.ymax - - i * (m2_spacing + m2_y) - - m2_y, - ) - ) - ) - m2_join_u = c_inst.add_ref( - gf.components.rectangle( - size=( - m2_y + (i + 1) * (m3_spacing + m3_x), - m2_y, - ), - layer=m2_layer, - ).move( - ( - m2_arru.xmin - - (m2_y + (i + 1) * (m3_spacing + m3_x)), - m2_arru.ymin + j * (m2_spacing + m2_y), - ) - ) - ) - m3 = c_inst.add_ref( - gf.components.rectangle( - size=(m3_x, m2_join_u.ymax - m2_join_b.ymin), - layer=m1_layer, - ) - ) - m3.move((m2_join_b.xmin, m2_join_b.ymin)) - via2_dr = via_generator( - x_range=(m3.xmin, m3.xmax), - y_range=(m2_join_b.ymin, m2_join_b.ymax), - via_enclosure=via1_enc, - via_size=via1_size, - via_layer=via1_layer, - via_spacing=via1_spacing, - ) - c_inst.add_array( - component=via2_dr, - columns=1, - rows=2, - spacing=(0, m2_join_u.ymin - m2_join_b.ymin), - ) - - elif gate_con_pos == "top": - m2_arr = c_inst.add_array( - component=m2, - columns=1, - rows=nl, - spacing=(0, m2.ymax - m2.ymin + m2_spacing), - ) - m2_arr.movey(pc2.ymax + m2_spacing) - - for i in range(nl): - for j in range(int(nf)): - if pat[j] == nt[i]: - m1 = c_inst.add_ref( - gf.components.rectangle( - size=( - poly_con.xmax - poly_con.xmin, - ( - ( - pc2.ymax - + (i + 1) * (m2_spacing + m2_y) - ) - - ((1 - j % 2) * pc1.ymin) - - (j % 2) * pc2.ymin - ), - ), - layer=m1_layer, - ) - ) - m1.move( - ( - ( - sd_l - - ( - (poly_con.xmax - poly_con.xmin - l_gate) - / 2 - ) - + j * (l_gate + inter_sd_l) - ), - (1 - j % 2) * (pc1.ymin + 0.06) - + (j % 2) * (pc2.ymin + 0.06), - ) - ) - via1_dr = via_generator( - x_range=(m1.xmin, m1.xmax), - y_range=( - m2_arr.ymin + i * (m2_spacing + m2_y), - m2_arr.ymin + i * (m2_spacing + m2_y) + m2_y, - ), - via_enclosure=via1_enc, - via_layer=via1_layer, - via_size=via1_size, - via_spacing=via1_spacing, - ) - via1 = c_inst.add_ref(via1_dr) - c_inst.add_label( - f"{pat[j]}", - position=( - (via1.xmax + via1.xmin) / 2, - (via1.ymax + via1.ymin) / 2, - ), - layer=m1_lbl, - ) - - elif gate_con_pos == "bottom": - m2_arr = c_inst.add_array( - component=m2, - columns=1, - rows=nl, - spacing=(0, -m2_y - m2_spacing), - ) - m2_arr.movey(pc2.ymin - m2_spacing - m2_y) - - for i in range(nl): - for j in range(int(nf)): - if pat[j] == nt[i]: - m1 = c_inst.add_ref( - gf.components.rectangle( - size=( - poly_con.xmax - poly_con.xmin, - ( - ( - pc1.ymax - + (i + 1) * (m2_spacing + m2_y) - ) - - (j % 2) * pc1.ymin - - (1 - j % 2) * pc2.ymin - ), - ), - layer=m1_layer, - ) - ) - m1.move( - ( - ( - sd_l - - ( - (poly_con.xmax - poly_con.xmin - l_gate) - / 2 - ) - + j * (l_gate + inter_sd_l) - ), - -(m1.ymax - m1.ymin) - + (1 - j % 2) * (pc1.ymax - 0.06) - + (j % 2) * (pc2.ymax - 0.06), - ) - ) - via1_dr = via_generator( - x_range=(m1.xmin, m1.xmax), - y_range=( - m2_arr.ymax - i * (m2_spacing + m2_y) - m2_y, - m2_arr.ymax - i * (m2_spacing + m2_y), - ), - via_enclosure=via1_enc, - via_layer=via1_layer, - via_size=via1_size, - via_spacing=via1_spacing, - ) - via1 = c_inst.add_ref(via1_dr) - c_inst.add_label( - f"{pat[j]}", - position=( - (via1.xmax + via1.xmin) / 2, - (via1.ymax + via1.ymin) / 2, - ), - layer=m1_lbl, - ) - - # generating bulk - if bulk == "None": - nsdm = c_inst.add_ref( - gf.components.rectangle( - size=(l_d + 2 * diff_nsdm_enc, w + 2 * diff_nsdm_enc), layer=nsdm_layer - ) - ) - nsdm.move((-diff_nsdm_enc, -diff_nsdm_enc)) - - if ( - type == "sky130_fd_pr__nfet_g5v0d10v5" - or type == "sky130_fd_pr__nfet_05v0_nvt" - or type == "sky130_fd_pr__nfet_03v3_nvt" - ): - hvntm = c_inst.add_ref( - gf.components.rectangle( - size=(l_d + 2 * hv_enclosing, w + 2 * hv_enclosing), - layer=hvntm_layer, - ) - ) - hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin - hv_enclosing)) - - elif bulk == "bulk tie": - rect_bulk = c_inst.add_ref( - gf.components.rectangle(size=(sd_l * 1.5, w), layer=tap_layer) - ) - rect_bulk.connect("e1", destination=sd_diff.ports["e3"]) - nsdm = c_inst.add_ref( - gf.components.rectangle( - size=( - sd_diff.xmax - sd_diff.xmin + diff_nsdm_enc, - w + 2 * diff_nsdm_enc, - ), - layer=nsdm_layer, - ) - ) - nsdm.move((-diff_nsdm_enc, -diff_nsdm_enc)) - psdm = c_inst.add_ref( - gf.components.rectangle( - size=( - rect_bulk.xmax - rect_bulk.xmin + tap_psdm_enc, - w + 2 * tap_psdm_enc, - ), - layer=psdm_layer, - ) - ) - psdm.connect("e1", destination=nsdm.ports["e3"]) - - bulk_con = via_stack( - x_range=(rect_bulk.xmin + 0.1, rect_bulk.xmax - 0.1), - y_range=(rect_bulk.ymin, rect_bulk.ymax), - base_layer=tap_layer, - metal_level=0, - ) - c_inst.add_ref(bulk_con) - - if ( - type == "sky130_fd_pr__nfet_g5v0d10v5" - or type == "sky130_fd_pr__nfet_05v0_nvt" - or type == "sky130_fd_pr__nfet_03v3_nvt" - ): - hvntm = c_inst.add_ref( - gf.components.rectangle( - size=(l_d + hv_enclosing, w + 2 * hv_enclosing), layer=hvntm_layer - ) - ) - hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin - hv_enclosing)) - - elif bulk == "Gaurd Ring": - nsdm = c_inst.add_ref( - gf.components.rectangle( - size=(l_d + 2 * diff_nsdm_enc, w + 2 * diff_nsdm_enc), layer=nsdm_layer - ) - ) - nsdm.move((-diff_nsdm_enc, -diff_nsdm_enc)) - c.add_ref(c_inst) - - c_temp = gf.Component("temp_store") - rect_bulk_in = c_temp.add_ref( - gf.components.rectangle( - size=( - (c_inst.xmax - c_inst.xmin) + 2 * diff_tap_spacing, - (c_inst.ymax - c_inst.ymin) + 2 * poly_tap_spacing, - ), - layer=tap_layer, - ) - ) - rect_bulk_in.move( - (c_inst.xmin - diff_tap_spacing, c_inst.ymin - poly_tap_spacing) - ) - rect_bulk_out = c_temp.add_ref( - gf.components.rectangle( - size=( - (rect_bulk_in.xmax - rect_bulk_in.xmin) + 2 * grw, - (rect_bulk_in.ymax - rect_bulk_in.ymin) + 2 * grw, - ), - layer=tap_layer, - ) - ) - rect_bulk_out.move((rect_bulk_in.xmin - grw, rect_bulk_in.ymin - grw)) - c.add_ref( - gf.geometry.boolean( - A=rect_bulk_out, B=rect_bulk_in, operation="A-B", layer=tap_layer - ) - ) - - psdm_in = c_temp.add_ref( - gf.components.rectangle( - size=( - (rect_bulk_in.xmax - rect_bulk_in.xmin) - 2 * tap_psdm_enc, - (rect_bulk_in.ymax - rect_bulk_in.ymin) - 2 * tap_psdm_enc, - ), - layer=psdm_layer, - ) - ) - psdm_in.move( - (rect_bulk_in.xmin + tap_psdm_enc, rect_bulk_in.ymin + tap_psdm_enc) - ) - psdm_out = c_temp.add_ref( - gf.components.rectangle( - size=( - (rect_bulk_out.xmax - rect_bulk_out.xmin) + 2 * tap_psdm_enc, - (rect_bulk_out.ymax - rect_bulk_out.ymin) + 2 * tap_psdm_enc, - ), - layer=nsdm_layer, - ) - ) - psdm_out.move( - (rect_bulk_out.xmin - tap_psdm_enc, rect_bulk_out.ymin - tap_psdm_enc) - ) - psdm = c.add_ref( - gf.geometry.boolean( - A=psdm_out, B=psdm_in, operation="A-B", layer=psdm_layer - ) - ) - - # generating contacts - - c.add_ref( - via_generator( - x_range=(rect_bulk_in.xmin + 0.17, rect_bulk_in.xmax - 0.17), - y_range=(rect_bulk_out.ymin, rect_bulk_in.ymin), - via_enclosure=licon_dt_enc, - via_layer=licon_layer, - via_size=licon_size, - via_spacing=licon_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(rect_bulk_in.xmin + 0.17, rect_bulk_in.xmax - 0.17), - y_range=(rect_bulk_in.ymax, rect_bulk_out.ymax), - via_enclosure=licon_dt_enc, - via_layer=licon_layer, - via_size=licon_size, - via_spacing=licon_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(rect_bulk_out.xmin, rect_bulk_in.xmin), - y_range=(rect_bulk_in.ymin + 0.17, rect_bulk_in.ymax - 0.17), - via_enclosure=licon_dt_enc, - via_layer=licon_layer, - via_size=licon_size, - via_spacing=licon_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(rect_bulk_in.xmax, rect_bulk_out.xmax), - y_range=(rect_bulk_in.ymin + 0.17, rect_bulk_in.ymax - 0.17), - via_enclosure=licon_dt_enc, - via_layer=licon_layer, - via_size=licon_size, - via_spacing=licon_spacing, - ) - ) - - tap_li_in = c_temp.add_ref( - gf.components.rectangle( - size=( - (l_d) + 2 * diff_tap_spacing, - (c_inst.ymax - c_inst.ymin) + 2 * poly_tap_spacing, - ), - layer=li_layer, - ) - ) - tap_li_in.move((-diff_tap_spacing, c_inst.ymin - poly_tap_spacing)) - tap_li_out = c_temp.add_ref( - gf.components.rectangle( - size=( - (rect_bulk_in.xmax - rect_bulk_in.xmin) + 2 * grw, - (rect_bulk_in.ymax - rect_bulk_in.ymin) + 2 * grw, - ), - layer=li_layer, - ) - ) - tap_li_out.move((rect_bulk_in.xmin - grw, rect_bulk_in.ymin - grw)) - c.add_ref( - gf.geometry.boolean( - A=rect_bulk_out, B=rect_bulk_in, operation="A-B", layer=li_layer - ) - ) - - # generating hvi for high voltage - if ( - type == "sky130_fd_pr__nfet_g5v0d10v5" - or type == "sky130_fd_pr__nfet_05v0_nvt" - or type == "sky130_fd_pr__nfet_03v3_nvt" - ): - hvi = c.add_ref( - gf.components.rectangle( - size=( - rect_bulk_out.xmax - rect_bulk_out.xmin + 2 * hv_enclosing, - rect_bulk_out.ymax - rect_bulk_out.ymin + 2 * hv_enclosing, - ), - layer=hvi_layer, - ) - ) - hvi.move( - (rect_bulk_out.xmin - hv_enclosing, rect_bulk_out.ymin - hv_enclosing) - ) - - hvntm = c_inst.add_ref( - gf.components.rectangle( - size=(l_d + 2 * hv_enclosing, w + 2 * hv_enclosing), - layer=hvntm_layer, - ) - ) - hvntm.move((sd_diff.xmin - hv_enclosing, sd_diff.ymin - hv_enclosing)) - - if bulk != "Gaurd Ring": - c.add_ref(c_inst) - - # generating hvi and hvntm for high voltage - if ( - type == "sky130_fd_pr__nfet_g5v0d10v5" - or type == "sky130_fd_pr__nfet_05v0_nvt" - or type == "sky130_fd_pr__nfet_03v3_nvt" - ): - hvi = c.add_ref( - gf.components.rectangle( - size=( - c_inst.xmax - c_inst.xmin + 2 * hv_enclosing, - (c_inst.ymax - c_inst.ymin) + 2 * hv_enclosing, - ), - layer=hvi_layer, - ) - ) - hvi.move((c_inst.xmin - hv_enclosing, c_inst.ymin - hv_enclosing)) - - if type == "sky130_fd_pr__nfet_01v8_lvt": - lvt = c_inst.add_ref( - gf.components.rectangle( - size=( - nf * l_gate + (nf - 1) * inter_sd_l + 2 * gate_lvt_enc, - w + 2 * gate_lvt_enc, - ), - layer=lvtn_layer, - ) - ) - lvt.move((sd_l - gate_lvt_enc, -gate_lvt_enc)) - - if type == "sky130_fd_pr__nfet_03v3_nvt" or type == "sky130_fd_pr__nfet_05v0_nvt": - nvt = c_inst.add_ref( - gf.components.rectangle( - size=( - nf * l_gate + (nf - 1) * inter_sd_l + 2 * gate_lvt_enc, - w + 2 * gate_lvt_enc, - ), - layer=lvtn_layer, - ) - ) - nvt.move((sd_l - gate_lvt_enc, -gate_lvt_enc)) - - if type == "sky130_fd_pr__nfet_03v3_nvt": - areaid_lvn = gf.components.rectangle( - size=(l_gate + 2 * areaid_lvn_enc, w + 2 * areaid_lvn_enc), - layer=areaid_lvn_layer, - ) - areaid_lvn_arr = c_inst.add_array( - component=areaid_lvn, - columns=nf, - rows=1, - spacing=[l_gate + inter_sd_l, 0], - ) - areaid_lvn_arr.move((sd_l - areaid_lvn_enc, sd_diff.ymin - areaid_lvn_enc)) - - # creating layout and cell in klayout - c.write_gds("nfet_temp.gds") - layout.read("nfet_temp.gds") - cell_name = "sky_nfet_dev" - - return layout.cell(cell_name) - # return c - - -# @gf.cell -def draw_pfet( - layout, - l_gate: float = 0.15, - w: float = 0.42, - sd_con_col: int = 1, - inter_sd_l: float = 0.5, # 0.21 , - nf: int = 5, - grw: float = 0.17, - type="sky130_fd_pr__pfet_01v8", - bulk="None", - con_bet_fin: int = 1, - gate_con_pos="alternating", - interdig: int = 1, - patt="", - # n = 1 -) -> gf.Component: - """ - Retern pfet - - Args: - layout : layout object - l : Float of gate length - w : Float of gate width - sd_con_col : integer of number of contacts columns contained in source and drain area - inter_sd_l : Float of source and drain diffusion length between fingers - nf : integer of number of fingers - M : integer of number of multipliers - grw : gaurd ring width when enabled - type : string of the device type - bulk : String of bulk connection type (None, Bulk Tie, Guard Ring) - con_bet_fin : boolean of having contacts for diffusion between fingers - gate_con_pos : string of choosing the gate contact position (bottom, top, alternating ) - - - """ - - # used layers and dimensions - - end_cap: float = 0.2 # may be increases to solve the met1 drc prob - diff_tap_spacing: float = 0.32 - poly_tap_spacing: float = 0.27 - - diff_psdm_enc: float = 0.125 - tap_nsdm_enc: float = 0.125 - - nwell_enclosing: float = 0.18 - - if type == "sky130_fd_pr__pfet_g5v0d10v5": - nwell_enclosing = 0.34 - - gate_npc_ext = 0.11 - npc_spacing = 0.27 - - gate_lvt_enc: float = 0.18 - - gate_hvt_enc: float = 0.18 - - licon_size = (0.17, 0.17) - licon_spacing = (0.19, 0.19) - licon_dt_enc = (0.04, 0.06) - - licon_t_enc = 0.12 - - licon_p_enc = (0.05, 0.08) - - # m1_m1lic_sp = 0.28+ mcon_enc[0] - end_cap - - sd_l_con = ( - ((sd_con_col) * licon_size[0]) - + ((sd_con_col - 1) * licon_spacing[0]) - + 2 * licon_dt_enc[0] - ) - sd_l = sd_l_con + 0.05 - - # gds components to store a single instance and the generated device - c = gf.Component("sky_pfet_dev") - - c_inst = gf.Component("dev_temp") - - # generating sd diffusion - - if interdig == 1 and nf > 1 and nf != len(patt) and patt != "": - nf = len(patt) - - l_d = sd_l + nf * l_gate + (nf - 1) * inter_sd_l + sd_l # diffution total length - rect_d = gf.components.rectangle(size=(l_d, w), layer=diff_layer) - sd_diff = c_inst.add_ref(rect_d) - - # generatin sd contacts - - sd_con = via_stack( - x_range=(0, sd_l), y_range=(0, w), base_layer=diff_layer, metal_level=1 - ) - c_inst.add_array( - component=sd_con, - columns=2, - rows=1, - spacing=(sd_l + nf * l_gate + (nf - 1) * inter_sd_l, 0), - ) - - if con_bet_fin == 1 and nf > 1: - inter_sd_con = via_stack( - x_range=(sd_l + l_gate, sd_l + l_gate + inter_sd_l), - y_range=(0, w), - base_layer=diff_layer, - metal_level=1, - ) - c_inst.add_array( - component=inter_sd_con, - columns=nf - 1, - rows=1, - spacing=(l_gate + inter_sd_l, 0), - ) - - # generating poly - - if l_gate <= licon_size[0] + 2 * licon_p_enc[0]: - pc_x = licon_p_enc[0] + licon_size[0] + licon_p_enc[0] - - else: - pc_x = l_gate - - pc_size = (pc_x, licon_p_enc[1] + licon_size[1] + licon_p_enc[1]) - - c_pc = gf.Component("poly con") - - rect_pc = c_pc.add_ref(gf.components.rectangle(size=pc_size, layer=poly_layer)) - - poly_con = via_stack( - x_range=(rect_pc.xmin, rect_pc.xmax), - y_range=(rect_pc.ymin, rect_pc.ymax), - base_layer=poly_layer, - metal_level=1, - li_enc_dir="H", - ) - c_pc.add_ref(poly_con) - - if nf == 1: - poly = c_inst.add_ref( - gf.components.rectangle(size=(l_gate, w + 2 * end_cap), layer=poly_layer) - ) - poly.move((sd_l, -end_cap)) - - if gate_con_pos == "bottom": - mv = 0 - nr = 1 - elif gate_con_pos == "top": - mv = pc_size[1] + w + 2 * end_cap - nr = 1 - else: - mv = 0 - nr = 2 - - pc = c_inst.add_array( - component=c_pc, - rows=nr, - columns=1, - spacing=(0, pc_size[1] + w + 2 * end_cap), - ) - pc.move((sd_l - ((pc_x - l_gate) / 2), -pc_size[1] - end_cap + mv)) - - else: - w_p1 = end_cap + w + end_cap # poly total width - - if inter_sd_l < (npc_spacing + 2 * gate_npc_ext): - if gate_con_pos == "alternating": - w_p1 += 0.2 - w_p2 = w_p1 - e_c = 0.2 - else: - w_p2 = ( - w_p1 - + licon_p_enc[1] - + licon_size[1] - + licon_p_enc[1] - + npc_spacing - + 0.1 - ) - e_c = 0 - - if gate_con_pos == "bottom": - p_mv = -end_cap - (w_p2 - w_p1) - else: - p_mv = -end_cap - - else: - w_p2 = w_p1 - p_mv = -end_cap - e_c = 0 - - rect_p1 = gf.components.rectangle(size=(l_gate, w_p1), layer=poly_layer) - rect_p2 = gf.components.rectangle(size=(l_gate, w_p2), layer=poly_layer) - poly1 = c_inst.add_array( - rect_p1, - rows=1, - columns=ceil(nf / 2), - spacing=[2 * (inter_sd_l + l_gate), 0], - ) - poly1.move((sd_l, -end_cap - e_c)) - - poly2 = c_inst.add_array( - rect_p2, - rows=1, - columns=floor(nf / 2), - spacing=[2 * (inter_sd_l + l_gate), 0], - ) - poly2.move((sd_l + l_gate + inter_sd_l, p_mv)) - - # generating poly contacts setups - - if gate_con_pos == "bottom": - mv_1 = 0 - mv_2 = -(w_p2 - w_p1) - elif gate_con_pos == "top": - mv_1 = pc_size[1] + w_p1 - mv_2 = pc_size[1] + w_p2 - else: - mv_1 = -e_c - mv_2 = pc_size[1] + w_p2 - - nc1 = ceil(nf / 2) - nc2 = floor(nf / 2) - - pc_spacing = 2 * (inter_sd_l + l_gate) - - # generating poly contacts - - pc1 = c_inst.add_array( - component=c_pc, rows=1, columns=nc1, spacing=(pc_spacing, 0) - ) - pc1.move((sd_l - ((pc_x - l_gate) / 2), -pc_size[1] - end_cap + mv_1)) - - pc2 = c_inst.add_array( - component=c_pc, rows=1, columns=nc2, spacing=(pc_spacing, 0) - ) - pc2.move( - ( - sd_l - ((pc_x - l_gate) / 2) + (inter_sd_l + l_gate), - -pc_size[1] - end_cap + mv_2, - ) - ) - - if interdig == 1: - if nf == len(patt): - pat = list(patt) - nt = ( - [] - ) # list to store the symbols of transistors and thier number nt(number of transistors) - [nt.append(x) for x in pat if x not in nt] - nl = len(nt) - - m2_spacing = 0.14 - via1_size = (0.15, 0.15) - via1_enc = (0.085, 0.055) - via1_spacing = (0.17, 0.17) - via2_size = (0.2, 0.2) - via2_enc = (0.085, 0.065) - - m2_y = via1_size[1] + 2 * via1_enc[1] - m2 = gf.components.rectangle( - size=(sd_diff.xmax - sd_diff.xmin, m2_y), layer=m2_layer - ) - - if gate_con_pos == "alternating": - pat_o = [] - pat_e = [] - - for i in range(int(nf)): - if i % 2 == 0: - pat_e.append(pat[i]) - else: - pat_o.append(pat[i]) - - nt_o = [] - [nt_o.append(x) for x in pat_o if x not in nt_o] - - nt_e = [] - [nt_e.append(x) for x in pat_e if x not in nt_e] - - nl_b = len(nt_e) - nl_u = len(nt_o) - - m2_y = via2_size[1] + 2 * via2_enc[1] - m2 = gf.components.rectangle( - size=(sd_diff.xmax - sd_diff.xmin, m2_y), layer=m2_layer - ) - - m2_arrb = c_inst.add_array( - component=m2, - columns=1, - rows=nl_b, - spacing=(0, -m2_y - m2_spacing), - ) - m2_arrb.movey(pc1.ymin - m2_spacing - m2_y) - - m2_arru = c_inst.add_array( - component=m2, - columns=1, - rows=nl_u, - spacing=(0, m2_y + m2_spacing), - ) - m2_arru.movey(pc2.ymax + m2_spacing) - - for i in range(nl_u): - for j in range(floor(nf / 2)): - if pat_o[j] == nt_o[i]: - m1 = c_inst.add_ref( - gf.components.rectangle( - size=( - poly_con.xmax - poly_con.xmin, - ( - ( - pc2.ymax - + (i + 1) * (m2_spacing + m2_y) - ) - - pc2.ymin - ), - ), - layer=m1_layer, - ) - ) - m1.move( - ( - ( - sd_l - - ( - (poly_con.xmax - poly_con.xmin - l_gate) - / 2 - ) - + (2 * j + 1) * (l_gate + inter_sd_l) - ), - (pc2.ymin + 0.06), - ) - ) - via1_dr = via_generator( - x_range=(m1.xmin, m1.xmax), - y_range=( - m2_arru.ymin + i * (m2_y + m2_spacing), - m2_arru.ymin + i * (m2_y + m2_spacing) + m2_y, - ), - via_enclosure=via1_enc, - via_layer=via1_layer, - via_size=via1_size, - via_spacing=via1_spacing, - ) - via1 = c_inst.add_ref(via1_dr) - c_inst.add_label( - f"{pat_o[j]}", - position=( - (via1.xmax + via1.xmin) / 2, - (via1.ymax + via1.ymin) / 2, - ), - layer=m1_lbl, - ) - # c_inst.add_label(f'G_{pat_o[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) - - for i in range(nl_b): - for j in range(ceil(nf / 2)): - if pat_e[j] == nt_e[i]: - m1 = c_inst.add_ref( - gf.components.rectangle( - size=( - poly_con.xmax - poly_con.xmin, - ( - ( - pc1.ymax - + (i + 1) * (m2_spacing + m2_y) - ) - - pc1.ymin - ), - ), - layer=m1_layer, - ) - ) - m1.move( - ( - ( - sd_l - - ( - (poly_con.xmax - poly_con.xmin - l_gate) - / 2 - ) - + (2 * j) * (l_gate + inter_sd_l) - ), - -(m1.ymax - m1.ymin) + (pc1.ymax - 0.06), - ) - ) - via1_dr = via_generator( - x_range=(m1.xmin, m1.xmax), - y_range=( - m2_arrb.ymax - i * (m2_spacing + m2_y) - m2_y, - m2_arrb.ymax - i * (m2_spacing + m2_y), - ), - via_enclosure=via1_enc, - via_layer=via1_layer, - via_size=via1_size, - via_spacing=via1_spacing, - ) - via1 = c_inst.add_ref(via1_dr) - c_inst.add_label( - f"{pat_e[j]}", - position=( - (via1.xmax + via1.xmin) / 2, - (via1.ymax + via1.ymin) / 2, - ), - layer=m1_lbl, - ) - # c_inst.add_label(f'G_{pat_e[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc1.ymin + pc1.ymax)/2),layer=m1_lbl) - - m3_x = via2_size[0] + 2 * via2_enc[0] - m3_spacing = 0.3 - - for i in range(nl_b): - for j in range(nl_u): - if nt_e[i] == nt_o[j]: - m2_join_b = c_inst.add_ref( - gf.components.rectangle( - size=( - m2_y + (i + 1) * (m3_spacing + m3_x), - m2_y, - ), - layer=m2_layer, - ).move( - ( - m2_arrb.xmin - - (m2_y + (i + 1) * (m3_spacing + m3_x)), - m2_arrb.ymax - - i * (m2_spacing + m2_y) - - m2_y, - ) - ) - ) - m2_join_u = c_inst.add_ref( - gf.components.rectangle( - size=( - m2_y + (i + 1) * (m3_spacing + m3_x), - m2_y, - ), - layer=m2_layer, - ).move( - ( - m2_arru.xmin - - (m2_y + (i + 1) * (m3_spacing + m3_x)), - m2_arru.ymin + j * (m2_spacing + m2_y), - ) - ) - ) - m3 = c_inst.add_ref( - gf.components.rectangle( - size=(m3_x, m2_join_u.ymax - m2_join_b.ymin), - layer=m1_layer, - ) - ) - m3.move((m2_join_b.xmin, m2_join_b.ymin)) - via2_dr = via_generator( - x_range=(m3.xmin, m3.xmax), - y_range=(m2_join_b.ymin, m2_join_b.ymax), - via_enclosure=via1_enc, - via_size=via1_size, - via_layer=via1_layer, - via_spacing=via1_spacing, - ) - c_inst.add_array( - component=via2_dr, - columns=1, - rows=2, - spacing=(0, m2_join_u.ymin - m2_join_b.ymin), - ) - - elif gate_con_pos == "top": - m2_arr = c_inst.add_array( - component=m2, - columns=1, - rows=nl, - spacing=(0, m2.ymax - m2.ymin + m2_spacing), - ) - m2_arr.movey(pc2.ymax + m2_spacing) - - for i in range(nl): - for j in range(int(nf)): - if pat[j] == nt[i]: - m1 = c_inst.add_ref( - gf.components.rectangle( - size=( - poly_con.xmax - poly_con.xmin, - ( - ( - pc2.ymax - + (i + 1) * (m2_spacing + m2_y) - ) - - ((1 - j % 2) * pc1.ymin) - - (j % 2) * pc2.ymin - ), - ), - layer=m1_layer, - ) - ) - m1.move( - ( - ( - sd_l - - ( - (poly_con.xmax - poly_con.xmin - l_gate) - / 2 - ) - + j * (l_gate + inter_sd_l) - ), - (1 - j % 2) * (pc1.ymin + 0.06) - + (j % 2) * (pc2.ymin + 0.06), - ) - ) - via1_dr = via_generator( - x_range=(m1.xmin, m1.xmax), - y_range=( - m2_arr.ymin + i * (m2_spacing + m2_y), - m2_arr.ymin + i * (m2_spacing + m2_y) + m2_y, - ), - via_enclosure=via1_enc, - via_layer=via1_layer, - via_size=via1_size, - via_spacing=via1_spacing, - ) - via1 = c_inst.add_ref(via1_dr) - c_inst.add_label( - f"{pat[j]}", - position=( - (via1.xmax + via1.xmin) / 2, - (via1.ymax + via1.ymin) / 2, - ), - layer=m1_lbl, - ) - # c_inst.add_label(f'G_{pat[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) - - elif gate_con_pos == "bottom": - m2_arr = c_inst.add_array( - component=m2, - columns=1, - rows=nl, - spacing=(0, -m2_y - m2_spacing), - ) - m2_arr.movey(pc2.ymin - m2_spacing - m2_y) - - for i in range(nl): - for j in range(int(nf)): - if pat[j] == nt[i]: - m1 = c_inst.add_ref( - gf.components.rectangle( - size=( - poly_con.xmax - poly_con.xmin, - ( - ( - pc1.ymax - + (i + 1) * (m2_spacing + m2_y) - ) - - (j % 2) * pc1.ymin - - (1 - j % 2) * pc2.ymin - ), - ), - layer=m1_layer, - ) - ) - m1.move( - ( - ( - sd_l - - ( - (poly_con.xmax - poly_con.xmin - l_gate) - / 2 - ) - + j * (l_gate + inter_sd_l) - ), - -(m1.ymax - m1.ymin) - + (1 - j % 2) * (pc1.ymax - 0.06) - + (j % 2) * (pc2.ymax - 0.06), - ) - ) - via1_dr = via_generator( - x_range=(m1.xmin, m1.xmax), - y_range=( - m2_arr.ymax - i * (m2_spacing + m2_y) - m2_y, - m2_arr.ymax - i * (m2_spacing + m2_y), - ), - via_enclosure=via1_enc, - via_layer=via1_layer, - via_size=via1_size, - via_spacing=via1_spacing, - ) - via1 = c_inst.add_ref(via1_dr) - c_inst.add_label( - f"{pat[j]}", - position=( - (via1.xmax + via1.xmin) / 2, - (via1.ymax + via1.ymin) / 2, - ), - layer=m1_lbl, - ) - # c_inst.add_label(f'G_{pat[j]}{n}',position=((via1.xmax+via1.xmin)/2, (pc2.ymin + pc2.ymax)/2),layer=m1_lbl) - - # generating bulk - if bulk == "None": - psdm = c_inst.add_ref( - gf.components.rectangle( - size=(l_d + 2 * diff_psdm_enc, w + 2 * diff_psdm_enc), layer=psdm_layer - ) - ) - psdm.move((-diff_psdm_enc, -diff_psdm_enc)) - - elif bulk == "bulk tie": - rect_bulk = c_inst.add_ref( - gf.components.rectangle(size=(1.3 * sd_l, w), layer=tap_layer) - ) - rect_bulk.connect("e1", destination=sd_diff.ports["e3"]) - psdm = c_inst.add_ref( - gf.components.rectangle( - size=( - sd_diff.xmax - sd_diff.xmin + diff_psdm_enc, - w + 2 * diff_psdm_enc, - ), - layer=psdm_layer, - ) - ) - psdm.move((-diff_psdm_enc, -diff_psdm_enc)) - nsdm = c_inst.add_ref( - gf.components.rectangle( - size=( - rect_bulk.xmax - rect_bulk.xmin + tap_nsdm_enc, - w + 2 * tap_nsdm_enc, - ), - layer=nsdm_layer, - ) - ) - nsdm.move((rect_bulk.xmin, rect_bulk.ymin - tap_nsdm_enc)) - - bulk_con = via_stack( - x_range=(rect_bulk.xmin + 0.1, rect_bulk.xmax - 0.1), - y_range=(rect_bulk.ymin, rect_bulk.ymax), - base_layer=tap_layer, - metal_level=0, - ) - c_inst.add_ref(bulk_con) - - elif bulk == "Gaurd Ring": - psdm = c_inst.add_ref( - gf.components.rectangle( - size=(l_d + 2 * diff_psdm_enc, w + 2 * diff_psdm_enc), layer=psdm_layer - ) - ) - psdm.move((-diff_psdm_enc, -diff_psdm_enc)) - c.add_ref(c_inst) - - c_temp = gf.Component("temp_store") - rect_bulk_in = c_temp.add_ref( - gf.components.rectangle( - size=( - (c_inst.xmax - c_inst.xmin) + 2 * diff_tap_spacing, - (c_inst.ymax - c_inst.ymin) + 2 * poly_tap_spacing, - ), - layer=tap_layer, - ) - ) - - rect_bulk_in.move( - (c_inst.xmin - diff_tap_spacing, c_inst.ymin - poly_tap_spacing) - ) - rect_bulk_out = c_temp.add_ref( - gf.components.rectangle( - size=( - (rect_bulk_in.xmax - rect_bulk_in.xmin) + 2 * grw, - (rect_bulk_in.ymax - rect_bulk_in.ymin) + 2 * grw, - ), - layer=tap_layer, - ) - ) - rect_bulk_out.move((rect_bulk_in.xmin - grw, rect_bulk_in.ymin - grw)) - B = c.add_ref( - gf.geometry.boolean( - A=rect_bulk_out, B=rect_bulk_in, operation="A-B", layer=tap_layer - ) - ) - - nsdm_in = c_temp.add_ref( - gf.components.rectangle( - size=( - (rect_bulk_in.xmax - rect_bulk_in.xmin) - 2 * tap_nsdm_enc, - (rect_bulk_in.ymax - rect_bulk_in.ymin) - 2 * tap_nsdm_enc, - ), - layer=nsdm_layer, - ) - ) - nsdm_in.move( - (rect_bulk_in.xmin + tap_nsdm_enc, rect_bulk_in.ymin + tap_nsdm_enc) - ) - nsdm_out = c_temp.add_ref( - gf.components.rectangle( - size=( - (rect_bulk_out.xmax - rect_bulk_out.xmin) + 2 * tap_nsdm_enc, - (rect_bulk_out.ymax - rect_bulk_out.ymin) + 2 * tap_nsdm_enc, - ), - layer=nsdm_layer, - ) - ) - nsdm_out.move( - (rect_bulk_out.xmin - tap_nsdm_enc, rect_bulk_out.ymin - tap_nsdm_enc) - ) - nsdm = c.add_ref( - gf.geometry.boolean( - A=nsdm_out, B=nsdm_in, operation="A-B", layer=nsdm_layer - ) - ) - - # adding contacts - - if grw < licon_size[0] + 2 * licon_t_enc: - g_con_range = (B.ymin, B.ymax) - else: - g_con_range = (B.ymin, B.ymax) - - c.add_ref( - via_generator( - x_range=(rect_bulk_in.xmin + 0.17, rect_bulk_in.xmax - 0.17), - y_range=(rect_bulk_out.ymin, rect_bulk_in.ymin), - via_enclosure=licon_dt_enc, - via_layer=licon_layer, - via_size=licon_size, - via_spacing=licon_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(rect_bulk_in.xmin + 0.17, rect_bulk_in.xmax - 0.17), - y_range=(rect_bulk_in.ymax, rect_bulk_out.ymax), - via_enclosure=licon_dt_enc, - via_layer=licon_layer, - via_size=licon_size, - via_spacing=licon_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(rect_bulk_out.xmin, rect_bulk_in.xmin), - y_range=g_con_range, - via_enclosure=licon_dt_enc, - via_layer=licon_layer, - via_size=licon_size, - via_spacing=licon_spacing, - ) - ) - - c.add_ref( - via_generator( - x_range=(rect_bulk_in.xmax, rect_bulk_out.xmax), - y_range=g_con_range, - via_enclosure=licon_dt_enc, - via_layer=licon_layer, - via_size=licon_size, - via_spacing=licon_spacing, - ) - ) - - tap_li_in = c_temp.add_ref( - gf.components.rectangle( - size=( - (l_d) + 2 * diff_tap_spacing, - (c_inst.ymax - c_inst.ymin) + 2 * poly_tap_spacing, - ), - layer=li_layer, - ) - ) - tap_li_in.move((-diff_tap_spacing, c_inst.ymin - poly_tap_spacing)) - tap_li_out = c_temp.add_ref( - gf.components.rectangle( - size=( - (rect_bulk_in.xmax - rect_bulk_in.xmin) + 2 * grw, - (rect_bulk_in.ymax - rect_bulk_in.ymin) + 2 * grw, - ), - layer=li_layer, - ) - ) - tap_li_out.move((rect_bulk_in.xmin - grw, rect_bulk_in.ymin - grw)) - c.add_ref( - gf.geometry.boolean( - A=rect_bulk_out, B=rect_bulk_in, operation="A-B", layer=li_layer - ) - ) - - # generating nwell - nwell = c.add_ref( - gf.components.rectangle( - size=( - nsdm_out.xmax - nsdm_out.xmin + 2 * nwell_enclosing, - nsdm_out.ymax - nsdm_out.ymin + 2 * nwell_enclosing, - ), - layer=nwell_layer, - ) - ) - nwell.move((nsdm_out.xmin - nwell_enclosing, nsdm_out.ymin - nwell_enclosing)) - - if bulk != "Gaurd Ring": - c.add_ref(c_inst) - - # nwell generation - nwell = c.add_ref( - gf.components.rectangle( - size=( - c_inst.xmax - c_inst.xmin + 2 * nwell_enclosing, - (c_inst.ymax - c_inst.ymin) + 2 * nwell_enclosing, - ), - layer=nwell_layer, - ) - ) - nwell.move((c_inst.xmin - nwell_enclosing, c_inst.ymin - nwell_enclosing)) - - if type == "sky130_fd_pr__pfet_01v8_lvt": - lvt = c_inst.add_ref( - gf.components.rectangle( - size=( - nf * l_gate + (nf - 1) * inter_sd_l + 2 * gate_lvt_enc, - w + 2 * gate_lvt_enc, - ), - layer=lvtn_layer, - ) - ) - lvt.move((sd_l - gate_lvt_enc, -gate_lvt_enc)) - - if type == "sky130_fd_pr__pfet_01v8_hvt": - hvt = c_inst.add_ref( - gf.components.rectangle( - size=( - nf * l_gate + (nf - 1) * inter_sd_l + 2 * gate_hvt_enc, - w + 2 * gate_hvt_enc, - ), - layer=hvtp_layer, - ) - ) - hvt.move((sd_l - gate_hvt_enc, -gate_hvt_enc)) - - if type == "sky130_fd_pr__pfet_g5v0d10v5": - hvi = c.add_ref( - gf.components.rectangle( - size=(nwell.xmax - nwell.xmin, nwell.ymax - nwell.ymin), layer=hvi_layer - ) - ) - hvi.move((nwell.xmin, nwell.ymin)) - - # creating layout and cell in klayout - c.write_gds("pfet_temp.gds") - layout.read("pfet_temp.gds") - cell_name = "sky_pfet_dev" - - return layout.cell(cell_name) - # return c - - -if __name__ == "__main__": - c = draw_pfet() - c.show() diff --git a/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py b/sky130/cells/klayout/pymacros/cells/draw_guard_ring.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/draw_rf.py b/sky130/cells/klayout/pymacros/cells/draw_rf.py deleted file mode 100644 index 04cc7a820..000000000 --- a/sky130/cells/klayout/pymacros/cells/draw_rf.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -## RF Devices Pcells Generators for Klayout of skywater130 -######################################################################################################################## - - -import os - -from .globals import RF_BJT_DEV, RF_COILS_DEV, RF_MOSFET_DEV - -gds_p_path = os.path.join( - os.path.dirname(os.path.abspath(__file__)), "fixed_devices/rf" -) # parent file path - - -def draw_rf_mosfet(layout, device_name): - """ - drawing rf mosfet devices - """ - gds_path = f"{gds_p_path}/rf_mosfet" # gds file path - - if device_name in RF_MOSFET_DEV: - layout.read(f"{gds_path}/{device_name}.gds") - cell_name = device_name - else: - cell_name = device_name - - return layout.cell(cell_name) - - -def draw_rf_bjt(layout, device_name): - """ - drawing rf mosfet devices - """ - - gds_path = f"{gds_p_path}/rf_bjt" # gds file path - - if device_name in RF_BJT_DEV: - layout.read(f"{gds_path}/{device_name}.gds") - cell_name = device_name - else: - cell_name = device_name - - return layout.cell(cell_name) - - -def draw_rf_coils(layout, device_name): - """ - drawing rf coils devices - """ - - gds_path = f"{gds_p_path}/rf_coils" # gds file path - - if device_name in RF_COILS_DEV: - layout.read(f"{gds_path}/{device_name}.gds") - cell_name = device_name - else: - cell_name = device_name - - return layout.cell(cell_name) diff --git a/sky130/cells/klayout/pymacros/cells/draw_vpp.py b/sky130/cells/klayout/pymacros/cells/draw_vpp.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fet.py b/sky130/cells/klayout/pymacros/cells/fet.py deleted file mode 100644 index d4c217afb..000000000 --- a/sky130/cells/klayout/pymacros/cells/fet.py +++ /dev/null @@ -1,349 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# MOSFET (PFET) Generator for skywater130 -######################################################################################################################## - -import pya - -from .draw_fet import draw_nfet, draw_pfet - -fet_01v8_l = 0.15 -fet_g5v0_l = 0.5 - -fet_w = 0.42 - -fet_ld = 0.3 -fet_inter_ld = 0.3 -fet_01v8_grw = 0.17 -pfet_g5v0_grw = 0.3 - -pfet_01v8_lvt_l = 0.35 -nfet_g5v0_nvt_l = 0.9 - - -class pfet(pya.PCellDeclarationHelper): - """ - PMOS Generator for Skywater130 - """ - - def __init__(self): - # Initialize super class. - super().__init__() - - # ===================== PARAMETERS DECLARATIONS ===================== - - self.param( - "con_bet_fin", self.TypeBoolean, "Contact Between Fingers", default=1 - ) - - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice( - "sky130_fd_pr__pfet_01v8", "sky130_fd_pr__pfet_01v8" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__pfet_01v8_lvt", "sky130_fd_pr__pfet_01v8_lvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__pfet_01v8_hvt", "sky130_fd_pr__pfet_01v8_hvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__pfet_g5v0d10v5", "sky130_fd_pr__pfet_g5v0d10v5" - ) - self.Type_handle = self.param("bulk", self.TypeList, "Bulk Type") - self.Type_handle.add_choice("None", "None") - self.Type_handle.add_choice("bulk tie", "bulk tie") - self.Type_handle.add_choice("Gaurd Ring", "Gaurd Ring") - self.Type_handle = self.param( - "gate_con_pos", self.TypeList, "Gate Contact Position" - ) - self.Type_handle.add_choice("top", "top") - self.Type_handle.add_choice("bottom", "bottom") - self.Type_handle.add_choice("alternating", "alternating") - - self.param("l", self.TypeDouble, "length", default=fet_01v8_l, unit="um") - self.param("w", self.TypeDouble, "Width", default=fet_w, unit="um") - self.param("sd_con_col", self.TypeInt, "Diffusion Contacts Columns", default=1) - self.param( - "inter_sd_l", - self.TypeDouble, - "Between Fingers Diffusion Length", - default=fet_inter_ld, - unit="um", - ) - self.param("nf", self.TypeInt, "Number of Fingers", default=1) - self.param( - "grw", self.TypeDouble, "Guard Ring Width", default=fet_01v8_grw, unit="um" - ) - self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") - - self.param("interdig", self.TypeBoolean, "Interdigitation", default=0) - self.param( - "patt", self.TypeString, "Pattern in case of Interdigitation", default="" - ) - - # self.param("n", self.TypeInt, "inst_num", default=1) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return "pfet(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" - - def coerce_parameters_impl(self): - # We employ coerce_parameters_impl to decide whether the handle or the - # numeric parameter has changed (by comparing against the effective - # radius ru) and set ru to the effective radius. We also update the - # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2 * (self.w + self.l) - # w,l must be larger or equal than min. values. - if self.type == "sky130_fd_pr__pfet_g5v0d10v5": - if (self.l) < fet_g5v0_l: - self.l = fet_g5v0_l - if (self.w) < fet_w: - self.w = fet_w - if (self.grw) < pfet_g5v0_grw: - self.grw = pfet_g5v0_grw - else: - if (self.l) < fet_01v8_l: - self.l = fet_01v8_l - if (self.w) < fet_w: - self.w = fet_w - if (self.grw) < fet_01v8_grw: - self.grw = fet_01v8_grw - - if self.type == "sky130_fd_pr__pfet_01v8_lvt": - if (self.l) < pfet_01v8_lvt_l: - self.l = pfet_01v8_lvt_l - else: - if (self.l) < fet_01v8_l: - self.l = fet_01v8_l - - if (self.sd_con_col) < 1: - self.sd_con_col = 1 - - if (self.inter_sd_l) < fet_inter_ld and self.con_bet_fin == 1: - self.inter_sd_l = fet_inter_ld - elif (self.inter_sd_l) < 0.21 and self.con_bet_fin == 0: - self.inter_sd_l = 0.21 - - if self.interdig == 1 and self.gate_con_pos != "alternating": - self.inter_sd_l = 0.5 - - def can_create_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we can use any shape which - # has a finite bounding box - return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() - - def parameters_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we set r and l from the shape's - # bounding box width and layer - self.r = self.shape.bbox().width() * self.layout.dbu / 2 - self.l = self.layout.get_info(self.layer) - - def transformation_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we use the center of the shape's - # bounding box to determine the transformation - return pya.Trans(self.shape.bbox().center()) - - def produce_impl(self): - instance = draw_pfet( - layout=self.layout, - l_gate=self.l, - w=self.w, - sd_con_col=self.sd_con_col, - inter_sd_l=self.inter_sd_l, - nf=self.nf, - grw=self.grw, - type=self.type, - bulk=self.bulk, - con_bet_fin=self.con_bet_fin, - gate_con_pos=self.gate_con_pos, - interdig=self.interdig, - patt=self.patt, - ) - write_cells = pya.CellInstArray( - instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.insert(write_cells) - self.cell.flatten(1) - - -class nfet(pya.PCellDeclarationHelper): - """ - NMOS Generator for Skywater130 - """ - - def __init__(self): - # Initialize super class. - super().__init__() - - # ===================== PARAMETERS DECLARATIONS ===================== - - self.param( - "con_bet_fin", self.TypeBoolean, "Contact Between Fingers", default=1 - ) - self.Type_handle = self.param("type", self.TypeList, "Device Type") - self.Type_handle.add_choice( - "sky130_fd_pr__nfet_01v8", "sky130_fd_pr__nfet_01v8" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__nfet_01v8_lvt", "sky130_fd_pr__nfet_01v8_lvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__nfet_03v3_nvt", "sky130_fd_pr__nfet_03v3_nvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__nfet_05v0_nvt", "sky130_fd_pr__nfet_05v0_nvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__nfet_g5v0d10v5", "sky130_fd_pr__nfet_g5v0d10v5" - ) - self.Type_handle = self.param("bulk", self.TypeList, "Bulk Type") - self.Type_handle.add_choice("None", "None") - self.Type_handle.add_choice("bulk tie", "bulk tie") - self.Type_handle.add_choice("Gaurd Ring", "Gaurd Ring") - self.Type_handle = self.param( - "gate_con_pos", self.TypeList, "Gate Contact Position" - ) - self.Type_handle.add_choice("top", "top") - self.Type_handle.add_choice("bottom", "bottom") - self.Type_handle.add_choice("alternating", "alternating") - - self.param("l", self.TypeDouble, "length", default=fet_01v8_l, unit="um") - self.param("w", self.TypeDouble, "Width", default=fet_w, unit="um") - self.param( - "sd_con_col", - self.TypeDouble, - "Diffusion Contacts Columns", - default=fet_ld, - unit="um", - ) - self.param( - "inter_sd_l", - self.TypeDouble, - "Between Fingers Diffusion Length", - default=fet_inter_ld, - unit="um", - ) - self.param("nf", self.TypeInt, "Number of Fingers", default=1) - self.param( - "grw", self.TypeDouble, "Guard Ring Width", default=fet_01v8_grw, unit="um" - ) - self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") - self.param("perim", self.TypeDouble, "Perimeter", readonly=True, unit="um") - - self.param("interdig", self.TypeBoolean, "Interdigitation", default=0) - self.param( - "patt", self.TypeString, "Pattern in case of Interdigitation", default="" - ) - - # self.param("n", self.TypeInt, "inst_num", default=1) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return "nfet(L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" - - def coerce_parameters_impl(self): - # We employ coerce_parameters_impl to decide whether the handle or the - # numeric parameter has changed (by comparing against the effective - # radius ru) and set ru to the effective radius. We also update the - # numerical value or the shape, depending on which on has not changed. - self.area = self.w * self.l - self.perim = 2 * (self.w + self.l) - # w,l must be larger or equal than min. values. - if ( - self.type == "sky130_fd_pr__nfet_03v3_nvt" - or self.type == "sky130_fd_pr__nfet_05v0_nvt" - or self.type == "sky130_fd_pr__nfet_g5v0d10v5" - ): - if (self.l) < fet_g5v0_l: - self.l = fet_g5v0_l - if (self.w) < fet_w: - self.w = fet_w - if (self.grw) < pfet_g5v0_grw: - self.grw = pfet_g5v0_grw - - if self.type == "sky130_fd_pr__nfet_05v0_nvt": - if (self.l) < nfet_g5v0_nvt_l: - self.l = nfet_g5v0_nvt_l - - else: - if (self.l) < fet_01v8_l: - self.l = fet_01v8_l - if (self.w) < fet_w: - self.w = fet_w - if (self.grw) < fet_01v8_grw: - self.grw = fet_01v8_grw - - if (self.sd_con_col) < 1: - self.sd_con_col = 1 - - if (self.inter_sd_l) < fet_inter_ld and self.con_bet_fin == 1: - self.inter_sd_l = fet_inter_ld - elif self.inter_sd_l < 0.21 and self.con_bet_fin == 0: - self.inter_sd_l = 0.21 - - if self.interdig == 1 and self.gate_con_pos != "alternating": - self.inter_sd_l = 0.5 - - def can_create_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we can use any shape which - # has a finite bounding box - return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() - - def parameters_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we set r and l from the shape's - # bounding box width and layer - self.r = self.shape.bbox().width() * self.layout.dbu / 2 - self.l = self.layout.get_info(self.layer) - - def transformation_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we use the center of the shape's - # bounding box to determine the transformation - return pya.Trans(self.shape.bbox().center()) - - def produce_impl(self): - instance = draw_nfet( - layout=self.layout, - l_gate=self.l, - w=self.w, - sd_con_col=self.sd_con_col, - inter_sd_l=self.inter_sd_l, - nf=self.nf, - grw=self.grw, - type=self.type, - bulk=self.bulk, - con_bet_fin=self.con_bet_fin, - gate_con_pos=self.gate_con_pos, - interdig=self.interdig, - patt=self.patt, - ) - write_cells = pya.CellInstArray( - instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.insert(write_cells) - self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl deleted file mode 100644 index 11eeba181..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield C0 C1 SUB cap_1 cap_2 - -Cx C0 C1 SUB cap_1 cap_2 sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl deleted file mode 100644 index 518ce4d4e..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl deleted file mode 100644 index dd2386ea1..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl deleted file mode 100644 index c0967eccd..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl deleted file mode 100644 index 54f76bfff..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl deleted file mode 100644 index 9d2c3bd40..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl deleted file mode 100644 index 99f60b116..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 C0 C1 MET3 SUB - -Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl deleted file mode 100644 index 111459af2..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl deleted file mode 100644 index fca65f021..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell - -Cx sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl deleted file mode 100644 index 27c980304..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 C0 C1 MET3 SUB - -Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl deleted file mode 100644 index 7f414f417..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl deleted file mode 100644 index 2fc44f5b1..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl deleted file mode 100644 index fa4e6b86f..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl deleted file mode 100644 index 136d1fc4e..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl deleted file mode 100644 index ed0cacadf..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 C0 C1 MET5 SUB - -Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl deleted file mode 100644 index a938dd141..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top C0 C1 M5 SUB - -Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl deleted file mode 100644 index 0b6348eb8..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl deleted file mode 100644 index 01b50a16a..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 C0 C1 MET4 SUB - -Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl deleted file mode 100644 index 4646039fa..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top C0 C1 M4 SUB - -Cx C0 C1 M4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl deleted file mode 100644 index 2668d2879..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 C0 C1 MET4 SUB - -Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl deleted file mode 100644 index 5fa88d550..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top C0 C1 M4 SUB - -Cx C0 C1 M4 SUB sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl deleted file mode 100644 index d1b88291b..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl deleted file mode 100644 index 52d9efdd9..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell - -Cx sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl deleted file mode 100644 index c25671d11..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 C0 C1 MET3 SUB - -Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl deleted file mode 100644 index be024e591..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl deleted file mode 100644 index d371ed437..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl deleted file mode 100644 index ee42d6c67..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl deleted file mode 100644 index ef3855f80..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 C0 C1 MET5 SUB - -Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl deleted file mode 100644 index 4396a41e3..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top C0 C1 M5 SUB - -Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl deleted file mode 100644 index efc1a7b40..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl deleted file mode 100644 index e5fbb6aeb..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv C0 C1 MET5 - -Cx C0 C1 MET5 sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl deleted file mode 100644 index e8351cf70..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop C0 M5 SUB - -Cx C0 M5 SUB sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl deleted file mode 100644 index 800d32907..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl deleted file mode 100644 index e2fe693ab..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 C0 C1 MET3 SUB - -Cx C0 C1 MET3 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl deleted file mode 100644 index 5a8acc878..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 C0 C1 MET4 SUB - -Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl deleted file mode 100644 index d4d0ba68e..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top C0 C1 M4 SUB - -Cx C0 C1 M4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl deleted file mode 100644 index 44119b570..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 C0 C1 MET4 SUB - -Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl deleted file mode 100644 index 1920407f4..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top C0 C1 M4 SUB - -Cx C0 C1 M4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl deleted file mode 100644 index da38c67bd..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 C0 C1 MET5 SUB - -Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl deleted file mode 100644 index 814c371da..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top C0 C1 M5 SUB - -Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl deleted file mode 100644 index 48627283b..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 C0 C1 MET5 SUB - -Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl deleted file mode 100644 index f0c0cb0ed..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top C0 C1 M5 SUB - -Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl deleted file mode 100644 index 0c50a9ec9..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x C0 C1 MET5 SUB - -Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl deleted file mode 100644 index 6b3e7a551..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 C0 C1 M5A SUB - -Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl deleted file mode 100644 index 88080e11d..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 C0 C1 M5A SUB - -Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl deleted file mode 100644 index b1e5188c8..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 C0 C1 M5A SUB - -Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl deleted file mode 100644 index 14d8a0a64..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 C0 C1 M5A SUB - -Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl deleted file mode 100644 index 898cfd780..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop C0 C1 M5 SUB - -Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl deleted file mode 100644 index 3941b7713..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl deleted file mode 100644 index 54be7e2f5..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl deleted file mode 100644 index 999d41fa8..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl deleted file mode 100644 index 8e1964500..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 C0 C1 MET5 SUB - -Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl deleted file mode 100644 index da62a0dea..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top C0 C1 M5 SUB - -Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl deleted file mode 100644 index 7ab4718a2..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 C0 C1 MET5 SUB - -Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl deleted file mode 100644 index 7cbe7504a..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top C0 C1 M5 SUB - -Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl deleted file mode 100644 index 0149bf1f8..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 C0 C1 MET5 SUB - -Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl deleted file mode 100644 index 33184d9a0..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index a0fd54a09..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield - -Cx sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index 1b24bd6ee..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield - -Cx sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index b7ddf7ad7..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield - -Cx sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index b2989951b..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield - -Cx sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index eef7614b6..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield - -Cx sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index 5a966c42e..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield - -Cx sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index 9c615a309..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield - -Cx sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index 80ec3c196..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield C0 C1 SUB - -Cx C0 C1 SUB sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index 269a677dd..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield - -Cx sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl deleted file mode 100644 index b4da70ef8..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin - -Cx sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl deleted file mode 100644 index 1913ea38a..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield - -Cx sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl deleted file mode 100644 index 242509984..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin - -Cx sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl deleted file mode 100644 index 1005a491c..000000000 --- a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.cdl +++ /dev/null @@ -1,22 +0,0 @@ - -# Copyright 2022 SkyWater PDK Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -.SUBCKT sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test - -Cx sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test - -.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L1p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L1p00.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_05v5_W1p00L2p00.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/npn/sky130_fd_pr__npn_11v0_W1p00L1p00.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/pnp/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/pnp/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/pnp/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/bjt/pnp/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/photodiode/sky130_fd_pr__photodiode.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/photodiode/sky130_fd_pr__photodiode.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L4p00.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W1p00L8p00.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L2p00.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L4p00.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W2p00L8p00.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_bjt/sky130_fd_pr__rf_npn_05v5_W5p00L5p00.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil1.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil1.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil2.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil2.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil3.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_coils/sky130_fd_pr__rf_test_coil3.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_aup.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_aup.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_withptap_iso.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_zvt_withptap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_20v0_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_pfet_20v0_withptap.gds deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/globals.py b/sky130/cells/klayout/pymacros/cells/globals.py deleted file mode 100644 index 7c8c5ed40..000000000 --- a/sky130/cells/klayout/pymacros/cells/globals.py +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# Global parameters generation -######################################################################################################################## - -import glob -import os - -# Listing device names - -fixed_dev_path = os.path.join( - os.path.dirname(os.path.abspath(__file__)), "fixed_devices" -) # parent file path - -BJT_NPN_DEV = glob.glob(f"{fixed_dev_path}/bjt/npn/*") - -for i in range(len(BJT_NPN_DEV)): - BJT_NPN_DEV[i] = BJT_NPN_DEV[i].split("/")[-1] - BJT_NPN_DEV[i] = BJT_NPN_DEV[i][:-4] - - -BJT_PNP_DEV = glob.glob(f"{fixed_dev_path}/bjt/pnp/*") - -for i in range(len(BJT_PNP_DEV)): - BJT_PNP_DEV[i] = BJT_PNP_DEV[i].split("/")[-1] - BJT_PNP_DEV[i] = BJT_PNP_DEV[i][:-4] - - -VPP_CAP_DEV = glob.glob(f"{fixed_dev_path}/VPP/*") - -for i in range(len(VPP_CAP_DEV)): - VPP_CAP_DEV[i] = VPP_CAP_DEV[i].split("/")[-1] - VPP_CAP_DEV[i] = VPP_CAP_DEV[i][:-4] - - -PHOTO_D_DEV = glob.glob(f"{fixed_dev_path}/photodiode/*") -for i in range(len(PHOTO_D_DEV)): - PHOTO_D_DEV[i] = PHOTO_D_DEV[i].split("/")[-1] - PHOTO_D_DEV[i] = PHOTO_D_DEV[i][:-4] - -RF_MOSFET_DEV = glob.glob(f"{fixed_dev_path}/rf/rf_mosfet/*") -for i in range(len(RF_MOSFET_DEV)): - RF_MOSFET_DEV[i] = RF_MOSFET_DEV[i].split("/")[-1] - RF_MOSFET_DEV[i] = RF_MOSFET_DEV[i][:-4] - -RF_BJT_DEV = glob.glob(f"{fixed_dev_path}/rf/rf_bjt/*") -for i in range(len(RF_BJT_DEV)): - RF_BJT_DEV[i] = RF_BJT_DEV[i].split("/")[-1] - RF_BJT_DEV[i] = RF_BJT_DEV[i][:-4] - -RF_COILS_DEV = glob.glob(f"{fixed_dev_path}/rf/rf_coils/*") -for i in range(len(RF_COILS_DEV)): - RF_COILS_DEV[i] = RF_COILS_DEV[i].split("/")[-1] - RF_COILS_DEV[i] = RF_COILS_DEV[i][:-4] - -# print (VPP_CAP_DEV) diff --git a/sky130/cells/klayout/pymacros/cells/gr.py b/sky130/cells/klayout/pymacros/cells/gr.py deleted file mode 100644 index 6aee3af27..000000000 --- a/sky130/cells/klayout/pymacros/cells/gr.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# Guard Ring Generator for skywater130 -######################################################################################################################## - -import pya - -from .draw_guard_ring import draw_gr - -min_s = 0.27 -min_w = 0.17 -min_w_m1 = 0.23 -min_s_m1 = 0.38 - - -class guard_ring_gen(pya.PCellDeclarationHelper): - """ - Guard Ring Generator for Skywater130 - """ - - def __init__(self): - # Initialize super class. - super().__init__() - - # ===================== PARAMETERS DECLARATIONS ===================== - - self.param("in_w", self.TypeDouble, "Inner Width", default=min_s, unit="um") - self.param("in_l", self.TypeDouble, "Inner Length", default=min_s, unit="um") - self.param("grw", self.TypeDouble, "Guard Ring Width", default=min_w, unit="um") - - self.Type_handle = self.param("con_lev", self.TypeList, "Connection Level") - self.Type_handle.add_choice("None", "None") - self.Type_handle.add_choice("li", "li") - self.Type_handle.add_choice("metal1", "metal1") - - def display_text_impl(self): - # Provide a descriptive text for the cell - return f"Guard Ring(Ring Width = {self.grw})" - - def coerce_parameters_impl(self): - # We employ coerce_parameters_impl to decide whether the handle or the - # numeric parameter has changed (by comparing against the effective - # radius ru) and set ru to the effective radius. We also update the - # numerical value or the shape, depending on which on has not changed. - # w,l must be larger or equal than min. values. - - if self.con_lev == "metal1": - if self.grw < min_w_m1: - self.grw = min_w_m1 - - if self.in_l < min_s_m1: - self.in_l = min_s_m1 - - if self.in_w < min_s_m1: - self.in_w = min_s_m1 - else: - if self.grw < min_w: - self.grw = min_w - - if self.in_l < min_s: - self.in_l = min_s - - if self.in_w < min_s: - self.in_w = min_s - - def can_create_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we can use any shape which - # has a finite bounding box - return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() - - def parameters_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we set r and l from the shape's - # bounding box width and layer - self.r = self.shape.bbox().width() * self.layout.dbu / 2 - self.l = self.layout.get_info(self.layer) - - def transformation_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we use the center of the shape's - # bounding box to determine the transformation - return pya.Trans(self.shape.bbox().center()) - - def produce_impl(self): - instance = draw_gr( - layout=self.layout, - in_l=self.in_l, - in_w=self.in_w, - grw=self.grw, - con_lev=self.con_lev, - ) - write_cells = pya.CellInstArray( - instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.insert(write_cells) - self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/layers_def.py b/sky130/cells/klayout/pymacros/cells/layers_def.py deleted file mode 100644 index c5fb15bfc..000000000 --- a/sky130/cells/klayout/pymacros/cells/layers_def.py +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# Skywater 130nm Layers parameters generation -######################################################################################################################## - -from gdsfactory.types import LayerSpec - -diff_layer: LayerSpec = (65, 20) -diff_lbl: LayerSpec = (65, 6) - -tap_layer: LayerSpec = (65, 44) -tap_lbl: LayerSpec = (65, 5) - -nwell_layer: LayerSpec = (64, 20) - -dnwell_layer: LayerSpec = (64, 18) - -hvtp_layer: LayerSpec = (78, 44) # high_vt PMOS - -hvi_layer: LayerSpec = (75, 20) # high voltage layer for voltages higher than 1.8v - -lvtn_layer: LayerSpec = (125, 44) # low_vt NMOS - -poly_layer: LayerSpec = (66, 20) - -hvntm_layer: LayerSpec = (125, 20) # high voltage n-implant - -nsdm_layer: LayerSpec = (93, 44) - -psdm_layer: LayerSpec = (94, 20) - -npc_layer: LayerSpec = (95, 20) - -licon_layer: LayerSpec = (66, 44) - -li_layer: LayerSpec = (67, 20) -li_lbl: LayerSpec = (67, 5) - -mcon_layer: LayerSpec = (67, 44) - -m1_layer: LayerSpec = (68, 20) -m1_lbl: LayerSpec = (68, 5) - -via1_layer: LayerSpec = (68, 44) - -m2_layer: LayerSpec = (69, 20) -m2_lbl: LayerSpec = (69, 5) - -via2_layer: LayerSpec = (69, 44) - -m3_layer: LayerSpec = (70, 20) -m3_lbl: LayerSpec = (70, 5) - -via3_layer: LayerSpec = (70, 44) - -m4_layer: LayerSpec = (71, 20) -m4_lbl: LayerSpec = (71, 5) - -via4_layer: LayerSpec = (71, 44) - -m5_layer: LayerSpec = (72, 20) -m5_lbl: LayerSpec = (72, 5) - -pr_bound_layer: LayerSpec = (235, 4) - -areaid_lvn_layer: LayerSpec = (81, 60) - -areaid_dio_layer: LayerSpec = (81, 23) - -capm_layer: LayerSpec = (89, 44) - -cap2m_layer: LayerSpec = (97, 44) - - -######res -diff_res: LayerSpec = (65, 13) -poly_res: LayerSpec = (66, 13) -rpm_drawing: LayerSpec = (86, 20) -rpm_high_drawing: LayerSpec = (79, 20) -pwell_res: LayerSpec = (64, 13) -li1_res: LayerSpec = (67, 13) -met1_res: LayerSpec = (68, 13) -met2_res: LayerSpec = (69, 13) -met3_res: LayerSpec = (70, 13) -met4_res: LayerSpec = (71, 13) -met5_res: LayerSpec = (72, 13) diff --git a/sky130/cells/klayout/pymacros/cells/parent_res.py b/sky130/cells/klayout/pymacros/cells/parent_res.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/res_diff_child.py b/sky130/cells/klayout/pymacros/cells/res_diff_child.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py deleted file mode 100644 index f60422013..000000000 --- a/sky130/cells/klayout/pymacros/cells/res_diff_klayout_panel.py +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -from .res_diff_child import res_diff_draw -from .res_klayout_panel import res - -# ################constants################ -L_MIN = 2.1 -W_MIN = 0.42 -# ##############sheet resistances -RES_ND_LVT = 772.2 # sheet res for sky130_fd_pr__res_nd_lvt -RES_ND_HVT = 714.28 # sheet res for sky130_fd_pr__res_nd_hvt -RES_PD = 1172.33 # sheet res for sky130_fd_pr__res_pd_lvt,hvt -########################################## - - -class res_diff(res): - """child class for the front end of the diff res (klayout panel) - Args: - res(class): parent class for all types of resistors - l_min(float): minimum length of the resistor - w_min(float): minimum width of the resistor - - """ - - def __init__(self): - super().__init__(L_MIN, W_MIN) # (l_min,w_min) - - # types of resistor you need to add - # it goes in var self.type - - self.Type_handle.add_choice( - "sky130_fd_pr__res_nd_lvt", "sky130_fd_pr__res_nd_lvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_nd_hvt", "sky130_fd_pr__res_nd_hvt" - ) - - self.Type_handle.add_choice( - "sky130_fd_pr__res_pd_lvt", "sky130_fd_pr__res_pd_lvt" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_pd_hvt", "sky130_fd_pr__res_pd_hvt" - ) - - def coerce_parameters_impl(self): - """(override func) check the minimum values of l and w - - decide whether the handle or the numeric parameter has - changed (by comparing against the effective - radius ru) and set ru to the effective radius. We also update the - numerical value or the shape, depending on which on has not changed - - - """ - super().coerce_parameters_impl(L_MIN, W_MIN) # (l_min,w_min) - # res_value = sheet res * area - if self.type == "sky130_fd_pr__res_nd_lvt": - self.res_value = RES_ND_LVT * self.area - elif self.type == "sky130_fd_pr__res_nd_hvt": - self.res_value = RES_ND_HVT * self.area - else: - self.res_value = RES_PD * self.area - - def produce_impl(self): - """(override func)call the implementation backend code - create instance and pass it to the parent func - - instance(layout): the result layout to show - - """ - drw = res_diff_draw(self.type) - instance = drw.your_res( - self.layout, l_res=self.len, w=self.w, type=self.type, gr=self.gr - ) - super().produce_impl(instance) diff --git a/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py deleted file mode 100644 index 61d899a38..000000000 --- a/sky130/cells/klayout/pymacros/cells/res_klayout_panel.py +++ /dev/null @@ -1,126 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -# res Generator for skywater130 - -import pya - - -class res(pya.PCellDeclarationHelper): - """parent class for the front end of the res (klayout panel) - Args: - l_min(float): minimum length of the resistor - w_min(float): minimum width of the resistor - """ - - def __init__(self, l_min, w_min): - # Initialize super class. - super().__init__() - - # ===================== PARAMETERS DECLARATIONS ===================== - - self.Type_handle = self.param("type", self.TypeList, "Device Type") - - self.param("len", self.TypeDouble, "length", default=l_min, unit="um") - self.param("w", self.TypeDouble, "width", default=w_min, unit="um") - - self.param("gr", self.TypeBoolean, "Gaurd Ring", default=1) - self.param("area", self.TypeDouble, "Area", readonly=True, unit="um^2") - self.param( - "res_value", - self.TypeDouble, - "Res Value", - readonly=True, - unit="ohms", - ) - - def display_text_impl(self): - """Provide a descriptive text for the cell - Return: - (str):the res name with len and w - """ - - # Provide a descriptive text for the cell - return ( - "Resistor_" - + str(self.type) - + "(L=" - + ("%.3f" % self.len) - + ",W=" - + ("%.3f" % self.w) - + ")" - ) - - def coerce_parameters_impl(self, l_min, w_min): - """check the minimum values of l and w - - decide whether the handle or the numeric parameter has - changed (by comparing against the effective - radius ru) and set ru to the effective radius. We also update the - numerical value or the shape, depending on which on has not changed - Args: - l_min(float): minimum length of the resistor - w_min(float): minimum width of the resistor - - """ - - self.area = self.w * self.len - - if self.len < l_min: - self.len = l_min - - if self.w < w_min: - self.w = w_min - - def can_create_from_shape_impl(self): - """Implement the Create PCell - - we can use any shape which has a finite bounding box - """ - - return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() - - def parameters_from_shape_impl(self): - """Implement the "Create PCell from shape" protocol: - - we set r and l from the shape's bounding box width and layer - """ - self.r = self.shape.bbox().width() * self.layout.dbu / 2 - self.len = self.layout.get_info(self.layer) - - def transformation_from_shape_impl(self): - """Implement the "Create PCell from shape" protocol: - - we use the center of the shape's bounding box - to determine the transformation - """ - return pya.Trans(self.shape.bbox().center()) - - def produce_impl(self, instance): - """call the implementation backend code - Args: - instance(layout): the result layout to show - - """ - write_cells = pya.CellInstArray( - instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.insert(write_cells) - self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/res_metal_child.py b/sky130/cells/klayout/pymacros/cells/res_metal_child.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py deleted file mode 100644 index 32169d2d4..000000000 --- a/sky130/cells/klayout/pymacros/cells/res_metal_klayout_panel.py +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -from .res_klayout_panel import res -from .res_metal_child import res_metal_draw - -# ################constants################ -L_MIN = 0.17 -W_MIN = 0.17 - -L_MIN_M1 = 0.14 -L_MIN_M2 = 0.14 -L_MIN_M3 = 0.3 -L_MIN_M4 = 0.3 -L_MIN_M5 = 1.6 - -# ##############sheet resistances -RES_GEN = 442.9 # sheet res for sky130_fd_pr__res_generic_l1 - - -RES_M1 = 6.377 # sheet res for sky130_fd_pr__res_generic_m1 -RES_M2 = 6.377 # sheet res for sky130_fd_pr__res_generic_m2 -RES_M3 = 0.522 # sheet res for sky130_fd_pr__res_generic_m3 -RES_M4 = 0.522 # sheet res for sky130_fd_pr__res_generic_m4 -RES_M5 = 0.0113 # sheet res for sky130_fd_pr__res_generic_m5 - -########################################## - - -class res_metal(res): - """child class for the front end of the poly res (klayout panel) - Args: - res(class): parent class for all types of resistors - l_min(float): minimum length of the resistor - w_min(float): minimum width of the resistor - - """ - - def __init__(self): - super().__init__(L_MIN, W_MIN) # (l_min,w_min) - - # types of resistor you need to add - # it goes in var self.type - - self.Type_handle.add_choice( - "sky130_fd_pr__res_generic_l1", "sky130_fd_pr__res_generic_l1" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_generic_m1", "sky130_fd_pr__res_generic_m1" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_generic_m2", "sky130_fd_pr__res_generic_m2" - ) - - self.Type_handle.add_choice( - "sky130_fd_pr__res_generic_m3", "sky130_fd_pr__res_generic_m3" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_generic_m4", "sky130_fd_pr__res_generic_m4" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_generic_m5", "sky130_fd_pr__res_generic_m5" - ) - - def coerce_parameters_impl(self): - """(override func) check the minimum values of l and w - - decide whether the handle or the numeric parameter has - changed (by comparing against the effective - radius ru) and set ru to the effective radius. We also update the - numerical value or the shape, depending on which on has not changed - - - """ - - # res_value = sheet res * area - if self.type == "sky130_fd_pr__res_generic_l1": - super().coerce_parameters_impl(L_MIN, W_MIN) # (l_min,w_min) - self.res_value = RES_GEN * self.area - - elif self.type == "sky130_fd_pr__res_generic_m1": - super().coerce_parameters_impl(L_MIN_M1, L_MIN_M1) - self.res_value = RES_M1 * self.area - elif self.type == "sky130_fd_pr__res_generic_m2": - super().coerce_parameters_impl(L_MIN_M2, L_MIN_M2) - self.res_value = RES_M2 * self.area - elif self.type == "sky130_fd_pr__res_generic_m3": - super().coerce_parameters_impl(L_MIN_M3, L_MIN_M3) - self.res_value = RES_M3 * self.area - elif self.type == "sky130_fd_pr__res_generic_m4": - super().coerce_parameters_impl(L_MIN_M4, L_MIN_M4) - self.res_value = RES_M4 * self.area - elif self.type == "sky130_fd_pr__res_generic_m5": - super().coerce_parameters_impl(L_MIN_M5, L_MIN_M5) - self.res_value = RES_M5 * self.area - - def produce_impl(self): - """(override func)call the implementation backend code - create instance and pass it to the parent func - - instance(layout): the result layout to show - - """ - drw = res_metal_draw(self.type) - instance = drw.your_res(self.layout, l_res=self.len, w=self.w, type=self.type) - super().produce_impl(instance) diff --git a/sky130/cells/klayout/pymacros/cells/res_poly_child.py b/sky130/cells/klayout/pymacros/cells/res_poly_child.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py b/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py deleted file mode 100644 index 696c23345..000000000 --- a/sky130/cells/klayout/pymacros/cells/res_poly_klayout_panel.py +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -from .res_klayout_panel import res -from .res_poly_child import res_poly_draw - -# ################constants################ -L_MIN = 1.65 -W_MIN = 0.33 -L_MIN_ISO = 26.5 -W_MIN_ISO = 2.65 -L_MIN_PO = 0.5 -W_MIN_0P35 = 0.35 -W_MIN_0P69 = 0.69 -W_MIN_1P41 = 1.41 -W_MIN_2P85 = 2.85 -W_MIN_5P73 = 5.73 - -# ##############sheet resistances -RES_GEN = 442.6 # sheet res for sky130_fd_pr__res_generic_po - -RES_ISO = 153.3 # sheet res for sky130_fd_pr__res_iso_pw - -RES_0P35 = 8971.42 # sheet res for sky130_fd_pr__res_high_po_0p35 -RES_0P69 = 2308.5 # sheet res for sky130_fd_pr__res_high_po_0p69 -RES_1P41 = 552.76 # sheet res for sky130_fd_pr__res_high_po_1p41 -RES_2P85 = 135.3 # sheet res for sky130_fd_pr__res_high_po_2p85 -RES_5P73 = 33.47 # sheet res for sky130_fd_pr__res_high_po_5p73 -# XHIGH -RES_XH_0P35 = 22468.57 # sheet res for sky130_fd_pr__res_xhigh_po_0p35 -RES_XH_0P69 = 5779.7 # sheet res for sky130_fd_pr__res_xhigh_po_0p69 -RES_XH_1P41 = 1384.63 # sheet res for sky130_fd_pr__res_xhigh_po_1p41 -RES_XH_2P85 = 338.87 # sheet res for sky130_fd_pr__res_xhigh_po_2p85 -RES_XH_5P73 = 83.8 # sheet res for sky130_fd_pr__res_xhigh_po_5p73 -########################################## - - -class res_poly(res): - """child class for the front end of the poly res (klayout panel) - Args: - res(class): parent class for all types of resistors - l_min(float): minimum length of the resistor - w_min(float): minimum width of the resistor - - """ - - def __init__(self): - super().__init__(L_MIN_PO, W_MIN) # (l_min,w_min) - - # types of resistor you need to add - # it goes in var self.type - - self.Type_handle.add_choice( - "sky130_fd_pr__res_generic_po", "sky130_fd_pr__res_generic_po" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_iso_pw", "sky130_fd_pr__res_iso_pw" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_high_po_0p35", "sky130_fd_pr__res_high_po_0p35" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_high_po_0p69", "sky130_fd_pr__res_high_po_0p69" - ) - - self.Type_handle.add_choice( - "sky130_fd_pr__res_high_po_1p41", "sky130_fd_pr__res_high_po_1p41" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_high_po_2p85", "sky130_fd_pr__res_high_po_2p85" - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_high_po_5p73", "sky130_fd_pr__res_high_po_5p73" - ) - - self.Type_handle.add_choice( - "sky130_fd_pr__res_xhigh_po_0p35", - "sky130_fd_pr__res_xhigh_po_0p35", - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_xhigh_po_0p69", - "sky130_fd_pr__res_xhigh_po_0p69", - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_xhigh_po_1p41", - "sky130_fd_pr__res_xhigh_po_1p41", - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_xhigh_po_2p85", - "sky130_fd_pr__res_xhigh_po_2p85", - ) - self.Type_handle.add_choice( - "sky130_fd_pr__res_xhigh_po_5p73", - "sky130_fd_pr__res_xhigh_po_5p73", - ) - - def coerce_parameters_impl(self): - """(override func) check the minimum values of l and w - - decide whether the handle or the numeric parameter has - changed (by comparing against the effective - radius ru) and set ru to the effective radius. We also update the - numerical value or the shape, depending on which on has not changed - - - """ - - # res_value = sheet res * area - if self.type == "sky130_fd_pr__res_generic_po": - super().coerce_parameters_impl(L_MIN, W_MIN) # (l_min,w_min) - self.res_value = RES_GEN * self.area - - elif self.type == "sky130_fd_pr__res_iso_pw": - super().coerce_parameters_impl(L_MIN_ISO, W_MIN_ISO) - self.res_value = RES_ISO * self.area - - elif self.type == "sky130_fd_pr__res_high_po_0p35": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_0P35) - self.res_value = RES_0P35 * self.area - - elif self.type == "sky130_fd_pr__res_high_po_0p69": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_0P69) - self.res_value = RES_0P69 * self.area - elif self.type == "sky130_fd_pr__res_high_po_1p41": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_1P41) - self.res_value = RES_1P41 * self.area - elif self.type == "sky130_fd_pr__res_high_po_2p85": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_2P85) - self.res_value = RES_2P85 * self.area - - elif self.type == "sky130_fd_pr__res_high_po_5p73": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_5P73) - self.res_value = RES_5P73 * self.area - - elif self.type == "sky130_fd_pr__res_xhigh_po_0p35": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_0P35) - self.res_value = RES_XH_0P35 * self.area - elif self.type == "sky130_fd_pr__res_xhigh_po_0p69": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_0P69) - self.res_value = RES_XH_0P69 * self.area - elif self.type == "sky130_fd_pr__res_xhigh_po_1p41": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_1P41) - self.res_value = RES_XH_1P41 * self.area - elif self.type == "sky130_fd_pr__res_xhigh_po_2p85": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_2P85) - self.res_value = RES_XH_2P85 * self.area - elif self.type == "sky130_fd_pr__res_xhigh_po_5p73": - super().coerce_parameters_impl(L_MIN_PO, W_MIN_5P73) - self.res_value = RES_XH_5P73 * self.area - - def produce_impl(self): - """(override func)call the implementation backend code - create instance and pass it to the parent func - - instance(layout): the result layout to show - - """ - drw = res_poly_draw(self.type) - instance = drw.your_res( - self.layout, l_res=self.len, w=self.w, type=self.type, gr=self.gr - ) - super().produce_impl(instance) diff --git a/sky130/cells/klayout/pymacros/cells/rf.py b/sky130/cells/klayout/pymacros/cells/rf.py deleted file mode 100644 index 0de2ddfe7..000000000 --- a/sky130/cells/klayout/pymacros/cells/rf.py +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# RF DEVICES Generator for skywater130 -######################################################################################################################## - -import pya - -from .draw_rf import draw_rf_bjt, draw_rf_coils, draw_rf_mosfet -from .globals import RF_BJT_DEV, RF_COILS_DEV, RF_MOSFET_DEV - - -class rf_mosfet(pya.PCellDeclarationHelper): - """ - rf mosfet Generator for Skywater130 - """ - - def __init__(self): - # Important: initialize the super class - super().__init__() - self.Type_handle = self.param("Type", self.TypeList, "Type") - - for i in RF_MOSFET_DEV: - self.Type_handle.add_choice(i, i) - - self.param( - "Model", self.TypeString, "Model", default="sky130_fd_pr__", readonly=True - ) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return str(self.Type) - - def produce_impl(self): - # This is the main part of the implementation: create the layout - - self.percision = 1 / self.layout.dbu - rf_mos_instance = draw_rf_mosfet(layout=self.layout, device_name=self.Type) - - write_cells = pya.CellInstArray( - rf_mos_instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.flatten(1) - self.cell.insert(write_cells) - - self.layout.cleanup() - - -class rf_bjt(pya.PCellDeclarationHelper): - """ - rf bjt Generator for Skywater130 - """ - - def __init__(self): - # Important: initialize the super class - super().__init__() - self.Type_handle = self.param("Type", self.TypeList, "Type") - for i in RF_BJT_DEV: - self.Type_handle.add_choice(i, i) - - self.param( - "Model", self.TypeString, "Model", default="sky130_fd_pr__", readonly=True - ) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return str(self.Type) - - def produce_impl(self): - # This is the main part of the implementation: create the layout - - self.percision = 1 / self.layout.dbu - rf_bjt_instance = draw_rf_bjt(layout=self.layout, device_name=self.Type) - - write_cells = pya.CellInstArray( - rf_bjt_instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.flatten(1) - self.cell.insert(write_cells) - - self.layout.cleanup() - - -class rf_coils(pya.PCellDeclarationHelper): - """ - rf coils Generator for Skywater130 - """ - - def __init__(self): - # Important: initialize the super class - super().__init__() - self.Type_handle = self.param("Type", self.TypeList, "Type") - for i in RF_COILS_DEV: - self.Type_handle.add_choice(i, i) - - self.param( - "Model", self.TypeString, "Model", default="sky130_fd_pr__", readonly=True - ) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return str(self.Type) - - def produce_impl(self): - # This is the main part of the implementation: create the layout - - self.percision = 1 / self.layout.dbu - rf_coils_instance = draw_rf_coils(layout=self.layout, device_name=self.Type) - - write_cells = pya.CellInstArray( - rf_coils_instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.flatten(1) - self.cell.insert(write_cells) - - self.layout.cleanup() diff --git a/sky130/cells/klayout/pymacros/cells/via_generator.py b/sky130/cells/klayout/pymacros/cells/via_generator.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/cells/klayout/pymacros/cells/vias.py b/sky130/cells/klayout/pymacros/cells/vias.py deleted file mode 100644 index 7a8af67fe..000000000 --- a/sky130/cells/klayout/pymacros/cells/vias.py +++ /dev/null @@ -1,199 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# Vias Generator for skywater130 -######################################################################################################################## - -import pya - -from .via_generator import vias_gen_draw - -licon_size = (0.17, 0.17) - -licon_spacing = (0.17, 0.17) - -mcon_size = (0.17, 0.17) -mcon_enc = (0.06, 0.03) -mcon_spacing = (0.19, 0.19) - -via1_size = (0.15, 0.15) -via1_enc = (0.085, 0.055) -via1_spacing = (0.17, 0.17) - -via2_size = (0.2, 0.2) -via2_enc = (0.085, 0.065) -via2_spacing = (0.2, 0.2) - -via3_size = (0.2, 0.2) -via3_enc = (0.09, 0.065) -via3_spacing = (0.2, 0.2) - -via4_size = (0.8, 0.8) -via4_enc = (0.31, 0.31) -via4_spacing = (0.8, 0.8) - - -class vias_gen(pya.PCellDeclarationHelper): - """ - Vias Generator for Skywater130 - """ - - def __init__(self): - # Initialize super class. - super().__init__() - - # ===================== PARAMETERS DECLARATIONS ===================== - - self.param("l", self.TypeDouble, "length", default=1, unit="um") - self.param("w", self.TypeDouble, "width", default=1, unit="um") - - self.Type_handle = self.param("start_layer", self.TypeList, "Start Layer") - self.Type_handle.add_choice("poly", "poly") - self.Type_handle.add_choice("p_tap", "p_tap") - self.Type_handle.add_choice("n_tap", "n_tap") - self.Type_handle.add_choice("p_diff", "p_diff") - self.Type_handle.add_choice("n_diff", "n_diff") - self.Type_handle.add_choice("li", "li") - self.Type_handle.add_choice("metal1", "metal1") - self.Type_handle.add_choice("metal2", "metal2") - self.Type_handle.add_choice("metal3", "metal3") - self.Type_handle.add_choice("metal4", "metal4") - - self.Type_handle = self.param("end_layer", self.TypeList, "End Layer") - self.Type_handle.add_choice("li", "li") - self.Type_handle.add_choice("metal1", "metal1") - self.Type_handle.add_choice("metal2", "metal2") - self.Type_handle.add_choice("metal3", "metal3") - self.Type_handle.add_choice("metal4", "metal4") - self.Type_handle.add_choice("metal5", "metal5") - - def display_text_impl(self): - # Provide a descriptive text for the cell - return "via (L=" + ("%.3f" % self.l) + ",W=" + ("%.3f" % self.w) + ")" - - def coerce_parameters_impl(self): - # We employ coerce_parameters_impl to decide whether the handle or the - # numeric parameter has changed (by comparing against the effective - # radius ru) and set ru to the effective radius. We also update the - # numerical value or the shape, depending on which on has not changed. - - base_layers = ["poly", "n_diff", "p_diff", "n_tap", "p_tap"] - metal_layers = ["li", "metal1", "metal2", "metal3", "metal4", "metal5"] - - if self.start_layer in base_layers: - level_1 = -1 - else: - for i in range(len(metal_layers)): - if self.start_layer == metal_layers[i]: - level_1 = i - - if self.end_layer in base_layers: - level_2 = -1 - else: - for i in range(len(metal_layers)): - if self.end_layer == metal_layers[i]: - level_2 = i - - # if level_1 < level_2 : - # temp_layer = self.start_layer - # self.start_layer = self.end_layer - # self.end_layer = temp_layer - - if level_1 <= -1 and level_2 > -1: - if self.start_layer == "poly": - licon_enc = (0.08, 0.05) - elif "diff" in self.start_layer: - licon_enc = (0.12, 0.06) # (0.06,0.04) - elif "tap" in self.start_layer: - licon_enc = (0.12, 0.06) - else: - licon_enc = (0.12, 0.12) - - if self.l < (licon_size[0] + 2 * licon_enc[0]): - self.l = licon_size[0] + 2 * licon_enc[0] - - if self.w < (licon_size[1] + 2 * licon_enc[1]): - self.w = licon_size[1] + 2 * licon_enc[1] - - if level_1 <= 0 and level_2 > 0: - if self.l < (mcon_size[0] + 2 * mcon_enc[0]): - self.l = mcon_size[0] + 2 * mcon_enc[0] - - if self.w < (mcon_size[1] + 2 * mcon_enc[1]): - self.w = mcon_size[1] + 2 * mcon_enc[1] - - if level_1 <= 1 and level_2 > 1: - if self.l < (via1_size[0] + 2 * via1_enc[0]): - self.l = via1_size[0] + 2 * via1_enc[0] - - if self.w < (via1_size[1] + 2 * via1_enc[1]): - self.w = via1_size[1] + 2 * via1_enc[1] - - if level_1 <= 2 and level_2 > 2: - if self.l < (via2_size[0] + 2 * via2_enc[0]): - self.l = via2_size[0] + 2 * via2_enc[0] - - if self.w < (via2_size[1] + 2 * via2_enc[1]): - self.w = via2_size[1] + 2 * via2_enc[1] - - if level_1 <= 3 and level_2 > 3: - if self.l < (via3_size[0] + 2 * via3_enc[0]): - self.l = via3_size[0] + 2 * via3_enc[0] - - if self.w < (via3_size[1] + 2 * via3_enc[1]): - self.w = via3_size[1] + 2 * via3_enc[1] - - if level_1 <= 4 and level_2 > 4: - if self.l < (via4_size[0] + 2 * via4_enc[0]): - self.l = via4_size[0] + 2 * via4_enc[0] - - if self.w < (via4_size[1] + 2 * via4_enc[1]): - self.w = via4_size[1] + 2 * via4_enc[1] - - def can_create_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we can use any shape which - # has a finite bounding box - return self.shape.is_box() or self.shape.is_polygon() or self.shape.is_path() - - def parameters_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we set r and l from the shape's - # bounding box width and layer - self.r = self.shape.bbox().width() * self.layout.dbu / 2 - self.l = self.layout.get_info(self.layer) - - def transformation_from_shape_impl(self): - # Implement the "Create PCell from shape" protocol: we use the center of the shape's - # bounding box to determine the transformation - return pya.Trans(self.shape.bbox().center()) - - def produce_impl(self): - instance = vias_gen_draw( - layout=self.layout, - l_vias=self.l, - w=self.w, - start_layer=self.start_layer, - end_layer=self.end_layer, - ) - write_cells = pya.CellInstArray( - instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.insert(write_cells) - self.cell.flatten(1) diff --git a/sky130/cells/klayout/pymacros/cells/vpp.py b/sky130/cells/klayout/pymacros/cells/vpp.py deleted file mode 100644 index 7724e25bf..000000000 --- a/sky130/cells/klayout/pymacros/cells/vpp.py +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 2022 Skywater 130nm pdk development -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -######################################################################################################################## -# VPP CAP Generator for skywater130 -######################################################################################################################## - - -import pya - -from .draw_vpp import draw_vpp -from .globals import VPP_CAP_DEV - - -class cap_vpp(pya.PCellDeclarationHelper): - """ - VPP Cap Generator for Skywater130 - """ - - def __init__(self): - # Important: initialize the super class - super().__init__() - self.Type_handle = self.param("Type", self.TypeList, "Type") - - for i in range(len(VPP_CAP_DEV)): - self.Type_handle.add_choice(VPP_CAP_DEV[i], VPP_CAP_DEV[i]) - - self.param( - "Model", - self.TypeString, - "Model", - default="sky130_fd_pr__cap_vpp", - readonly=True, - ) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return str(self.Type) - - def produce_impl(self): - # This is the main part of the implementation: create the layout - - self.percision = 1 / self.layout.dbu - vpp_instance = draw_vpp(layout=self.layout, device_name=self.Type) - write_cells = pya.CellInstArray( - vpp_instance.cell_index(), - pya.Trans(pya.Point(0, 0)), - pya.Vector(0, 0), - pya.Vector(0, 0), - 1, - 1, - ) - self.cell.flatten(1) - self.cell.insert(write_cells) - self.layout.cleanup() diff --git a/sky130/cells/klayout/pymacros/sky130.lym b/sky130/cells/klayout/pymacros/sky130.lym deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/compile_components.py b/sky130/compile_components.py index 9928e350b..95bd36ab0 100644 --- a/sky130/compile_components.py +++ b/sky130/compile_components.py @@ -3,23 +3,32 @@ # Define the PDK directories pdk_directories = ["src/sky130_fd_pr", "src/sky130_fd_sc_hd"] + # List to store gds file paths -gds_files = [] -# Walk through the PDK directories and collect GDS files -for pdk_dir in pdk_directories: - for subdir, _, files in os.walk(pdk_dir): - for file in files: - if file.endswith(".gds"): - gds_files.append(os.path.join(subdir, file)) +def compile_components(pdk_directories=pdk_directories): + gds_files = [] + + # Walk through the PDK directories and collect GDS files + for pdk_dir in pdk_directories: + for subdir, _, files in os.walk(pdk_dir): + for file in files: + if file.endswith(".gds"): + gds_files.append(os.path.join(subdir, file)) + + # Function to create Python code for each gds file + def create_code(file_path): + file_name = os.path.basename(file_path) + raw_cell_name = os.path.splitext(file_name)[0] -# Function to create Python code for each gds file -def create_code(file_path): - file_name = os.path.basename(file_path) - cell_name = os.path.splitext(file_name)[0] + for pdk_dir in pdk_directories: + prefix = pdk_dir.split("/")[-1] + "__" + if raw_cell_name.startswith(prefix): + cell_name = raw_cell_name[len(prefix) :] + break - code = f""" + code = f""" @cell def {cell_name}() -> gf.Component: \"\"\"Returns {cell_name} fixed cell. @@ -32,14 +41,12 @@ def {cell_name}() -> gf.Component: c = sky130.components.{cell_name}() c.plot() \"\"\" - return import_gds("{file_path}", cellname="{cell_name}") + return import_gds("{file_path}", cellname="{raw_cell_name}") """ - return code - - -# Prelude to add at the top of the file -prelude = """from functools import partial + return code + # Prelude to add at the top of the file + prelude = """from functools import partial import gdsfactory as gf from gdsfactory.cell import cell @@ -83,18 +90,21 @@ def {cell_name}() -> gf.Component: import_gds = partial(gf.import_gds, gdsdir=gdsdir, decorator=add_ports) """ -# Write the code to a Python file -with open("components.py", "w") as f: - f.write(prelude) - for gds_file in gds_files: - gdsdir = os.path.dirname(gds_file) - code = create_code(gds_file) - f.write(code) + # TODO delete old file automatically + # Write the code to a Python file + with open("components.py", "w") as f: + f.write(prelude) + for gds_file in gds_files: + print(gds_file) + # gds_file = os.path.dirname(str(pathlib.Path(gds_file))) + code = create_code(gds_file) + f.write(code) -print("Python file 'components.py' has been created.") + print("Python file 'components.py' has been created.") -# if __name__ == "__main__": +if __name__ == "__main__": + compile_components() # # gf.write_cells.write_cells(gdspath=PATH.gdshd, dirpath="gds") # # gf.write_cells.write_cells(gdspath=PATH.gdshs, dirpath="gds") # # gf.write_cells.write_cells(gdspath=PATH.gdshvl, dirpath="gds") diff --git a/sky130/components.py b/sky130/components.py index 1bd4a29b2..e9e8b08ba 100644 --- a/sky130/components.py +++ b/sky130/components.py @@ -44,15 +44,15 @@ @cell -def sky130_fd_pr__rf_nfet_20v0_withptap_iso() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_20v0_withptap_iso fixed cell. +def rf_nfet_20v0_withptap_iso() -> gf.Component: + """Returns rf_nfet_20v0_withptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_20v0_withptap_iso() + c = sky130.components.rf_nfet_20v0_withptap_iso() c.plot() """ return import_gds( @@ -62,15 +62,15 @@ def sky130_fd_pr__rf_nfet_20v0_withptap_iso() -> gf.Component: @cell -def sky130_fd_pr__rf_aura_lvs_drc() -> gf.Component: - """Returns sky130_fd_pr__rf_aura_lvs_drc fixed cell. +def rf_aura_lvs_drc() -> gf.Component: + """Returns rf_aura_lvs_drc fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_aura_lvs_drc() + c = sky130.components.rf_aura_lvs_drc() c.plot() """ return import_gds( @@ -80,15 +80,15 @@ def sky130_fd_pr__rf_aura_lvs_drc() -> gf.Component: @cell -def sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() -> gf.Component: - """Returns sky130_fd_pr__rf_pnp_05v5_W0p68L0p68 fixed cell. +def rf_pnp_05v5_W0p68L0p68() -> gf.Component: + """Returns rf_pnp_05v5_W0p68L0p68 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() + c = sky130.components.rf_pnp_05v5_W0p68L0p68() c.plot() """ return import_gds( @@ -98,15 +98,15 @@ def sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() -> gf.Component: @cell -def sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() -> gf.Component: - """Returns sky130_fd_pr__rf_pnp_05v5_W3p40L3p40 fixed cell. +def rf_pnp_05v5_W3p40L3p40() -> gf.Component: + """Returns rf_pnp_05v5_W3p40L3p40 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() + c = sky130.components.rf_pnp_05v5_W3p40L3p40() c.plot() """ return import_gds( @@ -116,15 +116,15 @@ def sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18 fixed cell. +def rf_nfet_01v8_aM02W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_aM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() + c = sky130.components.rf_nfet_01v8_aM02W3p00L0p18() c.plot() """ return import_gds( @@ -134,15 +134,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25 fixed cell. +def rf_nfet_01v8_bM04W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_bM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() + c = sky130.components.rf_nfet_01v8_bM04W1p65L0p25() c.plot() """ return import_gds( @@ -152,15 +152,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15 fixed cell. +def rf_nfet_01v8_bM04W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_bM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() + c = sky130.components.rf_nfet_01v8_bM04W3p00L0p15() c.plot() """ return import_gds( @@ -170,15 +170,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18 fixed cell. +def rf_nfet_01v8_aM04W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_aM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() + c = sky130.components.rf_nfet_01v8_aM04W1p65L0p18() c.plot() """ return import_gds( @@ -188,15 +188,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18 fixed cell. +def rf_nfet_01v8_aM04W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_aM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() + c = sky130.components.rf_nfet_01v8_aM04W3p00L0p18() c.plot() """ return import_gds( @@ -206,15 +206,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18 fixed cell. +def rf_nfet_01v8_bM04W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_bM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() + c = sky130.components.rf_nfet_01v8_bM04W5p00L0p18() c.plot() """ return import_gds( @@ -224,15 +224,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15 fixed cell. +def rf_nfet_01v8_bM02W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_bM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() + c = sky130.components.rf_nfet_01v8_bM02W3p00L0p15() c.plot() """ return import_gds( @@ -242,15 +242,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25 fixed cell. +def rf_nfet_01v8_aM02W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_aM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() + c = sky130.components.rf_nfet_01v8_aM02W3p00L0p25() c.plot() """ return import_gds( @@ -260,15 +260,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15 fixed cell. +def rf_nfet_01v8_aM04W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_aM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() + c = sky130.components.rf_nfet_01v8_aM04W3p00L0p15() c.plot() """ return import_gds( @@ -278,15 +278,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15 fixed cell. +def rf_nfet_01v8_aM02W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_aM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() + c = sky130.components.rf_nfet_01v8_aM02W5p00L0p15() c.plot() """ return import_gds( @@ -296,15 +296,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15 fixed cell. +def rf_nfet_01v8_aM04W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_aM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() + c = sky130.components.rf_nfet_01v8_aM04W1p65L0p15() c.plot() """ return import_gds( @@ -314,15 +314,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15 fixed cell. +def rf_nfet_01v8_mcM04W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_mcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() + c = sky130.components.rf_nfet_01v8_mcM04W3p00L0p15() c.plot() """ return import_gds( @@ -332,15 +332,15 @@ def sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25 fixed cell. +def rf_nfet_01v8_aM02W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_aM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() + c = sky130.components.rf_nfet_01v8_aM02W5p00L0p25() c.plot() """ return import_gds( @@ -350,15 +350,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18 fixed cell. +def rf_nfet_01v8_aM02W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_aM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() + c = sky130.components.rf_nfet_01v8_aM02W5p00L0p18() c.plot() """ return import_gds( @@ -368,15 +368,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18 fixed cell. +def rf_nfet_01v8_bM04W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_bM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() + c = sky130.components.rf_nfet_01v8_bM04W3p00L0p18() c.plot() """ return import_gds( @@ -386,15 +386,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18 fixed cell. +def rf_nfet_01v8_bM04W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_bM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() + c = sky130.components.rf_nfet_01v8_bM04W1p65L0p18() c.plot() """ return import_gds( @@ -404,15 +404,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25 fixed cell. +def rf_nfet_01v8_bM02W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_bM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() + c = sky130.components.rf_nfet_01v8_bM02W5p00L0p25() c.plot() """ return import_gds( @@ -422,15 +422,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15 fixed cell. +def rf_nfet_01v8_mcM04W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_mcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() + c = sky130.components.rf_nfet_01v8_mcM04W5p00L0p15() c.plot() """ return import_gds( @@ -440,15 +440,15 @@ def sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25 fixed cell. +def rf_nfet_01v8_bM04W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_bM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() + c = sky130.components.rf_nfet_01v8_bM04W3p00L0p25() c.plot() """ return import_gds( @@ -458,15 +458,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18 fixed cell. +def rf_nfet_01v8_aM02W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_aM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() + c = sky130.components.rf_nfet_01v8_aM02W1p65L0p18() c.plot() """ return import_gds( @@ -476,15 +476,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15 fixed cell. +def rf_nfet_01v8_hcM04W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_hcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() + c = sky130.components.rf_nfet_01v8_hcM04W3p00L0p15() c.plot() """ return import_gds( @@ -494,15 +494,15 @@ def sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15 fixed cell. +def rf_nfet_01v8_aM04W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_aM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() + c = sky130.components.rf_nfet_01v8_aM04W5p00L0p15() c.plot() """ return import_gds( @@ -512,15 +512,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15 fixed cell. +def rf_nfet_01v8_aM02W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_aM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() + c = sky130.components.rf_nfet_01v8_aM02W1p65L0p15() c.plot() """ return import_gds( @@ -530,15 +530,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25 fixed cell. +def rf_nfet_01v8_aM02W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_aM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() + c = sky130.components.rf_nfet_01v8_aM02W1p65L0p25() c.plot() """ return import_gds( @@ -548,15 +548,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15 fixed cell. +def rf_nfet_01v8_aM02W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_aM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() + c = sky130.components.rf_nfet_01v8_aM02W3p00L0p15() c.plot() """ return import_gds( @@ -566,15 +566,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15 fixed cell. +def rf_nfet_01v8_bM02W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_bM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() + c = sky130.components.rf_nfet_01v8_bM02W5p00L0p15() c.plot() """ return import_gds( @@ -584,15 +584,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25 fixed cell. +def rf_nfet_01v8_aM04W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_aM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() + c = sky130.components.rf_nfet_01v8_aM04W5p00L0p25() c.plot() """ return import_gds( @@ -602,15 +602,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25 fixed cell. +def rf_nfet_01v8_aM04W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_aM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() + c = sky130.components.rf_nfet_01v8_aM04W3p00L0p25() c.plot() """ return import_gds( @@ -620,15 +620,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25 fixed cell. +def rf_nfet_01v8_aM04W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_aM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() + c = sky130.components.rf_nfet_01v8_aM04W1p65L0p25() c.plot() """ return import_gds( @@ -638,15 +638,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25 fixed cell. +def rf_nfet_01v8_bM04W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_bM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() + c = sky130.components.rf_nfet_01v8_bM04W5p00L0p25() c.plot() """ return import_gds( @@ -656,15 +656,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18 fixed cell. +def rf_nfet_01v8_bM02W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_bM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() + c = sky130.components.rf_nfet_01v8_bM02W5p00L0p18() c.plot() """ return import_gds( @@ -674,15 +674,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15 fixed cell. +def rf_nfet_01v8_bM04W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_bM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() + c = sky130.components.rf_nfet_01v8_bM04W5p00L0p15() c.plot() """ return import_gds( @@ -692,15 +692,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15 fixed cell. +def rf_nfet_01v8_hcM04W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_hcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() + c = sky130.components.rf_nfet_01v8_hcM04W5p00L0p15() c.plot() """ return import_gds( @@ -710,15 +710,15 @@ def sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15 fixed cell. +def rf_nfet_01v8_bM04W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_bM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() + c = sky130.components.rf_nfet_01v8_bM04W1p65L0p15() c.plot() """ return import_gds( @@ -728,15 +728,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18 fixed cell. +def rf_nfet_01v8_bM02W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_bM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() + c = sky130.components.rf_nfet_01v8_bM02W3p00L0p18() c.plot() """ return import_gds( @@ -746,15 +746,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18 fixed cell. +def rf_nfet_01v8_aM04W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_aM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() + c = sky130.components.rf_nfet_01v8_aM04W5p00L0p18() c.plot() """ return import_gds( @@ -764,15 +764,15 @@ def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25 fixed cell. +def rf_nfet_01v8_bM02W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_bM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() + c = sky130.components.rf_nfet_01v8_bM02W3p00L0p25() c.plot() """ return import_gds( @@ -782,15 +782,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18 fixed cell. +def rf_nfet_01v8_bM02W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_bM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() + c = sky130.components.rf_nfet_01v8_bM02W1p65L0p18() c.plot() """ return import_gds( @@ -800,15 +800,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25 fixed cell. +def rf_nfet_01v8_bM02W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_bM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() + c = sky130.components.rf_nfet_01v8_bM02W1p65L0p25() c.plot() """ return import_gds( @@ -818,15 +818,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15 fixed cell. +def rf_nfet_01v8_bM02W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_bM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() + c = sky130.components.rf_nfet_01v8_bM02W1p65L0p15() c.plot() """ return import_gds( @@ -836,15 +836,15 @@ def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() c.plot() """ return import_gds( @@ -854,15 +854,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() c.plot() """ return import_gds( @@ -872,15 +872,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() -> gf.Component: @cell -def sky130_fd_pr__rf_test_coil1() -> gf.Component: - """Returns sky130_fd_pr__rf_test_coil1 fixed cell. +def rf_test_coil1() -> gf.Component: + """Returns rf_test_coil1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_test_coil1() + c = sky130.components.rf_test_coil1() c.plot() """ return import_gds( @@ -890,15 +890,15 @@ def sky130_fd_pr__rf_test_coil1() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 fixed cell. +def cap_vpp_04p4x04p6_m1m2m3_shieldl1() -> gf.Component: + """Returns cap_vpp_04p4x04p6_m1m2m3_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() + c = sky130.components.cap_vpp_04p4x04p6_m1m2m3_shieldl1() c.plot() """ return import_gds( @@ -908,15 +908,15 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell fixed cell. +def cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() -> gf.Component: + """Returns cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() + c = sky130.components.cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() c.plot() """ return import_gds( @@ -926,15 +926,15 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield fixed cell. +def cap_vpp_04p4x04p6_l1m1m2_noshield() -> gf.Component: + """Returns cap_vpp_04p4x04p6_l1m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() + c = sky130.components.cap_vpp_04p4x04p6_l1m1m2_noshield() c.plot() """ return import_gds( @@ -944,15 +944,15 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_20v0_aup() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_20v0_aup fixed cell. +def rf_nfet_20v0_aup() -> gf.Component: + """Returns rf_nfet_20v0_aup fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_20v0_aup() + c = sky130.components.rf_nfet_20v0_aup() c.plot() """ return import_gds( @@ -962,15 +962,15 @@ def sky130_fd_pr__rf_nfet_20v0_aup() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso fixed cell. +def rf_nfet_20v0_nvt_noptap_iso() -> gf.Component: + """Returns rf_nfet_20v0_nvt_noptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() + c = sky130.components.rf_nfet_20v0_nvt_noptap_iso() c.plot() """ return import_gds( @@ -980,15 +980,15 @@ def sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -998,15 +998,15 @@ def sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35 fixed cell. +def rf_pfet_01v8_lvt_aM02W3p00L0p35() -> gf.Component: + """Returns rf_pfet_01v8_lvt_aM02W3p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() + c = sky130.components.rf_pfet_01v8_lvt_aM02W3p00L0p35() c.plot() """ return import_gds( @@ -1016,15 +1016,15 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50 fixed cell. +def rf_pfet_01v8_lvt_aM04W5p00L0p50() -> gf.Component: + """Returns rf_pfet_01v8_lvt_aM04W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() + c = sky130.components.rf_pfet_01v8_lvt_aM04W5p00L0p50() c.plot() """ return import_gds( @@ -1034,15 +1034,15 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50 fixed cell. +def rf_pfet_01v8_lvt_aM02W3p00L0p50() -> gf.Component: + """Returns rf_pfet_01v8_lvt_aM02W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() + c = sky130.components.rf_pfet_01v8_lvt_aM02W3p00L0p50() c.plot() """ return import_gds( @@ -1052,15 +1052,15 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50 fixed cell. +def rf_pfet_01v8_lvt_aM04W3p00L0p50() -> gf.Component: + """Returns rf_pfet_01v8_lvt_aM04W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() + c = sky130.components.rf_pfet_01v8_lvt_aM04W3p00L0p50() c.plot() """ return import_gds( @@ -1070,15 +1070,15 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50 fixed cell. +def rf_pfet_01v8_lvt_aM02W5p00L0p50() -> gf.Component: + """Returns rf_pfet_01v8_lvt_aM02W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() + c = sky130.components.rf_pfet_01v8_lvt_aM02W5p00L0p50() c.plot() """ return import_gds( @@ -1088,15 +1088,15 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35 fixed cell. +def rf_pfet_01v8_lvt_aM04W3p00L0p35() -> gf.Component: + """Returns rf_pfet_01v8_lvt_aM04W3p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() + c = sky130.components.rf_pfet_01v8_lvt_aM04W3p00L0p35() c.plot() """ return import_gds( @@ -1106,15 +1106,15 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35 fixed cell. +def rf_pfet_01v8_lvt_aM04W5p00L0p35() -> gf.Component: + """Returns rf_pfet_01v8_lvt_aM04W5p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() + c = sky130.components.rf_pfet_01v8_lvt_aM04W5p00L0p35() c.plot() """ return import_gds( @@ -1124,15 +1124,15 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35 fixed cell. +def rf_pfet_01v8_lvt_aM02W5p00L0p35() -> gf.Component: + """Returns rf_pfet_01v8_lvt_aM02W5p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() + c = sky130.components.rf_pfet_01v8_lvt_aM02W5p00L0p35() c.plot() """ return import_gds( @@ -1142,15 +1142,15 @@ def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -1160,15 +1160,15 @@ def sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15 fixed cell. +def rf_pfet_01v8_bM02W1p65L0p15() -> gf.Component: + """Returns rf_pfet_01v8_bM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() + c = sky130.components.rf_pfet_01v8_bM02W1p65L0p15() c.plot() """ return import_gds( @@ -1178,15 +1178,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25 fixed cell. +def rf_pfet_01v8_bM04W3p00L0p25() -> gf.Component: + """Returns rf_pfet_01v8_bM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() + c = sky130.components.rf_pfet_01v8_bM04W3p00L0p25() c.plot() """ return import_gds( @@ -1196,15 +1196,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18 fixed cell. +def rf_pfet_01v8_bM02W3p00L0p18() -> gf.Component: + """Returns rf_pfet_01v8_bM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() + c = sky130.components.rf_pfet_01v8_bM02W3p00L0p18() c.plot() """ return import_gds( @@ -1214,15 +1214,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18 fixed cell. +def rf_pfet_01v8_aM02W5p00L0p18() -> gf.Component: + """Returns rf_pfet_01v8_aM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() + c = sky130.components.rf_pfet_01v8_aM02W5p00L0p18() c.plot() """ return import_gds( @@ -1232,15 +1232,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15 fixed cell. +def rf_pfet_01v8_mcM04W5p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_mcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() + c = sky130.components.rf_pfet_01v8_mcM04W5p00L0p15() c.plot() """ return import_gds( @@ -1250,15 +1250,15 @@ def sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15 fixed cell. +def rf_pfet_01v8_bM04W5p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_bM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() + c = sky130.components.rf_pfet_01v8_bM04W5p00L0p15() c.plot() """ return import_gds( @@ -1268,15 +1268,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25 fixed cell. +def rf_pfet_01v8_aM04W3p00L0p25() -> gf.Component: + """Returns rf_pfet_01v8_aM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() + c = sky130.components.rf_pfet_01v8_aM04W3p00L0p25() c.plot() """ return import_gds( @@ -1286,15 +1286,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18 fixed cell. +def rf_pfet_01v8_aM04W3p00L0p18() -> gf.Component: + """Returns rf_pfet_01v8_aM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() + c = sky130.components.rf_pfet_01v8_aM04W3p00L0p18() c.plot() """ return import_gds( @@ -1304,15 +1304,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15 fixed cell. +def rf_pfet_01v8_mcM04W3p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_mcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() + c = sky130.components.rf_pfet_01v8_mcM04W3p00L0p15() c.plot() """ return import_gds( @@ -1322,15 +1322,15 @@ def sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15 fixed cell. +def rf_pfet_01v8_aF02W5p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() + c = sky130.components.rf_pfet_01v8_aF02W5p00L0p15() c.plot() """ return import_gds( @@ -1340,15 +1340,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18 fixed cell. +def rf_pfet_01v8_bM04W3p00L0p18() -> gf.Component: + """Returns rf_pfet_01v8_bM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() + c = sky130.components.rf_pfet_01v8_bM04W3p00L0p18() c.plot() """ return import_gds( @@ -1358,15 +1358,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15 fixed cell. +def rf_pfet_01v8_hcM04W3p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_hcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() + c = sky130.components.rf_pfet_01v8_hcM04W3p00L0p15() c.plot() """ return import_gds( @@ -1376,15 +1376,15 @@ def sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15 fixed cell. +def rf_pfet_01v8_aF02W3p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() + c = sky130.components.rf_pfet_01v8_aF02W3p00L0p15() c.plot() """ return import_gds( @@ -1394,15 +1394,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25 fixed cell. +def rf_pfet_01v8_aM02W3p00L0p25() -> gf.Component: + """Returns rf_pfet_01v8_aM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() + c = sky130.components.rf_pfet_01v8_aM02W3p00L0p25() c.plot() """ return import_gds( @@ -1412,15 +1412,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25 fixed cell. +def rf_pfet_01v8_aM04W1p65L0p25() -> gf.Component: + """Returns rf_pfet_01v8_aM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() + c = sky130.components.rf_pfet_01v8_aM04W1p65L0p25() c.plot() """ return import_gds( @@ -1430,15 +1430,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15 fixed cell. +def rf_pfet_01v8_aF08W0p84L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF08W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() + c = sky130.components.rf_pfet_01v8_aF08W0p84L0p15() c.plot() """ return import_gds( @@ -1448,15 +1448,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25 fixed cell. +def rf_pfet_01v8_aM02W1p65L0p25() -> gf.Component: + """Returns rf_pfet_01v8_aM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() + c = sky130.components.rf_pfet_01v8_aM02W1p65L0p25() c.plot() """ return import_gds( @@ -1466,15 +1466,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18 fixed cell. +def rf_pfet_01v8_bM02W1p65L0p18() -> gf.Component: + """Returns rf_pfet_01v8_bM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() + c = sky130.components.rf_pfet_01v8_bM02W1p65L0p18() c.plot() """ return import_gds( @@ -1484,15 +1484,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18 fixed cell. +def rf_pfet_01v8_bM04W1p65L0p18() -> gf.Component: + """Returns rf_pfet_01v8_bM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() + c = sky130.components.rf_pfet_01v8_bM04W1p65L0p18() c.plot() """ return import_gds( @@ -1502,15 +1502,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25 fixed cell. +def rf_pfet_01v8_bM02W1p65L0p25() -> gf.Component: + """Returns rf_pfet_01v8_bM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() + c = sky130.components.rf_pfet_01v8_bM02W1p65L0p25() c.plot() """ return import_gds( @@ -1520,15 +1520,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25 fixed cell. +def rf_pfet_01v8_bM04W5p00L0p25() -> gf.Component: + """Returns rf_pfet_01v8_bM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() + c = sky130.components.rf_pfet_01v8_bM04W5p00L0p25() c.plot() """ return import_gds( @@ -1538,15 +1538,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15 fixed cell. +def rf_pfet_01v8_aF04W3p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() + c = sky130.components.rf_pfet_01v8_aF04W3p00L0p15() c.plot() """ return import_gds( @@ -1556,15 +1556,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15 fixed cell. +def rf_pfet_01v8_aF04W2p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF04W2p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() + c = sky130.components.rf_pfet_01v8_aF04W2p00L0p15() c.plot() """ return import_gds( @@ -1574,15 +1574,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15 fixed cell. +def rf_pfet_01v8_aM04W1p65L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() + c = sky130.components.rf_pfet_01v8_aM04W1p65L0p15() c.plot() """ return import_gds( @@ -1592,15 +1592,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18 fixed cell. +def rf_pfet_01v8_bM04W5p00L0p18() -> gf.Component: + """Returns rf_pfet_01v8_bM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() + c = sky130.components.rf_pfet_01v8_bM04W5p00L0p18() c.plot() """ return import_gds( @@ -1610,15 +1610,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15 fixed cell. +def rf_pfet_01v8_aM02W1p65L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() + c = sky130.components.rf_pfet_01v8_aM02W1p65L0p15() c.plot() """ return import_gds( @@ -1628,15 +1628,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15 fixed cell. +def rf_pfet_01v8_aF06W1p68L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF06W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() + c = sky130.components.rf_pfet_01v8_aF06W1p68L0p15() c.plot() """ return import_gds( @@ -1646,15 +1646,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15 fixed cell. +def rf_pfet_01v8_aF04W1p68L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF04W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() + c = sky130.components.rf_pfet_01v8_aF04W1p68L0p15() c.plot() """ return import_gds( @@ -1664,15 +1664,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18 fixed cell. +def rf_pfet_01v8_aM04W1p65L0p18() -> gf.Component: + """Returns rf_pfet_01v8_aM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() + c = sky130.components.rf_pfet_01v8_aM04W1p65L0p18() c.plot() """ return import_gds( @@ -1682,15 +1682,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15 fixed cell. +def rf_pfet_01v8_aF04W0p84L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF04W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() + c = sky130.components.rf_pfet_01v8_aF04W0p84L0p15() c.plot() """ return import_gds( @@ -1700,15 +1700,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15 fixed cell. +def rf_pfet_01v8_bM04W3p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_bM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() + c = sky130.components.rf_pfet_01v8_bM04W3p00L0p15() c.plot() """ return import_gds( @@ -1718,15 +1718,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15 fixed cell. +def rf_pfet_01v8_aF06W0p84L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF06W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() + c = sky130.components.rf_pfet_01v8_aF06W0p84L0p15() c.plot() """ return import_gds( @@ -1736,15 +1736,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25 fixed cell. +def rf_pfet_01v8_aM04W5p00L0p25() -> gf.Component: + """Returns rf_pfet_01v8_aM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() + c = sky130.components.rf_pfet_01v8_aM04W5p00L0p25() c.plot() """ return import_gds( @@ -1754,15 +1754,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15 fixed cell. +def rf_pfet_01v8_aF06W3p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF06W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() + c = sky130.components.rf_pfet_01v8_aF06W3p00L0p15() c.plot() """ return import_gds( @@ -1772,15 +1772,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25 fixed cell. +def rf_pfet_01v8_bM02W3p00L0p25() -> gf.Component: + """Returns rf_pfet_01v8_bM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() + c = sky130.components.rf_pfet_01v8_bM02W3p00L0p25() c.plot() """ return import_gds( @@ -1790,15 +1790,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15 fixed cell. +def rf_pfet_01v8_aF02W0p84L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF02W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() + c = sky130.components.rf_pfet_01v8_aF02W0p84L0p15() c.plot() """ return import_gds( @@ -1808,15 +1808,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15 fixed cell. +def rf_pfet_01v8_bM02W5p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_bM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() + c = sky130.components.rf_pfet_01v8_bM02W5p00L0p15() c.plot() """ return import_gds( @@ -1826,15 +1826,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15 fixed cell. +def rf_pfet_01v8_aF02W1p68L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF02W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() + c = sky130.components.rf_pfet_01v8_aF02W1p68L0p15() c.plot() """ return import_gds( @@ -1844,15 +1844,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15 fixed cell. +def rf_pfet_01v8_aM02W3p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() + c = sky130.components.rf_pfet_01v8_aM02W3p00L0p15() c.plot() """ return import_gds( @@ -1862,15 +1862,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18 fixed cell. +def rf_pfet_01v8_aM02W3p00L0p18() -> gf.Component: + """Returns rf_pfet_01v8_aM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() + c = sky130.components.rf_pfet_01v8_aM02W3p00L0p18() c.plot() """ return import_gds( @@ -1880,15 +1880,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15 fixed cell. +def rf_pfet_01v8_aF06W2p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF06W2p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() + c = sky130.components.rf_pfet_01v8_aF06W2p00L0p15() c.plot() """ return import_gds( @@ -1898,15 +1898,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25 fixed cell. +def rf_pfet_01v8_bM04W1p65L0p25() -> gf.Component: + """Returns rf_pfet_01v8_bM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() + c = sky130.components.rf_pfet_01v8_bM04W1p65L0p25() c.plot() """ return import_gds( @@ -1916,15 +1916,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15 fixed cell. +def rf_pfet_01v8_aF02W2p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF02W2p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() + c = sky130.components.rf_pfet_01v8_aF02W2p00L0p15() c.plot() """ return import_gds( @@ -1934,15 +1934,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15 fixed cell. +def rf_pfet_01v8_aM04W3p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() + c = sky130.components.rf_pfet_01v8_aM04W3p00L0p15() c.plot() """ return import_gds( @@ -1952,15 +1952,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15 fixed cell. +def rf_pfet_01v8_aM04W5p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() + c = sky130.components.rf_pfet_01v8_aM04W5p00L0p15() c.plot() """ return import_gds( @@ -1970,15 +1970,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15 fixed cell. +def rf_pfet_01v8_hcM04W5p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_hcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() + c = sky130.components.rf_pfet_01v8_hcM04W5p00L0p15() c.plot() """ return import_gds( @@ -1988,15 +1988,15 @@ def sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15 fixed cell. +def rf_pfet_01v8_bM04W1p65L0p15() -> gf.Component: + """Returns rf_pfet_01v8_bM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() + c = sky130.components.rf_pfet_01v8_bM04W1p65L0p15() c.plot() """ return import_gds( @@ -2006,15 +2006,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25 fixed cell. +def rf_pfet_01v8_aM02W5p00L0p25() -> gf.Component: + """Returns rf_pfet_01v8_aM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() + c = sky130.components.rf_pfet_01v8_aM02W5p00L0p25() c.plot() """ return import_gds( @@ -2024,15 +2024,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18 fixed cell. +def rf_pfet_01v8_aM04W5p00L0p18() -> gf.Component: + """Returns rf_pfet_01v8_aM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() + c = sky130.components.rf_pfet_01v8_aM04W5p00L0p18() c.plot() """ return import_gds( @@ -2042,15 +2042,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18 fixed cell. +def rf_pfet_01v8_bM02W5p00L0p18() -> gf.Component: + """Returns rf_pfet_01v8_bM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() + c = sky130.components.rf_pfet_01v8_bM02W5p00L0p18() c.plot() """ return import_gds( @@ -2060,15 +2060,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15 fixed cell. +def rf_pfet_01v8_bM02W3p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_bM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() + c = sky130.components.rf_pfet_01v8_bM02W3p00L0p15() c.plot() """ return import_gds( @@ -2078,15 +2078,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25 fixed cell. +def rf_pfet_01v8_bM02W5p00L0p25() -> gf.Component: + """Returns rf_pfet_01v8_bM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() + c = sky130.components.rf_pfet_01v8_bM02W5p00L0p25() c.plot() """ return import_gds( @@ -2096,15 +2096,15 @@ def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15 fixed cell. +def rf_pfet_01v8_aF04W5p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() + c = sky130.components.rf_pfet_01v8_aF04W5p00L0p15() c.plot() """ return import_gds( @@ -2114,15 +2114,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15 fixed cell. +def rf_pfet_01v8_aM02W5p00L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() + c = sky130.components.rf_pfet_01v8_aM02W5p00L0p15() c.plot() """ return import_gds( @@ -2132,15 +2132,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18 fixed cell. +def rf_pfet_01v8_aM02W1p65L0p18() -> gf.Component: + """Returns rf_pfet_01v8_aM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() + c = sky130.components.rf_pfet_01v8_aM02W1p65L0p18() c.plot() """ return import_gds( @@ -2150,15 +2150,15 @@ def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15 fixed cell. +def rf_pfet_01v8_aF08W1p68L0p15() -> gf.Component: + """Returns rf_pfet_01v8_aF08W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() + c = sky130.components.rf_pfet_01v8_aF08W1p68L0p15() c.plot() """ return import_gds( @@ -2168,15 +2168,15 @@ def sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 fixed cell. +def cap_vpp_04p4x04p6_m1m2_noshield_o2() -> gf.Component: + """Returns cap_vpp_04p4x04p6_m1m2_noshield_o2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() + c = sky130.components.cap_vpp_04p4x04p6_m1m2_noshield_o2() c.plot() """ return import_gds( @@ -2186,15 +2186,15 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield fixed cell. +def cap_vpp_04p4x04p6_m1m2_noshield() -> gf.Component: + """Returns cap_vpp_04p4x04p6_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() + c = sky130.components.cap_vpp_04p4x04p6_m1m2_noshield() c.plot() """ return import_gds( @@ -2204,15 +2204,15 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 fixed cell. +def cap_vpp_04p4x04p6_m1m2_shieldl1() -> gf.Component: + """Returns cap_vpp_04p4x04p6_m1m2_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() + c = sky130.components.cap_vpp_04p4x04p6_m1m2_shieldl1() c.plot() """ return import_gds( @@ -2222,15 +2222,15 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() c.plot() """ return import_gds( @@ -2240,15 +2240,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() c.plot() """ return import_gds( @@ -2258,15 +2258,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso fixed cell. +def rf_nfet_20v0_nvt_withptap_iso() -> gf.Component: + """Returns rf_nfet_20v0_nvt_withptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() + c = sky130.components.rf_nfet_20v0_nvt_withptap_iso() c.plot() """ return import_gds( @@ -2276,15 +2276,15 @@ def sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() -> gf.Component: @cell -def sky130_fd_pr__rf_test_coil2() -> gf.Component: - """Returns sky130_fd_pr__rf_test_coil2 fixed cell. +def rf_test_coil2() -> gf.Component: + """Returns rf_test_coil2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_test_coil2() + c = sky130.components.rf_test_coil2() c.plot() """ return import_gds( @@ -2294,15 +2294,15 @@ def sky130_fd_pr__rf_test_coil2() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 fixed cell. +def cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() -> gf.Component: + """Returns cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() + c = sky130.components.cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() c.plot() """ return import_gds( @@ -2312,15 +2312,15 @@ def sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() -> gf.Compone @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 fixed cell. +def cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() -> gf.Component: + """Returns cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() + c = sky130.components.cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() c.plot() """ return import_gds( @@ -2330,15 +2330,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top fixed cell. +def cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() -> gf.Component: + """Returns cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() + c = sky130.components.cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() c.plot() """ return import_gds( @@ -2348,15 +2348,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -2366,15 +2366,15 @@ def sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__rf_test_coil3() -> gf.Component: - """Returns sky130_fd_pr__rf_test_coil3 fixed cell. +def rf_test_coil3() -> gf.Component: + """Returns rf_test_coil3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_test_coil3() + c = sky130.components.rf_test_coil3() c.plot() """ return import_gds( @@ -2384,15 +2384,15 @@ def sky130_fd_pr__rf_test_coil3() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap fixed cell. +def cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() + c = sky130.components.cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ return import_gds( @@ -2402,15 +2402,15 @@ def sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() -> gf.Componen @cell -def sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap fixed cell. +def cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() + c = sky130.components.cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ return import_gds( @@ -2420,15 +2420,15 @@ def sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() -> gf.Componen @cell -def sky130_fd_pr__rf_nfet_20v0_withptap() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_20v0_withptap fixed cell. +def rf_nfet_20v0_withptap() -> gf.Component: + """Returns rf_nfet_20v0_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_20v0_withptap() + c = sky130.components.rf_nfet_20v0_withptap() c.plot() """ return import_gds( @@ -2438,15 +2438,15 @@ def sky130_fd_pr__rf_nfet_20v0_withptap() -> gf.Component: @cell -def sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() -> gf.Component: - """Returns sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00 fixed cell. +def esd_rf_nfet_20v0_iec_32vW60p00() -> gf.Component: + """Returns esd_rf_nfet_20v0_iec_32vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() + c = sky130.components.esd_rf_nfet_20v0_iec_32vW60p00() c.plot() """ return import_gds( @@ -2456,15 +2456,15 @@ def sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() -> gf.Component: @cell -def sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() -> gf.Component: - """Returns sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00 fixed cell. +def esd_rf_nfet_20v0_iec_21vW60p00() -> gf.Component: + """Returns esd_rf_nfet_20v0_iec_21vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() + c = sky130.components.esd_rf_nfet_20v0_iec_21vW60p00() c.plot() """ return import_gds( @@ -2474,15 +2474,15 @@ def sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_20v0_withptap() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_20v0_withptap fixed cell. +def rf_pfet_20v0_withptap() -> gf.Component: + """Returns rf_pfet_20v0_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_20v0_withptap() + c = sky130.components.rf_pfet_20v0_withptap() c.plot() """ return import_gds( @@ -2492,15 +2492,15 @@ def sky130_fd_pr__rf_pfet_20v0_withptap() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_20v0_nvt_withptap() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_20v0_nvt_withptap fixed cell. +def rf_nfet_20v0_nvt_withptap() -> gf.Component: + """Returns rf_nfet_20v0_nvt_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_withptap() + c = sky130.components.rf_nfet_20v0_nvt_withptap() c.plot() """ return import_gds( @@ -2510,15 +2510,15 @@ def sky130_fd_pr__rf_nfet_20v0_nvt_withptap() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 fixed cell. +def cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() -> gf.Component: + """Returns cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() + c = sky130.components.cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() c.plot() """ return import_gds( @@ -2528,15 +2528,15 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top fixed cell. +def cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: + """Returns cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() + c = sky130.components.cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ return import_gds( @@ -2546,15 +2546,15 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() -> gf.Compon @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 fixed cell. +def cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() -> gf.Component: + """Returns cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() + c = sky130.components.cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() c.plot() """ return import_gds( @@ -2564,15 +2564,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -2582,15 +2582,15 @@ def sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell fixed cell. +def cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() -> gf.Component: + """Returns cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() + c = sky130.components.cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() c.plot() """ return import_gds( @@ -2600,15 +2600,15 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield fixed cell. +def cap_vpp_08p6x07p8_l1m1m2_noshield() -> gf.Component: + """Returns cap_vpp_08p6x07p8_l1m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() + c = sky130.components.cap_vpp_08p6x07p8_l1m1m2_noshield() c.plot() """ return import_gds( @@ -2618,15 +2618,15 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. +def cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: + """Returns cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() + c = sky130.components.cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() c.plot() """ return import_gds( @@ -2636,15 +2636,15 @@ def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Com @cell -def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -2654,15 +2654,15 @@ def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 fixed cell. +def cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() -> gf.Component: + """Returns cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() + c = sky130.components.cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() c.plot() """ return import_gds( @@ -2672,15 +2672,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top fixed cell. +def cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: + """Returns cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() + c = sky130.components.cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ return import_gds( @@ -2690,15 +2690,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() -> gf.Compon @cell -def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top fixed cell. +def cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: + """Returns cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() + c = sky130.components.cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ return import_gds( @@ -2708,15 +2708,15 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() -> gf.Compon @cell -def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 fixed cell. +def cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() -> gf.Component: + """Returns cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() + c = sky130.components.cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() c.plot() """ return import_gds( @@ -2726,15 +2726,15 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap fixed cell. +def cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() + c = sky130.components.cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ return import_gds( @@ -2744,15 +2744,15 @@ def sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() -> gf.Componen @cell -def sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap fixed cell. +def cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() + c = sky130.components.cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ return import_gds( @@ -2762,15 +2762,15 @@ def sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() -> gf.Componen @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() c.plot() """ return import_gds( @@ -2780,15 +2780,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() c.plot() """ return import_gds( @@ -2798,15 +2798,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() c.plot() """ return import_gds( @@ -2816,15 +2816,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() -> gf.Component @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() c.plot() """ return import_gds( @@ -2834,15 +2834,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() c.plot() """ return import_gds( @@ -2852,15 +2852,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() c.plot() """ return import_gds( @@ -2870,15 +2870,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() c.plot() """ return import_gds( @@ -2888,15 +2888,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() c.plot() """ return import_gds( @@ -2906,15 +2906,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -2924,15 +2924,15 @@ def sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap fixed cell. +def cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: + """Returns cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() + c = sky130.components.cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() c.plot() """ return import_gds( @@ -2942,15 +2942,15 @@ def sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() -> gf.Componen @cell -def sky130_fd_pr__rf_nfet_20v0_noptap_iso() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_20v0_noptap_iso fixed cell. +def rf_nfet_20v0_noptap_iso() -> gf.Component: + """Returns rf_nfet_20v0_noptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_20v0_noptap_iso() + c = sky130.components.rf_nfet_20v0_noptap_iso() c.plot() """ return import_gds( @@ -2960,15 +2960,15 @@ def sky130_fd_pr__rf_nfet_20v0_noptap_iso() -> gf.Component: @cell -def sky130_fd_pr__rf_npn_05v5_W1p00L1p00() -> gf.Component: - """Returns sky130_fd_pr__rf_npn_05v5_W1p00L1p00 fixed cell. +def rf_npn_05v5_W1p00L1p00() -> gf.Component: + """Returns rf_npn_05v5_W1p00L1p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L1p00() + c = sky130.components.rf_npn_05v5_W1p00L1p00() c.plot() """ return import_gds( @@ -2978,15 +2978,15 @@ def sky130_fd_pr__rf_npn_05v5_W1p00L1p00() -> gf.Component: @cell -def sky130_fd_pr__rf_npn_05v5_W2p00L2p00() -> gf.Component: - """Returns sky130_fd_pr__rf_npn_05v5_W2p00L2p00 fixed cell. +def rf_npn_05v5_W2p00L2p00() -> gf.Component: + """Returns rf_npn_05v5_W2p00L2p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L2p00() + c = sky130.components.rf_npn_05v5_W2p00L2p00() c.plot() """ return import_gds( @@ -2996,15 +2996,15 @@ def sky130_fd_pr__rf_npn_05v5_W2p00L2p00() -> gf.Component: @cell -def sky130_fd_pr__rf_npn_05v5_W1p00L8p00() -> gf.Component: - """Returns sky130_fd_pr__rf_npn_05v5_W1p00L8p00 fixed cell. +def rf_npn_05v5_W1p00L8p00() -> gf.Component: + """Returns rf_npn_05v5_W1p00L8p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L8p00() + c = sky130.components.rf_npn_05v5_W1p00L8p00() c.plot() """ return import_gds( @@ -3014,15 +3014,15 @@ def sky130_fd_pr__rf_npn_05v5_W1p00L8p00() -> gf.Component: @cell -def sky130_fd_pr__rf_npn_05v5_W1p00L4p00() -> gf.Component: - """Returns sky130_fd_pr__rf_npn_05v5_W1p00L4p00 fixed cell. +def rf_npn_05v5_W1p00L4p00() -> gf.Component: + """Returns rf_npn_05v5_W1p00L4p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L4p00() + c = sky130.components.rf_npn_05v5_W1p00L4p00() c.plot() """ return import_gds( @@ -3032,15 +3032,15 @@ def sky130_fd_pr__rf_npn_05v5_W1p00L4p00() -> gf.Component: @cell -def sky130_fd_pr__rf_npn_05v5_W2p00L8p00() -> gf.Component: - """Returns sky130_fd_pr__rf_npn_05v5_W2p00L8p00 fixed cell. +def rf_npn_05v5_W2p00L8p00() -> gf.Component: + """Returns rf_npn_05v5_W2p00L8p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L8p00() + c = sky130.components.rf_npn_05v5_W2p00L8p00() c.plot() """ return import_gds( @@ -3050,15 +3050,15 @@ def sky130_fd_pr__rf_npn_05v5_W2p00L8p00() -> gf.Component: @cell -def sky130_fd_pr__rf_npn_05v5_W2p00L4p00() -> gf.Component: - """Returns sky130_fd_pr__rf_npn_05v5_W2p00L4p00 fixed cell. +def rf_npn_05v5_W2p00L4p00() -> gf.Component: + """Returns rf_npn_05v5_W2p00L4p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L4p00() + c = sky130.components.rf_npn_05v5_W2p00L4p00() c.plot() """ return import_gds( @@ -3068,15 +3068,15 @@ def sky130_fd_pr__rf_npn_05v5_W2p00L4p00() -> gf.Component: @cell -def sky130_fd_pr__rf_npn_05v5_W1p00L2p00() -> gf.Component: - """Returns sky130_fd_pr__rf_npn_05v5_W1p00L2p00 fixed cell. +def rf_npn_05v5_W1p00L2p00() -> gf.Component: + """Returns rf_npn_05v5_W1p00L2p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L2p00() + c = sky130.components.rf_npn_05v5_W1p00L2p00() c.plot() """ return import_gds( @@ -3086,15 +3086,15 @@ def sky130_fd_pr__rf_npn_05v5_W1p00L2p00() -> gf.Component: @cell -def sky130_fd_pr__rf_npn_05v5_W5p00L5p00() -> gf.Component: - """Returns sky130_fd_pr__rf_npn_05v5_W5p00L5p00 fixed cell. +def rf_npn_05v5_W5p00L5p00() -> gf.Component: + """Returns rf_npn_05v5_W5p00L5p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_npn_05v5_W5p00L5p00() + c = sky130.components.rf_npn_05v5_W5p00L5p00() c.plot() """ return import_gds( @@ -3104,15 +3104,15 @@ def sky130_fd_pr__rf_npn_05v5_W5p00L5p00() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield fixed cell. +def cap_vpp_08p6x07p8_m1m2_noshield() -> gf.Component: + """Returns cap_vpp_08p6x07p8_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() + c = sky130.components.cap_vpp_08p6x07p8_m1m2_noshield() c.plot() """ return import_gds( @@ -3122,15 +3122,15 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop fixed cell. +def cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() -> gf.Component: + """Returns cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() + c = sky130.components.cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() c.plot() """ return import_gds( @@ -3140,15 +3140,15 @@ def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() -> gf.Component @cell -def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv fixed cell. +def cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() -> gf.Component: + """Returns cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() + c = sky130.components.cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() c.plot() """ return import_gds( @@ -3158,15 +3158,15 @@ def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -3176,15 +3176,15 @@ def sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield fixed cell. +def cap_vpp_11p5x11p7_m1m4_noshield() -> gf.Component: + """Returns cap_vpp_11p5x11p7_m1m4_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() + c = sky130.components.cap_vpp_11p5x11p7_m1m4_noshield() c.plot() """ return import_gds( @@ -3194,15 +3194,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -3212,15 +3212,15 @@ def sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 fixed cell. +def cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() -> gf.Component: + """Returns cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() + c = sky130.components.cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() c.plot() """ return import_gds( @@ -3230,15 +3230,15 @@ def sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 fixed cell. +def cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() -> gf.Component: + """Returns cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() + c = sky130.components.cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() c.plot() """ return import_gds( @@ -3248,15 +3248,15 @@ def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top fixed cell. +def cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() -> gf.Component: + """Returns cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() + c = sky130.components.cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() c.plot() """ return import_gds( @@ -3266,15 +3266,15 @@ def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -3284,15 +3284,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 fixed cell. +def cap_vpp_11p5x11p7_l1m1m2_shieldpom3() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2_shieldpom3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2_shieldpom3() c.plot() """ return import_gds( @@ -3302,15 +3302,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() -> gf.Component: @cell -def sky130_fd_pr__rf_aura_drc_flag_check() -> gf.Component: - """Returns sky130_fd_pr__rf_aura_drc_flag_check fixed cell. +def rf_aura_drc_flag_check() -> gf.Component: + """Returns rf_aura_drc_flag_check fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_aura_drc_flag_check() + c = sky130.components.rf_aura_drc_flag_check() c.plot() """ return import_gds( @@ -3320,15 +3320,15 @@ def sky130_fd_pr__rf_aura_drc_flag_check() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test fixed cell. +def cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() -> gf.Component: + """Returns cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() + c = sky130.components.cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() c.plot() """ return import_gds( @@ -3338,15 +3338,15 @@ def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() -> gf.Compone @cell -def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -3356,15 +3356,15 @@ def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. +def cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: + """Returns cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() + c = sky130.components.cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() c.plot() """ return import_gds( @@ -3374,15 +3374,15 @@ def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Com @cell -def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top fixed cell. +def cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() -> gf.Component: + """Returns cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() + c = sky130.components.cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() c.plot() """ return import_gds( @@ -3392,15 +3392,15 @@ def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 fixed cell. +def cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() -> gf.Component: + """Returns cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() + c = sky130.components.cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() c.plot() """ return import_gds( @@ -3410,15 +3410,15 @@ def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() -> gf.Component: @cell -def sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15 fixed cell. +def rf_pfet_01v8_mvt_aF02W0p84L0p15() -> gf.Component: + """Returns rf_pfet_01v8_mvt_aF02W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() + c = sky130.components.rf_pfet_01v8_mvt_aF02W0p84L0p15() c.plot() """ return import_gds( @@ -3428,15 +3428,15 @@ def sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_20v0_nvt_aup() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_20v0_nvt_aup fixed cell. +def rf_nfet_20v0_nvt_aup() -> gf.Component: + """Returns rf_nfet_20v0_nvt_aup fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_aup() + c = sky130.components.rf_nfet_20v0_nvt_aup() c.plot() """ return import_gds( @@ -3446,15 +3446,15 @@ def sky130_fd_pr__rf_nfet_20v0_nvt_aup() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 fixed cell. +def cap_vpp_08p6x07p8_m1m2_shieldl1() -> gf.Component: + """Returns cap_vpp_08p6x07p8_m1m2_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() + c = sky130.components.cap_vpp_08p6x07p8_m1m2_shieldl1() c.plot() """ return import_gds( @@ -3464,15 +3464,15 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap fixed cell. +def cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: + """Returns cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() + c = sky130.components.cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() c.plot() """ return import_gds( @@ -3482,15 +3482,15 @@ def sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() -> gf.Componen @cell -def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 fixed cell. +def cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() -> gf.Component: + """Returns cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() + c = sky130.components.cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() c.plot() """ return import_gds( @@ -3500,15 +3500,15 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() -> gf.Component: @cell -def sky130_fd_pr__rf_aura_blocking() -> gf.Component: - """Returns sky130_fd_pr__rf_aura_blocking fixed cell. +def rf_aura_blocking() -> gf.Component: + """Returns rf_aura_blocking fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_aura_blocking() + c = sky130.components.rf_aura_blocking() c.plot() """ return import_gds( @@ -3518,15 +3518,15 @@ def sky130_fd_pr__rf_aura_blocking() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 fixed cell. +def cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() -> gf.Component: + """Returns cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() + c = sky130.components.cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() c.plot() """ return import_gds( @@ -3536,15 +3536,15 @@ def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 fixed cell. +def cap_vpp_11p5x11p7_m1m2m3_shieldl1() -> gf.Component: + """Returns cap_vpp_11p5x11p7_m1m2m3_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() + c = sky130.components.cap_vpp_11p5x11p7_m1m2m3_shieldl1() c.plot() """ return import_gds( @@ -3554,15 +3554,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() c.plot() """ return import_gds( @@ -3572,15 +3572,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top fixed cell. +def cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() c.plot() """ return import_gds( @@ -3590,15 +3590,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25 fixed cell. +def rf_nfet_01v8_lvt_bM04W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() + c = sky130.components.rf_nfet_01v8_lvt_bM04W1p65L0p25() c.plot() """ return import_gds( @@ -3608,15 +3608,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF02W0p84L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF02W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF02W0p84L0p15() c.plot() """ return import_gds( @@ -3626,15 +3626,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_aM02W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_aM02W5p00L0p25() c.plot() """ return import_gds( @@ -3644,15 +3644,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_aM04W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aM04W1p65L0p15() c.plot() """ return import_gds( @@ -3662,15 +3662,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_bM02W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_bM02W1p65L0p15() c.plot() """ return import_gds( @@ -3680,15 +3680,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF08W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF08W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF08W3p00L0p15() c.plot() """ return import_gds( @@ -3698,15 +3698,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18 fixed cell. +def rf_nfet_01v8_lvt_cM02W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() + c = sky130.components.rf_nfet_01v8_lvt_cM02W1p65L0p18() c.plot() """ return import_gds( @@ -3716,15 +3716,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_cM04W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_cM04W3p00L0p25() c.plot() """ return import_gds( @@ -3734,15 +3734,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF02W0p42L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF02W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF02W0p42L0p15() c.plot() """ return import_gds( @@ -3752,15 +3752,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_bM02W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_bM02W3p00L0p25() c.plot() """ return import_gds( @@ -3770,15 +3770,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_aM02W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_aM02W5p00L0p18() c.plot() """ return import_gds( @@ -3788,15 +3788,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_cM02W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_cM02W5p00L0p15() c.plot() """ return import_gds( @@ -3806,15 +3806,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF08W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF08W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF08W1p65L0p15() c.plot() """ return import_gds( @@ -3824,15 +3824,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_aM02W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aM02W1p65L0p15() c.plot() """ return import_gds( @@ -3842,15 +3842,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_cM02W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_cM02W3p00L0p25() c.plot() """ return import_gds( @@ -3860,15 +3860,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25 fixed cell. +def rf_nfet_01v8_lvt_aM04W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() + c = sky130.components.rf_nfet_01v8_lvt_aM04W1p65L0p25() c.plot() """ return import_gds( @@ -3878,15 +3878,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_bM04W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_bM04W3p00L0p15() c.plot() """ return import_gds( @@ -3896,15 +3896,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_cM04W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_cM04W3p00L0p15() c.plot() """ return import_gds( @@ -3914,15 +3914,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_cM02W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_cM02W3p00L0p18() c.plot() """ return import_gds( @@ -3932,15 +3932,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF02W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF02W1p65L0p15() c.plot() """ return import_gds( @@ -3950,15 +3950,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_cM02W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_cM02W1p65L0p15() c.plot() """ return import_gds( @@ -3968,15 +3968,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_aM04W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_aM04W3p00L0p25() c.plot() """ return import_gds( @@ -3986,15 +3986,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_aM04W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_aM04W5p00L0p18() c.plot() """ return import_gds( @@ -4004,15 +4004,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF08W0p42L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF08W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF08W0p42L0p15() c.plot() """ return import_gds( @@ -4022,15 +4022,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_bM04W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_bM04W1p65L0p15() c.plot() """ return import_gds( @@ -4040,15 +4040,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_bM04W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_bM04W3p00L0p25() c.plot() """ return import_gds( @@ -4058,15 +4058,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF04W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF04W3p00L0p15() c.plot() """ return import_gds( @@ -4076,15 +4076,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_cM02W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_cM02W5p00L0p25() c.plot() """ return import_gds( @@ -4094,15 +4094,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_aM04W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aM04W3p00L0p15() c.plot() """ return import_gds( @@ -4112,15 +4112,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_cM02W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_cM02W5p00L0p18() c.plot() """ return import_gds( @@ -4130,15 +4130,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25 fixed cell. +def rf_nfet_01v8_lvt_aM02W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() + c = sky130.components.rf_nfet_01v8_lvt_aM02W1p65L0p25() c.plot() """ return import_gds( @@ -4148,15 +4148,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_aM02W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_aM02W3p00L0p18() c.plot() """ return import_gds( @@ -4166,15 +4166,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF06W0p84L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF06W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF06W0p84L0p15() c.plot() """ return import_gds( @@ -4184,15 +4184,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF06W0p42L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF06W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF06W0p42L0p15() c.plot() """ return import_gds( @@ -4202,15 +4202,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_cM04W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_cM04W5p00L0p25() c.plot() """ return import_gds( @@ -4220,15 +4220,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_aM02W3p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_aM02W3p00L0p25() c.plot() """ return import_gds( @@ -4238,15 +4238,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF06W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF06W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF06W1p65L0p15() c.plot() """ return import_gds( @@ -4256,15 +4256,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18 fixed cell. +def rf_nfet_01v8_lvt_cM04W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() + c = sky130.components.rf_nfet_01v8_lvt_cM04W1p65L0p18() c.plot() """ return import_gds( @@ -4274,15 +4274,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_bM02W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_bM02W3p00L0p18() c.plot() """ return import_gds( @@ -4292,15 +4292,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25 fixed cell. +def rf_nfet_01v8_lvt_bM02W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() + c = sky130.components.rf_nfet_01v8_lvt_bM02W1p65L0p25() c.plot() """ return import_gds( @@ -4310,15 +4310,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_bM02W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_bM02W5p00L0p15() c.plot() """ return import_gds( @@ -4328,15 +4328,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_bM04W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_bM04W5p00L0p25() c.plot() """ return import_gds( @@ -4346,15 +4346,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_aM04W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_aM04W3p00L0p18() c.plot() """ return import_gds( @@ -4364,15 +4364,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_bM04W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_bM04W5p00L0p15() c.plot() """ return import_gds( @@ -4382,15 +4382,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_bM04W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_bM04W5p00L0p18() c.plot() """ return import_gds( @@ -4400,15 +4400,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF06W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF06W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF06W3p00L0p15() c.plot() """ return import_gds( @@ -4418,15 +4418,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF04W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF04W1p65L0p15() c.plot() """ return import_gds( @@ -4436,15 +4436,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18 fixed cell. +def rf_nfet_01v8_lvt_bM02W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() + c = sky130.components.rf_nfet_01v8_lvt_bM02W1p65L0p18() c.plot() """ return import_gds( @@ -4454,15 +4454,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_cM02W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_cM02W3p00L0p15() c.plot() """ return import_gds( @@ -4472,15 +4472,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18 fixed cell. +def rf_nfet_01v8_lvt_aM04W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() + c = sky130.components.rf_nfet_01v8_lvt_aM04W1p65L0p18() c.plot() """ return import_gds( @@ -4490,15 +4490,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_bM04W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_bM04W3p00L0p18() c.plot() """ return import_gds( @@ -4508,15 +4508,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18 fixed cell. +def rf_nfet_01v8_lvt_bM04W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() + c = sky130.components.rf_nfet_01v8_lvt_bM04W1p65L0p18() c.plot() """ return import_gds( @@ -4526,15 +4526,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_aM04W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_aM04W5p00L0p25() c.plot() """ return import_gds( @@ -4544,15 +4544,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_aM02W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aM02W5p00L0p15() c.plot() """ return import_gds( @@ -4562,15 +4562,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_aM02W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aM02W3p00L0p15() c.plot() """ return import_gds( @@ -4580,15 +4580,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25 fixed cell. +def rf_nfet_01v8_lvt_cM02W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() + c = sky130.components.rf_nfet_01v8_lvt_cM02W1p65L0p25() c.plot() """ return import_gds( @@ -4598,15 +4598,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18 fixed cell. +def rf_nfet_01v8_lvt_aM02W1p65L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() + c = sky130.components.rf_nfet_01v8_lvt_aM02W1p65L0p18() c.plot() """ return import_gds( @@ -4616,15 +4616,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25 fixed cell. +def rf_nfet_01v8_lvt_cM04W1p65L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() + c = sky130.components.rf_nfet_01v8_lvt_cM04W1p65L0p25() c.plot() """ return import_gds( @@ -4634,15 +4634,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_bM02W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_bM02W5p00L0p18() c.plot() """ return import_gds( @@ -4652,15 +4652,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_cM04W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_cM04W5p00L0p15() c.plot() """ return import_gds( @@ -4670,15 +4670,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_cM04W3p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_cM04W3p00L0p18() c.plot() """ return import_gds( @@ -4688,15 +4688,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_aM04W5p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aM04W5p00L0p15() c.plot() """ return import_gds( @@ -4706,15 +4706,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15 fixed cell. +def rf_nfet_01v8_lvt_cM04W1p65L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() + c = sky130.components.rf_nfet_01v8_lvt_cM04W1p65L0p15() c.plot() """ return import_gds( @@ -4724,15 +4724,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18 fixed cell. +def rf_nfet_01v8_lvt_cM04W5p00L0p18() -> gf.Component: + """Returns rf_nfet_01v8_lvt_cM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() + c = sky130.components.rf_nfet_01v8_lvt_cM04W5p00L0p18() c.plot() """ return import_gds( @@ -4742,15 +4742,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF04W0p84L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF04W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF04W0p84L0p15() c.plot() """ return import_gds( @@ -4760,15 +4760,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25 fixed cell. +def rf_nfet_01v8_lvt_bM02W5p00L0p25() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() + c = sky130.components.rf_nfet_01v8_lvt_bM02W5p00L0p25() c.plot() """ return import_gds( @@ -4778,15 +4778,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF02W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF02W3p00L0p15() c.plot() """ return import_gds( @@ -4796,15 +4796,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15 fixed cell. +def rf_nfet_01v8_lvt_bM02W3p00L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_bM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() + c = sky130.components.rf_nfet_01v8_lvt_bM02W3p00L0p15() c.plot() """ return import_gds( @@ -4814,15 +4814,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF04W0p42L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF04W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF04W0p42L0p15() c.plot() """ return import_gds( @@ -4832,15 +4832,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15 fixed cell. +def rf_nfet_01v8_lvt_aF08W0p84L0p15() -> gf.Component: + """Returns rf_nfet_01v8_lvt_aF08W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() + c = sky130.components.rf_nfet_01v8_lvt_aF08W0p84L0p15() c.plot() """ return import_gds( @@ -4850,15 +4850,15 @@ def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield fixed cell. +def cap_vpp_11p5x11p7_m1m2_noshield() -> gf.Component: + """Returns cap_vpp_11p5x11p7_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() + c = sky130.components.cap_vpp_11p5x11p7_m1m2_noshield() c.plot() """ return import_gds( @@ -4868,15 +4868,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() -> gf.Component: @cell -def sky130_fd_pr__rf_npn_11v0_W1p00L1p00() -> gf.Component: - """Returns sky130_fd_pr__rf_npn_11v0_W1p00L1p00 fixed cell. +def rf_npn_11v0_W1p00L1p00() -> gf.Component: + """Returns rf_npn_11v0_W1p00L1p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_npn_11v0_W1p00L1p00() + c = sky130.components.rf_npn_11v0_W1p00L1p00() c.plot() """ return import_gds( @@ -4886,15 +4886,15 @@ def sky130_fd_pr__rf_npn_11v0_W1p00L1p00() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_20v0_zvt_withptap() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_20v0_zvt_withptap fixed cell. +def rf_nfet_20v0_zvt_withptap() -> gf.Component: + """Returns rf_nfet_20v0_zvt_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_20v0_zvt_withptap() + c = sky130.components.rf_nfet_20v0_zvt_withptap() c.plot() """ return import_gds( @@ -4904,15 +4904,15 @@ def sky130_fd_pr__rf_nfet_20v0_zvt_withptap() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 fixed cell. +def cap_vpp_11p5x11p7_m1m2_shieldl1() -> gf.Component: + """Returns cap_vpp_11p5x11p7_m1m2_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() + c = sky130.components.cap_vpp_11p5x11p7_m1m2_shieldl1() c.plot() """ return import_gds( @@ -4922,15 +4922,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() -> gf.Component: @cell -def sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() -> gf.Component: - """Returns sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00 fixed cell. +def esd_rf_nfet_20v0_hbm_21vW60p00() -> gf.Component: + """Returns esd_rf_nfet_20v0_hbm_21vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() + c = sky130.components.esd_rf_nfet_20v0_hbm_21vW60p00() c.plot() """ return import_gds( @@ -4940,15 +4940,15 @@ def sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() -> gf.Component: @cell -def sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() -> gf.Component: - """Returns sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00 fixed cell. +def esd_rf_nfet_20v0_hbm_32vW60p00() -> gf.Component: + """Returns esd_rf_nfet_20v0_hbm_32vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() + c = sky130.components.esd_rf_nfet_20v0_hbm_32vW60p00() c.plot() """ return import_gds( @@ -4958,15 +4958,15 @@ def sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_aM10W7p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_aM10W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_aM10W7p00L0p50() c.plot() """ return import_gds( @@ -4976,15 +4976,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_bM10W5p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_bM10W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_bM10W5p00L0p50() c.plot() """ return import_gds( @@ -4994,15 +4994,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_aM10W5p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_aM10W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_aM10W5p00L0p50() c.plot() """ return import_gds( @@ -5012,15 +5012,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_aM04W5p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_aM04W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_aM04W5p00L0p50() c.plot() """ return import_gds( @@ -5030,15 +5030,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_aM04W7p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_aM04W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_aM04W7p00L0p50() c.plot() """ return import_gds( @@ -5048,15 +5048,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_bM10W7p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_bM10W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_bM10W7p00L0p50() c.plot() """ return import_gds( @@ -5066,15 +5066,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_aM10W3p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_aM10W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_aM10W3p00L0p50() c.plot() """ return import_gds( @@ -5084,15 +5084,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_bM02W3p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_bM02W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_bM02W3p00L0p50() c.plot() """ return import_gds( @@ -5102,15 +5102,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_aM04W3p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_aM04W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_aM04W3p00L0p50() c.plot() """ return import_gds( @@ -5120,15 +5120,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_bM10W3p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_bM10W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_bM10W3p00L0p50() c.plot() """ return import_gds( @@ -5138,15 +5138,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_bM04W5p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_bM04W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_bM04W5p00L0p50() c.plot() """ return import_gds( @@ -5156,15 +5156,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_bM04W3p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_bM04W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_bM04W3p00L0p50() c.plot() """ return import_gds( @@ -5174,15 +5174,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_bM02W5p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_bM02W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_bM02W5p00L0p50() c.plot() """ return import_gds( @@ -5192,15 +5192,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() -> gf.Component: - """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50 fixed cell. +def rf_nfet_g5v0d10v5_bM04W7p00L0p50() -> gf.Component: + """Returns rf_nfet_g5v0d10v5_bM04W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() + c = sky130.components.rf_nfet_g5v0d10v5_bM04W7p00L0p50() c.plot() """ return import_gds( @@ -5210,15 +5210,15 @@ def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield fixed cell. +def cap_vpp_11p5x11p7_l1m1m2_noshield() -> gf.Component: + """Returns cap_vpp_11p5x11p7_l1m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() + c = sky130.components.cap_vpp_11p5x11p7_l1m1m2_noshield() c.plot() """ return import_gds( @@ -5228,15 +5228,15 @@ def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 fixed cell. +def cap_vpp_08p6x07p8_m1m2m3_shieldl1() -> gf.Component: + """Returns cap_vpp_08p6x07p8_m1m2m3_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() + c = sky130.components.cap_vpp_08p6x07p8_m1m2m3_shieldl1() c.plot() """ return import_gds( @@ -5246,15 +5246,15 @@ def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() -> gf.Component: @cell -def sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() -> gf.Component: - """Returns sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield fixed cell. +def cap_vpp_02p4x04p6_m1m2_noshield() -> gf.Component: + """Returns cap_vpp_02p4x04p6_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() + c = sky130.components.cap_vpp_02p4x04p6_m1m2_noshield() c.plot() """ return import_gds( @@ -5264,15 +5264,15 @@ def sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() -> gf.Component: @cell -def sky130_fd_sc_hd__clkinv_8() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_8 fixed cell. +def clkinv_8() -> gf.Component: + """Returns clkinv_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_8() + c = sky130.components.clkinv_8() c.plot() """ return import_gds( @@ -5282,15 +5282,15 @@ def sky130_fd_sc_hd__clkinv_8() -> gf.Component: @cell -def sky130_fd_sc_hd__clkinv_4() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_4 fixed cell. +def clkinv_4() -> gf.Component: + """Returns clkinv_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_4() + c = sky130.components.clkinv_4() c.plot() """ return import_gds( @@ -5300,15 +5300,15 @@ def sky130_fd_sc_hd__clkinv_4() -> gf.Component: @cell -def sky130_fd_sc_hd__clkinv_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_1 fixed cell. +def clkinv_1() -> gf.Component: + """Returns clkinv_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_1() + c = sky130.components.clkinv_1() c.plot() """ return import_gds( @@ -5318,15 +5318,15 @@ def sky130_fd_sc_hd__clkinv_1() -> gf.Component: @cell -def sky130_fd_sc_hd__clkinv_16() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_16 fixed cell. +def clkinv_16() -> gf.Component: + """Returns clkinv_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_16() + c = sky130.components.clkinv_16() c.plot() """ return import_gds( @@ -5336,15 +5336,15 @@ def sky130_fd_sc_hd__clkinv_16() -> gf.Component: @cell -def sky130_fd_sc_hd__clkinv_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinv_2 fixed cell. +def clkinv_2() -> gf.Component: + """Returns clkinv_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinv_2() + c = sky130.components.clkinv_2() c.plot() """ return import_gds( @@ -5354,15 +5354,15 @@ def sky130_fd_sc_hd__clkinv_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o311ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o311ai_1 fixed cell. +def o311ai_1() -> gf.Component: + """Returns o311ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o311ai_1() + c = sky130.components.o311ai_1() c.plot() """ return import_gds( @@ -5372,15 +5372,15 @@ def sky130_fd_sc_hd__o311ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o311ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o311ai_2 fixed cell. +def o311ai_2() -> gf.Component: + """Returns o311ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o311ai_2() + c = sky130.components.o311ai_2() c.plot() """ return import_gds( @@ -5390,15 +5390,15 @@ def sky130_fd_sc_hd__o311ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o311ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o311ai_4 fixed cell. +def o311ai_4() -> gf.Component: + """Returns o311ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o311ai_4() + c = sky130.components.o311ai_4() c.plot() """ return import_gds( @@ -5408,15 +5408,15 @@ def sky130_fd_sc_hd__o311ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o311ai_0() -> gf.Component: - """Returns sky130_fd_sc_hd__o311ai_0 fixed cell. +def o311ai_0() -> gf.Component: + """Returns o311ai_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o311ai_0() + c = sky130.components.o311ai_0() c.plot() """ return import_gds( @@ -5426,15 +5426,15 @@ def sky130_fd_sc_hd__o311ai_0() -> gf.Component: @cell -def sky130_fd_sc_hd__dlygate4sd1_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlygate4sd1_1 fixed cell. +def dlygate4sd1_1() -> gf.Component: + """Returns dlygate4sd1_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlygate4sd1_1() + c = sky130.components.dlygate4sd1_1() c.plot() """ return import_gds( @@ -5444,15 +5444,15 @@ def sky130_fd_sc_hd__dlygate4sd1_1() -> gf.Component: @cell -def sky130_fd_sc_hd__einvn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_2 fixed cell. +def einvn_2() -> gf.Component: + """Returns einvn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_2() + c = sky130.components.einvn_2() c.plot() """ return import_gds( @@ -5462,15 +5462,15 @@ def sky130_fd_sc_hd__einvn_2() -> gf.Component: @cell -def sky130_fd_sc_hd__einvn_0() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_0 fixed cell. +def einvn_0() -> gf.Component: + """Returns einvn_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_0() + c = sky130.components.einvn_0() c.plot() """ return import_gds( @@ -5480,15 +5480,15 @@ def sky130_fd_sc_hd__einvn_0() -> gf.Component: @cell -def sky130_fd_sc_hd__einvn_8() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_8 fixed cell. +def einvn_8() -> gf.Component: + """Returns einvn_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_8() + c = sky130.components.einvn_8() c.plot() """ return import_gds( @@ -5498,15 +5498,15 @@ def sky130_fd_sc_hd__einvn_8() -> gf.Component: @cell -def sky130_fd_sc_hd__einvn_4() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_4 fixed cell. +def einvn_4() -> gf.Component: + """Returns einvn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_4() + c = sky130.components.einvn_4() c.plot() """ return import_gds( @@ -5516,15 +5516,15 @@ def sky130_fd_sc_hd__einvn_4() -> gf.Component: @cell -def sky130_fd_sc_hd__einvn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__einvn_1 fixed cell. +def einvn_1() -> gf.Component: + """Returns einvn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvn_1() + c = sky130.components.einvn_1() c.plot() """ return import_gds( @@ -5534,15 +5534,15 @@ def sky130_fd_sc_hd__einvn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__fahcon_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fahcon_1 fixed cell. +def fahcon_1() -> gf.Component: + """Returns fahcon_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fahcon_1() + c = sky130.components.fahcon_1() c.plot() """ return import_gds( @@ -5552,15 +5552,15 @@ def sky130_fd_sc_hd__fahcon_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dlygate4sd3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlygate4sd3_1 fixed cell. +def dlygate4sd3_1() -> gf.Component: + """Returns dlygate4sd3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlygate4sd3_1() + c = sky130.components.dlygate4sd3_1() c.plot() """ return import_gds( @@ -5570,15 +5570,15 @@ def sky130_fd_sc_hd__dlygate4sd3_1() -> gf.Component: @cell -def sky130_fd_sc_hd__clkdlybuf4s15_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s15_2 fixed cell. +def clkdlybuf4s15_2() -> gf.Component: + """Returns clkdlybuf4s15_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_2() + c = sky130.components.clkdlybuf4s15_2() c.plot() """ return import_gds( @@ -5588,15 +5588,15 @@ def sky130_fd_sc_hd__clkdlybuf4s15_2() -> gf.Component: @cell -def sky130_fd_sc_hd__clkdlybuf4s15_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s15_1 fixed cell. +def clkdlybuf4s15_1() -> gf.Component: + """Returns clkdlybuf4s15_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_1() + c = sky130.components.clkdlybuf4s15_1() c.plot() """ return import_gds( @@ -5606,15 +5606,15 @@ def sky130_fd_sc_hd__clkdlybuf4s15_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a2111o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111o_2 fixed cell. +def a2111o_2() -> gf.Component: + """Returns a2111o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111o_2() + c = sky130.components.a2111o_2() c.plot() """ return import_gds( @@ -5624,15 +5624,15 @@ def sky130_fd_sc_hd__a2111o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a2111o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111o_1 fixed cell. +def a2111o_1() -> gf.Component: + """Returns a2111o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111o_1() + c = sky130.components.a2111o_1() c.plot() """ return import_gds( @@ -5642,15 +5642,15 @@ def sky130_fd_sc_hd__a2111o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a2111o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111o_4 fixed cell. +def a2111o_4() -> gf.Component: + """Returns a2111o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111o_4() + c = sky130.components.a2111o_4() c.plot() """ return import_gds( @@ -5660,15 +5660,15 @@ def sky130_fd_sc_hd__a2111o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o2111ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111ai_1 fixed cell. +def o2111ai_1() -> gf.Component: + """Returns o2111ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2111ai_1() + c = sky130.components.o2111ai_1() c.plot() """ return import_gds( @@ -5678,15 +5678,15 @@ def sky130_fd_sc_hd__o2111ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o2111ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111ai_2 fixed cell. +def o2111ai_2() -> gf.Component: + """Returns o2111ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2111ai_2() + c = sky130.components.o2111ai_2() c.plot() """ return import_gds( @@ -5696,15 +5696,15 @@ def sky130_fd_sc_hd__o2111ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o2111ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111ai_4 fixed cell. +def o2111ai_4() -> gf.Component: + """Returns o2111ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2111ai_4() + c = sky130.components.o2111ai_4() c.plot() """ return import_gds( @@ -5714,15 +5714,15 @@ def sky130_fd_sc_hd__o2111ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfxbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxbp_2 fixed cell. +def sdfxbp_2() -> gf.Component: + """Returns sdfxbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfxbp_2() + c = sky130.components.sdfxbp_2() c.plot() """ return import_gds( @@ -5732,15 +5732,15 @@ def sky130_fd_sc_hd__sdfxbp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxbp_1 fixed cell. +def sdfxbp_1() -> gf.Component: + """Returns sdfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfxbp_1() + c = sky130.components.sdfxbp_1() c.plot() """ return import_gds( @@ -5750,15 +5750,15 @@ def sky130_fd_sc_hd__sdfxbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfxtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxtp_2 fixed cell. +def sdfxtp_2() -> gf.Component: + """Returns sdfxtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfxtp_2() + c = sky130.components.sdfxtp_2() c.plot() """ return import_gds( @@ -5768,15 +5768,15 @@ def sky130_fd_sc_hd__sdfxtp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxtp_1 fixed cell. +def sdfxtp_1() -> gf.Component: + """Returns sdfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfxtp_1() + c = sky130.components.sdfxtp_1() c.plot() """ return import_gds( @@ -5786,15 +5786,15 @@ def sky130_fd_sc_hd__sdfxtp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfxtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfxtp_4 fixed cell. +def sdfxtp_4() -> gf.Component: + """Returns sdfxtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfxtp_4() + c = sky130.components.sdfxtp_4() c.plot() """ return import_gds( @@ -5804,15 +5804,15 @@ def sky130_fd_sc_hd__sdfxtp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__clkdlybuf4s25_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s25_1 fixed cell. +def clkdlybuf4s25_1() -> gf.Component: + """Returns clkdlybuf4s25_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_1() + c = sky130.components.clkdlybuf4s25_1() c.plot() """ return import_gds( @@ -5822,15 +5822,15 @@ def sky130_fd_sc_hd__clkdlybuf4s25_1() -> gf.Component: @cell -def sky130_fd_sc_hd__clkdlybuf4s25_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s25_2 fixed cell. +def clkdlybuf4s25_2() -> gf.Component: + """Returns clkdlybuf4s25_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_2() + c = sky130.components.clkdlybuf4s25_2() c.plot() """ return import_gds( @@ -5840,15 +5840,15 @@ def sky130_fd_sc_hd__clkdlybuf4s25_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nand2_8() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2_8 fixed cell. +def nand2_8() -> gf.Component: + """Returns nand2_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand2_8() + c = sky130.components.nand2_8() c.plot() """ return import_gds( @@ -5858,15 +5858,15 @@ def sky130_fd_sc_hd__nand2_8() -> gf.Component: @cell -def sky130_fd_sc_hd__nand2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2_2 fixed cell. +def nand2_2() -> gf.Component: + """Returns nand2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand2_2() + c = sky130.components.nand2_2() c.plot() """ return import_gds( @@ -5876,15 +5876,15 @@ def sky130_fd_sc_hd__nand2_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nand2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2_4 fixed cell. +def nand2_4() -> gf.Component: + """Returns nand2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand2_4() + c = sky130.components.nand2_4() c.plot() """ return import_gds( @@ -5894,15 +5894,15 @@ def sky130_fd_sc_hd__nand2_4() -> gf.Component: @cell -def sky130_fd_sc_hd__nand2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2_1 fixed cell. +def nand2_1() -> gf.Component: + """Returns nand2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand2_1() + c = sky130.components.nand2_1() c.plot() """ return import_gds( @@ -5912,15 +5912,15 @@ def sky130_fd_sc_hd__nand2_1() -> gf.Component: @cell -def sky130_fd_sc_hd__conb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__conb_1 fixed cell. +def conb_1() -> gf.Component: + """Returns conb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__conb_1() + c = sky130.components.conb_1() c.plot() """ return import_gds( @@ -5930,15 +5930,15 @@ def sky130_fd_sc_hd__conb_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a311oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a311oi_2 fixed cell. +def a311oi_2() -> gf.Component: + """Returns a311oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311oi_2() + c = sky130.components.a311oi_2() c.plot() """ return import_gds( @@ -5948,15 +5948,15 @@ def sky130_fd_sc_hd__a311oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a311oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a311oi_1 fixed cell. +def a311oi_1() -> gf.Component: + """Returns a311oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311oi_1() + c = sky130.components.a311oi_1() c.plot() """ return import_gds( @@ -5966,15 +5966,15 @@ def sky130_fd_sc_hd__a311oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a311oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a311oi_4 fixed cell. +def a311oi_4() -> gf.Component: + """Returns a311oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311oi_4() + c = sky130.components.a311oi_4() c.plot() """ return import_gds( @@ -5984,15 +5984,15 @@ def sky130_fd_sc_hd__a311oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__einvp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__einvp_2 fixed cell. +def einvp_2() -> gf.Component: + """Returns einvp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvp_2() + c = sky130.components.einvp_2() c.plot() """ return import_gds( @@ -6002,15 +6002,15 @@ def sky130_fd_sc_hd__einvp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__einvp_8() -> gf.Component: - """Returns sky130_fd_sc_hd__einvp_8 fixed cell. +def einvp_8() -> gf.Component: + """Returns einvp_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvp_8() + c = sky130.components.einvp_8() c.plot() """ return import_gds( @@ -6020,15 +6020,15 @@ def sky130_fd_sc_hd__einvp_8() -> gf.Component: @cell -def sky130_fd_sc_hd__einvp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__einvp_1 fixed cell. +def einvp_1() -> gf.Component: + """Returns einvp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvp_1() + c = sky130.components.einvp_1() c.plot() """ return import_gds( @@ -6038,15 +6038,15 @@ def sky130_fd_sc_hd__einvp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__einvp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__einvp_4 fixed cell. +def einvp_4() -> gf.Component: + """Returns einvp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__einvp_4() + c = sky130.components.einvp_4() c.plot() """ return import_gds( @@ -6056,15 +6056,15 @@ def sky130_fd_sc_hd__einvp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__or4b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or4b_4 fixed cell. +def or4b_4() -> gf.Component: + """Returns or4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or4b_4() + c = sky130.components.or4b_4() c.plot() """ return import_gds( @@ -6074,15 +6074,15 @@ def sky130_fd_sc_hd__or4b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__or4b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or4b_1 fixed cell. +def or4b_1() -> gf.Component: + """Returns or4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or4b_1() + c = sky130.components.or4b_1() c.plot() """ return import_gds( @@ -6092,15 +6092,15 @@ def sky130_fd_sc_hd__or4b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__or4b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or4b_2 fixed cell. +def or4b_2() -> gf.Component: + """Returns or4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or4b_2() + c = sky130.components.or4b_2() c.plot() """ return import_gds( @@ -6110,15 +6110,15 @@ def sky130_fd_sc_hd__or4b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4 fixed cell. +def lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: + """Returns lpflow_lsbuf_lh_isowell_tap_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() + c = sky130.components.lpflow_lsbuf_lh_isowell_tap_4() c.plot() """ return import_gds( @@ -6128,15 +6128,15 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2 fixed cell. +def lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: + """Returns lpflow_lsbuf_lh_isowell_tap_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() + c = sky130.components.lpflow_lsbuf_lh_isowell_tap_2() c.plot() """ return import_gds( @@ -6146,15 +6146,15 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1 fixed cell. +def lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: + """Returns lpflow_lsbuf_lh_isowell_tap_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() + c = sky130.components.lpflow_lsbuf_lh_isowell_tap_1() c.plot() """ return import_gds( @@ -6164,15 +6164,15 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: @cell -def sky130_fd_sc_hd__tapvgnd2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__tapvgnd2_1 fixed cell. +def tapvgnd2_1() -> gf.Component: + """Returns tapvgnd2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__tapvgnd2_1() + c = sky130.components.tapvgnd2_1() c.plot() """ return import_gds( @@ -6182,15 +6182,15 @@ def sky130_fd_sc_hd__tapvgnd2_1() -> gf.Component: @cell -def sky130_fd_sc_hd__tap_2() -> gf.Component: - """Returns sky130_fd_sc_hd__tap_2 fixed cell. +def tap_2() -> gf.Component: + """Returns tap_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__tap_2() + c = sky130.components.tap_2() c.plot() """ return import_gds( @@ -6200,15 +6200,15 @@ def sky130_fd_sc_hd__tap_2() -> gf.Component: @cell -def sky130_fd_sc_hd__tap_1() -> gf.Component: - """Returns sky130_fd_sc_hd__tap_1 fixed cell. +def tap_1() -> gf.Component: + """Returns tap_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__tap_1() + c = sky130.components.tap_1() c.plot() """ return import_gds( @@ -6218,15 +6218,15 @@ def sky130_fd_sc_hd__tap_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o22ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o22ai_2 fixed cell. +def o22ai_2() -> gf.Component: + """Returns o22ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o22ai_2() + c = sky130.components.o22ai_2() c.plot() """ return import_gds( @@ -6236,15 +6236,15 @@ def sky130_fd_sc_hd__o22ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o22ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o22ai_4 fixed cell. +def o22ai_4() -> gf.Component: + """Returns o22ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o22ai_4() + c = sky130.components.o22ai_4() c.plot() """ return import_gds( @@ -6254,15 +6254,15 @@ def sky130_fd_sc_hd__o22ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o22ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o22ai_1 fixed cell. +def o22ai_1() -> gf.Component: + """Returns o22ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o22ai_1() + c = sky130.components.o22ai_1() c.plot() """ return import_gds( @@ -6272,15 +6272,15 @@ def sky130_fd_sc_hd__o22ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dlymetal6s4s_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlymetal6s4s_1 fixed cell. +def dlymetal6s4s_1() -> gf.Component: + """Returns dlymetal6s4s_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlymetal6s4s_1() + c = sky130.components.dlymetal6s4s_1() c.plot() """ return import_gds( @@ -6290,15 +6290,15 @@ def sky130_fd_sc_hd__dlymetal6s4s_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o31ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o31ai_1 fixed cell. +def o31ai_1() -> gf.Component: + """Returns o31ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o31ai_1() + c = sky130.components.o31ai_1() c.plot() """ return import_gds( @@ -6308,15 +6308,15 @@ def sky130_fd_sc_hd__o31ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o31ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o31ai_2 fixed cell. +def o31ai_2() -> gf.Component: + """Returns o31ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o31ai_2() + c = sky130.components.o31ai_2() c.plot() """ return import_gds( @@ -6326,15 +6326,15 @@ def sky130_fd_sc_hd__o31ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o31ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o31ai_4 fixed cell. +def o31ai_4() -> gf.Component: + """Returns o31ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o31ai_4() + c = sky130.components.o31ai_4() c.plot() """ return import_gds( @@ -6344,15 +6344,15 @@ def sky130_fd_sc_hd__o31ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a22oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a22oi_2 fixed cell. +def a22oi_2() -> gf.Component: + """Returns a22oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22oi_2() + c = sky130.components.a22oi_2() c.plot() """ return import_gds( @@ -6362,15 +6362,15 @@ def sky130_fd_sc_hd__a22oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a22oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a22oi_1 fixed cell. +def a22oi_1() -> gf.Component: + """Returns a22oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22oi_1() + c = sky130.components.a22oi_1() c.plot() """ return import_gds( @@ -6380,15 +6380,15 @@ def sky130_fd_sc_hd__a22oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a22oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a22oi_4 fixed cell. +def a22oi_4() -> gf.Component: + """Returns a22oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22oi_4() + c = sky130.components.a22oi_4() c.plot() """ return import_gds( @@ -6398,15 +6398,15 @@ def sky130_fd_sc_hd__a22oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a21o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a21o_4 fixed cell. +def a21o_4() -> gf.Component: + """Returns a21o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21o_4() + c = sky130.components.a21o_4() c.plot() """ return import_gds( @@ -6416,15 +6416,15 @@ def sky130_fd_sc_hd__a21o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a21o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a21o_2 fixed cell. +def a21o_2() -> gf.Component: + """Returns a21o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21o_2() + c = sky130.components.a21o_2() c.plot() """ return import_gds( @@ -6434,15 +6434,15 @@ def sky130_fd_sc_hd__a21o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a21o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a21o_1 fixed cell. +def a21o_1() -> gf.Component: + """Returns a21o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21o_1() + c = sky130.components.a21o_1() c.plot() """ return import_gds( @@ -6452,15 +6452,15 @@ def sky130_fd_sc_hd__a21o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__mux2i_4() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2i_4 fixed cell. +def mux2i_4() -> gf.Component: + """Returns mux2i_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2i_4() + c = sky130.components.mux2i_4() c.plot() """ return import_gds( @@ -6470,15 +6470,15 @@ def sky130_fd_sc_hd__mux2i_4() -> gf.Component: @cell -def sky130_fd_sc_hd__mux2i_2() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2i_2 fixed cell. +def mux2i_2() -> gf.Component: + """Returns mux2i_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2i_2() + c = sky130.components.mux2i_2() c.plot() """ return import_gds( @@ -6488,15 +6488,15 @@ def sky130_fd_sc_hd__mux2i_2() -> gf.Component: @cell -def sky130_fd_sc_hd__mux2i_1() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2i_1 fixed cell. +def mux2i_1() -> gf.Component: + """Returns mux2i_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2i_1() + c = sky130.components.mux2i_1() c.plot() """ return import_gds( @@ -6506,15 +6506,15 @@ def sky130_fd_sc_hd__mux2i_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nor4b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4b_2 fixed cell. +def nor4b_2() -> gf.Component: + """Returns nor4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor4b_2() + c = sky130.components.nor4b_2() c.plot() """ return import_gds( @@ -6524,15 +6524,15 @@ def sky130_fd_sc_hd__nor4b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor4b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4b_1 fixed cell. +def nor4b_1() -> gf.Component: + """Returns nor4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor4b_1() + c = sky130.components.nor4b_1() c.plot() """ return import_gds( @@ -6542,15 +6542,15 @@ def sky130_fd_sc_hd__nor4b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nor4b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4b_4 fixed cell. +def nor4b_4() -> gf.Component: + """Returns nor4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor4b_4() + c = sky130.components.nor4b_4() c.plot() """ return import_gds( @@ -6560,15 +6560,15 @@ def sky130_fd_sc_hd__nor4b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a211o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a211o_4 fixed cell. +def a211o_4() -> gf.Component: + """Returns a211o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211o_4() + c = sky130.components.a211o_4() c.plot() """ return import_gds( @@ -6578,15 +6578,15 @@ def sky130_fd_sc_hd__a211o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a211o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a211o_2 fixed cell. +def a211o_2() -> gf.Component: + """Returns a211o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211o_2() + c = sky130.components.a211o_2() c.plot() """ return import_gds( @@ -6596,15 +6596,15 @@ def sky130_fd_sc_hd__a211o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a211o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a211o_1 fixed cell. +def a211o_1() -> gf.Component: + """Returns a211o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211o_1() + c = sky130.components.a211o_1() c.plot() """ return import_gds( @@ -6614,15 +6614,15 @@ def sky130_fd_sc_hd__a211o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dfxtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxtp_2 fixed cell. +def dfxtp_2() -> gf.Component: + """Returns dfxtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxtp_2() + c = sky130.components.dfxtp_2() c.plot() """ return import_gds( @@ -6632,15 +6632,15 @@ def sky130_fd_sc_hd__dfxtp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxtp_1 fixed cell. +def dfxtp_1() -> gf.Component: + """Returns dfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxtp_1() + c = sky130.components.dfxtp_1() c.plot() """ return import_gds( @@ -6650,15 +6650,15 @@ def sky130_fd_sc_hd__dfxtp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dfxtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxtp_4 fixed cell. +def dfxtp_4() -> gf.Component: + """Returns dfxtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxtp_4() + c = sky130.components.dfxtp_4() c.plot() """ return import_gds( @@ -6668,15 +6668,15 @@ def sky130_fd_sc_hd__dfxtp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dfstp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dfstp_4 fixed cell. +def dfstp_4() -> gf.Component: + """Returns dfstp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfstp_4() + c = sky130.components.dfstp_4() c.plot() """ return import_gds( @@ -6686,15 +6686,15 @@ def sky130_fd_sc_hd__dfstp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dfstp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfstp_2 fixed cell. +def dfstp_2() -> gf.Component: + """Returns dfstp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfstp_2() + c = sky130.components.dfstp_2() c.plot() """ return import_gds( @@ -6704,15 +6704,15 @@ def sky130_fd_sc_hd__dfstp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dfstp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfstp_1 fixed cell. +def dfstp_1() -> gf.Component: + """Returns dfstp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfstp_1() + c = sky130.components.dfstp_1() c.plot() """ return import_gds( @@ -6722,15 +6722,15 @@ def sky130_fd_sc_hd__dfstp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_inputiso0p_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputiso0p_1 fixed cell. +def lpflow_inputiso0p_1() -> gf.Component: + """Returns lpflow_inputiso0p_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0p_1() + c = sky130.components.lpflow_inputiso0p_1() c.plot() """ return import_gds( @@ -6740,15 +6740,15 @@ def sky130_fd_sc_hd__lpflow_inputiso0p_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o211ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o211ai_4 fixed cell. +def o211ai_4() -> gf.Component: + """Returns o211ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o211ai_4() + c = sky130.components.o211ai_4() c.plot() """ return import_gds( @@ -6758,15 +6758,15 @@ def sky130_fd_sc_hd__o211ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o211ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o211ai_2 fixed cell. +def o211ai_2() -> gf.Component: + """Returns o211ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o211ai_2() + c = sky130.components.o211ai_2() c.plot() """ return import_gds( @@ -6776,15 +6776,15 @@ def sky130_fd_sc_hd__o211ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o211ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o211ai_1 fixed cell. +def o211ai_1() -> gf.Component: + """Returns o211ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o211ai_1() + c = sky130.components.o211ai_1() c.plot() """ return import_gds( @@ -6794,15 +6794,15 @@ def sky130_fd_sc_hd__o211ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dfrbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrbp_2 fixed cell. +def dfrbp_2() -> gf.Component: + """Returns dfrbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrbp_2() + c = sky130.components.dfrbp_2() c.plot() """ return import_gds( @@ -6812,15 +6812,15 @@ def sky130_fd_sc_hd__dfrbp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dfrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrbp_1 fixed cell. +def dfrbp_1() -> gf.Component: + """Returns dfrbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrbp_1() + c = sky130.components.dfrbp_1() c.plot() """ return import_gds( @@ -6830,15 +6830,15 @@ def sky130_fd_sc_hd__dfrbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o211a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o211a_4 fixed cell. +def o211a_4() -> gf.Component: + """Returns o211a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o211a_4() + c = sky130.components.o211a_4() c.plot() """ return import_gds( @@ -6848,15 +6848,15 @@ def sky130_fd_sc_hd__o211a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o211a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o211a_1 fixed cell. +def o211a_1() -> gf.Component: + """Returns o211a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o211a_1() + c = sky130.components.o211a_1() c.plot() """ return import_gds( @@ -6866,15 +6866,15 @@ def sky130_fd_sc_hd__o211a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o211a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o211a_2 fixed cell. +def o211a_2() -> gf.Component: + """Returns o211a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o211a_2() + c = sky130.components.o211a_2() c.plot() """ return import_gds( @@ -6884,15 +6884,15 @@ def sky130_fd_sc_hd__o211a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__edfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__edfxbp_1 fixed cell. +def edfxbp_1() -> gf.Component: + """Returns edfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__edfxbp_1() + c = sky130.components.edfxbp_1() c.plot() """ return import_gds( @@ -6902,15 +6902,15 @@ def sky130_fd_sc_hd__edfxbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__or2_0() -> gf.Component: - """Returns sky130_fd_sc_hd__or2_0 fixed cell. +def or2_0() -> gf.Component: + """Returns or2_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or2_0() + c = sky130.components.or2_0() c.plot() """ return import_gds( @@ -6920,15 +6920,15 @@ def sky130_fd_sc_hd__or2_0() -> gf.Component: @cell -def sky130_fd_sc_hd__or2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or2_4 fixed cell. +def or2_4() -> gf.Component: + """Returns or2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or2_4() + c = sky130.components.or2_4() c.plot() """ return import_gds( @@ -6938,15 +6938,15 @@ def sky130_fd_sc_hd__or2_4() -> gf.Component: @cell -def sky130_fd_sc_hd__or2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or2_1 fixed cell. +def or2_1() -> gf.Component: + """Returns or2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or2_1() + c = sky130.components.or2_1() c.plot() """ return import_gds( @@ -6956,15 +6956,15 @@ def sky130_fd_sc_hd__or2_1() -> gf.Component: @cell -def sky130_fd_sc_hd__or2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or2_2 fixed cell. +def or2_2() -> gf.Component: + """Returns or2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or2_2() + c = sky130.components.or2_2() c.plot() """ return import_gds( @@ -6974,15 +6974,15 @@ def sky130_fd_sc_hd__or2_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4_2 fixed cell. +def nor4_2() -> gf.Component: + """Returns nor4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor4_2() + c = sky130.components.nor4_2() c.plot() """ return import_gds( @@ -6992,15 +6992,15 @@ def sky130_fd_sc_hd__nor4_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4_1 fixed cell. +def nor4_1() -> gf.Component: + """Returns nor4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor4_1() + c = sky130.components.nor4_1() c.plot() """ return import_gds( @@ -7010,15 +7010,15 @@ def sky130_fd_sc_hd__nor4_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nor4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4_4 fixed cell. +def nor4_4() -> gf.Component: + """Returns nor4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor4_4() + c = sky130.components.nor4_4() c.plot() """ return import_gds( @@ -7028,15 +7028,15 @@ def sky130_fd_sc_hd__nor4_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dlxtn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxtn_2 fixed cell. +def dlxtn_2() -> gf.Component: + """Returns dlxtn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxtn_2() + c = sky130.components.dlxtn_2() c.plot() """ return import_gds( @@ -7046,15 +7046,15 @@ def sky130_fd_sc_hd__dlxtn_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dlxtn_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxtn_4 fixed cell. +def dlxtn_4() -> gf.Component: + """Returns dlxtn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxtn_4() + c = sky130.components.dlxtn_4() c.plot() """ return import_gds( @@ -7064,15 +7064,15 @@ def sky130_fd_sc_hd__dlxtn_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dlxtn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxtn_1 fixed cell. +def dlxtn_1() -> gf.Component: + """Returns dlxtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxtn_1() + c = sky130.components.dlxtn_1() c.plot() """ return import_gds( @@ -7082,15 +7082,15 @@ def sky130_fd_sc_hd__dlxtn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a41o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a41o_4 fixed cell. +def a41o_4() -> gf.Component: + """Returns a41o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41o_4() + c = sky130.components.a41o_4() c.plot() """ return import_gds( @@ -7100,15 +7100,15 @@ def sky130_fd_sc_hd__a41o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a41o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a41o_2 fixed cell. +def a41o_2() -> gf.Component: + """Returns a41o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41o_2() + c = sky130.components.a41o_2() c.plot() """ return import_gds( @@ -7118,15 +7118,15 @@ def sky130_fd_sc_hd__a41o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a41o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a41o_1 fixed cell. +def a41o_1() -> gf.Component: + """Returns a41o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41o_1() + c = sky130.components.a41o_1() c.plot() """ return import_gds( @@ -7136,15 +7136,15 @@ def sky130_fd_sc_hd__a41o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a21boi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a21boi_1 fixed cell. +def a21boi_1() -> gf.Component: + """Returns a21boi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21boi_1() + c = sky130.components.a21boi_1() c.plot() """ return import_gds( @@ -7154,15 +7154,15 @@ def sky130_fd_sc_hd__a21boi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a21boi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a21boi_2 fixed cell. +def a21boi_2() -> gf.Component: + """Returns a21boi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21boi_2() + c = sky130.components.a21boi_2() c.plot() """ return import_gds( @@ -7172,15 +7172,15 @@ def sky130_fd_sc_hd__a21boi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a21boi_0() -> gf.Component: - """Returns sky130_fd_sc_hd__a21boi_0 fixed cell. +def a21boi_0() -> gf.Component: + """Returns a21boi_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21boi_0() + c = sky130.components.a21boi_0() c.plot() """ return import_gds( @@ -7190,15 +7190,15 @@ def sky130_fd_sc_hd__a21boi_0() -> gf.Component: @cell -def sky130_fd_sc_hd__a21boi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a21boi_4 fixed cell. +def a21boi_4() -> gf.Component: + """Returns a21boi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21boi_4() + c = sky130.components.a21boi_4() c.plot() """ return import_gds( @@ -7208,15 +7208,15 @@ def sky130_fd_sc_hd__a21boi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o32a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o32a_2 fixed cell. +def o32a_2() -> gf.Component: + """Returns o32a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o32a_2() + c = sky130.components.o32a_2() c.plot() """ return import_gds( @@ -7226,15 +7226,15 @@ def sky130_fd_sc_hd__o32a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o32a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o32a_1 fixed cell. +def o32a_1() -> gf.Component: + """Returns o32a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o32a_1() + c = sky130.components.o32a_1() c.plot() """ return import_gds( @@ -7244,15 +7244,15 @@ def sky130_fd_sc_hd__o32a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o32a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o32a_4 fixed cell. +def o32a_4() -> gf.Component: + """Returns o32a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o32a_4() + c = sky130.components.o32a_4() c.plot() """ return import_gds( @@ -7262,15 +7262,15 @@ def sky130_fd_sc_hd__o32a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_2 fixed cell. +def lpflow_clkbufkapwr_2() -> gf.Component: + """Returns lpflow_clkbufkapwr_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_2() + c = sky130.components.lpflow_clkbufkapwr_2() c.plot() """ return import_gds( @@ -7280,15 +7280,15 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_2() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_1 fixed cell. +def lpflow_clkbufkapwr_1() -> gf.Component: + """Returns lpflow_clkbufkapwr_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_1() + c = sky130.components.lpflow_clkbufkapwr_1() c.plot() """ return import_gds( @@ -7298,15 +7298,15 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_16() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_16 fixed cell. +def lpflow_clkbufkapwr_16() -> gf.Component: + """Returns lpflow_clkbufkapwr_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_16() + c = sky130.components.lpflow_clkbufkapwr_16() c.plot() """ return import_gds( @@ -7316,15 +7316,15 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_16() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_4 fixed cell. +def lpflow_clkbufkapwr_4() -> gf.Component: + """Returns lpflow_clkbufkapwr_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_4() + c = sky130.components.lpflow_clkbufkapwr_4() c.plot() """ return import_gds( @@ -7334,15 +7334,15 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_4() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkbufkapwr_8() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_8 fixed cell. +def lpflow_clkbufkapwr_8() -> gf.Component: + """Returns lpflow_clkbufkapwr_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_8() + c = sky130.components.lpflow_clkbufkapwr_8() c.plot() """ return import_gds( @@ -7352,15 +7352,15 @@ def sky130_fd_sc_hd__lpflow_clkbufkapwr_8() -> gf.Component: @cell -def sky130_fd_sc_hd__nor2b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2b_4 fixed cell. +def nor2b_4() -> gf.Component: + """Returns nor2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor2b_4() + c = sky130.components.nor2b_4() c.plot() """ return import_gds( @@ -7370,15 +7370,15 @@ def sky130_fd_sc_hd__nor2b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__nor2b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2b_2 fixed cell. +def nor2b_2() -> gf.Component: + """Returns nor2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor2b_2() + c = sky130.components.nor2b_2() c.plot() """ return import_gds( @@ -7388,15 +7388,15 @@ def sky130_fd_sc_hd__nor2b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor2b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2b_1 fixed cell. +def nor2b_1() -> gf.Component: + """Returns nor2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor2b_1() + c = sky130.components.nor2b_1() c.plot() """ return import_gds( @@ -7406,15 +7406,15 @@ def sky130_fd_sc_hd__nor2b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__mux2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2_2 fixed cell. +def mux2_2() -> gf.Component: + """Returns mux2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2_2() + c = sky130.components.mux2_2() c.plot() """ return import_gds( @@ -7424,15 +7424,15 @@ def sky130_fd_sc_hd__mux2_2() -> gf.Component: @cell -def sky130_fd_sc_hd__mux2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2_4 fixed cell. +def mux2_4() -> gf.Component: + """Returns mux2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2_4() + c = sky130.components.mux2_4() c.plot() """ return import_gds( @@ -7442,15 +7442,15 @@ def sky130_fd_sc_hd__mux2_4() -> gf.Component: @cell -def sky130_fd_sc_hd__mux2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2_1 fixed cell. +def mux2_1() -> gf.Component: + """Returns mux2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2_1() + c = sky130.components.mux2_1() c.plot() """ return import_gds( @@ -7460,15 +7460,15 @@ def sky130_fd_sc_hd__mux2_1() -> gf.Component: @cell -def sky130_fd_sc_hd__mux2_8() -> gf.Component: - """Returns sky130_fd_sc_hd__mux2_8 fixed cell. +def mux2_8() -> gf.Component: + """Returns mux2_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux2_8() + c = sky130.components.mux2_8() c.plot() """ return import_gds( @@ -7478,15 +7478,15 @@ def sky130_fd_sc_hd__mux2_8() -> gf.Component: @cell -def sky130_fd_sc_hd__o22a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o22a_2 fixed cell. +def o22a_2() -> gf.Component: + """Returns o22a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o22a_2() + c = sky130.components.o22a_2() c.plot() """ return import_gds( @@ -7496,15 +7496,15 @@ def sky130_fd_sc_hd__o22a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o22a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o22a_4 fixed cell. +def o22a_4() -> gf.Component: + """Returns o22a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o22a_4() + c = sky130.components.o22a_4() c.plot() """ return import_gds( @@ -7514,15 +7514,15 @@ def sky130_fd_sc_hd__o22a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o22a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o22a_1 fixed cell. +def o22a_1() -> gf.Component: + """Returns o22a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o22a_1() + c = sky130.components.o22a_1() c.plot() """ return import_gds( @@ -7532,15 +7532,15 @@ def sky130_fd_sc_hd__o22a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a22o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a22o_1 fixed cell. +def a22o_1() -> gf.Component: + """Returns a22o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22o_1() + c = sky130.components.a22o_1() c.plot() """ return import_gds( @@ -7550,15 +7550,15 @@ def sky130_fd_sc_hd__a22o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a22o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a22o_4 fixed cell. +def a22o_4() -> gf.Component: + """Returns a22o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22o_4() + c = sky130.components.a22o_4() c.plot() """ return import_gds( @@ -7568,15 +7568,15 @@ def sky130_fd_sc_hd__a22o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a22o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a22o_2 fixed cell. +def a22o_2() -> gf.Component: + """Returns a22o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a22o_2() + c = sky130.components.a22o_2() c.plot() """ return import_gds( @@ -7586,15 +7586,15 @@ def sky130_fd_sc_hd__a22o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dlygate4sd2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlygate4sd2_1 fixed cell. +def dlygate4sd2_1() -> gf.Component: + """Returns dlygate4sd2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlygate4sd2_1() + c = sky130.components.dlygate4sd2_1() c.plot() """ return import_gds( @@ -7604,15 +7604,15 @@ def sky130_fd_sc_hd__dlygate4sd2_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrtn_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtn_4 fixed cell. +def dlrtn_4() -> gf.Component: + """Returns dlrtn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtn_4() + c = sky130.components.dlrtn_4() c.plot() """ return import_gds( @@ -7622,15 +7622,15 @@ def sky130_fd_sc_hd__dlrtn_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrtn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtn_2 fixed cell. +def dlrtn_2() -> gf.Component: + """Returns dlrtn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtn_2() + c = sky130.components.dlrtn_2() c.plot() """ return import_gds( @@ -7640,15 +7640,15 @@ def sky130_fd_sc_hd__dlrtn_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrtn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtn_1 fixed cell. +def dlrtn_1() -> gf.Component: + """Returns dlrtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtn_1() + c = sky130.components.dlrtn_1() c.plot() """ return import_gds( @@ -7658,15 +7658,15 @@ def sky130_fd_sc_hd__dlrtn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__diode_2() -> gf.Component: - """Returns sky130_fd_sc_hd__diode_2 fixed cell. +def diode_2() -> gf.Component: + """Returns diode_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__diode_2() + c = sky130.components.diode_2() c.plot() """ return import_gds( @@ -7676,15 +7676,15 @@ def sky130_fd_sc_hd__diode_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o21ba_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ba_1 fixed cell. +def o21ba_1() -> gf.Component: + """Returns o21ba_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21ba_1() + c = sky130.components.o21ba_1() c.plot() """ return import_gds( @@ -7694,15 +7694,15 @@ def sky130_fd_sc_hd__o21ba_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o21ba_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ba_2 fixed cell. +def o21ba_2() -> gf.Component: + """Returns o21ba_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21ba_2() + c = sky130.components.o21ba_2() c.plot() """ return import_gds( @@ -7712,15 +7712,15 @@ def sky130_fd_sc_hd__o21ba_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o21ba_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ba_4 fixed cell. +def o21ba_4() -> gf.Component: + """Returns o21ba_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21ba_4() + c = sky130.components.o21ba_4() c.plot() """ return import_gds( @@ -7730,15 +7730,15 @@ def sky130_fd_sc_hd__o21ba_4() -> gf.Component: @cell -def sky130_fd_sc_hd__xor2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__xor2_4 fixed cell. +def xor2_4() -> gf.Component: + """Returns xor2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor2_4() + c = sky130.components.xor2_4() c.plot() """ return import_gds( @@ -7748,15 +7748,15 @@ def sky130_fd_sc_hd__xor2_4() -> gf.Component: @cell -def sky130_fd_sc_hd__xor2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__xor2_2 fixed cell. +def xor2_2() -> gf.Component: + """Returns xor2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor2_2() + c = sky130.components.xor2_2() c.plot() """ return import_gds( @@ -7766,15 +7766,15 @@ def sky130_fd_sc_hd__xor2_2() -> gf.Component: @cell -def sky130_fd_sc_hd__xor2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__xor2_1 fixed cell. +def xor2_1() -> gf.Component: + """Returns xor2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor2_1() + c = sky130.components.xor2_1() c.plot() """ return import_gds( @@ -7784,15 +7784,15 @@ def sky130_fd_sc_hd__xor2_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a41oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a41oi_2 fixed cell. +def a41oi_2() -> gf.Component: + """Returns a41oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41oi_2() + c = sky130.components.a41oi_2() c.plot() """ return import_gds( @@ -7802,15 +7802,15 @@ def sky130_fd_sc_hd__a41oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a41oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a41oi_1 fixed cell. +def a41oi_1() -> gf.Component: + """Returns a41oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41oi_1() + c = sky130.components.a41oi_1() c.plot() """ return import_gds( @@ -7820,15 +7820,15 @@ def sky130_fd_sc_hd__a41oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a41oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a41oi_4 fixed cell. +def a41oi_4() -> gf.Component: + """Returns a41oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a41oi_4() + c = sky130.components.a41oi_4() c.plot() """ return import_gds( @@ -7838,15 +7838,15 @@ def sky130_fd_sc_hd__a41oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfstp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfstp_1 fixed cell. +def sdfstp_1() -> gf.Component: + """Returns sdfstp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfstp_1() + c = sky130.components.sdfstp_1() c.plot() """ return import_gds( @@ -7856,15 +7856,15 @@ def sky130_fd_sc_hd__sdfstp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfstp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfstp_2 fixed cell. +def sdfstp_2() -> gf.Component: + """Returns sdfstp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfstp_2() + c = sky130.components.sdfstp_2() c.plot() """ return import_gds( @@ -7874,15 +7874,15 @@ def sky130_fd_sc_hd__sdfstp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfstp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfstp_4 fixed cell. +def sdfstp_4() -> gf.Component: + """Returns sdfstp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfstp_4() + c = sky130.components.sdfstp_4() c.plot() """ return import_gds( @@ -7892,15 +7892,15 @@ def sky130_fd_sc_hd__sdfstp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__and4b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and4b_2 fixed cell. +def and4b_2() -> gf.Component: + """Returns and4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4b_2() + c = sky130.components.and4b_2() c.plot() """ return import_gds( @@ -7910,15 +7910,15 @@ def sky130_fd_sc_hd__and4b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__and4b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and4b_4 fixed cell. +def and4b_4() -> gf.Component: + """Returns and4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4b_4() + c = sky130.components.and4b_4() c.plot() """ return import_gds( @@ -7928,15 +7928,15 @@ def sky130_fd_sc_hd__and4b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__and4b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and4b_1 fixed cell. +def and4b_1() -> gf.Component: + """Returns and4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4b_1() + c = sky130.components.and4b_1() c.plot() """ return import_gds( @@ -7946,15 +7946,15 @@ def sky130_fd_sc_hd__and4b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_4 fixed cell. +def lpflow_clkinvkapwr_4() -> gf.Component: + """Returns lpflow_clkinvkapwr_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_4() + c = sky130.components.lpflow_clkinvkapwr_4() c.plot() """ return import_gds( @@ -7964,15 +7964,15 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_4() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_1 fixed cell. +def lpflow_clkinvkapwr_1() -> gf.Component: + """Returns lpflow_clkinvkapwr_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_1() + c = sky130.components.lpflow_clkinvkapwr_1() c.plot() """ return import_gds( @@ -7982,15 +7982,15 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_16() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_16 fixed cell. +def lpflow_clkinvkapwr_16() -> gf.Component: + """Returns lpflow_clkinvkapwr_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_16() + c = sky130.components.lpflow_clkinvkapwr_16() c.plot() """ return import_gds( @@ -8000,15 +8000,15 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_16() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_2 fixed cell. +def lpflow_clkinvkapwr_2() -> gf.Component: + """Returns lpflow_clkinvkapwr_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_2() + c = sky130.components.lpflow_clkinvkapwr_2() c.plot() """ return import_gds( @@ -8018,15 +8018,15 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_2() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_clkinvkapwr_8() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_8 fixed cell. +def lpflow_clkinvkapwr_8() -> gf.Component: + """Returns lpflow_clkinvkapwr_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_8() + c = sky130.components.lpflow_clkinvkapwr_8() c.plot() """ return import_gds( @@ -8036,15 +8036,15 @@ def sky130_fd_sc_hd__lpflow_clkinvkapwr_8() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_6() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_6 fixed cell. +def lpflow_decapkapwr_6() -> gf.Component: + """Returns lpflow_decapkapwr_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_6() + c = sky130.components.lpflow_decapkapwr_6() c.plot() """ return import_gds( @@ -8054,15 +8054,15 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_6() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_3() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_3 fixed cell. +def lpflow_decapkapwr_3() -> gf.Component: + """Returns lpflow_decapkapwr_3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_3() + c = sky130.components.lpflow_decapkapwr_3() c.plot() """ return import_gds( @@ -8072,15 +8072,15 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_3() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_8() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_8 fixed cell. +def lpflow_decapkapwr_8() -> gf.Component: + """Returns lpflow_decapkapwr_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_8() + c = sky130.components.lpflow_decapkapwr_8() c.plot() """ return import_gds( @@ -8090,15 +8090,15 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_8() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_12() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_12 fixed cell. +def lpflow_decapkapwr_12() -> gf.Component: + """Returns lpflow_decapkapwr_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_12() + c = sky130.components.lpflow_decapkapwr_12() c.plot() """ return import_gds( @@ -8108,15 +8108,15 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_12() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_decapkapwr_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_decapkapwr_4 fixed cell. +def lpflow_decapkapwr_4() -> gf.Component: + """Returns lpflow_decapkapwr_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_4() + c = sky130.components.lpflow_decapkapwr_4() c.plot() """ return import_gds( @@ -8126,15 +8126,15 @@ def sky130_fd_sc_hd__lpflow_decapkapwr_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a221oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a221oi_4 fixed cell. +def a221oi_4() -> gf.Component: + """Returns a221oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221oi_4() + c = sky130.components.a221oi_4() c.plot() """ return import_gds( @@ -8144,15 +8144,15 @@ def sky130_fd_sc_hd__a221oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a221oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a221oi_1 fixed cell. +def a221oi_1() -> gf.Component: + """Returns a221oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221oi_1() + c = sky130.components.a221oi_1() c.plot() """ return import_gds( @@ -8162,15 +8162,15 @@ def sky130_fd_sc_hd__a221oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a221oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a221oi_2 fixed cell. +def a221oi_2() -> gf.Component: + """Returns a221oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221oi_2() + c = sky130.components.a221oi_2() c.plot() """ return import_gds( @@ -8180,15 +8180,15 @@ def sky130_fd_sc_hd__a221oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o21bai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o21bai_1 fixed cell. +def o21bai_1() -> gf.Component: + """Returns o21bai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21bai_1() + c = sky130.components.o21bai_1() c.plot() """ return import_gds( @@ -8198,15 +8198,15 @@ def sky130_fd_sc_hd__o21bai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o21bai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o21bai_2 fixed cell. +def o21bai_2() -> gf.Component: + """Returns o21bai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21bai_2() + c = sky130.components.o21bai_2() c.plot() """ return import_gds( @@ -8216,15 +8216,15 @@ def sky130_fd_sc_hd__o21bai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o21bai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o21bai_4 fixed cell. +def o21bai_4() -> gf.Component: + """Returns o21bai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21bai_4() + c = sky130.components.o21bai_4() c.plot() """ return import_gds( @@ -8234,15 +8234,15 @@ def sky130_fd_sc_hd__o21bai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dlxbn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxbn_1 fixed cell. +def dlxbn_1() -> gf.Component: + """Returns dlxbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxbn_1() + c = sky130.components.dlxbn_1() c.plot() """ return import_gds( @@ -8252,15 +8252,15 @@ def sky130_fd_sc_hd__dlxbn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dlxbn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxbn_2 fixed cell. +def dlxbn_2() -> gf.Component: + """Returns dlxbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxbn_2() + c = sky130.components.dlxbn_2() c.plot() """ return import_gds( @@ -8270,15 +8270,15 @@ def sky130_fd_sc_hd__dlxbn_2() -> gf.Component: @cell -def sky130_fd_sc_hd__edfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__edfxtp_1 fixed cell. +def edfxtp_1() -> gf.Component: + """Returns edfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__edfxtp_1() + c = sky130.components.edfxtp_1() c.plot() """ return import_gds( @@ -8288,15 +8288,15 @@ def sky130_fd_sc_hd__edfxtp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dfsbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfsbp_1 fixed cell. +def dfsbp_1() -> gf.Component: + """Returns dfsbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfsbp_1() + c = sky130.components.dfsbp_1() c.plot() """ return import_gds( @@ -8306,15 +8306,15 @@ def sky130_fd_sc_hd__dfsbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dfsbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfsbp_2 fixed cell. +def dfsbp_2() -> gf.Component: + """Returns dfsbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfsbp_2() + c = sky130.components.dfsbp_2() c.plot() """ return import_gds( @@ -8324,15 +8324,15 @@ def sky130_fd_sc_hd__dfsbp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2_1 fixed cell. +def nor2_1() -> gf.Component: + """Returns nor2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor2_1() + c = sky130.components.nor2_1() c.plot() """ return import_gds( @@ -8342,15 +8342,15 @@ def sky130_fd_sc_hd__nor2_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nor2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2_4 fixed cell. +def nor2_4() -> gf.Component: + """Returns nor2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor2_4() + c = sky130.components.nor2_4() c.plot() """ return import_gds( @@ -8360,15 +8360,15 @@ def sky130_fd_sc_hd__nor2_4() -> gf.Component: @cell -def sky130_fd_sc_hd__nor2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2_2 fixed cell. +def nor2_2() -> gf.Component: + """Returns nor2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor2_2() + c = sky130.components.nor2_2() c.plot() """ return import_gds( @@ -8378,15 +8378,15 @@ def sky130_fd_sc_hd__nor2_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor2_8() -> gf.Component: - """Returns sky130_fd_sc_hd__nor2_8 fixed cell. +def nor2_8() -> gf.Component: + """Returns nor2_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor2_8() + c = sky130.components.nor2_8() c.plot() """ return import_gds( @@ -8396,15 +8396,15 @@ def sky130_fd_sc_hd__nor2_8() -> gf.Component: @cell -def sky130_fd_sc_hd__dfrtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrtp_4 fixed cell. +def dfrtp_4() -> gf.Component: + """Returns dfrtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrtp_4() + c = sky130.components.dfrtp_4() c.plot() """ return import_gds( @@ -8414,15 +8414,15 @@ def sky130_fd_sc_hd__dfrtp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dfrtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrtp_2 fixed cell. +def dfrtp_2() -> gf.Component: + """Returns dfrtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrtp_2() + c = sky130.components.dfrtp_2() c.plot() """ return import_gds( @@ -8432,15 +8432,15 @@ def sky130_fd_sc_hd__dfrtp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dfrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrtp_1 fixed cell. +def dfrtp_1() -> gf.Component: + """Returns dfrtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrtp_1() + c = sky130.components.dfrtp_1() c.plot() """ return import_gds( @@ -8450,15 +8450,15 @@ def sky130_fd_sc_hd__dfrtp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__and4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and4bb_4 fixed cell. +def and4bb_4() -> gf.Component: + """Returns and4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4bb_4() + c = sky130.components.and4bb_4() c.plot() """ return import_gds( @@ -8468,15 +8468,15 @@ def sky130_fd_sc_hd__and4bb_4() -> gf.Component: @cell -def sky130_fd_sc_hd__and4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and4bb_2 fixed cell. +def and4bb_2() -> gf.Component: + """Returns and4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4bb_2() + c = sky130.components.and4bb_2() c.plot() """ return import_gds( @@ -8486,15 +8486,15 @@ def sky130_fd_sc_hd__and4bb_2() -> gf.Component: @cell -def sky130_fd_sc_hd__and4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and4bb_1 fixed cell. +def and4bb_1() -> gf.Component: + """Returns and4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4bb_1() + c = sky130.components.and4bb_1() c.plot() """ return import_gds( @@ -8504,15 +8504,15 @@ def sky130_fd_sc_hd__and4bb_1() -> gf.Component: @cell -def sky130_fd_sc_hd__or3b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or3b_4 fixed cell. +def or3b_4() -> gf.Component: + """Returns or3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or3b_4() + c = sky130.components.or3b_4() c.plot() """ return import_gds( @@ -8522,15 +8522,15 @@ def sky130_fd_sc_hd__or3b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__or3b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or3b_1 fixed cell. +def or3b_1() -> gf.Component: + """Returns or3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or3b_1() + c = sky130.components.or3b_1() c.plot() """ return import_gds( @@ -8540,15 +8540,15 @@ def sky130_fd_sc_hd__or3b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__or3b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or3b_2 fixed cell. +def or3b_2() -> gf.Component: + """Returns or3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or3b_2() + c = sky130.components.or3b_2() c.plot() """ return import_gds( @@ -8558,15 +8558,15 @@ def sky130_fd_sc_hd__or3b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o311a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o311a_2 fixed cell. +def o311a_2() -> gf.Component: + """Returns o311a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o311a_2() + c = sky130.components.o311a_2() c.plot() """ return import_gds( @@ -8576,15 +8576,15 @@ def sky130_fd_sc_hd__o311a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o311a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o311a_4 fixed cell. +def o311a_4() -> gf.Component: + """Returns o311a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o311a_4() + c = sky130.components.o311a_4() c.plot() """ return import_gds( @@ -8594,15 +8594,15 @@ def sky130_fd_sc_hd__o311a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o311a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o311a_1 fixed cell. +def o311a_1() -> gf.Component: + """Returns o311a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o311a_1() + c = sky130.components.o311a_1() c.plot() """ return import_gds( @@ -8612,15 +8612,15 @@ def sky130_fd_sc_hd__o311a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a21oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a21oi_1 fixed cell. +def a21oi_1() -> gf.Component: + """Returns a21oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21oi_1() + c = sky130.components.a21oi_1() c.plot() """ return import_gds( @@ -8630,15 +8630,15 @@ def sky130_fd_sc_hd__a21oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a21oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a21oi_2 fixed cell. +def a21oi_2() -> gf.Component: + """Returns a21oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21oi_2() + c = sky130.components.a21oi_2() c.plot() """ return import_gds( @@ -8648,15 +8648,15 @@ def sky130_fd_sc_hd__a21oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a21oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a21oi_4 fixed cell. +def a21oi_4() -> gf.Component: + """Returns a21oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21oi_4() + c = sky130.components.a21oi_4() c.plot() """ return import_gds( @@ -8666,15 +8666,15 @@ def sky130_fd_sc_hd__a21oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o221ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o221ai_4 fixed cell. +def o221ai_4() -> gf.Component: + """Returns o221ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o221ai_4() + c = sky130.components.o221ai_4() c.plot() """ return import_gds( @@ -8684,15 +8684,15 @@ def sky130_fd_sc_hd__o221ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o221ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o221ai_2 fixed cell. +def o221ai_2() -> gf.Component: + """Returns o221ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o221ai_2() + c = sky130.components.o221ai_2() c.plot() """ return import_gds( @@ -8702,15 +8702,15 @@ def sky130_fd_sc_hd__o221ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o221ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o221ai_1 fixed cell. +def o221ai_1() -> gf.Component: + """Returns o221ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o221ai_1() + c = sky130.components.o221ai_1() c.plot() """ return import_gds( @@ -8720,15 +8720,15 @@ def sky130_fd_sc_hd__o221ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_inputiso0n_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputiso0n_1 fixed cell. +def lpflow_inputiso0n_1() -> gf.Component: + """Returns lpflow_inputiso0n_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0n_1() + c = sky130.components.lpflow_inputiso0n_1() c.plot() """ return import_gds( @@ -8738,15 +8738,15 @@ def sky130_fd_sc_hd__lpflow_inputiso0n_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_inputiso1n_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputiso1n_1 fixed cell. +def lpflow_inputiso1n_1() -> gf.Component: + """Returns lpflow_inputiso1n_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1n_1() + c = sky130.components.lpflow_inputiso1n_1() c.plot() """ return import_gds( @@ -8756,15 +8756,15 @@ def sky130_fd_sc_hd__lpflow_inputiso1n_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nand4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4bb_2 fixed cell. +def nand4bb_2() -> gf.Component: + """Returns nand4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand4bb_2() + c = sky130.components.nand4bb_2() c.plot() """ return import_gds( @@ -8774,15 +8774,15 @@ def sky130_fd_sc_hd__nand4bb_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nand4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4bb_4 fixed cell. +def nand4bb_4() -> gf.Component: + """Returns nand4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand4bb_4() + c = sky130.components.nand4bb_4() c.plot() """ return import_gds( @@ -8792,15 +8792,15 @@ def sky130_fd_sc_hd__nand4bb_4() -> gf.Component: @cell -def sky130_fd_sc_hd__nand4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4bb_1 fixed cell. +def nand4bb_1() -> gf.Component: + """Returns nand4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand4bb_1() + c = sky130.components.nand4bb_1() c.plot() """ return import_gds( @@ -8810,15 +8810,15 @@ def sky130_fd_sc_hd__nand4bb_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_inputisolatch_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputisolatch_1 fixed cell. +def lpflow_inputisolatch_1() -> gf.Component: + """Returns lpflow_inputisolatch_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputisolatch_1() + c = sky130.components.lpflow_inputisolatch_1() c.plot() """ return import_gds( @@ -8828,15 +8828,15 @@ def sky130_fd_sc_hd__lpflow_inputisolatch_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nand3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3_1 fixed cell. +def nand3_1() -> gf.Component: + """Returns nand3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand3_1() + c = sky130.components.nand3_1() c.plot() """ return import_gds( @@ -8846,15 +8846,15 @@ def sky130_fd_sc_hd__nand3_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nand3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3_4 fixed cell. +def nand3_4() -> gf.Component: + """Returns nand3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand3_4() + c = sky130.components.nand3_4() c.plot() """ return import_gds( @@ -8864,15 +8864,15 @@ def sky130_fd_sc_hd__nand3_4() -> gf.Component: @cell -def sky130_fd_sc_hd__nand3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3_2 fixed cell. +def nand3_2() -> gf.Component: + """Returns nand3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand3_2() + c = sky130.components.nand3_2() c.plot() """ return import_gds( @@ -8882,15 +8882,15 @@ def sky130_fd_sc_hd__nand3_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a2bb2oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2oi_1 fixed cell. +def a2bb2oi_1() -> gf.Component: + """Returns a2bb2oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2oi_1() + c = sky130.components.a2bb2oi_1() c.plot() """ return import_gds( @@ -8900,15 +8900,15 @@ def sky130_fd_sc_hd__a2bb2oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a2bb2oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2oi_4 fixed cell. +def a2bb2oi_4() -> gf.Component: + """Returns a2bb2oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2oi_4() + c = sky130.components.a2bb2oi_4() c.plot() """ return import_gds( @@ -8918,15 +8918,15 @@ def sky130_fd_sc_hd__a2bb2oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a2bb2oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2oi_2 fixed cell. +def a2bb2oi_2() -> gf.Component: + """Returns a2bb2oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2oi_2() + c = sky130.components.a2bb2oi_2() c.plot() """ return import_gds( @@ -8936,15 +8936,15 @@ def sky130_fd_sc_hd__a2bb2oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfbbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfbbp_1 fixed cell. +def sdfbbp_1() -> gf.Component: + """Returns sdfbbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfbbp_1() + c = sky130.components.sdfbbp_1() c.plot() """ return import_gds( @@ -8954,15 +8954,15 @@ def sky130_fd_sc_hd__sdfbbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sedfxtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxtp_4 fixed cell. +def sedfxtp_4() -> gf.Component: + """Returns sedfxtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sedfxtp_4() + c = sky130.components.sedfxtp_4() c.plot() """ return import_gds( @@ -8972,15 +8972,15 @@ def sky130_fd_sc_hd__sedfxtp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__sedfxtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxtp_2 fixed cell. +def sedfxtp_2() -> gf.Component: + """Returns sedfxtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sedfxtp_2() + c = sky130.components.sedfxtp_2() c.plot() """ return import_gds( @@ -8990,15 +8990,15 @@ def sky130_fd_sc_hd__sedfxtp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__sedfxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxtp_1 fixed cell. +def sedfxtp_1() -> gf.Component: + """Returns sedfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sedfxtp_1() + c = sky130.components.sedfxtp_1() c.plot() """ return import_gds( @@ -9008,15 +9008,15 @@ def sky130_fd_sc_hd__sedfxtp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nor4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4bb_2 fixed cell. +def nor4bb_2() -> gf.Component: + """Returns nor4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor4bb_2() + c = sky130.components.nor4bb_2() c.plot() """ return import_gds( @@ -9026,15 +9026,15 @@ def sky130_fd_sc_hd__nor4bb_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4bb_1 fixed cell. +def nor4bb_1() -> gf.Component: + """Returns nor4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor4bb_1() + c = sky130.components.nor4bb_1() c.plot() """ return import_gds( @@ -9044,15 +9044,15 @@ def sky130_fd_sc_hd__nor4bb_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nor4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor4bb_4 fixed cell. +def nor4bb_4() -> gf.Component: + """Returns nor4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor4bb_4() + c = sky130.components.nor4bb_4() c.plot() """ return import_gds( @@ -9062,15 +9062,15 @@ def sky130_fd_sc_hd__nor4bb_4() -> gf.Component: @cell -def sky130_fd_sc_hd__buf_8() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_8 fixed cell. +def buf_8() -> gf.Component: + """Returns buf_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_8() + c = sky130.components.buf_8() c.plot() """ return import_gds( @@ -9080,15 +9080,15 @@ def sky130_fd_sc_hd__buf_8() -> gf.Component: @cell -def sky130_fd_sc_hd__buf_2() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_2 fixed cell. +def buf_2() -> gf.Component: + """Returns buf_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_2() + c = sky130.components.buf_2() c.plot() """ return import_gds( @@ -9098,15 +9098,15 @@ def sky130_fd_sc_hd__buf_2() -> gf.Component: @cell -def sky130_fd_sc_hd__buf_6() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_6 fixed cell. +def buf_6() -> gf.Component: + """Returns buf_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_6() + c = sky130.components.buf_6() c.plot() """ return import_gds( @@ -9116,15 +9116,15 @@ def sky130_fd_sc_hd__buf_6() -> gf.Component: @cell -def sky130_fd_sc_hd__buf_16() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_16 fixed cell. +def buf_16() -> gf.Component: + """Returns buf_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_16() + c = sky130.components.buf_16() c.plot() """ return import_gds( @@ -9134,15 +9134,15 @@ def sky130_fd_sc_hd__buf_16() -> gf.Component: @cell -def sky130_fd_sc_hd__buf_1() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_1 fixed cell. +def buf_1() -> gf.Component: + """Returns buf_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_1() + c = sky130.components.buf_1() c.plot() """ return import_gds( @@ -9152,15 +9152,15 @@ def sky130_fd_sc_hd__buf_1() -> gf.Component: @cell -def sky130_fd_sc_hd__buf_4() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_4 fixed cell. +def buf_4() -> gf.Component: + """Returns buf_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_4() + c = sky130.components.buf_4() c.plot() """ return import_gds( @@ -9170,15 +9170,15 @@ def sky130_fd_sc_hd__buf_4() -> gf.Component: @cell -def sky130_fd_sc_hd__buf_12() -> gf.Component: - """Returns sky130_fd_sc_hd__buf_12 fixed cell. +def buf_12() -> gf.Component: + """Returns buf_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__buf_12() + c = sky130.components.buf_12() c.plot() """ return import_gds( @@ -9188,15 +9188,15 @@ def sky130_fd_sc_hd__buf_12() -> gf.Component: @cell -def sky130_fd_sc_hd__or2b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or2b_1 fixed cell. +def or2b_1() -> gf.Component: + """Returns or2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or2b_1() + c = sky130.components.or2b_1() c.plot() """ return import_gds( @@ -9206,15 +9206,15 @@ def sky130_fd_sc_hd__or2b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__or2b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or2b_2 fixed cell. +def or2b_2() -> gf.Component: + """Returns or2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or2b_2() + c = sky130.components.or2b_2() c.plot() """ return import_gds( @@ -9224,15 +9224,15 @@ def sky130_fd_sc_hd__or2b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__or2b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or2b_4 fixed cell. +def or2b_4() -> gf.Component: + """Returns or2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or2b_4() + c = sky130.components.or2b_4() c.plot() """ return import_gds( @@ -9242,15 +9242,15 @@ def sky130_fd_sc_hd__or2b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4 fixed cell. +def lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: + """Returns lpflow_lsbuf_lh_hl_isowell_tap_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() + c = sky130.components.lpflow_lsbuf_lh_hl_isowell_tap_4() c.plot() """ return import_gds( @@ -9260,15 +9260,15 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1 fixed cell. +def lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: + """Returns lpflow_lsbuf_lh_hl_isowell_tap_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() + c = sky130.components.lpflow_lsbuf_lh_hl_isowell_tap_1() c.plot() """ return import_gds( @@ -9278,15 +9278,15 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2 fixed cell. +def lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: + """Returns lpflow_lsbuf_lh_hl_isowell_tap_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() + c = sky130.components.lpflow_lsbuf_lh_hl_isowell_tap_2() c.plot() """ return import_gds( @@ -9296,15 +9296,15 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: @cell -def sky130_fd_sc_hd__and2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and2_1 fixed cell. +def and2_1() -> gf.Component: + """Returns and2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2_1() + c = sky130.components.and2_1() c.plot() """ return import_gds( @@ -9314,15 +9314,15 @@ def sky130_fd_sc_hd__and2_1() -> gf.Component: @cell -def sky130_fd_sc_hd__and2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and2_2 fixed cell. +def and2_2() -> gf.Component: + """Returns and2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2_2() + c = sky130.components.and2_2() c.plot() """ return import_gds( @@ -9332,15 +9332,15 @@ def sky130_fd_sc_hd__and2_2() -> gf.Component: @cell -def sky130_fd_sc_hd__and2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and2_4 fixed cell. +def and2_4() -> gf.Component: + """Returns and2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2_4() + c = sky130.components.and2_4() c.plot() """ return import_gds( @@ -9350,15 +9350,15 @@ def sky130_fd_sc_hd__and2_4() -> gf.Component: @cell -def sky130_fd_sc_hd__and2_0() -> gf.Component: - """Returns sky130_fd_sc_hd__and2_0 fixed cell. +def and2_0() -> gf.Component: + """Returns and2_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2_0() + c = sky130.components.and2_0() c.plot() """ return import_gds( @@ -9368,15 +9368,15 @@ def sky130_fd_sc_hd__and2_0() -> gf.Component: @cell -def sky130_fd_sc_hd__and3b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and3b_1 fixed cell. +def and3b_1() -> gf.Component: + """Returns and3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3b_1() + c = sky130.components.and3b_1() c.plot() """ return import_gds( @@ -9386,15 +9386,15 @@ def sky130_fd_sc_hd__and3b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__and3b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and3b_2 fixed cell. +def and3b_2() -> gf.Component: + """Returns and3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3b_2() + c = sky130.components.and3b_2() c.plot() """ return import_gds( @@ -9404,15 +9404,15 @@ def sky130_fd_sc_hd__and3b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__and3b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and3b_4 fixed cell. +def and3b_4() -> gf.Component: + """Returns and3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3b_4() + c = sky130.components.and3b_4() c.plot() """ return import_gds( @@ -9422,15 +9422,15 @@ def sky130_fd_sc_hd__and3b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a32o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a32o_1 fixed cell. +def a32o_1() -> gf.Component: + """Returns a32o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32o_1() + c = sky130.components.a32o_1() c.plot() """ return import_gds( @@ -9440,15 +9440,15 @@ def sky130_fd_sc_hd__a32o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a32o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a32o_4 fixed cell. +def a32o_4() -> gf.Component: + """Returns a32o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32o_4() + c = sky130.components.a32o_4() c.plot() """ return import_gds( @@ -9458,15 +9458,15 @@ def sky130_fd_sc_hd__a32o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a32o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a32o_2 fixed cell. +def a32o_2() -> gf.Component: + """Returns a32o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32o_2() + c = sky130.components.a32o_2() c.plot() """ return import_gds( @@ -9476,15 +9476,15 @@ def sky130_fd_sc_hd__a32o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nand4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4_4 fixed cell. +def nand4_4() -> gf.Component: + """Returns nand4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand4_4() + c = sky130.components.nand4_4() c.plot() """ return import_gds( @@ -9494,15 +9494,15 @@ def sky130_fd_sc_hd__nand4_4() -> gf.Component: @cell -def sky130_fd_sc_hd__nand4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4_1 fixed cell. +def nand4_1() -> gf.Component: + """Returns nand4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand4_1() + c = sky130.components.nand4_1() c.plot() """ return import_gds( @@ -9512,15 +9512,15 @@ def sky130_fd_sc_hd__nand4_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nand4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4_2 fixed cell. +def nand4_2() -> gf.Component: + """Returns nand4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand4_2() + c = sky130.components.nand4_2() c.plot() """ return import_gds( @@ -9530,15 +9530,15 @@ def sky130_fd_sc_hd__nand4_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nand2b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2b_1 fixed cell. +def nand2b_1() -> gf.Component: + """Returns nand2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand2b_1() + c = sky130.components.nand2b_1() c.plot() """ return import_gds( @@ -9548,15 +9548,15 @@ def sky130_fd_sc_hd__nand2b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nand2b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2b_2 fixed cell. +def nand2b_2() -> gf.Component: + """Returns nand2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand2b_2() + c = sky130.components.nand2b_2() c.plot() """ return import_gds( @@ -9566,15 +9566,15 @@ def sky130_fd_sc_hd__nand2b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nand2b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand2b_4 fixed cell. +def nand2b_4() -> gf.Component: + """Returns nand2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand2b_4() + c = sky130.components.nand2b_4() c.plot() """ return import_gds( @@ -9584,15 +9584,15 @@ def sky130_fd_sc_hd__nand2b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_8() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_8 fixed cell. +def lpflow_isobufsrc_8() -> gf.Component: + """Returns lpflow_isobufsrc_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_8() + c = sky130.components.lpflow_isobufsrc_8() c.plot() """ return import_gds( @@ -9602,15 +9602,15 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_8() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_4 fixed cell. +def lpflow_isobufsrc_4() -> gf.Component: + """Returns lpflow_isobufsrc_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_4() + c = sky130.components.lpflow_isobufsrc_4() c.plot() """ return import_gds( @@ -9620,15 +9620,15 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_4() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_2() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_2 fixed cell. +def lpflow_isobufsrc_2() -> gf.Component: + """Returns lpflow_isobufsrc_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_2() + c = sky130.components.lpflow_isobufsrc_2() c.plot() """ return import_gds( @@ -9638,15 +9638,15 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_2() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_16() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_16 fixed cell. +def lpflow_isobufsrc_16() -> gf.Component: + """Returns lpflow_isobufsrc_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_16() + c = sky130.components.lpflow_isobufsrc_16() c.plot() """ return import_gds( @@ -9656,15 +9656,15 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_16() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_isobufsrc_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrc_1 fixed cell. +def lpflow_isobufsrc_1() -> gf.Component: + """Returns lpflow_isobufsrc_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_1() + c = sky130.components.lpflow_isobufsrc_1() c.plot() """ return import_gds( @@ -9674,15 +9674,15 @@ def sky130_fd_sc_hd__lpflow_isobufsrc_1() -> gf.Component: @cell -def sky130_fd_sc_hd__and3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and3_4 fixed cell. +def and3_4() -> gf.Component: + """Returns and3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3_4() + c = sky130.components.and3_4() c.plot() """ return import_gds( @@ -9692,15 +9692,15 @@ def sky130_fd_sc_hd__and3_4() -> gf.Component: @cell -def sky130_fd_sc_hd__and3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and3_1 fixed cell. +def and3_1() -> gf.Component: + """Returns and3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3_1() + c = sky130.components.and3_1() c.plot() """ return import_gds( @@ -9710,15 +9710,15 @@ def sky130_fd_sc_hd__and3_1() -> gf.Component: @cell -def sky130_fd_sc_hd__and3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and3_2 fixed cell. +def and3_2() -> gf.Component: + """Returns and3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and3_2() + c = sky130.components.and3_2() c.plot() """ return import_gds( @@ -9728,15 +9728,15 @@ def sky130_fd_sc_hd__and3_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o2111a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111a_1 fixed cell. +def o2111a_1() -> gf.Component: + """Returns o2111a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2111a_1() + c = sky130.components.o2111a_1() c.plot() """ return import_gds( @@ -9746,15 +9746,15 @@ def sky130_fd_sc_hd__o2111a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o2111a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111a_4 fixed cell. +def o2111a_4() -> gf.Component: + """Returns o2111a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2111a_4() + c = sky130.components.o2111a_4() c.plot() """ return import_gds( @@ -9764,15 +9764,15 @@ def sky130_fd_sc_hd__o2111a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o2111a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o2111a_2 fixed cell. +def o2111a_2() -> gf.Component: + """Returns o2111a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2111a_2() + c = sky130.components.o2111a_2() c.plot() """ return import_gds( @@ -9782,15 +9782,15 @@ def sky130_fd_sc_hd__o2111a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a311o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a311o_4 fixed cell. +def a311o_4() -> gf.Component: + """Returns a311o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311o_4() + c = sky130.components.a311o_4() c.plot() """ return import_gds( @@ -9800,15 +9800,15 @@ def sky130_fd_sc_hd__a311o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a311o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a311o_2 fixed cell. +def a311o_2() -> gf.Component: + """Returns a311o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311o_2() + c = sky130.components.a311o_2() c.plot() """ return import_gds( @@ -9818,15 +9818,15 @@ def sky130_fd_sc_hd__a311o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a311o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a311o_1 fixed cell. +def a311o_1() -> gf.Component: + """Returns a311o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a311o_1() + c = sky130.components.a311o_1() c.plot() """ return import_gds( @@ -9836,15 +9836,15 @@ def sky130_fd_sc_hd__a311o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__fa_4() -> gf.Component: - """Returns sky130_fd_sc_hd__fa_4 fixed cell. +def fa_4() -> gf.Component: + """Returns fa_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fa_4() + c = sky130.components.fa_4() c.plot() """ return import_gds( @@ -9854,15 +9854,15 @@ def sky130_fd_sc_hd__fa_4() -> gf.Component: @cell -def sky130_fd_sc_hd__fa_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fa_1 fixed cell. +def fa_1() -> gf.Component: + """Returns fa_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fa_1() + c = sky130.components.fa_1() c.plot() """ return import_gds( @@ -9872,15 +9872,15 @@ def sky130_fd_sc_hd__fa_1() -> gf.Component: @cell -def sky130_fd_sc_hd__fa_2() -> gf.Component: - """Returns sky130_fd_sc_hd__fa_2 fixed cell. +def fa_2() -> gf.Component: + """Returns fa_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fa_2() + c = sky130.components.fa_2() c.plot() """ return import_gds( @@ -9890,15 +9890,15 @@ def sky130_fd_sc_hd__fa_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o32ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o32ai_1 fixed cell. +def o32ai_1() -> gf.Component: + """Returns o32ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o32ai_1() + c = sky130.components.o32ai_1() c.plot() """ return import_gds( @@ -9908,15 +9908,15 @@ def sky130_fd_sc_hd__o32ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o32ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o32ai_2 fixed cell. +def o32ai_2() -> gf.Component: + """Returns o32ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o32ai_2() + c = sky130.components.o32ai_2() c.plot() """ return import_gds( @@ -9926,15 +9926,15 @@ def sky130_fd_sc_hd__o32ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o32ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o32ai_4 fixed cell. +def o32ai_4() -> gf.Component: + """Returns o32ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o32ai_4() + c = sky130.components.o32ai_4() c.plot() """ return import_gds( @@ -9944,15 +9944,15 @@ def sky130_fd_sc_hd__o32ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a2bb2o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2o_4 fixed cell. +def a2bb2o_4() -> gf.Component: + """Returns a2bb2o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2o_4() + c = sky130.components.a2bb2o_4() c.plot() """ return import_gds( @@ -9962,15 +9962,15 @@ def sky130_fd_sc_hd__a2bb2o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a2bb2o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2o_1 fixed cell. +def a2bb2o_1() -> gf.Component: + """Returns a2bb2o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2o_1() + c = sky130.components.a2bb2o_1() c.plot() """ return import_gds( @@ -9980,15 +9980,15 @@ def sky130_fd_sc_hd__a2bb2o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a2bb2o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a2bb2o_2 fixed cell. +def a2bb2o_2() -> gf.Component: + """Returns a2bb2o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2bb2o_2() + c = sky130.components.a2bb2o_2() c.plot() """ return import_gds( @@ -9998,15 +9998,15 @@ def sky130_fd_sc_hd__a2bb2o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_bleeder_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_bleeder_1 fixed cell. +def lpflow_bleeder_1() -> gf.Component: + """Returns lpflow_bleeder_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_bleeder_1() + c = sky130.components.lpflow_bleeder_1() c.plot() """ return import_gds( @@ -10016,15 +10016,15 @@ def sky130_fd_sc_hd__lpflow_bleeder_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sedfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxbp_1 fixed cell. +def sedfxbp_1() -> gf.Component: + """Returns sedfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sedfxbp_1() + c = sky130.components.sedfxbp_1() c.plot() """ return import_gds( @@ -10034,15 +10034,15 @@ def sky130_fd_sc_hd__sedfxbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sedfxbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sedfxbp_2 fixed cell. +def sedfxbp_2() -> gf.Component: + """Returns sedfxbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sedfxbp_2() + c = sky130.components.sedfxbp_2() c.plot() """ return import_gds( @@ -10052,15 +10052,15 @@ def sky130_fd_sc_hd__sedfxbp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor3b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3b_2 fixed cell. +def nor3b_2() -> gf.Component: + """Returns nor3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor3b_2() + c = sky130.components.nor3b_2() c.plot() """ return import_gds( @@ -10070,15 +10070,15 @@ def sky130_fd_sc_hd__nor3b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor3b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3b_1 fixed cell. +def nor3b_1() -> gf.Component: + """Returns nor3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor3b_1() + c = sky130.components.nor3b_1() c.plot() """ return import_gds( @@ -10088,15 +10088,15 @@ def sky130_fd_sc_hd__nor3b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nor3b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3b_4 fixed cell. +def nor3b_4() -> gf.Component: + """Returns nor3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor3b_4() + c = sky130.components.nor3b_4() c.plot() """ return import_gds( @@ -10106,15 +10106,15 @@ def sky130_fd_sc_hd__nor3b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a31oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a31oi_2 fixed cell. +def a31oi_2() -> gf.Component: + """Returns a31oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31oi_2() + c = sky130.components.a31oi_2() c.plot() """ return import_gds( @@ -10124,15 +10124,15 @@ def sky130_fd_sc_hd__a31oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a31oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a31oi_4 fixed cell. +def a31oi_4() -> gf.Component: + """Returns a31oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31oi_4() + c = sky130.components.a31oi_4() c.plot() """ return import_gds( @@ -10142,15 +10142,15 @@ def sky130_fd_sc_hd__a31oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a31oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a31oi_1 fixed cell. +def a31oi_1() -> gf.Component: + """Returns a31oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31oi_1() + c = sky130.components.a31oi_1() c.plot() """ return import_gds( @@ -10160,15 +10160,15 @@ def sky130_fd_sc_hd__a31oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__xor3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__xor3_4 fixed cell. +def xor3_4() -> gf.Component: + """Returns xor3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor3_4() + c = sky130.components.xor3_4() c.plot() """ return import_gds( @@ -10178,15 +10178,15 @@ def sky130_fd_sc_hd__xor3_4() -> gf.Component: @cell -def sky130_fd_sc_hd__xor3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__xor3_2 fixed cell. +def xor3_2() -> gf.Component: + """Returns xor3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor3_2() + c = sky130.components.xor3_2() c.plot() """ return import_gds( @@ -10196,15 +10196,15 @@ def sky130_fd_sc_hd__xor3_2() -> gf.Component: @cell -def sky130_fd_sc_hd__xor3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__xor3_1 fixed cell. +def xor3_1() -> gf.Component: + """Returns xor3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xor3_1() + c = sky130.components.xor3_1() c.plot() """ return import_gds( @@ -10214,15 +10214,15 @@ def sky130_fd_sc_hd__xor3_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o41ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o41ai_1 fixed cell. +def o41ai_1() -> gf.Component: + """Returns o41ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o41ai_1() + c = sky130.components.o41ai_1() c.plot() """ return import_gds( @@ -10232,15 +10232,15 @@ def sky130_fd_sc_hd__o41ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o41ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o41ai_4 fixed cell. +def o41ai_4() -> gf.Component: + """Returns o41ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o41ai_4() + c = sky130.components.o41ai_4() c.plot() """ return import_gds( @@ -10250,15 +10250,15 @@ def sky130_fd_sc_hd__o41ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o41ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o41ai_2 fixed cell. +def o41ai_2() -> gf.Component: + """Returns o41ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o41ai_2() + c = sky130.components.o41ai_2() c.plot() """ return import_gds( @@ -10268,15 +10268,15 @@ def sky130_fd_sc_hd__o41ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__fill_4() -> gf.Component: - """Returns sky130_fd_sc_hd__fill_4 fixed cell. +def fill_4() -> gf.Component: + """Returns fill_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fill_4() + c = sky130.components.fill_4() c.plot() """ return import_gds( @@ -10286,15 +10286,15 @@ def sky130_fd_sc_hd__fill_4() -> gf.Component: @cell -def sky130_fd_sc_hd__fill_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fill_1 fixed cell. +def fill_1() -> gf.Component: + """Returns fill_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fill_1() + c = sky130.components.fill_1() c.plot() """ return import_gds( @@ -10304,15 +10304,15 @@ def sky130_fd_sc_hd__fill_1() -> gf.Component: @cell -def sky130_fd_sc_hd__fill_8() -> gf.Component: - """Returns sky130_fd_sc_hd__fill_8 fixed cell. +def fill_8() -> gf.Component: + """Returns fill_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fill_8() + c = sky130.components.fill_8() c.plot() """ return import_gds( @@ -10322,15 +10322,15 @@ def sky130_fd_sc_hd__fill_8() -> gf.Component: @cell -def sky130_fd_sc_hd__fill_2() -> gf.Component: - """Returns sky130_fd_sc_hd__fill_2 fixed cell. +def fill_2() -> gf.Component: + """Returns fill_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fill_2() + c = sky130.components.fill_2() c.plot() """ return import_gds( @@ -10340,15 +10340,15 @@ def sky130_fd_sc_hd__fill_2() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfrtn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrtn_1 fixed cell. +def sdfrtn_1() -> gf.Component: + """Returns sdfrtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfrtn_1() + c = sky130.components.sdfrtn_1() c.plot() """ return import_gds( @@ -10358,15 +10358,15 @@ def sky130_fd_sc_hd__sdfrtn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__decap_3() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_3 fixed cell. +def decap_3() -> gf.Component: + """Returns decap_3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_3() + c = sky130.components.decap_3() c.plot() """ return import_gds( @@ -10376,15 +10376,15 @@ def sky130_fd_sc_hd__decap_3() -> gf.Component: @cell -def sky130_fd_sc_hd__decap_8() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_8 fixed cell. +def decap_8() -> gf.Component: + """Returns decap_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_8() + c = sky130.components.decap_8() c.plot() """ return import_gds( @@ -10394,15 +10394,15 @@ def sky130_fd_sc_hd__decap_8() -> gf.Component: @cell -def sky130_fd_sc_hd__decap_4() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_4 fixed cell. +def decap_4() -> gf.Component: + """Returns decap_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_4() + c = sky130.components.decap_4() c.plot() """ return import_gds( @@ -10412,15 +10412,15 @@ def sky130_fd_sc_hd__decap_4() -> gf.Component: @cell -def sky130_fd_sc_hd__decap_12() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_12 fixed cell. +def decap_12() -> gf.Component: + """Returns decap_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_12() + c = sky130.components.decap_12() c.plot() """ return import_gds( @@ -10430,15 +10430,15 @@ def sky130_fd_sc_hd__decap_12() -> gf.Component: @cell -def sky130_fd_sc_hd__decap_6() -> gf.Component: - """Returns sky130_fd_sc_hd__decap_6 fixed cell. +def decap_6() -> gf.Component: + """Returns decap_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__decap_6() + c = sky130.components.decap_6() c.plot() """ return import_gds( @@ -10448,15 +10448,15 @@ def sky130_fd_sc_hd__decap_6() -> gf.Component: @cell -def sky130_fd_sc_hd__inv_1() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_1 fixed cell. +def inv_1() -> gf.Component: + """Returns inv_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_1() + c = sky130.components.inv_1() c.plot() """ return import_gds( @@ -10466,15 +10466,15 @@ def sky130_fd_sc_hd__inv_1() -> gf.Component: @cell -def sky130_fd_sc_hd__inv_12() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_12 fixed cell. +def inv_12() -> gf.Component: + """Returns inv_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_12() + c = sky130.components.inv_12() c.plot() """ return import_gds( @@ -10484,15 +10484,15 @@ def sky130_fd_sc_hd__inv_12() -> gf.Component: @cell -def sky130_fd_sc_hd__inv_6() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_6 fixed cell. +def inv_6() -> gf.Component: + """Returns inv_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_6() + c = sky130.components.inv_6() c.plot() """ return import_gds( @@ -10502,15 +10502,15 @@ def sky130_fd_sc_hd__inv_6() -> gf.Component: @cell -def sky130_fd_sc_hd__inv_16() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_16 fixed cell. +def inv_16() -> gf.Component: + """Returns inv_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_16() + c = sky130.components.inv_16() c.plot() """ return import_gds( @@ -10520,15 +10520,15 @@ def sky130_fd_sc_hd__inv_16() -> gf.Component: @cell -def sky130_fd_sc_hd__inv_4() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_4 fixed cell. +def inv_4() -> gf.Component: + """Returns inv_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_4() + c = sky130.components.inv_4() c.plot() """ return import_gds( @@ -10538,15 +10538,15 @@ def sky130_fd_sc_hd__inv_4() -> gf.Component: @cell -def sky130_fd_sc_hd__inv_8() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_8 fixed cell. +def inv_8() -> gf.Component: + """Returns inv_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_8() + c = sky130.components.inv_8() c.plot() """ return import_gds( @@ -10556,15 +10556,15 @@ def sky130_fd_sc_hd__inv_8() -> gf.Component: @cell -def sky130_fd_sc_hd__inv_2() -> gf.Component: - """Returns sky130_fd_sc_hd__inv_2 fixed cell. +def inv_2() -> gf.Component: + """Returns inv_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__inv_2() + c = sky130.components.inv_2() c.plot() """ return import_gds( @@ -10574,15 +10574,15 @@ def sky130_fd_sc_hd__inv_2() -> gf.Component: @cell -def sky130_fd_sc_hd__macro_sparecell() -> gf.Component: - """Returns sky130_fd_sc_hd__macro_sparecell fixed cell. +def macro_sparecell() -> gf.Component: + """Returns macro_sparecell fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__macro_sparecell() + c = sky130.components.macro_sparecell() c.plot() """ return import_gds( @@ -10592,15 +10592,15 @@ def sky130_fd_sc_hd__macro_sparecell() -> gf.Component: @cell -def sky130_fd_sc_hd__and2b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and2b_4 fixed cell. +def and2b_4() -> gf.Component: + """Returns and2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2b_4() + c = sky130.components.and2b_4() c.plot() """ return import_gds( @@ -10610,15 +10610,15 @@ def sky130_fd_sc_hd__and2b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__and2b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and2b_1 fixed cell. +def and2b_1() -> gf.Component: + """Returns and2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2b_1() + c = sky130.components.and2b_1() c.plot() """ return import_gds( @@ -10628,15 +10628,15 @@ def sky130_fd_sc_hd__and2b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__and2b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and2b_2 fixed cell. +def and2b_2() -> gf.Component: + """Returns and2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and2b_2() + c = sky130.components.and2b_2() c.plot() """ return import_gds( @@ -10646,15 +10646,15 @@ def sky130_fd_sc_hd__and2b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nand3b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3b_2 fixed cell. +def nand3b_2() -> gf.Component: + """Returns nand3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand3b_2() + c = sky130.components.nand3b_2() c.plot() """ return import_gds( @@ -10664,15 +10664,15 @@ def sky130_fd_sc_hd__nand3b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nand3b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3b_1 fixed cell. +def nand3b_1() -> gf.Component: + """Returns nand3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand3b_1() + c = sky130.components.nand3b_1() c.plot() """ return import_gds( @@ -10682,15 +10682,15 @@ def sky130_fd_sc_hd__nand3b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nand3b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand3b_4 fixed cell. +def nand3b_4() -> gf.Component: + """Returns nand3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand3b_4() + c = sky130.components.nand3b_4() c.plot() """ return import_gds( @@ -10700,15 +10700,15 @@ def sky130_fd_sc_hd__nand3b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtp_1 fixed cell. +def dlrtp_1() -> gf.Component: + """Returns dlrtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtp_1() + c = sky130.components.dlrtp_1() c.plot() """ return import_gds( @@ -10718,15 +10718,15 @@ def sky130_fd_sc_hd__dlrtp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtp_4 fixed cell. +def dlrtp_4() -> gf.Component: + """Returns dlrtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtp_4() + c = sky130.components.dlrtp_4() c.plot() """ return import_gds( @@ -10736,15 +10736,15 @@ def sky130_fd_sc_hd__dlrtp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrtp_2 fixed cell. +def dlrtp_2() -> gf.Component: + """Returns dlrtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrtp_2() + c = sky130.components.dlrtp_2() c.plot() """ return import_gds( @@ -10754,15 +10754,15 @@ def sky130_fd_sc_hd__dlrtp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dfbbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfbbp_1 fixed cell. +def dfbbp_1() -> gf.Component: + """Returns dfbbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfbbp_1() + c = sky130.components.dfbbp_1() c.plot() """ return import_gds( @@ -10772,15 +10772,15 @@ def sky130_fd_sc_hd__dfbbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__probe_p_8() -> gf.Component: - """Returns sky130_fd_sc_hd__probe_p_8 fixed cell. +def probe_p_8() -> gf.Component: + """Returns probe_p_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__probe_p_8() + c = sky130.components.probe_p_8() c.plot() """ return import_gds( @@ -10790,15 +10790,15 @@ def sky130_fd_sc_hd__probe_p_8() -> gf.Component: @cell -def sky130_fd_sc_hd__dlclkp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlclkp_1 fixed cell. +def dlclkp_1() -> gf.Component: + """Returns dlclkp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlclkp_1() + c = sky130.components.dlclkp_1() c.plot() """ return import_gds( @@ -10808,15 +10808,15 @@ def sky130_fd_sc_hd__dlclkp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dlclkp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__dlclkp_4 fixed cell. +def dlclkp_4() -> gf.Component: + """Returns dlclkp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlclkp_4() + c = sky130.components.dlclkp_4() c.plot() """ return import_gds( @@ -10826,15 +10826,15 @@ def sky130_fd_sc_hd__dlclkp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dlclkp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlclkp_2 fixed cell. +def dlclkp_2() -> gf.Component: + """Returns dlclkp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlclkp_2() + c = sky130.components.dlclkp_2() c.plot() """ return import_gds( @@ -10844,15 +10844,15 @@ def sky130_fd_sc_hd__dlclkp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__or4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or4_2 fixed cell. +def or4_2() -> gf.Component: + """Returns or4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or4_2() + c = sky130.components.or4_2() c.plot() """ return import_gds( @@ -10862,15 +10862,15 @@ def sky130_fd_sc_hd__or4_2() -> gf.Component: @cell -def sky130_fd_sc_hd__or4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or4_1 fixed cell. +def or4_1() -> gf.Component: + """Returns or4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or4_1() + c = sky130.components.or4_1() c.plot() """ return import_gds( @@ -10880,15 +10880,15 @@ def sky130_fd_sc_hd__or4_1() -> gf.Component: @cell -def sky130_fd_sc_hd__or4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or4_4 fixed cell. +def or4_4() -> gf.Component: + """Returns or4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or4_4() + c = sky130.components.or4_4() c.plot() """ return import_gds( @@ -10898,15 +10898,15 @@ def sky130_fd_sc_hd__or4_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o221a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o221a_1 fixed cell. +def o221a_1() -> gf.Component: + """Returns o221a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o221a_1() + c = sky130.components.o221a_1() c.plot() """ return import_gds( @@ -10916,15 +10916,15 @@ def sky130_fd_sc_hd__o221a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o221a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o221a_4 fixed cell. +def o221a_4() -> gf.Component: + """Returns o221a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o221a_4() + c = sky130.components.o221a_4() c.plot() """ return import_gds( @@ -10934,15 +10934,15 @@ def sky130_fd_sc_hd__o221a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o221a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o221a_2 fixed cell. +def o221a_2() -> gf.Component: + """Returns o221a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o221a_2() + c = sky130.components.o221a_2() c.plot() """ return import_gds( @@ -10952,15 +10952,15 @@ def sky130_fd_sc_hd__o221a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3_2 fixed cell. +def nor3_2() -> gf.Component: + """Returns nor3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor3_2() + c = sky130.components.nor3_2() c.plot() """ return import_gds( @@ -10970,15 +10970,15 @@ def sky130_fd_sc_hd__nor3_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nor3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3_4 fixed cell. +def nor3_4() -> gf.Component: + """Returns nor3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor3_4() + c = sky130.components.nor3_4() c.plot() """ return import_gds( @@ -10988,15 +10988,15 @@ def sky130_fd_sc_hd__nor3_4() -> gf.Component: @cell -def sky130_fd_sc_hd__nor3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nor3_1 fixed cell. +def nor3_1() -> gf.Component: + """Returns nor3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nor3_1() + c = sky130.components.nor3_1() c.plot() """ return import_gds( @@ -11006,15 +11006,15 @@ def sky130_fd_sc_hd__nor3_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dfrtn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfrtn_1 fixed cell. +def dfrtn_1() -> gf.Component: + """Returns dfrtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfrtn_1() + c = sky130.components.dfrtn_1() c.plot() """ return import_gds( @@ -11024,15 +11024,15 @@ def sky130_fd_sc_hd__dfrtn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrbp_1 fixed cell. +def sdfrbp_1() -> gf.Component: + """Returns sdfrbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfrbp_1() + c = sky130.components.sdfrbp_1() c.plot() """ return import_gds( @@ -11042,15 +11042,15 @@ def sky130_fd_sc_hd__sdfrbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfrbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrbp_2 fixed cell. +def sdfrbp_2() -> gf.Component: + """Returns sdfrbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfrbp_2() + c = sky130.components.sdfrbp_2() c.plot() """ return import_gds( @@ -11060,15 +11060,15 @@ def sky130_fd_sc_hd__sdfrbp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__clkinvlp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinvlp_4 fixed cell. +def clkinvlp_4() -> gf.Component: + """Returns clkinvlp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinvlp_4() + c = sky130.components.clkinvlp_4() c.plot() """ return import_gds( @@ -11078,15 +11078,15 @@ def sky130_fd_sc_hd__clkinvlp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__clkinvlp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkinvlp_2 fixed cell. +def clkinvlp_2() -> gf.Component: + """Returns clkinvlp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkinvlp_2() + c = sky130.components.clkinvlp_2() c.plot() """ return import_gds( @@ -11096,15 +11096,15 @@ def sky130_fd_sc_hd__clkinvlp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o41a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o41a_4 fixed cell. +def o41a_4() -> gf.Component: + """Returns o41a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o41a_4() + c = sky130.components.o41a_4() c.plot() """ return import_gds( @@ -11114,15 +11114,15 @@ def sky130_fd_sc_hd__o41a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o41a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o41a_1 fixed cell. +def o41a_1() -> gf.Component: + """Returns o41a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o41a_1() + c = sky130.components.o41a_1() c.plot() """ return import_gds( @@ -11132,15 +11132,15 @@ def sky130_fd_sc_hd__o41a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o41a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o41a_2 fixed cell. +def o41a_2() -> gf.Component: + """Returns o41a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o41a_2() + c = sky130.components.o41a_2() c.plot() """ return import_gds( @@ -11150,15 +11150,15 @@ def sky130_fd_sc_hd__o41a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o21a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o21a_1 fixed cell. +def o21a_1() -> gf.Component: + """Returns o21a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21a_1() + c = sky130.components.o21a_1() c.plot() """ return import_gds( @@ -11168,15 +11168,15 @@ def sky130_fd_sc_hd__o21a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o21a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o21a_4 fixed cell. +def o21a_4() -> gf.Component: + """Returns o21a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21a_4() + c = sky130.components.o21a_4() c.plot() """ return import_gds( @@ -11186,15 +11186,15 @@ def sky130_fd_sc_hd__o21a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o21a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o21a_2 fixed cell. +def o21a_2() -> gf.Component: + """Returns o21a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21a_2() + c = sky130.components.o21a_2() c.plot() """ return import_gds( @@ -11204,15 +11204,15 @@ def sky130_fd_sc_hd__o21a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__or3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or3_4 fixed cell. +def or3_4() -> gf.Component: + """Returns or3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or3_4() + c = sky130.components.or3_4() c.plot() """ return import_gds( @@ -11222,15 +11222,15 @@ def sky130_fd_sc_hd__or3_4() -> gf.Component: @cell -def sky130_fd_sc_hd__or3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or3_1 fixed cell. +def or3_1() -> gf.Component: + """Returns or3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or3_1() + c = sky130.components.or3_1() c.plot() """ return import_gds( @@ -11240,15 +11240,15 @@ def sky130_fd_sc_hd__or3_1() -> gf.Component: @cell -def sky130_fd_sc_hd__or3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or3_2 fixed cell. +def or3_2() -> gf.Component: + """Returns or3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or3_2() + c = sky130.components.or3_2() c.plot() """ return import_gds( @@ -11258,15 +11258,15 @@ def sky130_fd_sc_hd__or3_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dlxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxbp_1 fixed cell. +def dlxbp_1() -> gf.Component: + """Returns dlxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxbp_1() + c = sky130.components.dlxbp_1() c.plot() """ return import_gds( @@ -11276,15 +11276,15 @@ def sky130_fd_sc_hd__dlxbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__bufbuf_16() -> gf.Component: - """Returns sky130_fd_sc_hd__bufbuf_16 fixed cell. +def bufbuf_16() -> gf.Component: + """Returns bufbuf_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__bufbuf_16() + c = sky130.components.bufbuf_16() c.plot() """ return import_gds( @@ -11294,15 +11294,15 @@ def sky130_fd_sc_hd__bufbuf_16() -> gf.Component: @cell -def sky130_fd_sc_hd__bufbuf_8() -> gf.Component: - """Returns sky130_fd_sc_hd__bufbuf_8 fixed cell. +def bufbuf_8() -> gf.Component: + """Returns bufbuf_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__bufbuf_8() + c = sky130.components.bufbuf_8() c.plot() """ return import_gds( @@ -11312,15 +11312,15 @@ def sky130_fd_sc_hd__bufbuf_8() -> gf.Component: @cell -def sky130_fd_sc_hd__clkdlybuf4s18_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s18_2 fixed cell. +def clkdlybuf4s18_2() -> gf.Component: + """Returns clkdlybuf4s18_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_2() + c = sky130.components.clkdlybuf4s18_2() c.plot() """ return import_gds( @@ -11330,15 +11330,15 @@ def sky130_fd_sc_hd__clkdlybuf4s18_2() -> gf.Component: @cell -def sky130_fd_sc_hd__clkdlybuf4s18_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s18_1 fixed cell. +def clkdlybuf4s18_1() -> gf.Component: + """Returns clkdlybuf4s18_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_1() + c = sky130.components.clkdlybuf4s18_1() c.plot() """ return import_gds( @@ -11348,15 +11348,15 @@ def sky130_fd_sc_hd__clkdlybuf4s18_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfrtp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrtp_2 fixed cell. +def sdfrtp_2() -> gf.Component: + """Returns sdfrtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfrtp_2() + c = sky130.components.sdfrtp_2() c.plot() """ return import_gds( @@ -11366,15 +11366,15 @@ def sky130_fd_sc_hd__sdfrtp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfrtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrtp_1 fixed cell. +def sdfrtp_1() -> gf.Component: + """Returns sdfrtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfrtp_1() + c = sky130.components.sdfrtp_1() c.plot() """ return import_gds( @@ -11384,15 +11384,15 @@ def sky130_fd_sc_hd__sdfrtp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfrtp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfrtp_4 fixed cell. +def sdfrtp_4() -> gf.Component: + """Returns sdfrtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfrtp_4() + c = sky130.components.sdfrtp_4() c.plot() """ return import_gds( @@ -11402,15 +11402,15 @@ def sky130_fd_sc_hd__sdfrtp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a221o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a221o_4 fixed cell. +def a221o_4() -> gf.Component: + """Returns a221o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221o_4() + c = sky130.components.a221o_4() c.plot() """ return import_gds( @@ -11420,15 +11420,15 @@ def sky130_fd_sc_hd__a221o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a221o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a221o_2 fixed cell. +def a221o_2() -> gf.Component: + """Returns a221o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221o_2() + c = sky130.components.a221o_2() c.plot() """ return import_gds( @@ -11438,15 +11438,15 @@ def sky130_fd_sc_hd__a221o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a221o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a221o_1 fixed cell. +def a221o_1() -> gf.Component: + """Returns a221o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a221o_1() + c = sky130.components.a221o_1() c.plot() """ return import_gds( @@ -11456,15 +11456,15 @@ def sky130_fd_sc_hd__a221o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a31o_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a31o_1 fixed cell. +def a31o_1() -> gf.Component: + """Returns a31o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31o_1() + c = sky130.components.a31o_1() c.plot() """ return import_gds( @@ -11474,15 +11474,15 @@ def sky130_fd_sc_hd__a31o_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a31o_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a31o_2 fixed cell. +def a31o_2() -> gf.Component: + """Returns a31o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31o_2() + c = sky130.components.a31o_2() c.plot() """ return import_gds( @@ -11492,15 +11492,15 @@ def sky130_fd_sc_hd__a31o_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a31o_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a31o_4 fixed cell. +def a31o_4() -> gf.Component: + """Returns a31o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a31o_4() + c = sky130.components.a31o_4() c.plot() """ return import_gds( @@ -11510,15 +11510,15 @@ def sky130_fd_sc_hd__a31o_4() -> gf.Component: @cell -def sky130_fd_sc_hd__fah_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fah_1 fixed cell. +def fah_1() -> gf.Component: + """Returns fah_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fah_1() + c = sky130.components.fah_1() c.plot() """ return import_gds( @@ -11528,15 +11528,15 @@ def sky130_fd_sc_hd__fah_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfbbn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfbbn_1 fixed cell. +def sdfbbn_1() -> gf.Component: + """Returns sdfbbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfbbn_1() + c = sky130.components.sdfbbn_1() c.plot() """ return import_gds( @@ -11546,15 +11546,15 @@ def sky130_fd_sc_hd__sdfbbn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfbbn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfbbn_2 fixed cell. +def sdfbbn_2() -> gf.Component: + """Returns sdfbbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfbbn_2() + c = sky130.components.sdfbbn_2() c.plot() """ return import_gds( @@ -11564,15 +11564,15 @@ def sky130_fd_sc_hd__sdfbbn_2() -> gf.Component: @cell -def sky130_fd_sc_hd__mux4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__mux4_4 fixed cell. +def mux4_4() -> gf.Component: + """Returns mux4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux4_4() + c = sky130.components.mux4_4() c.plot() """ return import_gds( @@ -11582,15 +11582,15 @@ def sky130_fd_sc_hd__mux4_4() -> gf.Component: @cell -def sky130_fd_sc_hd__mux4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__mux4_1 fixed cell. +def mux4_1() -> gf.Component: + """Returns mux4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux4_1() + c = sky130.components.mux4_1() c.plot() """ return import_gds( @@ -11600,15 +11600,15 @@ def sky130_fd_sc_hd__mux4_1() -> gf.Component: @cell -def sky130_fd_sc_hd__mux4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__mux4_2 fixed cell. +def mux4_2() -> gf.Component: + """Returns mux4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__mux4_2() + c = sky130.components.mux4_2() c.plot() """ return import_gds( @@ -11618,15 +11618,15 @@ def sky130_fd_sc_hd__mux4_2() -> gf.Component: @cell -def sky130_fd_sc_hd__xnor2_1() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor2_1 fixed cell. +def xnor2_1() -> gf.Component: + """Returns xnor2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor2_1() + c = sky130.components.xnor2_1() c.plot() """ return import_gds( @@ -11636,15 +11636,15 @@ def sky130_fd_sc_hd__xnor2_1() -> gf.Component: @cell -def sky130_fd_sc_hd__xnor2_2() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor2_2 fixed cell. +def xnor2_2() -> gf.Component: + """Returns xnor2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor2_2() + c = sky130.components.xnor2_2() c.plot() """ return import_gds( @@ -11654,15 +11654,15 @@ def sky130_fd_sc_hd__xnor2_2() -> gf.Component: @cell -def sky130_fd_sc_hd__xnor2_4() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor2_4 fixed cell. +def xnor2_4() -> gf.Component: + """Returns xnor2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor2_4() + c = sky130.components.xnor2_4() c.plot() """ return import_gds( @@ -11672,15 +11672,15 @@ def sky130_fd_sc_hd__xnor2_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dlymetal6s2s_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlymetal6s2s_1 fixed cell. +def dlymetal6s2s_1() -> gf.Component: + """Returns dlymetal6s2s_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlymetal6s2s_1() + c = sky130.components.dlymetal6s2s_1() c.plot() """ return import_gds( @@ -11690,15 +11690,15 @@ def sky130_fd_sc_hd__dlymetal6s2s_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o2bb2ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2ai_1 fixed cell. +def o2bb2ai_1() -> gf.Component: + """Returns o2bb2ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2bb2ai_1() + c = sky130.components.o2bb2ai_1() c.plot() """ return import_gds( @@ -11708,15 +11708,15 @@ def sky130_fd_sc_hd__o2bb2ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o2bb2ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2ai_4 fixed cell. +def o2bb2ai_4() -> gf.Component: + """Returns o2bb2ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2bb2ai_4() + c = sky130.components.o2bb2ai_4() c.plot() """ return import_gds( @@ -11726,15 +11726,15 @@ def sky130_fd_sc_hd__o2bb2ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o2bb2ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2ai_2 fixed cell. +def o2bb2ai_2() -> gf.Component: + """Returns o2bb2ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2bb2ai_2() + c = sky130.components.o2bb2ai_2() c.plot() """ return import_gds( @@ -11744,15 +11744,15 @@ def sky130_fd_sc_hd__o2bb2ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__and4_2() -> gf.Component: - """Returns sky130_fd_sc_hd__and4_2 fixed cell. +def and4_2() -> gf.Component: + """Returns and4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4_2() + c = sky130.components.and4_2() c.plot() """ return import_gds( @@ -11762,15 +11762,15 @@ def sky130_fd_sc_hd__and4_2() -> gf.Component: @cell -def sky130_fd_sc_hd__and4_1() -> gf.Component: - """Returns sky130_fd_sc_hd__and4_1 fixed cell. +def and4_1() -> gf.Component: + """Returns and4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4_1() + c = sky130.components.and4_1() c.plot() """ return import_gds( @@ -11780,15 +11780,15 @@ def sky130_fd_sc_hd__and4_1() -> gf.Component: @cell -def sky130_fd_sc_hd__and4_4() -> gf.Component: - """Returns sky130_fd_sc_hd__and4_4 fixed cell. +def and4_4() -> gf.Component: + """Returns and4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__and4_4() + c = sky130.components.and4_4() c.plot() """ return import_gds( @@ -11798,15 +11798,15 @@ def sky130_fd_sc_hd__and4_4() -> gf.Component: @cell -def sky130_fd_sc_hd__or4bb_1() -> gf.Component: - """Returns sky130_fd_sc_hd__or4bb_1 fixed cell. +def or4bb_1() -> gf.Component: + """Returns or4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or4bb_1() + c = sky130.components.or4bb_1() c.plot() """ return import_gds( @@ -11816,15 +11816,15 @@ def sky130_fd_sc_hd__or4bb_1() -> gf.Component: @cell -def sky130_fd_sc_hd__or4bb_4() -> gf.Component: - """Returns sky130_fd_sc_hd__or4bb_4 fixed cell. +def or4bb_4() -> gf.Component: + """Returns or4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or4bb_4() + c = sky130.components.or4bb_4() c.plot() """ return import_gds( @@ -11834,15 +11834,15 @@ def sky130_fd_sc_hd__or4bb_4() -> gf.Component: @cell -def sky130_fd_sc_hd__or4bb_2() -> gf.Component: - """Returns sky130_fd_sc_hd__or4bb_2 fixed cell. +def or4bb_2() -> gf.Component: + """Returns or4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__or4bb_2() + c = sky130.components.or4bb_2() c.plot() """ return import_gds( @@ -11852,15 +11852,15 @@ def sky130_fd_sc_hd__or4bb_2() -> gf.Component: @cell -def sky130_fd_sc_hd__tapvgnd_1() -> gf.Component: - """Returns sky130_fd_sc_hd__tapvgnd_1 fixed cell. +def tapvgnd_1() -> gf.Component: + """Returns tapvgnd_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__tapvgnd_1() + c = sky130.components.tapvgnd_1() c.plot() """ return import_gds( @@ -11870,15 +11870,15 @@ def sky130_fd_sc_hd__tapvgnd_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4 fixed cell. +def lpflow_lsbuf_lh_isowell_4() -> gf.Component: + """Returns lpflow_lsbuf_lh_isowell_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() + c = sky130.components.lpflow_lsbuf_lh_isowell_4() c.plot() """ return import_gds( @@ -11888,15 +11888,15 @@ def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a32oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a32oi_2 fixed cell. +def a32oi_2() -> gf.Component: + """Returns a32oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32oi_2() + c = sky130.components.a32oi_2() c.plot() """ return import_gds( @@ -11906,15 +11906,15 @@ def sky130_fd_sc_hd__a32oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a32oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a32oi_1 fixed cell. +def a32oi_1() -> gf.Component: + """Returns a32oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32oi_1() + c = sky130.components.a32oi_1() c.plot() """ return import_gds( @@ -11924,15 +11924,15 @@ def sky130_fd_sc_hd__a32oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a32oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a32oi_4 fixed cell. +def a32oi_4() -> gf.Component: + """Returns a32oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a32oi_4() + c = sky130.components.a32oi_4() c.plot() """ return import_gds( @@ -11942,15 +11942,15 @@ def sky130_fd_sc_hd__a32oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dfxbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxbp_2 fixed cell. +def dfxbp_2() -> gf.Component: + """Returns dfxbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxbp_2() + c = sky130.components.dfxbp_2() c.plot() """ return import_gds( @@ -11960,15 +11960,15 @@ def sky130_fd_sc_hd__dfxbp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dfxbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfxbp_1 fixed cell. +def dfxbp_1() -> gf.Component: + """Returns dfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfxbp_1() + c = sky130.components.dfxbp_1() c.plot() """ return import_gds( @@ -11978,15 +11978,15 @@ def sky130_fd_sc_hd__dfxbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_isobufsrckapwr_16 fixed cell. +def lpflow_isobufsrckapwr_16() -> gf.Component: + """Returns lpflow_isobufsrckapwr_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() + c = sky130.components.lpflow_isobufsrckapwr_16() c.plot() """ return import_gds( @@ -11996,15 +11996,15 @@ def sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() -> gf.Component: @cell -def sky130_fd_sc_hd__probec_p_8() -> gf.Component: - """Returns sky130_fd_sc_hd__probec_p_8 fixed cell. +def probec_p_8() -> gf.Component: + """Returns probec_p_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__probec_p_8() + c = sky130.components.probec_p_8() c.plot() """ return import_gds( @@ -12014,15 +12014,15 @@ def sky130_fd_sc_hd__probec_p_8() -> gf.Component: @cell -def sky130_fd_sc_hd__o21ai_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ai_2 fixed cell. +def o21ai_2() -> gf.Component: + """Returns o21ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21ai_2() + c = sky130.components.o21ai_2() c.plot() """ return import_gds( @@ -12032,15 +12032,15 @@ def sky130_fd_sc_hd__o21ai_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o21ai_0() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ai_0 fixed cell. +def o21ai_0() -> gf.Component: + """Returns o21ai_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21ai_0() + c = sky130.components.o21ai_0() c.plot() """ return import_gds( @@ -12050,15 +12050,15 @@ def sky130_fd_sc_hd__o21ai_0() -> gf.Component: @cell -def sky130_fd_sc_hd__o21ai_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ai_1 fixed cell. +def o21ai_1() -> gf.Component: + """Returns o21ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21ai_1() + c = sky130.components.o21ai_1() c.plot() """ return import_gds( @@ -12068,15 +12068,15 @@ def sky130_fd_sc_hd__o21ai_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o21ai_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o21ai_4 fixed cell. +def o21ai_4() -> gf.Component: + """Returns o21ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o21ai_4() + c = sky130.components.o21ai_4() c.plot() """ return import_gds( @@ -12086,15 +12086,15 @@ def sky130_fd_sc_hd__o21ai_4() -> gf.Component: @cell -def sky130_fd_sc_hd__ebufn_4() -> gf.Component: - """Returns sky130_fd_sc_hd__ebufn_4 fixed cell. +def ebufn_4() -> gf.Component: + """Returns ebufn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ebufn_4() + c = sky130.components.ebufn_4() c.plot() """ return import_gds( @@ -12104,15 +12104,15 @@ def sky130_fd_sc_hd__ebufn_4() -> gf.Component: @cell -def sky130_fd_sc_hd__ebufn_8() -> gf.Component: - """Returns sky130_fd_sc_hd__ebufn_8 fixed cell. +def ebufn_8() -> gf.Component: + """Returns ebufn_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ebufn_8() + c = sky130.components.ebufn_8() c.plot() """ return import_gds( @@ -12122,15 +12122,15 @@ def sky130_fd_sc_hd__ebufn_8() -> gf.Component: @cell -def sky130_fd_sc_hd__ebufn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__ebufn_1 fixed cell. +def ebufn_1() -> gf.Component: + """Returns ebufn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ebufn_1() + c = sky130.components.ebufn_1() c.plot() """ return import_gds( @@ -12140,15 +12140,15 @@ def sky130_fd_sc_hd__ebufn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__ebufn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__ebufn_2 fixed cell. +def ebufn_2() -> gf.Component: + """Returns ebufn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ebufn_2() + c = sky130.components.ebufn_2() c.plot() """ return import_gds( @@ -12158,15 +12158,15 @@ def sky130_fd_sc_hd__ebufn_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o31a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o31a_1 fixed cell. +def o31a_1() -> gf.Component: + """Returns o31a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o31a_1() + c = sky130.components.o31a_1() c.plot() """ return import_gds( @@ -12176,15 +12176,15 @@ def sky130_fd_sc_hd__o31a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o31a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o31a_4 fixed cell. +def o31a_4() -> gf.Component: + """Returns o31a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o31a_4() + c = sky130.components.o31a_4() c.plot() """ return import_gds( @@ -12194,15 +12194,15 @@ def sky130_fd_sc_hd__o31a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__o31a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o31a_2 fixed cell. +def o31a_2() -> gf.Component: + """Returns o31a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o31a_2() + c = sky130.components.o31a_2() c.plot() """ return import_gds( @@ -12212,15 +12212,15 @@ def sky130_fd_sc_hd__o31a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__maj3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__maj3_2 fixed cell. +def maj3_2() -> gf.Component: + """Returns maj3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__maj3_2() + c = sky130.components.maj3_2() c.plot() """ return import_gds( @@ -12230,15 +12230,15 @@ def sky130_fd_sc_hd__maj3_2() -> gf.Component: @cell -def sky130_fd_sc_hd__maj3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__maj3_4 fixed cell. +def maj3_4() -> gf.Component: + """Returns maj3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__maj3_4() + c = sky130.components.maj3_4() c.plot() """ return import_gds( @@ -12248,15 +12248,15 @@ def sky130_fd_sc_hd__maj3_4() -> gf.Component: @cell -def sky130_fd_sc_hd__maj3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__maj3_1 fixed cell. +def maj3_1() -> gf.Component: + """Returns maj3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__maj3_1() + c = sky130.components.maj3_1() c.plot() """ return import_gds( @@ -12266,15 +12266,15 @@ def sky130_fd_sc_hd__maj3_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfsbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfsbp_1 fixed cell. +def sdfsbp_1() -> gf.Component: + """Returns sdfsbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfsbp_1() + c = sky130.components.sdfsbp_1() c.plot() """ return import_gds( @@ -12284,15 +12284,15 @@ def sky130_fd_sc_hd__sdfsbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdfsbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdfsbp_2 fixed cell. +def sdfsbp_2() -> gf.Component: + """Returns sdfsbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdfsbp_2() + c = sky130.components.sdfsbp_2() c.plot() """ return import_gds( @@ -12302,15 +12302,15 @@ def sky130_fd_sc_hd__sdfsbp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__lpflow_inputiso1p_1() -> gf.Component: - """Returns sky130_fd_sc_hd__lpflow_inputiso1p_1 fixed cell. +def lpflow_inputiso1p_1() -> gf.Component: + """Returns lpflow_inputiso1p_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1p_1() + c = sky130.components.lpflow_inputiso1p_1() c.plot() """ return import_gds( @@ -12320,15 +12320,15 @@ def sky130_fd_sc_hd__lpflow_inputiso1p_1() -> gf.Component: @cell -def sky130_fd_sc_hd__ha_1() -> gf.Component: - """Returns sky130_fd_sc_hd__ha_1 fixed cell. +def ha_1() -> gf.Component: + """Returns ha_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ha_1() + c = sky130.components.ha_1() c.plot() """ return import_gds( @@ -12338,15 +12338,15 @@ def sky130_fd_sc_hd__ha_1() -> gf.Component: @cell -def sky130_fd_sc_hd__ha_2() -> gf.Component: - """Returns sky130_fd_sc_hd__ha_2 fixed cell. +def ha_2() -> gf.Component: + """Returns ha_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ha_2() + c = sky130.components.ha_2() c.plot() """ return import_gds( @@ -12356,15 +12356,15 @@ def sky130_fd_sc_hd__ha_2() -> gf.Component: @cell -def sky130_fd_sc_hd__ha_4() -> gf.Component: - """Returns sky130_fd_sc_hd__ha_4 fixed cell. +def ha_4() -> gf.Component: + """Returns ha_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__ha_4() + c = sky130.components.ha_4() c.plot() """ return import_gds( @@ -12374,15 +12374,15 @@ def sky130_fd_sc_hd__ha_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a2111oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111oi_2 fixed cell. +def a2111oi_2() -> gf.Component: + """Returns a2111oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111oi_2() + c = sky130.components.a2111oi_2() c.plot() """ return import_gds( @@ -12392,15 +12392,15 @@ def sky130_fd_sc_hd__a2111oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a2111oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111oi_4 fixed cell. +def a2111oi_4() -> gf.Component: + """Returns a2111oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111oi_4() + c = sky130.components.a2111oi_4() c.plot() """ return import_gds( @@ -12410,15 +12410,15 @@ def sky130_fd_sc_hd__a2111oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a2111oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111oi_1 fixed cell. +def a2111oi_1() -> gf.Component: + """Returns a2111oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111oi_1() + c = sky130.components.a2111oi_1() c.plot() """ return import_gds( @@ -12428,15 +12428,15 @@ def sky130_fd_sc_hd__a2111oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a2111oi_0() -> gf.Component: - """Returns sky130_fd_sc_hd__a2111oi_0 fixed cell. +def a2111oi_0() -> gf.Component: + """Returns a2111oi_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a2111oi_0() + c = sky130.components.a2111oi_0() c.plot() """ return import_gds( @@ -12446,15 +12446,15 @@ def sky130_fd_sc_hd__a2111oi_0() -> gf.Component: @cell -def sky130_fd_sc_hd__o2bb2a_2() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2a_2 fixed cell. +def o2bb2a_2() -> gf.Component: + """Returns o2bb2a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2bb2a_2() + c = sky130.components.o2bb2a_2() c.plot() """ return import_gds( @@ -12464,15 +12464,15 @@ def sky130_fd_sc_hd__o2bb2a_2() -> gf.Component: @cell -def sky130_fd_sc_hd__o2bb2a_1() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2a_1 fixed cell. +def o2bb2a_1() -> gf.Component: + """Returns o2bb2a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2bb2a_1() + c = sky130.components.o2bb2a_1() c.plot() """ return import_gds( @@ -12482,15 +12482,15 @@ def sky130_fd_sc_hd__o2bb2a_1() -> gf.Component: @cell -def sky130_fd_sc_hd__o2bb2a_4() -> gf.Component: - """Returns sky130_fd_sc_hd__o2bb2a_4 fixed cell. +def o2bb2a_4() -> gf.Component: + """Returns o2bb2a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__o2bb2a_4() + c = sky130.components.o2bb2a_4() c.plot() """ return import_gds( @@ -12500,15 +12500,15 @@ def sky130_fd_sc_hd__o2bb2a_4() -> gf.Component: @cell -def sky130_fd_sc_hd__dlymetal6s6s_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlymetal6s6s_1 fixed cell. +def dlymetal6s6s_1() -> gf.Component: + """Returns dlymetal6s6s_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlymetal6s6s_1() + c = sky130.components.dlymetal6s6s_1() c.plot() """ return import_gds( @@ -12518,15 +12518,15 @@ def sky130_fd_sc_hd__dlymetal6s6s_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a222oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a222oi_1 fixed cell. +def a222oi_1() -> gf.Component: + """Returns a222oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a222oi_1() + c = sky130.components.a222oi_1() c.plot() """ return import_gds( @@ -12536,15 +12536,15 @@ def sky130_fd_sc_hd__a222oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dfbbn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dfbbn_1 fixed cell. +def dfbbn_1() -> gf.Component: + """Returns dfbbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfbbn_1() + c = sky130.components.dfbbn_1() c.plot() """ return import_gds( @@ -12554,15 +12554,15 @@ def sky130_fd_sc_hd__dfbbn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dfbbn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dfbbn_2 fixed cell. +def dfbbn_2() -> gf.Component: + """Returns dfbbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dfbbn_2() + c = sky130.components.dfbbn_2() c.plot() """ return import_gds( @@ -12572,15 +12572,15 @@ def sky130_fd_sc_hd__dfbbn_2() -> gf.Component: @cell -def sky130_fd_sc_hd__fahcin_1() -> gf.Component: - """Returns sky130_fd_sc_hd__fahcin_1 fixed cell. +def fahcin_1() -> gf.Component: + """Returns fahcin_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__fahcin_1() + c = sky130.components.fahcin_1() c.plot() """ return import_gds( @@ -12590,15 +12590,15 @@ def sky130_fd_sc_hd__fahcin_1() -> gf.Component: @cell -def sky130_fd_sc_hd__sdlclkp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__sdlclkp_2 fixed cell. +def sdlclkp_2() -> gf.Component: + """Returns sdlclkp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdlclkp_2() + c = sky130.components.sdlclkp_2() c.plot() """ return import_gds( @@ -12608,15 +12608,15 @@ def sky130_fd_sc_hd__sdlclkp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__sdlclkp_4() -> gf.Component: - """Returns sky130_fd_sc_hd__sdlclkp_4 fixed cell. +def sdlclkp_4() -> gf.Component: + """Returns sdlclkp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdlclkp_4() + c = sky130.components.sdlclkp_4() c.plot() """ return import_gds( @@ -12626,15 +12626,15 @@ def sky130_fd_sc_hd__sdlclkp_4() -> gf.Component: @cell -def sky130_fd_sc_hd__sdlclkp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__sdlclkp_1 fixed cell. +def sdlclkp_1() -> gf.Component: + """Returns sdlclkp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__sdlclkp_1() + c = sky130.components.sdlclkp_1() c.plot() """ return import_gds( @@ -12644,15 +12644,15 @@ def sky130_fd_sc_hd__sdlclkp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__clkdlybuf4s50_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s50_1 fixed cell. +def clkdlybuf4s50_1() -> gf.Component: + """Returns clkdlybuf4s50_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_1() + c = sky130.components.clkdlybuf4s50_1() c.plot() """ return import_gds( @@ -12662,15 +12662,15 @@ def sky130_fd_sc_hd__clkdlybuf4s50_1() -> gf.Component: @cell -def sky130_fd_sc_hd__clkdlybuf4s50_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkdlybuf4s50_2 fixed cell. +def clkdlybuf4s50_2() -> gf.Component: + """Returns clkdlybuf4s50_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_2() + c = sky130.components.clkdlybuf4s50_2() c.plot() """ return import_gds( @@ -12680,15 +12680,15 @@ def sky130_fd_sc_hd__clkdlybuf4s50_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dlxtp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlxtp_1 fixed cell. +def dlxtp_1() -> gf.Component: + """Returns dlxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlxtp_1() + c = sky130.components.dlxtp_1() c.plot() """ return import_gds( @@ -12698,15 +12698,15 @@ def sky130_fd_sc_hd__dlxtp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nand4b_2() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4b_2 fixed cell. +def nand4b_2() -> gf.Component: + """Returns nand4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand4b_2() + c = sky130.components.nand4b_2() c.plot() """ return import_gds( @@ -12716,15 +12716,15 @@ def sky130_fd_sc_hd__nand4b_2() -> gf.Component: @cell -def sky130_fd_sc_hd__nand4b_1() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4b_1 fixed cell. +def nand4b_1() -> gf.Component: + """Returns nand4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand4b_1() + c = sky130.components.nand4b_1() c.plot() """ return import_gds( @@ -12734,15 +12734,15 @@ def sky130_fd_sc_hd__nand4b_1() -> gf.Component: @cell -def sky130_fd_sc_hd__nand4b_4() -> gf.Component: - """Returns sky130_fd_sc_hd__nand4b_4 fixed cell. +def nand4b_4() -> gf.Component: + """Returns nand4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__nand4b_4() + c = sky130.components.nand4b_4() c.plot() """ return import_gds( @@ -12752,15 +12752,15 @@ def sky130_fd_sc_hd__nand4b_4() -> gf.Component: @cell -def sky130_fd_sc_hd__xnor3_4() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor3_4 fixed cell. +def xnor3_4() -> gf.Component: + """Returns xnor3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor3_4() + c = sky130.components.xnor3_4() c.plot() """ return import_gds( @@ -12770,15 +12770,15 @@ def sky130_fd_sc_hd__xnor3_4() -> gf.Component: @cell -def sky130_fd_sc_hd__xnor3_1() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor3_1 fixed cell. +def xnor3_1() -> gf.Component: + """Returns xnor3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor3_1() + c = sky130.components.xnor3_1() c.plot() """ return import_gds( @@ -12788,15 +12788,15 @@ def sky130_fd_sc_hd__xnor3_1() -> gf.Component: @cell -def sky130_fd_sc_hd__xnor3_2() -> gf.Component: - """Returns sky130_fd_sc_hd__xnor3_2 fixed cell. +def xnor3_2() -> gf.Component: + """Returns xnor3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__xnor3_2() + c = sky130.components.xnor3_2() c.plot() """ return import_gds( @@ -12806,15 +12806,15 @@ def sky130_fd_sc_hd__xnor3_2() -> gf.Component: @cell -def sky130_fd_sc_hd__clkbuf_2() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_2 fixed cell. +def clkbuf_2() -> gf.Component: + """Returns clkbuf_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_2() + c = sky130.components.clkbuf_2() c.plot() """ return import_gds( @@ -12824,15 +12824,15 @@ def sky130_fd_sc_hd__clkbuf_2() -> gf.Component: @cell -def sky130_fd_sc_hd__clkbuf_1() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_1 fixed cell. +def clkbuf_1() -> gf.Component: + """Returns clkbuf_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_1() + c = sky130.components.clkbuf_1() c.plot() """ return import_gds( @@ -12842,15 +12842,15 @@ def sky130_fd_sc_hd__clkbuf_1() -> gf.Component: @cell -def sky130_fd_sc_hd__clkbuf_4() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_4 fixed cell. +def clkbuf_4() -> gf.Component: + """Returns clkbuf_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_4() + c = sky130.components.clkbuf_4() c.plot() """ return import_gds( @@ -12860,15 +12860,15 @@ def sky130_fd_sc_hd__clkbuf_4() -> gf.Component: @cell -def sky130_fd_sc_hd__clkbuf_16() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_16 fixed cell. +def clkbuf_16() -> gf.Component: + """Returns clkbuf_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_16() + c = sky130.components.clkbuf_16() c.plot() """ return import_gds( @@ -12878,15 +12878,15 @@ def sky130_fd_sc_hd__clkbuf_16() -> gf.Component: @cell -def sky130_fd_sc_hd__clkbuf_8() -> gf.Component: - """Returns sky130_fd_sc_hd__clkbuf_8 fixed cell. +def clkbuf_8() -> gf.Component: + """Returns clkbuf_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__clkbuf_8() + c = sky130.components.clkbuf_8() c.plot() """ return import_gds( @@ -12896,15 +12896,15 @@ def sky130_fd_sc_hd__clkbuf_8() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrbn_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrbn_1 fixed cell. +def dlrbn_1() -> gf.Component: + """Returns dlrbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrbn_1() + c = sky130.components.dlrbn_1() c.plot() """ return import_gds( @@ -12914,15 +12914,15 @@ def sky130_fd_sc_hd__dlrbn_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrbn_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrbn_2 fixed cell. +def dlrbn_2() -> gf.Component: + """Returns dlrbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrbn_2() + c = sky130.components.dlrbn_2() c.plot() """ return import_gds( @@ -12932,15 +12932,15 @@ def sky130_fd_sc_hd__dlrbn_2() -> gf.Component: @cell -def sky130_fd_sc_hd__bufinv_8() -> gf.Component: - """Returns sky130_fd_sc_hd__bufinv_8 fixed cell. +def bufinv_8() -> gf.Component: + """Returns bufinv_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__bufinv_8() + c = sky130.components.bufinv_8() c.plot() """ return import_gds( @@ -12950,15 +12950,15 @@ def sky130_fd_sc_hd__bufinv_8() -> gf.Component: @cell -def sky130_fd_sc_hd__bufinv_16() -> gf.Component: - """Returns sky130_fd_sc_hd__bufinv_16 fixed cell. +def bufinv_16() -> gf.Component: + """Returns bufinv_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__bufinv_16() + c = sky130.components.bufinv_16() c.plot() """ return import_gds( @@ -12968,15 +12968,15 @@ def sky130_fd_sc_hd__bufinv_16() -> gf.Component: @cell -def sky130_fd_sc_hd__a211oi_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a211oi_2 fixed cell. +def a211oi_2() -> gf.Component: + """Returns a211oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211oi_2() + c = sky130.components.a211oi_2() c.plot() """ return import_gds( @@ -12986,15 +12986,15 @@ def sky130_fd_sc_hd__a211oi_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a211oi_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a211oi_4 fixed cell. +def a211oi_4() -> gf.Component: + """Returns a211oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211oi_4() + c = sky130.components.a211oi_4() c.plot() """ return import_gds( @@ -13004,15 +13004,15 @@ def sky130_fd_sc_hd__a211oi_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a211oi_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a211oi_1 fixed cell. +def a211oi_1() -> gf.Component: + """Returns a211oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a211oi_1() + c = sky130.components.a211oi_1() c.plot() """ return import_gds( @@ -13022,15 +13022,15 @@ def sky130_fd_sc_hd__a211oi_1() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrbp_2() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrbp_2 fixed cell. +def dlrbp_2() -> gf.Component: + """Returns dlrbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrbp_2() + c = sky130.components.dlrbp_2() c.plot() """ return import_gds( @@ -13040,15 +13040,15 @@ def sky130_fd_sc_hd__dlrbp_2() -> gf.Component: @cell -def sky130_fd_sc_hd__dlrbp_1() -> gf.Component: - """Returns sky130_fd_sc_hd__dlrbp_1 fixed cell. +def dlrbp_1() -> gf.Component: + """Returns dlrbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__dlrbp_1() + c = sky130.components.dlrbp_1() c.plot() """ return import_gds( @@ -13058,15 +13058,15 @@ def sky130_fd_sc_hd__dlrbp_1() -> gf.Component: @cell -def sky130_fd_sc_hd__tapvpwrvgnd_1() -> gf.Component: - """Returns sky130_fd_sc_hd__tapvpwrvgnd_1 fixed cell. +def tapvpwrvgnd_1() -> gf.Component: + """Returns tapvpwrvgnd_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__tapvpwrvgnd_1() + c = sky130.components.tapvpwrvgnd_1() c.plot() """ return import_gds( @@ -13076,15 +13076,15 @@ def sky130_fd_sc_hd__tapvpwrvgnd_1() -> gf.Component: @cell -def sky130_fd_sc_hd__a21bo_4() -> gf.Component: - """Returns sky130_fd_sc_hd__a21bo_4 fixed cell. +def a21bo_4() -> gf.Component: + """Returns a21bo_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21bo_4() + c = sky130.components.a21bo_4() c.plot() """ return import_gds( @@ -13094,15 +13094,15 @@ def sky130_fd_sc_hd__a21bo_4() -> gf.Component: @cell -def sky130_fd_sc_hd__a21bo_2() -> gf.Component: - """Returns sky130_fd_sc_hd__a21bo_2 fixed cell. +def a21bo_2() -> gf.Component: + """Returns a21bo_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21bo_2() + c = sky130.components.a21bo_2() c.plot() """ return import_gds( @@ -13112,15 +13112,15 @@ def sky130_fd_sc_hd__a21bo_2() -> gf.Component: @cell -def sky130_fd_sc_hd__a21bo_1() -> gf.Component: - """Returns sky130_fd_sc_hd__a21bo_1 fixed cell. +def a21bo_1() -> gf.Component: + """Returns a21bo_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sky130_fd_sc_hd__a21bo_1() + c = sky130.components.a21bo_1() c.plot() """ return import_gds( diff --git a/tests/test_components.py b/tests/test_components.py index 429b58647..f2ce91360 100644 --- a/tests/test_components.py +++ b/tests/test_components.py @@ -1,5 +1,3 @@ -import pathlib - import pytest from gdsfactory.component import Component from pytest_regressions.data_regression import DataRegressionFixture @@ -13,10 +11,10 @@ "import_gds", "sky130_fd_sc_hd__conb_1", "sky130_fd_sc_hd__macro_sparecell", + "compile_components", ] cell_names = set(cells.keys()) - set(skip) -dirpath = pathlib.Path(__file__).absolute().with_suffix(".gds") @pytest.fixture(params=cell_names, scope="function") @@ -24,11 +22,6 @@ def component(request) -> Component: return cells[request.param]() -# def test_pdk_gds(component: Component) -> None: -# """Avoid regressions in GDS geometry shapes and layers.""" -# difftest(component, dirpath=dirpath) - - def test_pdk_settings( component: Component, data_regression: DataRegressionFixture ) -> None: diff --git a/tests/test_components/test_pdk_settings_a2111o_1_.yml b/tests/test_components/test_pdk_settings_a2111o_1_.yml new file mode 100644 index 000000000..9bcaab243 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2111o_1_.yml @@ -0,0 +1,5 @@ +function: a2111o_1 +info: {} +module: sky130.components +name: a2111o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111o_2_.yml b/tests/test_components/test_pdk_settings_a2111o_2_.yml new file mode 100644 index 000000000..808ae76fb --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2111o_2_.yml @@ -0,0 +1,5 @@ +function: a2111o_2 +info: {} +module: sky130.components +name: a2111o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111o_4_.yml b/tests/test_components/test_pdk_settings_a2111o_4_.yml new file mode 100644 index 000000000..90a033d8d --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2111o_4_.yml @@ -0,0 +1,5 @@ +function: a2111o_4 +info: {} +module: sky130.components +name: a2111o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111oi_0_.yml b/tests/test_components/test_pdk_settings_a2111oi_0_.yml new file mode 100644 index 000000000..ad497c306 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2111oi_0_.yml @@ -0,0 +1,5 @@ +function: a2111oi_0 +info: {} +module: sky130.components +name: a2111oi_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111oi_1_.yml b/tests/test_components/test_pdk_settings_a2111oi_1_.yml new file mode 100644 index 000000000..2e481c58e --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2111oi_1_.yml @@ -0,0 +1,5 @@ +function: a2111oi_1 +info: {} +module: sky130.components +name: a2111oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111oi_2_.yml b/tests/test_components/test_pdk_settings_a2111oi_2_.yml new file mode 100644 index 000000000..4237c8279 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2111oi_2_.yml @@ -0,0 +1,5 @@ +function: a2111oi_2 +info: {} +module: sky130.components +name: a2111oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111oi_4_.yml b/tests/test_components/test_pdk_settings_a2111oi_4_.yml new file mode 100644 index 000000000..fb2a0ec1c --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2111oi_4_.yml @@ -0,0 +1,5 @@ +function: a2111oi_4 +info: {} +module: sky130.components +name: a2111oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a211o_1_.yml b/tests/test_components/test_pdk_settings_a211o_1_.yml new file mode 100644 index 000000000..9b1fc4e39 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a211o_1_.yml @@ -0,0 +1,5 @@ +function: a211o_1 +info: {} +module: sky130.components +name: a211o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a211o_2_.yml b/tests/test_components/test_pdk_settings_a211o_2_.yml new file mode 100644 index 000000000..a360f305d --- /dev/null +++ b/tests/test_components/test_pdk_settings_a211o_2_.yml @@ -0,0 +1,5 @@ +function: a211o_2 +info: {} +module: sky130.components +name: a211o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a211o_4_.yml b/tests/test_components/test_pdk_settings_a211o_4_.yml new file mode 100644 index 000000000..86f895cac --- /dev/null +++ b/tests/test_components/test_pdk_settings_a211o_4_.yml @@ -0,0 +1,5 @@ +function: a211o_4 +info: {} +module: sky130.components +name: a211o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a211oi_1_.yml b/tests/test_components/test_pdk_settings_a211oi_1_.yml new file mode 100644 index 000000000..2c32bbf0e --- /dev/null +++ b/tests/test_components/test_pdk_settings_a211oi_1_.yml @@ -0,0 +1,5 @@ +function: a211oi_1 +info: {} +module: sky130.components +name: a211oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a211oi_2_.yml b/tests/test_components/test_pdk_settings_a211oi_2_.yml new file mode 100644 index 000000000..227036ca9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a211oi_2_.yml @@ -0,0 +1,5 @@ +function: a211oi_2 +info: {} +module: sky130.components +name: a211oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a211oi_4_.yml b/tests/test_components/test_pdk_settings_a211oi_4_.yml new file mode 100644 index 000000000..57140c47d --- /dev/null +++ b/tests/test_components/test_pdk_settings_a211oi_4_.yml @@ -0,0 +1,5 @@ +function: a211oi_4 +info: {} +module: sky130.components +name: a211oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21bo_1_.yml b/tests/test_components/test_pdk_settings_a21bo_1_.yml new file mode 100644 index 000000000..8f17cc26a --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21bo_1_.yml @@ -0,0 +1,5 @@ +function: a21bo_1 +info: {} +module: sky130.components +name: a21bo_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21bo_2_.yml b/tests/test_components/test_pdk_settings_a21bo_2_.yml new file mode 100644 index 000000000..1dfbbe038 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21bo_2_.yml @@ -0,0 +1,5 @@ +function: a21bo_2 +info: {} +module: sky130.components +name: a21bo_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21bo_4_.yml b/tests/test_components/test_pdk_settings_a21bo_4_.yml new file mode 100644 index 000000000..5e76eded2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21bo_4_.yml @@ -0,0 +1,5 @@ +function: a21bo_4 +info: {} +module: sky130.components +name: a21bo_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21boi_0_.yml b/tests/test_components/test_pdk_settings_a21boi_0_.yml new file mode 100644 index 000000000..834c958d1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21boi_0_.yml @@ -0,0 +1,5 @@ +function: a21boi_0 +info: {} +module: sky130.components +name: a21boi_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21boi_1_.yml b/tests/test_components/test_pdk_settings_a21boi_1_.yml new file mode 100644 index 000000000..1d6fca562 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21boi_1_.yml @@ -0,0 +1,5 @@ +function: a21boi_1 +info: {} +module: sky130.components +name: a21boi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21boi_2_.yml b/tests/test_components/test_pdk_settings_a21boi_2_.yml new file mode 100644 index 000000000..c6b238b98 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21boi_2_.yml @@ -0,0 +1,5 @@ +function: a21boi_2 +info: {} +module: sky130.components +name: a21boi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21boi_4_.yml b/tests/test_components/test_pdk_settings_a21boi_4_.yml new file mode 100644 index 000000000..ebde1ef72 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21boi_4_.yml @@ -0,0 +1,5 @@ +function: a21boi_4 +info: {} +module: sky130.components +name: a21boi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_1_.yml b/tests/test_components/test_pdk_settings_a21o_1_.yml similarity index 53% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_1_.yml rename to tests/test_components/test_pdk_settings_a21o_1_.yml index ce6c2c9d5..e1e08619b 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_1_.yml +++ b/tests/test_components/test_pdk_settings_a21o_1_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__nand2_1 +function: a21o_1 info: {} module: sky130.components -name: sky130_fd_sc_hd__nand2_1 +name: a21o_1 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_2_.yml b/tests/test_components/test_pdk_settings_a21o_2_.yml similarity index 53% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_2_.yml rename to tests/test_components/test_pdk_settings_a21o_2_.yml index afd9977a6..c93e175a1 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_2_.yml +++ b/tests/test_components/test_pdk_settings_a21o_2_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__nand2_2 +function: a21o_2 info: {} module: sky130.components -name: sky130_fd_sc_hd__nand2_2 +name: a21o_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_4_.yml b/tests/test_components/test_pdk_settings_a21o_4_.yml similarity index 53% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_4_.yml rename to tests/test_components/test_pdk_settings_a21o_4_.yml index e7113aae0..fb7dc34b4 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_4_.yml +++ b/tests/test_components/test_pdk_settings_a21o_4_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__nand2_4 +function: a21o_4 info: {} module: sky130.components -name: sky130_fd_sc_hd__nand2_4 +name: a21o_4 settings: {} diff --git a/tests/test_components/test_pdk_settings_a21oi_1_.yml b/tests/test_components/test_pdk_settings_a21oi_1_.yml new file mode 100644 index 000000000..8f40eabf5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21oi_1_.yml @@ -0,0 +1,5 @@ +function: a21oi_1 +info: {} +module: sky130.components +name: a21oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21oi_2_.yml b/tests/test_components/test_pdk_settings_a21oi_2_.yml new file mode 100644 index 000000000..d1be3f6e1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21oi_2_.yml @@ -0,0 +1,5 @@ +function: a21oi_2 +info: {} +module: sky130.components +name: a21oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21oi_4_.yml b/tests/test_components/test_pdk_settings_a21oi_4_.yml new file mode 100644 index 000000000..dcdcf93ff --- /dev/null +++ b/tests/test_components/test_pdk_settings_a21oi_4_.yml @@ -0,0 +1,5 @@ +function: a21oi_4 +info: {} +module: sky130.components +name: a21oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a221o_1_.yml b/tests/test_components/test_pdk_settings_a221o_1_.yml new file mode 100644 index 000000000..7e5ae09bf --- /dev/null +++ b/tests/test_components/test_pdk_settings_a221o_1_.yml @@ -0,0 +1,5 @@ +function: a221o_1 +info: {} +module: sky130.components +name: a221o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a221o_2_.yml b/tests/test_components/test_pdk_settings_a221o_2_.yml new file mode 100644 index 000000000..199c4e75f --- /dev/null +++ b/tests/test_components/test_pdk_settings_a221o_2_.yml @@ -0,0 +1,5 @@ +function: a221o_2 +info: {} +module: sky130.components +name: a221o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a221o_4_.yml b/tests/test_components/test_pdk_settings_a221o_4_.yml new file mode 100644 index 000000000..4dd0cdf11 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a221o_4_.yml @@ -0,0 +1,5 @@ +function: a221o_4 +info: {} +module: sky130.components +name: a221o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a221oi_1_.yml b/tests/test_components/test_pdk_settings_a221oi_1_.yml new file mode 100644 index 000000000..ef1164b0b --- /dev/null +++ b/tests/test_components/test_pdk_settings_a221oi_1_.yml @@ -0,0 +1,5 @@ +function: a221oi_1 +info: {} +module: sky130.components +name: a221oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a221oi_2_.yml b/tests/test_components/test_pdk_settings_a221oi_2_.yml new file mode 100644 index 000000000..c053ddde7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a221oi_2_.yml @@ -0,0 +1,5 @@ +function: a221oi_2 +info: {} +module: sky130.components +name: a221oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a221oi_4_.yml b/tests/test_components/test_pdk_settings_a221oi_4_.yml new file mode 100644 index 000000000..716b67219 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a221oi_4_.yml @@ -0,0 +1,5 @@ +function: a221oi_4 +info: {} +module: sky130.components +name: a221oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a222oi_1_.yml b/tests/test_components/test_pdk_settings_a222oi_1_.yml new file mode 100644 index 000000000..a0d16e03e --- /dev/null +++ b/tests/test_components/test_pdk_settings_a222oi_1_.yml @@ -0,0 +1,5 @@ +function: a222oi_1 +info: {} +module: sky130.components +name: a222oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a22o_1_.yml b/tests/test_components/test_pdk_settings_a22o_1_.yml new file mode 100644 index 000000000..87ebe28d5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a22o_1_.yml @@ -0,0 +1,5 @@ +function: a22o_1 +info: {} +module: sky130.components +name: a22o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a22o_2_.yml b/tests/test_components/test_pdk_settings_a22o_2_.yml new file mode 100644 index 000000000..9c0cb808c --- /dev/null +++ b/tests/test_components/test_pdk_settings_a22o_2_.yml @@ -0,0 +1,5 @@ +function: a22o_2 +info: {} +module: sky130.components +name: a22o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a22o_4_.yml b/tests/test_components/test_pdk_settings_a22o_4_.yml new file mode 100644 index 000000000..364d8f6f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a22o_4_.yml @@ -0,0 +1,5 @@ +function: a22o_4 +info: {} +module: sky130.components +name: a22o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a22oi_1_.yml b/tests/test_components/test_pdk_settings_a22oi_1_.yml new file mode 100644 index 000000000..62450d424 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a22oi_1_.yml @@ -0,0 +1,5 @@ +function: a22oi_1 +info: {} +module: sky130.components +name: a22oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a22oi_2_.yml b/tests/test_components/test_pdk_settings_a22oi_2_.yml new file mode 100644 index 000000000..48fdd60e2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a22oi_2_.yml @@ -0,0 +1,5 @@ +function: a22oi_2 +info: {} +module: sky130.components +name: a22oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a22oi_4_.yml b/tests/test_components/test_pdk_settings_a22oi_4_.yml new file mode 100644 index 000000000..c1d33a9af --- /dev/null +++ b/tests/test_components/test_pdk_settings_a22oi_4_.yml @@ -0,0 +1,5 @@ +function: a22oi_4 +info: {} +module: sky130.components +name: a22oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2o_1_.yml b/tests/test_components/test_pdk_settings_a2bb2o_1_.yml new file mode 100644 index 000000000..300b5c182 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2bb2o_1_.yml @@ -0,0 +1,5 @@ +function: a2bb2o_1 +info: {} +module: sky130.components +name: a2bb2o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_1_.yml b/tests/test_components/test_pdk_settings_a2bb2o_2_.yml similarity index 58% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_1_.yml rename to tests/test_components/test_pdk_settings_a2bb2o_2_.yml index 65daa01ff..d1d3bba0b 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_1_.yml +++ b/tests/test_components/test_pdk_settings_a2bb2o_2_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__nand3_1 +function: a2bb2o_2 info: {} module: sky130.components -name: sky130_fd_sc_hs__nand3_1 +name: a2bb2o_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2o_4_.yml b/tests/test_components/test_pdk_settings_a2bb2o_4_.yml new file mode 100644 index 000000000..aa3771ff4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2bb2o_4_.yml @@ -0,0 +1,5 @@ +function: a2bb2o_4 +info: {} +module: sky130.components +name: a2bb2o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2oi_1_.yml b/tests/test_components/test_pdk_settings_a2bb2oi_1_.yml new file mode 100644 index 000000000..88f20e041 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2bb2oi_1_.yml @@ -0,0 +1,5 @@ +function: a2bb2oi_1 +info: {} +module: sky130.components +name: a2bb2oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2oi_2_.yml b/tests/test_components/test_pdk_settings_a2bb2oi_2_.yml new file mode 100644 index 000000000..51e4e2c4e --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2bb2oi_2_.yml @@ -0,0 +1,5 @@ +function: a2bb2oi_2 +info: {} +module: sky130.components +name: a2bb2oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2oi_4_.yml b/tests/test_components/test_pdk_settings_a2bb2oi_4_.yml new file mode 100644 index 000000000..60430e640 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a2bb2oi_4_.yml @@ -0,0 +1,5 @@ +function: a2bb2oi_4 +info: {} +module: sky130.components +name: a2bb2oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a311o_1_.yml b/tests/test_components/test_pdk_settings_a311o_1_.yml new file mode 100644 index 000000000..6e7edeecc --- /dev/null +++ b/tests/test_components/test_pdk_settings_a311o_1_.yml @@ -0,0 +1,5 @@ +function: a311o_1 +info: {} +module: sky130.components +name: a311o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a311o_2_.yml b/tests/test_components/test_pdk_settings_a311o_2_.yml new file mode 100644 index 000000000..1a8f45491 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a311o_2_.yml @@ -0,0 +1,5 @@ +function: a311o_2 +info: {} +module: sky130.components +name: a311o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a311o_4_.yml b/tests/test_components/test_pdk_settings_a311o_4_.yml new file mode 100644 index 000000000..cc3e61c8e --- /dev/null +++ b/tests/test_components/test_pdk_settings_a311o_4_.yml @@ -0,0 +1,5 @@ +function: a311o_4 +info: {} +module: sky130.components +name: a311o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a311oi_1_.yml b/tests/test_components/test_pdk_settings_a311oi_1_.yml new file mode 100644 index 000000000..4ce6f4ff5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a311oi_1_.yml @@ -0,0 +1,5 @@ +function: a311oi_1 +info: {} +module: sky130.components +name: a311oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a311oi_2_.yml b/tests/test_components/test_pdk_settings_a311oi_2_.yml new file mode 100644 index 000000000..307fb942d --- /dev/null +++ b/tests/test_components/test_pdk_settings_a311oi_2_.yml @@ -0,0 +1,5 @@ +function: a311oi_2 +info: {} +module: sky130.components +name: a311oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a311oi_4_.yml b/tests/test_components/test_pdk_settings_a311oi_4_.yml new file mode 100644 index 000000000..36774f541 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a311oi_4_.yml @@ -0,0 +1,5 @@ +function: a311oi_4 +info: {} +module: sky130.components +name: a311oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a31o_1_.yml b/tests/test_components/test_pdk_settings_a31o_1_.yml new file mode 100644 index 000000000..4c73442ec --- /dev/null +++ b/tests/test_components/test_pdk_settings_a31o_1_.yml @@ -0,0 +1,5 @@ +function: a31o_1 +info: {} +module: sky130.components +name: a31o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a31o_2_.yml b/tests/test_components/test_pdk_settings_a31o_2_.yml new file mode 100644 index 000000000..e560d54ab --- /dev/null +++ b/tests/test_components/test_pdk_settings_a31o_2_.yml @@ -0,0 +1,5 @@ +function: a31o_2 +info: {} +module: sky130.components +name: a31o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a31o_4_.yml b/tests/test_components/test_pdk_settings_a31o_4_.yml new file mode 100644 index 000000000..9029675fc --- /dev/null +++ b/tests/test_components/test_pdk_settings_a31o_4_.yml @@ -0,0 +1,5 @@ +function: a31o_4 +info: {} +module: sky130.components +name: a31o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a31oi_1_.yml b/tests/test_components/test_pdk_settings_a31oi_1_.yml new file mode 100644 index 000000000..c7027a2af --- /dev/null +++ b/tests/test_components/test_pdk_settings_a31oi_1_.yml @@ -0,0 +1,5 @@ +function: a31oi_1 +info: {} +module: sky130.components +name: a31oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a31oi_2_.yml b/tests/test_components/test_pdk_settings_a31oi_2_.yml new file mode 100644 index 000000000..12e4e6274 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a31oi_2_.yml @@ -0,0 +1,5 @@ +function: a31oi_2 +info: {} +module: sky130.components +name: a31oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a31oi_4_.yml b/tests/test_components/test_pdk_settings_a31oi_4_.yml new file mode 100644 index 000000000..8cf1b8fe3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a31oi_4_.yml @@ -0,0 +1,5 @@ +function: a31oi_4 +info: {} +module: sky130.components +name: a31oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a32o_1_.yml b/tests/test_components/test_pdk_settings_a32o_1_.yml new file mode 100644 index 000000000..4e3f7bb94 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a32o_1_.yml @@ -0,0 +1,5 @@ +function: a32o_1 +info: {} +module: sky130.components +name: a32o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a32o_2_.yml b/tests/test_components/test_pdk_settings_a32o_2_.yml new file mode 100644 index 000000000..9f23cf22e --- /dev/null +++ b/tests/test_components/test_pdk_settings_a32o_2_.yml @@ -0,0 +1,5 @@ +function: a32o_2 +info: {} +module: sky130.components +name: a32o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a32o_4_.yml b/tests/test_components/test_pdk_settings_a32o_4_.yml new file mode 100644 index 000000000..df3856757 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a32o_4_.yml @@ -0,0 +1,5 @@ +function: a32o_4 +info: {} +module: sky130.components +name: a32o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a32oi_1_.yml b/tests/test_components/test_pdk_settings_a32oi_1_.yml new file mode 100644 index 000000000..6c95f40be --- /dev/null +++ b/tests/test_components/test_pdk_settings_a32oi_1_.yml @@ -0,0 +1,5 @@ +function: a32oi_1 +info: {} +module: sky130.components +name: a32oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a32oi_2_.yml b/tests/test_components/test_pdk_settings_a32oi_2_.yml new file mode 100644 index 000000000..2bca2f871 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a32oi_2_.yml @@ -0,0 +1,5 @@ +function: a32oi_2 +info: {} +module: sky130.components +name: a32oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a32oi_4_.yml b/tests/test_components/test_pdk_settings_a32oi_4_.yml new file mode 100644 index 000000000..61672f63a --- /dev/null +++ b/tests/test_components/test_pdk_settings_a32oi_4_.yml @@ -0,0 +1,5 @@ +function: a32oi_4 +info: {} +module: sky130.components +name: a32oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a41o_1_.yml b/tests/test_components/test_pdk_settings_a41o_1_.yml new file mode 100644 index 000000000..731468819 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a41o_1_.yml @@ -0,0 +1,5 @@ +function: a41o_1 +info: {} +module: sky130.components +name: a41o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a41o_2_.yml b/tests/test_components/test_pdk_settings_a41o_2_.yml new file mode 100644 index 000000000..856eb862b --- /dev/null +++ b/tests/test_components/test_pdk_settings_a41o_2_.yml @@ -0,0 +1,5 @@ +function: a41o_2 +info: {} +module: sky130.components +name: a41o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a41o_4_.yml b/tests/test_components/test_pdk_settings_a41o_4_.yml new file mode 100644 index 000000000..8869da003 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a41o_4_.yml @@ -0,0 +1,5 @@ +function: a41o_4 +info: {} +module: sky130.components +name: a41o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a41oi_1_.yml b/tests/test_components/test_pdk_settings_a41oi_1_.yml new file mode 100644 index 000000000..695de85d7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_a41oi_1_.yml @@ -0,0 +1,5 @@ +function: a41oi_1 +info: {} +module: sky130.components +name: a41oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a41oi_2_.yml b/tests/test_components/test_pdk_settings_a41oi_2_.yml new file mode 100644 index 000000000..f0ab2a50f --- /dev/null +++ b/tests/test_components/test_pdk_settings_a41oi_2_.yml @@ -0,0 +1,5 @@ +function: a41oi_2 +info: {} +module: sky130.components +name: a41oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a41oi_4_.yml b/tests/test_components/test_pdk_settings_a41oi_4_.yml new file mode 100644 index 000000000..d3baf526c --- /dev/null +++ b/tests/test_components/test_pdk_settings_a41oi_4_.yml @@ -0,0 +1,5 @@ +function: a41oi_4 +info: {} +module: sky130.components +name: a41oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and2_0_.yml b/tests/test_components/test_pdk_settings_and2_0_.yml new file mode 100644 index 000000000..ab6f52159 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and2_0_.yml @@ -0,0 +1,5 @@ +function: and2_0 +info: {} +module: sky130.components +name: and2_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and2_1_.yml b/tests/test_components/test_pdk_settings_and2_1_.yml new file mode 100644 index 000000000..655412c17 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and2_1_.yml @@ -0,0 +1,5 @@ +function: and2_1 +info: {} +module: sky130.components +name: and2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and2_2_.yml b/tests/test_components/test_pdk_settings_and2_2_.yml new file mode 100644 index 000000000..1c6957ab2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and2_2_.yml @@ -0,0 +1,5 @@ +function: and2_2 +info: {} +module: sky130.components +name: and2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and2_4_.yml b/tests/test_components/test_pdk_settings_and2_4_.yml new file mode 100644 index 000000000..fe211e100 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and2_4_.yml @@ -0,0 +1,5 @@ +function: and2_4 +info: {} +module: sky130.components +name: and2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and2b_1_.yml b/tests/test_components/test_pdk_settings_and2b_1_.yml new file mode 100644 index 000000000..54f8393ae --- /dev/null +++ b/tests/test_components/test_pdk_settings_and2b_1_.yml @@ -0,0 +1,5 @@ +function: and2b_1 +info: {} +module: sky130.components +name: and2b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and2b_2_.yml b/tests/test_components/test_pdk_settings_and2b_2_.yml new file mode 100644 index 000000000..00e1bdb2d --- /dev/null +++ b/tests/test_components/test_pdk_settings_and2b_2_.yml @@ -0,0 +1,5 @@ +function: and2b_2 +info: {} +module: sky130.components +name: and2b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_0_.yml b/tests/test_components/test_pdk_settings_and2b_4_.yml similarity index 56% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_0_.yml rename to tests/test_components/test_pdk_settings_and2b_4_.yml index c55750046..525a227a9 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_0_.yml +++ b/tests/test_components/test_pdk_settings_and2b_4_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__a21boi_0 +function: and2b_4 info: {} module: sky130.components -name: sky130_fd_sc_hd__a21boi_0 +name: and2b_4 settings: {} diff --git a/tests/test_components/test_pdk_settings_and3_1_.yml b/tests/test_components/test_pdk_settings_and3_1_.yml new file mode 100644 index 000000000..c426e4934 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and3_1_.yml @@ -0,0 +1,5 @@ +function: and3_1 +info: {} +module: sky130.components +name: and3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and3_2_.yml b/tests/test_components/test_pdk_settings_and3_2_.yml new file mode 100644 index 000000000..960338045 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and3_2_.yml @@ -0,0 +1,5 @@ +function: and3_2 +info: {} +module: sky130.components +name: and3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and3_4_.yml b/tests/test_components/test_pdk_settings_and3_4_.yml new file mode 100644 index 000000000..cbf7fc178 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and3_4_.yml @@ -0,0 +1,5 @@ +function: and3_4 +info: {} +module: sky130.components +name: and3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and3b_1_.yml b/tests/test_components/test_pdk_settings_and3b_1_.yml new file mode 100644 index 000000000..22aef8939 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and3b_1_.yml @@ -0,0 +1,5 @@ +function: and3b_1 +info: {} +module: sky130.components +name: and3b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and3b_2_.yml b/tests/test_components/test_pdk_settings_and3b_2_.yml new file mode 100644 index 000000000..c4a54beba --- /dev/null +++ b/tests/test_components/test_pdk_settings_and3b_2_.yml @@ -0,0 +1,5 @@ +function: and3b_2 +info: {} +module: sky130.components +name: and3b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and3b_4_.yml b/tests/test_components/test_pdk_settings_and3b_4_.yml new file mode 100644 index 000000000..4ce6a6ca7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and3b_4_.yml @@ -0,0 +1,5 @@ +function: and3b_4 +info: {} +module: sky130.components +name: and3b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and4_1_.yml b/tests/test_components/test_pdk_settings_and4_1_.yml new file mode 100644 index 000000000..20ff077bd --- /dev/null +++ b/tests/test_components/test_pdk_settings_and4_1_.yml @@ -0,0 +1,5 @@ +function: and4_1 +info: {} +module: sky130.components +name: and4_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and4_2_.yml b/tests/test_components/test_pdk_settings_and4_2_.yml new file mode 100644 index 000000000..eafe441fa --- /dev/null +++ b/tests/test_components/test_pdk_settings_and4_2_.yml @@ -0,0 +1,5 @@ +function: and4_2 +info: {} +module: sky130.components +name: and4_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and4_4_.yml b/tests/test_components/test_pdk_settings_and4_4_.yml new file mode 100644 index 000000000..cc0e0ccdf --- /dev/null +++ b/tests/test_components/test_pdk_settings_and4_4_.yml @@ -0,0 +1,5 @@ +function: and4_4 +info: {} +module: sky130.components +name: and4_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and4b_1_.yml b/tests/test_components/test_pdk_settings_and4b_1_.yml new file mode 100644 index 000000000..1e38ec1f9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and4b_1_.yml @@ -0,0 +1,5 @@ +function: and4b_1 +info: {} +module: sky130.components +name: and4b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and4b_2_.yml b/tests/test_components/test_pdk_settings_and4b_2_.yml new file mode 100644 index 000000000..e28d3ed4a --- /dev/null +++ b/tests/test_components/test_pdk_settings_and4b_2_.yml @@ -0,0 +1,5 @@ +function: and4b_2 +info: {} +module: sky130.components +name: and4b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and4b_4_.yml b/tests/test_components/test_pdk_settings_and4b_4_.yml new file mode 100644 index 000000000..2248124b3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and4b_4_.yml @@ -0,0 +1,5 @@ +function: and4b_4 +info: {} +module: sky130.components +name: and4b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and4bb_1_.yml b/tests/test_components/test_pdk_settings_and4bb_1_.yml new file mode 100644 index 000000000..ae08180f7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and4bb_1_.yml @@ -0,0 +1,5 @@ +function: and4bb_1 +info: {} +module: sky130.components +name: and4bb_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and4bb_2_.yml b/tests/test_components/test_pdk_settings_and4bb_2_.yml new file mode 100644 index 000000000..4ccfa5cf5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and4bb_2_.yml @@ -0,0 +1,5 @@ +function: and4bb_2 +info: {} +module: sky130.components +name: and4bb_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and4bb_4_.yml b/tests/test_components/test_pdk_settings_and4bb_4_.yml new file mode 100644 index 000000000..6d2636e27 --- /dev/null +++ b/tests/test_components/test_pdk_settings_and4bb_4_.yml @@ -0,0 +1,5 @@ +function: and4bb_4 +info: {} +module: sky130.components +name: and4bb_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_12_.yml b/tests/test_components/test_pdk_settings_buf_12_.yml new file mode 100644 index 000000000..752e6fd9c --- /dev/null +++ b/tests/test_components/test_pdk_settings_buf_12_.yml @@ -0,0 +1,5 @@ +function: buf_12 +info: {} +module: sky130.components +name: buf_12 +settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_16_.yml b/tests/test_components/test_pdk_settings_buf_16_.yml new file mode 100644 index 000000000..2c2ea72c0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_buf_16_.yml @@ -0,0 +1,5 @@ +function: buf_16 +info: {} +module: sky130.components +name: buf_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_1_.yml b/tests/test_components/test_pdk_settings_buf_1_.yml new file mode 100644 index 000000000..0e1d755e0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_buf_1_.yml @@ -0,0 +1,5 @@ +function: buf_1 +info: {} +module: sky130.components +name: buf_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_2_.yml b/tests/test_components/test_pdk_settings_buf_2_.yml new file mode 100644 index 000000000..5cd5f4b80 --- /dev/null +++ b/tests/test_components/test_pdk_settings_buf_2_.yml @@ -0,0 +1,5 @@ +function: buf_2 +info: {} +module: sky130.components +name: buf_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_4_.yml b/tests/test_components/test_pdk_settings_buf_4_.yml new file mode 100644 index 000000000..a4fc3faac --- /dev/null +++ b/tests/test_components/test_pdk_settings_buf_4_.yml @@ -0,0 +1,5 @@ +function: buf_4 +info: {} +module: sky130.components +name: buf_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_6_.yml b/tests/test_components/test_pdk_settings_buf_6_.yml new file mode 100644 index 000000000..26d7f5363 --- /dev/null +++ b/tests/test_components/test_pdk_settings_buf_6_.yml @@ -0,0 +1,5 @@ +function: buf_6 +info: {} +module: sky130.components +name: buf_6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_8_.yml b/tests/test_components/test_pdk_settings_buf_8_.yml new file mode 100644 index 000000000..eea984f6e --- /dev/null +++ b/tests/test_components/test_pdk_settings_buf_8_.yml @@ -0,0 +1,5 @@ +function: buf_8 +info: {} +module: sky130.components +name: buf_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_bufbuf_16_.yml b/tests/test_components/test_pdk_settings_bufbuf_16_.yml new file mode 100644 index 000000000..2fc195f0e --- /dev/null +++ b/tests/test_components/test_pdk_settings_bufbuf_16_.yml @@ -0,0 +1,5 @@ +function: bufbuf_16 +info: {} +module: sky130.components +name: bufbuf_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_bufbuf_8_.yml b/tests/test_components/test_pdk_settings_bufbuf_8_.yml new file mode 100644 index 000000000..4d8d937f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_bufbuf_8_.yml @@ -0,0 +1,5 @@ +function: bufbuf_8 +info: {} +module: sky130.components +name: bufbuf_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_bufinv_16_.yml b/tests/test_components/test_pdk_settings_bufinv_16_.yml new file mode 100644 index 000000000..3c3059bb6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_bufinv_16_.yml @@ -0,0 +1,5 @@ +function: bufinv_16 +info: {} +module: sky130.components +name: bufinv_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_bufinv_8_.yml b/tests/test_components/test_pdk_settings_bufinv_8_.yml new file mode 100644 index 000000000..d935af6fb --- /dev/null +++ b/tests/test_components/test_pdk_settings_bufinv_8_.yml @@ -0,0 +1,5 @@ +function: bufinv_8 +info: {} +module: sky130.components +name: bufinv_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p4x04p6_m1m2_noshield_.yml similarity index 61% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_1_.yml rename to tests/test_components/test_pdk_settings_cap_vpp_02p4x04p6_m1m2_noshield_.yml index 3b1c0527b..044885497 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_1_.yml +++ b/tests/test_components/test_pdk_settings_cap_vpp_02p4x04p6_m1m2_noshield_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__o311a_1 +function: cap_vpp_02p4x04p6_m1m2_noshield info: {} module: sky130.components -name: sky130_fd_sc_hs__o311a_1 +name: cap_vpp_02p4x04p6_m1m2_noshield settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml new file mode 100644 index 000000000..45d1c805a --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap +info: {} +module: sky130.components +name: cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml new file mode 100644 index 000000000..5cc6841db --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap +info: {} +module: sky130.components +name: cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml new file mode 100644 index 000000000..aef27f763 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap +info: {} +module: sky130.components +name: cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml new file mode 100644 index 000000000..71dfce12e --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap +info: {} +module: sky130.components +name: cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml new file mode 100644 index 000000000..a82fb65b3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 +info: {} +module: sky130.components +name: cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml b/tests/test_components/test_pdk_settings_cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml new file mode 100644 index 000000000..5cfde05df --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 +info: {} +module: sky130.components +name: cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml new file mode 100644 index 000000000..48a7554c0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_04p4x04p6_l1m1m2_noshield +info: {} +module: sky130.components +name: cap_vpp_04p4x04p6_l1m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml new file mode 100644 index 000000000..b3682891d --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell +info: {} +module: sky130.components +name: cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml new file mode 100644 index 000000000..2d7e11de4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 +info: {} +module: sky130.components +name: cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_.yml new file mode 100644 index 000000000..e449b0c1b --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_04p4x04p6_m1m2_noshield +info: {} +module: sky130.components +name: cap_vpp_04p4x04p6_m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml new file mode 100644 index 000000000..bb3432585 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_04p4x04p6_m1m2_noshield_o2 +info: {} +module: sky130.components +name: cap_vpp_04p4x04p6_m1m2_noshield_o2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml new file mode 100644 index 000000000..0b857a6bd --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_04p4x04p6_m1m2_shieldl1 +info: {} +module: sky130.components +name: cap_vpp_04p4x04p6_m1m2_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml new file mode 100644 index 000000000..038e8f236 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_04p4x04p6_m1m2m3_shieldl1 +info: {} +module: sky130.components +name: cap_vpp_04p4x04p6_m1m2m3_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml new file mode 100644 index 000000000..e3fbbbe4c --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 +info: {} +module: sky130.components +name: cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml new file mode 100644 index 000000000..6a34b1b34 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top +info: {} +module: sky130.components +name: cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml new file mode 100644 index 000000000..41d9b6b05 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap +info: {} +module: sky130.components +name: cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml new file mode 100644 index 000000000..08ff4f642 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +info: {} +module: sky130.components +name: cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml new file mode 100644 index 000000000..b567158b5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +info: {} +module: sky130.components +name: cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml new file mode 100644 index 000000000..59298ab6f --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +info: {} +module: sky130.components +name: cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml new file mode 100644 index 000000000..e61f17c16 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +info: {} +module: sky130.components +name: cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml new file mode 100644 index 000000000..1cc9d9a24 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_08p6x07p8_l1m1m2_noshield +info: {} +module: sky130.components +name: cap_vpp_08p6x07p8_l1m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml new file mode 100644 index 000000000..b260d75af --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell +info: {} +module: sky130.components +name: cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml new file mode 100644 index 000000000..10667bd15 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 +info: {} +module: sky130.components +name: cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_noshield_.yml new file mode 100644 index 000000000..25b766f21 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_08p6x07p8_m1m2_noshield +info: {} +module: sky130.components +name: cap_vpp_08p6x07p8_m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml new file mode 100644 index 000000000..5488c42c4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_08p6x07p8_m1m2_shieldl1 +info: {} +module: sky130.components +name: cap_vpp_08p6x07p8_m1m2_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml new file mode 100644 index 000000000..22e57b14d --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_08p6x07p8_m1m2m3_shieldl1 +info: {} +module: sky130.components +name: cap_vpp_08p6x07p8_m1m2m3_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml new file mode 100644 index 000000000..7135f124b --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 +info: {} +module: sky130.components +name: cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml new file mode 100644 index 000000000..64fffbc02 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top +info: {} +module: sky130.components +name: cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml new file mode 100644 index 000000000..e9a529a47 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap +info: {} +module: sky130.components +name: cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml new file mode 100644 index 000000000..d3d46d069 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +info: {} +module: sky130.components +name: cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml new file mode 100644 index 000000000..9a0f8be58 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop +info: {} +module: sky130.components +name: cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml new file mode 100644 index 000000000..6207012af --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2_noshield +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml new file mode 100644 index 000000000..3276eecad --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2_shieldpom3 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2_shieldpom3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml new file mode 100644 index 000000000..a4e96255c --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml new file mode 100644 index 000000000..e6d71cbcc --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml new file mode 100644 index 000000000..377815b05 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml new file mode 100644 index 000000000..db6a37f2e --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml new file mode 100644 index 000000000..e4b14e722 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml new file mode 100644 index 000000000..74575f9de --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml new file mode 100644 index 000000000..a267644df --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml new file mode 100644 index 000000000..4b88ce275 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml new file mode 100644 index 000000000..d25480a33 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml new file mode 100644 index 000000000..908f6f8ac --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml new file mode 100644 index 000000000..95f47cd90 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml new file mode 100644 index 000000000..0c36bf4f9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml new file mode 100644 index 000000000..635d252d0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml new file mode 100644 index 000000000..1dfd40fc5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_noshield_.yml new file mode 100644 index 000000000..c04b81b65 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_m1m2_noshield +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml new file mode 100644 index 000000000..641ac41dc --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_m1m2_shieldl1 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_m1m2_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml new file mode 100644 index 000000000..854da1fc8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_m1m2m3_shieldl1 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_m1m2m3_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml new file mode 100644 index 000000000..f43b4a1a5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml new file mode 100644 index 000000000..cb1eac5d1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml new file mode 100644 index 000000000..622e70220 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml new file mode 100644 index 000000000..649d6a82a --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml new file mode 100644 index 000000000..7f1ab4ef1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m4_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m4_noshield_.yml new file mode 100644 index 000000000..826d2fe7f --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m4_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_m1m4_noshield +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_m1m4_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..16e01e7df --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..ce201fb22 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..f3650de01 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..ea5be592c --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..396335160 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..ec5d61568 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..7360611ed --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..a30b81ce8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..f974b2470 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml new file mode 100644 index 000000000..e0b5b17c5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin +info: {} +module: sky130.components +name: cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..3814f2f45 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml new file mode 100644 index 000000000..bc7fd8962 --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin +info: {} +module: sky130.components +name: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml new file mode 100644 index 000000000..cb772a23b --- /dev/null +++ b/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml @@ -0,0 +1,5 @@ +function: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test +info: {} +module: sky130.components +name: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_16_.yml b/tests/test_components/test_pdk_settings_clkbuf_16_.yml new file mode 100644 index 000000000..dfe7a879f --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkbuf_16_.yml @@ -0,0 +1,5 @@ +function: clkbuf_16 +info: {} +module: sky130.components +name: clkbuf_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_1_.yml b/tests/test_components/test_pdk_settings_clkbuf_1_.yml new file mode 100644 index 000000000..0cb28aba6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkbuf_1_.yml @@ -0,0 +1,5 @@ +function: clkbuf_1 +info: {} +module: sky130.components +name: clkbuf_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_2_.yml b/tests/test_components/test_pdk_settings_clkbuf_2_.yml new file mode 100644 index 000000000..5307d9cb0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkbuf_2_.yml @@ -0,0 +1,5 @@ +function: clkbuf_2 +info: {} +module: sky130.components +name: clkbuf_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_4_.yml b/tests/test_components/test_pdk_settings_clkbuf_4_.yml new file mode 100644 index 000000000..41198e07f --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkbuf_4_.yml @@ -0,0 +1,5 @@ +function: clkbuf_4 +info: {} +module: sky130.components +name: clkbuf_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_8_.yml b/tests/test_components/test_pdk_settings_clkbuf_8_.yml new file mode 100644 index 000000000..ed3e36265 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkbuf_8_.yml @@ -0,0 +1,5 @@ +function: clkbuf_8 +info: {} +module: sky130.components +name: clkbuf_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s15_1_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s15_1_.yml new file mode 100644 index 000000000..e3e046108 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkdlybuf4s15_1_.yml @@ -0,0 +1,5 @@ +function: clkdlybuf4s15_1 +info: {} +module: sky130.components +name: clkdlybuf4s15_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s15_2_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s15_2_.yml new file mode 100644 index 000000000..442c211f2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkdlybuf4s15_2_.yml @@ -0,0 +1,5 @@ +function: clkdlybuf4s15_2 +info: {} +module: sky130.components +name: clkdlybuf4s15_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s18_1_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s18_1_.yml new file mode 100644 index 000000000..d01e00e4f --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkdlybuf4s18_1_.yml @@ -0,0 +1,5 @@ +function: clkdlybuf4s18_1 +info: {} +module: sky130.components +name: clkdlybuf4s18_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s18_2_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s18_2_.yml new file mode 100644 index 000000000..d0f2c5770 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkdlybuf4s18_2_.yml @@ -0,0 +1,5 @@ +function: clkdlybuf4s18_2 +info: {} +module: sky130.components +name: clkdlybuf4s18_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s25_1_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s25_1_.yml new file mode 100644 index 000000000..a4fb04932 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkdlybuf4s25_1_.yml @@ -0,0 +1,5 @@ +function: clkdlybuf4s25_1 +info: {} +module: sky130.components +name: clkdlybuf4s25_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s25_2_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s25_2_.yml new file mode 100644 index 000000000..732cdcc35 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkdlybuf4s25_2_.yml @@ -0,0 +1,5 @@ +function: clkdlybuf4s25_2 +info: {} +module: sky130.components +name: clkdlybuf4s25_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s50_1_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s50_1_.yml new file mode 100644 index 000000000..94327d74b --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkdlybuf4s50_1_.yml @@ -0,0 +1,5 @@ +function: clkdlybuf4s50_1 +info: {} +module: sky130.components +name: clkdlybuf4s50_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s50_2_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s50_2_.yml new file mode 100644 index 000000000..13f57fc87 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkdlybuf4s50_2_.yml @@ -0,0 +1,5 @@ +function: clkdlybuf4s50_2 +info: {} +module: sky130.components +name: clkdlybuf4s50_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_16_.yml b/tests/test_components/test_pdk_settings_clkinv_16_.yml new file mode 100644 index 000000000..2248cafa1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkinv_16_.yml @@ -0,0 +1,5 @@ +function: clkinv_16 +info: {} +module: sky130.components +name: clkinv_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_1_.yml b/tests/test_components/test_pdk_settings_clkinv_1_.yml new file mode 100644 index 000000000..57dc2edcd --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkinv_1_.yml @@ -0,0 +1,5 @@ +function: clkinv_1 +info: {} +module: sky130.components +name: clkinv_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_2_.yml b/tests/test_components/test_pdk_settings_clkinv_2_.yml new file mode 100644 index 000000000..ac83ffbe1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkinv_2_.yml @@ -0,0 +1,5 @@ +function: clkinv_2 +info: {} +module: sky130.components +name: clkinv_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_4_.yml b/tests/test_components/test_pdk_settings_clkinv_4_.yml new file mode 100644 index 000000000..b860429ef --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkinv_4_.yml @@ -0,0 +1,5 @@ +function: clkinv_4 +info: {} +module: sky130.components +name: clkinv_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_8_.yml b/tests/test_components/test_pdk_settings_clkinv_8_.yml new file mode 100644 index 000000000..9144cfb20 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkinv_8_.yml @@ -0,0 +1,5 @@ +function: clkinv_8 +info: {} +module: sky130.components +name: clkinv_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinvlp_2_.yml b/tests/test_components/test_pdk_settings_clkinvlp_2_.yml new file mode 100644 index 000000000..1d80a2cd4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkinvlp_2_.yml @@ -0,0 +1,5 @@ +function: clkinvlp_2 +info: {} +module: sky130.components +name: clkinvlp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinvlp_4_.yml b/tests/test_components/test_pdk_settings_clkinvlp_4_.yml new file mode 100644 index 000000000..8e2b8cd0a --- /dev/null +++ b/tests/test_components/test_pdk_settings_clkinvlp_4_.yml @@ -0,0 +1,5 @@ +function: clkinvlp_4 +info: {} +module: sky130.components +name: clkinvlp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_conb_1_.yml b/tests/test_components/test_pdk_settings_conb_1_.yml new file mode 100644 index 000000000..fea928d16 --- /dev/null +++ b/tests/test_components/test_pdk_settings_conb_1_.yml @@ -0,0 +1,5 @@ +function: conb_1 +info: {} +module: sky130.components +name: conb_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_12_.yml b/tests/test_components/test_pdk_settings_decap_12_.yml new file mode 100644 index 000000000..1de5087c8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_decap_12_.yml @@ -0,0 +1,5 @@ +function: decap_12 +info: {} +module: sky130.components +name: decap_12 +settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_3_.yml b/tests/test_components/test_pdk_settings_decap_3_.yml new file mode 100644 index 000000000..02abd7137 --- /dev/null +++ b/tests/test_components/test_pdk_settings_decap_3_.yml @@ -0,0 +1,5 @@ +function: decap_3 +info: {} +module: sky130.components +name: decap_3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_4_.yml b/tests/test_components/test_pdk_settings_decap_4_.yml new file mode 100644 index 000000000..fdf2f7618 --- /dev/null +++ b/tests/test_components/test_pdk_settings_decap_4_.yml @@ -0,0 +1,5 @@ +function: decap_4 +info: {} +module: sky130.components +name: decap_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_6_.yml b/tests/test_components/test_pdk_settings_decap_6_.yml new file mode 100644 index 000000000..e2a4a4594 --- /dev/null +++ b/tests/test_components/test_pdk_settings_decap_6_.yml @@ -0,0 +1,5 @@ +function: decap_6 +info: {} +module: sky130.components +name: decap_6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_8_.yml b/tests/test_components/test_pdk_settings_decap_8_.yml new file mode 100644 index 000000000..3d3e43123 --- /dev/null +++ b/tests/test_components/test_pdk_settings_decap_8_.yml @@ -0,0 +1,5 @@ +function: decap_8 +info: {} +module: sky130.components +name: decap_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfbbn_1_.yml b/tests/test_components/test_pdk_settings_dfbbn_1_.yml new file mode 100644 index 000000000..cea98541a --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfbbn_1_.yml @@ -0,0 +1,5 @@ +function: dfbbn_1 +info: {} +module: sky130.components +name: dfbbn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfbbn_2_.yml b/tests/test_components/test_pdk_settings_dfbbn_2_.yml new file mode 100644 index 000000000..6e06408fe --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfbbn_2_.yml @@ -0,0 +1,5 @@ +function: dfbbn_2 +info: {} +module: sky130.components +name: dfbbn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfbbp_1_.yml b/tests/test_components/test_pdk_settings_dfbbp_1_.yml new file mode 100644 index 000000000..056cba553 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfbbp_1_.yml @@ -0,0 +1,5 @@ +function: dfbbp_1 +info: {} +module: sky130.components +name: dfbbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrbp_1_.yml b/tests/test_components/test_pdk_settings_dfrbp_1_.yml new file mode 100644 index 000000000..c6e398612 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfrbp_1_.yml @@ -0,0 +1,5 @@ +function: dfrbp_1 +info: {} +module: sky130.components +name: dfrbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrbp_2_.yml b/tests/test_components/test_pdk_settings_dfrbp_2_.yml new file mode 100644 index 000000000..45463f37c --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfrbp_2_.yml @@ -0,0 +1,5 @@ +function: dfrbp_2 +info: {} +module: sky130.components +name: dfrbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrtn_1_.yml b/tests/test_components/test_pdk_settings_dfrtn_1_.yml new file mode 100644 index 000000000..537d98b1c --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfrtn_1_.yml @@ -0,0 +1,5 @@ +function: dfrtn_1 +info: {} +module: sky130.components +name: dfrtn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrtp_1_.yml b/tests/test_components/test_pdk_settings_dfrtp_1_.yml new file mode 100644 index 000000000..47b23d0cf --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfrtp_1_.yml @@ -0,0 +1,5 @@ +function: dfrtp_1 +info: {} +module: sky130.components +name: dfrtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrtp_2_.yml b/tests/test_components/test_pdk_settings_dfrtp_2_.yml new file mode 100644 index 000000000..3c87c2776 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfrtp_2_.yml @@ -0,0 +1,5 @@ +function: dfrtp_2 +info: {} +module: sky130.components +name: dfrtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrtp_4_.yml b/tests/test_components/test_pdk_settings_dfrtp_4_.yml new file mode 100644 index 000000000..ad2887f5d --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfrtp_4_.yml @@ -0,0 +1,5 @@ +function: dfrtp_4 +info: {} +module: sky130.components +name: dfrtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfsbp_1_.yml b/tests/test_components/test_pdk_settings_dfsbp_1_.yml new file mode 100644 index 000000000..13a385267 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfsbp_1_.yml @@ -0,0 +1,5 @@ +function: dfsbp_1 +info: {} +module: sky130.components +name: dfsbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfsbp_2_.yml b/tests/test_components/test_pdk_settings_dfsbp_2_.yml new file mode 100644 index 000000000..e46af788d --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfsbp_2_.yml @@ -0,0 +1,5 @@ +function: dfsbp_2 +info: {} +module: sky130.components +name: dfsbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3b_1_.yml b/tests/test_components/test_pdk_settings_dfstp_1_.yml similarity index 55% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3b_1_.yml rename to tests/test_components/test_pdk_settings_dfstp_1_.yml index 850d1ebae..0d7bcb77c 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3b_1_.yml +++ b/tests/test_components/test_pdk_settings_dfstp_1_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__or3b_1 +function: dfstp_1 info: {} module: sky130.components -name: sky130_fd_sc_hs__or3b_1 +name: dfstp_1 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3b_2_.yml b/tests/test_components/test_pdk_settings_dfstp_2_.yml similarity index 55% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3b_2_.yml rename to tests/test_components/test_pdk_settings_dfstp_2_.yml index 16ff40d8a..312b926bc 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3b_2_.yml +++ b/tests/test_components/test_pdk_settings_dfstp_2_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__or3b_2 +function: dfstp_2 info: {} module: sky130.components -name: sky130_fd_sc_hs__or3b_2 +name: dfstp_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3b_4_.yml b/tests/test_components/test_pdk_settings_dfstp_4_.yml similarity index 55% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3b_4_.yml rename to tests/test_components/test_pdk_settings_dfstp_4_.yml index bbe66ff95..2a9229e60 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3b_4_.yml +++ b/tests/test_components/test_pdk_settings_dfstp_4_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__or3b_4 +function: dfstp_4 info: {} module: sky130.components -name: sky130_fd_sc_hs__or3b_4 +name: dfstp_4 settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxbp_1_.yml b/tests/test_components/test_pdk_settings_dfxbp_1_.yml new file mode 100644 index 000000000..1793e2df7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfxbp_1_.yml @@ -0,0 +1,5 @@ +function: dfxbp_1 +info: {} +module: sky130.components +name: dfxbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxbp_2_.yml b/tests/test_components/test_pdk_settings_dfxbp_2_.yml new file mode 100644 index 000000000..137ec4f5c --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfxbp_2_.yml @@ -0,0 +1,5 @@ +function: dfxbp_2 +info: {} +module: sky130.components +name: dfxbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxtp_1_.yml b/tests/test_components/test_pdk_settings_dfxtp_1_.yml new file mode 100644 index 000000000..62617c47a --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfxtp_1_.yml @@ -0,0 +1,5 @@ +function: dfxtp_1 +info: {} +module: sky130.components +name: dfxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxtp_2_.yml b/tests/test_components/test_pdk_settings_dfxtp_2_.yml new file mode 100644 index 000000000..77b212ed4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfxtp_2_.yml @@ -0,0 +1,5 @@ +function: dfxtp_2 +info: {} +module: sky130.components +name: dfxtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxtp_4_.yml b/tests/test_components/test_pdk_settings_dfxtp_4_.yml new file mode 100644 index 000000000..cf80fffbd --- /dev/null +++ b/tests/test_components/test_pdk_settings_dfxtp_4_.yml @@ -0,0 +1,5 @@ +function: dfxtp_4 +info: {} +module: sky130.components +name: dfxtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_diode_2_.yml b/tests/test_components/test_pdk_settings_diode_2_.yml new file mode 100644 index 000000000..53eed7e28 --- /dev/null +++ b/tests/test_components/test_pdk_settings_diode_2_.yml @@ -0,0 +1,5 @@ +function: diode_2 +info: {} +module: sky130.components +name: diode_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlclkp_1_.yml b/tests/test_components/test_pdk_settings_dlclkp_1_.yml new file mode 100644 index 000000000..5d3d8d140 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlclkp_1_.yml @@ -0,0 +1,5 @@ +function: dlclkp_1 +info: {} +module: sky130.components +name: dlclkp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlclkp_2_.yml b/tests/test_components/test_pdk_settings_dlclkp_2_.yml new file mode 100644 index 000000000..e163be4f1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlclkp_2_.yml @@ -0,0 +1,5 @@ +function: dlclkp_2 +info: {} +module: sky130.components +name: dlclkp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlclkp_4_.yml b/tests/test_components/test_pdk_settings_dlclkp_4_.yml new file mode 100644 index 000000000..b83dc4bde --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlclkp_4_.yml @@ -0,0 +1,5 @@ +function: dlclkp_4 +info: {} +module: sky130.components +name: dlclkp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrbn_1_.yml b/tests/test_components/test_pdk_settings_dlrbn_1_.yml new file mode 100644 index 000000000..b0f487af9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrbn_1_.yml @@ -0,0 +1,5 @@ +function: dlrbn_1 +info: {} +module: sky130.components +name: dlrbn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrbn_2_.yml b/tests/test_components/test_pdk_settings_dlrbn_2_.yml new file mode 100644 index 000000000..98c2fb685 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrbn_2_.yml @@ -0,0 +1,5 @@ +function: dlrbn_2 +info: {} +module: sky130.components +name: dlrbn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrbp_1_.yml b/tests/test_components/test_pdk_settings_dlrbp_1_.yml new file mode 100644 index 000000000..30cbfc7ed --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrbp_1_.yml @@ -0,0 +1,5 @@ +function: dlrbp_1 +info: {} +module: sky130.components +name: dlrbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrbp_2_.yml b/tests/test_components/test_pdk_settings_dlrbp_2_.yml new file mode 100644 index 000000000..3d8b669de --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrbp_2_.yml @@ -0,0 +1,5 @@ +function: dlrbp_2 +info: {} +module: sky130.components +name: dlrbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtn_1_.yml b/tests/test_components/test_pdk_settings_dlrtn_1_.yml new file mode 100644 index 000000000..8d53f9211 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrtn_1_.yml @@ -0,0 +1,5 @@ +function: dlrtn_1 +info: {} +module: sky130.components +name: dlrtn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtn_2_.yml b/tests/test_components/test_pdk_settings_dlrtn_2_.yml new file mode 100644 index 000000000..34a7499a5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrtn_2_.yml @@ -0,0 +1,5 @@ +function: dlrtn_2 +info: {} +module: sky130.components +name: dlrtn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtn_4_.yml b/tests/test_components/test_pdk_settings_dlrtn_4_.yml new file mode 100644 index 000000000..e238617a5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrtn_4_.yml @@ -0,0 +1,5 @@ +function: dlrtn_4 +info: {} +module: sky130.components +name: dlrtn_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtp_1_.yml b/tests/test_components/test_pdk_settings_dlrtp_1_.yml new file mode 100644 index 000000000..bd5629be2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrtp_1_.yml @@ -0,0 +1,5 @@ +function: dlrtp_1 +info: {} +module: sky130.components +name: dlrtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtp_2_.yml b/tests/test_components/test_pdk_settings_dlrtp_2_.yml new file mode 100644 index 000000000..bda0723ac --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrtp_2_.yml @@ -0,0 +1,5 @@ +function: dlrtp_2 +info: {} +module: sky130.components +name: dlrtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtp_4_.yml b/tests/test_components/test_pdk_settings_dlrtp_4_.yml new file mode 100644 index 000000000..68902c10f --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlrtp_4_.yml @@ -0,0 +1,5 @@ +function: dlrtp_4 +info: {} +module: sky130.components +name: dlrtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxbn_1_.yml b/tests/test_components/test_pdk_settings_dlxbn_1_.yml new file mode 100644 index 000000000..6d9265454 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlxbn_1_.yml @@ -0,0 +1,5 @@ +function: dlxbn_1 +info: {} +module: sky130.components +name: dlxbn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxbn_2_.yml b/tests/test_components/test_pdk_settings_dlxbn_2_.yml new file mode 100644 index 000000000..562712da2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlxbn_2_.yml @@ -0,0 +1,5 @@ +function: dlxbn_2 +info: {} +module: sky130.components +name: dlxbn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxbp_1_.yml b/tests/test_components/test_pdk_settings_dlxbp_1_.yml new file mode 100644 index 000000000..1e94f370a --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlxbp_1_.yml @@ -0,0 +1,5 @@ +function: dlxbp_1 +info: {} +module: sky130.components +name: dlxbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxtn_1_.yml b/tests/test_components/test_pdk_settings_dlxtn_1_.yml new file mode 100644 index 000000000..08c44c82f --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlxtn_1_.yml @@ -0,0 +1,5 @@ +function: dlxtn_1 +info: {} +module: sky130.components +name: dlxtn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxtn_2_.yml b/tests/test_components/test_pdk_settings_dlxtn_2_.yml new file mode 100644 index 000000000..141ebeb28 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlxtn_2_.yml @@ -0,0 +1,5 @@ +function: dlxtn_2 +info: {} +module: sky130.components +name: dlxtn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxtn_4_.yml b/tests/test_components/test_pdk_settings_dlxtn_4_.yml new file mode 100644 index 000000000..c50cf9a75 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlxtn_4_.yml @@ -0,0 +1,5 @@ +function: dlxtn_4 +info: {} +module: sky130.components +name: dlxtn_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxtp_1_.yml b/tests/test_components/test_pdk_settings_dlxtp_1_.yml new file mode 100644 index 000000000..c6cd60a02 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlxtp_1_.yml @@ -0,0 +1,5 @@ +function: dlxtp_1 +info: {} +module: sky130.components +name: dlxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlygate4sd1_1_.yml b/tests/test_components/test_pdk_settings_dlygate4sd1_1_.yml new file mode 100644 index 000000000..91cc453d4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlygate4sd1_1_.yml @@ -0,0 +1,5 @@ +function: dlygate4sd1_1 +info: {} +module: sky130.components +name: dlygate4sd1_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlygate4sd2_1_.yml b/tests/test_components/test_pdk_settings_dlygate4sd2_1_.yml new file mode 100644 index 000000000..54f5ddfa0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlygate4sd2_1_.yml @@ -0,0 +1,5 @@ +function: dlygate4sd2_1 +info: {} +module: sky130.components +name: dlygate4sd2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlygate4sd3_1_.yml b/tests/test_components/test_pdk_settings_dlygate4sd3_1_.yml new file mode 100644 index 000000000..4f949d5cf --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlygate4sd3_1_.yml @@ -0,0 +1,5 @@ +function: dlygate4sd3_1 +info: {} +module: sky130.components +name: dlygate4sd3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlymetal6s2s_1_.yml b/tests/test_components/test_pdk_settings_dlymetal6s2s_1_.yml new file mode 100644 index 000000000..504989c71 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlymetal6s2s_1_.yml @@ -0,0 +1,5 @@ +function: dlymetal6s2s_1 +info: {} +module: sky130.components +name: dlymetal6s2s_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlymetal6s4s_1_.yml b/tests/test_components/test_pdk_settings_dlymetal6s4s_1_.yml new file mode 100644 index 000000000..f7cf95e8e --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlymetal6s4s_1_.yml @@ -0,0 +1,5 @@ +function: dlymetal6s4s_1 +info: {} +module: sky130.components +name: dlymetal6s4s_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_dlymetal6s6s_1_.yml b/tests/test_components/test_pdk_settings_dlymetal6s6s_1_.yml new file mode 100644 index 000000000..d75455e45 --- /dev/null +++ b/tests/test_components/test_pdk_settings_dlymetal6s6s_1_.yml @@ -0,0 +1,5 @@ +function: dlymetal6s6s_1 +info: {} +module: sky130.components +name: dlymetal6s6s_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_ebufn_1_.yml b/tests/test_components/test_pdk_settings_ebufn_1_.yml new file mode 100644 index 000000000..b4f2fc30a --- /dev/null +++ b/tests/test_components/test_pdk_settings_ebufn_1_.yml @@ -0,0 +1,5 @@ +function: ebufn_1 +info: {} +module: sky130.components +name: ebufn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_ebufn_2_.yml b/tests/test_components/test_pdk_settings_ebufn_2_.yml new file mode 100644 index 000000000..35722b1e9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_ebufn_2_.yml @@ -0,0 +1,5 @@ +function: ebufn_2 +info: {} +module: sky130.components +name: ebufn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_ebufn_4_.yml b/tests/test_components/test_pdk_settings_ebufn_4_.yml new file mode 100644 index 000000000..d74909c4c --- /dev/null +++ b/tests/test_components/test_pdk_settings_ebufn_4_.yml @@ -0,0 +1,5 @@ +function: ebufn_4 +info: {} +module: sky130.components +name: ebufn_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_ebufn_8_.yml b/tests/test_components/test_pdk_settings_ebufn_8_.yml new file mode 100644 index 000000000..a1494fd07 --- /dev/null +++ b/tests/test_components/test_pdk_settings_ebufn_8_.yml @@ -0,0 +1,5 @@ +function: ebufn_8 +info: {} +module: sky130.components +name: ebufn_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_edfxbp_1_.yml b/tests/test_components/test_pdk_settings_edfxbp_1_.yml new file mode 100644 index 000000000..69d2e5f61 --- /dev/null +++ b/tests/test_components/test_pdk_settings_edfxbp_1_.yml @@ -0,0 +1,5 @@ +function: edfxbp_1 +info: {} +module: sky130.components +name: edfxbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_edfxtp_1_.yml b/tests/test_components/test_pdk_settings_edfxtp_1_.yml new file mode 100644 index 000000000..26afa6b13 --- /dev/null +++ b/tests/test_components/test_pdk_settings_edfxtp_1_.yml @@ -0,0 +1,5 @@ +function: edfxtp_1 +info: {} +module: sky130.components +name: edfxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_0_.yml b/tests/test_components/test_pdk_settings_einvn_0_.yml new file mode 100644 index 000000000..014a32c16 --- /dev/null +++ b/tests/test_components/test_pdk_settings_einvn_0_.yml @@ -0,0 +1,5 @@ +function: einvn_0 +info: {} +module: sky130.components +name: einvn_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_1_.yml b/tests/test_components/test_pdk_settings_einvn_1_.yml new file mode 100644 index 000000000..87a89ad59 --- /dev/null +++ b/tests/test_components/test_pdk_settings_einvn_1_.yml @@ -0,0 +1,5 @@ +function: einvn_1 +info: {} +module: sky130.components +name: einvn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_2_.yml b/tests/test_components/test_pdk_settings_einvn_2_.yml new file mode 100644 index 000000000..8f6c5e3d7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_einvn_2_.yml @@ -0,0 +1,5 @@ +function: einvn_2 +info: {} +module: sky130.components +name: einvn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_4_.yml b/tests/test_components/test_pdk_settings_einvn_4_.yml new file mode 100644 index 000000000..5e0af7557 --- /dev/null +++ b/tests/test_components/test_pdk_settings_einvn_4_.yml @@ -0,0 +1,5 @@ +function: einvn_4 +info: {} +module: sky130.components +name: einvn_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_8_.yml b/tests/test_components/test_pdk_settings_einvn_8_.yml new file mode 100644 index 000000000..0f68eaeb1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_einvn_8_.yml @@ -0,0 +1,5 @@ +function: einvn_8 +info: {} +module: sky130.components +name: einvn_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_einvp_1_.yml b/tests/test_components/test_pdk_settings_einvp_1_.yml new file mode 100644 index 000000000..b8000aa2f --- /dev/null +++ b/tests/test_components/test_pdk_settings_einvp_1_.yml @@ -0,0 +1,5 @@ +function: einvp_1 +info: {} +module: sky130.components +name: einvp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_einvp_2_.yml b/tests/test_components/test_pdk_settings_einvp_2_.yml new file mode 100644 index 000000000..0df4efe17 --- /dev/null +++ b/tests/test_components/test_pdk_settings_einvp_2_.yml @@ -0,0 +1,5 @@ +function: einvp_2 +info: {} +module: sky130.components +name: einvp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_einvp_4_.yml b/tests/test_components/test_pdk_settings_einvp_4_.yml new file mode 100644 index 000000000..c2fb9e0ff --- /dev/null +++ b/tests/test_components/test_pdk_settings_einvp_4_.yml @@ -0,0 +1,5 @@ +function: einvp_4 +info: {} +module: sky130.components +name: einvp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_einvp_8_.yml b/tests/test_components/test_pdk_settings_einvp_8_.yml new file mode 100644 index 000000000..e770956b0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_einvp_8_.yml @@ -0,0 +1,5 @@ +function: einvp_8 +info: {} +module: sky130.components +name: einvp_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml new file mode 100644 index 000000000..086b70abb --- /dev/null +++ b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml @@ -0,0 +1,5 @@ +function: esd_rf_nfet_20v0_hbm_21vW60p00 +info: {} +module: sky130.components +name: esd_rf_nfet_20v0_hbm_21vW60p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdlxtp_1_.yml b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_32vW60p00_.yml similarity index 67% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdlxtp_1_.yml rename to tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_32vW60p00_.yml index 50720c938..c18011b40 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdlxtp_1_.yml +++ b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_32vW60p00_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hvl__sdlxtp_1 +function: esd_rf_nfet_20v0_hbm_32vW60p00 info: {} module: sky130.components -name: sky130_fd_sc_hvl__sdlxtp_1 +name: esd_rf_nfet_20v0_hbm_32vW60p00 settings: {} diff --git a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_21vW60p00_.yml b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_21vW60p00_.yml new file mode 100644 index 000000000..161e4c392 --- /dev/null +++ b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_21vW60p00_.yml @@ -0,0 +1,5 @@ +function: esd_rf_nfet_20v0_iec_21vW60p00 +info: {} +module: sky130.components +name: esd_rf_nfet_20v0_iec_21vW60p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_32vW60p00_.yml b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_32vW60p00_.yml new file mode 100644 index 000000000..fbb57a300 --- /dev/null +++ b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_32vW60p00_.yml @@ -0,0 +1,5 @@ +function: esd_rf_nfet_20v0_iec_32vW60p00 +info: {} +module: sky130.components +name: esd_rf_nfet_20v0_iec_32vW60p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fa_1_.yml b/tests/test_components/test_pdk_settings_fa_1_.yml new file mode 100644 index 000000000..9543c0b8b --- /dev/null +++ b/tests/test_components/test_pdk_settings_fa_1_.yml @@ -0,0 +1,5 @@ +function: fa_1 +info: {} +module: sky130.components +name: fa_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fa_2_.yml b/tests/test_components/test_pdk_settings_fa_2_.yml new file mode 100644 index 000000000..35cdb2c6e --- /dev/null +++ b/tests/test_components/test_pdk_settings_fa_2_.yml @@ -0,0 +1,5 @@ +function: fa_2 +info: {} +module: sky130.components +name: fa_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fa_4_.yml b/tests/test_components/test_pdk_settings_fa_4_.yml new file mode 100644 index 000000000..072468a02 --- /dev/null +++ b/tests/test_components/test_pdk_settings_fa_4_.yml @@ -0,0 +1,5 @@ +function: fa_4 +info: {} +module: sky130.components +name: fa_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fah_1_.yml b/tests/test_components/test_pdk_settings_fah_1_.yml new file mode 100644 index 000000000..9f4d5acb0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_fah_1_.yml @@ -0,0 +1,5 @@ +function: fah_1 +info: {} +module: sky130.components +name: fah_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fahcin_1_.yml b/tests/test_components/test_pdk_settings_fahcin_1_.yml new file mode 100644 index 000000000..af46a1735 --- /dev/null +++ b/tests/test_components/test_pdk_settings_fahcin_1_.yml @@ -0,0 +1,5 @@ +function: fahcin_1 +info: {} +module: sky130.components +name: fahcin_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fahcon_1_.yml b/tests/test_components/test_pdk_settings_fahcon_1_.yml new file mode 100644 index 000000000..87abdf4f2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_fahcon_1_.yml @@ -0,0 +1,5 @@ +function: fahcon_1 +info: {} +module: sky130.components +name: fahcon_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fill_1_.yml b/tests/test_components/test_pdk_settings_fill_1_.yml new file mode 100644 index 000000000..cdb7d9e6b --- /dev/null +++ b/tests/test_components/test_pdk_settings_fill_1_.yml @@ -0,0 +1,5 @@ +function: fill_1 +info: {} +module: sky130.components +name: fill_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fill_2_.yml b/tests/test_components/test_pdk_settings_fill_2_.yml new file mode 100644 index 000000000..173314541 --- /dev/null +++ b/tests/test_components/test_pdk_settings_fill_2_.yml @@ -0,0 +1,5 @@ +function: fill_2 +info: {} +module: sky130.components +name: fill_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fill_4_.yml b/tests/test_components/test_pdk_settings_fill_4_.yml new file mode 100644 index 000000000..7a10f1e53 --- /dev/null +++ b/tests/test_components/test_pdk_settings_fill_4_.yml @@ -0,0 +1,5 @@ +function: fill_4 +info: {} +module: sky130.components +name: fill_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_fill_8_.yml b/tests/test_components/test_pdk_settings_fill_8_.yml new file mode 100644 index 000000000..cf67e267c --- /dev/null +++ b/tests/test_components/test_pdk_settings_fill_8_.yml @@ -0,0 +1,5 @@ +function: fill_8 +info: {} +module: sky130.components +name: fill_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_ha_1_.yml b/tests/test_components/test_pdk_settings_ha_1_.yml new file mode 100644 index 000000000..085eba381 --- /dev/null +++ b/tests/test_components/test_pdk_settings_ha_1_.yml @@ -0,0 +1,5 @@ +function: ha_1 +info: {} +module: sky130.components +name: ha_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_ha_2_.yml b/tests/test_components/test_pdk_settings_ha_2_.yml new file mode 100644 index 000000000..64f90584d --- /dev/null +++ b/tests/test_components/test_pdk_settings_ha_2_.yml @@ -0,0 +1,5 @@ +function: ha_2 +info: {} +module: sky130.components +name: ha_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_ha_4_.yml b/tests/test_components/test_pdk_settings_ha_4_.yml new file mode 100644 index 000000000..fc5751a17 --- /dev/null +++ b/tests/test_components/test_pdk_settings_ha_4_.yml @@ -0,0 +1,5 @@ +function: ha_4 +info: {} +module: sky130.components +name: ha_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_12_.yml b/tests/test_components/test_pdk_settings_inv_12_.yml new file mode 100644 index 000000000..0105c2ed5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_inv_12_.yml @@ -0,0 +1,5 @@ +function: inv_12 +info: {} +module: sky130.components +name: inv_12 +settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_16_.yml b/tests/test_components/test_pdk_settings_inv_16_.yml new file mode 100644 index 000000000..885ecee31 --- /dev/null +++ b/tests/test_components/test_pdk_settings_inv_16_.yml @@ -0,0 +1,5 @@ +function: inv_16 +info: {} +module: sky130.components +name: inv_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_1_.yml b/tests/test_components/test_pdk_settings_inv_1_.yml new file mode 100644 index 000000000..2de1e52f0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_inv_1_.yml @@ -0,0 +1,5 @@ +function: inv_1 +info: {} +module: sky130.components +name: inv_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_2_.yml b/tests/test_components/test_pdk_settings_inv_2_.yml new file mode 100644 index 000000000..82fc3795a --- /dev/null +++ b/tests/test_components/test_pdk_settings_inv_2_.yml @@ -0,0 +1,5 @@ +function: inv_2 +info: {} +module: sky130.components +name: inv_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_4_.yml b/tests/test_components/test_pdk_settings_inv_4_.yml new file mode 100644 index 000000000..8b7bd96a9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_inv_4_.yml @@ -0,0 +1,5 @@ +function: inv_4 +info: {} +module: sky130.components +name: inv_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_6_.yml b/tests/test_components/test_pdk_settings_inv_6_.yml new file mode 100644 index 000000000..90a06c12e --- /dev/null +++ b/tests/test_components/test_pdk_settings_inv_6_.yml @@ -0,0 +1,5 @@ +function: inv_6 +info: {} +module: sky130.components +name: inv_6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_8_.yml b/tests/test_components/test_pdk_settings_inv_8_.yml new file mode 100644 index 000000000..b0589de71 --- /dev/null +++ b/tests/test_components/test_pdk_settings_inv_8_.yml @@ -0,0 +1,5 @@ +function: inv_8 +info: {} +module: sky130.components +name: inv_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_bleeder_1_.yml b/tests/test_components/test_pdk_settings_lpflow_bleeder_1_.yml new file mode 100644 index 000000000..a28da6d4b --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_bleeder_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_bleeder_1 +info: {} +module: sky130.components +name: lpflow_bleeder_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_16_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_16_.yml new file mode 100644 index 000000000..f3e901f6c --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_16_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkbufkapwr_16 +info: {} +module: sky130.components +name: lpflow_clkbufkapwr_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_1_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_1_.yml new file mode 100644 index 000000000..6cf729628 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkbufkapwr_1 +info: {} +module: sky130.components +name: lpflow_clkbufkapwr_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_2_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_2_.yml new file mode 100644 index 000000000..ee1706ee0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_2_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkbufkapwr_2 +info: {} +module: sky130.components +name: lpflow_clkbufkapwr_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_4_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_4_.yml new file mode 100644 index 000000000..0eb7b6fb5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_4_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkbufkapwr_4 +info: {} +module: sky130.components +name: lpflow_clkbufkapwr_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_8_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_8_.yml new file mode 100644 index 000000000..e8d997451 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_8_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkbufkapwr_8 +info: {} +module: sky130.components +name: lpflow_clkbufkapwr_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_16_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_16_.yml new file mode 100644 index 000000000..d96dbc495 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_16_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkinvkapwr_16 +info: {} +module: sky130.components +name: lpflow_clkinvkapwr_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_1_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_1_.yml new file mode 100644 index 000000000..793593728 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkinvkapwr_1 +info: {} +module: sky130.components +name: lpflow_clkinvkapwr_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_2_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_2_.yml new file mode 100644 index 000000000..e228ffb93 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_2_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkinvkapwr_2 +info: {} +module: sky130.components +name: lpflow_clkinvkapwr_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_4_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_4_.yml new file mode 100644 index 000000000..5512b986d --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_4_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkinvkapwr_4 +info: {} +module: sky130.components +name: lpflow_clkinvkapwr_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_8_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_8_.yml new file mode 100644 index 000000000..8b9caccf2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_8_.yml @@ -0,0 +1,5 @@ +function: lpflow_clkinvkapwr_8 +info: {} +module: sky130.components +name: lpflow_clkinvkapwr_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_12_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_12_.yml new file mode 100644 index 000000000..3d37e4b13 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_12_.yml @@ -0,0 +1,5 @@ +function: lpflow_decapkapwr_12 +info: {} +module: sky130.components +name: lpflow_decapkapwr_12 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_3_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_3_.yml new file mode 100644 index 000000000..f0e03f963 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_3_.yml @@ -0,0 +1,5 @@ +function: lpflow_decapkapwr_3 +info: {} +module: sky130.components +name: lpflow_decapkapwr_3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_4_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_4_.yml new file mode 100644 index 000000000..11082d85e --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_4_.yml @@ -0,0 +1,5 @@ +function: lpflow_decapkapwr_4 +info: {} +module: sky130.components +name: lpflow_decapkapwr_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_6_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_6_.yml new file mode 100644 index 000000000..f41c1146f --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_6_.yml @@ -0,0 +1,5 @@ +function: lpflow_decapkapwr_6 +info: {} +module: sky130.components +name: lpflow_decapkapwr_6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_8_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_8_.yml new file mode 100644 index 000000000..bb887b703 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_8_.yml @@ -0,0 +1,5 @@ +function: lpflow_decapkapwr_8 +info: {} +module: sky130.components +name: lpflow_decapkapwr_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputiso0n_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputiso0n_1_.yml new file mode 100644 index 000000000..ec268b433 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_inputiso0n_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_inputiso0n_1 +info: {} +module: sky130.components +name: lpflow_inputiso0n_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputiso0p_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputiso0p_1_.yml new file mode 100644 index 000000000..8dad8491c --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_inputiso0p_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_inputiso0p_1 +info: {} +module: sky130.components +name: lpflow_inputiso0p_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputiso1n_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputiso1n_1_.yml new file mode 100644 index 000000000..c92328477 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_inputiso1n_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_inputiso1n_1 +info: {} +module: sky130.components +name: lpflow_inputiso1n_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputiso1p_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputiso1p_1_.yml new file mode 100644 index 000000000..ec012d185 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_inputiso1p_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_inputiso1p_1 +info: {} +module: sky130.components +name: lpflow_inputiso1p_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputisolatch_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputisolatch_1_.yml new file mode 100644 index 000000000..89e3e083f --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_inputisolatch_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_inputisolatch_1 +info: {} +module: sky130.components +name: lpflow_inputisolatch_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_16_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_16_.yml new file mode 100644 index 000000000..7deaab754 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_16_.yml @@ -0,0 +1,5 @@ +function: lpflow_isobufsrc_16 +info: {} +module: sky130.components +name: lpflow_isobufsrc_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_1_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_1_.yml new file mode 100644 index 000000000..5aa20a485 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_isobufsrc_1 +info: {} +module: sky130.components +name: lpflow_isobufsrc_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_2_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_2_.yml new file mode 100644 index 000000000..45075b06b --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_2_.yml @@ -0,0 +1,5 @@ +function: lpflow_isobufsrc_2 +info: {} +module: sky130.components +name: lpflow_isobufsrc_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_4_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_4_.yml new file mode 100644 index 000000000..53a1c9a4a --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_4_.yml @@ -0,0 +1,5 @@ +function: lpflow_isobufsrc_4 +info: {} +module: sky130.components +name: lpflow_isobufsrc_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_8_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_8_.yml new file mode 100644 index 000000000..3f6bede8f --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_8_.yml @@ -0,0 +1,5 @@ +function: lpflow_isobufsrc_8 +info: {} +module: sky130.components +name: lpflow_isobufsrc_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrckapwr_16_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrckapwr_16_.yml new file mode 100644 index 000000000..6a0c132aa --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_isobufsrckapwr_16_.yml @@ -0,0 +1,5 @@ +function: lpflow_isobufsrckapwr_16 +info: {} +module: sky130.components +name: lpflow_isobufsrckapwr_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml new file mode 100644 index 000000000..2f4f5c496 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_lsbuf_lh_hl_isowell_tap_1 +info: {} +module: sky130.components +name: lpflow_lsbuf_lh_hl_isowell_tap_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml new file mode 100644 index 000000000..6a71bcb0e --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml @@ -0,0 +1,5 @@ +function: lpflow_lsbuf_lh_hl_isowell_tap_2 +info: {} +module: sky130.components +name: lpflow_lsbuf_lh_hl_isowell_tap_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml new file mode 100644 index 000000000..37fb5c4e4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml @@ -0,0 +1,5 @@ +function: lpflow_lsbuf_lh_hl_isowell_tap_4 +info: {} +module: sky130.components +name: lpflow_lsbuf_lh_hl_isowell_tap_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_4_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_4_.yml new file mode 100644 index 000000000..96fe2f135 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_4_.yml @@ -0,0 +1,5 @@ +function: lpflow_lsbuf_lh_isowell_4 +info: {} +module: sky130.components +name: lpflow_lsbuf_lh_isowell_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_1_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_1_.yml new file mode 100644 index 000000000..a19ca0980 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_1_.yml @@ -0,0 +1,5 @@ +function: lpflow_lsbuf_lh_isowell_tap_1 +info: {} +module: sky130.components +name: lpflow_lsbuf_lh_isowell_tap_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_2_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_2_.yml new file mode 100644 index 000000000..11124827a --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_2_.yml @@ -0,0 +1,5 @@ +function: lpflow_lsbuf_lh_isowell_tap_2 +info: {} +module: sky130.components +name: lpflow_lsbuf_lh_isowell_tap_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_4_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_4_.yml new file mode 100644 index 000000000..df0c02587 --- /dev/null +++ b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_4_.yml @@ -0,0 +1,5 @@ +function: lpflow_lsbuf_lh_isowell_tap_4 +info: {} +module: sky130.components +name: lpflow_lsbuf_lh_isowell_tap_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_macro_sparecell_.yml b/tests/test_components/test_pdk_settings_macro_sparecell_.yml new file mode 100644 index 000000000..a926f6981 --- /dev/null +++ b/tests/test_components/test_pdk_settings_macro_sparecell_.yml @@ -0,0 +1,5 @@ +function: macro_sparecell +info: {} +module: sky130.components +name: macro_sparecell +settings: {} diff --git a/tests/test_components/test_pdk_settings_maj3_1_.yml b/tests/test_components/test_pdk_settings_maj3_1_.yml new file mode 100644 index 000000000..66bfdc65d --- /dev/null +++ b/tests/test_components/test_pdk_settings_maj3_1_.yml @@ -0,0 +1,5 @@ +function: maj3_1 +info: {} +module: sky130.components +name: maj3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_maj3_2_.yml b/tests/test_components/test_pdk_settings_maj3_2_.yml new file mode 100644 index 000000000..925e1ab0c --- /dev/null +++ b/tests/test_components/test_pdk_settings_maj3_2_.yml @@ -0,0 +1,5 @@ +function: maj3_2 +info: {} +module: sky130.components +name: maj3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_maj3_4_.yml b/tests/test_components/test_pdk_settings_maj3_4_.yml new file mode 100644 index 000000000..f9f848daa --- /dev/null +++ b/tests/test_components/test_pdk_settings_maj3_4_.yml @@ -0,0 +1,5 @@ +function: maj3_4 +info: {} +module: sky130.components +name: maj3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2_1_.yml b/tests/test_components/test_pdk_settings_mux2_1_.yml new file mode 100644 index 000000000..e840869f2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux2_1_.yml @@ -0,0 +1,5 @@ +function: mux2_1 +info: {} +module: sky130.components +name: mux2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2_2_.yml b/tests/test_components/test_pdk_settings_mux2_2_.yml new file mode 100644 index 000000000..d529c3823 --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux2_2_.yml @@ -0,0 +1,5 @@ +function: mux2_2 +info: {} +module: sky130.components +name: mux2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2_4_.yml b/tests/test_components/test_pdk_settings_mux2_4_.yml new file mode 100644 index 000000000..96130c315 --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux2_4_.yml @@ -0,0 +1,5 @@ +function: mux2_4 +info: {} +module: sky130.components +name: mux2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2_8_.yml b/tests/test_components/test_pdk_settings_mux2_8_.yml new file mode 100644 index 000000000..bdf65af6d --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux2_8_.yml @@ -0,0 +1,5 @@ +function: mux2_8 +info: {} +module: sky130.components +name: mux2_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2i_1_.yml b/tests/test_components/test_pdk_settings_mux2i_1_.yml new file mode 100644 index 000000000..3a3ce7e3e --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux2i_1_.yml @@ -0,0 +1,5 @@ +function: mux2i_1 +info: {} +module: sky130.components +name: mux2i_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2i_2_.yml b/tests/test_components/test_pdk_settings_mux2i_2_.yml new file mode 100644 index 000000000..6e3c8c9f0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux2i_2_.yml @@ -0,0 +1,5 @@ +function: mux2i_2 +info: {} +module: sky130.components +name: mux2i_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2i_4_.yml b/tests/test_components/test_pdk_settings_mux2i_4_.yml new file mode 100644 index 000000000..124cff8cb --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux2i_4_.yml @@ -0,0 +1,5 @@ +function: mux2i_4 +info: {} +module: sky130.components +name: mux2i_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux4_1_.yml b/tests/test_components/test_pdk_settings_mux4_1_.yml new file mode 100644 index 000000000..ff90d0d84 --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux4_1_.yml @@ -0,0 +1,5 @@ +function: mux4_1 +info: {} +module: sky130.components +name: mux4_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux4_2_.yml b/tests/test_components/test_pdk_settings_mux4_2_.yml new file mode 100644 index 000000000..b7da348cd --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux4_2_.yml @@ -0,0 +1,5 @@ +function: mux4_2 +info: {} +module: sky130.components +name: mux4_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_mux4_4_.yml b/tests/test_components/test_pdk_settings_mux4_4_.yml new file mode 100644 index 000000000..d8c3b0bfb --- /dev/null +++ b/tests/test_components/test_pdk_settings_mux4_4_.yml @@ -0,0 +1,5 @@ +function: mux4_4 +info: {} +module: sky130.components +name: mux4_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2_1_.yml b/tests/test_components/test_pdk_settings_nand2_1_.yml new file mode 100644 index 000000000..75736e252 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand2_1_.yml @@ -0,0 +1,5 @@ +function: nand2_1 +info: {} +module: sky130.components +name: nand2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2_2_.yml b/tests/test_components/test_pdk_settings_nand2_2_.yml new file mode 100644 index 000000000..846816895 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand2_2_.yml @@ -0,0 +1,5 @@ +function: nand2_2 +info: {} +module: sky130.components +name: nand2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2_4_.yml b/tests/test_components/test_pdk_settings_nand2_4_.yml new file mode 100644 index 000000000..e55498085 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand2_4_.yml @@ -0,0 +1,5 @@ +function: nand2_4 +info: {} +module: sky130.components +name: nand2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2_8_.yml b/tests/test_components/test_pdk_settings_nand2_8_.yml new file mode 100644 index 000000000..299ffff08 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand2_8_.yml @@ -0,0 +1,5 @@ +function: nand2_8 +info: {} +module: sky130.components +name: nand2_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2b_1_.yml b/tests/test_components/test_pdk_settings_nand2b_1_.yml new file mode 100644 index 000000000..3217ba99f --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand2b_1_.yml @@ -0,0 +1,5 @@ +function: nand2b_1 +info: {} +module: sky130.components +name: nand2b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2b_2_.yml b/tests/test_components/test_pdk_settings_nand2b_2_.yml new file mode 100644 index 000000000..8ae1cf7ba --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand2b_2_.yml @@ -0,0 +1,5 @@ +function: nand2b_2 +info: {} +module: sky130.components +name: nand2b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2b_4_.yml b/tests/test_components/test_pdk_settings_nand2b_4_.yml new file mode 100644 index 000000000..1adabbcc0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand2b_4_.yml @@ -0,0 +1,5 @@ +function: nand2b_4 +info: {} +module: sky130.components +name: nand2b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3_1_.yml b/tests/test_components/test_pdk_settings_nand3_1_.yml new file mode 100644 index 000000000..3977d60d9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand3_1_.yml @@ -0,0 +1,5 @@ +function: nand3_1 +info: {} +module: sky130.components +name: nand3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3_2_.yml b/tests/test_components/test_pdk_settings_nand3_2_.yml new file mode 100644 index 000000000..033dec6b2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand3_2_.yml @@ -0,0 +1,5 @@ +function: nand3_2 +info: {} +module: sky130.components +name: nand3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3_4_.yml b/tests/test_components/test_pdk_settings_nand3_4_.yml new file mode 100644 index 000000000..d0bf5f1b8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand3_4_.yml @@ -0,0 +1,5 @@ +function: nand3_4 +info: {} +module: sky130.components +name: nand3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3b_1_.yml b/tests/test_components/test_pdk_settings_nand3b_1_.yml new file mode 100644 index 000000000..3afb297b0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand3b_1_.yml @@ -0,0 +1,5 @@ +function: nand3b_1 +info: {} +module: sky130.components +name: nand3b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_1_.yml b/tests/test_components/test_pdk_settings_nand3b_2_.yml similarity index 57% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_1_.yml rename to tests/test_components/test_pdk_settings_nand3b_2_.yml index 2f279a464..cb4886269 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_1_.yml +++ b/tests/test_components/test_pdk_settings_nand3b_2_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__sdfxbp_1 +function: nand3b_2 info: {} module: sky130.components -name: sky130_fd_sc_hd__sdfxbp_1 +name: nand3b_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3b_4_.yml b/tests/test_components/test_pdk_settings_nand3b_4_.yml new file mode 100644 index 000000000..9383cd6ef --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand3b_4_.yml @@ -0,0 +1,5 @@ +function: nand3b_4 +info: {} +module: sky130.components +name: nand3b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4_1_.yml b/tests/test_components/test_pdk_settings_nand4_1_.yml new file mode 100644 index 000000000..406e484ec --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand4_1_.yml @@ -0,0 +1,5 @@ +function: nand4_1 +info: {} +module: sky130.components +name: nand4_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4_2_.yml b/tests/test_components/test_pdk_settings_nand4_2_.yml new file mode 100644 index 000000000..3123e294f --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand4_2_.yml @@ -0,0 +1,5 @@ +function: nand4_2 +info: {} +module: sky130.components +name: nand4_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4_4_.yml b/tests/test_components/test_pdk_settings_nand4_4_.yml new file mode 100644 index 000000000..09061d303 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand4_4_.yml @@ -0,0 +1,5 @@ +function: nand4_4 +info: {} +module: sky130.components +name: nand4_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4b_1_.yml b/tests/test_components/test_pdk_settings_nand4b_1_.yml new file mode 100644 index 000000000..a4c863ff1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand4b_1_.yml @@ -0,0 +1,5 @@ +function: nand4b_1 +info: {} +module: sky130.components +name: nand4b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4b_2_.yml b/tests/test_components/test_pdk_settings_nand4b_2_.yml new file mode 100644 index 000000000..28d873133 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand4b_2_.yml @@ -0,0 +1,5 @@ +function: nand4b_2 +info: {} +module: sky130.components +name: nand4b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4b_4_.yml b/tests/test_components/test_pdk_settings_nand4b_4_.yml new file mode 100644 index 000000000..75c65080e --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand4b_4_.yml @@ -0,0 +1,5 @@ +function: nand4b_4 +info: {} +module: sky130.components +name: nand4b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4bb_1_.yml b/tests/test_components/test_pdk_settings_nand4bb_1_.yml new file mode 100644 index 000000000..7ece1cdce --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand4bb_1_.yml @@ -0,0 +1,5 @@ +function: nand4bb_1 +info: {} +module: sky130.components +name: nand4bb_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4bb_2_.yml b/tests/test_components/test_pdk_settings_nand4bb_2_.yml new file mode 100644 index 000000000..e006811da --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand4bb_2_.yml @@ -0,0 +1,5 @@ +function: nand4bb_2 +info: {} +module: sky130.components +name: nand4bb_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4bb_4_.yml b/tests/test_components/test_pdk_settings_nand4bb_4_.yml new file mode 100644 index 000000000..bf793fa8a --- /dev/null +++ b/tests/test_components/test_pdk_settings_nand4bb_4_.yml @@ -0,0 +1,5 @@ +function: nand4bb_4 +info: {} +module: sky130.components +name: nand4bb_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2_1_.yml b/tests/test_components/test_pdk_settings_nor2_1_.yml new file mode 100644 index 000000000..04418613a --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor2_1_.yml @@ -0,0 +1,5 @@ +function: nor2_1 +info: {} +module: sky130.components +name: nor2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2_2_.yml b/tests/test_components/test_pdk_settings_nor2_2_.yml new file mode 100644 index 000000000..cdc358a50 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor2_2_.yml @@ -0,0 +1,5 @@ +function: nor2_2 +info: {} +module: sky130.components +name: nor2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2_4_.yml b/tests/test_components/test_pdk_settings_nor2_4_.yml new file mode 100644 index 000000000..4adcff6f8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor2_4_.yml @@ -0,0 +1,5 @@ +function: nor2_4 +info: {} +module: sky130.components +name: nor2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2_8_.yml b/tests/test_components/test_pdk_settings_nor2_8_.yml new file mode 100644 index 000000000..ffa984245 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor2_8_.yml @@ -0,0 +1,5 @@ +function: nor2_8 +info: {} +module: sky130.components +name: nor2_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2b_1_.yml b/tests/test_components/test_pdk_settings_nor2b_1_.yml new file mode 100644 index 000000000..642687edc --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor2b_1_.yml @@ -0,0 +1,5 @@ +function: nor2b_1 +info: {} +module: sky130.components +name: nor2b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2b_2_.yml b/tests/test_components/test_pdk_settings_nor2b_2_.yml new file mode 100644 index 000000000..b13bacbcc --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor2b_2_.yml @@ -0,0 +1,5 @@ +function: nor2b_2 +info: {} +module: sky130.components +name: nor2b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2b_4_.yml b/tests/test_components/test_pdk_settings_nor2b_4_.yml new file mode 100644 index 000000000..29ef77c42 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor2b_4_.yml @@ -0,0 +1,5 @@ +function: nor2b_4 +info: {} +module: sky130.components +name: nor2b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3_1_.yml b/tests/test_components/test_pdk_settings_nor3_1_.yml new file mode 100644 index 000000000..2c87644bb --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor3_1_.yml @@ -0,0 +1,5 @@ +function: nor3_1 +info: {} +module: sky130.components +name: nor3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3_2_.yml b/tests/test_components/test_pdk_settings_nor3_2_.yml new file mode 100644 index 000000000..389f1b850 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor3_2_.yml @@ -0,0 +1,5 @@ +function: nor3_2 +info: {} +module: sky130.components +name: nor3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3_4_.yml b/tests/test_components/test_pdk_settings_nor3_4_.yml new file mode 100644 index 000000000..fda4df929 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor3_4_.yml @@ -0,0 +1,5 @@ +function: nor3_4 +info: {} +module: sky130.components +name: nor3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3b_1_.yml b/tests/test_components/test_pdk_settings_nor3b_1_.yml new file mode 100644 index 000000000..5693ef093 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor3b_1_.yml @@ -0,0 +1,5 @@ +function: nor3b_1 +info: {} +module: sky130.components +name: nor3b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3b_2_.yml b/tests/test_components/test_pdk_settings_nor3b_2_.yml new file mode 100644 index 000000000..f7b5faed2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor3b_2_.yml @@ -0,0 +1,5 @@ +function: nor3b_2 +info: {} +module: sky130.components +name: nor3b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3b_4_.yml b/tests/test_components/test_pdk_settings_nor3b_4_.yml new file mode 100644 index 000000000..279177637 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor3b_4_.yml @@ -0,0 +1,5 @@ +function: nor3b_4 +info: {} +module: sky130.components +name: nor3b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4_1_.yml b/tests/test_components/test_pdk_settings_nor4_1_.yml new file mode 100644 index 000000000..f839fcad5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor4_1_.yml @@ -0,0 +1,5 @@ +function: nor4_1 +info: {} +module: sky130.components +name: nor4_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4_2_.yml b/tests/test_components/test_pdk_settings_nor4_2_.yml new file mode 100644 index 000000000..05c3a4881 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor4_2_.yml @@ -0,0 +1,5 @@ +function: nor4_2 +info: {} +module: sky130.components +name: nor4_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4_4_.yml b/tests/test_components/test_pdk_settings_nor4_4_.yml new file mode 100644 index 000000000..9d4f205c4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor4_4_.yml @@ -0,0 +1,5 @@ +function: nor4_4 +info: {} +module: sky130.components +name: nor4_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4b_1_.yml b/tests/test_components/test_pdk_settings_nor4b_1_.yml new file mode 100644 index 000000000..1a249d193 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor4b_1_.yml @@ -0,0 +1,5 @@ +function: nor4b_1 +info: {} +module: sky130.components +name: nor4b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4b_2_.yml b/tests/test_components/test_pdk_settings_nor4b_2_.yml new file mode 100644 index 000000000..4b7c946f0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor4b_2_.yml @@ -0,0 +1,5 @@ +function: nor4b_2 +info: {} +module: sky130.components +name: nor4b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4b_4_.yml b/tests/test_components/test_pdk_settings_nor4b_4_.yml new file mode 100644 index 000000000..90693a14c --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor4b_4_.yml @@ -0,0 +1,5 @@ +function: nor4b_4 +info: {} +module: sky130.components +name: nor4b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nand3_1_.yml b/tests/test_components/test_pdk_settings_nor4bb_1_.yml similarity index 57% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nand3_1_.yml rename to tests/test_components/test_pdk_settings_nor4bb_1_.yml index c79202566..d658ed519 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nand3_1_.yml +++ b/tests/test_components/test_pdk_settings_nor4bb_1_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hvl__nand3_1 +function: nor4bb_1 info: {} module: sky130.components -name: sky130_fd_sc_hvl__nand3_1 +name: nor4bb_1 settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4bb_2_.yml b/tests/test_components/test_pdk_settings_nor4bb_2_.yml new file mode 100644 index 000000000..3e3d6059a --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor4bb_2_.yml @@ -0,0 +1,5 @@ +function: nor4bb_2 +info: {} +module: sky130.components +name: nor4bb_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4bb_4_.yml b/tests/test_components/test_pdk_settings_nor4bb_4_.yml new file mode 100644 index 000000000..b8053c3e2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_nor4bb_4_.yml @@ -0,0 +1,5 @@ +function: nor4bb_4 +info: {} +module: sky130.components +name: nor4bb_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111a_1_.yml b/tests/test_components/test_pdk_settings_o2111a_1_.yml new file mode 100644 index 000000000..00359d9ef --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2111a_1_.yml @@ -0,0 +1,5 @@ +function: o2111a_1 +info: {} +module: sky130.components +name: o2111a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111a_2_.yml b/tests/test_components/test_pdk_settings_o2111a_2_.yml new file mode 100644 index 000000000..c8264c274 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2111a_2_.yml @@ -0,0 +1,5 @@ +function: o2111a_2 +info: {} +module: sky130.components +name: o2111a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111a_4_.yml b/tests/test_components/test_pdk_settings_o2111a_4_.yml new file mode 100644 index 000000000..8cb245b50 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2111a_4_.yml @@ -0,0 +1,5 @@ +function: o2111a_4 +info: {} +module: sky130.components +name: o2111a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111ai_1_.yml b/tests/test_components/test_pdk_settings_o2111ai_1_.yml new file mode 100644 index 000000000..833d10e77 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2111ai_1_.yml @@ -0,0 +1,5 @@ +function: o2111ai_1 +info: {} +module: sky130.components +name: o2111ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111ai_2_.yml b/tests/test_components/test_pdk_settings_o2111ai_2_.yml new file mode 100644 index 000000000..b8d594de0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2111ai_2_.yml @@ -0,0 +1,5 @@ +function: o2111ai_2 +info: {} +module: sky130.components +name: o2111ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111ai_4_.yml b/tests/test_components/test_pdk_settings_o2111ai_4_.yml new file mode 100644 index 000000000..1bb3d396d --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2111ai_4_.yml @@ -0,0 +1,5 @@ +function: o2111ai_4 +info: {} +module: sky130.components +name: o2111ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o211a_1_.yml b/tests/test_components/test_pdk_settings_o211a_1_.yml new file mode 100644 index 000000000..6dc986ae7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o211a_1_.yml @@ -0,0 +1,5 @@ +function: o211a_1 +info: {} +module: sky130.components +name: o211a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o211a_2_.yml b/tests/test_components/test_pdk_settings_o211a_2_.yml new file mode 100644 index 000000000..81c62123e --- /dev/null +++ b/tests/test_components/test_pdk_settings_o211a_2_.yml @@ -0,0 +1,5 @@ +function: o211a_2 +info: {} +module: sky130.components +name: o211a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o211a_4_.yml b/tests/test_components/test_pdk_settings_o211a_4_.yml new file mode 100644 index 000000000..acac59425 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o211a_4_.yml @@ -0,0 +1,5 @@ +function: o211a_4 +info: {} +module: sky130.components +name: o211a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o211ai_1_.yml b/tests/test_components/test_pdk_settings_o211ai_1_.yml new file mode 100644 index 000000000..1a7ed5f26 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o211ai_1_.yml @@ -0,0 +1,5 @@ +function: o211ai_1 +info: {} +module: sky130.components +name: o211ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o211ai_2_.yml b/tests/test_components/test_pdk_settings_o211ai_2_.yml new file mode 100644 index 000000000..a79afcf2f --- /dev/null +++ b/tests/test_components/test_pdk_settings_o211ai_2_.yml @@ -0,0 +1,5 @@ +function: o211ai_2 +info: {} +module: sky130.components +name: o211ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o211ai_4_.yml b/tests/test_components/test_pdk_settings_o211ai_4_.yml new file mode 100644 index 000000000..725c4e44e --- /dev/null +++ b/tests/test_components/test_pdk_settings_o211ai_4_.yml @@ -0,0 +1,5 @@ +function: o211ai_4 +info: {} +module: sky130.components +name: o211ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o21a_1_.yml b/tests/test_components/test_pdk_settings_o21a_1_.yml new file mode 100644 index 000000000..294d0a47a --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21a_1_.yml @@ -0,0 +1,5 @@ +function: o21a_1 +info: {} +module: sky130.components +name: o21a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o21a_2_.yml b/tests/test_components/test_pdk_settings_o21a_2_.yml new file mode 100644 index 000000000..8ef9423b5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21a_2_.yml @@ -0,0 +1,5 @@ +function: o21a_2 +info: {} +module: sky130.components +name: o21a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o21a_4_.yml b/tests/test_components/test_pdk_settings_o21a_4_.yml new file mode 100644 index 000000000..ca37b1c84 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21a_4_.yml @@ -0,0 +1,5 @@ +function: o21a_4 +info: {} +module: sky130.components +name: o21a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ai_0_.yml b/tests/test_components/test_pdk_settings_o21ai_0_.yml new file mode 100644 index 000000000..e9acb7da8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21ai_0_.yml @@ -0,0 +1,5 @@ +function: o21ai_0 +info: {} +module: sky130.components +name: o21ai_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4_1_.yml b/tests/test_components/test_pdk_settings_o21ai_1_.yml similarity index 54% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4_1_.yml rename to tests/test_components/test_pdk_settings_o21ai_1_.yml index 6e4ac63d9..4a585ae11 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4_1_.yml +++ b/tests/test_components/test_pdk_settings_o21ai_1_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__nand4_1 +function: o21ai_1 info: {} module: sky130.components -name: sky130_fd_sc_hs__nand4_1 +name: o21ai_1 settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ai_2_.yml b/tests/test_components/test_pdk_settings_o21ai_2_.yml new file mode 100644 index 000000000..d4685b63a --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21ai_2_.yml @@ -0,0 +1,5 @@ +function: o21ai_2 +info: {} +module: sky130.components +name: o21ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4_4_.yml b/tests/test_components/test_pdk_settings_o21ai_4_.yml similarity index 54% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4_4_.yml rename to tests/test_components/test_pdk_settings_o21ai_4_.yml index cf3ca5c31..1f322b76a 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4_4_.yml +++ b/tests/test_components/test_pdk_settings_o21ai_4_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__nand4_4 +function: o21ai_4 info: {} module: sky130.components -name: sky130_fd_sc_hs__nand4_4 +name: o21ai_4 settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ba_1_.yml b/tests/test_components/test_pdk_settings_o21ba_1_.yml new file mode 100644 index 000000000..022e50dca --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21ba_1_.yml @@ -0,0 +1,5 @@ +function: o21ba_1 +info: {} +module: sky130.components +name: o21ba_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ba_2_.yml b/tests/test_components/test_pdk_settings_o21ba_2_.yml new file mode 100644 index 000000000..ce8748225 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21ba_2_.yml @@ -0,0 +1,5 @@ +function: o21ba_2 +info: {} +module: sky130.components +name: o21ba_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ba_4_.yml b/tests/test_components/test_pdk_settings_o21ba_4_.yml new file mode 100644 index 000000000..7d9b830f8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21ba_4_.yml @@ -0,0 +1,5 @@ +function: o21ba_4 +info: {} +module: sky130.components +name: o21ba_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o21bai_1_.yml b/tests/test_components/test_pdk_settings_o21bai_1_.yml new file mode 100644 index 000000000..d8765b640 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21bai_1_.yml @@ -0,0 +1,5 @@ +function: o21bai_1 +info: {} +module: sky130.components +name: o21bai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o21bai_2_.yml b/tests/test_components/test_pdk_settings_o21bai_2_.yml new file mode 100644 index 000000000..32ba53978 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21bai_2_.yml @@ -0,0 +1,5 @@ +function: o21bai_2 +info: {} +module: sky130.components +name: o21bai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o21bai_4_.yml b/tests/test_components/test_pdk_settings_o21bai_4_.yml new file mode 100644 index 000000000..9824f7e0f --- /dev/null +++ b/tests/test_components/test_pdk_settings_o21bai_4_.yml @@ -0,0 +1,5 @@ +function: o21bai_4 +info: {} +module: sky130.components +name: o21bai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o221a_1_.yml b/tests/test_components/test_pdk_settings_o221a_1_.yml new file mode 100644 index 000000000..dcc38a8bd --- /dev/null +++ b/tests/test_components/test_pdk_settings_o221a_1_.yml @@ -0,0 +1,5 @@ +function: o221a_1 +info: {} +module: sky130.components +name: o221a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o221a_2_.yml b/tests/test_components/test_pdk_settings_o221a_2_.yml new file mode 100644 index 000000000..ed446bad5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o221a_2_.yml @@ -0,0 +1,5 @@ +function: o221a_2 +info: {} +module: sky130.components +name: o221a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o221a_4_.yml b/tests/test_components/test_pdk_settings_o221a_4_.yml new file mode 100644 index 000000000..f0ca233d7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o221a_4_.yml @@ -0,0 +1,5 @@ +function: o221a_4 +info: {} +module: sky130.components +name: o221a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o221ai_1_.yml b/tests/test_components/test_pdk_settings_o221ai_1_.yml new file mode 100644 index 000000000..0c6c26cd4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o221ai_1_.yml @@ -0,0 +1,5 @@ +function: o221ai_1 +info: {} +module: sky130.components +name: o221ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o221ai_2_.yml b/tests/test_components/test_pdk_settings_o221ai_2_.yml new file mode 100644 index 000000000..e3435da66 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o221ai_2_.yml @@ -0,0 +1,5 @@ +function: o221ai_2 +info: {} +module: sky130.components +name: o221ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o221ai_4_.yml b/tests/test_components/test_pdk_settings_o221ai_4_.yml new file mode 100644 index 000000000..f34d6224b --- /dev/null +++ b/tests/test_components/test_pdk_settings_o221ai_4_.yml @@ -0,0 +1,5 @@ +function: o221ai_4 +info: {} +module: sky130.components +name: o221ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o22a_1_.yml b/tests/test_components/test_pdk_settings_o22a_1_.yml new file mode 100644 index 000000000..3ab8d0d4d --- /dev/null +++ b/tests/test_components/test_pdk_settings_o22a_1_.yml @@ -0,0 +1,5 @@ +function: o22a_1 +info: {} +module: sky130.components +name: o22a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o22a_2_.yml b/tests/test_components/test_pdk_settings_o22a_2_.yml new file mode 100644 index 000000000..8ef3e426f --- /dev/null +++ b/tests/test_components/test_pdk_settings_o22a_2_.yml @@ -0,0 +1,5 @@ +function: o22a_2 +info: {} +module: sky130.components +name: o22a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o22a_4_.yml b/tests/test_components/test_pdk_settings_o22a_4_.yml new file mode 100644 index 000000000..a301c4967 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o22a_4_.yml @@ -0,0 +1,5 @@ +function: o22a_4 +info: {} +module: sky130.components +name: o22a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o22ai_1_.yml b/tests/test_components/test_pdk_settings_o22ai_1_.yml new file mode 100644 index 000000000..be13ad4d2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o22ai_1_.yml @@ -0,0 +1,5 @@ +function: o22ai_1 +info: {} +module: sky130.components +name: o22ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o22ai_2_.yml b/tests/test_components/test_pdk_settings_o22ai_2_.yml new file mode 100644 index 000000000..a7e9b1502 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o22ai_2_.yml @@ -0,0 +1,5 @@ +function: o22ai_2 +info: {} +module: sky130.components +name: o22ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o22ai_4_.yml b/tests/test_components/test_pdk_settings_o22ai_4_.yml new file mode 100644 index 000000000..dc51801f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o22ai_4_.yml @@ -0,0 +1,5 @@ +function: o22ai_4 +info: {} +module: sky130.components +name: o22ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2a_1_.yml b/tests/test_components/test_pdk_settings_o2bb2a_1_.yml new file mode 100644 index 000000000..f1e5c18e1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2bb2a_1_.yml @@ -0,0 +1,5 @@ +function: o2bb2a_1 +info: {} +module: sky130.components +name: o2bb2a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2a_2_.yml b/tests/test_components/test_pdk_settings_o2bb2a_2_.yml new file mode 100644 index 000000000..d718ac938 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2bb2a_2_.yml @@ -0,0 +1,5 @@ +function: o2bb2a_2 +info: {} +module: sky130.components +name: o2bb2a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2a_4_.yml b/tests/test_components/test_pdk_settings_o2bb2a_4_.yml new file mode 100644 index 000000000..2e72a34d1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2bb2a_4_.yml @@ -0,0 +1,5 @@ +function: o2bb2a_4 +info: {} +module: sky130.components +name: o2bb2a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2ai_1_.yml b/tests/test_components/test_pdk_settings_o2bb2ai_1_.yml new file mode 100644 index 000000000..060a96f02 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2bb2ai_1_.yml @@ -0,0 +1,5 @@ +function: o2bb2ai_1 +info: {} +module: sky130.components +name: o2bb2ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2ai_2_.yml b/tests/test_components/test_pdk_settings_o2bb2ai_2_.yml new file mode 100644 index 000000000..6097a170c --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2bb2ai_2_.yml @@ -0,0 +1,5 @@ +function: o2bb2ai_2 +info: {} +module: sky130.components +name: o2bb2ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2ai_4_.yml b/tests/test_components/test_pdk_settings_o2bb2ai_4_.yml new file mode 100644 index 000000000..414459b12 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o2bb2ai_4_.yml @@ -0,0 +1,5 @@ +function: o2bb2ai_4 +info: {} +module: sky130.components +name: o2bb2ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o311a_1_.yml b/tests/test_components/test_pdk_settings_o311a_1_.yml new file mode 100644 index 000000000..008806d30 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o311a_1_.yml @@ -0,0 +1,5 @@ +function: o311a_1 +info: {} +module: sky130.components +name: o311a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o311a_2_.yml b/tests/test_components/test_pdk_settings_o311a_2_.yml new file mode 100644 index 000000000..2ee366b10 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o311a_2_.yml @@ -0,0 +1,5 @@ +function: o311a_2 +info: {} +module: sky130.components +name: o311a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o311a_4_.yml b/tests/test_components/test_pdk_settings_o311a_4_.yml new file mode 100644 index 000000000..39eb1caa8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o311a_4_.yml @@ -0,0 +1,5 @@ +function: o311a_4 +info: {} +module: sky130.components +name: o311a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o311ai_0_.yml b/tests/test_components/test_pdk_settings_o311ai_0_.yml new file mode 100644 index 000000000..4e8f06419 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o311ai_0_.yml @@ -0,0 +1,5 @@ +function: o311ai_0 +info: {} +module: sky130.components +name: o311ai_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o311ai_1_.yml b/tests/test_components/test_pdk_settings_o311ai_1_.yml new file mode 100644 index 000000000..080819dc5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o311ai_1_.yml @@ -0,0 +1,5 @@ +function: o311ai_1 +info: {} +module: sky130.components +name: o311ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o311ai_2_.yml b/tests/test_components/test_pdk_settings_o311ai_2_.yml new file mode 100644 index 000000000..a2e83732b --- /dev/null +++ b/tests/test_components/test_pdk_settings_o311ai_2_.yml @@ -0,0 +1,5 @@ +function: o311ai_2 +info: {} +module: sky130.components +name: o311ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o311ai_4_.yml b/tests/test_components/test_pdk_settings_o311ai_4_.yml new file mode 100644 index 000000000..cc74428d1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o311ai_4_.yml @@ -0,0 +1,5 @@ +function: o311ai_4 +info: {} +module: sky130.components +name: o311ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o31a_1_.yml b/tests/test_components/test_pdk_settings_o31a_1_.yml new file mode 100644 index 000000000..86c55c1de --- /dev/null +++ b/tests/test_components/test_pdk_settings_o31a_1_.yml @@ -0,0 +1,5 @@ +function: o31a_1 +info: {} +module: sky130.components +name: o31a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o31a_2_.yml b/tests/test_components/test_pdk_settings_o31a_2_.yml new file mode 100644 index 000000000..7827ab38f --- /dev/null +++ b/tests/test_components/test_pdk_settings_o31a_2_.yml @@ -0,0 +1,5 @@ +function: o31a_2 +info: {} +module: sky130.components +name: o31a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o31a_4_.yml b/tests/test_components/test_pdk_settings_o31a_4_.yml new file mode 100644 index 000000000..5a2272508 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o31a_4_.yml @@ -0,0 +1,5 @@ +function: o31a_4 +info: {} +module: sky130.components +name: o31a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o31ai_1_.yml b/tests/test_components/test_pdk_settings_o31ai_1_.yml new file mode 100644 index 000000000..1c6dfa4c7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o31ai_1_.yml @@ -0,0 +1,5 @@ +function: o31ai_1 +info: {} +module: sky130.components +name: o31ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o31ai_2_.yml b/tests/test_components/test_pdk_settings_o31ai_2_.yml new file mode 100644 index 000000000..c73e71837 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o31ai_2_.yml @@ -0,0 +1,5 @@ +function: o31ai_2 +info: {} +module: sky130.components +name: o31ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o31ai_4_.yml b/tests/test_components/test_pdk_settings_o31ai_4_.yml new file mode 100644 index 000000000..619e95c88 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o31ai_4_.yml @@ -0,0 +1,5 @@ +function: o31ai_4 +info: {} +module: sky130.components +name: o31ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o32a_1_.yml b/tests/test_components/test_pdk_settings_o32a_1_.yml new file mode 100644 index 000000000..b31707b3a --- /dev/null +++ b/tests/test_components/test_pdk_settings_o32a_1_.yml @@ -0,0 +1,5 @@ +function: o32a_1 +info: {} +module: sky130.components +name: o32a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o32a_2_.yml b/tests/test_components/test_pdk_settings_o32a_2_.yml new file mode 100644 index 000000000..dcca60797 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o32a_2_.yml @@ -0,0 +1,5 @@ +function: o32a_2 +info: {} +module: sky130.components +name: o32a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o32a_4_.yml b/tests/test_components/test_pdk_settings_o32a_4_.yml new file mode 100644 index 000000000..62c26a502 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o32a_4_.yml @@ -0,0 +1,5 @@ +function: o32a_4 +info: {} +module: sky130.components +name: o32a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o32ai_1_.yml b/tests/test_components/test_pdk_settings_o32ai_1_.yml new file mode 100644 index 000000000..067af0590 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o32ai_1_.yml @@ -0,0 +1,5 @@ +function: o32ai_1 +info: {} +module: sky130.components +name: o32ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o32ai_2_.yml b/tests/test_components/test_pdk_settings_o32ai_2_.yml new file mode 100644 index 000000000..5dc142ced --- /dev/null +++ b/tests/test_components/test_pdk_settings_o32ai_2_.yml @@ -0,0 +1,5 @@ +function: o32ai_2 +info: {} +module: sky130.components +name: o32ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o32ai_4_.yml b/tests/test_components/test_pdk_settings_o32ai_4_.yml new file mode 100644 index 000000000..e26c7ef91 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o32ai_4_.yml @@ -0,0 +1,5 @@ +function: o32ai_4 +info: {} +module: sky130.components +name: o32ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o41a_1_.yml b/tests/test_components/test_pdk_settings_o41a_1_.yml new file mode 100644 index 000000000..17f4f8d6c --- /dev/null +++ b/tests/test_components/test_pdk_settings_o41a_1_.yml @@ -0,0 +1,5 @@ +function: o41a_1 +info: {} +module: sky130.components +name: o41a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o41a_2_.yml b/tests/test_components/test_pdk_settings_o41a_2_.yml new file mode 100644 index 000000000..7fc8c4774 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o41a_2_.yml @@ -0,0 +1,5 @@ +function: o41a_2 +info: {} +module: sky130.components +name: o41a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o41a_4_.yml b/tests/test_components/test_pdk_settings_o41a_4_.yml new file mode 100644 index 000000000..ed3a07f28 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o41a_4_.yml @@ -0,0 +1,5 @@ +function: o41a_4 +info: {} +module: sky130.components +name: o41a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o41ai_1_.yml b/tests/test_components/test_pdk_settings_o41ai_1_.yml new file mode 100644 index 000000000..43d23aca3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o41ai_1_.yml @@ -0,0 +1,5 @@ +function: o41ai_1 +info: {} +module: sky130.components +name: o41ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o41ai_2_.yml b/tests/test_components/test_pdk_settings_o41ai_2_.yml new file mode 100644 index 000000000..d7e0910f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o41ai_2_.yml @@ -0,0 +1,5 @@ +function: o41ai_2 +info: {} +module: sky130.components +name: o41ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_o41ai_4_.yml b/tests/test_components/test_pdk_settings_o41ai_4_.yml new file mode 100644 index 000000000..f20d65c89 --- /dev/null +++ b/tests/test_components/test_pdk_settings_o41ai_4_.yml @@ -0,0 +1,5 @@ +function: o41ai_4 +info: {} +module: sky130.components +name: o41ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or2_0_.yml b/tests/test_components/test_pdk_settings_or2_0_.yml new file mode 100644 index 000000000..334ca7520 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or2_0_.yml @@ -0,0 +1,5 @@ +function: or2_0 +info: {} +module: sky130.components +name: or2_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or2_1_.yml b/tests/test_components/test_pdk_settings_or2_1_.yml new file mode 100644 index 000000000..ae1a11749 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or2_1_.yml @@ -0,0 +1,5 @@ +function: or2_1 +info: {} +module: sky130.components +name: or2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or2_2_.yml b/tests/test_components/test_pdk_settings_or2_2_.yml new file mode 100644 index 000000000..d3d8b9b81 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or2_2_.yml @@ -0,0 +1,5 @@ +function: or2_2 +info: {} +module: sky130.components +name: or2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or2_4_.yml b/tests/test_components/test_pdk_settings_or2_4_.yml new file mode 100644 index 000000000..b8686230b --- /dev/null +++ b/tests/test_components/test_pdk_settings_or2_4_.yml @@ -0,0 +1,5 @@ +function: or2_4 +info: {} +module: sky130.components +name: or2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or2b_1_.yml b/tests/test_components/test_pdk_settings_or2b_1_.yml new file mode 100644 index 000000000..657897c81 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or2b_1_.yml @@ -0,0 +1,5 @@ +function: or2b_1 +info: {} +module: sky130.components +name: or2b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or2b_2_.yml b/tests/test_components/test_pdk_settings_or2b_2_.yml new file mode 100644 index 000000000..7fa88820c --- /dev/null +++ b/tests/test_components/test_pdk_settings_or2b_2_.yml @@ -0,0 +1,5 @@ +function: or2b_2 +info: {} +module: sky130.components +name: or2b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or2b_4_.yml b/tests/test_components/test_pdk_settings_or2b_4_.yml new file mode 100644 index 000000000..8a6437dec --- /dev/null +++ b/tests/test_components/test_pdk_settings_or2b_4_.yml @@ -0,0 +1,5 @@ +function: or2b_4 +info: {} +module: sky130.components +name: or2b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or3_1_.yml b/tests/test_components/test_pdk_settings_or3_1_.yml new file mode 100644 index 000000000..4e52976ce --- /dev/null +++ b/tests/test_components/test_pdk_settings_or3_1_.yml @@ -0,0 +1,5 @@ +function: or3_1 +info: {} +module: sky130.components +name: or3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or3_2_.yml b/tests/test_components/test_pdk_settings_or3_2_.yml new file mode 100644 index 000000000..700e2f546 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or3_2_.yml @@ -0,0 +1,5 @@ +function: or3_2 +info: {} +module: sky130.components +name: or3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or3_4_.yml b/tests/test_components/test_pdk_settings_or3_4_.yml new file mode 100644 index 000000000..76e096a43 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or3_4_.yml @@ -0,0 +1,5 @@ +function: or3_4 +info: {} +module: sky130.components +name: or3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or3b_1_.yml b/tests/test_components/test_pdk_settings_or3b_1_.yml new file mode 100644 index 000000000..72104e356 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or3b_1_.yml @@ -0,0 +1,5 @@ +function: or3b_1 +info: {} +module: sky130.components +name: or3b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or3b_2_.yml b/tests/test_components/test_pdk_settings_or3b_2_.yml new file mode 100644 index 000000000..d5b0444df --- /dev/null +++ b/tests/test_components/test_pdk_settings_or3b_2_.yml @@ -0,0 +1,5 @@ +function: or3b_2 +info: {} +module: sky130.components +name: or3b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or3b_4_.yml b/tests/test_components/test_pdk_settings_or3b_4_.yml new file mode 100644 index 000000000..df7a4186c --- /dev/null +++ b/tests/test_components/test_pdk_settings_or3b_4_.yml @@ -0,0 +1,5 @@ +function: or3b_4 +info: {} +module: sky130.components +name: or3b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or4_1_.yml b/tests/test_components/test_pdk_settings_or4_1_.yml new file mode 100644 index 000000000..035229319 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or4_1_.yml @@ -0,0 +1,5 @@ +function: or4_1 +info: {} +module: sky130.components +name: or4_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or4_2_.yml b/tests/test_components/test_pdk_settings_or4_2_.yml new file mode 100644 index 000000000..72686e74a --- /dev/null +++ b/tests/test_components/test_pdk_settings_or4_2_.yml @@ -0,0 +1,5 @@ +function: or4_2 +info: {} +module: sky130.components +name: or4_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or4_4_.yml b/tests/test_components/test_pdk_settings_or4_4_.yml new file mode 100644 index 000000000..dce77af2a --- /dev/null +++ b/tests/test_components/test_pdk_settings_or4_4_.yml @@ -0,0 +1,5 @@ +function: or4_4 +info: {} +module: sky130.components +name: or4_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or4b_1_.yml b/tests/test_components/test_pdk_settings_or4b_1_.yml new file mode 100644 index 000000000..891a2ce6c --- /dev/null +++ b/tests/test_components/test_pdk_settings_or4b_1_.yml @@ -0,0 +1,5 @@ +function: or4b_1 +info: {} +module: sky130.components +name: or4b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or4b_2_.yml b/tests/test_components/test_pdk_settings_or4b_2_.yml new file mode 100644 index 000000000..29b0c53d6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or4b_2_.yml @@ -0,0 +1,5 @@ +function: or4b_2 +info: {} +module: sky130.components +name: or4b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or4b_4_.yml b/tests/test_components/test_pdk_settings_or4b_4_.yml new file mode 100644 index 000000000..90e478394 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or4b_4_.yml @@ -0,0 +1,5 @@ +function: or4b_4 +info: {} +module: sky130.components +name: or4b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or4bb_1_.yml b/tests/test_components/test_pdk_settings_or4bb_1_.yml new file mode 100644 index 000000000..09fd195a8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or4bb_1_.yml @@ -0,0 +1,5 @@ +function: or4bb_1 +info: {} +module: sky130.components +name: or4bb_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or4bb_2_.yml b/tests/test_components/test_pdk_settings_or4bb_2_.yml new file mode 100644 index 000000000..f80e2c1d1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or4bb_2_.yml @@ -0,0 +1,5 @@ +function: or4bb_2 +info: {} +module: sky130.components +name: or4bb_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_or4bb_4_.yml b/tests/test_components/test_pdk_settings_or4bb_4_.yml new file mode 100644 index 000000000..03b5ec8d1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_or4bb_4_.yml @@ -0,0 +1,5 @@ +function: or4bb_4 +info: {} +module: sky130.components +name: or4bb_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_probe_p_8_.yml b/tests/test_components/test_pdk_settings_probe_p_8_.yml new file mode 100644 index 000000000..7edb99ea1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_probe_p_8_.yml @@ -0,0 +1,5 @@ +function: probe_p_8 +info: {} +module: sky130.components +name: probe_p_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_probec_p_8_.yml b/tests/test_components/test_pdk_settings_probec_p_8_.yml new file mode 100644 index 000000000..5082a32ac --- /dev/null +++ b/tests/test_components/test_pdk_settings_probec_p_8_.yml @@ -0,0 +1,5 @@ +function: probec_p_8 +info: {} +module: sky130.components +name: probec_p_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_aura_blocking_.yml b/tests/test_components/test_pdk_settings_rf_aura_blocking_.yml new file mode 100644 index 000000000..b1a143465 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_aura_blocking_.yml @@ -0,0 +1,5 @@ +function: rf_aura_blocking +info: {} +module: sky130.components +name: rf_aura_blocking +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_aura_drc_flag_check_.yml b/tests/test_components/test_pdk_settings_rf_aura_drc_flag_check_.yml new file mode 100644 index 000000000..c73e5b2f7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_aura_drc_flag_check_.yml @@ -0,0 +1,5 @@ +function: rf_aura_drc_flag_check +info: {} +module: sky130.components +name: rf_aura_drc_flag_check +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_aura_lvs_drc_.yml b/tests/test_components/test_pdk_settings_rf_aura_lvs_drc_.yml new file mode 100644 index 000000000..3cc3c95a8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_aura_lvs_drc_.yml @@ -0,0 +1,5 @@ +function: rf_aura_lvs_drc +info: {} +module: sky130.components +name: rf_aura_lvs_drc +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p15_.yml new file mode 100644 index 000000000..dc848f0e2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM02W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p18_.yml new file mode 100644 index 000000000..2ea1ca5c0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM02W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p25_.yml new file mode 100644 index 000000000..91efc8902 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM02W1p65L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p15_.yml new file mode 100644 index 000000000..560647da9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM02W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p18_.yml new file mode 100644 index 000000000..4f08ce4ea --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM02W3p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p25_.yml new file mode 100644 index 000000000..824ede051 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM02W3p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p15_.yml new file mode 100644 index 000000000..e5f439af4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM02W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p18_.yml new file mode 100644 index 000000000..2f3159805 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM02W5p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p25_.yml new file mode 100644 index 000000000..9c4503d1f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM02W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p15_.yml new file mode 100644 index 000000000..9f6610054 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM04W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p18_.yml new file mode 100644 index 000000000..d167afa9f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM04W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p25_.yml new file mode 100644 index 000000000..64c5a5378 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM04W1p65L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p15_.yml new file mode 100644 index 000000000..e076ba777 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_1_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p18_.yml similarity index 65% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_1_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p18_.yml index c04ba21c9..60f7941e6 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_1_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p18_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__a221o_1 +function: rf_nfet_01v8_aM04W3p00L0p18 info: {} module: sky130.components -name: sky130_fd_sc_hs__a221o_1 +name: rf_nfet_01v8_aM04W3p00L0p18 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p25_.yml new file mode 100644 index 000000000..c3422c903 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM04W3p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p15_.yml new file mode 100644 index 000000000..d80a04368 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p18_.yml new file mode 100644 index 000000000..964a6e304 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM04W5p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p25_.yml new file mode 100644 index 000000000..2a14bf3da --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_aM04W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_aM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p15_.yml new file mode 100644 index 000000000..d0822680c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM02W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p18_.yml new file mode 100644 index 000000000..141846352 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM02W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p25_.yml new file mode 100644 index 000000000..7eb41b26f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM02W1p65L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_1_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p15_.yml similarity index 68% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_1_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p15_.yml index dc324aec3..b0bffe210 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_1_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p15_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__nor4_1 +function: rf_nfet_01v8_bM02W3p00L0p15 info: {} module: sky130.components -name: sky130_fd_sc_hd__nor4_1 +name: rf_nfet_01v8_bM02W3p00L0p15 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_4_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p18_.yml similarity index 68% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_4_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p18_.yml index 108d70d61..cadc02977 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_4_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p18_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__nor4_4 +function: rf_nfet_01v8_bM02W3p00L0p18 info: {} module: sky130.components -name: sky130_fd_sc_hd__nor4_4 +name: rf_nfet_01v8_bM02W3p00L0p18 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p25_.yml new file mode 100644 index 000000000..ef96d0ce4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM02W3p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p15_.yml new file mode 100644 index 000000000..1c7aab755 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM02W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p18_.yml new file mode 100644 index 000000000..1952980e1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM02W5p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p25_.yml new file mode 100644 index 000000000..e73983c59 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM02W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p15_.yml new file mode 100644 index 000000000..da7d4f552 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM04W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p18_.yml new file mode 100644 index 000000000..b5220c89f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM04W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p25_.yml new file mode 100644 index 000000000..4379a06a7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM04W1p65L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p15_.yml new file mode 100644 index 000000000..c9ad2a49c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p18_.yml new file mode 100644 index 000000000..edb918d9a --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM04W3p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p25_.yml new file mode 100644 index 000000000..8c6faf2e9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM04W3p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p15_.yml new file mode 100644 index 000000000..59a920631 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p18_.yml new file mode 100644 index 000000000..acda1b4ec --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM04W5p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p25_.yml new file mode 100644 index 000000000..3eb3adb2d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_bM04W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_bM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml new file mode 100644 index 000000000..e6d0161c7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_hcM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_hcM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml new file mode 100644 index 000000000..a654ead02 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_hcM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_hcM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml new file mode 100644 index 000000000..3013ca88c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF02W0p42L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF02W0p42L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml new file mode 100644 index 000000000..3cab51c8e --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF02W0p84L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF02W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml new file mode 100644 index 000000000..79d67dfa2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF02W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml new file mode 100644 index 000000000..2675c4751 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF02W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml new file mode 100644 index 000000000..05b042a59 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF04W0p42L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF04W0p42L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml new file mode 100644 index 000000000..5ade5272c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF04W0p84L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF04W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml new file mode 100644 index 000000000..e3f3a04ee --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF04W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml new file mode 100644 index 000000000..b8cfec2c9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF04W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml new file mode 100644 index 000000000..6e3c1625e --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF06W0p42L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF06W0p42L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml new file mode 100644 index 000000000..a94a5a90d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF06W0p84L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF06W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml new file mode 100644 index 000000000..286ffb522 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF06W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF06W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml new file mode 100644 index 000000000..85ea78b49 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF06W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF06W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml new file mode 100644 index 000000000..d7f89755d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF08W0p42L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF08W0p42L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml new file mode 100644 index 000000000..42d2cbbd7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF08W0p84L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF08W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml new file mode 100644 index 000000000..3d6d2ff8d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF08W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF08W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml new file mode 100644 index 000000000..279038ff0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aF08W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aF08W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml new file mode 100644 index 000000000..8175b81c7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM02W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml new file mode 100644 index 000000000..d14c42f2e --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM02W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_2_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml similarity index 61% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_2_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml index 068ba424d..4886fe423 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_2_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__xnor3_2 +function: rf_nfet_01v8_lvt_aM02W1p65L0p25 info: {} module: sky130.components -name: sky130_fd_sc_hd__xnor3_2 +name: rf_nfet_01v8_lvt_aM02W1p65L0p25 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml new file mode 100644 index 000000000..85b2d480e --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM02W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_2_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml similarity index 61% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_2_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml index f74ee05de..5e111abb1 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_2_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__einvp_2 +function: rf_nfet_01v8_lvt_aM02W3p00L0p18 info: {} module: sky130.components -name: sky130_fd_sc_hs__einvp_2 +name: rf_nfet_01v8_lvt_aM02W3p00L0p18 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml new file mode 100644 index 000000000..7bad96ae4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM02W3p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml new file mode 100644 index 000000000..91f72ffeb --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM02W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml new file mode 100644 index 000000000..4ae78e998 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM02W5p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml new file mode 100644 index 000000000..d12a61758 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM02W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml new file mode 100644 index 000000000..ccd1fe1a0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM04W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml new file mode 100644 index 000000000..8ab8881af --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM04W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml new file mode 100644 index 000000000..f6df73d5c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM04W1p65L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml new file mode 100644 index 000000000..4589e4693 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml new file mode 100644 index 000000000..25d2f231b --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM04W3p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml new file mode 100644 index 000000000..be32d27a8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM04W3p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml new file mode 100644 index 000000000..8b1a87b49 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml new file mode 100644 index 000000000..b9ea4dee8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM04W5p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml new file mode 100644 index 000000000..b4d19d9aa --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_aM04W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_aM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml new file mode 100644 index 000000000..8ff1fe93a --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM02W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml new file mode 100644 index 000000000..dd4488c15 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM02W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml new file mode 100644 index 000000000..529760211 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM02W1p65L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml new file mode 100644 index 000000000..bdf5e20d9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM02W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml new file mode 100644 index 000000000..92b4667b5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM02W3p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml new file mode 100644 index 000000000..119d143aa --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM02W3p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml new file mode 100644 index 000000000..09850f97f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM02W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_2_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml similarity index 66% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_2_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml index 9556b8271..80791cf4b 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_2_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__o2bb2ai_2 +function: rf_nfet_01v8_lvt_bM02W5p00L0p18 info: {} module: sky130.components -name: sky130_fd_sc_hs__o2bb2ai_2 +name: rf_nfet_01v8_lvt_bM02W5p00L0p18 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml new file mode 100644 index 000000000..18310f830 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM02W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml new file mode 100644 index 000000000..bc53b5966 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM04W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml new file mode 100644 index 000000000..74f695df7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM04W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml new file mode 100644 index 000000000..91f22be2e --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM04W1p65L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml new file mode 100644 index 000000000..6f4f9b067 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml new file mode 100644 index 000000000..68eb1102e --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM04W3p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml new file mode 100644 index 000000000..d569d3d6d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM04W3p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml new file mode 100644 index 000000000..dce224e6e --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml new file mode 100644 index 000000000..743e4743e --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM04W5p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml new file mode 100644 index 000000000..51a4774b5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_bM04W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_bM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml new file mode 100644 index 000000000..113702df7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM02W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml new file mode 100644 index 000000000..990b44fd9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM02W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml new file mode 100644 index 000000000..b09128dda --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM02W1p65L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml new file mode 100644 index 000000000..1935355d6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM02W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml new file mode 100644 index 000000000..81ce2305d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM02W3p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4_2_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml similarity index 64% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4_2_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml index 6e719810a..9cf0d6465 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4_2_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__nand4_2 +function: rf_nfet_01v8_lvt_cM02W3p00L0p25 info: {} module: sky130.components -name: sky130_fd_sc_hs__nand4_2 +name: rf_nfet_01v8_lvt_cM02W3p00L0p25 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml new file mode 100644 index 000000000..ef658201a --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM02W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml new file mode 100644 index 000000000..60be588b2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM02W5p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml new file mode 100644 index 000000000..e38a3f2ea --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM02W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml new file mode 100644 index 000000000..876dd4f79 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM04W1p65L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml new file mode 100644 index 000000000..78e3bed36 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM04W1p65L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_2_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml similarity index 64% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_2_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml index fcbaffe3e..13ea24ad7 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_2_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__or4b_2 +function: rf_nfet_01v8_lvt_cM04W1p65L0p25 info: {} module: sky130.components -name: sky130_fd_sc_hd__or4b_2 +name: rf_nfet_01v8_lvt_cM04W1p65L0p25 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml new file mode 100644 index 000000000..fe955bb84 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml new file mode 100644 index 000000000..c62574f79 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM04W3p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml new file mode 100644 index 000000000..0bf13e28f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM04W3p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml new file mode 100644 index 000000000..44bf3f94a --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml new file mode 100644 index 000000000..8cc58243a --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM04W5p00L0p18 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml new file mode 100644 index 000000000..b25191775 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_lvt_cM04W5p00L0p25 +info: {} +module: sky130.components +name: rf_nfet_01v8_lvt_cM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml new file mode 100644 index 000000000..8398d7a55 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_mcM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_mcM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml new file mode 100644 index 000000000..de2b129dc --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_01v8_mcM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_nfet_01v8_mcM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_aup_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_aup_.yml new file mode 100644 index 000000000..1787653a6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_20v0_aup_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_20v0_aup +info: {} +module: sky130.components +name: rf_nfet_20v0_aup +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_noptap_iso_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_noptap_iso_.yml new file mode 100644 index 000000000..69aa39d5d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_20v0_noptap_iso_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_20v0_noptap_iso +info: {} +module: sky130.components +name: rf_nfet_20v0_noptap_iso +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_aup_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_aup_.yml new file mode 100644 index 000000000..626198d8c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_aup_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_20v0_nvt_aup +info: {} +module: sky130.components +name: rf_nfet_20v0_nvt_aup +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_noptap_iso_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_noptap_iso_.yml new file mode 100644 index 000000000..c3b680d0d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_noptap_iso_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_20v0_nvt_noptap_iso +info: {} +module: sky130.components +name: rf_nfet_20v0_nvt_noptap_iso +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_.yml new file mode 100644 index 000000000..1c4615023 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_20v0_nvt_withptap +info: {} +module: sky130.components +name: rf_nfet_20v0_nvt_withptap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_2_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_iso_.yml similarity index 65% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_2_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_iso_.yml index 9f6e5ba5f..7a2428bee 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_2_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_iso_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__or4_2 +function: rf_nfet_20v0_nvt_withptap_iso info: {} module: sky130.components -name: sky130_fd_sc_hd__or4_2 +name: rf_nfet_20v0_nvt_withptap_iso settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_.yml new file mode 100644 index 000000000..8569a1102 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_20v0_withptap +info: {} +module: sky130.components +name: rf_nfet_20v0_withptap +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_iso_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_iso_.yml new file mode 100644 index 000000000..df5433e6c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_iso_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_20v0_withptap_iso +info: {} +module: sky130.components +name: rf_nfet_20v0_withptap_iso +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_zvt_withptap_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_zvt_withptap_.yml new file mode 100644 index 000000000..b0162987c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_20v0_zvt_withptap_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_20v0_zvt_withptap +info: {} +module: sky130.components +name: rf_nfet_20v0_zvt_withptap +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml new file mode 100644 index 000000000..997460f05 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_aM04W3p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_aM04W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml new file mode 100644 index 000000000..0819db69c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_aM04W5p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_aM04W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml new file mode 100644 index 000000000..0cd13bff3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_aM04W7p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_aM04W7p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml new file mode 100644 index 000000000..fea46d9ac --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_aM10W3p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_aM10W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml new file mode 100644 index 000000000..d543ad34f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_aM10W5p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_aM10W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml new file mode 100644 index 000000000..1e40dd9ec --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_aM10W7p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_aM10W7p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml new file mode 100644 index 000000000..18dfb6ab2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_bM02W3p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_bM02W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml new file mode 100644 index 000000000..0b2e93a0c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_bM02W5p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_bM02W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml new file mode 100644 index 000000000..758a695ba --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_bM04W3p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_bM04W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml new file mode 100644 index 000000000..c9a56b45b --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_bM04W5p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_bM04W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml new file mode 100644 index 000000000..ada963e1f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_bM04W7p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_bM04W7p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml new file mode 100644 index 000000000..53d5dcf31 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_bM10W3p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_bM10W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml new file mode 100644 index 000000000..368f163a2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_nfet_g5v0d10v5_bM10W5p00L0p50 +info: {} +module: sky130.components +name: rf_nfet_g5v0d10v5_bM10W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_16_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml similarity index 63% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_16_.yml rename to tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml index 1ac067808..913b35dba 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_16_.yml +++ b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hvl__inv_16 +function: rf_nfet_g5v0d10v5_bM10W7p00L0p50 info: {} module: sky130.components -name: sky130_fd_sc_hvl__inv_16 +name: rf_nfet_g5v0d10v5_bM10W7p00L0p50 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml new file mode 100644 index 000000000..004dbced5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml @@ -0,0 +1,5 @@ +function: rf_npn_05v5_W1p00L1p00 +info: {} +module: sky130.components +name: rf_npn_05v5_W1p00L1p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml new file mode 100644 index 000000000..8ed2c1680 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml @@ -0,0 +1,5 @@ +function: rf_npn_05v5_W1p00L2p00 +info: {} +module: sky130.components +name: rf_npn_05v5_W1p00L2p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml new file mode 100644 index 000000000..5455eb5d2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml @@ -0,0 +1,5 @@ +function: rf_npn_05v5_W1p00L4p00 +info: {} +module: sky130.components +name: rf_npn_05v5_W1p00L4p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml new file mode 100644 index 000000000..98d491263 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml @@ -0,0 +1,5 @@ +function: rf_npn_05v5_W1p00L8p00 +info: {} +module: sky130.components +name: rf_npn_05v5_W1p00L8p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml new file mode 100644 index 000000000..c570e7171 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml @@ -0,0 +1,5 @@ +function: rf_npn_05v5_W2p00L2p00 +info: {} +module: sky130.components +name: rf_npn_05v5_W2p00L2p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml new file mode 100644 index 000000000..1ad2d9d5f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml @@ -0,0 +1,5 @@ +function: rf_npn_05v5_W2p00L4p00 +info: {} +module: sky130.components +name: rf_npn_05v5_W2p00L4p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml new file mode 100644 index 000000000..72d6ce936 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml @@ -0,0 +1,5 @@ +function: rf_npn_05v5_W2p00L8p00 +info: {} +module: sky130.components +name: rf_npn_05v5_W2p00L8p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml new file mode 100644 index 000000000..5bc2f8f8c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml @@ -0,0 +1,5 @@ +function: rf_npn_05v5_W5p00L5p00 +info: {} +module: sky130.components +name: rf_npn_05v5_W5p00L5p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml new file mode 100644 index 000000000..2fd301315 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml @@ -0,0 +1,5 @@ +function: rf_npn_11v0_W1p00L1p00 +info: {} +module: sky130.components +name: rf_npn_11v0_W1p00L1p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W0p84L0p15_.yml new file mode 100644 index 000000000..3e793bc93 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF02W0p84L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF02W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W1p68L0p15_.yml new file mode 100644 index 000000000..9e4079842 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W1p68L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF02W1p68L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF02W1p68L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W2p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W2p00L0p15_.yml new file mode 100644 index 000000000..4b89a8064 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W2p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF02W2p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF02W2p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W3p00L0p15_.yml new file mode 100644 index 000000000..fd1208bba --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF02W3p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W5p00L0p15_.yml new file mode 100644 index 000000000..0e08488a3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF02W5p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W0p84L0p15_.yml new file mode 100644 index 000000000..45f29ecdd --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF04W0p84L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF04W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W1p68L0p15_.yml new file mode 100644 index 000000000..0a3d7e019 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W1p68L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF04W1p68L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF04W1p68L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W2p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W2p00L0p15_.yml new file mode 100644 index 000000000..c46a75b11 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W2p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF04W2p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF04W2p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W3p00L0p15_.yml new file mode 100644 index 000000000..d3858c77d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF04W3p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W5p00L0p15_.yml new file mode 100644 index 000000000..363252e95 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF04W5p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W0p84L0p15_.yml new file mode 100644 index 000000000..e895d3abd --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF06W0p84L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF06W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W1p68L0p15_.yml new file mode 100644 index 000000000..7e805b475 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W1p68L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF06W1p68L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF06W1p68L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W2p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W2p00L0p15_.yml new file mode 100644 index 000000000..956b58389 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W2p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF06W2p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF06W2p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W3p00L0p15_.yml new file mode 100644 index 000000000..87404076e --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF06W3p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF06W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W0p84L0p15_.yml new file mode 100644 index 000000000..8b55f7ede --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF08W0p84L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF08W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W1p68L0p15_.yml new file mode 100644 index 000000000..8a71182f2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W1p68L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aF08W1p68L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aF08W1p68L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_1_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p15_.yml similarity index 63% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_1_.yml rename to tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p15_.yml index 0a57b90c2..b5e6a86f7 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_1_.yml +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p15_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__fa_1 +function: rf_pfet_01v8_aM02W1p65L0p15 info: {} module: sky130.components -name: sky130_fd_sc_hs__fa_1 +name: rf_pfet_01v8_aM02W1p65L0p15 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_4_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p18_.yml similarity index 63% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_4_.yml rename to tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p18_.yml index aec36b4ea..34ee3a607 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_4_.yml +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p18_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__fa_4 +function: rf_pfet_01v8_aM02W1p65L0p18 info: {} module: sky130.components -name: sky130_fd_sc_hs__fa_4 +name: rf_pfet_01v8_aM02W1p65L0p18 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p25_.yml new file mode 100644 index 000000000..7c89c5a2d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM02W1p65L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p15_.yml new file mode 100644 index 000000000..94edfe8b6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM02W3p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p18_.yml new file mode 100644 index 000000000..15cefda31 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM02W3p00L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p25_.yml new file mode 100644 index 000000000..943196b2f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM02W3p00L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p15_.yml new file mode 100644 index 000000000..b1ff8b155 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM02W5p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p18_.yml new file mode 100644 index 000000000..3576cd640 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM02W5p00L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p25_.yml new file mode 100644 index 000000000..3faa46037 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM02W5p00L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p15_.yml new file mode 100644 index 000000000..55e98b95c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM04W1p65L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p18_.yml new file mode 100644 index 000000000..821a3e4fa --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM04W1p65L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p25_.yml new file mode 100644 index 000000000..aa3c0c033 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM04W1p65L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p15_.yml new file mode 100644 index 000000000..a8d497712 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p18_.yml new file mode 100644 index 000000000..bb41bee67 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM04W3p00L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p25_.yml new file mode 100644 index 000000000..ee89ff383 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM04W3p00L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p15_.yml new file mode 100644 index 000000000..b22aace34 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p18_.yml new file mode 100644 index 000000000..e24fd1d52 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM04W5p00L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p25_.yml new file mode 100644 index 000000000..bc7a1c83f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_aM04W5p00L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_aM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p15_.yml new file mode 100644 index 000000000..e26b73a8d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM02W1p65L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p18_.yml new file mode 100644 index 000000000..26033926f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM02W1p65L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p25_.yml new file mode 100644 index 000000000..3caa6dc86 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM02W1p65L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p15_.yml new file mode 100644 index 000000000..83f785180 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM02W3p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p18_.yml new file mode 100644 index 000000000..c0252d371 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM02W3p00L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p25_.yml new file mode 100644 index 000000000..59d875be6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM02W3p00L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p15_.yml new file mode 100644 index 000000000..8578047e8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM02W5p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p18_.yml new file mode 100644 index 000000000..7ba090c27 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM02W5p00L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p25_.yml new file mode 100644 index 000000000..c91a3a80d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM02W5p00L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p15_.yml new file mode 100644 index 000000000..6a13251e0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM04W1p65L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p18_.yml new file mode 100644 index 000000000..9b4de01bb --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM04W1p65L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p25_.yml new file mode 100644 index 000000000..930e75f6a --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM04W1p65L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p15_.yml new file mode 100644 index 000000000..c28e029d2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbn_2_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p18_.yml similarity index 66% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbn_2_.yml rename to tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p18_.yml index a3ca9c4a2..4e4bb8ad6 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbn_2_.yml +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p18_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__sdfbbn_2 +function: rf_pfet_01v8_bM04W3p00L0p18 info: {} module: sky130.components -name: sky130_fd_sc_hs__sdfbbn_2 +name: rf_pfet_01v8_bM04W3p00L0p18 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p25_.yml new file mode 100644 index 000000000..601cad119 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM04W3p00L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p15_.yml new file mode 100644 index 000000000..254c86e3c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p18_.yml new file mode 100644 index 000000000..8541ea14f --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM04W5p00L0p18 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p25_.yml new file mode 100644 index 000000000..e3b758ae6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_bM04W5p00L0p25 +info: {} +module: sky130.components +name: rf_pfet_01v8_bM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml new file mode 100644 index 000000000..c3a363741 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_hcM04W3p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_hcM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml new file mode 100644 index 000000000..75fc0beab --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_hcM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_hcM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml new file mode 100644 index 000000000..86eeed2a3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_lvt_aM02W3p00L0p35 +info: {} +module: sky130.components +name: rf_pfet_01v8_lvt_aM02W3p00L0p35 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml new file mode 100644 index 000000000..1a55fcd63 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_lvt_aM02W3p00L0p50 +info: {} +module: sky130.components +name: rf_pfet_01v8_lvt_aM02W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml new file mode 100644 index 000000000..6d40314d8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_lvt_aM02W5p00L0p35 +info: {} +module: sky130.components +name: rf_pfet_01v8_lvt_aM02W5p00L0p35 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml new file mode 100644 index 000000000..ad8dc981a --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_lvt_aM02W5p00L0p50 +info: {} +module: sky130.components +name: rf_pfet_01v8_lvt_aM02W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml new file mode 100644 index 000000000..e3bb878e9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_lvt_aM04W3p00L0p35 +info: {} +module: sky130.components +name: rf_pfet_01v8_lvt_aM04W3p00L0p35 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml new file mode 100644 index 000000000..f201376b1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_lvt_aM04W3p00L0p50 +info: {} +module: sky130.components +name: rf_pfet_01v8_lvt_aM04W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml new file mode 100644 index 000000000..c3f8c9de9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_lvt_aM04W5p00L0p35 +info: {} +module: sky130.components +name: rf_pfet_01v8_lvt_aM04W5p00L0p35 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml new file mode 100644 index 000000000..02b6f8e27 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_lvt_aM04W5p00L0p50 +info: {} +module: sky130.components +name: rf_pfet_01v8_lvt_aM04W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_4_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W3p00L0p15_.yml similarity index 63% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_4_.yml rename to tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W3p00L0p15_.yml index 0a4e6cd36..0abfe6008 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_4_.yml +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W3p00L0p15_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hs__maj3_4 +function: rf_pfet_01v8_mcM04W3p00L0p15 info: {} module: sky130.components -name: sky130_fd_sc_hs__maj3_4 +name: rf_pfet_01v8_mcM04W3p00L0p15 settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml new file mode 100644 index 000000000..afc635d2a --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_mcM04W5p00L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_mcM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml new file mode 100644 index 000000000..af6bf5c57 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_01v8_mvt_aF02W0p84L0p15 +info: {} +module: sky130.components +name: rf_pfet_01v8_mvt_aF02W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_20v0_withptap_.yml b/tests/test_components/test_pdk_settings_rf_pfet_20v0_withptap_.yml new file mode 100644 index 000000000..8639d397c --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pfet_20v0_withptap_.yml @@ -0,0 +1,5 @@ +function: rf_pfet_20v0_withptap +info: {} +module: sky130.components +name: rf_pfet_20v0_withptap +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml b/tests/test_components/test_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml new file mode 100644 index 000000000..c6ebbb628 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml @@ -0,0 +1,5 @@ +function: rf_pnp_05v5_W0p68L0p68 +info: {} +module: sky130.components +name: rf_pnp_05v5_W0p68L0p68 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml b/tests/test_components/test_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml new file mode 100644 index 000000000..925869349 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml @@ -0,0 +1,5 @@ +function: rf_pnp_05v5_W3p40L3p40 +info: {} +module: sky130.components +name: rf_pnp_05v5_W3p40L3p40 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_test_coil1_.yml b/tests/test_components/test_pdk_settings_rf_test_coil1_.yml new file mode 100644 index 000000000..6fd12ca79 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_test_coil1_.yml @@ -0,0 +1,5 @@ +function: rf_test_coil1 +info: {} +module: sky130.components +name: rf_test_coil1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_test_coil2_.yml b/tests/test_components/test_pdk_settings_rf_test_coil2_.yml new file mode 100644 index 000000000..120b2d60d --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_test_coil2_.yml @@ -0,0 +1,5 @@ +function: rf_test_coil2 +info: {} +module: sky130.components +name: rf_test_coil2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_test_coil3_.yml b/tests/test_components/test_pdk_settings_rf_test_coil3_.yml new file mode 100644 index 000000000..5122e6c79 --- /dev/null +++ b/tests/test_components/test_pdk_settings_rf_test_coil3_.yml @@ -0,0 +1,5 @@ +function: rf_test_coil3 +info: {} +module: sky130.components +name: rf_test_coil3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfbbn_1_.yml b/tests/test_components/test_pdk_settings_sdfbbn_1_.yml new file mode 100644 index 000000000..10472507f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfbbn_1_.yml @@ -0,0 +1,5 @@ +function: sdfbbn_1 +info: {} +module: sky130.components +name: sdfbbn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfbbn_2_.yml b/tests/test_components/test_pdk_settings_sdfbbn_2_.yml new file mode 100644 index 000000000..2c5794b72 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfbbn_2_.yml @@ -0,0 +1,5 @@ +function: sdfbbn_2 +info: {} +module: sky130.components +name: sdfbbn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfbbp_1_.yml b/tests/test_components/test_pdk_settings_sdfbbp_1_.yml new file mode 100644 index 000000000..95b19aa6c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfbbp_1_.yml @@ -0,0 +1,5 @@ +function: sdfbbp_1 +info: {} +module: sky130.components +name: sdfbbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrbp_1_.yml b/tests/test_components/test_pdk_settings_sdfrbp_1_.yml new file mode 100644 index 000000000..a291be521 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfrbp_1_.yml @@ -0,0 +1,5 @@ +function: sdfrbp_1 +info: {} +module: sky130.components +name: sdfrbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrbp_2_.yml b/tests/test_components/test_pdk_settings_sdfrbp_2_.yml new file mode 100644 index 000000000..660055f90 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfrbp_2_.yml @@ -0,0 +1,5 @@ +function: sdfrbp_2 +info: {} +module: sky130.components +name: sdfrbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrtn_1_.yml b/tests/test_components/test_pdk_settings_sdfrtn_1_.yml new file mode 100644 index 000000000..06c29f9b4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfrtn_1_.yml @@ -0,0 +1,5 @@ +function: sdfrtn_1 +info: {} +module: sky130.components +name: sdfrtn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrtp_1_.yml b/tests/test_components/test_pdk_settings_sdfrtp_1_.yml new file mode 100644 index 000000000..1bdcf3909 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfrtp_1_.yml @@ -0,0 +1,5 @@ +function: sdfrtp_1 +info: {} +module: sky130.components +name: sdfrtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrtp_2_.yml b/tests/test_components/test_pdk_settings_sdfrtp_2_.yml new file mode 100644 index 000000000..49c99d965 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfrtp_2_.yml @@ -0,0 +1,5 @@ +function: sdfrtp_2 +info: {} +module: sky130.components +name: sdfrtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrtp_4_.yml b/tests/test_components/test_pdk_settings_sdfrtp_4_.yml new file mode 100644 index 000000000..8f146081e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfrtp_4_.yml @@ -0,0 +1,5 @@ +function: sdfrtp_4 +info: {} +module: sky130.components +name: sdfrtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfsbp_1_.yml b/tests/test_components/test_pdk_settings_sdfsbp_1_.yml new file mode 100644 index 000000000..efc2147ed --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfsbp_1_.yml @@ -0,0 +1,5 @@ +function: sdfsbp_1 +info: {} +module: sky130.components +name: sdfsbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfsbp_2_.yml b/tests/test_components/test_pdk_settings_sdfsbp_2_.yml new file mode 100644 index 000000000..c8d6d77b4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfsbp_2_.yml @@ -0,0 +1,5 @@ +function: sdfsbp_2 +info: {} +module: sky130.components +name: sdfsbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfstp_1_.yml b/tests/test_components/test_pdk_settings_sdfstp_1_.yml new file mode 100644 index 000000000..459ab3098 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfstp_1_.yml @@ -0,0 +1,5 @@ +function: sdfstp_1 +info: {} +module: sky130.components +name: sdfstp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfstp_2_.yml b/tests/test_components/test_pdk_settings_sdfstp_2_.yml new file mode 100644 index 000000000..38cb4de24 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfstp_2_.yml @@ -0,0 +1,5 @@ +function: sdfstp_2 +info: {} +module: sky130.components +name: sdfstp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfstp_4_.yml b/tests/test_components/test_pdk_settings_sdfstp_4_.yml new file mode 100644 index 000000000..ac53eccfe --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfstp_4_.yml @@ -0,0 +1,5 @@ +function: sdfstp_4 +info: {} +module: sky130.components +name: sdfstp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxbp_1_.yml b/tests/test_components/test_pdk_settings_sdfxbp_1_.yml new file mode 100644 index 000000000..e79462d15 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfxbp_1_.yml @@ -0,0 +1,5 @@ +function: sdfxbp_1 +info: {} +module: sky130.components +name: sdfxbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxbp_2_.yml b/tests/test_components/test_pdk_settings_sdfxbp_2_.yml new file mode 100644 index 000000000..8fff5161c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfxbp_2_.yml @@ -0,0 +1,5 @@ +function: sdfxbp_2 +info: {} +module: sky130.components +name: sdfxbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxtp_1_.yml b/tests/test_components/test_pdk_settings_sdfxtp_1_.yml new file mode 100644 index 000000000..74498b92a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfxtp_1_.yml @@ -0,0 +1,5 @@ +function: sdfxtp_1 +info: {} +module: sky130.components +name: sdfxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxtp_2_.yml b/tests/test_components/test_pdk_settings_sdfxtp_2_.yml new file mode 100644 index 000000000..eed034949 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfxtp_2_.yml @@ -0,0 +1,5 @@ +function: sdfxtp_2 +info: {} +module: sky130.components +name: sdfxtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxtp_4_.yml b/tests/test_components/test_pdk_settings_sdfxtp_4_.yml new file mode 100644 index 000000000..d9f70555c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdfxtp_4_.yml @@ -0,0 +1,5 @@ +function: sdfxtp_4 +info: {} +module: sky130.components +name: sdfxtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdlclkp_1_.yml b/tests/test_components/test_pdk_settings_sdlclkp_1_.yml new file mode 100644 index 000000000..68e2d71f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdlclkp_1_.yml @@ -0,0 +1,5 @@ +function: sdlclkp_1 +info: {} +module: sky130.components +name: sdlclkp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdlclkp_2_.yml b/tests/test_components/test_pdk_settings_sdlclkp_2_.yml new file mode 100644 index 000000000..d25fd6675 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdlclkp_2_.yml @@ -0,0 +1,5 @@ +function: sdlclkp_2 +info: {} +module: sky130.components +name: sdlclkp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sdlclkp_4_.yml b/tests/test_components/test_pdk_settings_sdlclkp_4_.yml new file mode 100644 index 000000000..8ba502edf --- /dev/null +++ b/tests/test_components/test_pdk_settings_sdlclkp_4_.yml @@ -0,0 +1,5 @@ +function: sdlclkp_4 +info: {} +module: sky130.components +name: sdlclkp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sedfxbp_1_.yml b/tests/test_components/test_pdk_settings_sedfxbp_1_.yml new file mode 100644 index 000000000..a28c864f9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sedfxbp_1_.yml @@ -0,0 +1,5 @@ +function: sedfxbp_1 +info: {} +module: sky130.components +name: sedfxbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_1_.yml b/tests/test_components/test_pdk_settings_sedfxbp_2_.yml similarity index 57% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_1_.yml rename to tests/test_components/test_pdk_settings_sedfxbp_2_.yml index 8d13f66cf..4434b8e4c 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_1_.yml +++ b/tests/test_components/test_pdk_settings_sedfxbp_2_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__fill_1 +function: sedfxbp_2 info: {} module: sky130.components -name: sky130_fd_sc_hd__fill_1 +name: sedfxbp_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_sedfxtp_1_.yml b/tests/test_components/test_pdk_settings_sedfxtp_1_.yml new file mode 100644 index 000000000..f8dc70c22 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sedfxtp_1_.yml @@ -0,0 +1,5 @@ +function: sedfxtp_1 +info: {} +module: sky130.components +name: sedfxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sedfxtp_2_.yml b/tests/test_components/test_pdk_settings_sedfxtp_2_.yml new file mode 100644 index 000000000..da950fcb9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sedfxtp_2_.yml @@ -0,0 +1,5 @@ +function: sedfxtp_2 +info: {} +module: sky130.components +name: sedfxtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sedfxtp_4_.yml b/tests/test_components/test_pdk_settings_sedfxtp_4_.yml new file mode 100644 index 000000000..2c2b8d30d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sedfxtp_4_.yml @@ -0,0 +1,5 @@ +function: sedfxtp_4 +info: {} +module: sky130.components +name: sedfxtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_1_.yml deleted file mode 100644 index 4d02da28d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2111o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2111o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_2_.yml deleted file mode 100644 index 798bddf23..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2111o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2111o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_4_.yml deleted file mode 100644 index 845794349..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2111o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2111o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_0_.yml deleted file mode 100644 index b215b7939..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2111oi_0 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2111oi_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_1_.yml deleted file mode 100644 index 9ceeb5675..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2111oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2111oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_2_.yml deleted file mode 100644 index e91af34a2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2111oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2111oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_4_.yml deleted file mode 100644 index 9eb3532b5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2111oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2111oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_1_.yml deleted file mode 100644 index 14b81cb82..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a211o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a211o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_2_.yml deleted file mode 100644 index d737ce7a5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a211o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a211o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_4_.yml deleted file mode 100644 index 80c7a1fcd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a211o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a211o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_1_.yml deleted file mode 100644 index c653d62e7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a211oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a211oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_2_.yml deleted file mode 100644 index 0105efebd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a211oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a211oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_4_.yml deleted file mode 100644 index 600d35f04..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a211oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a211oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml deleted file mode 100644 index d4d0fb5d6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21bo_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21bo_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml deleted file mode 100644 index 1656e3cf4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21bo_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21bo_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml deleted file mode 100644 index 33e9b3745..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21bo_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21bo_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_1_.yml deleted file mode 100644 index 82172709e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21boi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21boi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_2_.yml deleted file mode 100644 index 43e973610..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21boi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21boi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_4_.yml deleted file mode 100644 index bb13399cd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21boi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21boi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_1_.yml deleted file mode 100644 index ed9e7a797..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_2_.yml deleted file mode 100644 index 09bd2a7ad..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_4_.yml deleted file mode 100644 index 7df30b814..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml deleted file mode 100644 index 606808c45..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml deleted file mode 100644 index 294fcab8d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml deleted file mode 100644 index 792384ac0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a21oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a21oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_1_.yml deleted file mode 100644 index 34d2d68e9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a221o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a221o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_2_.yml deleted file mode 100644 index 697f2c1b6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a221o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a221o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_4_.yml deleted file mode 100644 index b938e2bec..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a221o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a221o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_1_.yml deleted file mode 100644 index 1e91a6f08..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a221oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a221oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_2_.yml deleted file mode 100644 index 8b98004b6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a221oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a221oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_4_.yml deleted file mode 100644 index 2585b344b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a221oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a221oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a222oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a222oi_1_.yml deleted file mode 100644 index 05b0fbec1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a222oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a222oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a222oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_1_.yml deleted file mode 100644 index 0ffad2e90..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a22o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a22o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_2_.yml deleted file mode 100644 index a27de3c29..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a22o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a22o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_4_.yml deleted file mode 100644 index b9790c36d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a22o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a22o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml deleted file mode 100644 index 97ae894f3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a22oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a22oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml deleted file mode 100644 index b1013fe72..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a22oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a22oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml deleted file mode 100644 index a738eb5fa..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a22oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a22oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml deleted file mode 100644 index 01348a6f8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2bb2o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2bb2o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml deleted file mode 100644 index c1b7b02d7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2bb2o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2bb2o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml deleted file mode 100644 index 056babc1a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2bb2o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2bb2o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml deleted file mode 100644 index 39f29f6e0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2bb2oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2bb2oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml deleted file mode 100644 index 069c8c21f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2bb2oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2bb2oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml deleted file mode 100644 index 25a279929..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a2bb2oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a2bb2oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_1_.yml deleted file mode 100644 index 6fa2b5e1b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a311o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a311o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_2_.yml deleted file mode 100644 index 902e4c9c2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a311o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a311o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_4_.yml deleted file mode 100644 index 8e392ff25..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a311o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a311o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_1_.yml deleted file mode 100644 index d640d9118..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a311oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a311oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_2_.yml deleted file mode 100644 index 279fa040d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a311oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a311oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_4_.yml deleted file mode 100644 index 8002dd447..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a311oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a311oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_1_.yml deleted file mode 100644 index dfce5a91a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a31o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a31o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_2_.yml deleted file mode 100644 index 318d92a15..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a31o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a31o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_4_.yml deleted file mode 100644 index 5616d6826..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a31o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a31o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml deleted file mode 100644 index 96d5082f2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a31oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a31oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml deleted file mode 100644 index 2b569764e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a31oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a31oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml deleted file mode 100644 index 78a6cda8a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a31oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a31oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_1_.yml deleted file mode 100644 index 64f5c757a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a32o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a32o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_2_.yml deleted file mode 100644 index c04c48c16..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a32o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a32o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_4_.yml deleted file mode 100644 index 1e7223a08..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a32o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a32o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml deleted file mode 100644 index 73f305bec..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a32oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a32oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml deleted file mode 100644 index c46504d46..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a32oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a32oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml deleted file mode 100644 index deeb09b15..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a32oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a32oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_1_.yml deleted file mode 100644 index 23c4be7d3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a41o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a41o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_2_.yml deleted file mode 100644 index 3f95b5247..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a41o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a41o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_4_.yml deleted file mode 100644 index b339d1346..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a41o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a41o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml deleted file mode 100644 index e6ac00b3b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a41oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a41oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml deleted file mode 100644 index 17f75f5be..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a41oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a41oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml deleted file mode 100644 index 54e842f71..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__a41oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__a41oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_0_.yml deleted file mode 100644 index ac393b4df..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and2_0 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and2_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_1_.yml deleted file mode 100644 index 7d4abbbc8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_2_.yml deleted file mode 100644 index da1195585..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_4_.yml deleted file mode 100644 index 2195570a3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_1_.yml deleted file mode 100644 index 899168934..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and2b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_2_.yml deleted file mode 100644 index 971ea90e7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and2b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_4_.yml deleted file mode 100644 index 5c4451ffd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and2b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_1_.yml deleted file mode 100644 index c5f624d0e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_2_.yml deleted file mode 100644 index 477a3f724..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_4_.yml deleted file mode 100644 index 6d70931a8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_1_.yml deleted file mode 100644 index 04e164f7e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and3b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_2_.yml deleted file mode 100644 index de48136e5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and3b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_4_.yml deleted file mode 100644 index dfe25f5ea..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and3b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_1_.yml deleted file mode 100644 index 3466b6b95..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and4_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_2_.yml deleted file mode 100644 index 3cea2dc20..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and4_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_4_.yml deleted file mode 100644 index f7021666e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and4_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_1_.yml deleted file mode 100644 index 357109c19..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and4b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_2_.yml deleted file mode 100644 index 9d5fe5101..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and4b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_4_.yml deleted file mode 100644 index 20cc73a31..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and4b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_1_.yml deleted file mode 100644 index 776c1bbb4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and4bb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_2_.yml deleted file mode 100644 index 38d9603f2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and4bb_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_4_.yml deleted file mode 100644 index afef9ea76..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__and4bb_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__and4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_12_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_12_.yml deleted file mode 100644 index b9720cc06..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_12_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__buf_12 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__buf_12 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_16_.yml deleted file mode 100644 index 15ab353f4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__buf_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__buf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_1_.yml deleted file mode 100644 index 61c347405..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__buf_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__buf_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_2_.yml deleted file mode 100644 index b27ec38c4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__buf_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__buf_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_4_.yml deleted file mode 100644 index b286cccb5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__buf_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__buf_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_6_.yml deleted file mode 100644 index 0f14041c4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_6_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__buf_6 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__buf_6 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_8_.yml deleted file mode 100644 index 2f7ab587b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__buf_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__buf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_16_.yml deleted file mode 100644 index 3dbf1d473..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__bufbuf_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__bufbuf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_8_.yml deleted file mode 100644 index 4c9df8617..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__bufbuf_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__bufbuf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_16_.yml deleted file mode 100644 index a54991458..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__bufinv_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__bufinv_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_8_.yml deleted file mode 100644 index c83d24752..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__bufinv_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__bufinv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_16_.yml deleted file mode 100644 index 22e3f7f89..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkbuf_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkbuf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_1_.yml deleted file mode 100644 index fc532e03a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkbuf_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkbuf_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_2_.yml deleted file mode 100644 index de086acdb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkbuf_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkbuf_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_4_.yml deleted file mode 100644 index 4806f3f60..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkbuf_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkbuf_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_8_.yml deleted file mode 100644 index 3178e5668..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkbuf_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkbuf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml deleted file mode 100644 index 3b3dc5c57..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkdlybuf4s15_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkdlybuf4s15_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml deleted file mode 100644 index c3cac8621..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkdlybuf4s15_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkdlybuf4s15_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml deleted file mode 100644 index 725fd499a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkdlybuf4s18_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkdlybuf4s18_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml deleted file mode 100644 index 1d606d335..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkdlybuf4s18_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkdlybuf4s18_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml deleted file mode 100644 index 54f330fcb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkdlybuf4s25_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkdlybuf4s25_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml deleted file mode 100644 index b21be1d6a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkdlybuf4s25_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkdlybuf4s25_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml deleted file mode 100644 index 27623e000..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkdlybuf4s50_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkdlybuf4s50_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml deleted file mode 100644 index f268623f8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkdlybuf4s50_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkdlybuf4s50_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_16_.yml deleted file mode 100644 index e17d64432..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkinv_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkinv_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_1_.yml deleted file mode 100644 index 15b9ad3ba..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkinv_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkinv_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_2_.yml deleted file mode 100644 index 21936007d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkinv_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkinv_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_4_.yml deleted file mode 100644 index ca24347f5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkinv_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkinv_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_8_.yml deleted file mode 100644 index 14e661025..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkinv_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkinv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_2_.yml deleted file mode 100644 index 9a4edfdf0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkinvlp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkinvlp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_4_.yml deleted file mode 100644 index 40b8047b4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__clkinvlp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__clkinvlp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__conb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__conb_1_.yml deleted file mode 100644 index 0ac49cc3d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__conb_1_.yml +++ /dev/null @@ -1,2 +0,0 @@ -settings: {} -version: 0.0.1 diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_12_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_12_.yml deleted file mode 100644 index ab5c32a36..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_12_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__decap_12 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__decap_12 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_3_.yml deleted file mode 100644 index ae2d6d8f8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__decap_3 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__decap_3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_4_.yml deleted file mode 100644 index fcc23a760..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__decap_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__decap_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_6_.yml deleted file mode 100644 index 0461610c1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_6_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__decap_6 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__decap_6 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_8_.yml deleted file mode 100644 index 4269858b2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__decap_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__decap_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml deleted file mode 100644 index 9aa069198..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfbbn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfbbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml deleted file mode 100644 index 724dd6a8e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfbbn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfbbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml deleted file mode 100644 index 5537e4276..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfbbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfbbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml deleted file mode 100644 index f163442dd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfrbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml deleted file mode 100644 index f951c90cc..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfrbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfrbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml deleted file mode 100644 index f9d204d63..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfrtn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfrtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml deleted file mode 100644 index bef25c94e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfrtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml deleted file mode 100644 index 843f7aec5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfrtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfrtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml deleted file mode 100644 index a40d73e97..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfrtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfrtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml deleted file mode 100644 index 3d6826c0f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfsbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfsbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml deleted file mode 100644 index 03125eed8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfsbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfsbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml deleted file mode 100644 index 8cba1340b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfstp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfstp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml deleted file mode 100644 index 8ccf7b95f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfstp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfstp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml deleted file mode 100644 index 0392800ba..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfstp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfstp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml deleted file mode 100644 index 59dc52305..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml deleted file mode 100644 index 2fdb17efb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfxbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfxbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml deleted file mode 100644 index 163e3e8f2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml deleted file mode 100644 index b8bcffe0c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfxtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfxtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml deleted file mode 100644 index bb01751cb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dfxtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dfxtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__diode_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__diode_2_.yml deleted file mode 100644 index 71f3950b2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__diode_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__diode_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__diode_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_1_.yml deleted file mode 100644 index 3645562ae..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlclkp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlclkp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_2_.yml deleted file mode 100644 index 62600f5c2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlclkp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlclkp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_4_.yml deleted file mode 100644 index ebceea242..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlclkp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlclkp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml deleted file mode 100644 index 4fdd0f8b9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrbn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml deleted file mode 100644 index 99ef79c9b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrbn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml deleted file mode 100644 index 2942f68e1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml deleted file mode 100644 index efbf21d17..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml deleted file mode 100644 index 3957f0fe6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrtn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml deleted file mode 100644 index d53f67ada..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrtn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrtn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml deleted file mode 100644 index 10feec2bb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrtn_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrtn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml deleted file mode 100644 index 6cbaf1080..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml deleted file mode 100644 index 422e9bc9d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml deleted file mode 100644 index fce672142..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlrtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlrtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml deleted file mode 100644 index 1224f6a58..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlxbn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlxbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml deleted file mode 100644 index a68a6cc3e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlxbn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlxbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml deleted file mode 100644 index 10670eb38..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml deleted file mode 100644 index 789f0341f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlxtn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlxtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml deleted file mode 100644 index 7ed38238c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlxtn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlxtn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml deleted file mode 100644 index 1878f777b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlxtn_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlxtn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml deleted file mode 100644 index ddf9cb675..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd1_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd1_1_.yml deleted file mode 100644 index 8ccca58c9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd1_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlygate4sd1_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlygate4sd1_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd2_1_.yml deleted file mode 100644 index 89fabb39e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlygate4sd2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlygate4sd2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd3_1_.yml deleted file mode 100644 index 4c1469600..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlygate4sd3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlygate4sd3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml deleted file mode 100644 index 0e5ffc646..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlymetal6s2s_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlymetal6s2s_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml deleted file mode 100644 index a948fb295..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlymetal6s4s_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlymetal6s4s_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml deleted file mode 100644 index 0413d5332..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__dlymetal6s6s_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__dlymetal6s6s_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml deleted file mode 100644 index c1f527fba..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__ebufn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__ebufn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml deleted file mode 100644 index 71153bbfc..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__ebufn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__ebufn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml deleted file mode 100644 index 154e7c362..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__ebufn_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__ebufn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml deleted file mode 100644 index f8233ac9a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__ebufn_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__ebufn_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxbp_1_.yml deleted file mode 100644 index f964e4388..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__edfxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__edfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxtp_1_.yml deleted file mode 100644 index d3fb5f0d5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__edfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__edfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_0_.yml deleted file mode 100644 index 0198455d5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__einvn_0 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__einvn_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_1_.yml deleted file mode 100644 index 129cfcac4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__einvn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__einvn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_2_.yml deleted file mode 100644 index 5bec184e3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__einvn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__einvn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_4_.yml deleted file mode 100644 index 4e658df32..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__einvn_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__einvn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_8_.yml deleted file mode 100644 index 55818e238..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__einvn_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__einvn_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_1_.yml deleted file mode 100644 index 239c9c7e9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__einvp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__einvp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_2_.yml deleted file mode 100644 index a72f38ebd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__einvp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__einvp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_4_.yml deleted file mode 100644 index 08663c519..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__einvp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__einvp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_8_.yml deleted file mode 100644 index 419100b16..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__einvp_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__einvp_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_1_.yml deleted file mode 100644 index f4656e9fe..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__fa_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__fa_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_2_.yml deleted file mode 100644 index 87adf5737..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__fa_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__fa_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_4_.yml deleted file mode 100644 index 1c0952b86..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__fa_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__fa_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fah_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fah_1_.yml deleted file mode 100644 index dae9441cf..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fah_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__fah_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__fah_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcin_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcin_1_.yml deleted file mode 100644 index ab0fa0655..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcin_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__fahcin_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__fahcin_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcon_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcon_1_.yml deleted file mode 100644 index 616770300..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcon_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__fahcon_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__fahcon_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_2_.yml deleted file mode 100644 index dfc08e9d1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__fill_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__fill_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_4_.yml deleted file mode 100644 index 468c844b0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__fill_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__fill_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_8_.yml deleted file mode 100644 index 4a22e92e4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__fill_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__fill_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_1_.yml deleted file mode 100644 index 820b13120..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__ha_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__ha_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_2_.yml deleted file mode 100644 index a79c9d151..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__ha_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__ha_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_4_.yml deleted file mode 100644 index 108183933..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__ha_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__ha_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_12_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_12_.yml deleted file mode 100644 index 68896ecf3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_12_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__inv_12 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__inv_12 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_16_.yml deleted file mode 100644 index 822dd36bd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__inv_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__inv_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_1_.yml deleted file mode 100644 index a849070e1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__inv_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__inv_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_2_.yml deleted file mode 100644 index bdd54905c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__inv_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__inv_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_4_.yml deleted file mode 100644 index 14fd411ea..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__inv_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__inv_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_6_.yml deleted file mode 100644 index 9c0951fb1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_6_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__inv_6 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__inv_6 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_8_.yml deleted file mode 100644 index d80030ebd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__inv_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__inv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_bleeder_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_bleeder_1_.yml deleted file mode 100644 index b58004736..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_bleeder_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_bleeder_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_bleeder_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml deleted file mode 100644 index 4c85334a7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkbufkapwr_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkbufkapwr_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml deleted file mode 100644 index 20d85923f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkbufkapwr_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkbufkapwr_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml deleted file mode 100644 index 83bc919ac..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkbufkapwr_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkbufkapwr_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml deleted file mode 100644 index 286077ef7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkbufkapwr_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkbufkapwr_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml deleted file mode 100644 index e5adf34a3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkbufkapwr_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkbufkapwr_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml deleted file mode 100644 index 3e1d0398b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkinvkapwr_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkinvkapwr_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml deleted file mode 100644 index 79e449e27..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkinvkapwr_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkinvkapwr_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml deleted file mode 100644 index a6c86ff57..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkinvkapwr_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkinvkapwr_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml deleted file mode 100644 index a8e3129f7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkinvkapwr_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkinvkapwr_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml deleted file mode 100644 index b12b89a7b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_clkinvkapwr_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_clkinvkapwr_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml deleted file mode 100644 index ee4be0b97..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_decapkapwr_12 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_decapkapwr_12 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml deleted file mode 100644 index 68a432d34..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_decapkapwr_3 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_decapkapwr_3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml deleted file mode 100644 index 051abbf56..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_decapkapwr_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_decapkapwr_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml deleted file mode 100644 index a73d764e3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_decapkapwr_6 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_decapkapwr_6 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml deleted file mode 100644 index 5c2f7ae6b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_decapkapwr_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_decapkapwr_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml deleted file mode 100644 index 9bc388e40..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_inputiso0n_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_inputiso0n_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml deleted file mode 100644 index cd8ec4115..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_inputiso0p_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_inputiso0p_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml deleted file mode 100644 index 1530fb7ac..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_inputiso1n_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_inputiso1n_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml deleted file mode 100644 index 2a923b254..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_inputiso1p_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_inputiso1p_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputisolatch_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputisolatch_1_.yml deleted file mode 100644 index 24e72e7f3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputisolatch_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_inputisolatch_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_inputisolatch_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml deleted file mode 100644 index e3da21c82..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_isobufsrc_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_isobufsrc_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml deleted file mode 100644 index 877373d8f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_isobufsrc_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_isobufsrc_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml deleted file mode 100644 index 4a04fa35c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_isobufsrc_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_isobufsrc_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml deleted file mode 100644 index c5de0e736..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_isobufsrc_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_isobufsrc_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml deleted file mode 100644 index 520ca80f2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_isobufsrc_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_isobufsrc_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml deleted file mode 100644 index 2f160ac0a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_isobufsrckapwr_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_isobufsrckapwr_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml deleted file mode 100644 index e01bd09f1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml deleted file mode 100644 index 5b532ea68..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml deleted file mode 100644 index 30fe9e5eb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml deleted file mode 100644 index 4c882bd2c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml deleted file mode 100644 index 8640cddad..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml deleted file mode 100644 index 4d7a3a119..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml deleted file mode 100644 index a347719e5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_1_.yml deleted file mode 100644 index e7ea9d618..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__maj3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__maj3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_2_.yml deleted file mode 100644 index 687265837..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__maj3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__maj3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_4_.yml deleted file mode 100644 index 2e6507d00..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__maj3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__maj3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_1_.yml deleted file mode 100644 index 7d596c47d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_2_.yml deleted file mode 100644 index 8bb3619c7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_4_.yml deleted file mode 100644 index 225d116c1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_8_.yml deleted file mode 100644 index 666b29e48..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux2_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux2_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml deleted file mode 100644 index 4f280612c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux2i_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux2i_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml deleted file mode 100644 index 05649a1b0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux2i_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux2i_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml deleted file mode 100644 index ac874d3e7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux2i_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux2i_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_1_.yml deleted file mode 100644 index f726a5844..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux4_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_2_.yml deleted file mode 100644 index 9346f74e3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux4_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_4_.yml deleted file mode 100644 index 341ad83e3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__mux4_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__mux4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_8_.yml deleted file mode 100644 index 2b585bd16..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand2_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand2_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_1_.yml deleted file mode 100644 index 468997e99..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand2b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_2_.yml deleted file mode 100644 index fb509c788..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand2b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_4_.yml deleted file mode 100644 index c7c3912f9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand2b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_1_.yml deleted file mode 100644 index aac865a0e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_2_.yml deleted file mode 100644 index 53b4a4725..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_4_.yml deleted file mode 100644 index bb082b68a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_1_.yml deleted file mode 100644 index fcbcebd63..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand3b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_2_.yml deleted file mode 100644 index f7f641dc6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand3b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_4_.yml deleted file mode 100644 index df38ffc8b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand3b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_1_.yml deleted file mode 100644 index 45c08a66e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand4_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_2_.yml deleted file mode 100644 index 849c9c41a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand4_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_4_.yml deleted file mode 100644 index d5ab0dda0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand4_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_1_.yml deleted file mode 100644 index ef890c52b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand4b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_2_.yml deleted file mode 100644 index aebb6849c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand4b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_4_.yml deleted file mode 100644 index 1105460ac..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand4b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_1_.yml deleted file mode 100644 index 2d8aa3c1a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand4bb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_2_.yml deleted file mode 100644 index fb3037736..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand4bb_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_4_.yml deleted file mode 100644 index 95c3a3978..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nand4bb_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nand4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_1_.yml deleted file mode 100644 index 804acdb58..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_2_.yml deleted file mode 100644 index 8f69c0896..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_4_.yml deleted file mode 100644 index 401a73f98..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_8_.yml deleted file mode 100644 index fbff44492..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor2_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor2_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml deleted file mode 100644 index 2fbbd972e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor2b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml deleted file mode 100644 index 38cd77ce3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor2b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml deleted file mode 100644 index b55c55ed8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor2b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_1_.yml deleted file mode 100644 index 51e34ba59..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_2_.yml deleted file mode 100644 index 55a86a5ea..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_4_.yml deleted file mode 100644 index c244994ff..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml deleted file mode 100644 index b1465a1d5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor3b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml deleted file mode 100644 index 4b2d76948..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor3b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml deleted file mode 100644 index f4f82d89c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor3b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_2_.yml deleted file mode 100644 index 0339f1f55..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor4_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml deleted file mode 100644 index ddc2ff62b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor4b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml deleted file mode 100644 index bba86c5e6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor4b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml deleted file mode 100644 index 823da0311..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor4b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_1_.yml deleted file mode 100644 index 8c8b716b3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor4bb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_2_.yml deleted file mode 100644 index 90c73333d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__nor4bb_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__nor4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_1_.yml deleted file mode 100644 index 5f8dd9919..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2111a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2111a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_2_.yml deleted file mode 100644 index 4896d57e2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2111a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2111a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_4_.yml deleted file mode 100644 index e789778c5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2111a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2111a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_1_.yml deleted file mode 100644 index ef5124cd5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2111ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2111ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_2_.yml deleted file mode 100644 index ce3b47ec0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2111ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2111ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_4_.yml deleted file mode 100644 index 036fcee73..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2111ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2111ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_1_.yml deleted file mode 100644 index d6bd635d7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o211a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o211a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_2_.yml deleted file mode 100644 index bf3c192e4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o211a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o211a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_4_.yml deleted file mode 100644 index 2a5e0bf4c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o211a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o211a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_1_.yml deleted file mode 100644 index db75ab40a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o211ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o211ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_2_.yml deleted file mode 100644 index 2e4668614..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o211ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o211ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_4_.yml deleted file mode 100644 index bc28038f1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o211ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o211ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_1_.yml deleted file mode 100644 index 6f629f774..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_2_.yml deleted file mode 100644 index 2f7e95278..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_4_.yml deleted file mode 100644 index 6a1d4d050..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml deleted file mode 100644 index fef30e9c4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21ai_0 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21ai_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml deleted file mode 100644 index 41c889eaf..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml deleted file mode 100644 index 491299453..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml deleted file mode 100644 index 9647bb884..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml deleted file mode 100644 index 5678bfe7e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21ba_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21ba_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml deleted file mode 100644 index 78aaf0761..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21ba_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21ba_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml deleted file mode 100644 index 024db3125..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21ba_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21ba_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_1_.yml deleted file mode 100644 index 14719d12c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21bai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21bai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_2_.yml deleted file mode 100644 index 8dd3429fa..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21bai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21bai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_4_.yml deleted file mode 100644 index aed8de1f5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o21bai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o21bai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_1_.yml deleted file mode 100644 index fc5127b27..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o221a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o221a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_2_.yml deleted file mode 100644 index b83f6c9e8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o221a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o221a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_4_.yml deleted file mode 100644 index e4eba3aed..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o221a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o221a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_1_.yml deleted file mode 100644 index e35344d60..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o221ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o221ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_2_.yml deleted file mode 100644 index 2af298dbc..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o221ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o221ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_4_.yml deleted file mode 100644 index fe848977f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o221ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o221ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_1_.yml deleted file mode 100644 index d3426453d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o22a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o22a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_2_.yml deleted file mode 100644 index b5416b57f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o22a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o22a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_4_.yml deleted file mode 100644 index ca2130b9c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o22a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o22a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml deleted file mode 100644 index 67631d856..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o22ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o22ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml deleted file mode 100644 index fe4f308e9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o22ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o22ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml deleted file mode 100644 index 611cbaec8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o22ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o22ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml deleted file mode 100644 index e35ccc09b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2bb2a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2bb2a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml deleted file mode 100644 index addaf6455..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2bb2a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2bb2a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml deleted file mode 100644 index 2a439a97c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2bb2a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2bb2a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml deleted file mode 100644 index 54c063c12..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2bb2ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2bb2ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml deleted file mode 100644 index 6d508b3b5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2bb2ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2bb2ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml deleted file mode 100644 index cd217e62a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o2bb2ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o2bb2ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_1_.yml deleted file mode 100644 index 2e8c99ee0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o311a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o311a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_2_.yml deleted file mode 100644 index ad8f203d6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o311a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o311a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_4_.yml deleted file mode 100644 index 745005cea..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o311a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o311a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_0_.yml deleted file mode 100644 index 0abdf39ab..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o311ai_0 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o311ai_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_1_.yml deleted file mode 100644 index 7b6163d76..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o311ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o311ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_2_.yml deleted file mode 100644 index f8aa9ede8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o311ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o311ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_4_.yml deleted file mode 100644 index e06d8f747..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o311ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o311ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_1_.yml deleted file mode 100644 index 19d4c841e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o31a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o31a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_2_.yml deleted file mode 100644 index 0c2ac9b7f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o31a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o31a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_4_.yml deleted file mode 100644 index 83dda4127..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o31a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o31a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml deleted file mode 100644 index 15e83c35f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o31ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o31ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml deleted file mode 100644 index 8287a0b3e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o31ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o31ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml deleted file mode 100644 index 22b401013..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o31ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o31ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_1_.yml deleted file mode 100644 index 49c27a7cc..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o32a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o32a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_2_.yml deleted file mode 100644 index e83a7d35f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o32a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o32a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_4_.yml deleted file mode 100644 index 4e21a9034..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o32a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o32a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml deleted file mode 100644 index 4f7c31967..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o32ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o32ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml deleted file mode 100644 index 10d0699e2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o32ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o32ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml deleted file mode 100644 index 96c95e741..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o32ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o32ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_1_.yml deleted file mode 100644 index ac816bcb9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o41a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o41a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_2_.yml deleted file mode 100644 index 96e61bf95..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o41a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o41a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_4_.yml deleted file mode 100644 index f74725ce4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o41a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o41a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml deleted file mode 100644 index b6c592428..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o41ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o41ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml deleted file mode 100644 index 2cad6649e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o41ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o41ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml deleted file mode 100644 index 23ee1637a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__o41ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__o41ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_0_.yml deleted file mode 100644 index 11bab2548..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or2_0 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or2_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_1_.yml deleted file mode 100644 index 4933294e9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_2_.yml deleted file mode 100644 index abdddf683..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_4_.yml deleted file mode 100644 index cec8042e2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_1_.yml deleted file mode 100644 index 716ceba6b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or2b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_2_.yml deleted file mode 100644 index 825cf4bf4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or2b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_4_.yml deleted file mode 100644 index 8c0757cbf..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or2b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_1_.yml deleted file mode 100644 index 97a7cd71b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_2_.yml deleted file mode 100644 index 856aec346..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_4_.yml deleted file mode 100644 index 70ef47c2e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_1_.yml deleted file mode 100644 index 59018306b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or3b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_2_.yml deleted file mode 100644 index 5004d0dbc..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or3b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_4_.yml deleted file mode 100644 index 44a41db6b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or3b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_1_.yml deleted file mode 100644 index 1319d8d2b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or4_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_4_.yml deleted file mode 100644 index 8992e4efd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or4_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_1_.yml deleted file mode 100644 index 649baf898..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or4b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_4_.yml deleted file mode 100644 index f040225c3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or4b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml deleted file mode 100644 index 927c67d1e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or4bb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml deleted file mode 100644 index 8074f4849..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or4bb_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml deleted file mode 100644 index e8039461f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__or4bb_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__or4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probe_p_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probe_p_8_.yml deleted file mode 100644 index dc7b6c011..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probe_p_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__probe_p_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__probe_p_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probec_p_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probec_p_8_.yml deleted file mode 100644 index 9df4fbba7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probec_p_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__probec_p_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__probec_p_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml deleted file mode 100644 index 5b2953bac..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfbbn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfbbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml deleted file mode 100644 index d5bd29c4b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfbbn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfbbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml deleted file mode 100644 index b82593d01..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfbbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfbbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml deleted file mode 100644 index bdcb409b8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfrbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml deleted file mode 100644 index e06a34411..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfrbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfrbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml deleted file mode 100644 index 4ec3379a9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfrtn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfrtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml deleted file mode 100644 index 095eb22d9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfrtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml deleted file mode 100644 index a1a67b91b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfrtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfrtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml deleted file mode 100644 index 67612d946..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfrtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfrtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml deleted file mode 100644 index 4cdd6c787..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfsbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfsbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml deleted file mode 100644 index 2870bec1b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfsbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfsbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_1_.yml deleted file mode 100644 index b55eaf55b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfstp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfstp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_2_.yml deleted file mode 100644 index 4766ccb6f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfstp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfstp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_4_.yml deleted file mode 100644 index b57d3e515..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfstp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfstp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml deleted file mode 100644 index 2c541c47b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfxbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfxbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml deleted file mode 100644 index 9882a3ac4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml deleted file mode 100644 index 5a13a237f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfxtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfxtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml deleted file mode 100644 index 198c0f9ed..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdfxtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdfxtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_1_.yml deleted file mode 100644 index 07cace3e3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdlclkp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdlclkp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_2_.yml deleted file mode 100644 index f51239158..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdlclkp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdlclkp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_4_.yml deleted file mode 100644 index 2ebcfd185..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sdlclkp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sdlclkp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_1_.yml deleted file mode 100644 index 39af553e2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sedfxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sedfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_2_.yml deleted file mode 100644 index 367822a99..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sedfxbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sedfxbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_1_.yml deleted file mode 100644 index 5cd888142..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sedfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sedfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_2_.yml deleted file mode 100644 index c17a8bf6e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sedfxtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sedfxtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_4_.yml deleted file mode 100644 index 6584adc7d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__sedfxtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__sedfxtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_1_.yml deleted file mode 100644 index 14b94edc5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__tap_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__tap_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_2_.yml deleted file mode 100644 index f9f71cea0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__tap_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__tap_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd2_1_.yml deleted file mode 100644 index e49ffe3b1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__tapvgnd2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__tapvgnd2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd_1_.yml deleted file mode 100644 index 2aab78cac..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__tapvgnd_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__tapvgnd_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml deleted file mode 100644 index 4645c32dd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__tapvpwrvgnd_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__tapvpwrvgnd_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml deleted file mode 100644 index e8edd6b87..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xnor2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xnor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml deleted file mode 100644 index daeaf4772..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xnor2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xnor2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml deleted file mode 100644 index 559eedc0b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xnor2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xnor2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml deleted file mode 100644 index 5556303a4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xnor3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xnor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml deleted file mode 100644 index d3721b854..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xnor3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xnor3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_1_.yml deleted file mode 100644 index 0b304d745..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xor2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_2_.yml deleted file mode 100644 index 23a8135d8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xor2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xor2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_4_.yml deleted file mode 100644 index 223433996..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xor2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xor2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_1_.yml deleted file mode 100644 index d00294840..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xor3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_2_.yml deleted file mode 100644 index bcd88ea63..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xor3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xor3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_4_.yml deleted file mode 100644 index d8f0e76cd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hd__xor3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hd__xor3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_1_.yml deleted file mode 100644 index cc5c77379..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2111o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2111o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_2_.yml deleted file mode 100644 index 97590bcd2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2111o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2111o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_4_.yml deleted file mode 100644 index 84085413a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2111o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2111o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_1_.yml deleted file mode 100644 index 54a0c8eff..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2111oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2111oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_2_.yml deleted file mode 100644 index d0c0ad5ec..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2111oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2111oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_4_.yml deleted file mode 100644 index a959e1530..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2111oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2111oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2111oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_1_.yml deleted file mode 100644 index b7a57eae1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a211o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a211o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_2_.yml deleted file mode 100644 index 8cb9fc8f1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a211o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a211o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_4_.yml deleted file mode 100644 index c073746c2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a211o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a211o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_1_.yml deleted file mode 100644 index 5efc4753d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a211oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a211oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_2_.yml deleted file mode 100644 index df13ba484..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a211oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a211oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_4_.yml deleted file mode 100644 index 52e318ec6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a211oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a211oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a211oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_1_.yml deleted file mode 100644 index 3441daee6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21bo_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21bo_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_2_.yml deleted file mode 100644 index 61663ea51..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21bo_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21bo_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_4_.yml deleted file mode 100644 index efb35b662..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21bo_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21bo_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21bo_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_1_.yml deleted file mode 100644 index eab361fc4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21boi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21boi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_2_.yml deleted file mode 100644 index 766298311..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21boi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21boi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_4_.yml deleted file mode 100644 index b210108ce..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21boi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21boi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21boi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_1_.yml deleted file mode 100644 index bb09742e8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_2_.yml deleted file mode 100644 index 4c2e1c843..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_4_.yml deleted file mode 100644 index 6589545c2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_1_.yml deleted file mode 100644 index ac70498ee..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_2_.yml deleted file mode 100644 index f1e286c94..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_4_.yml deleted file mode 100644 index 5ec5bc55a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a21oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a21oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a21oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_2_.yml deleted file mode 100644 index 5359cfc11..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a221o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a221o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_4_.yml deleted file mode 100644 index b0b0b2181..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a221o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a221o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_1_.yml deleted file mode 100644 index ba4c2eb8e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a221oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a221oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_2_.yml deleted file mode 100644 index b6e1f5cac..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a221oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a221oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_4_.yml deleted file mode 100644 index 94ae6ddd9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a221oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a221oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a221oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222o_1_.yml deleted file mode 100644 index ecc9b2a23..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a222o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a222o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222o_2_.yml deleted file mode 100644 index 42b16b5fa..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a222o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a222o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222oi_1_.yml deleted file mode 100644 index 883639e6f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a222oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a222oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222oi_2_.yml deleted file mode 100644 index 487d0f656..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a222oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a222oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a222oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_1_.yml deleted file mode 100644 index ae473173c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a22o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a22o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_2_.yml deleted file mode 100644 index 255317c15..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a22o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a22o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_4_.yml deleted file mode 100644 index 8aec2a0ed..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a22o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a22o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_1_.yml deleted file mode 100644 index 4379121cd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a22oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a22oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_2_.yml deleted file mode 100644 index 328161d4f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a22oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a22oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_4_.yml deleted file mode 100644 index 3a300acc8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a22oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a22oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a22oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_1_.yml deleted file mode 100644 index 50398395a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2bb2o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2bb2o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_2_.yml deleted file mode 100644 index d70286840..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2bb2o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2bb2o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_4_.yml deleted file mode 100644 index 515273233..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2bb2o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2bb2o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_1_.yml deleted file mode 100644 index acbc2a8cd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2bb2oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2bb2oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_2_.yml deleted file mode 100644 index f024f7bba..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2bb2oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2bb2oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_4_.yml deleted file mode 100644 index 98a9bfd1f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a2bb2oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a2bb2oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a2bb2oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_1_.yml deleted file mode 100644 index 9b032d965..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a311o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a311o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_2_.yml deleted file mode 100644 index 9adc51580..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a311o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a311o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_4_.yml deleted file mode 100644 index 2df0295fa..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a311o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a311o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_1_.yml deleted file mode 100644 index 02853760d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a311oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a311oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_2_.yml deleted file mode 100644 index 81b22332d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a311oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a311oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_4_.yml deleted file mode 100644 index 4c0266218..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a311oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a311oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a311oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_1_.yml deleted file mode 100644 index 02c2dcab8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a31o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a31o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_2_.yml deleted file mode 100644 index 51b8f3994..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a31o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a31o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_4_.yml deleted file mode 100644 index b8d0c3fc2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a31o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a31o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_1_.yml deleted file mode 100644 index 256c99aef..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a31oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a31oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_2_.yml deleted file mode 100644 index c7ba1e4b9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a31oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a31oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_4_.yml deleted file mode 100644 index 4e894f8cf..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a31oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a31oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a31oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_1_.yml deleted file mode 100644 index 936061f08..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a32o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a32o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_2_.yml deleted file mode 100644 index 616a2843f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a32o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a32o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_4_.yml deleted file mode 100644 index 778112d30..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a32o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a32o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_1_.yml deleted file mode 100644 index 3aea508ee..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a32oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a32oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_2_.yml deleted file mode 100644 index db92138e2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a32oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a32oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_4_.yml deleted file mode 100644 index 00e581a64..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a32oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a32oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a32oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_1_.yml deleted file mode 100644 index cadbe8daa..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a41o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a41o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_2_.yml deleted file mode 100644 index 19abfa068..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a41o_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a41o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_4_.yml deleted file mode 100644 index b209ab6fe..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a41o_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a41o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_1_.yml deleted file mode 100644 index 9dbf6abc4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a41oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a41oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_2_.yml deleted file mode 100644 index 448fcadfd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a41oi_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a41oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_4_.yml deleted file mode 100644 index 5741ed90d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__a41oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__a41oi_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__a41oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_1_.yml deleted file mode 100644 index c52aff80e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_2_.yml deleted file mode 100644 index 5baaa4466..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_4_.yml deleted file mode 100644 index 707e461e7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_1_.yml deleted file mode 100644 index 8b4d427f7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and2b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_2_.yml deleted file mode 100644 index 25d6629c0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and2b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_4_.yml deleted file mode 100644 index deea0d94f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and2b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_1_.yml deleted file mode 100644 index 7eaa14032..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_2_.yml deleted file mode 100644 index 017cb7127..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_4_.yml deleted file mode 100644 index 0034bc944..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_1_.yml deleted file mode 100644 index 40bac9242..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and3b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_2_.yml deleted file mode 100644 index ba5f324b7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and3b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_4_.yml deleted file mode 100644 index f520382be..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and3b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_1_.yml deleted file mode 100644 index 348965b4f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and4_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_2_.yml deleted file mode 100644 index 32a449a09..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and4_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_4_.yml deleted file mode 100644 index e6a018c17..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and4_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_1_.yml deleted file mode 100644 index be76160f0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and4b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_2_.yml deleted file mode 100644 index ee4352345..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and4b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_4_.yml deleted file mode 100644 index 80d643942..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and4b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_1_.yml deleted file mode 100644 index 121d8f251..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and4bb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_2_.yml deleted file mode 100644 index 42f3e8a24..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and4bb_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_4_.yml deleted file mode 100644 index 3a1dde23d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__and4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__and4bb_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__and4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_16_.yml deleted file mode 100644 index a89140af9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__buf_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__buf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_1_.yml deleted file mode 100644 index 18059401f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__buf_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__buf_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_2_.yml deleted file mode 100644 index dc28b34ff..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__buf_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__buf_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_4_.yml deleted file mode 100644 index 0bdda0450..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__buf_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__buf_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_8_.yml deleted file mode 100644 index 4cc17ccc9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__buf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__buf_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__buf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufbuf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufbuf_16_.yml deleted file mode 100644 index 8c2f13f0c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufbuf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__bufbuf_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__bufbuf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufbuf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufbuf_8_.yml deleted file mode 100644 index 8d0ee31ac..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufbuf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__bufbuf_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__bufbuf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufinv_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufinv_16_.yml deleted file mode 100644 index 84a45a086..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufinv_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__bufinv_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__bufinv_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufinv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufinv_8_.yml deleted file mode 100644 index b3a5fb3a0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__bufinv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__bufinv_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__bufinv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_16_.yml deleted file mode 100644 index 7fec34c4a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkbuf_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkbuf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_1_.yml deleted file mode 100644 index bbbd96643..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkbuf_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkbuf_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_2_.yml deleted file mode 100644 index 5c5f39a89..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkbuf_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkbuf_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_4_.yml deleted file mode 100644 index 8e880232c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkbuf_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkbuf_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_8_.yml deleted file mode 100644 index f15a4f522..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkbuf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkbuf_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkbuf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd1_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd1_1_.yml deleted file mode 100644 index 15ec2873e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd1_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkdlyinv3sd1_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkdlyinv3sd1_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd2_1_.yml deleted file mode 100644 index d7d3cb59d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkdlyinv3sd2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkdlyinv3sd2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd3_1_.yml deleted file mode 100644 index 11678f767..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv3sd3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkdlyinv3sd3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkdlyinv3sd3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd1_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd1_1_.yml deleted file mode 100644 index 9c74e0c33..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd1_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkdlyinv5sd1_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkdlyinv5sd1_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd2_1_.yml deleted file mode 100644 index db7b21ade..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkdlyinv5sd2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkdlyinv5sd2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd3_1_.yml deleted file mode 100644 index 9730a638a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkdlyinv5sd3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkdlyinv5sd3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkdlyinv5sd3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_16_.yml deleted file mode 100644 index fb682f196..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkinv_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkinv_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_1_.yml deleted file mode 100644 index 55540d765..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkinv_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkinv_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_2_.yml deleted file mode 100644 index 645ccb4e8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkinv_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkinv_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_4_.yml deleted file mode 100644 index bb89c6c23..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkinv_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkinv_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_8_.yml deleted file mode 100644 index 7c060c5b3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__clkinv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__clkinv_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__clkinv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__conb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__conb_1_.yml deleted file mode 100644 index 9bb2a605f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__conb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__conb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__conb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__decap_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__decap_4_.yml deleted file mode 100644 index e25c0ac6b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__decap_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__decap_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__decap_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__decap_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__decap_8_.yml deleted file mode 100644 index aca7d8652..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__decap_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__decap_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__decap_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbn_1_.yml deleted file mode 100644 index 0e26bee0e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfbbn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfbbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbn_2_.yml deleted file mode 100644 index c4fde1a59..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfbbn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfbbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbp_1_.yml deleted file mode 100644 index 4e4873b90..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfbbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfbbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfbbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrbp_1_.yml deleted file mode 100644 index cc6a054a7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfrbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrbp_2_.yml deleted file mode 100644 index 874cc28e5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfrbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfrbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtn_1_.yml deleted file mode 100644 index 1324cccf1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfrtn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfrtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_1_.yml deleted file mode 100644 index 5aabaaa01..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfrtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_2_.yml deleted file mode 100644 index bd4f48156..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfrtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfrtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_4_.yml deleted file mode 100644 index 7533e6fa2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfrtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfrtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfrtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfsbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfsbp_1_.yml deleted file mode 100644 index ae813599c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfsbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfsbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfsbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfsbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfsbp_2_.yml deleted file mode 100644 index 2c98f4eec..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfsbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfsbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfsbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_1_.yml deleted file mode 100644 index 51b7249e6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfstp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfstp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_2_.yml deleted file mode 100644 index 1d45055b4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfstp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfstp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_4_.yml deleted file mode 100644 index 7e09a047b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfstp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfstp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfstp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxbp_1_.yml deleted file mode 100644 index 03f8f345c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxbp_2_.yml deleted file mode 100644 index 8f913122f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfxbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfxbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_1_.yml deleted file mode 100644 index 53783eeb1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_2_.yml deleted file mode 100644 index 17c9ed84e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfxtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfxtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_4_.yml deleted file mode 100644 index a092b15c6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dfxtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dfxtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dfxtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__diode_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__diode_2_.yml deleted file mode 100644 index 9f5a67bfb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__diode_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__diode_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__diode_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_1_.yml deleted file mode 100644 index b3572ff84..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlclkp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlclkp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_2_.yml deleted file mode 100644 index 155a4b7e9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlclkp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlclkp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_4_.yml deleted file mode 100644 index 157449d2d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlclkp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlclkp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlclkp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbn_1_.yml deleted file mode 100644 index 1030a2926..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrbn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbn_2_.yml deleted file mode 100644 index da5da803d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrbn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbp_1_.yml deleted file mode 100644 index e58aa819c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbp_2_.yml deleted file mode 100644 index 92ada93ed..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_1_.yml deleted file mode 100644 index 5328975e4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrtn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_2_.yml deleted file mode 100644 index 4a82eb014..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrtn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrtn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_4_.yml deleted file mode 100644 index e661aa978..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrtn_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrtn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_1_.yml deleted file mode 100644 index ff0d18fcb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_2_.yml deleted file mode 100644 index fa8fd8f63..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_4_.yml deleted file mode 100644 index d6eea01b6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlrtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlrtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlrtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbn_1_.yml deleted file mode 100644 index c7ab81bf3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlxbn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlxbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbn_2_.yml deleted file mode 100644 index 0606c1446..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlxbn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlxbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbp_1_.yml deleted file mode 100644 index afe7accf6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_1_.yml deleted file mode 100644 index baf1f9aa1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlxtn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlxtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_2_.yml deleted file mode 100644 index 594802616..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlxtn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlxtn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_4_.yml deleted file mode 100644 index 0af70c8c4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlxtn_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlxtn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtp_1_.yml deleted file mode 100644 index f40578da8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd1_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd1_1_.yml deleted file mode 100644 index e0a33878d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd1_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlygate4sd1_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlygate4sd1_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd2_1_.yml deleted file mode 100644 index 1a32e3d29..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlygate4sd2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlygate4sd2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd3_1_.yml deleted file mode 100644 index 094475546..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlygate4sd3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlygate4sd3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlygate4sd3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s2s_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s2s_1_.yml deleted file mode 100644 index e83219deb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s2s_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlymetal6s2s_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlymetal6s2s_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s4s_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s4s_1_.yml deleted file mode 100644 index 2b06b8eae..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s4s_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlymetal6s4s_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlymetal6s4s_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s6s_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s6s_1_.yml deleted file mode 100644 index ad76a2a99..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__dlymetal6s6s_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__dlymetal6s6s_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__dlymetal6s6s_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_1_.yml deleted file mode 100644 index 53f07ba3d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__ebufn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__ebufn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_2_.yml deleted file mode 100644 index 76874e6f5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__ebufn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__ebufn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_4_.yml deleted file mode 100644 index dc7d57a18..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__ebufn_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__ebufn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_8_.yml deleted file mode 100644 index 0f14b54f1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ebufn_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__ebufn_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__ebufn_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__edfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__edfxbp_1_.yml deleted file mode 100644 index 5b96e0cf4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__edfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__edfxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__edfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__edfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__edfxtp_1_.yml deleted file mode 100644 index c21b3433e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__edfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__edfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__edfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_1_.yml deleted file mode 100644 index 1da9b943c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__einvn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__einvn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_2_.yml deleted file mode 100644 index 709665fbb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__einvn_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__einvn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_4_.yml deleted file mode 100644 index 1e3f0e59b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__einvn_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__einvn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_8_.yml deleted file mode 100644 index e913e42f7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvn_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__einvn_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__einvn_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_1_.yml deleted file mode 100644 index fdfaeb8bc..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__einvp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__einvp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_4_.yml deleted file mode 100644 index d1c8c65c3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__einvp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__einvp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_8_.yml deleted file mode 100644 index 2d3b6ef2f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__einvp_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__einvp_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__einvp_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_2_.yml deleted file mode 100644 index 7df2f7fd4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fa_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fa_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fa_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_1_.yml deleted file mode 100644 index c72135f5e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fah_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fah_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_2_.yml deleted file mode 100644 index 6432f7e1e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fah_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fah_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_4_.yml deleted file mode 100644 index 6f2ce3859..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fah_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fah_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fah_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fahcin_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fahcin_1_.yml deleted file mode 100644 index fe77a77b9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fahcin_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fahcin_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fahcin_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fahcon_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fahcon_1_.yml deleted file mode 100644 index dd9687c09..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fahcon_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fahcon_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fahcon_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_1_.yml deleted file mode 100644 index 1b7129da9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fill_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fill_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_2_.yml deleted file mode 100644 index c59574a52..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fill_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fill_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_4_.yml deleted file mode 100644 index 582d98315..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fill_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fill_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_8_.yml deleted file mode 100644 index 8f239e630..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fill_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fill_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_2_.yml deleted file mode 100644 index 07f2493b2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fill_diode_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fill_diode_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_4_.yml deleted file mode 100644 index 8096f02cb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fill_diode_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fill_diode_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_8_.yml deleted file mode 100644 index b44ed16c5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__fill_diode_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__fill_diode_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__fill_diode_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_1_.yml deleted file mode 100644 index 163dbd0d7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__ha_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__ha_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_2_.yml deleted file mode 100644 index 8086c16fb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__ha_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__ha_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_4_.yml deleted file mode 100644 index 30335a467..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__ha_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__ha_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__ha_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_16_.yml deleted file mode 100644 index 6d92e5c4b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__inv_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__inv_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_1_.yml deleted file mode 100644 index c386d7c5a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__inv_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__inv_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_2_.yml deleted file mode 100644 index dffaaaae8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__inv_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__inv_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_4_.yml deleted file mode 100644 index 91dc56943..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__inv_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__inv_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_8_.yml deleted file mode 100644 index ceb6979db..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__inv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__inv_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__inv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_1_.yml deleted file mode 100644 index f40dc3547..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__maj3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__maj3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_2_.yml deleted file mode 100644 index 16e7872ab..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__maj3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__maj3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__maj3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_1_.yml deleted file mode 100644 index 38e98aafb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__mux2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__mux2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_2_.yml deleted file mode 100644 index 2f4f8f8e6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__mux2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__mux2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_4_.yml deleted file mode 100644 index e022ea778..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__mux2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__mux2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_1_.yml deleted file mode 100644 index 348119455..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__mux2i_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__mux2i_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_2_.yml deleted file mode 100644 index ef850ed1a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__mux2i_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__mux2i_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_4_.yml deleted file mode 100644 index 3b09f0dad..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux2i_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__mux2i_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__mux2i_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_1_.yml deleted file mode 100644 index 468b824b1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__mux4_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__mux4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_2_.yml deleted file mode 100644 index 000d94398..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__mux4_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__mux4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_4_.yml deleted file mode 100644 index d447b5d9d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__mux4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__mux4_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__mux4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_1_.yml deleted file mode 100644 index eee792dde..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_2_.yml deleted file mode 100644 index b3db5aef8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_4_.yml deleted file mode 100644 index 49f0e9362..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_8_.yml deleted file mode 100644 index 6b69b6ceb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand2_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand2_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_1_.yml deleted file mode 100644 index a42579f72..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand2b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_2_.yml deleted file mode 100644 index 508bfafbd..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand2b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_4_.yml deleted file mode 100644 index 0f34011ad..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand2b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_2_.yml deleted file mode 100644 index 66a151855..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_4_.yml deleted file mode 100644 index 0153394d2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_1_.yml deleted file mode 100644 index f6767718a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand3b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_2_.yml deleted file mode 100644 index f38371900..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand3b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_4_.yml deleted file mode 100644 index 8117ead97..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand3b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_1_.yml deleted file mode 100644 index b098c7da0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand4b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_2_.yml deleted file mode 100644 index 9be537c9a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand4b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_4_.yml deleted file mode 100644 index ab7932fb9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand4b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_1_.yml deleted file mode 100644 index e8e907274..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand4bb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_2_.yml deleted file mode 100644 index 85d7d77b1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand4bb_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_4_.yml deleted file mode 100644 index 589e7d654..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nand4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nand4bb_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nand4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_1_.yml deleted file mode 100644 index 0e1dd7034..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_2_.yml deleted file mode 100644 index 0ed2dd84c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_4_.yml deleted file mode 100644 index d0fb0e407..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_8_.yml deleted file mode 100644 index 34308e7d7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor2_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor2_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_1_.yml deleted file mode 100644 index 0439c1f9d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor2b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_2_.yml deleted file mode 100644 index 32b11e9ae..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor2b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_4_.yml deleted file mode 100644 index 6424fac24..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor2b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_1_.yml deleted file mode 100644 index 18b3d9945..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_2_.yml deleted file mode 100644 index 7e25d5005..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_4_.yml deleted file mode 100644 index a8bfa37ba..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_1_.yml deleted file mode 100644 index e852927cf..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor3b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_2_.yml deleted file mode 100644 index a017d6b7b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor3b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_4_.yml deleted file mode 100644 index 6dfe3a47b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor3b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_1_.yml deleted file mode 100644 index d0af446b2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor4_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_2_.yml deleted file mode 100644 index 7b0c5cf2e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor4_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_4_.yml deleted file mode 100644 index 11a3d5886..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor4_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_1_.yml deleted file mode 100644 index 4248e7cc0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor4b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_2_.yml deleted file mode 100644 index f19ace621..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor4b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_4_.yml deleted file mode 100644 index e06778d6c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor4b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_1_.yml deleted file mode 100644 index 56f52fa37..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor4bb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_2_.yml deleted file mode 100644 index a86935397..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor4bb_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_4_.yml deleted file mode 100644 index 4e593a73c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__nor4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__nor4bb_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__nor4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_1_.yml deleted file mode 100644 index 0a6705858..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2111a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2111a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_2_.yml deleted file mode 100644 index 2e70109f7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2111a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2111a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_4_.yml deleted file mode 100644 index e2b147ec5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2111a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2111a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_1_.yml deleted file mode 100644 index 8d787f1f7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2111ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2111ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_2_.yml deleted file mode 100644 index 7ef617806..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2111ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2111ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_4_.yml deleted file mode 100644 index 2d1020c70..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2111ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2111ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2111ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_1_.yml deleted file mode 100644 index 03e6ce5f9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o211a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o211a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_2_.yml deleted file mode 100644 index 94f8a4845..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o211a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o211a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_4_.yml deleted file mode 100644 index f9f5463bb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o211a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o211a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_1_.yml deleted file mode 100644 index ecf5e73e0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o211ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o211ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_2_.yml deleted file mode 100644 index 470a03604..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o211ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o211ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_4_.yml deleted file mode 100644 index 758bf0825..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o211ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o211ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o211ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_1_.yml deleted file mode 100644 index f1ea4b05c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_2_.yml deleted file mode 100644 index 15ab215d6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_4_.yml deleted file mode 100644 index 265a9bd3c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_1_.yml deleted file mode 100644 index 22680f2e5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_2_.yml deleted file mode 100644 index 936c5bd0a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_4_.yml deleted file mode 100644 index eb1135125..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_1_.yml deleted file mode 100644 index 5ba6aa800..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21ba_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21ba_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_2_.yml deleted file mode 100644 index 72523a194..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21ba_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21ba_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_4_.yml deleted file mode 100644 index 5dbca1909..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21ba_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21ba_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21ba_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_1_.yml deleted file mode 100644 index d2b04492c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21bai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21bai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_2_.yml deleted file mode 100644 index b5a34a27e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21bai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21bai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_4_.yml deleted file mode 100644 index 5579c3ace..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o21bai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o21bai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o21bai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_1_.yml deleted file mode 100644 index c08e6ee94..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o221a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o221a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_2_.yml deleted file mode 100644 index ae0ed5b66..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o221a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o221a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_4_.yml deleted file mode 100644 index cc5013cc0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o221a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o221a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_1_.yml deleted file mode 100644 index d85454de9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o221ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o221ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_2_.yml deleted file mode 100644 index 2d31c3cc6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o221ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o221ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_4_.yml deleted file mode 100644 index 0246d3302..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o221ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o221ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o221ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_1_.yml deleted file mode 100644 index 6581e693d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o22a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o22a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_2_.yml deleted file mode 100644 index 01f0ccbdf..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o22a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o22a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_4_.yml deleted file mode 100644 index 5fddd9645..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o22a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o22a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_1_.yml deleted file mode 100644 index ac13eea20..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o22ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o22ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_2_.yml deleted file mode 100644 index 283e37fc1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o22ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o22ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_4_.yml deleted file mode 100644 index 4274ee7a6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o22ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o22ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o22ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_1_.yml deleted file mode 100644 index b083ae7b0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2bb2a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2bb2a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_2_.yml deleted file mode 100644 index bd4ad1887..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2bb2a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2bb2a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_4_.yml deleted file mode 100644 index bf8bf2430..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2bb2a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2bb2a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_1_.yml deleted file mode 100644 index f9f5c98b9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2bb2ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2bb2ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_4_.yml deleted file mode 100644 index 8e0af5eed..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o2bb2ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o2bb2ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o2bb2ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_2_.yml deleted file mode 100644 index 69e9a9b35..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o311a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o311a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_4_.yml deleted file mode 100644 index 23496308d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o311a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o311a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_1_.yml deleted file mode 100644 index e25ecad17..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o311ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o311ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_2_.yml deleted file mode 100644 index e0d2c92ea..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o311ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o311ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_4_.yml deleted file mode 100644 index 2ef090b1c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o311ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o311ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o311ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_1_.yml deleted file mode 100644 index 659779343..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o31a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o31a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_2_.yml deleted file mode 100644 index 020d2fe8f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o31a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o31a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_4_.yml deleted file mode 100644 index ae4937677..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o31a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o31a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_1_.yml deleted file mode 100644 index 716efca60..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o31ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o31ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_2_.yml deleted file mode 100644 index a90e67eeb..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o31ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o31ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_4_.yml deleted file mode 100644 index 1869e19e5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o31ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o31ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o31ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_1_.yml deleted file mode 100644 index a1754b7d7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o32a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o32a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_2_.yml deleted file mode 100644 index 55a69392b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o32a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o32a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_4_.yml deleted file mode 100644 index 511905762..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o32a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o32a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_1_.yml deleted file mode 100644 index fbb6d80a2..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o32ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o32ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_2_.yml deleted file mode 100644 index e8b2cb3a3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o32ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o32ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_4_.yml deleted file mode 100644 index e5c07ce29..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o32ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o32ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o32ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_1_.yml deleted file mode 100644 index 2263c5b45..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o41a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o41a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_2_.yml deleted file mode 100644 index d795a00c3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o41a_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o41a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_4_.yml deleted file mode 100644 index 5a2fce352..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o41a_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o41a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_1_.yml deleted file mode 100644 index 62e7c608f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o41ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o41ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_2_.yml deleted file mode 100644 index 0d975a91c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o41ai_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o41ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_4_.yml deleted file mode 100644 index 405e43cda..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__o41ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__o41ai_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__o41ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_1_.yml deleted file mode 100644 index a86fd19bc..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_2_.yml deleted file mode 100644 index faa54ad5e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_4_.yml deleted file mode 100644 index 1651c06f1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_1_.yml deleted file mode 100644 index fce5af4ff..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or2b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_2_.yml deleted file mode 100644 index 12b012957..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or2b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_4_.yml deleted file mode 100644 index b9133f192..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or2b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_1_.yml deleted file mode 100644 index 4b824bc0d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_2_.yml deleted file mode 100644 index efc09369c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_4_.yml deleted file mode 100644 index 525127f5e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_1_.yml deleted file mode 100644 index 2ef763c97..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or4_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_2_.yml deleted file mode 100644 index 439bd1742..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or4_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_4_.yml deleted file mode 100644 index 84fbb8cb4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or4_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_1_.yml deleted file mode 100644 index 8975d6561..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or4b_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_2_.yml deleted file mode 100644 index bda974a2c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or4b_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_4_.yml deleted file mode 100644 index e0812441b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or4b_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_1_.yml deleted file mode 100644 index f058c8e90..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or4bb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_2_.yml deleted file mode 100644 index 1031c6d4f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or4bb_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_4_.yml deleted file mode 100644 index 6b48473ec..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__or4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__or4bb_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__or4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbn_1_.yml deleted file mode 100644 index 2d412ea61..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfbbn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfbbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbp_1_.yml deleted file mode 100644 index 52d9135d4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfbbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfbbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfbbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrbp_1_.yml deleted file mode 100644 index 3fc91d4a4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfrbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrbp_2_.yml deleted file mode 100644 index 52965854f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfrbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfrbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtn_1_.yml deleted file mode 100644 index f3aade832..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfrtn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfrtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_1_.yml deleted file mode 100644 index 4935842b0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfrtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_2_.yml deleted file mode 100644 index 41210e9ac..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfrtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfrtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_4_.yml deleted file mode 100644 index 5313d906c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfrtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfrtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfrtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfsbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfsbp_1_.yml deleted file mode 100644 index 8091bd375..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfsbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfsbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfsbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfsbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfsbp_2_.yml deleted file mode 100644 index fc791b596..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfsbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfsbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfsbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_1_.yml deleted file mode 100644 index 893c59111..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfstp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfstp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_2_.yml deleted file mode 100644 index 8ec2dad57..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfstp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfstp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_4_.yml deleted file mode 100644 index f38706240..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfstp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfstp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfstp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxbp_1_.yml deleted file mode 100644 index 847516bf4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxbp_2_.yml deleted file mode 100644 index 55f94463b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfxbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfxbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_1_.yml deleted file mode 100644 index 1c92f1317..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_2_.yml deleted file mode 100644 index 805b4cf6f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfxtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfxtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_4_.yml deleted file mode 100644 index 8b5a58964..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdfxtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdfxtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdfxtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_1_.yml deleted file mode 100644 index aa5cacf25..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdlclkp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdlclkp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_2_.yml deleted file mode 100644 index 829c2f60a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdlclkp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdlclkp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_4_.yml deleted file mode 100644 index 213183dec..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sdlclkp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sdlclkp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sdlclkp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxbp_1_.yml deleted file mode 100644 index e5a679002..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sedfxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sedfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxbp_2_.yml deleted file mode 100644 index f4fd24890..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sedfxbp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sedfxbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_1_.yml deleted file mode 100644 index 4f299af72..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sedfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sedfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_2_.yml deleted file mode 100644 index 5d0dd2c5a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sedfxtp_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sedfxtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_4_.yml deleted file mode 100644 index a31057f9a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__sedfxtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__sedfxtp_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__sedfxtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tap_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tap_1_.yml deleted file mode 100644 index 4e5a4d34f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tap_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__tap_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__tap_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tap_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tap_2_.yml deleted file mode 100644 index 6ca25b896..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tap_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__tap_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__tap_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapmet1_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapmet1_2_.yml deleted file mode 100644 index 940ea5e61..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapmet1_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__tapmet1_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__tapmet1_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvgnd2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvgnd2_1_.yml deleted file mode 100644 index 7248375aa..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvgnd2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__tapvgnd2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__tapvgnd2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvgnd_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvgnd_1_.yml deleted file mode 100644 index 66bee458b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvgnd_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__tapvgnd_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__tapvgnd_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvpwrvgnd_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvpwrvgnd_1_.yml deleted file mode 100644 index 6d53a2a85..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__tapvpwrvgnd_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__tapvpwrvgnd_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__tapvpwrvgnd_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_1_.yml deleted file mode 100644 index 73e6ae20e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xnor2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xnor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_2_.yml deleted file mode 100644 index 2a9164e7c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xnor2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xnor2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_4_.yml deleted file mode 100644 index 53bb9bee0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xnor2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xnor2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_1_.yml deleted file mode 100644 index 1d468c16d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xnor3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xnor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_2_.yml deleted file mode 100644 index c71defc92..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xnor3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xnor3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_4_.yml deleted file mode 100644 index 635806480..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xnor3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xnor3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xnor3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_1_.yml deleted file mode 100644 index 632bee923..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xor2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_2_.yml deleted file mode 100644 index c96f1b7ca..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xor2_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xor2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_4_.yml deleted file mode 100644 index 381175c11..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xor2_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xor2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_1_.yml deleted file mode 100644 index 773ed4459..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xor3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_2_.yml deleted file mode 100644 index 3369f69b5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xor3_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xor3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_4_.yml deleted file mode 100644 index d73843287..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hs__xor3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hs__xor3_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hs__xor3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a21o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a21o_1_.yml deleted file mode 100644 index bce0ac2c7..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a21o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__a21o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__a21o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a21oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a21oi_1_.yml deleted file mode 100644 index 274011b64..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a21oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__a21oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__a21oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a22o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a22o_1_.yml deleted file mode 100644 index 4ece98f39..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a22o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__a22o_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__a22o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a22oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a22oi_1_.yml deleted file mode 100644 index cc6ba486c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__a22oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__a22oi_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__a22oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__and2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__and2_1_.yml deleted file mode 100644 index 30648e5ff..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__and2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__and2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__and2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__and3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__and3_1_.yml deleted file mode 100644 index 67820f61c..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__and3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__and3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__and3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_16_.yml deleted file mode 100644 index 3f1b3c312..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__buf_16 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__buf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_1_.yml deleted file mode 100644 index 28c2f2977..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__buf_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__buf_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_2_.yml deleted file mode 100644 index 79ac7c7ec..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__buf_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__buf_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_32_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_32_.yml deleted file mode 100644 index 918f25629..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_32_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__buf_32 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__buf_32 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_4_.yml deleted file mode 100644 index 256bc4d81..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__buf_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__buf_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_8_.yml deleted file mode 100644 index 7be022c8e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__buf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__buf_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__buf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__conb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__conb_1_.yml deleted file mode 100644 index bc3619244..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__conb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__conb_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__conb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__decap_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__decap_4_.yml deleted file mode 100644 index ed2962389..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__decap_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__decap_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__decap_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__decap_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__decap_8_.yml deleted file mode 100644 index d0cbb71c8..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__decap_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__decap_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__decap_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfrbp_1_.yml deleted file mode 100644 index d8dc6f53d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__dfrbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__dfrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfrtp_1_.yml deleted file mode 100644 index ab7b01476..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__dfrtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__dfrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfsbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfsbp_1_.yml deleted file mode 100644 index c59ccb7bf..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfsbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__dfsbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__dfsbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfstp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfstp_1_.yml deleted file mode 100644 index f4d98e13a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfstp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__dfstp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__dfstp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfxbp_1_.yml deleted file mode 100644 index 9d6547492..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__dfxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__dfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfxtp_1_.yml deleted file mode 100644 index eaae2724b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__dfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__dfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__diode_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__diode_2_.yml deleted file mode 100644 index 33aa1cf06..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__diode_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__diode_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__diode_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlrtp_1_.yml deleted file mode 100644 index 9d74a6247..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__dlrtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__dlrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlxtp_1_.yml deleted file mode 100644 index c5a26a27d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__dlxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__dlxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__einvn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__einvn_1_.yml deleted file mode 100644 index 974f2c1c6..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__einvn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__einvn_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__einvn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__einvp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__einvp_1_.yml deleted file mode 100644 index a9082d2a5..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__einvp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__einvp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__einvp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_1_.yml deleted file mode 100644 index 60c25a20e..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__fill_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__fill_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_2_.yml deleted file mode 100644 index 55cda9c7b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__fill_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__fill_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_4_.yml deleted file mode 100644 index 737a9ff37..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__fill_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__fill_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_8_.yml deleted file mode 100644 index 695b1879f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__fill_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__fill_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__fill_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_1_.yml deleted file mode 100644 index 9eea5c428..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__inv_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__inv_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_2_.yml deleted file mode 100644 index 68373e445..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__inv_2 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__inv_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_4_.yml deleted file mode 100644 index c8c585b80..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__inv_4 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__inv_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_8_.yml deleted file mode 100644 index 7d6fa851d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__inv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__inv_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__inv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2hv_hl_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2hv_hl_1_.yml deleted file mode 100644 index 9e5e3eb46..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2hv_hl_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__lsbufhv2hv_hl_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__lsbufhv2hv_hl_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2hv_lh_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2hv_lh_1_.yml deleted file mode 100644 index ff21ab701..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2hv_lh_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__lsbufhv2hv_lh_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__lsbufhv2hv_lh_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2lv_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2lv_1_.yml deleted file mode 100644 index 692e51628..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2lv_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__lsbufhv2lv_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__lsbufhv2lv_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2lv_simple_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2lv_simple_1_.yml deleted file mode 100644 index d2e091a4f..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbufhv2lv_simple_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__lsbufhv2lv_simple_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__lsbufhv2lv_simple_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_1_.yml deleted file mode 100644 index f3d5f188a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__lsbuflv2hv_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__lsbuflv2hv_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3_.yml deleted file mode 100644 index f1a7d540d..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1_.yml deleted file mode 100644 index ac5d1f677..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1_.yml deleted file mode 100644 index c146b6cdf..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__mux2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__mux2_1_.yml deleted file mode 100644 index 38d567f05..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__mux2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__mux2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__mux2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__mux4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__mux4_1_.yml deleted file mode 100644 index 3f1852c27..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__mux4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__mux4_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__mux4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nand2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nand2_1_.yml deleted file mode 100644 index a8b072f13..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nand2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__nand2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__nand2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nor2_1_.yml deleted file mode 100644 index 0a1fe77c3..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__nor2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__nor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nor3_1_.yml deleted file mode 100644 index b61ab13ff..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__nor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__nor3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__nor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o21a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o21a_1_.yml deleted file mode 100644 index 63704057b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o21a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__o21a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__o21a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o21ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o21ai_1_.yml deleted file mode 100644 index 6d5778714..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o21ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__o21ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__o21ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o22a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o22a_1_.yml deleted file mode 100644 index 76ad31426..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o22a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__o22a_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__o22a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o22ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o22ai_1_.yml deleted file mode 100644 index 218f49811..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__o22ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__o22ai_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__o22ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__or2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__or2_1_.yml deleted file mode 100644 index 6998aead4..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__or2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__or2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__or2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__or3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__or3_1_.yml deleted file mode 100644 index 7c15c0d28..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__or3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__or3_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__or3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__probe_p_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__probe_p_8_.yml deleted file mode 100644 index 397b25d7b..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__probe_p_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__probe_p_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__probe_p_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__probec_p_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__probec_p_8_.yml deleted file mode 100644 index 566aeffe1..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__probec_p_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__probec_p_8 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__probec_p_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__schmittbuf_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__schmittbuf_1_.yml deleted file mode 100644 index 7f92c933a..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__schmittbuf_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__schmittbuf_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__schmittbuf_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfrbp_1_.yml deleted file mode 100644 index 658364b58..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__sdfrbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__sdfrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfrtp_1_.yml deleted file mode 100644 index c3ce8cc19..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__sdfrtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__sdfrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfsbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfsbp_1_.yml deleted file mode 100644 index 9a7bb8915..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfsbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__sdfsbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__sdfsbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfstp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfstp_1_.yml deleted file mode 100644 index 7b54cceb0..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfstp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__sdfstp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__sdfstp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfxbp_1_.yml deleted file mode 100644 index 79a995e07..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__sdfxbp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__sdfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfxtp_1_.yml deleted file mode 100644 index 40aeb9156..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__sdfxtp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__sdfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdlclkp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdlclkp_1_.yml deleted file mode 100644 index ee0fc3d80..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__sdlclkp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__sdlclkp_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__sdlclkp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__xor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__xor2_1_.yml deleted file mode 100644 index 81e913ba9..000000000 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__xor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sky130_fd_sc_hvl__xor2_1 -info: {} -module: sky130.components -name: sky130_fd_sc_hvl__xor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_tap_1_.yml b/tests/test_components/test_pdk_settings_tap_1_.yml new file mode 100644 index 000000000..9f056eef3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_tap_1_.yml @@ -0,0 +1,5 @@ +function: tap_1 +info: {} +module: sky130.components +name: tap_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_tap_2_.yml b/tests/test_components/test_pdk_settings_tap_2_.yml new file mode 100644 index 000000000..a3a54438f --- /dev/null +++ b/tests/test_components/test_pdk_settings_tap_2_.yml @@ -0,0 +1,5 @@ +function: tap_2 +info: {} +module: sky130.components +name: tap_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_tapvgnd2_1_.yml b/tests/test_components/test_pdk_settings_tapvgnd2_1_.yml new file mode 100644 index 000000000..6fa3767f2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_tapvgnd2_1_.yml @@ -0,0 +1,5 @@ +function: tapvgnd2_1 +info: {} +module: sky130.components +name: tapvgnd2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_tapvgnd_1_.yml b/tests/test_components/test_pdk_settings_tapvgnd_1_.yml new file mode 100644 index 000000000..4a6f2907f --- /dev/null +++ b/tests/test_components/test_pdk_settings_tapvgnd_1_.yml @@ -0,0 +1,5 @@ +function: tapvgnd_1 +info: {} +module: sky130.components +name: tapvgnd_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_4_.yml b/tests/test_components/test_pdk_settings_tapvpwrvgnd_1_.yml similarity index 58% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_4_.yml rename to tests/test_components/test_pdk_settings_tapvpwrvgnd_1_.yml index ae2d8008c..85a557f60 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_4_.yml +++ b/tests/test_components/test_pdk_settings_tapvpwrvgnd_1_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hd__nor4bb_4 +function: tapvpwrvgnd_1 info: {} module: sky130.components -name: sky130_fd_sc_hd__nor4bb_4 +name: tapvpwrvgnd_1 settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor2_1_.yml b/tests/test_components/test_pdk_settings_xnor2_1_.yml new file mode 100644 index 000000000..31b73ad19 --- /dev/null +++ b/tests/test_components/test_pdk_settings_xnor2_1_.yml @@ -0,0 +1,5 @@ +function: xnor2_1 +info: {} +module: sky130.components +name: xnor2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor2_2_.yml b/tests/test_components/test_pdk_settings_xnor2_2_.yml new file mode 100644 index 000000000..5c85e0e04 --- /dev/null +++ b/tests/test_components/test_pdk_settings_xnor2_2_.yml @@ -0,0 +1,5 @@ +function: xnor2_2 +info: {} +module: sky130.components +name: xnor2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor2_4_.yml b/tests/test_components/test_pdk_settings_xnor2_4_.yml new file mode 100644 index 000000000..148ace6db --- /dev/null +++ b/tests/test_components/test_pdk_settings_xnor2_4_.yml @@ -0,0 +1,5 @@ +function: xnor2_4 +info: {} +module: sky130.components +name: xnor2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor3_1_.yml b/tests/test_components/test_pdk_settings_xnor3_1_.yml new file mode 100644 index 000000000..e6e2c6261 --- /dev/null +++ b/tests/test_components/test_pdk_settings_xnor3_1_.yml @@ -0,0 +1,5 @@ +function: xnor3_1 +info: {} +module: sky130.components +name: xnor3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor3_2_.yml b/tests/test_components/test_pdk_settings_xnor3_2_.yml new file mode 100644 index 000000000..aaa0ede3a --- /dev/null +++ b/tests/test_components/test_pdk_settings_xnor3_2_.yml @@ -0,0 +1,5 @@ +function: xnor3_2 +info: {} +module: sky130.components +name: xnor3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor3_4_.yml b/tests/test_components/test_pdk_settings_xnor3_4_.yml new file mode 100644 index 000000000..67139bb2c --- /dev/null +++ b/tests/test_components/test_pdk_settings_xnor3_4_.yml @@ -0,0 +1,5 @@ +function: xnor3_4 +info: {} +module: sky130.components +name: xnor3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_xor2_1_.yml b/tests/test_components/test_pdk_settings_xor2_1_.yml new file mode 100644 index 000000000..2f204e8bf --- /dev/null +++ b/tests/test_components/test_pdk_settings_xor2_1_.yml @@ -0,0 +1,5 @@ +function: xor2_1 +info: {} +module: sky130.components +name: xor2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlclkp_1_.yml b/tests/test_components/test_pdk_settings_xor2_2_.yml similarity index 55% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlclkp_1_.yml rename to tests/test_components/test_pdk_settings_xor2_2_.yml index cb5151438..8f5061e70 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__dlclkp_1_.yml +++ b/tests/test_components/test_pdk_settings_xor2_2_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hvl__dlclkp_1 +function: xor2_2 info: {} module: sky130.components -name: sky130_fd_sc_hvl__dlclkp_1 +name: xor2_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_xor2_4_.yml b/tests/test_components/test_pdk_settings_xor2_4_.yml new file mode 100644 index 000000000..53b8f12c3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_xor2_4_.yml @@ -0,0 +1,5 @@ +function: xor2_4 +info: {} +module: sky130.components +name: xor2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_xor3_1_.yml b/tests/test_components/test_pdk_settings_xor3_1_.yml new file mode 100644 index 000000000..1e939d2f1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_xor3_1_.yml @@ -0,0 +1,5 @@ +function: xor3_1 +info: {} +module: sky130.components +name: xor3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__xnor2_1_.yml b/tests/test_components/test_pdk_settings_xor3_2_.yml similarity index 56% rename from tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__xnor2_1_.yml rename to tests/test_components/test_pdk_settings_xor3_2_.yml index 77b65dc55..48fbebe02 100644 --- a/tests/test_components/test_pdk_settings_sky130_fd_sc_hvl__xnor2_1_.yml +++ b/tests/test_components/test_pdk_settings_xor3_2_.yml @@ -1,5 +1,5 @@ -function: sky130_fd_sc_hvl__xnor2_1 +function: xor3_2 info: {} module: sky130.components -name: sky130_fd_sc_hvl__xnor2_1 +name: xor3_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_xor3_4_.yml b/tests/test_components/test_pdk_settings_xor3_4_.yml new file mode 100644 index 000000000..cf311c5fc --- /dev/null +++ b/tests/test_components/test_pdk_settings_xor3_4_.yml @@ -0,0 +1,5 @@ +function: xor3_4 +info: {} +module: sky130.components +name: xor3_4 +settings: {} From 3974b4a2f78b40de23c45db629107093af2ed95f Mon Sep 17 00:00:00 2001 From: daquintero Date: Thu, 23 May 2024 13:40:20 +0200 Subject: [PATCH 07/11] :tada: Working whell and tar build installation, ready to release --- .github/workflows/release.yml | 2 ++ pyproject.toml | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3dca7bd2c..da9bfec9a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,6 +10,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + with: + submodules: 'recursive' - name: Set up Python uses: actions/setup-python@v5 with: diff --git a/pyproject.toml b/pyproject.toml index f6e9e2191..fc5090d2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,6 +38,11 @@ docs = [ "jupyter-book==1.0.0" ] +[tool.flit.sdist] +exclude = [ + "**/.git/**" +] + [tool.mypy] python_version = "3.10" strict = true From 063ec6feb05f081612eba92cdb4ae6063a05489a Mon Sep 17 00:00:00 2001 From: daquintero Date: Thu, 23 May 2024 13:44:20 +0200 Subject: [PATCH 08/11] :wrench: Components tests should pass so far, now with submodules on ghaction --- .github/workflows/test_code.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test_code.yml b/.github/workflows/test_code.yml index 55bfc70af..45d50c0ac 100644 --- a/.github/workflows/test_code.yml +++ b/.github/workflows/test_code.yml @@ -27,6 +27,8 @@ jobs: container: ghcr.io/gdsfactory/gdsfactory:main steps: - uses: actions/checkout@v4 + with: + submodules: "recursive" - name: Install dependencies run: | make install From 4b19e1827a2e160f875b6aa401a86727f748b683 Mon Sep 17 00:00:00 2001 From: daquintero Date: Thu, 23 May 2024 13:57:20 +0200 Subject: [PATCH 09/11] :rewind: Bring back old naming convention for standard flow --- docs/notebooks/intro.ipynb | 2872 ++++++++++- sky130/compile_components.py | 3 + sky130/components.py | 4362 ++++++++--------- .../test_pdk_settings_a2111o_1_.yml | 5 - .../test_pdk_settings_a2111o_2_.yml | 5 - .../test_pdk_settings_a2111o_4_.yml | 5 - .../test_pdk_settings_a2111oi_0_.yml | 5 - .../test_pdk_settings_a2111oi_1_.yml | 5 - .../test_pdk_settings_a2111oi_2_.yml | 5 - .../test_pdk_settings_a2111oi_4_.yml | 5 - .../test_pdk_settings_a211o_1_.yml | 5 - .../test_pdk_settings_a211o_2_.yml | 5 - .../test_pdk_settings_a211o_4_.yml | 5 - .../test_pdk_settings_a211oi_1_.yml | 5 - .../test_pdk_settings_a211oi_2_.yml | 5 - .../test_pdk_settings_a211oi_4_.yml | 5 - .../test_pdk_settings_a21bo_1_.yml | 5 - .../test_pdk_settings_a21bo_2_.yml | 5 - .../test_pdk_settings_a21bo_4_.yml | 5 - .../test_pdk_settings_a21boi_0_.yml | 5 - .../test_pdk_settings_a21boi_1_.yml | 5 - .../test_pdk_settings_a21boi_2_.yml | 5 - .../test_pdk_settings_a21boi_4_.yml | 5 - .../test_pdk_settings_a21oi_1_.yml | 5 - .../test_pdk_settings_a21oi_2_.yml | 5 - .../test_pdk_settings_a21oi_4_.yml | 5 - .../test_pdk_settings_a221o_1_.yml | 5 - .../test_pdk_settings_a221o_2_.yml | 5 - .../test_pdk_settings_a221o_4_.yml | 5 - .../test_pdk_settings_a221oi_1_.yml | 5 - .../test_pdk_settings_a221oi_2_.yml | 5 - .../test_pdk_settings_a221oi_4_.yml | 5 - .../test_pdk_settings_a222oi_1_.yml | 5 - .../test_pdk_settings_a22o_1_.yml | 5 - .../test_pdk_settings_a22o_2_.yml | 5 - .../test_pdk_settings_a22o_4_.yml | 5 - .../test_pdk_settings_a22oi_1_.yml | 5 - .../test_pdk_settings_a22oi_2_.yml | 5 - .../test_pdk_settings_a22oi_4_.yml | 5 - .../test_pdk_settings_a2bb2o_1_.yml | 5 - .../test_pdk_settings_a2bb2o_2_.yml | 5 - .../test_pdk_settings_a2bb2o_4_.yml | 5 - .../test_pdk_settings_a2bb2oi_1_.yml | 5 - .../test_pdk_settings_a2bb2oi_2_.yml | 5 - .../test_pdk_settings_a2bb2oi_4_.yml | 5 - .../test_pdk_settings_a311o_1_.yml | 5 - .../test_pdk_settings_a311o_2_.yml | 5 - .../test_pdk_settings_a311o_4_.yml | 5 - .../test_pdk_settings_a311oi_1_.yml | 5 - .../test_pdk_settings_a311oi_2_.yml | 5 - .../test_pdk_settings_a311oi_4_.yml | 5 - .../test_pdk_settings_a31o_1_.yml | 5 - .../test_pdk_settings_a31o_2_.yml | 5 - .../test_pdk_settings_a31o_4_.yml | 5 - .../test_pdk_settings_a31oi_1_.yml | 5 - .../test_pdk_settings_a31oi_2_.yml | 5 - .../test_pdk_settings_a31oi_4_.yml | 5 - .../test_pdk_settings_a32o_1_.yml | 5 - .../test_pdk_settings_a32o_2_.yml | 5 - .../test_pdk_settings_a32o_4_.yml | 5 - .../test_pdk_settings_a32oi_1_.yml | 5 - .../test_pdk_settings_a32oi_2_.yml | 5 - .../test_pdk_settings_a32oi_4_.yml | 5 - .../test_pdk_settings_a41o_1_.yml | 5 - .../test_pdk_settings_a41o_2_.yml | 5 - .../test_pdk_settings_a41o_4_.yml | 5 - .../test_pdk_settings_a41oi_1_.yml | 5 - .../test_pdk_settings_a41oi_2_.yml | 5 - .../test_pdk_settings_a41oi_4_.yml | 5 - .../test_pdk_settings_and2_0_.yml | 5 - .../test_pdk_settings_and2_1_.yml | 5 - .../test_pdk_settings_and2_2_.yml | 5 - .../test_pdk_settings_and2_4_.yml | 5 - .../test_pdk_settings_and2b_1_.yml | 5 - .../test_pdk_settings_and2b_2_.yml | 5 - .../test_pdk_settings_and3_1_.yml | 5 - .../test_pdk_settings_and3_2_.yml | 5 - .../test_pdk_settings_and3_4_.yml | 5 - .../test_pdk_settings_and3b_1_.yml | 5 - .../test_pdk_settings_and3b_2_.yml | 5 - .../test_pdk_settings_and3b_4_.yml | 5 - .../test_pdk_settings_and4_1_.yml | 5 - .../test_pdk_settings_and4_2_.yml | 5 - .../test_pdk_settings_and4_4_.yml | 5 - .../test_pdk_settings_and4b_1_.yml | 5 - .../test_pdk_settings_and4b_2_.yml | 5 - .../test_pdk_settings_and4b_4_.yml | 5 - .../test_pdk_settings_and4bb_1_.yml | 5 - .../test_pdk_settings_and4bb_2_.yml | 5 - .../test_pdk_settings_and4bb_4_.yml | 5 - .../test_pdk_settings_buf_12_.yml | 5 - .../test_pdk_settings_buf_16_.yml | 5 - .../test_pdk_settings_buf_1_.yml | 5 - .../test_pdk_settings_buf_2_.yml | 5 - .../test_pdk_settings_buf_4_.yml | 5 - .../test_pdk_settings_buf_6_.yml | 5 - .../test_pdk_settings_buf_8_.yml | 5 - .../test_pdk_settings_bufbuf_16_.yml | 5 - .../test_pdk_settings_bufbuf_8_.yml | 5 - .../test_pdk_settings_bufinv_16_.yml | 5 - .../test_pdk_settings_bufinv_8_.yml | 5 - ...tings_cap_vpp_02p4x04p6_m1m2_noshield_.yml | 5 - ...02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 - ...02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 - ...02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 - ...02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 - ...2p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml | 5 - ...p_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml | 5 - ...ngs_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml | 5 - ...p_04p4x04p6_l1m1m2_noshield_o2subcell_.yml | 5 - ...vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml | 5 - ...tings_cap_vpp_04p4x04p6_m1m2_noshield_.yml | 5 - ...gs_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml | 5 - ...tings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml | 5 - ...ngs_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml | 5 - ...p_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml | 5 - ...p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml | 5 - ...05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml | 5 - ...cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml | 5 - ...vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml | 5 - ...s_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml | 5 - ...p_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml | 5 - ...ngs_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml | 5 - ...p_08p6x07p8_l1m1m2_noshield_o2subcell_.yml | 5 - ...vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml | 5 - ...tings_cap_vpp_08p6x07p8_m1m2_noshield_.yml | 5 - ...tings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml | 5 - ...ngs_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml | 5 - ...p_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml | 5 - ...p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml | 5 - ...11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml | 5 - ...vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml | 5 - ..._11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml | 5 - ...ngs_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml | 5 - ...s_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml | 5 - ...s_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml | 5 - ...p_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml | 5 - ...cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml | 5 - ...vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml | 5 - ...cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml | 5 - ...p_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml | 5 - ...p_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml | 5 - ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml | 5 - ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml | 5 - ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml | 5 - ..._11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml | 5 - ...tings_cap_vpp_11p5x11p7_m1m2_noshield_.yml | 5 - ...tings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml | 5 - ...ngs_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml | 5 - ...p_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml | 5 - ...p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml | 5 - ...cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml | 5 - ...vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml | 5 - ...s_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml | 5 - ...tings_cap_vpp_11p5x11p7_m1m4_noshield_.yml | 5 - ...vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 - ...vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 - ...vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 - ...vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 - ...vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 - ...vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 - ...vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 - ...vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 - ...vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 - ...11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml | 5 - ...vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 - ...23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml | 5 - ...5p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml | 5 - .../test_pdk_settings_clkbuf_16_.yml | 5 - .../test_pdk_settings_clkbuf_1_.yml | 5 - .../test_pdk_settings_clkbuf_2_.yml | 5 - .../test_pdk_settings_clkbuf_4_.yml | 5 - .../test_pdk_settings_clkbuf_8_.yml | 5 - .../test_pdk_settings_clkdlybuf4s15_1_.yml | 5 - .../test_pdk_settings_clkdlybuf4s15_2_.yml | 5 - .../test_pdk_settings_clkdlybuf4s18_1_.yml | 5 - .../test_pdk_settings_clkdlybuf4s18_2_.yml | 5 - .../test_pdk_settings_clkdlybuf4s25_1_.yml | 5 - .../test_pdk_settings_clkdlybuf4s25_2_.yml | 5 - .../test_pdk_settings_clkdlybuf4s50_1_.yml | 5 - .../test_pdk_settings_clkdlybuf4s50_2_.yml | 5 - .../test_pdk_settings_clkinv_16_.yml | 5 - .../test_pdk_settings_clkinv_1_.yml | 5 - .../test_pdk_settings_clkinv_2_.yml | 5 - .../test_pdk_settings_clkinv_4_.yml | 5 - .../test_pdk_settings_clkinv_8_.yml | 5 - .../test_pdk_settings_clkinvlp_2_.yml | 5 - .../test_pdk_settings_clkinvlp_4_.yml | 5 - .../test_pdk_settings_conb_1_.yml | 5 - .../test_pdk_settings_decap_12_.yml | 5 - .../test_pdk_settings_decap_3_.yml | 5 - .../test_pdk_settings_decap_6_.yml | 5 - .../test_pdk_settings_decap_8_.yml | 5 - .../test_pdk_settings_dfbbn_1_.yml | 5 - .../test_pdk_settings_dfbbn_2_.yml | 5 - .../test_pdk_settings_dfbbp_1_.yml | 5 - .../test_pdk_settings_dfrbp_1_.yml | 5 - .../test_pdk_settings_dfrbp_2_.yml | 5 - .../test_pdk_settings_dfrtn_1_.yml | 5 - .../test_pdk_settings_dfrtp_1_.yml | 5 - .../test_pdk_settings_dfrtp_2_.yml | 5 - .../test_pdk_settings_dfrtp_4_.yml | 5 - .../test_pdk_settings_dfsbp_1_.yml | 5 - .../test_pdk_settings_dfsbp_2_.yml | 5 - .../test_pdk_settings_dfstp_1_.yml | 5 - .../test_pdk_settings_dfstp_2_.yml | 5 - .../test_pdk_settings_dfstp_4_.yml | 5 - .../test_pdk_settings_dfxbp_1_.yml | 5 - .../test_pdk_settings_dfxbp_2_.yml | 5 - .../test_pdk_settings_dfxtp_1_.yml | 5 - .../test_pdk_settings_dfxtp_2_.yml | 5 - .../test_pdk_settings_dfxtp_4_.yml | 5 - .../test_pdk_settings_diode_2_.yml | 5 - .../test_pdk_settings_dlclkp_1_.yml | 5 - .../test_pdk_settings_dlclkp_2_.yml | 5 - .../test_pdk_settings_dlclkp_4_.yml | 5 - .../test_pdk_settings_dlrbn_1_.yml | 5 - .../test_pdk_settings_dlrbn_2_.yml | 5 - .../test_pdk_settings_dlrbp_1_.yml | 5 - .../test_pdk_settings_dlrbp_2_.yml | 5 - .../test_pdk_settings_dlrtn_1_.yml | 5 - .../test_pdk_settings_dlrtn_2_.yml | 5 - .../test_pdk_settings_dlrtn_4_.yml | 5 - .../test_pdk_settings_dlrtp_1_.yml | 5 - .../test_pdk_settings_dlrtp_2_.yml | 5 - .../test_pdk_settings_dlrtp_4_.yml | 5 - .../test_pdk_settings_dlxbn_1_.yml | 5 - .../test_pdk_settings_dlxbn_2_.yml | 5 - .../test_pdk_settings_dlxbp_1_.yml | 5 - .../test_pdk_settings_dlxtn_1_.yml | 5 - .../test_pdk_settings_dlxtn_2_.yml | 5 - .../test_pdk_settings_dlxtn_4_.yml | 5 - .../test_pdk_settings_dlxtp_1_.yml | 5 - .../test_pdk_settings_dlygate4sd1_1_.yml | 5 - .../test_pdk_settings_dlygate4sd2_1_.yml | 5 - .../test_pdk_settings_dlygate4sd3_1_.yml | 5 - .../test_pdk_settings_dlymetal6s2s_1_.yml | 5 - .../test_pdk_settings_dlymetal6s4s_1_.yml | 5 - .../test_pdk_settings_dlymetal6s6s_1_.yml | 5 - .../test_pdk_settings_ebufn_1_.yml | 5 - .../test_pdk_settings_ebufn_2_.yml | 5 - .../test_pdk_settings_ebufn_4_.yml | 5 - .../test_pdk_settings_ebufn_8_.yml | 5 - .../test_pdk_settings_edfxbp_1_.yml | 5 - .../test_pdk_settings_edfxtp_1_.yml | 5 - .../test_pdk_settings_einvn_0_.yml | 5 - .../test_pdk_settings_einvn_1_.yml | 5 - .../test_pdk_settings_einvn_2_.yml | 5 - .../test_pdk_settings_einvn_4_.yml | 5 - .../test_pdk_settings_einvn_8_.yml | 5 - .../test_pdk_settings_einvp_1_.yml | 5 - .../test_pdk_settings_einvp_2_.yml | 5 - .../test_pdk_settings_einvp_4_.yml | 5 - .../test_pdk_settings_einvp_8_.yml | 5 - ...ttings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml | 5 - ...ttings_esd_rf_nfet_20v0_iec_21vW60p00_.yml | 5 - ...ttings_esd_rf_nfet_20v0_iec_32vW60p00_.yml | 5 - .../test_pdk_settings_fa_1_.yml | 5 - .../test_pdk_settings_fa_2_.yml | 5 - .../test_pdk_settings_fa_4_.yml | 5 - .../test_pdk_settings_fah_1_.yml | 5 - .../test_pdk_settings_fahcin_1_.yml | 5 - .../test_pdk_settings_fahcon_1_.yml | 5 - .../test_pdk_settings_fill_1_.yml | 5 - .../test_pdk_settings_fill_2_.yml | 5 - .../test_pdk_settings_fill_4_.yml | 5 - .../test_pdk_settings_fill_8_.yml | 5 - .../test_pdk_settings_ha_1_.yml | 5 - .../test_pdk_settings_ha_2_.yml | 5 - .../test_pdk_settings_ha_4_.yml | 5 - .../test_pdk_settings_inv_12_.yml | 5 - .../test_pdk_settings_inv_16_.yml | 5 - .../test_pdk_settings_inv_1_.yml | 5 - .../test_pdk_settings_inv_2_.yml | 5 - .../test_pdk_settings_inv_4_.yml | 5 - .../test_pdk_settings_inv_6_.yml | 5 - .../test_pdk_settings_inv_8_.yml | 5 - .../test_pdk_settings_lpflow_bleeder_1_.yml | 5 - ...st_pdk_settings_lpflow_clkbufkapwr_16_.yml | 5 - ...est_pdk_settings_lpflow_clkbufkapwr_1_.yml | 5 - ...est_pdk_settings_lpflow_clkbufkapwr_2_.yml | 5 - ...est_pdk_settings_lpflow_clkbufkapwr_4_.yml | 5 - ...est_pdk_settings_lpflow_clkbufkapwr_8_.yml | 5 - ...st_pdk_settings_lpflow_clkinvkapwr_16_.yml | 5 - ...est_pdk_settings_lpflow_clkinvkapwr_1_.yml | 5 - ...est_pdk_settings_lpflow_clkinvkapwr_2_.yml | 5 - ...est_pdk_settings_lpflow_clkinvkapwr_4_.yml | 5 - ...est_pdk_settings_lpflow_clkinvkapwr_8_.yml | 5 - ...est_pdk_settings_lpflow_decapkapwr_12_.yml | 5 - ...test_pdk_settings_lpflow_decapkapwr_3_.yml | 5 - ...test_pdk_settings_lpflow_decapkapwr_4_.yml | 5 - ...test_pdk_settings_lpflow_decapkapwr_6_.yml | 5 - ...test_pdk_settings_lpflow_decapkapwr_8_.yml | 5 - ...test_pdk_settings_lpflow_inputiso0n_1_.yml | 5 - ...test_pdk_settings_lpflow_inputiso0p_1_.yml | 5 - ...test_pdk_settings_lpflow_inputiso1n_1_.yml | 5 - ...test_pdk_settings_lpflow_inputiso1p_1_.yml | 5 - ...t_pdk_settings_lpflow_inputisolatch_1_.yml | 5 - ...test_pdk_settings_lpflow_isobufsrc_16_.yml | 5 - .../test_pdk_settings_lpflow_isobufsrc_1_.yml | 5 - .../test_pdk_settings_lpflow_isobufsrc_2_.yml | 5 - .../test_pdk_settings_lpflow_isobufsrc_4_.yml | 5 - .../test_pdk_settings_lpflow_isobufsrc_8_.yml | 5 - ...pdk_settings_lpflow_isobufsrckapwr_16_.yml | 5 - ...ings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml | 5 - ...ings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml | 5 - ...ings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml | 5 - ...dk_settings_lpflow_lsbuf_lh_isowell_4_.yml | 5 - ...ettings_lpflow_lsbuf_lh_isowell_tap_2_.yml | 5 - ...ettings_lpflow_lsbuf_lh_isowell_tap_4_.yml | 5 - .../test_pdk_settings_macro_sparecell_.yml | 5 - .../test_pdk_settings_maj3_1_.yml | 5 - .../test_pdk_settings_maj3_2_.yml | 5 - .../test_pdk_settings_maj3_4_.yml | 5 - .../test_pdk_settings_mux2_1_.yml | 5 - .../test_pdk_settings_mux2_2_.yml | 5 - .../test_pdk_settings_mux2_4_.yml | 5 - .../test_pdk_settings_mux2_8_.yml | 5 - .../test_pdk_settings_mux2i_1_.yml | 5 - .../test_pdk_settings_mux2i_2_.yml | 5 - .../test_pdk_settings_mux2i_4_.yml | 5 - .../test_pdk_settings_mux4_1_.yml | 5 - .../test_pdk_settings_mux4_2_.yml | 5 - .../test_pdk_settings_mux4_4_.yml | 5 - .../test_pdk_settings_nand2_1_.yml | 5 - .../test_pdk_settings_nand2_2_.yml | 5 - .../test_pdk_settings_nand2_4_.yml | 5 - .../test_pdk_settings_nand2_8_.yml | 5 - .../test_pdk_settings_nand2b_1_.yml | 5 - .../test_pdk_settings_nand2b_2_.yml | 5 - .../test_pdk_settings_nand2b_4_.yml | 5 - .../test_pdk_settings_nand3_1_.yml | 5 - .../test_pdk_settings_nand3_2_.yml | 5 - .../test_pdk_settings_nand3_4_.yml | 5 - .../test_pdk_settings_nand3b_1_.yml | 5 - .../test_pdk_settings_nand3b_4_.yml | 5 - .../test_pdk_settings_nand4_1_.yml | 5 - .../test_pdk_settings_nand4_2_.yml | 5 - .../test_pdk_settings_nand4_4_.yml | 5 - .../test_pdk_settings_nand4b_1_.yml | 5 - .../test_pdk_settings_nand4b_2_.yml | 5 - .../test_pdk_settings_nand4b_4_.yml | 5 - .../test_pdk_settings_nand4bb_1_.yml | 5 - .../test_pdk_settings_nand4bb_2_.yml | 5 - .../test_pdk_settings_nand4bb_4_.yml | 5 - .../test_pdk_settings_nor2_1_.yml | 5 - .../test_pdk_settings_nor2_2_.yml | 5 - .../test_pdk_settings_nor2_4_.yml | 5 - .../test_pdk_settings_nor2_8_.yml | 5 - .../test_pdk_settings_nor2b_1_.yml | 5 - .../test_pdk_settings_nor2b_2_.yml | 5 - .../test_pdk_settings_nor2b_4_.yml | 5 - .../test_pdk_settings_nor3_1_.yml | 5 - .../test_pdk_settings_nor3_2_.yml | 5 - .../test_pdk_settings_nor3_4_.yml | 5 - .../test_pdk_settings_nor3b_1_.yml | 5 - .../test_pdk_settings_nor3b_2_.yml | 5 - .../test_pdk_settings_nor3b_4_.yml | 5 - .../test_pdk_settings_nor4_1_.yml | 5 - .../test_pdk_settings_nor4_2_.yml | 5 - .../test_pdk_settings_nor4_4_.yml | 5 - .../test_pdk_settings_nor4b_1_.yml | 5 - .../test_pdk_settings_nor4b_2_.yml | 5 - .../test_pdk_settings_nor4b_4_.yml | 5 - .../test_pdk_settings_nor4bb_1_.yml | 5 - .../test_pdk_settings_nor4bb_2_.yml | 5 - .../test_pdk_settings_nor4bb_4_.yml | 5 - .../test_pdk_settings_o2111a_1_.yml | 5 - .../test_pdk_settings_o2111a_2_.yml | 5 - .../test_pdk_settings_o2111a_4_.yml | 5 - .../test_pdk_settings_o2111ai_1_.yml | 5 - .../test_pdk_settings_o2111ai_2_.yml | 5 - .../test_pdk_settings_o2111ai_4_.yml | 5 - .../test_pdk_settings_o211a_1_.yml | 5 - .../test_pdk_settings_o211a_2_.yml | 5 - .../test_pdk_settings_o211a_4_.yml | 5 - .../test_pdk_settings_o211ai_1_.yml | 5 - .../test_pdk_settings_o211ai_2_.yml | 5 - .../test_pdk_settings_o211ai_4_.yml | 5 - .../test_pdk_settings_o21a_1_.yml | 5 - .../test_pdk_settings_o21a_2_.yml | 5 - .../test_pdk_settings_o21a_4_.yml | 5 - .../test_pdk_settings_o21ai_0_.yml | 5 - .../test_pdk_settings_o21ai_1_.yml | 5 - .../test_pdk_settings_o21ai_2_.yml | 5 - .../test_pdk_settings_o21ai_4_.yml | 5 - .../test_pdk_settings_o21ba_1_.yml | 5 - .../test_pdk_settings_o21ba_2_.yml | 5 - .../test_pdk_settings_o21ba_4_.yml | 5 - .../test_pdk_settings_o21bai_1_.yml | 5 - .../test_pdk_settings_o21bai_2_.yml | 5 - .../test_pdk_settings_o21bai_4_.yml | 5 - .../test_pdk_settings_o221a_1_.yml | 5 - .../test_pdk_settings_o221a_2_.yml | 5 - .../test_pdk_settings_o221a_4_.yml | 5 - .../test_pdk_settings_o221ai_1_.yml | 5 - .../test_pdk_settings_o221ai_2_.yml | 5 - .../test_pdk_settings_o221ai_4_.yml | 5 - .../test_pdk_settings_o22a_1_.yml | 5 - .../test_pdk_settings_o22a_2_.yml | 5 - .../test_pdk_settings_o22a_4_.yml | 5 - .../test_pdk_settings_o22ai_1_.yml | 5 - .../test_pdk_settings_o22ai_2_.yml | 5 - .../test_pdk_settings_o22ai_4_.yml | 5 - .../test_pdk_settings_o2bb2a_1_.yml | 5 - .../test_pdk_settings_o2bb2a_2_.yml | 5 - .../test_pdk_settings_o2bb2a_4_.yml | 5 - .../test_pdk_settings_o2bb2ai_1_.yml | 5 - .../test_pdk_settings_o2bb2ai_2_.yml | 5 - .../test_pdk_settings_o2bb2ai_4_.yml | 5 - .../test_pdk_settings_o311a_1_.yml | 5 - .../test_pdk_settings_o311a_2_.yml | 5 - .../test_pdk_settings_o311a_4_.yml | 5 - .../test_pdk_settings_o311ai_0_.yml | 5 - .../test_pdk_settings_o311ai_1_.yml | 5 - .../test_pdk_settings_o311ai_2_.yml | 5 - .../test_pdk_settings_o311ai_4_.yml | 5 - .../test_pdk_settings_o31a_1_.yml | 5 - .../test_pdk_settings_o31a_2_.yml | 5 - .../test_pdk_settings_o31a_4_.yml | 5 - .../test_pdk_settings_o31ai_1_.yml | 5 - .../test_pdk_settings_o31ai_2_.yml | 5 - .../test_pdk_settings_o31ai_4_.yml | 5 - .../test_pdk_settings_o32a_1_.yml | 5 - .../test_pdk_settings_o32a_2_.yml | 5 - .../test_pdk_settings_o32a_4_.yml | 5 - .../test_pdk_settings_o32ai_1_.yml | 5 - .../test_pdk_settings_o32ai_2_.yml | 5 - .../test_pdk_settings_o32ai_4_.yml | 5 - .../test_pdk_settings_o41a_1_.yml | 5 - .../test_pdk_settings_o41a_2_.yml | 5 - .../test_pdk_settings_o41a_4_.yml | 5 - .../test_pdk_settings_o41ai_1_.yml | 5 - .../test_pdk_settings_o41ai_2_.yml | 5 - .../test_pdk_settings_o41ai_4_.yml | 5 - .../test_pdk_settings_or2_0_.yml | 5 - .../test_pdk_settings_or2_1_.yml | 5 - .../test_pdk_settings_or2_2_.yml | 5 - .../test_pdk_settings_or2_4_.yml | 5 - .../test_pdk_settings_or2b_1_.yml | 5 - .../test_pdk_settings_or2b_2_.yml | 5 - .../test_pdk_settings_or2b_4_.yml | 5 - .../test_pdk_settings_or3_1_.yml | 5 - .../test_pdk_settings_or3_2_.yml | 5 - .../test_pdk_settings_or3_4_.yml | 5 - .../test_pdk_settings_or3b_1_.yml | 5 - .../test_pdk_settings_or3b_2_.yml | 5 - .../test_pdk_settings_or3b_4_.yml | 5 - .../test_pdk_settings_or4_1_.yml | 5 - .../test_pdk_settings_or4_2_.yml | 5 - .../test_pdk_settings_or4_4_.yml | 5 - .../test_pdk_settings_or4b_1_.yml | 5 - .../test_pdk_settings_or4b_2_.yml | 5 - .../test_pdk_settings_or4b_4_.yml | 5 - .../test_pdk_settings_or4bb_1_.yml | 5 - .../test_pdk_settings_or4bb_2_.yml | 5 - .../test_pdk_settings_or4bb_4_.yml | 5 - .../test_pdk_settings_probe_p_8_.yml | 5 - .../test_pdk_settings_probec_p_8_.yml | 5 - .../test_pdk_settings_rf_aura_blocking_.yml | 5 - ...t_pdk_settings_rf_aura_drc_flag_check_.yml | 5 - .../test_pdk_settings_rf_aura_lvs_drc_.yml | 5 - ..._settings_rf_nfet_01v8_aM02W1p65L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_aM02W1p65L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_aM02W1p65L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_aM02W3p00L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_aM02W3p00L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_aM02W3p00L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_aM02W5p00L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_aM02W5p00L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_aM02W5p00L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_aM04W1p65L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_aM04W1p65L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_aM04W1p65L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_aM04W3p00L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_aM04W3p00L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_aM04W3p00L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_aM04W5p00L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_aM04W5p00L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_aM04W5p00L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_bM02W1p65L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_bM02W1p65L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_bM02W1p65L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_bM02W3p00L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_bM02W5p00L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_bM02W5p00L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_bM02W5p00L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_bM04W1p65L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_bM04W1p65L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_bM04W1p65L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_bM04W3p00L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_bM04W3p00L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_bM04W3p00L0p25_.yml | 5 - ..._settings_rf_nfet_01v8_bM04W5p00L0p15_.yml | 5 - ..._settings_rf_nfet_01v8_bM04W5p00L0p18_.yml | 5 - ..._settings_rf_nfet_01v8_bM04W5p00L0p25_.yml | 5 - ...settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml | 5 - ...settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml | 5 - ...tings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml | 5 - ...settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml | 5 - ...settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml | 5 - .../test_pdk_settings_rf_nfet_20v0_aup_.yml | 5 - ..._pdk_settings_rf_nfet_20v0_noptap_iso_.yml | 5 - ...est_pdk_settings_rf_nfet_20v0_nvt_aup_.yml | 5 - ..._settings_rf_nfet_20v0_nvt_noptap_iso_.yml | 5 - ...dk_settings_rf_nfet_20v0_nvt_withptap_.yml | 5 - ...st_pdk_settings_rf_nfet_20v0_withptap_.yml | 5 - ...dk_settings_rf_nfet_20v0_withptap_iso_.yml | 5 - ...dk_settings_rf_nfet_20v0_zvt_withptap_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml | 5 - ...ings_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml | 5 - ...t_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml | 5 - ...t_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml | 5 - ...t_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml | 5 - ...t_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml | 5 - ...t_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml | 5 - ...t_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml | 5 - ...t_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml | 5 - ...t_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml | 5 - ...t_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml | 5 - ..._settings_rf_pfet_01v8_aF02W0p84L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF02W1p68L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF02W2p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF02W3p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF02W5p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF04W0p84L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF04W1p68L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF04W2p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF04W3p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF04W5p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF06W0p84L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF06W1p68L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF06W2p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF06W3p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF08W0p84L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aF08W1p68L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aM02W1p65L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aM02W1p65L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_aM02W1p65L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_aM02W3p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aM02W3p00L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_aM02W3p00L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_aM02W5p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aM02W5p00L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_aM02W5p00L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_aM04W1p65L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aM04W1p65L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_aM04W1p65L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_aM04W3p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aM04W3p00L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_aM04W3p00L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_aM04W5p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_aM04W5p00L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_aM04W5p00L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_bM02W1p65L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_bM02W1p65L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_bM02W1p65L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_bM02W3p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_bM02W3p00L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_bM02W3p00L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_bM02W5p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_bM02W5p00L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_bM02W5p00L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_bM04W1p65L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_bM04W1p65L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_bM04W1p65L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_bM04W3p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_bM04W3p00L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_bM04W3p00L0p25_.yml | 5 - ..._settings_rf_pfet_01v8_bM04W5p00L0p15_.yml | 5 - ..._settings_rf_pfet_01v8_bM04W5p00L0p18_.yml | 5 - ..._settings_rf_pfet_01v8_bM04W5p00L0p25_.yml | 5 - ...settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml | 5 - ...settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml | 5 - ...tings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml | 5 - ...tings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml | 5 - ...tings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml | 5 - ...tings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml | 5 - ...tings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml | 5 - ...tings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml | 5 - ...tings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml | 5 - ...tings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml | 5 - ...settings_rf_pfet_01v8_mcM04W3p00L0p15_.yml | 5 - ...settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml | 5 - ...tings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml | 5 - ...st_pdk_settings_rf_pfet_20v0_withptap_.yml | 5 - ...t_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml | 5 - ...t_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml | 5 - .../test_pdk_settings_rf_test_coil1_.yml | 5 - .../test_pdk_settings_rf_test_coil2_.yml | 5 - .../test_pdk_settings_rf_test_coil3_.yml | 5 - .../test_pdk_settings_sdfbbn_1_.yml | 5 - .../test_pdk_settings_sdfbbn_2_.yml | 5 - .../test_pdk_settings_sdfbbp_1_.yml | 5 - .../test_pdk_settings_sdfrbp_1_.yml | 5 - .../test_pdk_settings_sdfrbp_2_.yml | 5 - .../test_pdk_settings_sdfrtn_1_.yml | 5 - .../test_pdk_settings_sdfrtp_1_.yml | 5 - .../test_pdk_settings_sdfrtp_2_.yml | 5 - .../test_pdk_settings_sdfrtp_4_.yml | 5 - .../test_pdk_settings_sdfsbp_1_.yml | 5 - .../test_pdk_settings_sdfsbp_2_.yml | 5 - .../test_pdk_settings_sdfstp_1_.yml | 5 - .../test_pdk_settings_sdfstp_2_.yml | 5 - .../test_pdk_settings_sdfstp_4_.yml | 5 - .../test_pdk_settings_sdfxbp_1_.yml | 5 - .../test_pdk_settings_sdfxbp_2_.yml | 5 - .../test_pdk_settings_sdfxtp_1_.yml | 5 - .../test_pdk_settings_sdfxtp_2_.yml | 5 - .../test_pdk_settings_sdfxtp_4_.yml | 5 - .../test_pdk_settings_sdlclkp_1_.yml | 5 - .../test_pdk_settings_sdlclkp_2_.yml | 5 - .../test_pdk_settings_sdlclkp_4_.yml | 5 - .../test_pdk_settings_sedfxbp_1_.yml | 5 - .../test_pdk_settings_sedfxtp_1_.yml | 5 - .../test_pdk_settings_sedfxtp_2_.yml | 5 - .../test_pdk_settings_sedfxtp_4_.yml | 5 - ...d_pr__cap_vpp_02p4x04p6_m1m2_noshield_.yml | 5 + ...02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 + ...02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 + ...02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 + ...02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml | 5 + ...2p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml | 5 + ...p_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml | 5 + ...pr__cap_vpp_04p4x04p6_l1m1m2_noshield_.yml | 5 + ...p_04p4x04p6_l1m1m2_noshield_o2subcell_.yml | 5 + ...vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml | 5 + ...d_pr__cap_vpp_04p4x04p6_m1m2_noshield_.yml | 5 + ...r__cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml | 5 + ...d_pr__cap_vpp_04p4x04p6_m1m2_shieldl1_.yml | 5 + ...pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml | 5 + ...p_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml | 5 + ...p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml | 5 + ...05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml | 5 + ...cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml | 5 + ...vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml | 5 + ...__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml | 5 + ...p_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml | 5 + ...pr__cap_vpp_08p6x07p8_l1m1m2_noshield_.yml | 5 + ..._08p6x07p8_l1m1m2_noshield_o2subcell_.yml} | 4 +- ...vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml | 5 + ...d_pr__cap_vpp_08p6x07p8_m1m2_noshield_.yml | 5 + ...d_pr__cap_vpp_08p6x07p8_m1m2_shieldl1_.yml | 5 + ...pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml | 5 + ...p_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml | 5 + ...p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml | 5 + ...11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml | 5 + ...vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml | 5 + ..._11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml | 5 + ...pr__cap_vpp_11p5x11p7_l1m1m2_noshield_.yml | 5 + ...__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml | 5 + ...__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml | 5 + ...p_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml | 5 + ...cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml | 5 + ...vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml | 5 + ...cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml | 5 + ...vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml | 5 + ...p_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml | 5 + ...p_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml | 5 + ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml | 5 + ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml | 5 + ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml | 5 + ...pp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml | 5 + ...vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml | 5 + ..._11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml | 5 + ...d_pr__cap_vpp_11p5x11p7_m1m2_noshield_.yml | 5 + ...d_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_.yml | 5 + ...pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml | 5 + ...p_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml | 5 + ...p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml | 5 + ...cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml | 5 + ...vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml | 5 + ...__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml | 5 + ...d_pr__cap_vpp_11p5x11p7_m1m4_noshield_.yml | 5 + ...vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml | 5 + ...11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml | 5 + ...vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml | 5 + ...23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml | 5 + ...5p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml | 5 + ...fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00_.yml | 5 + ...fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00_.yml | 5 + ...fd_pr__esd_rf_nfet_20v0_iec_21vW60p00_.yml | 5 + ...fd_pr__esd_rf_nfet_20v0_iec_32vW60p00_.yml | 5 + ...ttings_sky130_fd_pr__rf_aura_blocking_.yml | 5 + ..._sky130_fd_pr__rf_aura_drc_flag_check_.yml | 5 + ...ettings_sky130_fd_pr__rf_aura_lvs_drc_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM02W1p65L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM02W1p65L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM02W1p65L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM02W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM02W3p00L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM02W3p00L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM02W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM02W5p00L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM02W5p00L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM04W1p65L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM04W1p65L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM04W1p65L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM04W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM04W3p00L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM04W3p00L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM04W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM04W5p00L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_aM04W5p00L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM02W1p65L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM02W1p65L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM02W1p65L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM02W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM02W3p00L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM02W3p00L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM02W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM02W5p00L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM02W5p00L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM04W1p65L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM04W1p65L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM04W1p65L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM04W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM04W3p00L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM04W3p00L0p25_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM04W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM04W5p00L0p18_.yml | 5 + ...30_fd_pr__rf_nfet_01v8_bM04W5p00L0p25_.yml | 5 + ...0_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15_.yml | 5 + ...0_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml | 5 + ..._pr__rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml} | 4 +- ...d_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml | 5 + ..._pr__rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml} | 4 +- ..._pr__rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml} | 4 +- ...d_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml | 5 + ...d_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml | 5 + ...0_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15_.yml | 5 + ...0_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15_.yml | 5 + ...tings_sky130_fd_pr__rf_nfet_20v0_aup_.yml} | 4 +- ...sky130_fd_pr__rf_nfet_20v0_noptap_iso_.yml | 5 + ...gs_sky130_fd_pr__rf_nfet_20v0_nvt_aup_.yml | 5 + ...30_fd_pr__rf_nfet_20v0_nvt_noptap_iso_.yml | 5 + ...y130_fd_pr__rf_nfet_20v0_nvt_withptap_.yml | 5 + ..._fd_pr__rf_nfet_20v0_nvt_withptap_iso_.yml | 5 + ...s_sky130_fd_pr__rf_nfet_20v0_withptap_.yml | 5 + ...y130_fd_pr__rf_nfet_20v0_withptap_iso_.yml | 5 + ...y130_fd_pr__rf_nfet_20v0_zvt_withptap_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml | 5 + ..._pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml | 5 + ..._sky130_fd_pr__rf_npn_05v5_W1p00L1p00_.yml | 5 + ..._sky130_fd_pr__rf_npn_05v5_W1p00L2p00_.yml | 5 + ..._sky130_fd_pr__rf_npn_05v5_W1p00L4p00_.yml | 5 + ..._sky130_fd_pr__rf_npn_05v5_W1p00L8p00_.yml | 5 + ..._sky130_fd_pr__rf_npn_05v5_W2p00L2p00_.yml | 5 + ..._sky130_fd_pr__rf_npn_05v5_W2p00L4p00_.yml | 5 + ..._sky130_fd_pr__rf_npn_05v5_W2p00L8p00_.yml | 5 + ...sky130_fd_pr__rf_npn_05v5_W5p00L5p00_.yml} | 4 +- ..._sky130_fd_pr__rf_npn_11v0_W1p00L1p00_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF02W0p84L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF02W1p68L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF02W2p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF02W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF02W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF04W0p84L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF04W1p68L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF04W2p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF04W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF04W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF06W0p84L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF06W1p68L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF06W2p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF06W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF08W0p84L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aF08W1p68L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM02W1p65L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM02W1p65L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM02W1p65L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM02W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM02W3p00L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM02W3p00L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM02W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM02W5p00L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM02W5p00L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM04W1p65L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM04W1p65L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM04W1p65L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM04W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM04W3p00L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM04W3p00L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM04W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM04W5p00L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_aM04W5p00L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM02W1p65L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM02W1p65L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM02W1p65L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM02W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM02W3p00L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM02W3p00L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM02W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM02W5p00L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM02W5p00L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM04W1p65L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM04W1p65L0p18_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM04W1p65L0p25_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM04W3p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM04W3p00L0p18_.yml | 5 + ...0_fd_pr__rf_pfet_01v8_bM04W3p00L0p25_.yml} | 4 +- ...30_fd_pr__rf_pfet_01v8_bM04W5p00L0p15_.yml | 5 + ...30_fd_pr__rf_pfet_01v8_bM04W5p00L0p18_.yml | 5 + ...0_fd_pr__rf_pfet_01v8_bM04W5p00L0p25_.yml} | 4 +- ...0_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15_.yml | 5 + ...0_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15_.yml | 5 + ...d_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml | 5 + ...d_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml | 5 + ...d_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml | 5 + ...d_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml | 5 + ...d_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml | 5 + ...d_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml | 5 + ...d_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml | 5 + ...d_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml | 5 + ...0_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15_.yml | 5 + ...0_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15_.yml | 5 + ...d_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml | 5 + ...s_sky130_fd_pr__rf_pfet_20v0_withptap_.yml | 5 + ..._sky130_fd_pr__rf_pnp_05v5_W0p68L0p68_.yml | 5 + ..._sky130_fd_pr__rf_pnp_05v5_W3p40L3p40_.yml | 5 + ..._settings_sky130_fd_pr__rf_test_coil1_.yml | 5 + ..._settings_sky130_fd_pr__rf_test_coil2_.yml | 5 + ..._settings_sky130_fd_pr__rf_test_coil3_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a2111o_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a2111o_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a2111o_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__a2111oi_0_.yml | 5 + ...k_settings_sky130_fd_sc_hd__a2111oi_1_.yml | 5 + ...k_settings_sky130_fd_sc_hd__a2111oi_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__a2111oi_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a211o_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a211o_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a211o_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a211oi_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a211oi_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a211oi_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__a21boi_0_.yml} | 4 +- ...dk_settings_sky130_fd_sc_hd__a21boi_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a21boi_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a21boi_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a21o_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a21o_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a21o_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a221o_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a221o_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a221o_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a221oi_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a221oi_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a221oi_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a222oi_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a22o_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a22o_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a22o_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml | 5 + ...k_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a311o_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a311o_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a311o_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a311oi_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a311oi_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__a311oi_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a31o_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a31o_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a31o_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a32o_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a32o_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a32o_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a41o_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a41o_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__a41o_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and2_0_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and2_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and2_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and2_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__and2b_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__and2b_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__and2b_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and3_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and3_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and3_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__and3b_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__and3b_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__and3b_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and4_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and4_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__and4_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__and4b_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__and4b_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__and4b_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__and4bb_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__and4bb_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__and4bb_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__buf_12_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__buf_16_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__buf_1_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__buf_2_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__buf_4_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__buf_6_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__buf_8_.yml | 5 + ...k_settings_sky130_fd_sc_hd__bufbuf_16_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__bufbuf_8_.yml | 5 + ...k_settings_sky130_fd_sc_hd__bufinv_16_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__bufinv_8_.yml | 5 + ...k_settings_sky130_fd_sc_hd__clkbuf_16_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__clkbuf_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__clkbuf_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__clkbuf_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__clkbuf_8_.yml | 5 + ...ings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml | 5 + ...ings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml | 5 + ...ings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml | 5 + ...ings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml | 5 + ...ings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml | 5 + ...ings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml | 5 + ...ings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml | 5 + ...ings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__clkinv_16_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__clkinv_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__clkinv_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__clkinv_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__clkinv_8_.yml | 5 + ..._settings_sky130_fd_sc_hd__clkinvlp_2_.yml | 5 + ..._settings_sky130_fd_sc_hd__clkinvlp_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__decap_12_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__decap_3_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__decap_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__decap_6_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__decap_8_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__diode_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__dlclkp_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__dlclkp_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__dlclkp_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml | 5 + ...ttings_sky130_fd_sc_hd__dlygate4sd1_1_.yml | 5 + ...ttings_sky130_fd_sc_hd__dlygate4sd2_1_.yml | 5 + ...ttings_sky130_fd_sc_hd__dlygate4sd3_1_.yml | 5 + ...tings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml | 5 + ...tings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml | 5 + ...tings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__edfxbp_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__edfxtp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__einvn_0_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__einvn_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__einvn_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__einvn_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__einvn_8_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__einvp_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__einvp_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__einvp_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__einvp_8_.yml | 5 + ...st_pdk_settings_sky130_fd_sc_hd__fa_1_.yml | 5 + ...st_pdk_settings_sky130_fd_sc_hd__fa_2_.yml | 5 + ...st_pdk_settings_sky130_fd_sc_hd__fa_4_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__fah_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__fahcin_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__fahcon_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__fill_1_.yml} | 4 +- ..._pdk_settings_sky130_fd_sc_hd__fill_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__fill_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__fill_8_.yml | 5 + ...st_pdk_settings_sky130_fd_sc_hd__ha_1_.yml | 5 + ...st_pdk_settings_sky130_fd_sc_hd__ha_2_.yml | 5 + ...st_pdk_settings_sky130_fd_sc_hd__ha_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__inv_12_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__inv_16_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__inv_1_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__inv_2_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__inv_4_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__inv_6_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__inv_8_.yml | 5 + ...ngs_sky130_fd_sc_hd__lpflow_bleeder_1_.yml | 5 + ...ky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml | 5 + ...sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml | 5 + ...sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml | 5 + ...sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml | 5 + ...sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml | 5 + ...ky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml | 5 + ...sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml | 5 + ...sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml | 5 + ...sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml | 5 + ...sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml | 5 + ...sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml | 5 + ..._sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml | 5 + ..._sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml | 5 + ..._sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml | 5 + ..._sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml | 5 + ..._sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml | 5 + ..._sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml | 5 + ..._sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml | 5 + ..._sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml | 5 + ...y130_fd_sc_hd__lpflow_inputisolatch_1_.yml | 5 + ..._sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml | 5 + ...s_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml | 5 + ...s_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml | 5 + ...s_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml | 5 + ...s_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml | 5 + ...30_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml | 5 + ..._hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml | 5 + ..._hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml | 5 + ..._hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml | 5 + ...0_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml | 5 + ..._sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml | 5 + ..._sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml | 5 + ..._sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__maj3_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__maj3_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__maj3_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__mux2_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__mux2_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__mux2_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__mux2_8_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__mux4_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__mux4_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__mux4_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand2_1_.yml} | 4 +- ...dk_settings_sky130_fd_sc_hd__nand2_2_.yml} | 4 +- ...dk_settings_sky130_fd_sc_hd__nand2_4_.yml} | 4 +- ...pdk_settings_sky130_fd_sc_hd__nand2_8_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand2b_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand2b_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand2b_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nand3_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nand3_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nand3_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand3b_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand3b_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand3b_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nand4_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nand4_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nand4_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand4b_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand4b_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nand4b_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__nand4bb_1_.yml | 5 + ...k_settings_sky130_fd_sc_hd__nand4bb_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__nand4bb_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__nor2_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__nor2_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__nor2_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__nor2_8_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__nor3_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__nor3_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__nor3_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor4_1_.yml} | 4 +- ..._pdk_settings_sky130_fd_sc_hd__nor4_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor4_4_.yml} | 4 +- ...pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nor4bb_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__nor4bb_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__nor4bb_4_.yml} | 4 +- ...dk_settings_sky130_fd_sc_hd__o2111a_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o2111a_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o2111a_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__o2111ai_1_.yml | 5 + ...k_settings_sky130_fd_sc_hd__o2111ai_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__o2111ai_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o211a_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o211a_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o211a_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o211ai_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o211ai_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o211ai_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o21a_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o21a_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o21a_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o21bai_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o21bai_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o21bai_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o221a_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o221a_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o221a_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o221ai_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o221ai_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o221ai_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o22a_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o22a_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o22a_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml | 5 + ...k_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o311a_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o311a_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o311a_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o311ai_0_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o311ai_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o311ai_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__o311ai_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o31a_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o31a_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o31a_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o32a_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o32a_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o32a_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o41a_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o41a_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__o41a_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__or2_0_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__or2_1_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__or2_2_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__or2_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__or2b_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__or2b_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__or2b_4_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__or3_1_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__or3_2_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__or3_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__or3b_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__or3b_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__or3b_4_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__or4_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__or4_2_.yml} | 4 +- ...t_pdk_settings_sky130_fd_sc_hd__or4_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__or4b_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__or4b_2_.yml} | 4 +- ..._pdk_settings_sky130_fd_sc_hd__or4b_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__probe_p_8_.yml | 5 + ..._settings_sky130_fd_sc_hd__probec_p_8_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfstp_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfstp_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfstp_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__sdfxbp_1_.yml} | 4 +- ...dk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__sdlclkp_1_.yml | 5 + ...k_settings_sky130_fd_sc_hd__sdlclkp_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__sdlclkp_4_.yml | 5 + ...k_settings_sky130_fd_sc_hd__sedfxbp_1_.yml | 5 + ...k_settings_sky130_fd_sc_hd__sedfxbp_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__sedfxtp_1_.yml | 5 + ...k_settings_sky130_fd_sc_hd__sedfxtp_2_.yml | 5 + ...k_settings_sky130_fd_sc_hd__sedfxtp_4_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__tap_1_.yml | 5 + ...t_pdk_settings_sky130_fd_sc_hd__tap_2_.yml | 5 + ..._settings_sky130_fd_sc_hd__tapvgnd2_1_.yml | 5 + ...k_settings_sky130_fd_sc_hd__tapvgnd_1_.yml | 5 + ...ttings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml | 5 + ...pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml | 5 + ...dk_settings_sky130_fd_sc_hd__xnor3_2_.yml} | 4 +- ...pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__xor2_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__xor2_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__xor2_4_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__xor3_1_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__xor3_2_.yml | 5 + ..._pdk_settings_sky130_fd_sc_hd__xor3_4_.yml | 5 + .../test_pdk_settings_tap_1_.yml | 5 - .../test_pdk_settings_tap_2_.yml | 5 - .../test_pdk_settings_tapvgnd2_1_.yml | 5 - .../test_pdk_settings_tapvgnd_1_.yml | 5 - .../test_pdk_settings_xnor2_1_.yml | 5 - .../test_pdk_settings_xnor2_2_.yml | 5 - .../test_pdk_settings_xnor2_4_.yml | 5 - .../test_pdk_settings_xnor3_1_.yml | 5 - .../test_pdk_settings_xnor3_2_.yml | 5 - .../test_pdk_settings_xnor3_4_.yml | 5 - .../test_pdk_settings_xor2_1_.yml | 5 - .../test_pdk_settings_xor2_2_.yml | 5 - .../test_pdk_settings_xor2_4_.yml | 5 - .../test_pdk_settings_xor3_1_.yml | 5 - .../test_pdk_settings_xor3_2_.yml | 5 - .../test_pdk_settings_xor3_4_.yml | 5 - 1435 files changed, 8597 insertions(+), 5780 deletions(-) delete mode 100644 tests/test_components/test_pdk_settings_a2111o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2111o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2111o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2111oi_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2111oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2111oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2111oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a211o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a211o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a211o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a211oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a211oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a211oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21bo_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21bo_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21bo_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21boi_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21boi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21boi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21boi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a21oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a221o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a221o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a221o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a221oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a221oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a221oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a222oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a22o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a22o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a22o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a22oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a22oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a22oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2bb2o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2bb2o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2bb2o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2bb2oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2bb2oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a2bb2oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a311o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a311o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a311o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a311oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a311oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a311oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a31o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a31o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a31o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a31oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a31oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a31oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a32o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a32o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a32o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a32oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a32oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a32oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a41o_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a41o_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a41o_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_a41oi_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_a41oi_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_a41oi_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_and2_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_and2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_and2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_and2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_and2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_and2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_and3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_and3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_and3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_and3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_and3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_and3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_and4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_and4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_and4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_and4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_and4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_and4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_and4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_and4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_and4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_buf_12_.yml delete mode 100644 tests/test_components/test_pdk_settings_buf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_buf_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_buf_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_buf_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_buf_6_.yml delete mode 100644 tests/test_components/test_pdk_settings_buf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_bufbuf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_bufbuf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_bufinv_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_bufinv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p4x04p6_m1m2_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m4_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml delete mode 100644 tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkbuf_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkbuf_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkbuf_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkbuf_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkbuf_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s15_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s15_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s18_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s18_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s25_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s25_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s50_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkdlybuf4s50_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkinv_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkinv_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkinv_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkinv_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkinv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkinvlp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_clkinvlp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_conb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_decap_12_.yml delete mode 100644 tests/test_components/test_pdk_settings_decap_3_.yml delete mode 100644 tests/test_components/test_pdk_settings_decap_6_.yml delete mode 100644 tests/test_components/test_pdk_settings_decap_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfbbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfbbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfbbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfrbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfrtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfrtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfrtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfsbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfsbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfstp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfstp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfstp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfxbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfxtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dfxtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_diode_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlclkp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlclkp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlclkp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrtn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrtn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlrtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlxbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlxbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlxtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlxtn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlxtn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlygate4sd1_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlygate4sd2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlygate4sd3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlymetal6s2s_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlymetal6s4s_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_dlymetal6s6s_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_ebufn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_ebufn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_ebufn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_ebufn_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_edfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_edfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_einvn_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_einvn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_einvn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_einvn_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_einvn_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_einvp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_einvp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_einvp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_einvp_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_21vW60p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_32vW60p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_fa_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_fa_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_fa_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_fah_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_fahcin_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_fahcon_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_fill_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_fill_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_fill_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_fill_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_ha_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_ha_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_ha_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_inv_12_.yml delete mode 100644 tests/test_components/test_pdk_settings_inv_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_inv_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_inv_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_inv_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_inv_6_.yml delete mode 100644 tests/test_components/test_pdk_settings_inv_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_bleeder_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_12_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_3_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_6_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_decapkapwr_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_inputiso0n_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_inputiso0p_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_inputiso1n_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_inputiso1p_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_inputisolatch_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrc_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_isobufsrckapwr_16_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_macro_sparecell_.yml delete mode 100644 tests/test_components/test_pdk_settings_maj3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_maj3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_maj3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux2_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux2i_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux2i_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux2i_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_mux4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand2_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nand4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor2_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_nor4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2111a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2111a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2111a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2111ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2111ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2111ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o211a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o211a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o211a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o211ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o211ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o211ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21ai_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21ba_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21ba_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21ba_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21bai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21bai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o21bai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o221a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o221a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o221a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o221ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o221ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o221ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o22a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o22a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o22a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o22ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o22ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o22ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2bb2a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2bb2a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2bb2a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2bb2ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2bb2ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o2bb2ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o311a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o311a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o311a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o311ai_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_o311ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o311ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o311ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o31a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o31a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o31a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o31ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o31ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o31ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o32a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o32a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o32a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o32ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o32ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o32ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o41a_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o41a_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o41a_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_o41ai_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_o41ai_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_o41ai_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_or2_0_.yml delete mode 100644 tests/test_components/test_pdk_settings_or2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_or2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_or2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_or2b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_or2b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_or2b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_or3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_or3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_or3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_or3b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_or3b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_or3b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_or4_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_or4_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_or4_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_or4b_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_or4b_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_or4b_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_or4bb_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_or4bb_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_or4bb_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_probe_p_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_probec_p_8_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_aura_blocking_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_aura_drc_flag_check_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_aura_lvs_drc_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_aup_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_noptap_iso_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_aup_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_noptap_iso_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_iso_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_20v0_zvt_withptap_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W0p84L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W1p68L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W2p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W0p84L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W1p68L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W2p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W0p84L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W1p68L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W2p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W0p84L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W1p68L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p18_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p25_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W3p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pfet_20v0_withptap_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_test_coil1_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_test_coil2_.yml delete mode 100644 tests/test_components/test_pdk_settings_rf_test_coil3_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfbbn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfbbn_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfbbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfrbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfrbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfrtn_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfrtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfrtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfrtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfsbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfsbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfstp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfstp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfstp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfxbp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfxtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdfxtp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdlclkp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdlclkp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sdlclkp_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_sedfxbp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sedfxtp_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_sedfxtp_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_sedfxtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_.yml rename tests/test_components/{test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml => test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml} (53%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_blocking_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_drc_flag_check_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_lvs_drc_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml rename tests/test_components/{test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_1_.yml => test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml} (56%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml rename tests/test_components/{test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml => test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml} (64%) rename tests/test_components/{test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml => test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml} (64%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15_.yml rename tests/test_components/{test_pdk_settings_decap_4_.yml => test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_aup_.yml} (52%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_noptap_iso_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_aup_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_withptap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_withptap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_withptap_iso_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_zvt_withptap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L1p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L2p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L4p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L8p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L2p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L4p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L8p00_.yml rename tests/test_components/{test_pdk_settings_esd_rf_nfet_20v0_hbm_32vW60p00_.yml => test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W5p00L5p00_.yml} (64%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_11v0_W1p00L1p00_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18_.yml rename tests/test_components/{test_pdk_settings_rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml => test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25_.yml} (61%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18_.yml rename tests/test_components/{test_pdk_settings_rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml => test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25_.yml} (61%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_20v0_withptap_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pnp_05v5_W0p68L0p68_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pnp_05v5_W3p40L3p40_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil3_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_0_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml rename tests/test_components/{test_pdk_settings_and2b_4_.yml => test_pdk_settings_sky130_fd_sc_hd__a21boi_0_.yml} (56%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a222oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_0_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_12_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_6_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_12_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_3_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_6_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__diode_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd1_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_0_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fah_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcin_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcon_1_.yml rename tests/test_components/{test_pdk_settings_sedfxbp_2_.yml => test_pdk_settings_sky130_fd_sc_hd__fill_1_.yml} (57%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_12_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_6_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_bleeder_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputisolatch_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_4_.yml rename tests/test_components/{test_pdk_settings_a21o_1_.yml => test_pdk_settings_sky130_fd_sc_hd__nand2_1_.yml} (53%) rename tests/test_components/{test_pdk_settings_a21o_2_.yml => test_pdk_settings_sky130_fd_sc_hd__nand2_2_.yml} (53%) rename tests/test_components/{test_pdk_settings_a21o_4_.yml => test_pdk_settings_sky130_fd_sc_hd__nand2_4_.yml} (53%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml rename tests/test_components/{test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p15_.yml => test_pdk_settings_sky130_fd_sc_hd__nor4_1_.yml} (68%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_2_.yml rename tests/test_components/{test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p18_.yml => test_pdk_settings_sky130_fd_sc_hd__nor4_4_.yml} (68%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_2_.yml rename tests/test_components/{test_pdk_settings_tapvpwrvgnd_1_.yml => test_pdk_settings_sky130_fd_sc_hd__nor4bb_4_.yml} (58%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_0_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_0_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_1_.yml rename tests/test_components/{test_pdk_settings_rf_nfet_20v0_nvt_withptap_iso_.yml => test_pdk_settings_sky130_fd_sc_hd__or4_2_.yml} (65%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_1_.yml rename tests/test_components/{test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml => test_pdk_settings_sky130_fd_sc_hd__or4b_2_.yml} (64%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probe_p_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probec_p_8_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_4_.yml rename tests/test_components/{test_pdk_settings_nand3b_2_.yml => test_pdk_settings_sky130_fd_sc_hd__sdfxbp_1_.yml} (57%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml rename tests/test_components/{test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml => test_pdk_settings_sky130_fd_sc_hd__xnor3_2_.yml} (61%) create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_4_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_1_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_2_.yml create mode 100644 tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_tap_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_tap_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_tapvgnd2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_tapvgnd_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_xnor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_xnor2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_xnor2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_xnor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_xnor3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_xnor3_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_xor2_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_xor2_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_xor2_4_.yml delete mode 100644 tests/test_components/test_pdk_settings_xor3_1_.yml delete mode 100644 tests/test_components/test_pdk_settings_xor3_2_.yml delete mode 100644 tests/test_components/test_pdk_settings_xor3_4_.yml diff --git a/docs/notebooks/intro.ipynb b/docs/notebooks/intro.ipynb index e381d6276..2e5596e79 100644 --- a/docs/notebooks/intro.ipynb +++ b/docs/notebooks/intro.ipynb @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "5a160bbd", "metadata": {}, "outputs": [], @@ -26,10 +26,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "5b4ea2e4", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32m2024-05-23 13:58:07.393\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.components as sc\n", @@ -46,7 +54,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "a9b61cd7", "metadata": {}, "outputs": [], @@ -56,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "19872424", "metadata": {}, "outputs": [], @@ -74,7 +82,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "ab318aea", "metadata": {}, "outputs": [], @@ -94,10 +102,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "b7512a8b", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "

      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "text/plain": [
      +       "\u001b[32m'sky130'\u001b[0m"
      +      ]
      +     },
      +     "execution_count": 6,
      +     "metadata": {},
      +     "output_type": "execute_result"
      +    }
      +   ],
          "source": [
           "gf.pdk.get_active_pdk().name"
          ]
      @@ -112,10 +141,31 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": null,
      +   "execution_count": 7,
          "id": "6a0f3119",
          "metadata": {},
      -   "outputs": [],
      +   "outputs": [
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "text/plain": [
      +       "\u001b[1m<\u001b[0m\u001b[1;95mmodule\u001b[0m\u001b[39m \u001b[0m\u001b[32m'sky130'\u001b[0m\u001b[39m from \u001b[0m\u001b[32m'/home/daquintero/phd/collaborate/skywater130/sky130/__init__.py'\u001b[0m\u001b[1m>\u001b[0m"
      +      ]
      +     },
      +     "execution_count": 7,
      +     "metadata": {},
      +     "output_type": "execute_result"
      +    }
      +   ],
          "source": [
           "# dir(sky130)\n",
           "sky130"
      @@ -131,10 +181,51 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": null,
      +   "execution_count": 15,
          "id": "3e4a603c",
          "metadata": {},
      -   "outputs": [],
      +   "outputs": [
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "text/plain": [
      +       "sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15: uid d7772405, ports \u001b[1m[\u001b[0m\u001b[32m'DRAIN'\u001b[0m, \u001b[32m'SOURCE'\u001b[0m, \u001b[32m'GATE'\u001b[0m, \u001b[32m'SUBSTRATE'\u001b[0m, \u001b[32m'GATE1'\u001b[0m, \u001b[32m'SUBSTRATE1'\u001b[0m\u001b[1m]\u001b[0m, references \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m, \u001b[1;36m97\u001b[0m polygons"
      +      ]
      +     },
      +     "execution_count": 15,
      +     "metadata": {},
      +     "output_type": "execute_result"
      +    },
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "image/png": "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",
      +      "text/plain": [
      +       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
      +      ]
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    }
      +   ],
          "source": [
           "c = sc.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15()\n",
           "c"
      @@ -150,10 +241,39 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": null,
      +   "execution_count": 9,
          "id": "bbb8ef08",
          "metadata": {},
      -   "outputs": [],
      +   "outputs": [
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "text/plain": [
      +       "\n",
      +       "\u001b[1m{\u001b[0m\n",
      +       "    \u001b[32m'DRAIN'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'DRAIN'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m0.15\u001b[0m, \u001b[1;36m1.78\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m69\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      +       "    \u001b[32m'SOURCE'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'SOURCE'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m0.15\u001b[0m, \u001b[1;36m0.89\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m69\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      +       "    \u001b[32m'GATE'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'GATE'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m1.31\u001b[0m, \u001b[1;36m2.435\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m68\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      +       "    \u001b[32m'SUBSTRATE'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'SUBSTRATE'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m0.32\u001b[0m, \u001b[1;36m0.65\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m68\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      +       "    \u001b[32m'GATE1'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'GATE1'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m1.31\u001b[0m, \u001b[1;36m0.235\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m68\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      +       "    \u001b[32m'SUBSTRATE1'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'SUBSTRATE1'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m2.29\u001b[0m, \u001b[1;36m0.65\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m68\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m\n",
      +       "\u001b[1m}\u001b[0m"
      +      ]
      +     },
      +     "execution_count": 9,
      +     "metadata": {},
      +     "output_type": "execute_result"
      +    }
      +   ],
          "source": [
           "c.ports"
          ]
      @@ -168,10 +288,65 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": null,
      +   "execution_count": 10,
          "id": "8946842c",
          "metadata": {},
      -   "outputs": [],
      +   "outputs": [
      +    {
      +     "name": "stdout",
      +     "output_type": "stream",
      +     "text": [
      +      "\u001b[32m2024-05-23 13:58:08.005\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36msky130.components\u001b[0m:\u001b[36msky130_fd_sc_hd__a2111o_1\u001b[0m:\u001b[36m5638\u001b[0m - \u001b[33m\u001b[1mUserWarning: decorator is deprecated and will be removed soon. import_gds\u001b[0m\n"
      +     ]
      +    },
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "name": "stdout",
      +     "output_type": "stream",
      +     "text": [
      +      "\u001b[32m2024-05-23 13:58:08.009\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.klive\u001b[0m:\u001b[36mshow\u001b[0m:\u001b[36m49\u001b[0m - \u001b[33m\u001b[1mUserWarning: Could not connect to klive server. Is klayout open and klive plugin installed?\u001b[0m\n"
      +     ]
      +    },
      +    {
      +     "data": {
      +      "text/plain": [
      +       "sky130_fd_sc_hd__a2111o_1: uid 9695ee2b, ports \u001b[1m[\u001b[0m\u001b[32m'VGND'\u001b[0m, \u001b[32m'VPWR'\u001b[0m\u001b[1m]\u001b[0m, references \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m, \u001b[1;36m98\u001b[0m polygons"
      +      ]
      +     },
      +     "execution_count": 10,
      +     "metadata": {},
      +     "output_type": "execute_result"
      +    },
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "image/png": "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",
      +      "text/plain": [
      +       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
      +      ]
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    }
      +   ],
          "source": [
           "c = sc.sky130_fd_sc_hd__a2111o_1()\n",
           "c"
      @@ -179,10 +354,1280 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": null,
      +   "execution_count": 11,
          "id": "d5d6f687",
          "metadata": {},
      -   "outputs": [],
      +   "outputs": [
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      " + ], + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95mIPython.core.display.HTML\u001b[0m\u001b[39m object\u001b[0m\u001b[1m>\u001b[0m" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "scene = c.to_3d()\n", "scene.show()" @@ -198,10 +1643,66 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "5a72f996", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32m2024-05-23 13:58:08.527\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36msky130.components\u001b[0m:\u001b[36msky130_fd_sc_hd__a311oi_4\u001b[0m:\u001b[36m5980\u001b[0m - \u001b[33m\u001b[1mUserWarning: decorator is deprecated and will be removed soon. import_gds\u001b[0m\n" + ] + }, + { + "data": { + "text/html": [ + "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "name": "stdout",
      +     "output_type": "stream",
      +     "text": [
      +      "\u001b[32m2024-05-23 13:58:08.540\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.show\u001b[0m:\u001b[36mshow\u001b[0m:\u001b[36m47\u001b[0m - \u001b[33m\u001b[1mUserWarning: Unnamed cells, 1 in 'Unnamed_6c622524'\u001b[0m\n",
      +      "\u001b[32m2024-05-23 13:58:08.542\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.component\u001b[0m:\u001b[36mplot_klayout\u001b[0m:\u001b[36m1645\u001b[0m - \u001b[33m\u001b[1mUserWarning: Unnamed cells, 1 in 'Unnamed_6c622524'\u001b[0m\n"
      +     ]
      +    },
      +    {
      +     "data": {
      +      "text/plain": [
      +       "Unnamed_6c622524: uid 6c622524, ports \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m, references \u001b[1m[\u001b[0m\u001b[32m'sky130_fd_sc_hd__a2111o_1_1'\u001b[0m, \u001b[32m'sky130_fd_sc_hd__a311oi_4_1'\u001b[0m\u001b[1m]\u001b[0m, \u001b[1;36m0\u001b[0m polygons"
      +      ]
      +     },
      +     "execution_count": 12,
      +     "metadata": {},
      +     "output_type": "execute_result"
      +    },
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "image/png": "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P6V5+SU2y+dY/vpz7zGlPX69+yN69y83344e83vMfz+fi/u3XpCP9W8f037uNrErAHJ4/C7Z3zz9c0TE++9ta0fPY3kP3oEBgAy134HZ/0tns10Pfsv5evnc+23gU749PNX/nG8db/fv/Vb1X3+OxdPrrmBpbR/Kth9vDvn65tdERBT0+PXNcezdiqFvqx+ba9/1GerXbNeH+Q5d3779+8dt8fR62D/l2rSf32O/t0Pj3+v5OdQnImK5+bYr0ofegbki78AAwMw1q+Ofl+tfj37evH6NpnmLiIj169dYLjsvUv7tLTavX2O5/vXw30O/o3N/i3U8H53/cPzfd//0utk8f8zp395O5roff7OJk3kc9Y2I7kuUXb/n437vcz/K15rPx7kjne+93+7493z787euSztve47tebTH716Xfb718vn0+ndzph6/VRzPr3Ntjx6/9/NvNs8f8+zM76hfaz6Hx6A5fezi7y+H8ac8fqc+jk/1XS5Pn1/tsTeb076bzfPRXFOP/2Guned507ztvrzxMN/O45+Yf9/+9uPTly8ijh7/sef3XR6/1vNo8/p1N7/E789uDr+e/D7s+8UqYhnfIjan3R7CKmSPaTLX0WrLXFtemetpj8icWu2n2a6b9fK5WS+fj47d/9w0b0c/H/o1b0fb1svnk23dY/eZ98cOjZfqnzr3evl8yNB0+72v4NTu2yTmnsrXned+f98829vb51qtVoPXpd2/PV7TOW+yf8/j15dvypy75xnLl7p+h5XXEvmGHr/e523P/v1jnppT3+M29FiPPf8P2zoriK1Wq8H5n1zXxDmGrk07a981uebjN/T83G9v/y739W+Pl3p+7vNcsjriJW3MnyIDj17d5RFkrkNtmWvLGyFzLXLLvFz/Ovhxj6GPuez3799p6Nv/PzeJfyVvGTv/kNf3j6MM7R/8OMsV8qf2tx/nz+a79ePzmfNHfORLPbc/m699/kv6X+Px77Nara56/fr6f+b5fY3x27qP8Wd/f3KQRQEDAJznGi8CP3v+oRfZEeOfqb/1i8Ahny0SIuKmRcZnXqTv93823y2LkFvvj3js/Kc8v4fk/vg9mpv4ASBDl9zE3zRvsVgcf7Z9/5n3sRdDh3E75xi6GbhpdvccpPr39evexL9+v/G4ad0ofc4c9/3HioHuddmfp++6dG8cP+e6tB36R4ze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",
      +      "text/plain": [
      +       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
      +      ]
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    }
      +   ],
          "source": [
           "c = gf.Component()\n",
           "g1 = c << sc.sky130_fd_sc_hd__a2111o_1()\n",
      @@ -212,10 +1713,51 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": null,
      +   "execution_count": 13,
          "id": "90789eb4",
          "metadata": {},
      -   "outputs": [],
      +   "outputs": [
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "text/plain": [
      +       "demo_connect: uid c754374d, ports \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m, references \u001b[1m[\u001b[0m\u001b[32m'sky130_fd_sc_hd__a2111o_1_1'\u001b[0m, \u001b[32m'sky130_fd_sc_hd__a311oi_4_1'\u001b[0m, \u001b[32m'wire_corner_1'\u001b[0m, \u001b[32m'straight_1'\u001b[0m, \u001b[32m'straight_2'\u001b[0m\u001b[1m]\u001b[0m, \u001b[1;36m0\u001b[0m polygons"
      +      ]
      +     },
      +     "execution_count": 13,
      +     "metadata": {},
      +     "output_type": "execute_result"
      +    },
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "image/png": "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",
      +      "text/plain": [
      +       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
      +      ]
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    }
      +   ],
          "source": [
           "c = gf.Component(\"demo_connect\")\n",
           "g1 = c << sc.sky130_fd_sc_hd__a2111o_1()\n",
      @@ -230,10 +1772,1280 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": null,
      +   "execution_count": 14,
          "id": "da60090f",
          "metadata": {},
      -   "outputs": [],
      +   "outputs": [
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      \n"
      +      ],
      +      "text/plain": []
      +     },
      +     "metadata": {},
      +     "output_type": "display_data"
      +    },
      +    {
      +     "data": {
      +      "text/html": [
      +       "
      " + ], + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95mIPython.core.display.HTML\u001b[0m\u001b[39m object\u001b[0m\u001b[1m>\u001b[0m" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "scene = c.to_3d()\n", "scene.show()" @@ -275,6 +3087,18 @@ "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, diff --git a/sky130/compile_components.py b/sky130/compile_components.py index 95bd36ab0..9ce039d30 100644 --- a/sky130/compile_components.py +++ b/sky130/compile_components.py @@ -28,6 +28,9 @@ def create_code(file_path): cell_name = raw_cell_name[len(prefix) :] break + # For old compatibility: + cell_name = raw_cell_name + code = f""" @cell def {cell_name}() -> gf.Component: diff --git a/sky130/components.py b/sky130/components.py index e9e8b08ba..1bd4a29b2 100644 --- a/sky130/components.py +++ b/sky130/components.py @@ -44,15 +44,15 @@ @cell -def rf_nfet_20v0_withptap_iso() -> gf.Component: - """Returns rf_nfet_20v0_withptap_iso fixed cell. +def sky130_fd_pr__rf_nfet_20v0_withptap_iso() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_withptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_20v0_withptap_iso() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_withptap_iso() c.plot() """ return import_gds( @@ -62,15 +62,15 @@ def rf_nfet_20v0_withptap_iso() -> gf.Component: @cell -def rf_aura_lvs_drc() -> gf.Component: - """Returns rf_aura_lvs_drc fixed cell. +def sky130_fd_pr__rf_aura_lvs_drc() -> gf.Component: + """Returns sky130_fd_pr__rf_aura_lvs_drc fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_aura_lvs_drc() + c = sky130.components.sky130_fd_pr__rf_aura_lvs_drc() c.plot() """ return import_gds( @@ -80,15 +80,15 @@ def rf_aura_lvs_drc() -> gf.Component: @cell -def rf_pnp_05v5_W0p68L0p68() -> gf.Component: - """Returns rf_pnp_05v5_W0p68L0p68 fixed cell. +def sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() -> gf.Component: + """Returns sky130_fd_pr__rf_pnp_05v5_W0p68L0p68 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pnp_05v5_W0p68L0p68() + c = sky130.components.sky130_fd_pr__rf_pnp_05v5_W0p68L0p68() c.plot() """ return import_gds( @@ -98,15 +98,15 @@ def rf_pnp_05v5_W0p68L0p68() -> gf.Component: @cell -def rf_pnp_05v5_W3p40L3p40() -> gf.Component: - """Returns rf_pnp_05v5_W3p40L3p40 fixed cell. +def sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() -> gf.Component: + """Returns sky130_fd_pr__rf_pnp_05v5_W3p40L3p40 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pnp_05v5_W3p40L3p40() + c = sky130.components.sky130_fd_pr__rf_pnp_05v5_W3p40L3p40() c.plot() """ return import_gds( @@ -116,15 +116,15 @@ def rf_pnp_05v5_W3p40L3p40() -> gf.Component: @cell -def rf_nfet_01v8_aM02W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_aM02W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM02W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18() c.plot() """ return import_gds( @@ -134,15 +134,15 @@ def rf_nfet_01v8_aM02W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_bM04W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_bM04W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM04W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25() c.plot() """ return import_gds( @@ -152,15 +152,15 @@ def rf_nfet_01v8_bM04W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_bM04W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_bM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15() c.plot() """ return import_gds( @@ -170,15 +170,15 @@ def rf_nfet_01v8_bM04W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_aM04W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_aM04W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM04W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18() c.plot() """ return import_gds( @@ -188,15 +188,15 @@ def rf_nfet_01v8_aM04W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_aM04W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_aM04W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM04W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18() c.plot() """ return import_gds( @@ -206,15 +206,15 @@ def rf_nfet_01v8_aM04W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_bM04W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_bM04W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM04W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18() c.plot() """ return import_gds( @@ -224,15 +224,15 @@ def rf_nfet_01v8_bM04W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_bM02W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_bM02W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM02W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15() c.plot() """ return import_gds( @@ -242,15 +242,15 @@ def rf_nfet_01v8_bM02W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_aM02W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_aM02W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM02W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25() c.plot() """ return import_gds( @@ -260,15 +260,15 @@ def rf_nfet_01v8_aM02W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_aM04W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_aM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15() c.plot() """ return import_gds( @@ -278,15 +278,15 @@ def rf_nfet_01v8_aM04W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_aM02W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_aM02W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM02W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15() c.plot() """ return import_gds( @@ -296,15 +296,15 @@ def rf_nfet_01v8_aM02W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_aM04W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_aM04W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM04W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15() c.plot() """ return import_gds( @@ -314,15 +314,15 @@ def rf_nfet_01v8_aM04W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_mcM04W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_mcM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_mcM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15() c.plot() """ return import_gds( @@ -332,15 +332,15 @@ def rf_nfet_01v8_mcM04W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_aM02W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_aM02W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM02W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25() c.plot() """ return import_gds( @@ -350,15 +350,15 @@ def rf_nfet_01v8_aM02W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_aM02W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_aM02W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM02W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18() c.plot() """ return import_gds( @@ -368,15 +368,15 @@ def rf_nfet_01v8_aM02W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_bM04W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_bM04W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM04W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18() c.plot() """ return import_gds( @@ -386,15 +386,15 @@ def rf_nfet_01v8_bM04W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_bM04W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_bM04W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM04W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18() c.plot() """ return import_gds( @@ -404,15 +404,15 @@ def rf_nfet_01v8_bM04W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_bM02W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_bM02W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM02W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25() c.plot() """ return import_gds( @@ -422,15 +422,15 @@ def rf_nfet_01v8_bM02W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_mcM04W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_mcM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_mcM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15() c.plot() """ return import_gds( @@ -440,15 +440,15 @@ def rf_nfet_01v8_mcM04W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_bM04W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_bM04W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM04W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25() c.plot() """ return import_gds( @@ -458,15 +458,15 @@ def rf_nfet_01v8_bM04W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_aM02W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_aM02W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM02W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18() c.plot() """ return import_gds( @@ -476,15 +476,15 @@ def rf_nfet_01v8_aM02W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_hcM04W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_hcM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_hcM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15() c.plot() """ return import_gds( @@ -494,15 +494,15 @@ def rf_nfet_01v8_hcM04W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_aM04W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_aM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15() c.plot() """ return import_gds( @@ -512,15 +512,15 @@ def rf_nfet_01v8_aM04W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_aM02W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_aM02W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM02W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15() c.plot() """ return import_gds( @@ -530,15 +530,15 @@ def rf_nfet_01v8_aM02W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_aM02W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_aM02W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM02W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25() c.plot() """ return import_gds( @@ -548,15 +548,15 @@ def rf_nfet_01v8_aM02W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_aM02W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_aM02W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM02W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15() c.plot() """ return import_gds( @@ -566,15 +566,15 @@ def rf_nfet_01v8_aM02W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_bM02W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_bM02W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM02W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15() c.plot() """ return import_gds( @@ -584,15 +584,15 @@ def rf_nfet_01v8_bM02W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_aM04W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_aM04W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM04W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25() c.plot() """ return import_gds( @@ -602,15 +602,15 @@ def rf_nfet_01v8_aM04W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_aM04W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_aM04W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM04W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25() c.plot() """ return import_gds( @@ -620,15 +620,15 @@ def rf_nfet_01v8_aM04W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_aM04W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_aM04W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM04W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25() c.plot() """ return import_gds( @@ -638,15 +638,15 @@ def rf_nfet_01v8_aM04W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_bM04W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_bM04W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM04W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25() c.plot() """ return import_gds( @@ -656,15 +656,15 @@ def rf_nfet_01v8_bM04W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_bM02W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_bM02W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM02W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18() c.plot() """ return import_gds( @@ -674,15 +674,15 @@ def rf_nfet_01v8_bM02W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_bM04W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_bM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15() c.plot() """ return import_gds( @@ -692,15 +692,15 @@ def rf_nfet_01v8_bM04W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_hcM04W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_hcM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_hcM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15() c.plot() """ return import_gds( @@ -710,15 +710,15 @@ def rf_nfet_01v8_hcM04W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_bM04W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_bM04W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM04W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15() c.plot() """ return import_gds( @@ -728,15 +728,15 @@ def rf_nfet_01v8_bM04W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_bM02W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_bM02W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM02W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18() c.plot() """ return import_gds( @@ -746,15 +746,15 @@ def rf_nfet_01v8_bM02W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_aM04W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_aM04W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_aM04W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18() c.plot() """ return import_gds( @@ -764,15 +764,15 @@ def rf_nfet_01v8_aM04W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_bM02W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_bM02W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM02W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25() c.plot() """ return import_gds( @@ -782,15 +782,15 @@ def rf_nfet_01v8_bM02W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_bM02W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_bM02W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM02W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18() c.plot() """ return import_gds( @@ -800,15 +800,15 @@ def rf_nfet_01v8_bM02W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_bM02W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_bM02W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM02W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25() c.plot() """ return import_gds( @@ -818,15 +818,15 @@ def rf_nfet_01v8_bM02W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_bM02W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_bM02W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_bM02W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15() c.plot() """ return import_gds( @@ -836,15 +836,15 @@ def rf_nfet_01v8_bM02W1p65L0p15() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() c.plot() """ return import_gds( @@ -854,15 +854,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() c.plot() """ return import_gds( @@ -872,15 +872,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top() -> gf.Component: @cell -def rf_test_coil1() -> gf.Component: - """Returns rf_test_coil1 fixed cell. +def sky130_fd_pr__rf_test_coil1() -> gf.Component: + """Returns sky130_fd_pr__rf_test_coil1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_test_coil1() + c = sky130.components.sky130_fd_pr__rf_test_coil1() c.plot() """ return import_gds( @@ -890,15 +890,15 @@ def rf_test_coil1() -> gf.Component: @cell -def cap_vpp_04p4x04p6_m1m2m3_shieldl1() -> gf.Component: - """Returns cap_vpp_04p4x04p6_m1m2m3_shieldl1 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_04p4x04p6_m1m2m3_shieldl1() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1() c.plot() """ return import_gds( @@ -908,15 +908,15 @@ def cap_vpp_04p4x04p6_m1m2m3_shieldl1() -> gf.Component: @cell -def cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() -> gf.Component: - """Returns cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() c.plot() """ return import_gds( @@ -926,15 +926,15 @@ def cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell() -> gf.Component: @cell -def cap_vpp_04p4x04p6_l1m1m2_noshield() -> gf.Component: - """Returns cap_vpp_04p4x04p6_l1m1m2_noshield fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_04p4x04p6_l1m1m2_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield() c.plot() """ return import_gds( @@ -944,15 +944,15 @@ def cap_vpp_04p4x04p6_l1m1m2_noshield() -> gf.Component: @cell -def rf_nfet_20v0_aup() -> gf.Component: - """Returns rf_nfet_20v0_aup fixed cell. +def sky130_fd_pr__rf_nfet_20v0_aup() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_aup fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_20v0_aup() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_aup() c.plot() """ return import_gds( @@ -962,15 +962,15 @@ def rf_nfet_20v0_aup() -> gf.Component: @cell -def rf_nfet_20v0_nvt_noptap_iso() -> gf.Component: - """Returns rf_nfet_20v0_nvt_noptap_iso fixed cell. +def sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_20v0_nvt_noptap_iso() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso() c.plot() """ return import_gds( @@ -980,15 +980,15 @@ def rf_nfet_20v0_nvt_noptap_iso() -> gf.Component: @cell -def cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -998,15 +998,15 @@ def cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def rf_pfet_01v8_lvt_aM02W3p00L0p35() -> gf.Component: - """Returns rf_pfet_01v8_lvt_aM02W3p00L0p35 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_lvt_aM02W3p00L0p35() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35() c.plot() """ return import_gds( @@ -1016,15 +1016,15 @@ def rf_pfet_01v8_lvt_aM02W3p00L0p35() -> gf.Component: @cell -def rf_pfet_01v8_lvt_aM04W5p00L0p50() -> gf.Component: - """Returns rf_pfet_01v8_lvt_aM04W5p00L0p50 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_lvt_aM04W5p00L0p50() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50() c.plot() """ return import_gds( @@ -1034,15 +1034,15 @@ def rf_pfet_01v8_lvt_aM04W5p00L0p50() -> gf.Component: @cell -def rf_pfet_01v8_lvt_aM02W3p00L0p50() -> gf.Component: - """Returns rf_pfet_01v8_lvt_aM02W3p00L0p50 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_lvt_aM02W3p00L0p50() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50() c.plot() """ return import_gds( @@ -1052,15 +1052,15 @@ def rf_pfet_01v8_lvt_aM02W3p00L0p50() -> gf.Component: @cell -def rf_pfet_01v8_lvt_aM04W3p00L0p50() -> gf.Component: - """Returns rf_pfet_01v8_lvt_aM04W3p00L0p50 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_lvt_aM04W3p00L0p50() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50() c.plot() """ return import_gds( @@ -1070,15 +1070,15 @@ def rf_pfet_01v8_lvt_aM04W3p00L0p50() -> gf.Component: @cell -def rf_pfet_01v8_lvt_aM02W5p00L0p50() -> gf.Component: - """Returns rf_pfet_01v8_lvt_aM02W5p00L0p50 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_lvt_aM02W5p00L0p50() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50() c.plot() """ return import_gds( @@ -1088,15 +1088,15 @@ def rf_pfet_01v8_lvt_aM02W5p00L0p50() -> gf.Component: @cell -def rf_pfet_01v8_lvt_aM04W3p00L0p35() -> gf.Component: - """Returns rf_pfet_01v8_lvt_aM04W3p00L0p35 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_lvt_aM04W3p00L0p35() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35() c.plot() """ return import_gds( @@ -1106,15 +1106,15 @@ def rf_pfet_01v8_lvt_aM04W3p00L0p35() -> gf.Component: @cell -def rf_pfet_01v8_lvt_aM04W5p00L0p35() -> gf.Component: - """Returns rf_pfet_01v8_lvt_aM04W5p00L0p35 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_lvt_aM04W5p00L0p35() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35() c.plot() """ return import_gds( @@ -1124,15 +1124,15 @@ def rf_pfet_01v8_lvt_aM04W5p00L0p35() -> gf.Component: @cell -def rf_pfet_01v8_lvt_aM02W5p00L0p35() -> gf.Component: - """Returns rf_pfet_01v8_lvt_aM02W5p00L0p35 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_lvt_aM02W5p00L0p35() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35() c.plot() """ return import_gds( @@ -1142,15 +1142,15 @@ def rf_pfet_01v8_lvt_aM02W5p00L0p35() -> gf.Component: @cell -def cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -1160,15 +1160,15 @@ def cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def rf_pfet_01v8_bM02W1p65L0p15() -> gf.Component: - """Returns rf_pfet_01v8_bM02W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM02W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15() c.plot() """ return import_gds( @@ -1178,15 +1178,15 @@ def rf_pfet_01v8_bM02W1p65L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM04W3p00L0p25() -> gf.Component: - """Returns rf_pfet_01v8_bM04W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM04W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25() c.plot() """ return import_gds( @@ -1196,15 +1196,15 @@ def rf_pfet_01v8_bM04W3p00L0p25() -> gf.Component: @cell -def rf_pfet_01v8_bM02W3p00L0p18() -> gf.Component: - """Returns rf_pfet_01v8_bM02W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM02W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18() c.plot() """ return import_gds( @@ -1214,15 +1214,15 @@ def rf_pfet_01v8_bM02W3p00L0p18() -> gf.Component: @cell -def rf_pfet_01v8_aM02W5p00L0p18() -> gf.Component: - """Returns rf_pfet_01v8_aM02W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM02W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18() c.plot() """ return import_gds( @@ -1232,15 +1232,15 @@ def rf_pfet_01v8_aM02W5p00L0p18() -> gf.Component: @cell -def rf_pfet_01v8_mcM04W5p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_mcM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_mcM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15() c.plot() """ return import_gds( @@ -1250,15 +1250,15 @@ def rf_pfet_01v8_mcM04W5p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM04W5p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_bM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15() c.plot() """ return import_gds( @@ -1268,15 +1268,15 @@ def rf_pfet_01v8_bM04W5p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM04W3p00L0p25() -> gf.Component: - """Returns rf_pfet_01v8_aM04W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM04W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25() c.plot() """ return import_gds( @@ -1286,15 +1286,15 @@ def rf_pfet_01v8_aM04W3p00L0p25() -> gf.Component: @cell -def rf_pfet_01v8_aM04W3p00L0p18() -> gf.Component: - """Returns rf_pfet_01v8_aM04W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM04W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18() c.plot() """ return import_gds( @@ -1304,15 +1304,15 @@ def rf_pfet_01v8_aM04W3p00L0p18() -> gf.Component: @cell -def rf_pfet_01v8_mcM04W3p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_mcM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_mcM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15() c.plot() """ return import_gds( @@ -1322,15 +1322,15 @@ def rf_pfet_01v8_mcM04W3p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aF02W5p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF02W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF02W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15() c.plot() """ return import_gds( @@ -1340,15 +1340,15 @@ def rf_pfet_01v8_aF02W5p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM04W3p00L0p18() -> gf.Component: - """Returns rf_pfet_01v8_bM04W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM04W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18() c.plot() """ return import_gds( @@ -1358,15 +1358,15 @@ def rf_pfet_01v8_bM04W3p00L0p18() -> gf.Component: @cell -def rf_pfet_01v8_hcM04W3p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_hcM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_hcM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15() c.plot() """ return import_gds( @@ -1376,15 +1376,15 @@ def rf_pfet_01v8_hcM04W3p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aF02W3p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF02W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF02W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15() c.plot() """ return import_gds( @@ -1394,15 +1394,15 @@ def rf_pfet_01v8_aF02W3p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM02W3p00L0p25() -> gf.Component: - """Returns rf_pfet_01v8_aM02W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM02W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25() c.plot() """ return import_gds( @@ -1412,15 +1412,15 @@ def rf_pfet_01v8_aM02W3p00L0p25() -> gf.Component: @cell -def rf_pfet_01v8_aM04W1p65L0p25() -> gf.Component: - """Returns rf_pfet_01v8_aM04W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM04W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25() c.plot() """ return import_gds( @@ -1430,15 +1430,15 @@ def rf_pfet_01v8_aM04W1p65L0p25() -> gf.Component: @cell -def rf_pfet_01v8_aF08W0p84L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF08W0p84L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF08W0p84L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15() c.plot() """ return import_gds( @@ -1448,15 +1448,15 @@ def rf_pfet_01v8_aF08W0p84L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM02W1p65L0p25() -> gf.Component: - """Returns rf_pfet_01v8_aM02W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM02W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25() c.plot() """ return import_gds( @@ -1466,15 +1466,15 @@ def rf_pfet_01v8_aM02W1p65L0p25() -> gf.Component: @cell -def rf_pfet_01v8_bM02W1p65L0p18() -> gf.Component: - """Returns rf_pfet_01v8_bM02W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM02W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18() c.plot() """ return import_gds( @@ -1484,15 +1484,15 @@ def rf_pfet_01v8_bM02W1p65L0p18() -> gf.Component: @cell -def rf_pfet_01v8_bM04W1p65L0p18() -> gf.Component: - """Returns rf_pfet_01v8_bM04W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM04W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18() c.plot() """ return import_gds( @@ -1502,15 +1502,15 @@ def rf_pfet_01v8_bM04W1p65L0p18() -> gf.Component: @cell -def rf_pfet_01v8_bM02W1p65L0p25() -> gf.Component: - """Returns rf_pfet_01v8_bM02W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM02W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25() c.plot() """ return import_gds( @@ -1520,15 +1520,15 @@ def rf_pfet_01v8_bM02W1p65L0p25() -> gf.Component: @cell -def rf_pfet_01v8_bM04W5p00L0p25() -> gf.Component: - """Returns rf_pfet_01v8_bM04W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM04W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25() c.plot() """ return import_gds( @@ -1538,15 +1538,15 @@ def rf_pfet_01v8_bM04W5p00L0p25() -> gf.Component: @cell -def rf_pfet_01v8_aF04W3p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15() c.plot() """ return import_gds( @@ -1556,15 +1556,15 @@ def rf_pfet_01v8_aF04W3p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aF04W2p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF04W2p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF04W2p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15() c.plot() """ return import_gds( @@ -1574,15 +1574,15 @@ def rf_pfet_01v8_aF04W2p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM04W1p65L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aM04W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM04W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15() c.plot() """ return import_gds( @@ -1592,15 +1592,15 @@ def rf_pfet_01v8_aM04W1p65L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM04W5p00L0p18() -> gf.Component: - """Returns rf_pfet_01v8_bM04W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM04W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18() c.plot() """ return import_gds( @@ -1610,15 +1610,15 @@ def rf_pfet_01v8_bM04W5p00L0p18() -> gf.Component: @cell -def rf_pfet_01v8_aM02W1p65L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aM02W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM02W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15() c.plot() """ return import_gds( @@ -1628,15 +1628,15 @@ def rf_pfet_01v8_aM02W1p65L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aF06W1p68L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF06W1p68L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF06W1p68L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15() c.plot() """ return import_gds( @@ -1646,15 +1646,15 @@ def rf_pfet_01v8_aF06W1p68L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aF04W1p68L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF04W1p68L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF04W1p68L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15() c.plot() """ return import_gds( @@ -1664,15 +1664,15 @@ def rf_pfet_01v8_aF04W1p68L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM04W1p65L0p18() -> gf.Component: - """Returns rf_pfet_01v8_aM04W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM04W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18() c.plot() """ return import_gds( @@ -1682,15 +1682,15 @@ def rf_pfet_01v8_aM04W1p65L0p18() -> gf.Component: @cell -def rf_pfet_01v8_aF04W0p84L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF04W0p84L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF04W0p84L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15() c.plot() """ return import_gds( @@ -1700,15 +1700,15 @@ def rf_pfet_01v8_aF04W0p84L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM04W3p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_bM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15() c.plot() """ return import_gds( @@ -1718,15 +1718,15 @@ def rf_pfet_01v8_bM04W3p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aF06W0p84L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF06W0p84L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF06W0p84L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15() c.plot() """ return import_gds( @@ -1736,15 +1736,15 @@ def rf_pfet_01v8_aF06W0p84L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM04W5p00L0p25() -> gf.Component: - """Returns rf_pfet_01v8_aM04W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM04W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25() c.plot() """ return import_gds( @@ -1754,15 +1754,15 @@ def rf_pfet_01v8_aM04W5p00L0p25() -> gf.Component: @cell -def rf_pfet_01v8_aF06W3p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF06W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF06W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15() c.plot() """ return import_gds( @@ -1772,15 +1772,15 @@ def rf_pfet_01v8_aF06W3p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM02W3p00L0p25() -> gf.Component: - """Returns rf_pfet_01v8_bM02W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM02W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25() c.plot() """ return import_gds( @@ -1790,15 +1790,15 @@ def rf_pfet_01v8_bM02W3p00L0p25() -> gf.Component: @cell -def rf_pfet_01v8_aF02W0p84L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF02W0p84L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF02W0p84L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15() c.plot() """ return import_gds( @@ -1808,15 +1808,15 @@ def rf_pfet_01v8_aF02W0p84L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM02W5p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_bM02W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM02W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15() c.plot() """ return import_gds( @@ -1826,15 +1826,15 @@ def rf_pfet_01v8_bM02W5p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aF02W1p68L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF02W1p68L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF02W1p68L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15() c.plot() """ return import_gds( @@ -1844,15 +1844,15 @@ def rf_pfet_01v8_aF02W1p68L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM02W3p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aM02W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM02W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15() c.plot() """ return import_gds( @@ -1862,15 +1862,15 @@ def rf_pfet_01v8_aM02W3p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM02W3p00L0p18() -> gf.Component: - """Returns rf_pfet_01v8_aM02W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM02W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18() c.plot() """ return import_gds( @@ -1880,15 +1880,15 @@ def rf_pfet_01v8_aM02W3p00L0p18() -> gf.Component: @cell -def rf_pfet_01v8_aF06W2p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF06W2p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF06W2p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15() c.plot() """ return import_gds( @@ -1898,15 +1898,15 @@ def rf_pfet_01v8_aF06W2p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM04W1p65L0p25() -> gf.Component: - """Returns rf_pfet_01v8_bM04W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM04W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25() c.plot() """ return import_gds( @@ -1916,15 +1916,15 @@ def rf_pfet_01v8_bM04W1p65L0p25() -> gf.Component: @cell -def rf_pfet_01v8_aF02W2p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF02W2p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF02W2p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15() c.plot() """ return import_gds( @@ -1934,15 +1934,15 @@ def rf_pfet_01v8_aF02W2p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM04W3p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15() c.plot() """ return import_gds( @@ -1952,15 +1952,15 @@ def rf_pfet_01v8_aM04W3p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM04W5p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15() c.plot() """ return import_gds( @@ -1970,15 +1970,15 @@ def rf_pfet_01v8_aM04W5p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_hcM04W5p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_hcM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_hcM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15() c.plot() """ return import_gds( @@ -1988,15 +1988,15 @@ def rf_pfet_01v8_hcM04W5p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM04W1p65L0p15() -> gf.Component: - """Returns rf_pfet_01v8_bM04W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM04W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15() c.plot() """ return import_gds( @@ -2006,15 +2006,15 @@ def rf_pfet_01v8_bM04W1p65L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM02W5p00L0p25() -> gf.Component: - """Returns rf_pfet_01v8_aM02W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM02W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25() c.plot() """ return import_gds( @@ -2024,15 +2024,15 @@ def rf_pfet_01v8_aM02W5p00L0p25() -> gf.Component: @cell -def rf_pfet_01v8_aM04W5p00L0p18() -> gf.Component: - """Returns rf_pfet_01v8_aM04W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM04W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18() c.plot() """ return import_gds( @@ -2042,15 +2042,15 @@ def rf_pfet_01v8_aM04W5p00L0p18() -> gf.Component: @cell -def rf_pfet_01v8_bM02W5p00L0p18() -> gf.Component: - """Returns rf_pfet_01v8_bM02W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM02W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18() c.plot() """ return import_gds( @@ -2060,15 +2060,15 @@ def rf_pfet_01v8_bM02W5p00L0p18() -> gf.Component: @cell -def rf_pfet_01v8_bM02W3p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_bM02W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM02W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15() c.plot() """ return import_gds( @@ -2078,15 +2078,15 @@ def rf_pfet_01v8_bM02W3p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_bM02W5p00L0p25() -> gf.Component: - """Returns rf_pfet_01v8_bM02W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_bM02W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25() c.plot() """ return import_gds( @@ -2096,15 +2096,15 @@ def rf_pfet_01v8_bM02W5p00L0p25() -> gf.Component: @cell -def rf_pfet_01v8_aF04W5p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15() c.plot() """ return import_gds( @@ -2114,15 +2114,15 @@ def rf_pfet_01v8_aF04W5p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM02W5p00L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aM02W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM02W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15() c.plot() """ return import_gds( @@ -2132,15 +2132,15 @@ def rf_pfet_01v8_aM02W5p00L0p15() -> gf.Component: @cell -def rf_pfet_01v8_aM02W1p65L0p18() -> gf.Component: - """Returns rf_pfet_01v8_aM02W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aM02W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18() c.plot() """ return import_gds( @@ -2150,15 +2150,15 @@ def rf_pfet_01v8_aM02W1p65L0p18() -> gf.Component: @cell -def rf_pfet_01v8_aF08W1p68L0p15() -> gf.Component: - """Returns rf_pfet_01v8_aF08W1p68L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_aF08W1p68L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15() c.plot() """ return import_gds( @@ -2168,15 +2168,15 @@ def rf_pfet_01v8_aF08W1p68L0p15() -> gf.Component: @cell -def cap_vpp_04p4x04p6_m1m2_noshield_o2() -> gf.Component: - """Returns cap_vpp_04p4x04p6_m1m2_noshield_o2 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_04p4x04p6_m1m2_noshield_o2() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2() c.plot() """ return import_gds( @@ -2186,15 +2186,15 @@ def cap_vpp_04p4x04p6_m1m2_noshield_o2() -> gf.Component: @cell -def cap_vpp_04p4x04p6_m1m2_noshield() -> gf.Component: - """Returns cap_vpp_04p4x04p6_m1m2_noshield fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_04p4x04p6_m1m2_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield() c.plot() """ return import_gds( @@ -2204,15 +2204,15 @@ def cap_vpp_04p4x04p6_m1m2_noshield() -> gf.Component: @cell -def cap_vpp_04p4x04p6_m1m2_shieldl1() -> gf.Component: - """Returns cap_vpp_04p4x04p6_m1m2_shieldl1 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_04p4x04p6_m1m2_shieldl1() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1() c.plot() """ return import_gds( @@ -2222,15 +2222,15 @@ def cap_vpp_04p4x04p6_m1m2_shieldl1() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() c.plot() """ return import_gds( @@ -2240,15 +2240,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() c.plot() """ return import_gds( @@ -2258,15 +2258,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4() -> gf.Component: @cell -def rf_nfet_20v0_nvt_withptap_iso() -> gf.Component: - """Returns rf_nfet_20v0_nvt_withptap_iso fixed cell. +def sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_20v0_nvt_withptap_iso() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso() c.plot() """ return import_gds( @@ -2276,15 +2276,15 @@ def rf_nfet_20v0_nvt_withptap_iso() -> gf.Component: @cell -def rf_test_coil2() -> gf.Component: - """Returns rf_test_coil2 fixed cell. +def sky130_fd_pr__rf_test_coil2() -> gf.Component: + """Returns sky130_fd_pr__rf_test_coil2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_test_coil2() + c = sky130.components.sky130_fd_pr__rf_test_coil2() c.plot() """ return import_gds( @@ -2294,15 +2294,15 @@ def rf_test_coil2() -> gf.Component: @cell -def cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() -> gf.Component: - """Returns cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 fixed cell. +def sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() + c = sky130.components.sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() c.plot() """ return import_gds( @@ -2312,15 +2312,15 @@ def cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2() -> gf.Component: @cell -def cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() -> gf.Component: - """Returns cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() c.plot() """ return import_gds( @@ -2330,15 +2330,15 @@ def cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5() -> gf.Component: @cell -def cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() -> gf.Component: - """Returns cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() c.plot() """ return import_gds( @@ -2348,15 +2348,15 @@ def cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top() -> gf.Component: @cell -def cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -2366,15 +2366,15 @@ def cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def rf_test_coil3() -> gf.Component: - """Returns rf_test_coil3 fixed cell. +def sky130_fd_pr__rf_test_coil3() -> gf.Component: + """Returns sky130_fd_pr__rf_test_coil3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_test_coil3() + c = sky130.components.sky130_fd_pr__rf_test_coil3() c.plot() """ return import_gds( @@ -2384,15 +2384,15 @@ def rf_test_coil3() -> gf.Component: @cell -def cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: - """Returns cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap fixed cell. +def sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() + c = sky130.components.sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ return import_gds( @@ -2402,15 +2402,15 @@ def cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: @cell -def cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: - """Returns cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap fixed cell. +def sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() + c = sky130.components.sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ return import_gds( @@ -2420,15 +2420,15 @@ def cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: @cell -def rf_nfet_20v0_withptap() -> gf.Component: - """Returns rf_nfet_20v0_withptap fixed cell. +def sky130_fd_pr__rf_nfet_20v0_withptap() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_20v0_withptap() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_withptap() c.plot() """ return import_gds( @@ -2438,15 +2438,15 @@ def rf_nfet_20v0_withptap() -> gf.Component: @cell -def esd_rf_nfet_20v0_iec_32vW60p00() -> gf.Component: - """Returns esd_rf_nfet_20v0_iec_32vW60p00 fixed cell. +def sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() -> gf.Component: + """Returns sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.esd_rf_nfet_20v0_iec_32vW60p00() + c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00() c.plot() """ return import_gds( @@ -2456,15 +2456,15 @@ def esd_rf_nfet_20v0_iec_32vW60p00() -> gf.Component: @cell -def esd_rf_nfet_20v0_iec_21vW60p00() -> gf.Component: - """Returns esd_rf_nfet_20v0_iec_21vW60p00 fixed cell. +def sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() -> gf.Component: + """Returns sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.esd_rf_nfet_20v0_iec_21vW60p00() + c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00() c.plot() """ return import_gds( @@ -2474,15 +2474,15 @@ def esd_rf_nfet_20v0_iec_21vW60p00() -> gf.Component: @cell -def rf_pfet_20v0_withptap() -> gf.Component: - """Returns rf_pfet_20v0_withptap fixed cell. +def sky130_fd_pr__rf_pfet_20v0_withptap() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_20v0_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_20v0_withptap() + c = sky130.components.sky130_fd_pr__rf_pfet_20v0_withptap() c.plot() """ return import_gds( @@ -2492,15 +2492,15 @@ def rf_pfet_20v0_withptap() -> gf.Component: @cell -def rf_nfet_20v0_nvt_withptap() -> gf.Component: - """Returns rf_nfet_20v0_nvt_withptap fixed cell. +def sky130_fd_pr__rf_nfet_20v0_nvt_withptap() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_nvt_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_20v0_nvt_withptap() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_withptap() c.plot() """ return import_gds( @@ -2510,15 +2510,15 @@ def rf_nfet_20v0_nvt_withptap() -> gf.Component: @cell -def cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() -> gf.Component: - """Returns cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() c.plot() """ return import_gds( @@ -2528,15 +2528,15 @@ def cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4() -> gf.Component: @cell -def cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: - """Returns cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ return import_gds( @@ -2546,15 +2546,15 @@ def cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: @cell -def cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() -> gf.Component: - """Returns cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() c.plot() """ return import_gds( @@ -2564,15 +2564,15 @@ def cap_vpp_11p5x11p7_m1m2m3m4_shieldm5() -> gf.Component: @cell -def cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -2582,15 +2582,15 @@ def cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() -> gf.Component: - """Returns cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() c.plot() """ return import_gds( @@ -2600,15 +2600,15 @@ def cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell() -> gf.Component: @cell -def cap_vpp_08p6x07p8_l1m1m2_noshield() -> gf.Component: - """Returns cap_vpp_08p6x07p8_l1m1m2_noshield fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_08p6x07p8_l1m1m2_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield() c.plot() """ return import_gds( @@ -2618,15 +2618,15 @@ def cap_vpp_08p6x07p8_l1m1m2_noshield() -> gf.Component: @cell -def cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: - """Returns cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. +def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() c.plot() """ return import_gds( @@ -2636,15 +2636,15 @@ def cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: @cell -def cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -2654,15 +2654,15 @@ def cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() -> gf.Component: - """Returns cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() c.plot() """ return import_gds( @@ -2672,15 +2672,15 @@ def cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4() -> gf.Component: @cell -def cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: - """Returns cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ return import_gds( @@ -2690,15 +2690,15 @@ def cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: @cell -def cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: - """Returns cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() c.plot() """ return import_gds( @@ -2708,15 +2708,15 @@ def cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top() -> gf.Component: @cell -def cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() -> gf.Component: - """Returns cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() c.plot() """ return import_gds( @@ -2726,15 +2726,15 @@ def cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4() -> gf.Component: @cell -def cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: - """Returns cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap fixed cell. +def sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() + c = sky130.components.sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ return import_gds( @@ -2744,15 +2744,15 @@ def cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: @cell -def cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: - """Returns cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap fixed cell. +def sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() + c = sky130.components.sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() c.plot() """ return import_gds( @@ -2762,15 +2762,15 @@ def cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() c.plot() """ return import_gds( @@ -2780,15 +2780,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() c.plot() """ return import_gds( @@ -2798,15 +2798,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() c.plot() """ return import_gds( @@ -2816,15 +2816,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() c.plot() """ return import_gds( @@ -2834,15 +2834,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() c.plot() """ return import_gds( @@ -2852,15 +2852,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() c.plot() """ return import_gds( @@ -2870,15 +2870,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() c.plot() """ return import_gds( @@ -2888,15 +2888,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() c.plot() """ return import_gds( @@ -2906,15 +2906,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6() -> gf.Component: @cell -def cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -2924,15 +2924,15 @@ def cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: - """Returns cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap fixed cell. +def sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() + c = sky130.components.sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() c.plot() """ return import_gds( @@ -2942,15 +2942,15 @@ def cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: @cell -def rf_nfet_20v0_noptap_iso() -> gf.Component: - """Returns rf_nfet_20v0_noptap_iso fixed cell. +def sky130_fd_pr__rf_nfet_20v0_noptap_iso() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_noptap_iso fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_20v0_noptap_iso() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_noptap_iso() c.plot() """ return import_gds( @@ -2960,15 +2960,15 @@ def rf_nfet_20v0_noptap_iso() -> gf.Component: @cell -def rf_npn_05v5_W1p00L1p00() -> gf.Component: - """Returns rf_npn_05v5_W1p00L1p00 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W1p00L1p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W1p00L1p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_npn_05v5_W1p00L1p00() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L1p00() c.plot() """ return import_gds( @@ -2978,15 +2978,15 @@ def rf_npn_05v5_W1p00L1p00() -> gf.Component: @cell -def rf_npn_05v5_W2p00L2p00() -> gf.Component: - """Returns rf_npn_05v5_W2p00L2p00 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W2p00L2p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W2p00L2p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_npn_05v5_W2p00L2p00() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L2p00() c.plot() """ return import_gds( @@ -2996,15 +2996,15 @@ def rf_npn_05v5_W2p00L2p00() -> gf.Component: @cell -def rf_npn_05v5_W1p00L8p00() -> gf.Component: - """Returns rf_npn_05v5_W1p00L8p00 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W1p00L8p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W1p00L8p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_npn_05v5_W1p00L8p00() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L8p00() c.plot() """ return import_gds( @@ -3014,15 +3014,15 @@ def rf_npn_05v5_W1p00L8p00() -> gf.Component: @cell -def rf_npn_05v5_W1p00L4p00() -> gf.Component: - """Returns rf_npn_05v5_W1p00L4p00 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W1p00L4p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W1p00L4p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_npn_05v5_W1p00L4p00() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L4p00() c.plot() """ return import_gds( @@ -3032,15 +3032,15 @@ def rf_npn_05v5_W1p00L4p00() -> gf.Component: @cell -def rf_npn_05v5_W2p00L8p00() -> gf.Component: - """Returns rf_npn_05v5_W2p00L8p00 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W2p00L8p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W2p00L8p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_npn_05v5_W2p00L8p00() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L8p00() c.plot() """ return import_gds( @@ -3050,15 +3050,15 @@ def rf_npn_05v5_W2p00L8p00() -> gf.Component: @cell -def rf_npn_05v5_W2p00L4p00() -> gf.Component: - """Returns rf_npn_05v5_W2p00L4p00 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W2p00L4p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W2p00L4p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_npn_05v5_W2p00L4p00() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W2p00L4p00() c.plot() """ return import_gds( @@ -3068,15 +3068,15 @@ def rf_npn_05v5_W2p00L4p00() -> gf.Component: @cell -def rf_npn_05v5_W1p00L2p00() -> gf.Component: - """Returns rf_npn_05v5_W1p00L2p00 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W1p00L2p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W1p00L2p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_npn_05v5_W1p00L2p00() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W1p00L2p00() c.plot() """ return import_gds( @@ -3086,15 +3086,15 @@ def rf_npn_05v5_W1p00L2p00() -> gf.Component: @cell -def rf_npn_05v5_W5p00L5p00() -> gf.Component: - """Returns rf_npn_05v5_W5p00L5p00 fixed cell. +def sky130_fd_pr__rf_npn_05v5_W5p00L5p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_05v5_W5p00L5p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_npn_05v5_W5p00L5p00() + c = sky130.components.sky130_fd_pr__rf_npn_05v5_W5p00L5p00() c.plot() """ return import_gds( @@ -3104,15 +3104,15 @@ def rf_npn_05v5_W5p00L5p00() -> gf.Component: @cell -def cap_vpp_08p6x07p8_m1m2_noshield() -> gf.Component: - """Returns cap_vpp_08p6x07p8_m1m2_noshield fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_08p6x07p8_m1m2_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield() c.plot() """ return import_gds( @@ -3122,15 +3122,15 @@ def cap_vpp_08p6x07p8_m1m2_noshield() -> gf.Component: @cell -def cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() -> gf.Component: - """Returns cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop fixed cell. +def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() + c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() c.plot() """ return import_gds( @@ -3140,15 +3140,15 @@ def cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop() -> gf.Component: @cell -def cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() -> gf.Component: - """Returns cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv fixed cell. +def sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() + c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() c.plot() """ return import_gds( @@ -3158,15 +3158,15 @@ def cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv() -> gf.Component: @cell -def cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -3176,15 +3176,15 @@ def cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def cap_vpp_11p5x11p7_m1m4_noshield() -> gf.Component: - """Returns cap_vpp_11p5x11p7_m1m4_noshield fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_m1m4_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield() c.plot() """ return import_gds( @@ -3194,15 +3194,15 @@ def cap_vpp_11p5x11p7_m1m4_noshield() -> gf.Component: @cell -def cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -3212,15 +3212,15 @@ def cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() -> gf.Component: - """Returns cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 fixed cell. +def sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() + c = sky130.components.sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() c.plot() """ return import_gds( @@ -3230,15 +3230,15 @@ def cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3() -> gf.Component: @cell -def cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() -> gf.Component: - """Returns cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 fixed cell. +def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() + c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() c.plot() """ return import_gds( @@ -3248,15 +3248,15 @@ def cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4() -> gf.Component: @cell -def cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() -> gf.Component: - """Returns cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top fixed cell. +def sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() + c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() c.plot() """ return import_gds( @@ -3266,15 +3266,15 @@ def cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top() -> gf.Component: @cell -def cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -3284,15 +3284,15 @@ def cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2_shieldpom3() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2_shieldpom3 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2_shieldpom3() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3() c.plot() """ return import_gds( @@ -3302,15 +3302,15 @@ def cap_vpp_11p5x11p7_l1m1m2_shieldpom3() -> gf.Component: @cell -def rf_aura_drc_flag_check() -> gf.Component: - """Returns rf_aura_drc_flag_check fixed cell. +def sky130_fd_pr__rf_aura_drc_flag_check() -> gf.Component: + """Returns sky130_fd_pr__rf_aura_drc_flag_check fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_aura_drc_flag_check() + c = sky130.components.sky130_fd_pr__rf_aura_drc_flag_check() c.plot() """ return import_gds( @@ -3320,15 +3320,15 @@ def rf_aura_drc_flag_check() -> gf.Component: @cell -def cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() -> gf.Component: - """Returns cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test fixed cell. +def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() c.plot() """ return import_gds( @@ -3338,15 +3338,15 @@ def cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test() -> gf.Component: @cell -def cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: - """Returns cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield fixed cell. +def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() c.plot() """ return import_gds( @@ -3356,15 +3356,15 @@ def cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield() -> gf.Component: @cell -def cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: - """Returns cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. +def sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() + c = sky130.components.sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() c.plot() """ return import_gds( @@ -3374,15 +3374,15 @@ def cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin() -> gf.Component: @cell -def cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() -> gf.Component: - """Returns cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top fixed cell. +def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() + c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() c.plot() """ return import_gds( @@ -3392,15 +3392,15 @@ def cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top() -> gf.Component: @cell -def cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() -> gf.Component: - """Returns cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 fixed cell. +def sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() + c = sky130.components.sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() c.plot() """ return import_gds( @@ -3410,15 +3410,15 @@ def cap_vpp_06p8x06p1_m1m2m3_shieldl1m4() -> gf.Component: @cell -def rf_pfet_01v8_mvt_aF02W0p84L0p15() -> gf.Component: - """Returns rf_pfet_01v8_mvt_aF02W0p84L0p15 fixed cell. +def sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_pfet_01v8_mvt_aF02W0p84L0p15() + c = sky130.components.sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15() c.plot() """ return import_gds( @@ -3428,15 +3428,15 @@ def rf_pfet_01v8_mvt_aF02W0p84L0p15() -> gf.Component: @cell -def rf_nfet_20v0_nvt_aup() -> gf.Component: - """Returns rf_nfet_20v0_nvt_aup fixed cell. +def sky130_fd_pr__rf_nfet_20v0_nvt_aup() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_nvt_aup fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_20v0_nvt_aup() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_nvt_aup() c.plot() """ return import_gds( @@ -3446,15 +3446,15 @@ def rf_nfet_20v0_nvt_aup() -> gf.Component: @cell -def cap_vpp_08p6x07p8_m1m2_shieldl1() -> gf.Component: - """Returns cap_vpp_08p6x07p8_m1m2_shieldl1 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_08p6x07p8_m1m2_shieldl1() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1() c.plot() """ return import_gds( @@ -3464,15 +3464,15 @@ def cap_vpp_08p6x07p8_m1m2_shieldl1() -> gf.Component: @cell -def cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: - """Returns cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap fixed cell. +def sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() + c = sky130.components.sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() c.plot() """ return import_gds( @@ -3482,15 +3482,15 @@ def cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap() -> gf.Component: @cell -def cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() -> gf.Component: - """Returns cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() c.plot() """ return import_gds( @@ -3500,15 +3500,15 @@ def cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3() -> gf.Component: @cell -def rf_aura_blocking() -> gf.Component: - """Returns rf_aura_blocking fixed cell. +def sky130_fd_pr__rf_aura_blocking() -> gf.Component: + """Returns sky130_fd_pr__rf_aura_blocking fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_aura_blocking() + c = sky130.components.sky130_fd_pr__rf_aura_blocking() c.plot() """ return import_gds( @@ -3518,15 +3518,15 @@ def rf_aura_blocking() -> gf.Component: @cell -def cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() -> gf.Component: - """Returns cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 fixed cell. +def sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() + c = sky130.components.sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() c.plot() """ return import_gds( @@ -3536,15 +3536,15 @@ def cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3() -> gf.Component: @cell -def cap_vpp_11p5x11p7_m1m2m3_shieldl1() -> gf.Component: - """Returns cap_vpp_11p5x11p7_m1m2m3_shieldl1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_m1m2m3_shieldl1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1() c.plot() """ return import_gds( @@ -3554,15 +3554,15 @@ def cap_vpp_11p5x11p7_m1m2m3_shieldl1() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() c.plot() """ return import_gds( @@ -3572,15 +3572,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3_shieldm4() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() c.plot() """ return import_gds( @@ -3590,15 +3590,15 @@ def cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM04W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM04W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM04W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25() c.plot() """ return import_gds( @@ -3608,15 +3608,15 @@ def rf_nfet_01v8_lvt_bM04W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF02W0p84L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF02W0p84L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF02W0p84L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15() c.plot() """ return import_gds( @@ -3626,15 +3626,15 @@ def rf_nfet_01v8_lvt_aF02W0p84L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM02W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM02W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM02W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25() c.plot() """ return import_gds( @@ -3644,15 +3644,15 @@ def rf_nfet_01v8_lvt_aM02W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM04W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM04W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM04W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15() c.plot() """ return import_gds( @@ -3662,15 +3662,15 @@ def rf_nfet_01v8_lvt_aM04W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM02W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM02W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM02W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15() c.plot() """ return import_gds( @@ -3680,15 +3680,15 @@ def rf_nfet_01v8_lvt_bM02W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF08W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF08W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF08W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15() c.plot() """ return import_gds( @@ -3698,15 +3698,15 @@ def rf_nfet_01v8_lvt_aF08W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM02W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM02W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM02W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18() c.plot() """ return import_gds( @@ -3716,15 +3716,15 @@ def rf_nfet_01v8_lvt_cM02W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM04W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM04W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM04W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25() c.plot() """ return import_gds( @@ -3734,15 +3734,15 @@ def rf_nfet_01v8_lvt_cM04W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF02W0p42L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF02W0p42L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF02W0p42L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15() c.plot() """ return import_gds( @@ -3752,15 +3752,15 @@ def rf_nfet_01v8_lvt_aF02W0p42L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM02W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM02W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM02W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25() c.plot() """ return import_gds( @@ -3770,15 +3770,15 @@ def rf_nfet_01v8_lvt_bM02W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM02W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM02W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM02W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18() c.plot() """ return import_gds( @@ -3788,15 +3788,15 @@ def rf_nfet_01v8_lvt_aM02W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM02W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM02W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM02W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15() c.plot() """ return import_gds( @@ -3806,15 +3806,15 @@ def rf_nfet_01v8_lvt_cM02W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF08W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF08W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF08W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15() c.plot() """ return import_gds( @@ -3824,15 +3824,15 @@ def rf_nfet_01v8_lvt_aF08W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM02W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM02W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM02W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15() c.plot() """ return import_gds( @@ -3842,15 +3842,15 @@ def rf_nfet_01v8_lvt_aM02W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM02W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM02W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM02W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25() c.plot() """ return import_gds( @@ -3860,15 +3860,15 @@ def rf_nfet_01v8_lvt_cM02W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM04W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM04W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM04W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25() c.plot() """ return import_gds( @@ -3878,15 +3878,15 @@ def rf_nfet_01v8_lvt_aM04W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM04W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15() c.plot() """ return import_gds( @@ -3896,15 +3896,15 @@ def rf_nfet_01v8_lvt_bM04W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM04W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15() c.plot() """ return import_gds( @@ -3914,15 +3914,15 @@ def rf_nfet_01v8_lvt_cM04W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM02W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM02W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM02W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18() c.plot() """ return import_gds( @@ -3932,15 +3932,15 @@ def rf_nfet_01v8_lvt_cM02W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF02W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF02W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF02W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15() c.plot() """ return import_gds( @@ -3950,15 +3950,15 @@ def rf_nfet_01v8_lvt_aF02W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM02W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM02W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM02W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15() c.plot() """ return import_gds( @@ -3968,15 +3968,15 @@ def rf_nfet_01v8_lvt_cM02W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM04W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM04W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM04W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25() c.plot() """ return import_gds( @@ -3986,15 +3986,15 @@ def rf_nfet_01v8_lvt_aM04W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM04W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM04W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM04W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18() c.plot() """ return import_gds( @@ -4004,15 +4004,15 @@ def rf_nfet_01v8_lvt_aM04W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF08W0p42L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF08W0p42L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF08W0p42L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15() c.plot() """ return import_gds( @@ -4022,15 +4022,15 @@ def rf_nfet_01v8_lvt_aF08W0p42L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM04W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM04W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM04W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15() c.plot() """ return import_gds( @@ -4040,15 +4040,15 @@ def rf_nfet_01v8_lvt_bM04W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM04W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM04W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM04W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25() c.plot() """ return import_gds( @@ -4058,15 +4058,15 @@ def rf_nfet_01v8_lvt_bM04W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF04W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15() c.plot() """ return import_gds( @@ -4076,15 +4076,15 @@ def rf_nfet_01v8_lvt_aF04W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM02W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM02W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM02W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25() c.plot() """ return import_gds( @@ -4094,15 +4094,15 @@ def rf_nfet_01v8_lvt_cM02W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM04W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM04W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM04W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15() c.plot() """ return import_gds( @@ -4112,15 +4112,15 @@ def rf_nfet_01v8_lvt_aM04W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM02W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM02W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM02W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18() c.plot() """ return import_gds( @@ -4130,15 +4130,15 @@ def rf_nfet_01v8_lvt_cM02W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM02W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM02W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM02W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25() c.plot() """ return import_gds( @@ -4148,15 +4148,15 @@ def rf_nfet_01v8_lvt_aM02W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM02W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM02W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM02W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18() c.plot() """ return import_gds( @@ -4166,15 +4166,15 @@ def rf_nfet_01v8_lvt_aM02W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF06W0p84L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF06W0p84L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF06W0p84L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15() c.plot() """ return import_gds( @@ -4184,15 +4184,15 @@ def rf_nfet_01v8_lvt_aF06W0p84L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF06W0p42L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF06W0p42L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF06W0p42L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15() c.plot() """ return import_gds( @@ -4202,15 +4202,15 @@ def rf_nfet_01v8_lvt_aF06W0p42L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM04W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM04W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM04W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25() c.plot() """ return import_gds( @@ -4220,15 +4220,15 @@ def rf_nfet_01v8_lvt_cM04W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM02W3p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM02W3p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM02W3p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25() c.plot() """ return import_gds( @@ -4238,15 +4238,15 @@ def rf_nfet_01v8_lvt_aM02W3p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF06W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF06W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF06W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15() c.plot() """ return import_gds( @@ -4256,15 +4256,15 @@ def rf_nfet_01v8_lvt_aF06W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM04W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM04W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM04W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18() c.plot() """ return import_gds( @@ -4274,15 +4274,15 @@ def rf_nfet_01v8_lvt_cM04W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM02W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM02W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM02W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18() c.plot() """ return import_gds( @@ -4292,15 +4292,15 @@ def rf_nfet_01v8_lvt_bM02W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM02W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM02W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM02W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25() c.plot() """ return import_gds( @@ -4310,15 +4310,15 @@ def rf_nfet_01v8_lvt_bM02W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM02W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM02W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM02W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15() c.plot() """ return import_gds( @@ -4328,15 +4328,15 @@ def rf_nfet_01v8_lvt_bM02W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM04W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM04W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM04W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25() c.plot() """ return import_gds( @@ -4346,15 +4346,15 @@ def rf_nfet_01v8_lvt_bM04W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM04W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM04W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM04W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18() c.plot() """ return import_gds( @@ -4364,15 +4364,15 @@ def rf_nfet_01v8_lvt_aM04W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM04W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15() c.plot() """ return import_gds( @@ -4382,15 +4382,15 @@ def rf_nfet_01v8_lvt_bM04W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM04W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM04W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM04W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18() c.plot() """ return import_gds( @@ -4400,15 +4400,15 @@ def rf_nfet_01v8_lvt_bM04W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF06W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF06W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF06W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15() c.plot() """ return import_gds( @@ -4418,15 +4418,15 @@ def rf_nfet_01v8_lvt_aF06W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF04W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF04W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF04W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15() c.plot() """ return import_gds( @@ -4436,15 +4436,15 @@ def rf_nfet_01v8_lvt_aF04W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM02W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM02W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM02W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18() c.plot() """ return import_gds( @@ -4454,15 +4454,15 @@ def rf_nfet_01v8_lvt_bM02W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM02W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM02W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM02W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15() c.plot() """ return import_gds( @@ -4472,15 +4472,15 @@ def rf_nfet_01v8_lvt_cM02W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM04W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM04W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM04W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18() c.plot() """ return import_gds( @@ -4490,15 +4490,15 @@ def rf_nfet_01v8_lvt_aM04W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM04W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM04W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM04W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18() c.plot() """ return import_gds( @@ -4508,15 +4508,15 @@ def rf_nfet_01v8_lvt_bM04W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM04W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM04W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM04W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18() c.plot() """ return import_gds( @@ -4526,15 +4526,15 @@ def rf_nfet_01v8_lvt_bM04W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM04W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM04W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM04W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25() c.plot() """ return import_gds( @@ -4544,15 +4544,15 @@ def rf_nfet_01v8_lvt_aM04W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM02W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM02W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM02W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15() c.plot() """ return import_gds( @@ -4562,15 +4562,15 @@ def rf_nfet_01v8_lvt_aM02W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM02W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM02W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM02W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15() c.plot() """ return import_gds( @@ -4580,15 +4580,15 @@ def rf_nfet_01v8_lvt_aM02W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM02W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM02W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM02W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25() c.plot() """ return import_gds( @@ -4598,15 +4598,15 @@ def rf_nfet_01v8_lvt_cM02W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM02W1p65L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM02W1p65L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM02W1p65L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18() c.plot() """ return import_gds( @@ -4616,15 +4616,15 @@ def rf_nfet_01v8_lvt_aM02W1p65L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM04W1p65L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM04W1p65L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM04W1p65L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25() c.plot() """ return import_gds( @@ -4634,15 +4634,15 @@ def rf_nfet_01v8_lvt_cM04W1p65L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM02W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM02W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM02W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18() c.plot() """ return import_gds( @@ -4652,15 +4652,15 @@ def rf_nfet_01v8_lvt_bM02W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM04W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15() c.plot() """ return import_gds( @@ -4670,15 +4670,15 @@ def rf_nfet_01v8_lvt_cM04W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM04W3p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM04W3p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM04W3p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18() c.plot() """ return import_gds( @@ -4688,15 +4688,15 @@ def rf_nfet_01v8_lvt_cM04W3p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aM04W5p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aM04W5p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aM04W5p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15() c.plot() """ return import_gds( @@ -4706,15 +4706,15 @@ def rf_nfet_01v8_lvt_aM04W5p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM04W1p65L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM04W1p65L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM04W1p65L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15() c.plot() """ return import_gds( @@ -4724,15 +4724,15 @@ def rf_nfet_01v8_lvt_cM04W1p65L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_cM04W5p00L0p18() -> gf.Component: - """Returns rf_nfet_01v8_lvt_cM04W5p00L0p18 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_cM04W5p00L0p18() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18() c.plot() """ return import_gds( @@ -4742,15 +4742,15 @@ def rf_nfet_01v8_lvt_cM04W5p00L0p18() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF04W0p84L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF04W0p84L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF04W0p84L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15() c.plot() """ return import_gds( @@ -4760,15 +4760,15 @@ def rf_nfet_01v8_lvt_aF04W0p84L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM02W5p00L0p25() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM02W5p00L0p25 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM02W5p00L0p25() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25() c.plot() """ return import_gds( @@ -4778,15 +4778,15 @@ def rf_nfet_01v8_lvt_bM02W5p00L0p25() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF02W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF02W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF02W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15() c.plot() """ return import_gds( @@ -4796,15 +4796,15 @@ def rf_nfet_01v8_lvt_aF02W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_bM02W3p00L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_bM02W3p00L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_bM02W3p00L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15() c.plot() """ return import_gds( @@ -4814,15 +4814,15 @@ def rf_nfet_01v8_lvt_bM02W3p00L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF04W0p42L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF04W0p42L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF04W0p42L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15() c.plot() """ return import_gds( @@ -4832,15 +4832,15 @@ def rf_nfet_01v8_lvt_aF04W0p42L0p15() -> gf.Component: @cell -def rf_nfet_01v8_lvt_aF08W0p84L0p15() -> gf.Component: - """Returns rf_nfet_01v8_lvt_aF08W0p84L0p15 fixed cell. +def sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_01v8_lvt_aF08W0p84L0p15() + c = sky130.components.sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15() c.plot() """ return import_gds( @@ -4850,15 +4850,15 @@ def rf_nfet_01v8_lvt_aF08W0p84L0p15() -> gf.Component: @cell -def cap_vpp_11p5x11p7_m1m2_noshield() -> gf.Component: - """Returns cap_vpp_11p5x11p7_m1m2_noshield fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_m1m2_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield() c.plot() """ return import_gds( @@ -4868,15 +4868,15 @@ def cap_vpp_11p5x11p7_m1m2_noshield() -> gf.Component: @cell -def rf_npn_11v0_W1p00L1p00() -> gf.Component: - """Returns rf_npn_11v0_W1p00L1p00 fixed cell. +def sky130_fd_pr__rf_npn_11v0_W1p00L1p00() -> gf.Component: + """Returns sky130_fd_pr__rf_npn_11v0_W1p00L1p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_npn_11v0_W1p00L1p00() + c = sky130.components.sky130_fd_pr__rf_npn_11v0_W1p00L1p00() c.plot() """ return import_gds( @@ -4886,15 +4886,15 @@ def rf_npn_11v0_W1p00L1p00() -> gf.Component: @cell -def rf_nfet_20v0_zvt_withptap() -> gf.Component: - """Returns rf_nfet_20v0_zvt_withptap fixed cell. +def sky130_fd_pr__rf_nfet_20v0_zvt_withptap() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_20v0_zvt_withptap fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_20v0_zvt_withptap() + c = sky130.components.sky130_fd_pr__rf_nfet_20v0_zvt_withptap() c.plot() """ return import_gds( @@ -4904,15 +4904,15 @@ def rf_nfet_20v0_zvt_withptap() -> gf.Component: @cell -def cap_vpp_11p5x11p7_m1m2_shieldl1() -> gf.Component: - """Returns cap_vpp_11p5x11p7_m1m2_shieldl1 fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_m1m2_shieldl1() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1() c.plot() """ return import_gds( @@ -4922,15 +4922,15 @@ def cap_vpp_11p5x11p7_m1m2_shieldl1() -> gf.Component: @cell -def esd_rf_nfet_20v0_hbm_21vW60p00() -> gf.Component: - """Returns esd_rf_nfet_20v0_hbm_21vW60p00 fixed cell. +def sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() -> gf.Component: + """Returns sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.esd_rf_nfet_20v0_hbm_21vW60p00() + c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00() c.plot() """ return import_gds( @@ -4940,15 +4940,15 @@ def esd_rf_nfet_20v0_hbm_21vW60p00() -> gf.Component: @cell -def esd_rf_nfet_20v0_hbm_32vW60p00() -> gf.Component: - """Returns esd_rf_nfet_20v0_hbm_32vW60p00 fixed cell. +def sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() -> gf.Component: + """Returns sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.esd_rf_nfet_20v0_hbm_32vW60p00() + c = sky130.components.sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00() c.plot() """ return import_gds( @@ -4958,15 +4958,15 @@ def esd_rf_nfet_20v0_hbm_32vW60p00() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_aM10W7p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_aM10W7p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_aM10W7p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50() c.plot() """ return import_gds( @@ -4976,15 +4976,15 @@ def rf_nfet_g5v0d10v5_aM10W7p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_bM10W5p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_bM10W5p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_bM10W5p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50() c.plot() """ return import_gds( @@ -4994,15 +4994,15 @@ def rf_nfet_g5v0d10v5_bM10W5p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_aM10W5p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_aM10W5p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_aM10W5p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50() c.plot() """ return import_gds( @@ -5012,15 +5012,15 @@ def rf_nfet_g5v0d10v5_aM10W5p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_aM04W5p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_aM04W5p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_aM04W5p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50() c.plot() """ return import_gds( @@ -5030,15 +5030,15 @@ def rf_nfet_g5v0d10v5_aM04W5p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_aM04W7p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_aM04W7p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_aM04W7p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50() c.plot() """ return import_gds( @@ -5048,15 +5048,15 @@ def rf_nfet_g5v0d10v5_aM04W7p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_bM10W7p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_bM10W7p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_bM10W7p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50() c.plot() """ return import_gds( @@ -5066,15 +5066,15 @@ def rf_nfet_g5v0d10v5_bM10W7p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_aM10W3p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_aM10W3p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_aM10W3p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50() c.plot() """ return import_gds( @@ -5084,15 +5084,15 @@ def rf_nfet_g5v0d10v5_aM10W3p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_bM02W3p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_bM02W3p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_bM02W3p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50() c.plot() """ return import_gds( @@ -5102,15 +5102,15 @@ def rf_nfet_g5v0d10v5_bM02W3p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_aM04W3p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_aM04W3p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_aM04W3p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50() c.plot() """ return import_gds( @@ -5120,15 +5120,15 @@ def rf_nfet_g5v0d10v5_aM04W3p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_bM10W3p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_bM10W3p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_bM10W3p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50() c.plot() """ return import_gds( @@ -5138,15 +5138,15 @@ def rf_nfet_g5v0d10v5_bM10W3p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_bM04W5p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_bM04W5p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_bM04W5p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50() c.plot() """ return import_gds( @@ -5156,15 +5156,15 @@ def rf_nfet_g5v0d10v5_bM04W5p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_bM04W3p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_bM04W3p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_bM04W3p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50() c.plot() """ return import_gds( @@ -5174,15 +5174,15 @@ def rf_nfet_g5v0d10v5_bM04W3p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_bM02W5p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_bM02W5p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_bM02W5p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50() c.plot() """ return import_gds( @@ -5192,15 +5192,15 @@ def rf_nfet_g5v0d10v5_bM02W5p00L0p50() -> gf.Component: @cell -def rf_nfet_g5v0d10v5_bM04W7p00L0p50() -> gf.Component: - """Returns rf_nfet_g5v0d10v5_bM04W7p00L0p50 fixed cell. +def sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() -> gf.Component: + """Returns sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.rf_nfet_g5v0d10v5_bM04W7p00L0p50() + c = sky130.components.sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50() c.plot() """ return import_gds( @@ -5210,15 +5210,15 @@ def rf_nfet_g5v0d10v5_bM04W7p00L0p50() -> gf.Component: @cell -def cap_vpp_11p5x11p7_l1m1m2_noshield() -> gf.Component: - """Returns cap_vpp_11p5x11p7_l1m1m2_noshield fixed cell. +def sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_11p5x11p7_l1m1m2_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield() c.plot() """ return import_gds( @@ -5228,15 +5228,15 @@ def cap_vpp_11p5x11p7_l1m1m2_noshield() -> gf.Component: @cell -def cap_vpp_08p6x07p8_m1m2m3_shieldl1() -> gf.Component: - """Returns cap_vpp_08p6x07p8_m1m2m3_shieldl1 fixed cell. +def sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_08p6x07p8_m1m2m3_shieldl1() + c = sky130.components.sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1() c.plot() """ return import_gds( @@ -5246,15 +5246,15 @@ def cap_vpp_08p6x07p8_m1m2m3_shieldl1() -> gf.Component: @cell -def cap_vpp_02p4x04p6_m1m2_noshield() -> gf.Component: - """Returns cap_vpp_02p4x04p6_m1m2_noshield fixed cell. +def sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() -> gf.Component: + """Returns sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.cap_vpp_02p4x04p6_m1m2_noshield() + c = sky130.components.sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield() c.plot() """ return import_gds( @@ -5264,15 +5264,15 @@ def cap_vpp_02p4x04p6_m1m2_noshield() -> gf.Component: @cell -def clkinv_8() -> gf.Component: - """Returns clkinv_8 fixed cell. +def sky130_fd_sc_hd__clkinv_8() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkinv_8() + c = sky130.components.sky130_fd_sc_hd__clkinv_8() c.plot() """ return import_gds( @@ -5282,15 +5282,15 @@ def clkinv_8() -> gf.Component: @cell -def clkinv_4() -> gf.Component: - """Returns clkinv_4 fixed cell. +def sky130_fd_sc_hd__clkinv_4() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkinv_4() + c = sky130.components.sky130_fd_sc_hd__clkinv_4() c.plot() """ return import_gds( @@ -5300,15 +5300,15 @@ def clkinv_4() -> gf.Component: @cell -def clkinv_1() -> gf.Component: - """Returns clkinv_1 fixed cell. +def sky130_fd_sc_hd__clkinv_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkinv_1() + c = sky130.components.sky130_fd_sc_hd__clkinv_1() c.plot() """ return import_gds( @@ -5318,15 +5318,15 @@ def clkinv_1() -> gf.Component: @cell -def clkinv_16() -> gf.Component: - """Returns clkinv_16 fixed cell. +def sky130_fd_sc_hd__clkinv_16() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkinv_16() + c = sky130.components.sky130_fd_sc_hd__clkinv_16() c.plot() """ return import_gds( @@ -5336,15 +5336,15 @@ def clkinv_16() -> gf.Component: @cell -def clkinv_2() -> gf.Component: - """Returns clkinv_2 fixed cell. +def sky130_fd_sc_hd__clkinv_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinv_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkinv_2() + c = sky130.components.sky130_fd_sc_hd__clkinv_2() c.plot() """ return import_gds( @@ -5354,15 +5354,15 @@ def clkinv_2() -> gf.Component: @cell -def o311ai_1() -> gf.Component: - """Returns o311ai_1 fixed cell. +def sky130_fd_sc_hd__o311ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o311ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o311ai_1() + c = sky130.components.sky130_fd_sc_hd__o311ai_1() c.plot() """ return import_gds( @@ -5372,15 +5372,15 @@ def o311ai_1() -> gf.Component: @cell -def o311ai_2() -> gf.Component: - """Returns o311ai_2 fixed cell. +def sky130_fd_sc_hd__o311ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o311ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o311ai_2() + c = sky130.components.sky130_fd_sc_hd__o311ai_2() c.plot() """ return import_gds( @@ -5390,15 +5390,15 @@ def o311ai_2() -> gf.Component: @cell -def o311ai_4() -> gf.Component: - """Returns o311ai_4 fixed cell. +def sky130_fd_sc_hd__o311ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o311ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o311ai_4() + c = sky130.components.sky130_fd_sc_hd__o311ai_4() c.plot() """ return import_gds( @@ -5408,15 +5408,15 @@ def o311ai_4() -> gf.Component: @cell -def o311ai_0() -> gf.Component: - """Returns o311ai_0 fixed cell. +def sky130_fd_sc_hd__o311ai_0() -> gf.Component: + """Returns sky130_fd_sc_hd__o311ai_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o311ai_0() + c = sky130.components.sky130_fd_sc_hd__o311ai_0() c.plot() """ return import_gds( @@ -5426,15 +5426,15 @@ def o311ai_0() -> gf.Component: @cell -def dlygate4sd1_1() -> gf.Component: - """Returns dlygate4sd1_1 fixed cell. +def sky130_fd_sc_hd__dlygate4sd1_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlygate4sd1_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlygate4sd1_1() + c = sky130.components.sky130_fd_sc_hd__dlygate4sd1_1() c.plot() """ return import_gds( @@ -5444,15 +5444,15 @@ def dlygate4sd1_1() -> gf.Component: @cell -def einvn_2() -> gf.Component: - """Returns einvn_2 fixed cell. +def sky130_fd_sc_hd__einvn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.einvn_2() + c = sky130.components.sky130_fd_sc_hd__einvn_2() c.plot() """ return import_gds( @@ -5462,15 +5462,15 @@ def einvn_2() -> gf.Component: @cell -def einvn_0() -> gf.Component: - """Returns einvn_0 fixed cell. +def sky130_fd_sc_hd__einvn_0() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.einvn_0() + c = sky130.components.sky130_fd_sc_hd__einvn_0() c.plot() """ return import_gds( @@ -5480,15 +5480,15 @@ def einvn_0() -> gf.Component: @cell -def einvn_8() -> gf.Component: - """Returns einvn_8 fixed cell. +def sky130_fd_sc_hd__einvn_8() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.einvn_8() + c = sky130.components.sky130_fd_sc_hd__einvn_8() c.plot() """ return import_gds( @@ -5498,15 +5498,15 @@ def einvn_8() -> gf.Component: @cell -def einvn_4() -> gf.Component: - """Returns einvn_4 fixed cell. +def sky130_fd_sc_hd__einvn_4() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.einvn_4() + c = sky130.components.sky130_fd_sc_hd__einvn_4() c.plot() """ return import_gds( @@ -5516,15 +5516,15 @@ def einvn_4() -> gf.Component: @cell -def einvn_1() -> gf.Component: - """Returns einvn_1 fixed cell. +def sky130_fd_sc_hd__einvn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__einvn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.einvn_1() + c = sky130.components.sky130_fd_sc_hd__einvn_1() c.plot() """ return import_gds( @@ -5534,15 +5534,15 @@ def einvn_1() -> gf.Component: @cell -def fahcon_1() -> gf.Component: - """Returns fahcon_1 fixed cell. +def sky130_fd_sc_hd__fahcon_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fahcon_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fahcon_1() + c = sky130.components.sky130_fd_sc_hd__fahcon_1() c.plot() """ return import_gds( @@ -5552,15 +5552,15 @@ def fahcon_1() -> gf.Component: @cell -def dlygate4sd3_1() -> gf.Component: - """Returns dlygate4sd3_1 fixed cell. +def sky130_fd_sc_hd__dlygate4sd3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlygate4sd3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlygate4sd3_1() + c = sky130.components.sky130_fd_sc_hd__dlygate4sd3_1() c.plot() """ return import_gds( @@ -5570,15 +5570,15 @@ def dlygate4sd3_1() -> gf.Component: @cell -def clkdlybuf4s15_2() -> gf.Component: - """Returns clkdlybuf4s15_2 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s15_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s15_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkdlybuf4s15_2() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_2() c.plot() """ return import_gds( @@ -5588,15 +5588,15 @@ def clkdlybuf4s15_2() -> gf.Component: @cell -def clkdlybuf4s15_1() -> gf.Component: - """Returns clkdlybuf4s15_1 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s15_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s15_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkdlybuf4s15_1() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s15_1() c.plot() """ return import_gds( @@ -5606,15 +5606,15 @@ def clkdlybuf4s15_1() -> gf.Component: @cell -def a2111o_2() -> gf.Component: - """Returns a2111o_2 fixed cell. +def sky130_fd_sc_hd__a2111o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2111o_2() + c = sky130.components.sky130_fd_sc_hd__a2111o_2() c.plot() """ return import_gds( @@ -5624,15 +5624,15 @@ def a2111o_2() -> gf.Component: @cell -def a2111o_1() -> gf.Component: - """Returns a2111o_1 fixed cell. +def sky130_fd_sc_hd__a2111o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2111o_1() + c = sky130.components.sky130_fd_sc_hd__a2111o_1() c.plot() """ return import_gds( @@ -5642,15 +5642,15 @@ def a2111o_1() -> gf.Component: @cell -def a2111o_4() -> gf.Component: - """Returns a2111o_4 fixed cell. +def sky130_fd_sc_hd__a2111o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2111o_4() + c = sky130.components.sky130_fd_sc_hd__a2111o_4() c.plot() """ return import_gds( @@ -5660,15 +5660,15 @@ def a2111o_4() -> gf.Component: @cell -def o2111ai_1() -> gf.Component: - """Returns o2111ai_1 fixed cell. +def sky130_fd_sc_hd__o2111ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2111ai_1() + c = sky130.components.sky130_fd_sc_hd__o2111ai_1() c.plot() """ return import_gds( @@ -5678,15 +5678,15 @@ def o2111ai_1() -> gf.Component: @cell -def o2111ai_2() -> gf.Component: - """Returns o2111ai_2 fixed cell. +def sky130_fd_sc_hd__o2111ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2111ai_2() + c = sky130.components.sky130_fd_sc_hd__o2111ai_2() c.plot() """ return import_gds( @@ -5696,15 +5696,15 @@ def o2111ai_2() -> gf.Component: @cell -def o2111ai_4() -> gf.Component: - """Returns o2111ai_4 fixed cell. +def sky130_fd_sc_hd__o2111ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2111ai_4() + c = sky130.components.sky130_fd_sc_hd__o2111ai_4() c.plot() """ return import_gds( @@ -5714,15 +5714,15 @@ def o2111ai_4() -> gf.Component: @cell -def sdfxbp_2() -> gf.Component: - """Returns sdfxbp_2 fixed cell. +def sky130_fd_sc_hd__sdfxbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfxbp_2() + c = sky130.components.sky130_fd_sc_hd__sdfxbp_2() c.plot() """ return import_gds( @@ -5732,15 +5732,15 @@ def sdfxbp_2() -> gf.Component: @cell -def sdfxbp_1() -> gf.Component: - """Returns sdfxbp_1 fixed cell. +def sky130_fd_sc_hd__sdfxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfxbp_1() + c = sky130.components.sky130_fd_sc_hd__sdfxbp_1() c.plot() """ return import_gds( @@ -5750,15 +5750,15 @@ def sdfxbp_1() -> gf.Component: @cell -def sdfxtp_2() -> gf.Component: - """Returns sdfxtp_2 fixed cell. +def sky130_fd_sc_hd__sdfxtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfxtp_2() + c = sky130.components.sky130_fd_sc_hd__sdfxtp_2() c.plot() """ return import_gds( @@ -5768,15 +5768,15 @@ def sdfxtp_2() -> gf.Component: @cell -def sdfxtp_1() -> gf.Component: - """Returns sdfxtp_1 fixed cell. +def sky130_fd_sc_hd__sdfxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfxtp_1() + c = sky130.components.sky130_fd_sc_hd__sdfxtp_1() c.plot() """ return import_gds( @@ -5786,15 +5786,15 @@ def sdfxtp_1() -> gf.Component: @cell -def sdfxtp_4() -> gf.Component: - """Returns sdfxtp_4 fixed cell. +def sky130_fd_sc_hd__sdfxtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfxtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfxtp_4() + c = sky130.components.sky130_fd_sc_hd__sdfxtp_4() c.plot() """ return import_gds( @@ -5804,15 +5804,15 @@ def sdfxtp_4() -> gf.Component: @cell -def clkdlybuf4s25_1() -> gf.Component: - """Returns clkdlybuf4s25_1 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s25_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s25_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkdlybuf4s25_1() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_1() c.plot() """ return import_gds( @@ -5822,15 +5822,15 @@ def clkdlybuf4s25_1() -> gf.Component: @cell -def clkdlybuf4s25_2() -> gf.Component: - """Returns clkdlybuf4s25_2 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s25_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s25_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkdlybuf4s25_2() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s25_2() c.plot() """ return import_gds( @@ -5840,15 +5840,15 @@ def clkdlybuf4s25_2() -> gf.Component: @cell -def nand2_8() -> gf.Component: - """Returns nand2_8 fixed cell. +def sky130_fd_sc_hd__nand2_8() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand2_8() + c = sky130.components.sky130_fd_sc_hd__nand2_8() c.plot() """ return import_gds( @@ -5858,15 +5858,15 @@ def nand2_8() -> gf.Component: @cell -def nand2_2() -> gf.Component: - """Returns nand2_2 fixed cell. +def sky130_fd_sc_hd__nand2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand2_2() + c = sky130.components.sky130_fd_sc_hd__nand2_2() c.plot() """ return import_gds( @@ -5876,15 +5876,15 @@ def nand2_2() -> gf.Component: @cell -def nand2_4() -> gf.Component: - """Returns nand2_4 fixed cell. +def sky130_fd_sc_hd__nand2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand2_4() + c = sky130.components.sky130_fd_sc_hd__nand2_4() c.plot() """ return import_gds( @@ -5894,15 +5894,15 @@ def nand2_4() -> gf.Component: @cell -def nand2_1() -> gf.Component: - """Returns nand2_1 fixed cell. +def sky130_fd_sc_hd__nand2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand2_1() + c = sky130.components.sky130_fd_sc_hd__nand2_1() c.plot() """ return import_gds( @@ -5912,15 +5912,15 @@ def nand2_1() -> gf.Component: @cell -def conb_1() -> gf.Component: - """Returns conb_1 fixed cell. +def sky130_fd_sc_hd__conb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__conb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.conb_1() + c = sky130.components.sky130_fd_sc_hd__conb_1() c.plot() """ return import_gds( @@ -5930,15 +5930,15 @@ def conb_1() -> gf.Component: @cell -def a311oi_2() -> gf.Component: - """Returns a311oi_2 fixed cell. +def sky130_fd_sc_hd__a311oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a311oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a311oi_2() + c = sky130.components.sky130_fd_sc_hd__a311oi_2() c.plot() """ return import_gds( @@ -5948,15 +5948,15 @@ def a311oi_2() -> gf.Component: @cell -def a311oi_1() -> gf.Component: - """Returns a311oi_1 fixed cell. +def sky130_fd_sc_hd__a311oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a311oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a311oi_1() + c = sky130.components.sky130_fd_sc_hd__a311oi_1() c.plot() """ return import_gds( @@ -5966,15 +5966,15 @@ def a311oi_1() -> gf.Component: @cell -def a311oi_4() -> gf.Component: - """Returns a311oi_4 fixed cell. +def sky130_fd_sc_hd__a311oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a311oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a311oi_4() + c = sky130.components.sky130_fd_sc_hd__a311oi_4() c.plot() """ return import_gds( @@ -5984,15 +5984,15 @@ def a311oi_4() -> gf.Component: @cell -def einvp_2() -> gf.Component: - """Returns einvp_2 fixed cell. +def sky130_fd_sc_hd__einvp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__einvp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.einvp_2() + c = sky130.components.sky130_fd_sc_hd__einvp_2() c.plot() """ return import_gds( @@ -6002,15 +6002,15 @@ def einvp_2() -> gf.Component: @cell -def einvp_8() -> gf.Component: - """Returns einvp_8 fixed cell. +def sky130_fd_sc_hd__einvp_8() -> gf.Component: + """Returns sky130_fd_sc_hd__einvp_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.einvp_8() + c = sky130.components.sky130_fd_sc_hd__einvp_8() c.plot() """ return import_gds( @@ -6020,15 +6020,15 @@ def einvp_8() -> gf.Component: @cell -def einvp_1() -> gf.Component: - """Returns einvp_1 fixed cell. +def sky130_fd_sc_hd__einvp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__einvp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.einvp_1() + c = sky130.components.sky130_fd_sc_hd__einvp_1() c.plot() """ return import_gds( @@ -6038,15 +6038,15 @@ def einvp_1() -> gf.Component: @cell -def einvp_4() -> gf.Component: - """Returns einvp_4 fixed cell. +def sky130_fd_sc_hd__einvp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__einvp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.einvp_4() + c = sky130.components.sky130_fd_sc_hd__einvp_4() c.plot() """ return import_gds( @@ -6056,15 +6056,15 @@ def einvp_4() -> gf.Component: @cell -def or4b_4() -> gf.Component: - """Returns or4b_4 fixed cell. +def sky130_fd_sc_hd__or4b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or4b_4() + c = sky130.components.sky130_fd_sc_hd__or4b_4() c.plot() """ return import_gds( @@ -6074,15 +6074,15 @@ def or4b_4() -> gf.Component: @cell -def or4b_1() -> gf.Component: - """Returns or4b_1 fixed cell. +def sky130_fd_sc_hd__or4b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or4b_1() + c = sky130.components.sky130_fd_sc_hd__or4b_1() c.plot() """ return import_gds( @@ -6092,15 +6092,15 @@ def or4b_1() -> gf.Component: @cell -def or4b_2() -> gf.Component: - """Returns or4b_2 fixed cell. +def sky130_fd_sc_hd__or4b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or4b_2() + c = sky130.components.sky130_fd_sc_hd__or4b_2() c.plot() """ return import_gds( @@ -6110,15 +6110,15 @@ def or4b_2() -> gf.Component: @cell -def lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: - """Returns lpflow_lsbuf_lh_isowell_tap_4 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_lsbuf_lh_isowell_tap_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4() c.plot() """ return import_gds( @@ -6128,15 +6128,15 @@ def lpflow_lsbuf_lh_isowell_tap_4() -> gf.Component: @cell -def lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: - """Returns lpflow_lsbuf_lh_isowell_tap_2 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_lsbuf_lh_isowell_tap_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2() c.plot() """ return import_gds( @@ -6146,15 +6146,15 @@ def lpflow_lsbuf_lh_isowell_tap_2() -> gf.Component: @cell -def lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: - """Returns lpflow_lsbuf_lh_isowell_tap_1 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_lsbuf_lh_isowell_tap_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1() c.plot() """ return import_gds( @@ -6164,15 +6164,15 @@ def lpflow_lsbuf_lh_isowell_tap_1() -> gf.Component: @cell -def tapvgnd2_1() -> gf.Component: - """Returns tapvgnd2_1 fixed cell. +def sky130_fd_sc_hd__tapvgnd2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__tapvgnd2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.tapvgnd2_1() + c = sky130.components.sky130_fd_sc_hd__tapvgnd2_1() c.plot() """ return import_gds( @@ -6182,15 +6182,15 @@ def tapvgnd2_1() -> gf.Component: @cell -def tap_2() -> gf.Component: - """Returns tap_2 fixed cell. +def sky130_fd_sc_hd__tap_2() -> gf.Component: + """Returns sky130_fd_sc_hd__tap_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.tap_2() + c = sky130.components.sky130_fd_sc_hd__tap_2() c.plot() """ return import_gds( @@ -6200,15 +6200,15 @@ def tap_2() -> gf.Component: @cell -def tap_1() -> gf.Component: - """Returns tap_1 fixed cell. +def sky130_fd_sc_hd__tap_1() -> gf.Component: + """Returns sky130_fd_sc_hd__tap_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.tap_1() + c = sky130.components.sky130_fd_sc_hd__tap_1() c.plot() """ return import_gds( @@ -6218,15 +6218,15 @@ def tap_1() -> gf.Component: @cell -def o22ai_2() -> gf.Component: - """Returns o22ai_2 fixed cell. +def sky130_fd_sc_hd__o22ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o22ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o22ai_2() + c = sky130.components.sky130_fd_sc_hd__o22ai_2() c.plot() """ return import_gds( @@ -6236,15 +6236,15 @@ def o22ai_2() -> gf.Component: @cell -def o22ai_4() -> gf.Component: - """Returns o22ai_4 fixed cell. +def sky130_fd_sc_hd__o22ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o22ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o22ai_4() + c = sky130.components.sky130_fd_sc_hd__o22ai_4() c.plot() """ return import_gds( @@ -6254,15 +6254,15 @@ def o22ai_4() -> gf.Component: @cell -def o22ai_1() -> gf.Component: - """Returns o22ai_1 fixed cell. +def sky130_fd_sc_hd__o22ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o22ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o22ai_1() + c = sky130.components.sky130_fd_sc_hd__o22ai_1() c.plot() """ return import_gds( @@ -6272,15 +6272,15 @@ def o22ai_1() -> gf.Component: @cell -def dlymetal6s4s_1() -> gf.Component: - """Returns dlymetal6s4s_1 fixed cell. +def sky130_fd_sc_hd__dlymetal6s4s_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlymetal6s4s_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlymetal6s4s_1() + c = sky130.components.sky130_fd_sc_hd__dlymetal6s4s_1() c.plot() """ return import_gds( @@ -6290,15 +6290,15 @@ def dlymetal6s4s_1() -> gf.Component: @cell -def o31ai_1() -> gf.Component: - """Returns o31ai_1 fixed cell. +def sky130_fd_sc_hd__o31ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o31ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o31ai_1() + c = sky130.components.sky130_fd_sc_hd__o31ai_1() c.plot() """ return import_gds( @@ -6308,15 +6308,15 @@ def o31ai_1() -> gf.Component: @cell -def o31ai_2() -> gf.Component: - """Returns o31ai_2 fixed cell. +def sky130_fd_sc_hd__o31ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o31ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o31ai_2() + c = sky130.components.sky130_fd_sc_hd__o31ai_2() c.plot() """ return import_gds( @@ -6326,15 +6326,15 @@ def o31ai_2() -> gf.Component: @cell -def o31ai_4() -> gf.Component: - """Returns o31ai_4 fixed cell. +def sky130_fd_sc_hd__o31ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o31ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o31ai_4() + c = sky130.components.sky130_fd_sc_hd__o31ai_4() c.plot() """ return import_gds( @@ -6344,15 +6344,15 @@ def o31ai_4() -> gf.Component: @cell -def a22oi_2() -> gf.Component: - """Returns a22oi_2 fixed cell. +def sky130_fd_sc_hd__a22oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a22oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a22oi_2() + c = sky130.components.sky130_fd_sc_hd__a22oi_2() c.plot() """ return import_gds( @@ -6362,15 +6362,15 @@ def a22oi_2() -> gf.Component: @cell -def a22oi_1() -> gf.Component: - """Returns a22oi_1 fixed cell. +def sky130_fd_sc_hd__a22oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a22oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a22oi_1() + c = sky130.components.sky130_fd_sc_hd__a22oi_1() c.plot() """ return import_gds( @@ -6380,15 +6380,15 @@ def a22oi_1() -> gf.Component: @cell -def a22oi_4() -> gf.Component: - """Returns a22oi_4 fixed cell. +def sky130_fd_sc_hd__a22oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a22oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a22oi_4() + c = sky130.components.sky130_fd_sc_hd__a22oi_4() c.plot() """ return import_gds( @@ -6398,15 +6398,15 @@ def a22oi_4() -> gf.Component: @cell -def a21o_4() -> gf.Component: - """Returns a21o_4 fixed cell. +def sky130_fd_sc_hd__a21o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a21o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21o_4() + c = sky130.components.sky130_fd_sc_hd__a21o_4() c.plot() """ return import_gds( @@ -6416,15 +6416,15 @@ def a21o_4() -> gf.Component: @cell -def a21o_2() -> gf.Component: - """Returns a21o_2 fixed cell. +def sky130_fd_sc_hd__a21o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a21o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21o_2() + c = sky130.components.sky130_fd_sc_hd__a21o_2() c.plot() """ return import_gds( @@ -6434,15 +6434,15 @@ def a21o_2() -> gf.Component: @cell -def a21o_1() -> gf.Component: - """Returns a21o_1 fixed cell. +def sky130_fd_sc_hd__a21o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a21o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21o_1() + c = sky130.components.sky130_fd_sc_hd__a21o_1() c.plot() """ return import_gds( @@ -6452,15 +6452,15 @@ def a21o_1() -> gf.Component: @cell -def mux2i_4() -> gf.Component: - """Returns mux2i_4 fixed cell. +def sky130_fd_sc_hd__mux2i_4() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2i_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux2i_4() + c = sky130.components.sky130_fd_sc_hd__mux2i_4() c.plot() """ return import_gds( @@ -6470,15 +6470,15 @@ def mux2i_4() -> gf.Component: @cell -def mux2i_2() -> gf.Component: - """Returns mux2i_2 fixed cell. +def sky130_fd_sc_hd__mux2i_2() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2i_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux2i_2() + c = sky130.components.sky130_fd_sc_hd__mux2i_2() c.plot() """ return import_gds( @@ -6488,15 +6488,15 @@ def mux2i_2() -> gf.Component: @cell -def mux2i_1() -> gf.Component: - """Returns mux2i_1 fixed cell. +def sky130_fd_sc_hd__mux2i_1() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2i_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux2i_1() + c = sky130.components.sky130_fd_sc_hd__mux2i_1() c.plot() """ return import_gds( @@ -6506,15 +6506,15 @@ def mux2i_1() -> gf.Component: @cell -def nor4b_2() -> gf.Component: - """Returns nor4b_2 fixed cell. +def sky130_fd_sc_hd__nor4b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor4b_2() + c = sky130.components.sky130_fd_sc_hd__nor4b_2() c.plot() """ return import_gds( @@ -6524,15 +6524,15 @@ def nor4b_2() -> gf.Component: @cell -def nor4b_1() -> gf.Component: - """Returns nor4b_1 fixed cell. +def sky130_fd_sc_hd__nor4b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor4b_1() + c = sky130.components.sky130_fd_sc_hd__nor4b_1() c.plot() """ return import_gds( @@ -6542,15 +6542,15 @@ def nor4b_1() -> gf.Component: @cell -def nor4b_4() -> gf.Component: - """Returns nor4b_4 fixed cell. +def sky130_fd_sc_hd__nor4b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor4b_4() + c = sky130.components.sky130_fd_sc_hd__nor4b_4() c.plot() """ return import_gds( @@ -6560,15 +6560,15 @@ def nor4b_4() -> gf.Component: @cell -def a211o_4() -> gf.Component: - """Returns a211o_4 fixed cell. +def sky130_fd_sc_hd__a211o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a211o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a211o_4() + c = sky130.components.sky130_fd_sc_hd__a211o_4() c.plot() """ return import_gds( @@ -6578,15 +6578,15 @@ def a211o_4() -> gf.Component: @cell -def a211o_2() -> gf.Component: - """Returns a211o_2 fixed cell. +def sky130_fd_sc_hd__a211o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a211o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a211o_2() + c = sky130.components.sky130_fd_sc_hd__a211o_2() c.plot() """ return import_gds( @@ -6596,15 +6596,15 @@ def a211o_2() -> gf.Component: @cell -def a211o_1() -> gf.Component: - """Returns a211o_1 fixed cell. +def sky130_fd_sc_hd__a211o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a211o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a211o_1() + c = sky130.components.sky130_fd_sc_hd__a211o_1() c.plot() """ return import_gds( @@ -6614,15 +6614,15 @@ def a211o_1() -> gf.Component: @cell -def dfxtp_2() -> gf.Component: - """Returns dfxtp_2 fixed cell. +def sky130_fd_sc_hd__dfxtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfxtp_2() + c = sky130.components.sky130_fd_sc_hd__dfxtp_2() c.plot() """ return import_gds( @@ -6632,15 +6632,15 @@ def dfxtp_2() -> gf.Component: @cell -def dfxtp_1() -> gf.Component: - """Returns dfxtp_1 fixed cell. +def sky130_fd_sc_hd__dfxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfxtp_1() + c = sky130.components.sky130_fd_sc_hd__dfxtp_1() c.plot() """ return import_gds( @@ -6650,15 +6650,15 @@ def dfxtp_1() -> gf.Component: @cell -def dfxtp_4() -> gf.Component: - """Returns dfxtp_4 fixed cell. +def sky130_fd_sc_hd__dfxtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfxtp_4() + c = sky130.components.sky130_fd_sc_hd__dfxtp_4() c.plot() """ return import_gds( @@ -6668,15 +6668,15 @@ def dfxtp_4() -> gf.Component: @cell -def dfstp_4() -> gf.Component: - """Returns dfstp_4 fixed cell. +def sky130_fd_sc_hd__dfstp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dfstp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfstp_4() + c = sky130.components.sky130_fd_sc_hd__dfstp_4() c.plot() """ return import_gds( @@ -6686,15 +6686,15 @@ def dfstp_4() -> gf.Component: @cell -def dfstp_2() -> gf.Component: - """Returns dfstp_2 fixed cell. +def sky130_fd_sc_hd__dfstp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfstp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfstp_2() + c = sky130.components.sky130_fd_sc_hd__dfstp_2() c.plot() """ return import_gds( @@ -6704,15 +6704,15 @@ def dfstp_2() -> gf.Component: @cell -def dfstp_1() -> gf.Component: - """Returns dfstp_1 fixed cell. +def sky130_fd_sc_hd__dfstp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfstp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfstp_1() + c = sky130.components.sky130_fd_sc_hd__dfstp_1() c.plot() """ return import_gds( @@ -6722,15 +6722,15 @@ def dfstp_1() -> gf.Component: @cell -def lpflow_inputiso0p_1() -> gf.Component: - """Returns lpflow_inputiso0p_1 fixed cell. +def sky130_fd_sc_hd__lpflow_inputiso0p_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputiso0p_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_inputiso0p_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0p_1() c.plot() """ return import_gds( @@ -6740,15 +6740,15 @@ def lpflow_inputiso0p_1() -> gf.Component: @cell -def o211ai_4() -> gf.Component: - """Returns o211ai_4 fixed cell. +def sky130_fd_sc_hd__o211ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o211ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o211ai_4() + c = sky130.components.sky130_fd_sc_hd__o211ai_4() c.plot() """ return import_gds( @@ -6758,15 +6758,15 @@ def o211ai_4() -> gf.Component: @cell -def o211ai_2() -> gf.Component: - """Returns o211ai_2 fixed cell. +def sky130_fd_sc_hd__o211ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o211ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o211ai_2() + c = sky130.components.sky130_fd_sc_hd__o211ai_2() c.plot() """ return import_gds( @@ -6776,15 +6776,15 @@ def o211ai_2() -> gf.Component: @cell -def o211ai_1() -> gf.Component: - """Returns o211ai_1 fixed cell. +def sky130_fd_sc_hd__o211ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o211ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o211ai_1() + c = sky130.components.sky130_fd_sc_hd__o211ai_1() c.plot() """ return import_gds( @@ -6794,15 +6794,15 @@ def o211ai_1() -> gf.Component: @cell -def dfrbp_2() -> gf.Component: - """Returns dfrbp_2 fixed cell. +def sky130_fd_sc_hd__dfrbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfrbp_2() + c = sky130.components.sky130_fd_sc_hd__dfrbp_2() c.plot() """ return import_gds( @@ -6812,15 +6812,15 @@ def dfrbp_2() -> gf.Component: @cell -def dfrbp_1() -> gf.Component: - """Returns dfrbp_1 fixed cell. +def sky130_fd_sc_hd__dfrbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfrbp_1() + c = sky130.components.sky130_fd_sc_hd__dfrbp_1() c.plot() """ return import_gds( @@ -6830,15 +6830,15 @@ def dfrbp_1() -> gf.Component: @cell -def o211a_4() -> gf.Component: - """Returns o211a_4 fixed cell. +def sky130_fd_sc_hd__o211a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o211a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o211a_4() + c = sky130.components.sky130_fd_sc_hd__o211a_4() c.plot() """ return import_gds( @@ -6848,15 +6848,15 @@ def o211a_4() -> gf.Component: @cell -def o211a_1() -> gf.Component: - """Returns o211a_1 fixed cell. +def sky130_fd_sc_hd__o211a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o211a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o211a_1() + c = sky130.components.sky130_fd_sc_hd__o211a_1() c.plot() """ return import_gds( @@ -6866,15 +6866,15 @@ def o211a_1() -> gf.Component: @cell -def o211a_2() -> gf.Component: - """Returns o211a_2 fixed cell. +def sky130_fd_sc_hd__o211a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o211a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o211a_2() + c = sky130.components.sky130_fd_sc_hd__o211a_2() c.plot() """ return import_gds( @@ -6884,15 +6884,15 @@ def o211a_2() -> gf.Component: @cell -def edfxbp_1() -> gf.Component: - """Returns edfxbp_1 fixed cell. +def sky130_fd_sc_hd__edfxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__edfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.edfxbp_1() + c = sky130.components.sky130_fd_sc_hd__edfxbp_1() c.plot() """ return import_gds( @@ -6902,15 +6902,15 @@ def edfxbp_1() -> gf.Component: @cell -def or2_0() -> gf.Component: - """Returns or2_0 fixed cell. +def sky130_fd_sc_hd__or2_0() -> gf.Component: + """Returns sky130_fd_sc_hd__or2_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or2_0() + c = sky130.components.sky130_fd_sc_hd__or2_0() c.plot() """ return import_gds( @@ -6920,15 +6920,15 @@ def or2_0() -> gf.Component: @cell -def or2_4() -> gf.Component: - """Returns or2_4 fixed cell. +def sky130_fd_sc_hd__or2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or2_4() + c = sky130.components.sky130_fd_sc_hd__or2_4() c.plot() """ return import_gds( @@ -6938,15 +6938,15 @@ def or2_4() -> gf.Component: @cell -def or2_1() -> gf.Component: - """Returns or2_1 fixed cell. +def sky130_fd_sc_hd__or2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or2_1() + c = sky130.components.sky130_fd_sc_hd__or2_1() c.plot() """ return import_gds( @@ -6956,15 +6956,15 @@ def or2_1() -> gf.Component: @cell -def or2_2() -> gf.Component: - """Returns or2_2 fixed cell. +def sky130_fd_sc_hd__or2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or2_2() + c = sky130.components.sky130_fd_sc_hd__or2_2() c.plot() """ return import_gds( @@ -6974,15 +6974,15 @@ def or2_2() -> gf.Component: @cell -def nor4_2() -> gf.Component: - """Returns nor4_2 fixed cell. +def sky130_fd_sc_hd__nor4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor4_2() + c = sky130.components.sky130_fd_sc_hd__nor4_2() c.plot() """ return import_gds( @@ -6992,15 +6992,15 @@ def nor4_2() -> gf.Component: @cell -def nor4_1() -> gf.Component: - """Returns nor4_1 fixed cell. +def sky130_fd_sc_hd__nor4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor4_1() + c = sky130.components.sky130_fd_sc_hd__nor4_1() c.plot() """ return import_gds( @@ -7010,15 +7010,15 @@ def nor4_1() -> gf.Component: @cell -def nor4_4() -> gf.Component: - """Returns nor4_4 fixed cell. +def sky130_fd_sc_hd__nor4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor4_4() + c = sky130.components.sky130_fd_sc_hd__nor4_4() c.plot() """ return import_gds( @@ -7028,15 +7028,15 @@ def nor4_4() -> gf.Component: @cell -def dlxtn_2() -> gf.Component: - """Returns dlxtn_2 fixed cell. +def sky130_fd_sc_hd__dlxtn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxtn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlxtn_2() + c = sky130.components.sky130_fd_sc_hd__dlxtn_2() c.plot() """ return import_gds( @@ -7046,15 +7046,15 @@ def dlxtn_2() -> gf.Component: @cell -def dlxtn_4() -> gf.Component: - """Returns dlxtn_4 fixed cell. +def sky130_fd_sc_hd__dlxtn_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxtn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlxtn_4() + c = sky130.components.sky130_fd_sc_hd__dlxtn_4() c.plot() """ return import_gds( @@ -7064,15 +7064,15 @@ def dlxtn_4() -> gf.Component: @cell -def dlxtn_1() -> gf.Component: - """Returns dlxtn_1 fixed cell. +def sky130_fd_sc_hd__dlxtn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlxtn_1() + c = sky130.components.sky130_fd_sc_hd__dlxtn_1() c.plot() """ return import_gds( @@ -7082,15 +7082,15 @@ def dlxtn_1() -> gf.Component: @cell -def a41o_4() -> gf.Component: - """Returns a41o_4 fixed cell. +def sky130_fd_sc_hd__a41o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a41o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a41o_4() + c = sky130.components.sky130_fd_sc_hd__a41o_4() c.plot() """ return import_gds( @@ -7100,15 +7100,15 @@ def a41o_4() -> gf.Component: @cell -def a41o_2() -> gf.Component: - """Returns a41o_2 fixed cell. +def sky130_fd_sc_hd__a41o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a41o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a41o_2() + c = sky130.components.sky130_fd_sc_hd__a41o_2() c.plot() """ return import_gds( @@ -7118,15 +7118,15 @@ def a41o_2() -> gf.Component: @cell -def a41o_1() -> gf.Component: - """Returns a41o_1 fixed cell. +def sky130_fd_sc_hd__a41o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a41o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a41o_1() + c = sky130.components.sky130_fd_sc_hd__a41o_1() c.plot() """ return import_gds( @@ -7136,15 +7136,15 @@ def a41o_1() -> gf.Component: @cell -def a21boi_1() -> gf.Component: - """Returns a21boi_1 fixed cell. +def sky130_fd_sc_hd__a21boi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a21boi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21boi_1() + c = sky130.components.sky130_fd_sc_hd__a21boi_1() c.plot() """ return import_gds( @@ -7154,15 +7154,15 @@ def a21boi_1() -> gf.Component: @cell -def a21boi_2() -> gf.Component: - """Returns a21boi_2 fixed cell. +def sky130_fd_sc_hd__a21boi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a21boi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21boi_2() + c = sky130.components.sky130_fd_sc_hd__a21boi_2() c.plot() """ return import_gds( @@ -7172,15 +7172,15 @@ def a21boi_2() -> gf.Component: @cell -def a21boi_0() -> gf.Component: - """Returns a21boi_0 fixed cell. +def sky130_fd_sc_hd__a21boi_0() -> gf.Component: + """Returns sky130_fd_sc_hd__a21boi_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21boi_0() + c = sky130.components.sky130_fd_sc_hd__a21boi_0() c.plot() """ return import_gds( @@ -7190,15 +7190,15 @@ def a21boi_0() -> gf.Component: @cell -def a21boi_4() -> gf.Component: - """Returns a21boi_4 fixed cell. +def sky130_fd_sc_hd__a21boi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a21boi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21boi_4() + c = sky130.components.sky130_fd_sc_hd__a21boi_4() c.plot() """ return import_gds( @@ -7208,15 +7208,15 @@ def a21boi_4() -> gf.Component: @cell -def o32a_2() -> gf.Component: - """Returns o32a_2 fixed cell. +def sky130_fd_sc_hd__o32a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o32a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o32a_2() + c = sky130.components.sky130_fd_sc_hd__o32a_2() c.plot() """ return import_gds( @@ -7226,15 +7226,15 @@ def o32a_2() -> gf.Component: @cell -def o32a_1() -> gf.Component: - """Returns o32a_1 fixed cell. +def sky130_fd_sc_hd__o32a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o32a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o32a_1() + c = sky130.components.sky130_fd_sc_hd__o32a_1() c.plot() """ return import_gds( @@ -7244,15 +7244,15 @@ def o32a_1() -> gf.Component: @cell -def o32a_4() -> gf.Component: - """Returns o32a_4 fixed cell. +def sky130_fd_sc_hd__o32a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o32a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o32a_4() + c = sky130.components.sky130_fd_sc_hd__o32a_4() c.plot() """ return import_gds( @@ -7262,15 +7262,15 @@ def o32a_4() -> gf.Component: @cell -def lpflow_clkbufkapwr_2() -> gf.Component: - """Returns lpflow_clkbufkapwr_2 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkbufkapwr_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_2() c.plot() """ return import_gds( @@ -7280,15 +7280,15 @@ def lpflow_clkbufkapwr_2() -> gf.Component: @cell -def lpflow_clkbufkapwr_1() -> gf.Component: - """Returns lpflow_clkbufkapwr_1 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkbufkapwr_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_1() c.plot() """ return import_gds( @@ -7298,15 +7298,15 @@ def lpflow_clkbufkapwr_1() -> gf.Component: @cell -def lpflow_clkbufkapwr_16() -> gf.Component: - """Returns lpflow_clkbufkapwr_16 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_16() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkbufkapwr_16() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_16() c.plot() """ return import_gds( @@ -7316,15 +7316,15 @@ def lpflow_clkbufkapwr_16() -> gf.Component: @cell -def lpflow_clkbufkapwr_4() -> gf.Component: - """Returns lpflow_clkbufkapwr_4 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkbufkapwr_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_4() c.plot() """ return import_gds( @@ -7334,15 +7334,15 @@ def lpflow_clkbufkapwr_4() -> gf.Component: @cell -def lpflow_clkbufkapwr_8() -> gf.Component: - """Returns lpflow_clkbufkapwr_8 fixed cell. +def sky130_fd_sc_hd__lpflow_clkbufkapwr_8() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkbufkapwr_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkbufkapwr_8() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkbufkapwr_8() c.plot() """ return import_gds( @@ -7352,15 +7352,15 @@ def lpflow_clkbufkapwr_8() -> gf.Component: @cell -def nor2b_4() -> gf.Component: - """Returns nor2b_4 fixed cell. +def sky130_fd_sc_hd__nor2b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor2b_4() + c = sky130.components.sky130_fd_sc_hd__nor2b_4() c.plot() """ return import_gds( @@ -7370,15 +7370,15 @@ def nor2b_4() -> gf.Component: @cell -def nor2b_2() -> gf.Component: - """Returns nor2b_2 fixed cell. +def sky130_fd_sc_hd__nor2b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor2b_2() + c = sky130.components.sky130_fd_sc_hd__nor2b_2() c.plot() """ return import_gds( @@ -7388,15 +7388,15 @@ def nor2b_2() -> gf.Component: @cell -def nor2b_1() -> gf.Component: - """Returns nor2b_1 fixed cell. +def sky130_fd_sc_hd__nor2b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor2b_1() + c = sky130.components.sky130_fd_sc_hd__nor2b_1() c.plot() """ return import_gds( @@ -7406,15 +7406,15 @@ def nor2b_1() -> gf.Component: @cell -def mux2_2() -> gf.Component: - """Returns mux2_2 fixed cell. +def sky130_fd_sc_hd__mux2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux2_2() + c = sky130.components.sky130_fd_sc_hd__mux2_2() c.plot() """ return import_gds( @@ -7424,15 +7424,15 @@ def mux2_2() -> gf.Component: @cell -def mux2_4() -> gf.Component: - """Returns mux2_4 fixed cell. +def sky130_fd_sc_hd__mux2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux2_4() + c = sky130.components.sky130_fd_sc_hd__mux2_4() c.plot() """ return import_gds( @@ -7442,15 +7442,15 @@ def mux2_4() -> gf.Component: @cell -def mux2_1() -> gf.Component: - """Returns mux2_1 fixed cell. +def sky130_fd_sc_hd__mux2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux2_1() + c = sky130.components.sky130_fd_sc_hd__mux2_1() c.plot() """ return import_gds( @@ -7460,15 +7460,15 @@ def mux2_1() -> gf.Component: @cell -def mux2_8() -> gf.Component: - """Returns mux2_8 fixed cell. +def sky130_fd_sc_hd__mux2_8() -> gf.Component: + """Returns sky130_fd_sc_hd__mux2_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux2_8() + c = sky130.components.sky130_fd_sc_hd__mux2_8() c.plot() """ return import_gds( @@ -7478,15 +7478,15 @@ def mux2_8() -> gf.Component: @cell -def o22a_2() -> gf.Component: - """Returns o22a_2 fixed cell. +def sky130_fd_sc_hd__o22a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o22a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o22a_2() + c = sky130.components.sky130_fd_sc_hd__o22a_2() c.plot() """ return import_gds( @@ -7496,15 +7496,15 @@ def o22a_2() -> gf.Component: @cell -def o22a_4() -> gf.Component: - """Returns o22a_4 fixed cell. +def sky130_fd_sc_hd__o22a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o22a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o22a_4() + c = sky130.components.sky130_fd_sc_hd__o22a_4() c.plot() """ return import_gds( @@ -7514,15 +7514,15 @@ def o22a_4() -> gf.Component: @cell -def o22a_1() -> gf.Component: - """Returns o22a_1 fixed cell. +def sky130_fd_sc_hd__o22a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o22a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o22a_1() + c = sky130.components.sky130_fd_sc_hd__o22a_1() c.plot() """ return import_gds( @@ -7532,15 +7532,15 @@ def o22a_1() -> gf.Component: @cell -def a22o_1() -> gf.Component: - """Returns a22o_1 fixed cell. +def sky130_fd_sc_hd__a22o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a22o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a22o_1() + c = sky130.components.sky130_fd_sc_hd__a22o_1() c.plot() """ return import_gds( @@ -7550,15 +7550,15 @@ def a22o_1() -> gf.Component: @cell -def a22o_4() -> gf.Component: - """Returns a22o_4 fixed cell. +def sky130_fd_sc_hd__a22o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a22o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a22o_4() + c = sky130.components.sky130_fd_sc_hd__a22o_4() c.plot() """ return import_gds( @@ -7568,15 +7568,15 @@ def a22o_4() -> gf.Component: @cell -def a22o_2() -> gf.Component: - """Returns a22o_2 fixed cell. +def sky130_fd_sc_hd__a22o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a22o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a22o_2() + c = sky130.components.sky130_fd_sc_hd__a22o_2() c.plot() """ return import_gds( @@ -7586,15 +7586,15 @@ def a22o_2() -> gf.Component: @cell -def dlygate4sd2_1() -> gf.Component: - """Returns dlygate4sd2_1 fixed cell. +def sky130_fd_sc_hd__dlygate4sd2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlygate4sd2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlygate4sd2_1() + c = sky130.components.sky130_fd_sc_hd__dlygate4sd2_1() c.plot() """ return import_gds( @@ -7604,15 +7604,15 @@ def dlygate4sd2_1() -> gf.Component: @cell -def dlrtn_4() -> gf.Component: - """Returns dlrtn_4 fixed cell. +def sky130_fd_sc_hd__dlrtn_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrtn_4() + c = sky130.components.sky130_fd_sc_hd__dlrtn_4() c.plot() """ return import_gds( @@ -7622,15 +7622,15 @@ def dlrtn_4() -> gf.Component: @cell -def dlrtn_2() -> gf.Component: - """Returns dlrtn_2 fixed cell. +def sky130_fd_sc_hd__dlrtn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrtn_2() + c = sky130.components.sky130_fd_sc_hd__dlrtn_2() c.plot() """ return import_gds( @@ -7640,15 +7640,15 @@ def dlrtn_2() -> gf.Component: @cell -def dlrtn_1() -> gf.Component: - """Returns dlrtn_1 fixed cell. +def sky130_fd_sc_hd__dlrtn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrtn_1() + c = sky130.components.sky130_fd_sc_hd__dlrtn_1() c.plot() """ return import_gds( @@ -7658,15 +7658,15 @@ def dlrtn_1() -> gf.Component: @cell -def diode_2() -> gf.Component: - """Returns diode_2 fixed cell. +def sky130_fd_sc_hd__diode_2() -> gf.Component: + """Returns sky130_fd_sc_hd__diode_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.diode_2() + c = sky130.components.sky130_fd_sc_hd__diode_2() c.plot() """ return import_gds( @@ -7676,15 +7676,15 @@ def diode_2() -> gf.Component: @cell -def o21ba_1() -> gf.Component: - """Returns o21ba_1 fixed cell. +def sky130_fd_sc_hd__o21ba_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ba_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21ba_1() + c = sky130.components.sky130_fd_sc_hd__o21ba_1() c.plot() """ return import_gds( @@ -7694,15 +7694,15 @@ def o21ba_1() -> gf.Component: @cell -def o21ba_2() -> gf.Component: - """Returns o21ba_2 fixed cell. +def sky130_fd_sc_hd__o21ba_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ba_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21ba_2() + c = sky130.components.sky130_fd_sc_hd__o21ba_2() c.plot() """ return import_gds( @@ -7712,15 +7712,15 @@ def o21ba_2() -> gf.Component: @cell -def o21ba_4() -> gf.Component: - """Returns o21ba_4 fixed cell. +def sky130_fd_sc_hd__o21ba_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ba_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21ba_4() + c = sky130.components.sky130_fd_sc_hd__o21ba_4() c.plot() """ return import_gds( @@ -7730,15 +7730,15 @@ def o21ba_4() -> gf.Component: @cell -def xor2_4() -> gf.Component: - """Returns xor2_4 fixed cell. +def sky130_fd_sc_hd__xor2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__xor2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xor2_4() + c = sky130.components.sky130_fd_sc_hd__xor2_4() c.plot() """ return import_gds( @@ -7748,15 +7748,15 @@ def xor2_4() -> gf.Component: @cell -def xor2_2() -> gf.Component: - """Returns xor2_2 fixed cell. +def sky130_fd_sc_hd__xor2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__xor2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xor2_2() + c = sky130.components.sky130_fd_sc_hd__xor2_2() c.plot() """ return import_gds( @@ -7766,15 +7766,15 @@ def xor2_2() -> gf.Component: @cell -def xor2_1() -> gf.Component: - """Returns xor2_1 fixed cell. +def sky130_fd_sc_hd__xor2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__xor2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xor2_1() + c = sky130.components.sky130_fd_sc_hd__xor2_1() c.plot() """ return import_gds( @@ -7784,15 +7784,15 @@ def xor2_1() -> gf.Component: @cell -def a41oi_2() -> gf.Component: - """Returns a41oi_2 fixed cell. +def sky130_fd_sc_hd__a41oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a41oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a41oi_2() + c = sky130.components.sky130_fd_sc_hd__a41oi_2() c.plot() """ return import_gds( @@ -7802,15 +7802,15 @@ def a41oi_2() -> gf.Component: @cell -def a41oi_1() -> gf.Component: - """Returns a41oi_1 fixed cell. +def sky130_fd_sc_hd__a41oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a41oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a41oi_1() + c = sky130.components.sky130_fd_sc_hd__a41oi_1() c.plot() """ return import_gds( @@ -7820,15 +7820,15 @@ def a41oi_1() -> gf.Component: @cell -def a41oi_4() -> gf.Component: - """Returns a41oi_4 fixed cell. +def sky130_fd_sc_hd__a41oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a41oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a41oi_4() + c = sky130.components.sky130_fd_sc_hd__a41oi_4() c.plot() """ return import_gds( @@ -7838,15 +7838,15 @@ def a41oi_4() -> gf.Component: @cell -def sdfstp_1() -> gf.Component: - """Returns sdfstp_1 fixed cell. +def sky130_fd_sc_hd__sdfstp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfstp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfstp_1() + c = sky130.components.sky130_fd_sc_hd__sdfstp_1() c.plot() """ return import_gds( @@ -7856,15 +7856,15 @@ def sdfstp_1() -> gf.Component: @cell -def sdfstp_2() -> gf.Component: - """Returns sdfstp_2 fixed cell. +def sky130_fd_sc_hd__sdfstp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfstp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfstp_2() + c = sky130.components.sky130_fd_sc_hd__sdfstp_2() c.plot() """ return import_gds( @@ -7874,15 +7874,15 @@ def sdfstp_2() -> gf.Component: @cell -def sdfstp_4() -> gf.Component: - """Returns sdfstp_4 fixed cell. +def sky130_fd_sc_hd__sdfstp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfstp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfstp_4() + c = sky130.components.sky130_fd_sc_hd__sdfstp_4() c.plot() """ return import_gds( @@ -7892,15 +7892,15 @@ def sdfstp_4() -> gf.Component: @cell -def and4b_2() -> gf.Component: - """Returns and4b_2 fixed cell. +def sky130_fd_sc_hd__and4b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and4b_2() + c = sky130.components.sky130_fd_sc_hd__and4b_2() c.plot() """ return import_gds( @@ -7910,15 +7910,15 @@ def and4b_2() -> gf.Component: @cell -def and4b_4() -> gf.Component: - """Returns and4b_4 fixed cell. +def sky130_fd_sc_hd__and4b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and4b_4() + c = sky130.components.sky130_fd_sc_hd__and4b_4() c.plot() """ return import_gds( @@ -7928,15 +7928,15 @@ def and4b_4() -> gf.Component: @cell -def and4b_1() -> gf.Component: - """Returns and4b_1 fixed cell. +def sky130_fd_sc_hd__and4b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and4b_1() + c = sky130.components.sky130_fd_sc_hd__and4b_1() c.plot() """ return import_gds( @@ -7946,15 +7946,15 @@ def and4b_1() -> gf.Component: @cell -def lpflow_clkinvkapwr_4() -> gf.Component: - """Returns lpflow_clkinvkapwr_4 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkinvkapwr_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_4() c.plot() """ return import_gds( @@ -7964,15 +7964,15 @@ def lpflow_clkinvkapwr_4() -> gf.Component: @cell -def lpflow_clkinvkapwr_1() -> gf.Component: - """Returns lpflow_clkinvkapwr_1 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkinvkapwr_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_1() c.plot() """ return import_gds( @@ -7982,15 +7982,15 @@ def lpflow_clkinvkapwr_1() -> gf.Component: @cell -def lpflow_clkinvkapwr_16() -> gf.Component: - """Returns lpflow_clkinvkapwr_16 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_16() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkinvkapwr_16() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_16() c.plot() """ return import_gds( @@ -8000,15 +8000,15 @@ def lpflow_clkinvkapwr_16() -> gf.Component: @cell -def lpflow_clkinvkapwr_2() -> gf.Component: - """Returns lpflow_clkinvkapwr_2 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkinvkapwr_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_2() c.plot() """ return import_gds( @@ -8018,15 +8018,15 @@ def lpflow_clkinvkapwr_2() -> gf.Component: @cell -def lpflow_clkinvkapwr_8() -> gf.Component: - """Returns lpflow_clkinvkapwr_8 fixed cell. +def sky130_fd_sc_hd__lpflow_clkinvkapwr_8() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_clkinvkapwr_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_clkinvkapwr_8() + c = sky130.components.sky130_fd_sc_hd__lpflow_clkinvkapwr_8() c.plot() """ return import_gds( @@ -8036,15 +8036,15 @@ def lpflow_clkinvkapwr_8() -> gf.Component: @cell -def lpflow_decapkapwr_6() -> gf.Component: - """Returns lpflow_decapkapwr_6 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_6() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_decapkapwr_6() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_6() c.plot() """ return import_gds( @@ -8054,15 +8054,15 @@ def lpflow_decapkapwr_6() -> gf.Component: @cell -def lpflow_decapkapwr_3() -> gf.Component: - """Returns lpflow_decapkapwr_3 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_3() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_decapkapwr_3() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_3() c.plot() """ return import_gds( @@ -8072,15 +8072,15 @@ def lpflow_decapkapwr_3() -> gf.Component: @cell -def lpflow_decapkapwr_8() -> gf.Component: - """Returns lpflow_decapkapwr_8 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_8() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_decapkapwr_8() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_8() c.plot() """ return import_gds( @@ -8090,15 +8090,15 @@ def lpflow_decapkapwr_8() -> gf.Component: @cell -def lpflow_decapkapwr_12() -> gf.Component: - """Returns lpflow_decapkapwr_12 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_12() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_decapkapwr_12() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_12() c.plot() """ return import_gds( @@ -8108,15 +8108,15 @@ def lpflow_decapkapwr_12() -> gf.Component: @cell -def lpflow_decapkapwr_4() -> gf.Component: - """Returns lpflow_decapkapwr_4 fixed cell. +def sky130_fd_sc_hd__lpflow_decapkapwr_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_decapkapwr_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_decapkapwr_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_decapkapwr_4() c.plot() """ return import_gds( @@ -8126,15 +8126,15 @@ def lpflow_decapkapwr_4() -> gf.Component: @cell -def a221oi_4() -> gf.Component: - """Returns a221oi_4 fixed cell. +def sky130_fd_sc_hd__a221oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a221oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a221oi_4() + c = sky130.components.sky130_fd_sc_hd__a221oi_4() c.plot() """ return import_gds( @@ -8144,15 +8144,15 @@ def a221oi_4() -> gf.Component: @cell -def a221oi_1() -> gf.Component: - """Returns a221oi_1 fixed cell. +def sky130_fd_sc_hd__a221oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a221oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a221oi_1() + c = sky130.components.sky130_fd_sc_hd__a221oi_1() c.plot() """ return import_gds( @@ -8162,15 +8162,15 @@ def a221oi_1() -> gf.Component: @cell -def a221oi_2() -> gf.Component: - """Returns a221oi_2 fixed cell. +def sky130_fd_sc_hd__a221oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a221oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a221oi_2() + c = sky130.components.sky130_fd_sc_hd__a221oi_2() c.plot() """ return import_gds( @@ -8180,15 +8180,15 @@ def a221oi_2() -> gf.Component: @cell -def o21bai_1() -> gf.Component: - """Returns o21bai_1 fixed cell. +def sky130_fd_sc_hd__o21bai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o21bai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21bai_1() + c = sky130.components.sky130_fd_sc_hd__o21bai_1() c.plot() """ return import_gds( @@ -8198,15 +8198,15 @@ def o21bai_1() -> gf.Component: @cell -def o21bai_2() -> gf.Component: - """Returns o21bai_2 fixed cell. +def sky130_fd_sc_hd__o21bai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o21bai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21bai_2() + c = sky130.components.sky130_fd_sc_hd__o21bai_2() c.plot() """ return import_gds( @@ -8216,15 +8216,15 @@ def o21bai_2() -> gf.Component: @cell -def o21bai_4() -> gf.Component: - """Returns o21bai_4 fixed cell. +def sky130_fd_sc_hd__o21bai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o21bai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21bai_4() + c = sky130.components.sky130_fd_sc_hd__o21bai_4() c.plot() """ return import_gds( @@ -8234,15 +8234,15 @@ def o21bai_4() -> gf.Component: @cell -def dlxbn_1() -> gf.Component: - """Returns dlxbn_1 fixed cell. +def sky130_fd_sc_hd__dlxbn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlxbn_1() + c = sky130.components.sky130_fd_sc_hd__dlxbn_1() c.plot() """ return import_gds( @@ -8252,15 +8252,15 @@ def dlxbn_1() -> gf.Component: @cell -def dlxbn_2() -> gf.Component: - """Returns dlxbn_2 fixed cell. +def sky130_fd_sc_hd__dlxbn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlxbn_2() + c = sky130.components.sky130_fd_sc_hd__dlxbn_2() c.plot() """ return import_gds( @@ -8270,15 +8270,15 @@ def dlxbn_2() -> gf.Component: @cell -def edfxtp_1() -> gf.Component: - """Returns edfxtp_1 fixed cell. +def sky130_fd_sc_hd__edfxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__edfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.edfxtp_1() + c = sky130.components.sky130_fd_sc_hd__edfxtp_1() c.plot() """ return import_gds( @@ -8288,15 +8288,15 @@ def edfxtp_1() -> gf.Component: @cell -def dfsbp_1() -> gf.Component: - """Returns dfsbp_1 fixed cell. +def sky130_fd_sc_hd__dfsbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfsbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfsbp_1() + c = sky130.components.sky130_fd_sc_hd__dfsbp_1() c.plot() """ return import_gds( @@ -8306,15 +8306,15 @@ def dfsbp_1() -> gf.Component: @cell -def dfsbp_2() -> gf.Component: - """Returns dfsbp_2 fixed cell. +def sky130_fd_sc_hd__dfsbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfsbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfsbp_2() + c = sky130.components.sky130_fd_sc_hd__dfsbp_2() c.plot() """ return import_gds( @@ -8324,15 +8324,15 @@ def dfsbp_2() -> gf.Component: @cell -def nor2_1() -> gf.Component: - """Returns nor2_1 fixed cell. +def sky130_fd_sc_hd__nor2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor2_1() + c = sky130.components.sky130_fd_sc_hd__nor2_1() c.plot() """ return import_gds( @@ -8342,15 +8342,15 @@ def nor2_1() -> gf.Component: @cell -def nor2_4() -> gf.Component: - """Returns nor2_4 fixed cell. +def sky130_fd_sc_hd__nor2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor2_4() + c = sky130.components.sky130_fd_sc_hd__nor2_4() c.plot() """ return import_gds( @@ -8360,15 +8360,15 @@ def nor2_4() -> gf.Component: @cell -def nor2_2() -> gf.Component: - """Returns nor2_2 fixed cell. +def sky130_fd_sc_hd__nor2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor2_2() + c = sky130.components.sky130_fd_sc_hd__nor2_2() c.plot() """ return import_gds( @@ -8378,15 +8378,15 @@ def nor2_2() -> gf.Component: @cell -def nor2_8() -> gf.Component: - """Returns nor2_8 fixed cell. +def sky130_fd_sc_hd__nor2_8() -> gf.Component: + """Returns sky130_fd_sc_hd__nor2_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor2_8() + c = sky130.components.sky130_fd_sc_hd__nor2_8() c.plot() """ return import_gds( @@ -8396,15 +8396,15 @@ def nor2_8() -> gf.Component: @cell -def dfrtp_4() -> gf.Component: - """Returns dfrtp_4 fixed cell. +def sky130_fd_sc_hd__dfrtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfrtp_4() + c = sky130.components.sky130_fd_sc_hd__dfrtp_4() c.plot() """ return import_gds( @@ -8414,15 +8414,15 @@ def dfrtp_4() -> gf.Component: @cell -def dfrtp_2() -> gf.Component: - """Returns dfrtp_2 fixed cell. +def sky130_fd_sc_hd__dfrtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfrtp_2() + c = sky130.components.sky130_fd_sc_hd__dfrtp_2() c.plot() """ return import_gds( @@ -8432,15 +8432,15 @@ def dfrtp_2() -> gf.Component: @cell -def dfrtp_1() -> gf.Component: - """Returns dfrtp_1 fixed cell. +def sky130_fd_sc_hd__dfrtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfrtp_1() + c = sky130.components.sky130_fd_sc_hd__dfrtp_1() c.plot() """ return import_gds( @@ -8450,15 +8450,15 @@ def dfrtp_1() -> gf.Component: @cell -def and4bb_4() -> gf.Component: - """Returns and4bb_4 fixed cell. +def sky130_fd_sc_hd__and4bb_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and4bb_4() + c = sky130.components.sky130_fd_sc_hd__and4bb_4() c.plot() """ return import_gds( @@ -8468,15 +8468,15 @@ def and4bb_4() -> gf.Component: @cell -def and4bb_2() -> gf.Component: - """Returns and4bb_2 fixed cell. +def sky130_fd_sc_hd__and4bb_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and4bb_2() + c = sky130.components.sky130_fd_sc_hd__and4bb_2() c.plot() """ return import_gds( @@ -8486,15 +8486,15 @@ def and4bb_2() -> gf.Component: @cell -def and4bb_1() -> gf.Component: - """Returns and4bb_1 fixed cell. +def sky130_fd_sc_hd__and4bb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and4bb_1() + c = sky130.components.sky130_fd_sc_hd__and4bb_1() c.plot() """ return import_gds( @@ -8504,15 +8504,15 @@ def and4bb_1() -> gf.Component: @cell -def or3b_4() -> gf.Component: - """Returns or3b_4 fixed cell. +def sky130_fd_sc_hd__or3b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or3b_4() + c = sky130.components.sky130_fd_sc_hd__or3b_4() c.plot() """ return import_gds( @@ -8522,15 +8522,15 @@ def or3b_4() -> gf.Component: @cell -def or3b_1() -> gf.Component: - """Returns or3b_1 fixed cell. +def sky130_fd_sc_hd__or3b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or3b_1() + c = sky130.components.sky130_fd_sc_hd__or3b_1() c.plot() """ return import_gds( @@ -8540,15 +8540,15 @@ def or3b_1() -> gf.Component: @cell -def or3b_2() -> gf.Component: - """Returns or3b_2 fixed cell. +def sky130_fd_sc_hd__or3b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or3b_2() + c = sky130.components.sky130_fd_sc_hd__or3b_2() c.plot() """ return import_gds( @@ -8558,15 +8558,15 @@ def or3b_2() -> gf.Component: @cell -def o311a_2() -> gf.Component: - """Returns o311a_2 fixed cell. +def sky130_fd_sc_hd__o311a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o311a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o311a_2() + c = sky130.components.sky130_fd_sc_hd__o311a_2() c.plot() """ return import_gds( @@ -8576,15 +8576,15 @@ def o311a_2() -> gf.Component: @cell -def o311a_4() -> gf.Component: - """Returns o311a_4 fixed cell. +def sky130_fd_sc_hd__o311a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o311a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o311a_4() + c = sky130.components.sky130_fd_sc_hd__o311a_4() c.plot() """ return import_gds( @@ -8594,15 +8594,15 @@ def o311a_4() -> gf.Component: @cell -def o311a_1() -> gf.Component: - """Returns o311a_1 fixed cell. +def sky130_fd_sc_hd__o311a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o311a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o311a_1() + c = sky130.components.sky130_fd_sc_hd__o311a_1() c.plot() """ return import_gds( @@ -8612,15 +8612,15 @@ def o311a_1() -> gf.Component: @cell -def a21oi_1() -> gf.Component: - """Returns a21oi_1 fixed cell. +def sky130_fd_sc_hd__a21oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a21oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21oi_1() + c = sky130.components.sky130_fd_sc_hd__a21oi_1() c.plot() """ return import_gds( @@ -8630,15 +8630,15 @@ def a21oi_1() -> gf.Component: @cell -def a21oi_2() -> gf.Component: - """Returns a21oi_2 fixed cell. +def sky130_fd_sc_hd__a21oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a21oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21oi_2() + c = sky130.components.sky130_fd_sc_hd__a21oi_2() c.plot() """ return import_gds( @@ -8648,15 +8648,15 @@ def a21oi_2() -> gf.Component: @cell -def a21oi_4() -> gf.Component: - """Returns a21oi_4 fixed cell. +def sky130_fd_sc_hd__a21oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a21oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21oi_4() + c = sky130.components.sky130_fd_sc_hd__a21oi_4() c.plot() """ return import_gds( @@ -8666,15 +8666,15 @@ def a21oi_4() -> gf.Component: @cell -def o221ai_4() -> gf.Component: - """Returns o221ai_4 fixed cell. +def sky130_fd_sc_hd__o221ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o221ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o221ai_4() + c = sky130.components.sky130_fd_sc_hd__o221ai_4() c.plot() """ return import_gds( @@ -8684,15 +8684,15 @@ def o221ai_4() -> gf.Component: @cell -def o221ai_2() -> gf.Component: - """Returns o221ai_2 fixed cell. +def sky130_fd_sc_hd__o221ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o221ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o221ai_2() + c = sky130.components.sky130_fd_sc_hd__o221ai_2() c.plot() """ return import_gds( @@ -8702,15 +8702,15 @@ def o221ai_2() -> gf.Component: @cell -def o221ai_1() -> gf.Component: - """Returns o221ai_1 fixed cell. +def sky130_fd_sc_hd__o221ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o221ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o221ai_1() + c = sky130.components.sky130_fd_sc_hd__o221ai_1() c.plot() """ return import_gds( @@ -8720,15 +8720,15 @@ def o221ai_1() -> gf.Component: @cell -def lpflow_inputiso0n_1() -> gf.Component: - """Returns lpflow_inputiso0n_1 fixed cell. +def sky130_fd_sc_hd__lpflow_inputiso0n_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputiso0n_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_inputiso0n_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso0n_1() c.plot() """ return import_gds( @@ -8738,15 +8738,15 @@ def lpflow_inputiso0n_1() -> gf.Component: @cell -def lpflow_inputiso1n_1() -> gf.Component: - """Returns lpflow_inputiso1n_1 fixed cell. +def sky130_fd_sc_hd__lpflow_inputiso1n_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputiso1n_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_inputiso1n_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1n_1() c.plot() """ return import_gds( @@ -8756,15 +8756,15 @@ def lpflow_inputiso1n_1() -> gf.Component: @cell -def nand4bb_2() -> gf.Component: - """Returns nand4bb_2 fixed cell. +def sky130_fd_sc_hd__nand4bb_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand4bb_2() + c = sky130.components.sky130_fd_sc_hd__nand4bb_2() c.plot() """ return import_gds( @@ -8774,15 +8774,15 @@ def nand4bb_2() -> gf.Component: @cell -def nand4bb_4() -> gf.Component: - """Returns nand4bb_4 fixed cell. +def sky130_fd_sc_hd__nand4bb_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand4bb_4() + c = sky130.components.sky130_fd_sc_hd__nand4bb_4() c.plot() """ return import_gds( @@ -8792,15 +8792,15 @@ def nand4bb_4() -> gf.Component: @cell -def nand4bb_1() -> gf.Component: - """Returns nand4bb_1 fixed cell. +def sky130_fd_sc_hd__nand4bb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand4bb_1() + c = sky130.components.sky130_fd_sc_hd__nand4bb_1() c.plot() """ return import_gds( @@ -8810,15 +8810,15 @@ def nand4bb_1() -> gf.Component: @cell -def lpflow_inputisolatch_1() -> gf.Component: - """Returns lpflow_inputisolatch_1 fixed cell. +def sky130_fd_sc_hd__lpflow_inputisolatch_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputisolatch_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_inputisolatch_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputisolatch_1() c.plot() """ return import_gds( @@ -8828,15 +8828,15 @@ def lpflow_inputisolatch_1() -> gf.Component: @cell -def nand3_1() -> gf.Component: - """Returns nand3_1 fixed cell. +def sky130_fd_sc_hd__nand3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand3_1() + c = sky130.components.sky130_fd_sc_hd__nand3_1() c.plot() """ return import_gds( @@ -8846,15 +8846,15 @@ def nand3_1() -> gf.Component: @cell -def nand3_4() -> gf.Component: - """Returns nand3_4 fixed cell. +def sky130_fd_sc_hd__nand3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand3_4() + c = sky130.components.sky130_fd_sc_hd__nand3_4() c.plot() """ return import_gds( @@ -8864,15 +8864,15 @@ def nand3_4() -> gf.Component: @cell -def nand3_2() -> gf.Component: - """Returns nand3_2 fixed cell. +def sky130_fd_sc_hd__nand3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand3_2() + c = sky130.components.sky130_fd_sc_hd__nand3_2() c.plot() """ return import_gds( @@ -8882,15 +8882,15 @@ def nand3_2() -> gf.Component: @cell -def a2bb2oi_1() -> gf.Component: - """Returns a2bb2oi_1 fixed cell. +def sky130_fd_sc_hd__a2bb2oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2bb2oi_1() + c = sky130.components.sky130_fd_sc_hd__a2bb2oi_1() c.plot() """ return import_gds( @@ -8900,15 +8900,15 @@ def a2bb2oi_1() -> gf.Component: @cell -def a2bb2oi_4() -> gf.Component: - """Returns a2bb2oi_4 fixed cell. +def sky130_fd_sc_hd__a2bb2oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2bb2oi_4() + c = sky130.components.sky130_fd_sc_hd__a2bb2oi_4() c.plot() """ return import_gds( @@ -8918,15 +8918,15 @@ def a2bb2oi_4() -> gf.Component: @cell -def a2bb2oi_2() -> gf.Component: - """Returns a2bb2oi_2 fixed cell. +def sky130_fd_sc_hd__a2bb2oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2bb2oi_2() + c = sky130.components.sky130_fd_sc_hd__a2bb2oi_2() c.plot() """ return import_gds( @@ -8936,15 +8936,15 @@ def a2bb2oi_2() -> gf.Component: @cell -def sdfbbp_1() -> gf.Component: - """Returns sdfbbp_1 fixed cell. +def sky130_fd_sc_hd__sdfbbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfbbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfbbp_1() + c = sky130.components.sky130_fd_sc_hd__sdfbbp_1() c.plot() """ return import_gds( @@ -8954,15 +8954,15 @@ def sdfbbp_1() -> gf.Component: @cell -def sedfxtp_4() -> gf.Component: - """Returns sedfxtp_4 fixed cell. +def sky130_fd_sc_hd__sedfxtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sedfxtp_4() + c = sky130.components.sky130_fd_sc_hd__sedfxtp_4() c.plot() """ return import_gds( @@ -8972,15 +8972,15 @@ def sedfxtp_4() -> gf.Component: @cell -def sedfxtp_2() -> gf.Component: - """Returns sedfxtp_2 fixed cell. +def sky130_fd_sc_hd__sedfxtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sedfxtp_2() + c = sky130.components.sky130_fd_sc_hd__sedfxtp_2() c.plot() """ return import_gds( @@ -8990,15 +8990,15 @@ def sedfxtp_2() -> gf.Component: @cell -def sedfxtp_1() -> gf.Component: - """Returns sedfxtp_1 fixed cell. +def sky130_fd_sc_hd__sedfxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sedfxtp_1() + c = sky130.components.sky130_fd_sc_hd__sedfxtp_1() c.plot() """ return import_gds( @@ -9008,15 +9008,15 @@ def sedfxtp_1() -> gf.Component: @cell -def nor4bb_2() -> gf.Component: - """Returns nor4bb_2 fixed cell. +def sky130_fd_sc_hd__nor4bb_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor4bb_2() + c = sky130.components.sky130_fd_sc_hd__nor4bb_2() c.plot() """ return import_gds( @@ -9026,15 +9026,15 @@ def nor4bb_2() -> gf.Component: @cell -def nor4bb_1() -> gf.Component: - """Returns nor4bb_1 fixed cell. +def sky130_fd_sc_hd__nor4bb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor4bb_1() + c = sky130.components.sky130_fd_sc_hd__nor4bb_1() c.plot() """ return import_gds( @@ -9044,15 +9044,15 @@ def nor4bb_1() -> gf.Component: @cell -def nor4bb_4() -> gf.Component: - """Returns nor4bb_4 fixed cell. +def sky130_fd_sc_hd__nor4bb_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor4bb_4() + c = sky130.components.sky130_fd_sc_hd__nor4bb_4() c.plot() """ return import_gds( @@ -9062,15 +9062,15 @@ def nor4bb_4() -> gf.Component: @cell -def buf_8() -> gf.Component: - """Returns buf_8 fixed cell. +def sky130_fd_sc_hd__buf_8() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.buf_8() + c = sky130.components.sky130_fd_sc_hd__buf_8() c.plot() """ return import_gds( @@ -9080,15 +9080,15 @@ def buf_8() -> gf.Component: @cell -def buf_2() -> gf.Component: - """Returns buf_2 fixed cell. +def sky130_fd_sc_hd__buf_2() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.buf_2() + c = sky130.components.sky130_fd_sc_hd__buf_2() c.plot() """ return import_gds( @@ -9098,15 +9098,15 @@ def buf_2() -> gf.Component: @cell -def buf_6() -> gf.Component: - """Returns buf_6 fixed cell. +def sky130_fd_sc_hd__buf_6() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.buf_6() + c = sky130.components.sky130_fd_sc_hd__buf_6() c.plot() """ return import_gds( @@ -9116,15 +9116,15 @@ def buf_6() -> gf.Component: @cell -def buf_16() -> gf.Component: - """Returns buf_16 fixed cell. +def sky130_fd_sc_hd__buf_16() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.buf_16() + c = sky130.components.sky130_fd_sc_hd__buf_16() c.plot() """ return import_gds( @@ -9134,15 +9134,15 @@ def buf_16() -> gf.Component: @cell -def buf_1() -> gf.Component: - """Returns buf_1 fixed cell. +def sky130_fd_sc_hd__buf_1() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.buf_1() + c = sky130.components.sky130_fd_sc_hd__buf_1() c.plot() """ return import_gds( @@ -9152,15 +9152,15 @@ def buf_1() -> gf.Component: @cell -def buf_4() -> gf.Component: - """Returns buf_4 fixed cell. +def sky130_fd_sc_hd__buf_4() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.buf_4() + c = sky130.components.sky130_fd_sc_hd__buf_4() c.plot() """ return import_gds( @@ -9170,15 +9170,15 @@ def buf_4() -> gf.Component: @cell -def buf_12() -> gf.Component: - """Returns buf_12 fixed cell. +def sky130_fd_sc_hd__buf_12() -> gf.Component: + """Returns sky130_fd_sc_hd__buf_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.buf_12() + c = sky130.components.sky130_fd_sc_hd__buf_12() c.plot() """ return import_gds( @@ -9188,15 +9188,15 @@ def buf_12() -> gf.Component: @cell -def or2b_1() -> gf.Component: - """Returns or2b_1 fixed cell. +def sky130_fd_sc_hd__or2b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or2b_1() + c = sky130.components.sky130_fd_sc_hd__or2b_1() c.plot() """ return import_gds( @@ -9206,15 +9206,15 @@ def or2b_1() -> gf.Component: @cell -def or2b_2() -> gf.Component: - """Returns or2b_2 fixed cell. +def sky130_fd_sc_hd__or2b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or2b_2() + c = sky130.components.sky130_fd_sc_hd__or2b_2() c.plot() """ return import_gds( @@ -9224,15 +9224,15 @@ def or2b_2() -> gf.Component: @cell -def or2b_4() -> gf.Component: - """Returns or2b_4 fixed cell. +def sky130_fd_sc_hd__or2b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or2b_4() + c = sky130.components.sky130_fd_sc_hd__or2b_4() c.plot() """ return import_gds( @@ -9242,15 +9242,15 @@ def or2b_4() -> gf.Component: @cell -def lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: - """Returns lpflow_lsbuf_lh_hl_isowell_tap_4 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_lsbuf_lh_hl_isowell_tap_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4() c.plot() """ return import_gds( @@ -9260,15 +9260,15 @@ def lpflow_lsbuf_lh_hl_isowell_tap_4() -> gf.Component: @cell -def lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: - """Returns lpflow_lsbuf_lh_hl_isowell_tap_1 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_lsbuf_lh_hl_isowell_tap_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1() c.plot() """ return import_gds( @@ -9278,15 +9278,15 @@ def lpflow_lsbuf_lh_hl_isowell_tap_1() -> gf.Component: @cell -def lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: - """Returns lpflow_lsbuf_lh_hl_isowell_tap_2 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_lsbuf_lh_hl_isowell_tap_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2() c.plot() """ return import_gds( @@ -9296,15 +9296,15 @@ def lpflow_lsbuf_lh_hl_isowell_tap_2() -> gf.Component: @cell -def and2_1() -> gf.Component: - """Returns and2_1 fixed cell. +def sky130_fd_sc_hd__and2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and2_1() + c = sky130.components.sky130_fd_sc_hd__and2_1() c.plot() """ return import_gds( @@ -9314,15 +9314,15 @@ def and2_1() -> gf.Component: @cell -def and2_2() -> gf.Component: - """Returns and2_2 fixed cell. +def sky130_fd_sc_hd__and2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and2_2() + c = sky130.components.sky130_fd_sc_hd__and2_2() c.plot() """ return import_gds( @@ -9332,15 +9332,15 @@ def and2_2() -> gf.Component: @cell -def and2_4() -> gf.Component: - """Returns and2_4 fixed cell. +def sky130_fd_sc_hd__and2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and2_4() + c = sky130.components.sky130_fd_sc_hd__and2_4() c.plot() """ return import_gds( @@ -9350,15 +9350,15 @@ def and2_4() -> gf.Component: @cell -def and2_0() -> gf.Component: - """Returns and2_0 fixed cell. +def sky130_fd_sc_hd__and2_0() -> gf.Component: + """Returns sky130_fd_sc_hd__and2_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and2_0() + c = sky130.components.sky130_fd_sc_hd__and2_0() c.plot() """ return import_gds( @@ -9368,15 +9368,15 @@ def and2_0() -> gf.Component: @cell -def and3b_1() -> gf.Component: - """Returns and3b_1 fixed cell. +def sky130_fd_sc_hd__and3b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and3b_1() + c = sky130.components.sky130_fd_sc_hd__and3b_1() c.plot() """ return import_gds( @@ -9386,15 +9386,15 @@ def and3b_1() -> gf.Component: @cell -def and3b_2() -> gf.Component: - """Returns and3b_2 fixed cell. +def sky130_fd_sc_hd__and3b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and3b_2() + c = sky130.components.sky130_fd_sc_hd__and3b_2() c.plot() """ return import_gds( @@ -9404,15 +9404,15 @@ def and3b_2() -> gf.Component: @cell -def and3b_4() -> gf.Component: - """Returns and3b_4 fixed cell. +def sky130_fd_sc_hd__and3b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and3b_4() + c = sky130.components.sky130_fd_sc_hd__and3b_4() c.plot() """ return import_gds( @@ -9422,15 +9422,15 @@ def and3b_4() -> gf.Component: @cell -def a32o_1() -> gf.Component: - """Returns a32o_1 fixed cell. +def sky130_fd_sc_hd__a32o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a32o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a32o_1() + c = sky130.components.sky130_fd_sc_hd__a32o_1() c.plot() """ return import_gds( @@ -9440,15 +9440,15 @@ def a32o_1() -> gf.Component: @cell -def a32o_4() -> gf.Component: - """Returns a32o_4 fixed cell. +def sky130_fd_sc_hd__a32o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a32o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a32o_4() + c = sky130.components.sky130_fd_sc_hd__a32o_4() c.plot() """ return import_gds( @@ -9458,15 +9458,15 @@ def a32o_4() -> gf.Component: @cell -def a32o_2() -> gf.Component: - """Returns a32o_2 fixed cell. +def sky130_fd_sc_hd__a32o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a32o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a32o_2() + c = sky130.components.sky130_fd_sc_hd__a32o_2() c.plot() """ return import_gds( @@ -9476,15 +9476,15 @@ def a32o_2() -> gf.Component: @cell -def nand4_4() -> gf.Component: - """Returns nand4_4 fixed cell. +def sky130_fd_sc_hd__nand4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand4_4() + c = sky130.components.sky130_fd_sc_hd__nand4_4() c.plot() """ return import_gds( @@ -9494,15 +9494,15 @@ def nand4_4() -> gf.Component: @cell -def nand4_1() -> gf.Component: - """Returns nand4_1 fixed cell. +def sky130_fd_sc_hd__nand4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand4_1() + c = sky130.components.sky130_fd_sc_hd__nand4_1() c.plot() """ return import_gds( @@ -9512,15 +9512,15 @@ def nand4_1() -> gf.Component: @cell -def nand4_2() -> gf.Component: - """Returns nand4_2 fixed cell. +def sky130_fd_sc_hd__nand4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand4_2() + c = sky130.components.sky130_fd_sc_hd__nand4_2() c.plot() """ return import_gds( @@ -9530,15 +9530,15 @@ def nand4_2() -> gf.Component: @cell -def nand2b_1() -> gf.Component: - """Returns nand2b_1 fixed cell. +def sky130_fd_sc_hd__nand2b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand2b_1() + c = sky130.components.sky130_fd_sc_hd__nand2b_1() c.plot() """ return import_gds( @@ -9548,15 +9548,15 @@ def nand2b_1() -> gf.Component: @cell -def nand2b_2() -> gf.Component: - """Returns nand2b_2 fixed cell. +def sky130_fd_sc_hd__nand2b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand2b_2() + c = sky130.components.sky130_fd_sc_hd__nand2b_2() c.plot() """ return import_gds( @@ -9566,15 +9566,15 @@ def nand2b_2() -> gf.Component: @cell -def nand2b_4() -> gf.Component: - """Returns nand2b_4 fixed cell. +def sky130_fd_sc_hd__nand2b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand2b_4() + c = sky130.components.sky130_fd_sc_hd__nand2b_4() c.plot() """ return import_gds( @@ -9584,15 +9584,15 @@ def nand2b_4() -> gf.Component: @cell -def lpflow_isobufsrc_8() -> gf.Component: - """Returns lpflow_isobufsrc_8 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_8() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_isobufsrc_8() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_8() c.plot() """ return import_gds( @@ -9602,15 +9602,15 @@ def lpflow_isobufsrc_8() -> gf.Component: @cell -def lpflow_isobufsrc_4() -> gf.Component: - """Returns lpflow_isobufsrc_4 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_isobufsrc_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_4() c.plot() """ return import_gds( @@ -9620,15 +9620,15 @@ def lpflow_isobufsrc_4() -> gf.Component: @cell -def lpflow_isobufsrc_2() -> gf.Component: - """Returns lpflow_isobufsrc_2 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_2() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_isobufsrc_2() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_2() c.plot() """ return import_gds( @@ -9638,15 +9638,15 @@ def lpflow_isobufsrc_2() -> gf.Component: @cell -def lpflow_isobufsrc_16() -> gf.Component: - """Returns lpflow_isobufsrc_16 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_16() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_isobufsrc_16() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_16() c.plot() """ return import_gds( @@ -9656,15 +9656,15 @@ def lpflow_isobufsrc_16() -> gf.Component: @cell -def lpflow_isobufsrc_1() -> gf.Component: - """Returns lpflow_isobufsrc_1 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrc_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrc_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_isobufsrc_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrc_1() c.plot() """ return import_gds( @@ -9674,15 +9674,15 @@ def lpflow_isobufsrc_1() -> gf.Component: @cell -def and3_4() -> gf.Component: - """Returns and3_4 fixed cell. +def sky130_fd_sc_hd__and3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and3_4() + c = sky130.components.sky130_fd_sc_hd__and3_4() c.plot() """ return import_gds( @@ -9692,15 +9692,15 @@ def and3_4() -> gf.Component: @cell -def and3_1() -> gf.Component: - """Returns and3_1 fixed cell. +def sky130_fd_sc_hd__and3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and3_1() + c = sky130.components.sky130_fd_sc_hd__and3_1() c.plot() """ return import_gds( @@ -9710,15 +9710,15 @@ def and3_1() -> gf.Component: @cell -def and3_2() -> gf.Component: - """Returns and3_2 fixed cell. +def sky130_fd_sc_hd__and3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and3_2() + c = sky130.components.sky130_fd_sc_hd__and3_2() c.plot() """ return import_gds( @@ -9728,15 +9728,15 @@ def and3_2() -> gf.Component: @cell -def o2111a_1() -> gf.Component: - """Returns o2111a_1 fixed cell. +def sky130_fd_sc_hd__o2111a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2111a_1() + c = sky130.components.sky130_fd_sc_hd__o2111a_1() c.plot() """ return import_gds( @@ -9746,15 +9746,15 @@ def o2111a_1() -> gf.Component: @cell -def o2111a_4() -> gf.Component: - """Returns o2111a_4 fixed cell. +def sky130_fd_sc_hd__o2111a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2111a_4() + c = sky130.components.sky130_fd_sc_hd__o2111a_4() c.plot() """ return import_gds( @@ -9764,15 +9764,15 @@ def o2111a_4() -> gf.Component: @cell -def o2111a_2() -> gf.Component: - """Returns o2111a_2 fixed cell. +def sky130_fd_sc_hd__o2111a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o2111a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2111a_2() + c = sky130.components.sky130_fd_sc_hd__o2111a_2() c.plot() """ return import_gds( @@ -9782,15 +9782,15 @@ def o2111a_2() -> gf.Component: @cell -def a311o_4() -> gf.Component: - """Returns a311o_4 fixed cell. +def sky130_fd_sc_hd__a311o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a311o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a311o_4() + c = sky130.components.sky130_fd_sc_hd__a311o_4() c.plot() """ return import_gds( @@ -9800,15 +9800,15 @@ def a311o_4() -> gf.Component: @cell -def a311o_2() -> gf.Component: - """Returns a311o_2 fixed cell. +def sky130_fd_sc_hd__a311o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a311o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a311o_2() + c = sky130.components.sky130_fd_sc_hd__a311o_2() c.plot() """ return import_gds( @@ -9818,15 +9818,15 @@ def a311o_2() -> gf.Component: @cell -def a311o_1() -> gf.Component: - """Returns a311o_1 fixed cell. +def sky130_fd_sc_hd__a311o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a311o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a311o_1() + c = sky130.components.sky130_fd_sc_hd__a311o_1() c.plot() """ return import_gds( @@ -9836,15 +9836,15 @@ def a311o_1() -> gf.Component: @cell -def fa_4() -> gf.Component: - """Returns fa_4 fixed cell. +def sky130_fd_sc_hd__fa_4() -> gf.Component: + """Returns sky130_fd_sc_hd__fa_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fa_4() + c = sky130.components.sky130_fd_sc_hd__fa_4() c.plot() """ return import_gds( @@ -9854,15 +9854,15 @@ def fa_4() -> gf.Component: @cell -def fa_1() -> gf.Component: - """Returns fa_1 fixed cell. +def sky130_fd_sc_hd__fa_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fa_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fa_1() + c = sky130.components.sky130_fd_sc_hd__fa_1() c.plot() """ return import_gds( @@ -9872,15 +9872,15 @@ def fa_1() -> gf.Component: @cell -def fa_2() -> gf.Component: - """Returns fa_2 fixed cell. +def sky130_fd_sc_hd__fa_2() -> gf.Component: + """Returns sky130_fd_sc_hd__fa_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fa_2() + c = sky130.components.sky130_fd_sc_hd__fa_2() c.plot() """ return import_gds( @@ -9890,15 +9890,15 @@ def fa_2() -> gf.Component: @cell -def o32ai_1() -> gf.Component: - """Returns o32ai_1 fixed cell. +def sky130_fd_sc_hd__o32ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o32ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o32ai_1() + c = sky130.components.sky130_fd_sc_hd__o32ai_1() c.plot() """ return import_gds( @@ -9908,15 +9908,15 @@ def o32ai_1() -> gf.Component: @cell -def o32ai_2() -> gf.Component: - """Returns o32ai_2 fixed cell. +def sky130_fd_sc_hd__o32ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o32ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o32ai_2() + c = sky130.components.sky130_fd_sc_hd__o32ai_2() c.plot() """ return import_gds( @@ -9926,15 +9926,15 @@ def o32ai_2() -> gf.Component: @cell -def o32ai_4() -> gf.Component: - """Returns o32ai_4 fixed cell. +def sky130_fd_sc_hd__o32ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o32ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o32ai_4() + c = sky130.components.sky130_fd_sc_hd__o32ai_4() c.plot() """ return import_gds( @@ -9944,15 +9944,15 @@ def o32ai_4() -> gf.Component: @cell -def a2bb2o_4() -> gf.Component: - """Returns a2bb2o_4 fixed cell. +def sky130_fd_sc_hd__a2bb2o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2bb2o_4() + c = sky130.components.sky130_fd_sc_hd__a2bb2o_4() c.plot() """ return import_gds( @@ -9962,15 +9962,15 @@ def a2bb2o_4() -> gf.Component: @cell -def a2bb2o_1() -> gf.Component: - """Returns a2bb2o_1 fixed cell. +def sky130_fd_sc_hd__a2bb2o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2bb2o_1() + c = sky130.components.sky130_fd_sc_hd__a2bb2o_1() c.plot() """ return import_gds( @@ -9980,15 +9980,15 @@ def a2bb2o_1() -> gf.Component: @cell -def a2bb2o_2() -> gf.Component: - """Returns a2bb2o_2 fixed cell. +def sky130_fd_sc_hd__a2bb2o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a2bb2o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2bb2o_2() + c = sky130.components.sky130_fd_sc_hd__a2bb2o_2() c.plot() """ return import_gds( @@ -9998,15 +9998,15 @@ def a2bb2o_2() -> gf.Component: @cell -def lpflow_bleeder_1() -> gf.Component: - """Returns lpflow_bleeder_1 fixed cell. +def sky130_fd_sc_hd__lpflow_bleeder_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_bleeder_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_bleeder_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_bleeder_1() c.plot() """ return import_gds( @@ -10016,15 +10016,15 @@ def lpflow_bleeder_1() -> gf.Component: @cell -def sedfxbp_1() -> gf.Component: - """Returns sedfxbp_1 fixed cell. +def sky130_fd_sc_hd__sedfxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sedfxbp_1() + c = sky130.components.sky130_fd_sc_hd__sedfxbp_1() c.plot() """ return import_gds( @@ -10034,15 +10034,15 @@ def sedfxbp_1() -> gf.Component: @cell -def sedfxbp_2() -> gf.Component: - """Returns sedfxbp_2 fixed cell. +def sky130_fd_sc_hd__sedfxbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sedfxbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sedfxbp_2() + c = sky130.components.sky130_fd_sc_hd__sedfxbp_2() c.plot() """ return import_gds( @@ -10052,15 +10052,15 @@ def sedfxbp_2() -> gf.Component: @cell -def nor3b_2() -> gf.Component: - """Returns nor3b_2 fixed cell. +def sky130_fd_sc_hd__nor3b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor3b_2() + c = sky130.components.sky130_fd_sc_hd__nor3b_2() c.plot() """ return import_gds( @@ -10070,15 +10070,15 @@ def nor3b_2() -> gf.Component: @cell -def nor3b_1() -> gf.Component: - """Returns nor3b_1 fixed cell. +def sky130_fd_sc_hd__nor3b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor3b_1() + c = sky130.components.sky130_fd_sc_hd__nor3b_1() c.plot() """ return import_gds( @@ -10088,15 +10088,15 @@ def nor3b_1() -> gf.Component: @cell -def nor3b_4() -> gf.Component: - """Returns nor3b_4 fixed cell. +def sky130_fd_sc_hd__nor3b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor3b_4() + c = sky130.components.sky130_fd_sc_hd__nor3b_4() c.plot() """ return import_gds( @@ -10106,15 +10106,15 @@ def nor3b_4() -> gf.Component: @cell -def a31oi_2() -> gf.Component: - """Returns a31oi_2 fixed cell. +def sky130_fd_sc_hd__a31oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a31oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a31oi_2() + c = sky130.components.sky130_fd_sc_hd__a31oi_2() c.plot() """ return import_gds( @@ -10124,15 +10124,15 @@ def a31oi_2() -> gf.Component: @cell -def a31oi_4() -> gf.Component: - """Returns a31oi_4 fixed cell. +def sky130_fd_sc_hd__a31oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a31oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a31oi_4() + c = sky130.components.sky130_fd_sc_hd__a31oi_4() c.plot() """ return import_gds( @@ -10142,15 +10142,15 @@ def a31oi_4() -> gf.Component: @cell -def a31oi_1() -> gf.Component: - """Returns a31oi_1 fixed cell. +def sky130_fd_sc_hd__a31oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a31oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a31oi_1() + c = sky130.components.sky130_fd_sc_hd__a31oi_1() c.plot() """ return import_gds( @@ -10160,15 +10160,15 @@ def a31oi_1() -> gf.Component: @cell -def xor3_4() -> gf.Component: - """Returns xor3_4 fixed cell. +def sky130_fd_sc_hd__xor3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__xor3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xor3_4() + c = sky130.components.sky130_fd_sc_hd__xor3_4() c.plot() """ return import_gds( @@ -10178,15 +10178,15 @@ def xor3_4() -> gf.Component: @cell -def xor3_2() -> gf.Component: - """Returns xor3_2 fixed cell. +def sky130_fd_sc_hd__xor3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__xor3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xor3_2() + c = sky130.components.sky130_fd_sc_hd__xor3_2() c.plot() """ return import_gds( @@ -10196,15 +10196,15 @@ def xor3_2() -> gf.Component: @cell -def xor3_1() -> gf.Component: - """Returns xor3_1 fixed cell. +def sky130_fd_sc_hd__xor3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__xor3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xor3_1() + c = sky130.components.sky130_fd_sc_hd__xor3_1() c.plot() """ return import_gds( @@ -10214,15 +10214,15 @@ def xor3_1() -> gf.Component: @cell -def o41ai_1() -> gf.Component: - """Returns o41ai_1 fixed cell. +def sky130_fd_sc_hd__o41ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o41ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o41ai_1() + c = sky130.components.sky130_fd_sc_hd__o41ai_1() c.plot() """ return import_gds( @@ -10232,15 +10232,15 @@ def o41ai_1() -> gf.Component: @cell -def o41ai_4() -> gf.Component: - """Returns o41ai_4 fixed cell. +def sky130_fd_sc_hd__o41ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o41ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o41ai_4() + c = sky130.components.sky130_fd_sc_hd__o41ai_4() c.plot() """ return import_gds( @@ -10250,15 +10250,15 @@ def o41ai_4() -> gf.Component: @cell -def o41ai_2() -> gf.Component: - """Returns o41ai_2 fixed cell. +def sky130_fd_sc_hd__o41ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o41ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o41ai_2() + c = sky130.components.sky130_fd_sc_hd__o41ai_2() c.plot() """ return import_gds( @@ -10268,15 +10268,15 @@ def o41ai_2() -> gf.Component: @cell -def fill_4() -> gf.Component: - """Returns fill_4 fixed cell. +def sky130_fd_sc_hd__fill_4() -> gf.Component: + """Returns sky130_fd_sc_hd__fill_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fill_4() + c = sky130.components.sky130_fd_sc_hd__fill_4() c.plot() """ return import_gds( @@ -10286,15 +10286,15 @@ def fill_4() -> gf.Component: @cell -def fill_1() -> gf.Component: - """Returns fill_1 fixed cell. +def sky130_fd_sc_hd__fill_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fill_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fill_1() + c = sky130.components.sky130_fd_sc_hd__fill_1() c.plot() """ return import_gds( @@ -10304,15 +10304,15 @@ def fill_1() -> gf.Component: @cell -def fill_8() -> gf.Component: - """Returns fill_8 fixed cell. +def sky130_fd_sc_hd__fill_8() -> gf.Component: + """Returns sky130_fd_sc_hd__fill_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fill_8() + c = sky130.components.sky130_fd_sc_hd__fill_8() c.plot() """ return import_gds( @@ -10322,15 +10322,15 @@ def fill_8() -> gf.Component: @cell -def fill_2() -> gf.Component: - """Returns fill_2 fixed cell. +def sky130_fd_sc_hd__fill_2() -> gf.Component: + """Returns sky130_fd_sc_hd__fill_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fill_2() + c = sky130.components.sky130_fd_sc_hd__fill_2() c.plot() """ return import_gds( @@ -10340,15 +10340,15 @@ def fill_2() -> gf.Component: @cell -def sdfrtn_1() -> gf.Component: - """Returns sdfrtn_1 fixed cell. +def sky130_fd_sc_hd__sdfrtn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfrtn_1() + c = sky130.components.sky130_fd_sc_hd__sdfrtn_1() c.plot() """ return import_gds( @@ -10358,15 +10358,15 @@ def sdfrtn_1() -> gf.Component: @cell -def decap_3() -> gf.Component: - """Returns decap_3 fixed cell. +def sky130_fd_sc_hd__decap_3() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_3 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.decap_3() + c = sky130.components.sky130_fd_sc_hd__decap_3() c.plot() """ return import_gds( @@ -10376,15 +10376,15 @@ def decap_3() -> gf.Component: @cell -def decap_8() -> gf.Component: - """Returns decap_8 fixed cell. +def sky130_fd_sc_hd__decap_8() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.decap_8() + c = sky130.components.sky130_fd_sc_hd__decap_8() c.plot() """ return import_gds( @@ -10394,15 +10394,15 @@ def decap_8() -> gf.Component: @cell -def decap_4() -> gf.Component: - """Returns decap_4 fixed cell. +def sky130_fd_sc_hd__decap_4() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.decap_4() + c = sky130.components.sky130_fd_sc_hd__decap_4() c.plot() """ return import_gds( @@ -10412,15 +10412,15 @@ def decap_4() -> gf.Component: @cell -def decap_12() -> gf.Component: - """Returns decap_12 fixed cell. +def sky130_fd_sc_hd__decap_12() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.decap_12() + c = sky130.components.sky130_fd_sc_hd__decap_12() c.plot() """ return import_gds( @@ -10430,15 +10430,15 @@ def decap_12() -> gf.Component: @cell -def decap_6() -> gf.Component: - """Returns decap_6 fixed cell. +def sky130_fd_sc_hd__decap_6() -> gf.Component: + """Returns sky130_fd_sc_hd__decap_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.decap_6() + c = sky130.components.sky130_fd_sc_hd__decap_6() c.plot() """ return import_gds( @@ -10448,15 +10448,15 @@ def decap_6() -> gf.Component: @cell -def inv_1() -> gf.Component: - """Returns inv_1 fixed cell. +def sky130_fd_sc_hd__inv_1() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.inv_1() + c = sky130.components.sky130_fd_sc_hd__inv_1() c.plot() """ return import_gds( @@ -10466,15 +10466,15 @@ def inv_1() -> gf.Component: @cell -def inv_12() -> gf.Component: - """Returns inv_12 fixed cell. +def sky130_fd_sc_hd__inv_12() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_12 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.inv_12() + c = sky130.components.sky130_fd_sc_hd__inv_12() c.plot() """ return import_gds( @@ -10484,15 +10484,15 @@ def inv_12() -> gf.Component: @cell -def inv_6() -> gf.Component: - """Returns inv_6 fixed cell. +def sky130_fd_sc_hd__inv_6() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_6 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.inv_6() + c = sky130.components.sky130_fd_sc_hd__inv_6() c.plot() """ return import_gds( @@ -10502,15 +10502,15 @@ def inv_6() -> gf.Component: @cell -def inv_16() -> gf.Component: - """Returns inv_16 fixed cell. +def sky130_fd_sc_hd__inv_16() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.inv_16() + c = sky130.components.sky130_fd_sc_hd__inv_16() c.plot() """ return import_gds( @@ -10520,15 +10520,15 @@ def inv_16() -> gf.Component: @cell -def inv_4() -> gf.Component: - """Returns inv_4 fixed cell. +def sky130_fd_sc_hd__inv_4() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.inv_4() + c = sky130.components.sky130_fd_sc_hd__inv_4() c.plot() """ return import_gds( @@ -10538,15 +10538,15 @@ def inv_4() -> gf.Component: @cell -def inv_8() -> gf.Component: - """Returns inv_8 fixed cell. +def sky130_fd_sc_hd__inv_8() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.inv_8() + c = sky130.components.sky130_fd_sc_hd__inv_8() c.plot() """ return import_gds( @@ -10556,15 +10556,15 @@ def inv_8() -> gf.Component: @cell -def inv_2() -> gf.Component: - """Returns inv_2 fixed cell. +def sky130_fd_sc_hd__inv_2() -> gf.Component: + """Returns sky130_fd_sc_hd__inv_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.inv_2() + c = sky130.components.sky130_fd_sc_hd__inv_2() c.plot() """ return import_gds( @@ -10574,15 +10574,15 @@ def inv_2() -> gf.Component: @cell -def macro_sparecell() -> gf.Component: - """Returns macro_sparecell fixed cell. +def sky130_fd_sc_hd__macro_sparecell() -> gf.Component: + """Returns sky130_fd_sc_hd__macro_sparecell fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.macro_sparecell() + c = sky130.components.sky130_fd_sc_hd__macro_sparecell() c.plot() """ return import_gds( @@ -10592,15 +10592,15 @@ def macro_sparecell() -> gf.Component: @cell -def and2b_4() -> gf.Component: - """Returns and2b_4 fixed cell. +def sky130_fd_sc_hd__and2b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and2b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and2b_4() + c = sky130.components.sky130_fd_sc_hd__and2b_4() c.plot() """ return import_gds( @@ -10610,15 +10610,15 @@ def and2b_4() -> gf.Component: @cell -def and2b_1() -> gf.Component: - """Returns and2b_1 fixed cell. +def sky130_fd_sc_hd__and2b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and2b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and2b_1() + c = sky130.components.sky130_fd_sc_hd__and2b_1() c.plot() """ return import_gds( @@ -10628,15 +10628,15 @@ def and2b_1() -> gf.Component: @cell -def and2b_2() -> gf.Component: - """Returns and2b_2 fixed cell. +def sky130_fd_sc_hd__and2b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and2b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and2b_2() + c = sky130.components.sky130_fd_sc_hd__and2b_2() c.plot() """ return import_gds( @@ -10646,15 +10646,15 @@ def and2b_2() -> gf.Component: @cell -def nand3b_2() -> gf.Component: - """Returns nand3b_2 fixed cell. +def sky130_fd_sc_hd__nand3b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand3b_2() + c = sky130.components.sky130_fd_sc_hd__nand3b_2() c.plot() """ return import_gds( @@ -10664,15 +10664,15 @@ def nand3b_2() -> gf.Component: @cell -def nand3b_1() -> gf.Component: - """Returns nand3b_1 fixed cell. +def sky130_fd_sc_hd__nand3b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand3b_1() + c = sky130.components.sky130_fd_sc_hd__nand3b_1() c.plot() """ return import_gds( @@ -10682,15 +10682,15 @@ def nand3b_1() -> gf.Component: @cell -def nand3b_4() -> gf.Component: - """Returns nand3b_4 fixed cell. +def sky130_fd_sc_hd__nand3b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand3b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand3b_4() + c = sky130.components.sky130_fd_sc_hd__nand3b_4() c.plot() """ return import_gds( @@ -10700,15 +10700,15 @@ def nand3b_4() -> gf.Component: @cell -def dlrtp_1() -> gf.Component: - """Returns dlrtp_1 fixed cell. +def sky130_fd_sc_hd__dlrtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrtp_1() + c = sky130.components.sky130_fd_sc_hd__dlrtp_1() c.plot() """ return import_gds( @@ -10718,15 +10718,15 @@ def dlrtp_1() -> gf.Component: @cell -def dlrtp_4() -> gf.Component: - """Returns dlrtp_4 fixed cell. +def sky130_fd_sc_hd__dlrtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrtp_4() + c = sky130.components.sky130_fd_sc_hd__dlrtp_4() c.plot() """ return import_gds( @@ -10736,15 +10736,15 @@ def dlrtp_4() -> gf.Component: @cell -def dlrtp_2() -> gf.Component: - """Returns dlrtp_2 fixed cell. +def sky130_fd_sc_hd__dlrtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrtp_2() + c = sky130.components.sky130_fd_sc_hd__dlrtp_2() c.plot() """ return import_gds( @@ -10754,15 +10754,15 @@ def dlrtp_2() -> gf.Component: @cell -def dfbbp_1() -> gf.Component: - """Returns dfbbp_1 fixed cell. +def sky130_fd_sc_hd__dfbbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfbbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfbbp_1() + c = sky130.components.sky130_fd_sc_hd__dfbbp_1() c.plot() """ return import_gds( @@ -10772,15 +10772,15 @@ def dfbbp_1() -> gf.Component: @cell -def probe_p_8() -> gf.Component: - """Returns probe_p_8 fixed cell. +def sky130_fd_sc_hd__probe_p_8() -> gf.Component: + """Returns sky130_fd_sc_hd__probe_p_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.probe_p_8() + c = sky130.components.sky130_fd_sc_hd__probe_p_8() c.plot() """ return import_gds( @@ -10790,15 +10790,15 @@ def probe_p_8() -> gf.Component: @cell -def dlclkp_1() -> gf.Component: - """Returns dlclkp_1 fixed cell. +def sky130_fd_sc_hd__dlclkp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlclkp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlclkp_1() + c = sky130.components.sky130_fd_sc_hd__dlclkp_1() c.plot() """ return import_gds( @@ -10808,15 +10808,15 @@ def dlclkp_1() -> gf.Component: @cell -def dlclkp_4() -> gf.Component: - """Returns dlclkp_4 fixed cell. +def sky130_fd_sc_hd__dlclkp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__dlclkp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlclkp_4() + c = sky130.components.sky130_fd_sc_hd__dlclkp_4() c.plot() """ return import_gds( @@ -10826,15 +10826,15 @@ def dlclkp_4() -> gf.Component: @cell -def dlclkp_2() -> gf.Component: - """Returns dlclkp_2 fixed cell. +def sky130_fd_sc_hd__dlclkp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlclkp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlclkp_2() + c = sky130.components.sky130_fd_sc_hd__dlclkp_2() c.plot() """ return import_gds( @@ -10844,15 +10844,15 @@ def dlclkp_2() -> gf.Component: @cell -def or4_2() -> gf.Component: - """Returns or4_2 fixed cell. +def sky130_fd_sc_hd__or4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or4_2() + c = sky130.components.sky130_fd_sc_hd__or4_2() c.plot() """ return import_gds( @@ -10862,15 +10862,15 @@ def or4_2() -> gf.Component: @cell -def or4_1() -> gf.Component: - """Returns or4_1 fixed cell. +def sky130_fd_sc_hd__or4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or4_1() + c = sky130.components.sky130_fd_sc_hd__or4_1() c.plot() """ return import_gds( @@ -10880,15 +10880,15 @@ def or4_1() -> gf.Component: @cell -def or4_4() -> gf.Component: - """Returns or4_4 fixed cell. +def sky130_fd_sc_hd__or4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or4_4() + c = sky130.components.sky130_fd_sc_hd__or4_4() c.plot() """ return import_gds( @@ -10898,15 +10898,15 @@ def or4_4() -> gf.Component: @cell -def o221a_1() -> gf.Component: - """Returns o221a_1 fixed cell. +def sky130_fd_sc_hd__o221a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o221a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o221a_1() + c = sky130.components.sky130_fd_sc_hd__o221a_1() c.plot() """ return import_gds( @@ -10916,15 +10916,15 @@ def o221a_1() -> gf.Component: @cell -def o221a_4() -> gf.Component: - """Returns o221a_4 fixed cell. +def sky130_fd_sc_hd__o221a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o221a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o221a_4() + c = sky130.components.sky130_fd_sc_hd__o221a_4() c.plot() """ return import_gds( @@ -10934,15 +10934,15 @@ def o221a_4() -> gf.Component: @cell -def o221a_2() -> gf.Component: - """Returns o221a_2 fixed cell. +def sky130_fd_sc_hd__o221a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o221a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o221a_2() + c = sky130.components.sky130_fd_sc_hd__o221a_2() c.plot() """ return import_gds( @@ -10952,15 +10952,15 @@ def o221a_2() -> gf.Component: @cell -def nor3_2() -> gf.Component: - """Returns nor3_2 fixed cell. +def sky130_fd_sc_hd__nor3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor3_2() + c = sky130.components.sky130_fd_sc_hd__nor3_2() c.plot() """ return import_gds( @@ -10970,15 +10970,15 @@ def nor3_2() -> gf.Component: @cell -def nor3_4() -> gf.Component: - """Returns nor3_4 fixed cell. +def sky130_fd_sc_hd__nor3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor3_4() + c = sky130.components.sky130_fd_sc_hd__nor3_4() c.plot() """ return import_gds( @@ -10988,15 +10988,15 @@ def nor3_4() -> gf.Component: @cell -def nor3_1() -> gf.Component: - """Returns nor3_1 fixed cell. +def sky130_fd_sc_hd__nor3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nor3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nor3_1() + c = sky130.components.sky130_fd_sc_hd__nor3_1() c.plot() """ return import_gds( @@ -11006,15 +11006,15 @@ def nor3_1() -> gf.Component: @cell -def dfrtn_1() -> gf.Component: - """Returns dfrtn_1 fixed cell. +def sky130_fd_sc_hd__dfrtn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfrtn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfrtn_1() + c = sky130.components.sky130_fd_sc_hd__dfrtn_1() c.plot() """ return import_gds( @@ -11024,15 +11024,15 @@ def dfrtn_1() -> gf.Component: @cell -def sdfrbp_1() -> gf.Component: - """Returns sdfrbp_1 fixed cell. +def sky130_fd_sc_hd__sdfrbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfrbp_1() + c = sky130.components.sky130_fd_sc_hd__sdfrbp_1() c.plot() """ return import_gds( @@ -11042,15 +11042,15 @@ def sdfrbp_1() -> gf.Component: @cell -def sdfrbp_2() -> gf.Component: - """Returns sdfrbp_2 fixed cell. +def sky130_fd_sc_hd__sdfrbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfrbp_2() + c = sky130.components.sky130_fd_sc_hd__sdfrbp_2() c.plot() """ return import_gds( @@ -11060,15 +11060,15 @@ def sdfrbp_2() -> gf.Component: @cell -def clkinvlp_4() -> gf.Component: - """Returns clkinvlp_4 fixed cell. +def sky130_fd_sc_hd__clkinvlp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinvlp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkinvlp_4() + c = sky130.components.sky130_fd_sc_hd__clkinvlp_4() c.plot() """ return import_gds( @@ -11078,15 +11078,15 @@ def clkinvlp_4() -> gf.Component: @cell -def clkinvlp_2() -> gf.Component: - """Returns clkinvlp_2 fixed cell. +def sky130_fd_sc_hd__clkinvlp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkinvlp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkinvlp_2() + c = sky130.components.sky130_fd_sc_hd__clkinvlp_2() c.plot() """ return import_gds( @@ -11096,15 +11096,15 @@ def clkinvlp_2() -> gf.Component: @cell -def o41a_4() -> gf.Component: - """Returns o41a_4 fixed cell. +def sky130_fd_sc_hd__o41a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o41a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o41a_4() + c = sky130.components.sky130_fd_sc_hd__o41a_4() c.plot() """ return import_gds( @@ -11114,15 +11114,15 @@ def o41a_4() -> gf.Component: @cell -def o41a_1() -> gf.Component: - """Returns o41a_1 fixed cell. +def sky130_fd_sc_hd__o41a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o41a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o41a_1() + c = sky130.components.sky130_fd_sc_hd__o41a_1() c.plot() """ return import_gds( @@ -11132,15 +11132,15 @@ def o41a_1() -> gf.Component: @cell -def o41a_2() -> gf.Component: - """Returns o41a_2 fixed cell. +def sky130_fd_sc_hd__o41a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o41a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o41a_2() + c = sky130.components.sky130_fd_sc_hd__o41a_2() c.plot() """ return import_gds( @@ -11150,15 +11150,15 @@ def o41a_2() -> gf.Component: @cell -def o21a_1() -> gf.Component: - """Returns o21a_1 fixed cell. +def sky130_fd_sc_hd__o21a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o21a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21a_1() + c = sky130.components.sky130_fd_sc_hd__o21a_1() c.plot() """ return import_gds( @@ -11168,15 +11168,15 @@ def o21a_1() -> gf.Component: @cell -def o21a_4() -> gf.Component: - """Returns o21a_4 fixed cell. +def sky130_fd_sc_hd__o21a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o21a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21a_4() + c = sky130.components.sky130_fd_sc_hd__o21a_4() c.plot() """ return import_gds( @@ -11186,15 +11186,15 @@ def o21a_4() -> gf.Component: @cell -def o21a_2() -> gf.Component: - """Returns o21a_2 fixed cell. +def sky130_fd_sc_hd__o21a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o21a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21a_2() + c = sky130.components.sky130_fd_sc_hd__o21a_2() c.plot() """ return import_gds( @@ -11204,15 +11204,15 @@ def o21a_2() -> gf.Component: @cell -def or3_4() -> gf.Component: - """Returns or3_4 fixed cell. +def sky130_fd_sc_hd__or3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or3_4() + c = sky130.components.sky130_fd_sc_hd__or3_4() c.plot() """ return import_gds( @@ -11222,15 +11222,15 @@ def or3_4() -> gf.Component: @cell -def or3_1() -> gf.Component: - """Returns or3_1 fixed cell. +def sky130_fd_sc_hd__or3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or3_1() + c = sky130.components.sky130_fd_sc_hd__or3_1() c.plot() """ return import_gds( @@ -11240,15 +11240,15 @@ def or3_1() -> gf.Component: @cell -def or3_2() -> gf.Component: - """Returns or3_2 fixed cell. +def sky130_fd_sc_hd__or3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or3_2() + c = sky130.components.sky130_fd_sc_hd__or3_2() c.plot() """ return import_gds( @@ -11258,15 +11258,15 @@ def or3_2() -> gf.Component: @cell -def dlxbp_1() -> gf.Component: - """Returns dlxbp_1 fixed cell. +def sky130_fd_sc_hd__dlxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlxbp_1() + c = sky130.components.sky130_fd_sc_hd__dlxbp_1() c.plot() """ return import_gds( @@ -11276,15 +11276,15 @@ def dlxbp_1() -> gf.Component: @cell -def bufbuf_16() -> gf.Component: - """Returns bufbuf_16 fixed cell. +def sky130_fd_sc_hd__bufbuf_16() -> gf.Component: + """Returns sky130_fd_sc_hd__bufbuf_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.bufbuf_16() + c = sky130.components.sky130_fd_sc_hd__bufbuf_16() c.plot() """ return import_gds( @@ -11294,15 +11294,15 @@ def bufbuf_16() -> gf.Component: @cell -def bufbuf_8() -> gf.Component: - """Returns bufbuf_8 fixed cell. +def sky130_fd_sc_hd__bufbuf_8() -> gf.Component: + """Returns sky130_fd_sc_hd__bufbuf_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.bufbuf_8() + c = sky130.components.sky130_fd_sc_hd__bufbuf_8() c.plot() """ return import_gds( @@ -11312,15 +11312,15 @@ def bufbuf_8() -> gf.Component: @cell -def clkdlybuf4s18_2() -> gf.Component: - """Returns clkdlybuf4s18_2 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s18_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s18_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkdlybuf4s18_2() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_2() c.plot() """ return import_gds( @@ -11330,15 +11330,15 @@ def clkdlybuf4s18_2() -> gf.Component: @cell -def clkdlybuf4s18_1() -> gf.Component: - """Returns clkdlybuf4s18_1 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s18_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s18_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkdlybuf4s18_1() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s18_1() c.plot() """ return import_gds( @@ -11348,15 +11348,15 @@ def clkdlybuf4s18_1() -> gf.Component: @cell -def sdfrtp_2() -> gf.Component: - """Returns sdfrtp_2 fixed cell. +def sky130_fd_sc_hd__sdfrtp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrtp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfrtp_2() + c = sky130.components.sky130_fd_sc_hd__sdfrtp_2() c.plot() """ return import_gds( @@ -11366,15 +11366,15 @@ def sdfrtp_2() -> gf.Component: @cell -def sdfrtp_1() -> gf.Component: - """Returns sdfrtp_1 fixed cell. +def sky130_fd_sc_hd__sdfrtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfrtp_1() + c = sky130.components.sky130_fd_sc_hd__sdfrtp_1() c.plot() """ return import_gds( @@ -11384,15 +11384,15 @@ def sdfrtp_1() -> gf.Component: @cell -def sdfrtp_4() -> gf.Component: - """Returns sdfrtp_4 fixed cell. +def sky130_fd_sc_hd__sdfrtp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfrtp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfrtp_4() + c = sky130.components.sky130_fd_sc_hd__sdfrtp_4() c.plot() """ return import_gds( @@ -11402,15 +11402,15 @@ def sdfrtp_4() -> gf.Component: @cell -def a221o_4() -> gf.Component: - """Returns a221o_4 fixed cell. +def sky130_fd_sc_hd__a221o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a221o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a221o_4() + c = sky130.components.sky130_fd_sc_hd__a221o_4() c.plot() """ return import_gds( @@ -11420,15 +11420,15 @@ def a221o_4() -> gf.Component: @cell -def a221o_2() -> gf.Component: - """Returns a221o_2 fixed cell. +def sky130_fd_sc_hd__a221o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a221o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a221o_2() + c = sky130.components.sky130_fd_sc_hd__a221o_2() c.plot() """ return import_gds( @@ -11438,15 +11438,15 @@ def a221o_2() -> gf.Component: @cell -def a221o_1() -> gf.Component: - """Returns a221o_1 fixed cell. +def sky130_fd_sc_hd__a221o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a221o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a221o_1() + c = sky130.components.sky130_fd_sc_hd__a221o_1() c.plot() """ return import_gds( @@ -11456,15 +11456,15 @@ def a221o_1() -> gf.Component: @cell -def a31o_1() -> gf.Component: - """Returns a31o_1 fixed cell. +def sky130_fd_sc_hd__a31o_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a31o_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a31o_1() + c = sky130.components.sky130_fd_sc_hd__a31o_1() c.plot() """ return import_gds( @@ -11474,15 +11474,15 @@ def a31o_1() -> gf.Component: @cell -def a31o_2() -> gf.Component: - """Returns a31o_2 fixed cell. +def sky130_fd_sc_hd__a31o_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a31o_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a31o_2() + c = sky130.components.sky130_fd_sc_hd__a31o_2() c.plot() """ return import_gds( @@ -11492,15 +11492,15 @@ def a31o_2() -> gf.Component: @cell -def a31o_4() -> gf.Component: - """Returns a31o_4 fixed cell. +def sky130_fd_sc_hd__a31o_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a31o_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a31o_4() + c = sky130.components.sky130_fd_sc_hd__a31o_4() c.plot() """ return import_gds( @@ -11510,15 +11510,15 @@ def a31o_4() -> gf.Component: @cell -def fah_1() -> gf.Component: - """Returns fah_1 fixed cell. +def sky130_fd_sc_hd__fah_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fah_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fah_1() + c = sky130.components.sky130_fd_sc_hd__fah_1() c.plot() """ return import_gds( @@ -11528,15 +11528,15 @@ def fah_1() -> gf.Component: @cell -def sdfbbn_1() -> gf.Component: - """Returns sdfbbn_1 fixed cell. +def sky130_fd_sc_hd__sdfbbn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfbbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfbbn_1() + c = sky130.components.sky130_fd_sc_hd__sdfbbn_1() c.plot() """ return import_gds( @@ -11546,15 +11546,15 @@ def sdfbbn_1() -> gf.Component: @cell -def sdfbbn_2() -> gf.Component: - """Returns sdfbbn_2 fixed cell. +def sky130_fd_sc_hd__sdfbbn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfbbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfbbn_2() + c = sky130.components.sky130_fd_sc_hd__sdfbbn_2() c.plot() """ return import_gds( @@ -11564,15 +11564,15 @@ def sdfbbn_2() -> gf.Component: @cell -def mux4_4() -> gf.Component: - """Returns mux4_4 fixed cell. +def sky130_fd_sc_hd__mux4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__mux4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux4_4() + c = sky130.components.sky130_fd_sc_hd__mux4_4() c.plot() """ return import_gds( @@ -11582,15 +11582,15 @@ def mux4_4() -> gf.Component: @cell -def mux4_1() -> gf.Component: - """Returns mux4_1 fixed cell. +def sky130_fd_sc_hd__mux4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__mux4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux4_1() + c = sky130.components.sky130_fd_sc_hd__mux4_1() c.plot() """ return import_gds( @@ -11600,15 +11600,15 @@ def mux4_1() -> gf.Component: @cell -def mux4_2() -> gf.Component: - """Returns mux4_2 fixed cell. +def sky130_fd_sc_hd__mux4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__mux4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.mux4_2() + c = sky130.components.sky130_fd_sc_hd__mux4_2() c.plot() """ return import_gds( @@ -11618,15 +11618,15 @@ def mux4_2() -> gf.Component: @cell -def xnor2_1() -> gf.Component: - """Returns xnor2_1 fixed cell. +def sky130_fd_sc_hd__xnor2_1() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor2_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xnor2_1() + c = sky130.components.sky130_fd_sc_hd__xnor2_1() c.plot() """ return import_gds( @@ -11636,15 +11636,15 @@ def xnor2_1() -> gf.Component: @cell -def xnor2_2() -> gf.Component: - """Returns xnor2_2 fixed cell. +def sky130_fd_sc_hd__xnor2_2() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor2_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xnor2_2() + c = sky130.components.sky130_fd_sc_hd__xnor2_2() c.plot() """ return import_gds( @@ -11654,15 +11654,15 @@ def xnor2_2() -> gf.Component: @cell -def xnor2_4() -> gf.Component: - """Returns xnor2_4 fixed cell. +def sky130_fd_sc_hd__xnor2_4() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor2_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xnor2_4() + c = sky130.components.sky130_fd_sc_hd__xnor2_4() c.plot() """ return import_gds( @@ -11672,15 +11672,15 @@ def xnor2_4() -> gf.Component: @cell -def dlymetal6s2s_1() -> gf.Component: - """Returns dlymetal6s2s_1 fixed cell. +def sky130_fd_sc_hd__dlymetal6s2s_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlymetal6s2s_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlymetal6s2s_1() + c = sky130.components.sky130_fd_sc_hd__dlymetal6s2s_1() c.plot() """ return import_gds( @@ -11690,15 +11690,15 @@ def dlymetal6s2s_1() -> gf.Component: @cell -def o2bb2ai_1() -> gf.Component: - """Returns o2bb2ai_1 fixed cell. +def sky130_fd_sc_hd__o2bb2ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2bb2ai_1() + c = sky130.components.sky130_fd_sc_hd__o2bb2ai_1() c.plot() """ return import_gds( @@ -11708,15 +11708,15 @@ def o2bb2ai_1() -> gf.Component: @cell -def o2bb2ai_4() -> gf.Component: - """Returns o2bb2ai_4 fixed cell. +def sky130_fd_sc_hd__o2bb2ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2bb2ai_4() + c = sky130.components.sky130_fd_sc_hd__o2bb2ai_4() c.plot() """ return import_gds( @@ -11726,15 +11726,15 @@ def o2bb2ai_4() -> gf.Component: @cell -def o2bb2ai_2() -> gf.Component: - """Returns o2bb2ai_2 fixed cell. +def sky130_fd_sc_hd__o2bb2ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2bb2ai_2() + c = sky130.components.sky130_fd_sc_hd__o2bb2ai_2() c.plot() """ return import_gds( @@ -11744,15 +11744,15 @@ def o2bb2ai_2() -> gf.Component: @cell -def and4_2() -> gf.Component: - """Returns and4_2 fixed cell. +def sky130_fd_sc_hd__and4_2() -> gf.Component: + """Returns sky130_fd_sc_hd__and4_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and4_2() + c = sky130.components.sky130_fd_sc_hd__and4_2() c.plot() """ return import_gds( @@ -11762,15 +11762,15 @@ def and4_2() -> gf.Component: @cell -def and4_1() -> gf.Component: - """Returns and4_1 fixed cell. +def sky130_fd_sc_hd__and4_1() -> gf.Component: + """Returns sky130_fd_sc_hd__and4_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and4_1() + c = sky130.components.sky130_fd_sc_hd__and4_1() c.plot() """ return import_gds( @@ -11780,15 +11780,15 @@ def and4_1() -> gf.Component: @cell -def and4_4() -> gf.Component: - """Returns and4_4 fixed cell. +def sky130_fd_sc_hd__and4_4() -> gf.Component: + """Returns sky130_fd_sc_hd__and4_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.and4_4() + c = sky130.components.sky130_fd_sc_hd__and4_4() c.plot() """ return import_gds( @@ -11798,15 +11798,15 @@ def and4_4() -> gf.Component: @cell -def or4bb_1() -> gf.Component: - """Returns or4bb_1 fixed cell. +def sky130_fd_sc_hd__or4bb_1() -> gf.Component: + """Returns sky130_fd_sc_hd__or4bb_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or4bb_1() + c = sky130.components.sky130_fd_sc_hd__or4bb_1() c.plot() """ return import_gds( @@ -11816,15 +11816,15 @@ def or4bb_1() -> gf.Component: @cell -def or4bb_4() -> gf.Component: - """Returns or4bb_4 fixed cell. +def sky130_fd_sc_hd__or4bb_4() -> gf.Component: + """Returns sky130_fd_sc_hd__or4bb_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or4bb_4() + c = sky130.components.sky130_fd_sc_hd__or4bb_4() c.plot() """ return import_gds( @@ -11834,15 +11834,15 @@ def or4bb_4() -> gf.Component: @cell -def or4bb_2() -> gf.Component: - """Returns or4bb_2 fixed cell. +def sky130_fd_sc_hd__or4bb_2() -> gf.Component: + """Returns sky130_fd_sc_hd__or4bb_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.or4bb_2() + c = sky130.components.sky130_fd_sc_hd__or4bb_2() c.plot() """ return import_gds( @@ -11852,15 +11852,15 @@ def or4bb_2() -> gf.Component: @cell -def tapvgnd_1() -> gf.Component: - """Returns tapvgnd_1 fixed cell. +def sky130_fd_sc_hd__tapvgnd_1() -> gf.Component: + """Returns sky130_fd_sc_hd__tapvgnd_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.tapvgnd_1() + c = sky130.components.sky130_fd_sc_hd__tapvgnd_1() c.plot() """ return import_gds( @@ -11870,15 +11870,15 @@ def tapvgnd_1() -> gf.Component: @cell -def lpflow_lsbuf_lh_isowell_4() -> gf.Component: - """Returns lpflow_lsbuf_lh_isowell_4 fixed cell. +def sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_lsbuf_lh_isowell_4() + c = sky130.components.sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4() c.plot() """ return import_gds( @@ -11888,15 +11888,15 @@ def lpflow_lsbuf_lh_isowell_4() -> gf.Component: @cell -def a32oi_2() -> gf.Component: - """Returns a32oi_2 fixed cell. +def sky130_fd_sc_hd__a32oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a32oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a32oi_2() + c = sky130.components.sky130_fd_sc_hd__a32oi_2() c.plot() """ return import_gds( @@ -11906,15 +11906,15 @@ def a32oi_2() -> gf.Component: @cell -def a32oi_1() -> gf.Component: - """Returns a32oi_1 fixed cell. +def sky130_fd_sc_hd__a32oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a32oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a32oi_1() + c = sky130.components.sky130_fd_sc_hd__a32oi_1() c.plot() """ return import_gds( @@ -11924,15 +11924,15 @@ def a32oi_1() -> gf.Component: @cell -def a32oi_4() -> gf.Component: - """Returns a32oi_4 fixed cell. +def sky130_fd_sc_hd__a32oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a32oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a32oi_4() + c = sky130.components.sky130_fd_sc_hd__a32oi_4() c.plot() """ return import_gds( @@ -11942,15 +11942,15 @@ def a32oi_4() -> gf.Component: @cell -def dfxbp_2() -> gf.Component: - """Returns dfxbp_2 fixed cell. +def sky130_fd_sc_hd__dfxbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfxbp_2() + c = sky130.components.sky130_fd_sc_hd__dfxbp_2() c.plot() """ return import_gds( @@ -11960,15 +11960,15 @@ def dfxbp_2() -> gf.Component: @cell -def dfxbp_1() -> gf.Component: - """Returns dfxbp_1 fixed cell. +def sky130_fd_sc_hd__dfxbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfxbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfxbp_1() + c = sky130.components.sky130_fd_sc_hd__dfxbp_1() c.plot() """ return import_gds( @@ -11978,15 +11978,15 @@ def dfxbp_1() -> gf.Component: @cell -def lpflow_isobufsrckapwr_16() -> gf.Component: - """Returns lpflow_isobufsrckapwr_16 fixed cell. +def sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_isobufsrckapwr_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_isobufsrckapwr_16() + c = sky130.components.sky130_fd_sc_hd__lpflow_isobufsrckapwr_16() c.plot() """ return import_gds( @@ -11996,15 +11996,15 @@ def lpflow_isobufsrckapwr_16() -> gf.Component: @cell -def probec_p_8() -> gf.Component: - """Returns probec_p_8 fixed cell. +def sky130_fd_sc_hd__probec_p_8() -> gf.Component: + """Returns sky130_fd_sc_hd__probec_p_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.probec_p_8() + c = sky130.components.sky130_fd_sc_hd__probec_p_8() c.plot() """ return import_gds( @@ -12014,15 +12014,15 @@ def probec_p_8() -> gf.Component: @cell -def o21ai_2() -> gf.Component: - """Returns o21ai_2 fixed cell. +def sky130_fd_sc_hd__o21ai_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ai_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21ai_2() + c = sky130.components.sky130_fd_sc_hd__o21ai_2() c.plot() """ return import_gds( @@ -12032,15 +12032,15 @@ def o21ai_2() -> gf.Component: @cell -def o21ai_0() -> gf.Component: - """Returns o21ai_0 fixed cell. +def sky130_fd_sc_hd__o21ai_0() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ai_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21ai_0() + c = sky130.components.sky130_fd_sc_hd__o21ai_0() c.plot() """ return import_gds( @@ -12050,15 +12050,15 @@ def o21ai_0() -> gf.Component: @cell -def o21ai_1() -> gf.Component: - """Returns o21ai_1 fixed cell. +def sky130_fd_sc_hd__o21ai_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ai_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21ai_1() + c = sky130.components.sky130_fd_sc_hd__o21ai_1() c.plot() """ return import_gds( @@ -12068,15 +12068,15 @@ def o21ai_1() -> gf.Component: @cell -def o21ai_4() -> gf.Component: - """Returns o21ai_4 fixed cell. +def sky130_fd_sc_hd__o21ai_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o21ai_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o21ai_4() + c = sky130.components.sky130_fd_sc_hd__o21ai_4() c.plot() """ return import_gds( @@ -12086,15 +12086,15 @@ def o21ai_4() -> gf.Component: @cell -def ebufn_4() -> gf.Component: - """Returns ebufn_4 fixed cell. +def sky130_fd_sc_hd__ebufn_4() -> gf.Component: + """Returns sky130_fd_sc_hd__ebufn_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.ebufn_4() + c = sky130.components.sky130_fd_sc_hd__ebufn_4() c.plot() """ return import_gds( @@ -12104,15 +12104,15 @@ def ebufn_4() -> gf.Component: @cell -def ebufn_8() -> gf.Component: - """Returns ebufn_8 fixed cell. +def sky130_fd_sc_hd__ebufn_8() -> gf.Component: + """Returns sky130_fd_sc_hd__ebufn_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.ebufn_8() + c = sky130.components.sky130_fd_sc_hd__ebufn_8() c.plot() """ return import_gds( @@ -12122,15 +12122,15 @@ def ebufn_8() -> gf.Component: @cell -def ebufn_1() -> gf.Component: - """Returns ebufn_1 fixed cell. +def sky130_fd_sc_hd__ebufn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__ebufn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.ebufn_1() + c = sky130.components.sky130_fd_sc_hd__ebufn_1() c.plot() """ return import_gds( @@ -12140,15 +12140,15 @@ def ebufn_1() -> gf.Component: @cell -def ebufn_2() -> gf.Component: - """Returns ebufn_2 fixed cell. +def sky130_fd_sc_hd__ebufn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__ebufn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.ebufn_2() + c = sky130.components.sky130_fd_sc_hd__ebufn_2() c.plot() """ return import_gds( @@ -12158,15 +12158,15 @@ def ebufn_2() -> gf.Component: @cell -def o31a_1() -> gf.Component: - """Returns o31a_1 fixed cell. +def sky130_fd_sc_hd__o31a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o31a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o31a_1() + c = sky130.components.sky130_fd_sc_hd__o31a_1() c.plot() """ return import_gds( @@ -12176,15 +12176,15 @@ def o31a_1() -> gf.Component: @cell -def o31a_4() -> gf.Component: - """Returns o31a_4 fixed cell. +def sky130_fd_sc_hd__o31a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o31a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o31a_4() + c = sky130.components.sky130_fd_sc_hd__o31a_4() c.plot() """ return import_gds( @@ -12194,15 +12194,15 @@ def o31a_4() -> gf.Component: @cell -def o31a_2() -> gf.Component: - """Returns o31a_2 fixed cell. +def sky130_fd_sc_hd__o31a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o31a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o31a_2() + c = sky130.components.sky130_fd_sc_hd__o31a_2() c.plot() """ return import_gds( @@ -12212,15 +12212,15 @@ def o31a_2() -> gf.Component: @cell -def maj3_2() -> gf.Component: - """Returns maj3_2 fixed cell. +def sky130_fd_sc_hd__maj3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__maj3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.maj3_2() + c = sky130.components.sky130_fd_sc_hd__maj3_2() c.plot() """ return import_gds( @@ -12230,15 +12230,15 @@ def maj3_2() -> gf.Component: @cell -def maj3_4() -> gf.Component: - """Returns maj3_4 fixed cell. +def sky130_fd_sc_hd__maj3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__maj3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.maj3_4() + c = sky130.components.sky130_fd_sc_hd__maj3_4() c.plot() """ return import_gds( @@ -12248,15 +12248,15 @@ def maj3_4() -> gf.Component: @cell -def maj3_1() -> gf.Component: - """Returns maj3_1 fixed cell. +def sky130_fd_sc_hd__maj3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__maj3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.maj3_1() + c = sky130.components.sky130_fd_sc_hd__maj3_1() c.plot() """ return import_gds( @@ -12266,15 +12266,15 @@ def maj3_1() -> gf.Component: @cell -def sdfsbp_1() -> gf.Component: - """Returns sdfsbp_1 fixed cell. +def sky130_fd_sc_hd__sdfsbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfsbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfsbp_1() + c = sky130.components.sky130_fd_sc_hd__sdfsbp_1() c.plot() """ return import_gds( @@ -12284,15 +12284,15 @@ def sdfsbp_1() -> gf.Component: @cell -def sdfsbp_2() -> gf.Component: - """Returns sdfsbp_2 fixed cell. +def sky130_fd_sc_hd__sdfsbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdfsbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdfsbp_2() + c = sky130.components.sky130_fd_sc_hd__sdfsbp_2() c.plot() """ return import_gds( @@ -12302,15 +12302,15 @@ def sdfsbp_2() -> gf.Component: @cell -def lpflow_inputiso1p_1() -> gf.Component: - """Returns lpflow_inputiso1p_1 fixed cell. +def sky130_fd_sc_hd__lpflow_inputiso1p_1() -> gf.Component: + """Returns sky130_fd_sc_hd__lpflow_inputiso1p_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.lpflow_inputiso1p_1() + c = sky130.components.sky130_fd_sc_hd__lpflow_inputiso1p_1() c.plot() """ return import_gds( @@ -12320,15 +12320,15 @@ def lpflow_inputiso1p_1() -> gf.Component: @cell -def ha_1() -> gf.Component: - """Returns ha_1 fixed cell. +def sky130_fd_sc_hd__ha_1() -> gf.Component: + """Returns sky130_fd_sc_hd__ha_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.ha_1() + c = sky130.components.sky130_fd_sc_hd__ha_1() c.plot() """ return import_gds( @@ -12338,15 +12338,15 @@ def ha_1() -> gf.Component: @cell -def ha_2() -> gf.Component: - """Returns ha_2 fixed cell. +def sky130_fd_sc_hd__ha_2() -> gf.Component: + """Returns sky130_fd_sc_hd__ha_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.ha_2() + c = sky130.components.sky130_fd_sc_hd__ha_2() c.plot() """ return import_gds( @@ -12356,15 +12356,15 @@ def ha_2() -> gf.Component: @cell -def ha_4() -> gf.Component: - """Returns ha_4 fixed cell. +def sky130_fd_sc_hd__ha_4() -> gf.Component: + """Returns sky130_fd_sc_hd__ha_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.ha_4() + c = sky130.components.sky130_fd_sc_hd__ha_4() c.plot() """ return import_gds( @@ -12374,15 +12374,15 @@ def ha_4() -> gf.Component: @cell -def a2111oi_2() -> gf.Component: - """Returns a2111oi_2 fixed cell. +def sky130_fd_sc_hd__a2111oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2111oi_2() + c = sky130.components.sky130_fd_sc_hd__a2111oi_2() c.plot() """ return import_gds( @@ -12392,15 +12392,15 @@ def a2111oi_2() -> gf.Component: @cell -def a2111oi_4() -> gf.Component: - """Returns a2111oi_4 fixed cell. +def sky130_fd_sc_hd__a2111oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2111oi_4() + c = sky130.components.sky130_fd_sc_hd__a2111oi_4() c.plot() """ return import_gds( @@ -12410,15 +12410,15 @@ def a2111oi_4() -> gf.Component: @cell -def a2111oi_1() -> gf.Component: - """Returns a2111oi_1 fixed cell. +def sky130_fd_sc_hd__a2111oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2111oi_1() + c = sky130.components.sky130_fd_sc_hd__a2111oi_1() c.plot() """ return import_gds( @@ -12428,15 +12428,15 @@ def a2111oi_1() -> gf.Component: @cell -def a2111oi_0() -> gf.Component: - """Returns a2111oi_0 fixed cell. +def sky130_fd_sc_hd__a2111oi_0() -> gf.Component: + """Returns sky130_fd_sc_hd__a2111oi_0 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a2111oi_0() + c = sky130.components.sky130_fd_sc_hd__a2111oi_0() c.plot() """ return import_gds( @@ -12446,15 +12446,15 @@ def a2111oi_0() -> gf.Component: @cell -def o2bb2a_2() -> gf.Component: - """Returns o2bb2a_2 fixed cell. +def sky130_fd_sc_hd__o2bb2a_2() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2a_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2bb2a_2() + c = sky130.components.sky130_fd_sc_hd__o2bb2a_2() c.plot() """ return import_gds( @@ -12464,15 +12464,15 @@ def o2bb2a_2() -> gf.Component: @cell -def o2bb2a_1() -> gf.Component: - """Returns o2bb2a_1 fixed cell. +def sky130_fd_sc_hd__o2bb2a_1() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2a_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2bb2a_1() + c = sky130.components.sky130_fd_sc_hd__o2bb2a_1() c.plot() """ return import_gds( @@ -12482,15 +12482,15 @@ def o2bb2a_1() -> gf.Component: @cell -def o2bb2a_4() -> gf.Component: - """Returns o2bb2a_4 fixed cell. +def sky130_fd_sc_hd__o2bb2a_4() -> gf.Component: + """Returns sky130_fd_sc_hd__o2bb2a_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.o2bb2a_4() + c = sky130.components.sky130_fd_sc_hd__o2bb2a_4() c.plot() """ return import_gds( @@ -12500,15 +12500,15 @@ def o2bb2a_4() -> gf.Component: @cell -def dlymetal6s6s_1() -> gf.Component: - """Returns dlymetal6s6s_1 fixed cell. +def sky130_fd_sc_hd__dlymetal6s6s_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlymetal6s6s_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlymetal6s6s_1() + c = sky130.components.sky130_fd_sc_hd__dlymetal6s6s_1() c.plot() """ return import_gds( @@ -12518,15 +12518,15 @@ def dlymetal6s6s_1() -> gf.Component: @cell -def a222oi_1() -> gf.Component: - """Returns a222oi_1 fixed cell. +def sky130_fd_sc_hd__a222oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a222oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a222oi_1() + c = sky130.components.sky130_fd_sc_hd__a222oi_1() c.plot() """ return import_gds( @@ -12536,15 +12536,15 @@ def a222oi_1() -> gf.Component: @cell -def dfbbn_1() -> gf.Component: - """Returns dfbbn_1 fixed cell. +def sky130_fd_sc_hd__dfbbn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dfbbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfbbn_1() + c = sky130.components.sky130_fd_sc_hd__dfbbn_1() c.plot() """ return import_gds( @@ -12554,15 +12554,15 @@ def dfbbn_1() -> gf.Component: @cell -def dfbbn_2() -> gf.Component: - """Returns dfbbn_2 fixed cell. +def sky130_fd_sc_hd__dfbbn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dfbbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dfbbn_2() + c = sky130.components.sky130_fd_sc_hd__dfbbn_2() c.plot() """ return import_gds( @@ -12572,15 +12572,15 @@ def dfbbn_2() -> gf.Component: @cell -def fahcin_1() -> gf.Component: - """Returns fahcin_1 fixed cell. +def sky130_fd_sc_hd__fahcin_1() -> gf.Component: + """Returns sky130_fd_sc_hd__fahcin_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.fahcin_1() + c = sky130.components.sky130_fd_sc_hd__fahcin_1() c.plot() """ return import_gds( @@ -12590,15 +12590,15 @@ def fahcin_1() -> gf.Component: @cell -def sdlclkp_2() -> gf.Component: - """Returns sdlclkp_2 fixed cell. +def sky130_fd_sc_hd__sdlclkp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__sdlclkp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdlclkp_2() + c = sky130.components.sky130_fd_sc_hd__sdlclkp_2() c.plot() """ return import_gds( @@ -12608,15 +12608,15 @@ def sdlclkp_2() -> gf.Component: @cell -def sdlclkp_4() -> gf.Component: - """Returns sdlclkp_4 fixed cell. +def sky130_fd_sc_hd__sdlclkp_4() -> gf.Component: + """Returns sky130_fd_sc_hd__sdlclkp_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdlclkp_4() + c = sky130.components.sky130_fd_sc_hd__sdlclkp_4() c.plot() """ return import_gds( @@ -12626,15 +12626,15 @@ def sdlclkp_4() -> gf.Component: @cell -def sdlclkp_1() -> gf.Component: - """Returns sdlclkp_1 fixed cell. +def sky130_fd_sc_hd__sdlclkp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__sdlclkp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.sdlclkp_1() + c = sky130.components.sky130_fd_sc_hd__sdlclkp_1() c.plot() """ return import_gds( @@ -12644,15 +12644,15 @@ def sdlclkp_1() -> gf.Component: @cell -def clkdlybuf4s50_1() -> gf.Component: - """Returns clkdlybuf4s50_1 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s50_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s50_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkdlybuf4s50_1() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_1() c.plot() """ return import_gds( @@ -12662,15 +12662,15 @@ def clkdlybuf4s50_1() -> gf.Component: @cell -def clkdlybuf4s50_2() -> gf.Component: - """Returns clkdlybuf4s50_2 fixed cell. +def sky130_fd_sc_hd__clkdlybuf4s50_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkdlybuf4s50_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkdlybuf4s50_2() + c = sky130.components.sky130_fd_sc_hd__clkdlybuf4s50_2() c.plot() """ return import_gds( @@ -12680,15 +12680,15 @@ def clkdlybuf4s50_2() -> gf.Component: @cell -def dlxtp_1() -> gf.Component: - """Returns dlxtp_1 fixed cell. +def sky130_fd_sc_hd__dlxtp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlxtp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlxtp_1() + c = sky130.components.sky130_fd_sc_hd__dlxtp_1() c.plot() """ return import_gds( @@ -12698,15 +12698,15 @@ def dlxtp_1() -> gf.Component: @cell -def nand4b_2() -> gf.Component: - """Returns nand4b_2 fixed cell. +def sky130_fd_sc_hd__nand4b_2() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4b_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand4b_2() + c = sky130.components.sky130_fd_sc_hd__nand4b_2() c.plot() """ return import_gds( @@ -12716,15 +12716,15 @@ def nand4b_2() -> gf.Component: @cell -def nand4b_1() -> gf.Component: - """Returns nand4b_1 fixed cell. +def sky130_fd_sc_hd__nand4b_1() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4b_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand4b_1() + c = sky130.components.sky130_fd_sc_hd__nand4b_1() c.plot() """ return import_gds( @@ -12734,15 +12734,15 @@ def nand4b_1() -> gf.Component: @cell -def nand4b_4() -> gf.Component: - """Returns nand4b_4 fixed cell. +def sky130_fd_sc_hd__nand4b_4() -> gf.Component: + """Returns sky130_fd_sc_hd__nand4b_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.nand4b_4() + c = sky130.components.sky130_fd_sc_hd__nand4b_4() c.plot() """ return import_gds( @@ -12752,15 +12752,15 @@ def nand4b_4() -> gf.Component: @cell -def xnor3_4() -> gf.Component: - """Returns xnor3_4 fixed cell. +def sky130_fd_sc_hd__xnor3_4() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor3_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xnor3_4() + c = sky130.components.sky130_fd_sc_hd__xnor3_4() c.plot() """ return import_gds( @@ -12770,15 +12770,15 @@ def xnor3_4() -> gf.Component: @cell -def xnor3_1() -> gf.Component: - """Returns xnor3_1 fixed cell. +def sky130_fd_sc_hd__xnor3_1() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor3_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xnor3_1() + c = sky130.components.sky130_fd_sc_hd__xnor3_1() c.plot() """ return import_gds( @@ -12788,15 +12788,15 @@ def xnor3_1() -> gf.Component: @cell -def xnor3_2() -> gf.Component: - """Returns xnor3_2 fixed cell. +def sky130_fd_sc_hd__xnor3_2() -> gf.Component: + """Returns sky130_fd_sc_hd__xnor3_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.xnor3_2() + c = sky130.components.sky130_fd_sc_hd__xnor3_2() c.plot() """ return import_gds( @@ -12806,15 +12806,15 @@ def xnor3_2() -> gf.Component: @cell -def clkbuf_2() -> gf.Component: - """Returns clkbuf_2 fixed cell. +def sky130_fd_sc_hd__clkbuf_2() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkbuf_2() + c = sky130.components.sky130_fd_sc_hd__clkbuf_2() c.plot() """ return import_gds( @@ -12824,15 +12824,15 @@ def clkbuf_2() -> gf.Component: @cell -def clkbuf_1() -> gf.Component: - """Returns clkbuf_1 fixed cell. +def sky130_fd_sc_hd__clkbuf_1() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkbuf_1() + c = sky130.components.sky130_fd_sc_hd__clkbuf_1() c.plot() """ return import_gds( @@ -12842,15 +12842,15 @@ def clkbuf_1() -> gf.Component: @cell -def clkbuf_4() -> gf.Component: - """Returns clkbuf_4 fixed cell. +def sky130_fd_sc_hd__clkbuf_4() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkbuf_4() + c = sky130.components.sky130_fd_sc_hd__clkbuf_4() c.plot() """ return import_gds( @@ -12860,15 +12860,15 @@ def clkbuf_4() -> gf.Component: @cell -def clkbuf_16() -> gf.Component: - """Returns clkbuf_16 fixed cell. +def sky130_fd_sc_hd__clkbuf_16() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkbuf_16() + c = sky130.components.sky130_fd_sc_hd__clkbuf_16() c.plot() """ return import_gds( @@ -12878,15 +12878,15 @@ def clkbuf_16() -> gf.Component: @cell -def clkbuf_8() -> gf.Component: - """Returns clkbuf_8 fixed cell. +def sky130_fd_sc_hd__clkbuf_8() -> gf.Component: + """Returns sky130_fd_sc_hd__clkbuf_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.clkbuf_8() + c = sky130.components.sky130_fd_sc_hd__clkbuf_8() c.plot() """ return import_gds( @@ -12896,15 +12896,15 @@ def clkbuf_8() -> gf.Component: @cell -def dlrbn_1() -> gf.Component: - """Returns dlrbn_1 fixed cell. +def sky130_fd_sc_hd__dlrbn_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrbn_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrbn_1() + c = sky130.components.sky130_fd_sc_hd__dlrbn_1() c.plot() """ return import_gds( @@ -12914,15 +12914,15 @@ def dlrbn_1() -> gf.Component: @cell -def dlrbn_2() -> gf.Component: - """Returns dlrbn_2 fixed cell. +def sky130_fd_sc_hd__dlrbn_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrbn_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrbn_2() + c = sky130.components.sky130_fd_sc_hd__dlrbn_2() c.plot() """ return import_gds( @@ -12932,15 +12932,15 @@ def dlrbn_2() -> gf.Component: @cell -def bufinv_8() -> gf.Component: - """Returns bufinv_8 fixed cell. +def sky130_fd_sc_hd__bufinv_8() -> gf.Component: + """Returns sky130_fd_sc_hd__bufinv_8 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.bufinv_8() + c = sky130.components.sky130_fd_sc_hd__bufinv_8() c.plot() """ return import_gds( @@ -12950,15 +12950,15 @@ def bufinv_8() -> gf.Component: @cell -def bufinv_16() -> gf.Component: - """Returns bufinv_16 fixed cell. +def sky130_fd_sc_hd__bufinv_16() -> gf.Component: + """Returns sky130_fd_sc_hd__bufinv_16 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.bufinv_16() + c = sky130.components.sky130_fd_sc_hd__bufinv_16() c.plot() """ return import_gds( @@ -12968,15 +12968,15 @@ def bufinv_16() -> gf.Component: @cell -def a211oi_2() -> gf.Component: - """Returns a211oi_2 fixed cell. +def sky130_fd_sc_hd__a211oi_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a211oi_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a211oi_2() + c = sky130.components.sky130_fd_sc_hd__a211oi_2() c.plot() """ return import_gds( @@ -12986,15 +12986,15 @@ def a211oi_2() -> gf.Component: @cell -def a211oi_4() -> gf.Component: - """Returns a211oi_4 fixed cell. +def sky130_fd_sc_hd__a211oi_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a211oi_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a211oi_4() + c = sky130.components.sky130_fd_sc_hd__a211oi_4() c.plot() """ return import_gds( @@ -13004,15 +13004,15 @@ def a211oi_4() -> gf.Component: @cell -def a211oi_1() -> gf.Component: - """Returns a211oi_1 fixed cell. +def sky130_fd_sc_hd__a211oi_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a211oi_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a211oi_1() + c = sky130.components.sky130_fd_sc_hd__a211oi_1() c.plot() """ return import_gds( @@ -13022,15 +13022,15 @@ def a211oi_1() -> gf.Component: @cell -def dlrbp_2() -> gf.Component: - """Returns dlrbp_2 fixed cell. +def sky130_fd_sc_hd__dlrbp_2() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrbp_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrbp_2() + c = sky130.components.sky130_fd_sc_hd__dlrbp_2() c.plot() """ return import_gds( @@ -13040,15 +13040,15 @@ def dlrbp_2() -> gf.Component: @cell -def dlrbp_1() -> gf.Component: - """Returns dlrbp_1 fixed cell. +def sky130_fd_sc_hd__dlrbp_1() -> gf.Component: + """Returns sky130_fd_sc_hd__dlrbp_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.dlrbp_1() + c = sky130.components.sky130_fd_sc_hd__dlrbp_1() c.plot() """ return import_gds( @@ -13058,15 +13058,15 @@ def dlrbp_1() -> gf.Component: @cell -def tapvpwrvgnd_1() -> gf.Component: - """Returns tapvpwrvgnd_1 fixed cell. +def sky130_fd_sc_hd__tapvpwrvgnd_1() -> gf.Component: + """Returns sky130_fd_sc_hd__tapvpwrvgnd_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.tapvpwrvgnd_1() + c = sky130.components.sky130_fd_sc_hd__tapvpwrvgnd_1() c.plot() """ return import_gds( @@ -13076,15 +13076,15 @@ def tapvpwrvgnd_1() -> gf.Component: @cell -def a21bo_4() -> gf.Component: - """Returns a21bo_4 fixed cell. +def sky130_fd_sc_hd__a21bo_4() -> gf.Component: + """Returns sky130_fd_sc_hd__a21bo_4 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21bo_4() + c = sky130.components.sky130_fd_sc_hd__a21bo_4() c.plot() """ return import_gds( @@ -13094,15 +13094,15 @@ def a21bo_4() -> gf.Component: @cell -def a21bo_2() -> gf.Component: - """Returns a21bo_2 fixed cell. +def sky130_fd_sc_hd__a21bo_2() -> gf.Component: + """Returns sky130_fd_sc_hd__a21bo_2 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21bo_2() + c = sky130.components.sky130_fd_sc_hd__a21bo_2() c.plot() """ return import_gds( @@ -13112,15 +13112,15 @@ def a21bo_2() -> gf.Component: @cell -def a21bo_1() -> gf.Component: - """Returns a21bo_1 fixed cell. +def sky130_fd_sc_hd__a21bo_1() -> gf.Component: + """Returns sky130_fd_sc_hd__a21bo_1 fixed cell. .. plot:: :include-source: import sky130 - c = sky130.components.a21bo_1() + c = sky130.components.sky130_fd_sc_hd__a21bo_1() c.plot() """ return import_gds( diff --git a/tests/test_components/test_pdk_settings_a2111o_1_.yml b/tests/test_components/test_pdk_settings_a2111o_1_.yml deleted file mode 100644 index 9bcaab243..000000000 --- a/tests/test_components/test_pdk_settings_a2111o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2111o_1 -info: {} -module: sky130.components -name: a2111o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111o_2_.yml b/tests/test_components/test_pdk_settings_a2111o_2_.yml deleted file mode 100644 index 808ae76fb..000000000 --- a/tests/test_components/test_pdk_settings_a2111o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2111o_2 -info: {} -module: sky130.components -name: a2111o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111o_4_.yml b/tests/test_components/test_pdk_settings_a2111o_4_.yml deleted file mode 100644 index 90a033d8d..000000000 --- a/tests/test_components/test_pdk_settings_a2111o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2111o_4 -info: {} -module: sky130.components -name: a2111o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111oi_0_.yml b/tests/test_components/test_pdk_settings_a2111oi_0_.yml deleted file mode 100644 index ad497c306..000000000 --- a/tests/test_components/test_pdk_settings_a2111oi_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2111oi_0 -info: {} -module: sky130.components -name: a2111oi_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111oi_1_.yml b/tests/test_components/test_pdk_settings_a2111oi_1_.yml deleted file mode 100644 index 2e481c58e..000000000 --- a/tests/test_components/test_pdk_settings_a2111oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2111oi_1 -info: {} -module: sky130.components -name: a2111oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111oi_2_.yml b/tests/test_components/test_pdk_settings_a2111oi_2_.yml deleted file mode 100644 index 4237c8279..000000000 --- a/tests/test_components/test_pdk_settings_a2111oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2111oi_2 -info: {} -module: sky130.components -name: a2111oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2111oi_4_.yml b/tests/test_components/test_pdk_settings_a2111oi_4_.yml deleted file mode 100644 index fb2a0ec1c..000000000 --- a/tests/test_components/test_pdk_settings_a2111oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2111oi_4 -info: {} -module: sky130.components -name: a2111oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a211o_1_.yml b/tests/test_components/test_pdk_settings_a211o_1_.yml deleted file mode 100644 index 9b1fc4e39..000000000 --- a/tests/test_components/test_pdk_settings_a211o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a211o_1 -info: {} -module: sky130.components -name: a211o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a211o_2_.yml b/tests/test_components/test_pdk_settings_a211o_2_.yml deleted file mode 100644 index a360f305d..000000000 --- a/tests/test_components/test_pdk_settings_a211o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a211o_2 -info: {} -module: sky130.components -name: a211o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a211o_4_.yml b/tests/test_components/test_pdk_settings_a211o_4_.yml deleted file mode 100644 index 86f895cac..000000000 --- a/tests/test_components/test_pdk_settings_a211o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a211o_4 -info: {} -module: sky130.components -name: a211o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a211oi_1_.yml b/tests/test_components/test_pdk_settings_a211oi_1_.yml deleted file mode 100644 index 2c32bbf0e..000000000 --- a/tests/test_components/test_pdk_settings_a211oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a211oi_1 -info: {} -module: sky130.components -name: a211oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a211oi_2_.yml b/tests/test_components/test_pdk_settings_a211oi_2_.yml deleted file mode 100644 index 227036ca9..000000000 --- a/tests/test_components/test_pdk_settings_a211oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a211oi_2 -info: {} -module: sky130.components -name: a211oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a211oi_4_.yml b/tests/test_components/test_pdk_settings_a211oi_4_.yml deleted file mode 100644 index 57140c47d..000000000 --- a/tests/test_components/test_pdk_settings_a211oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a211oi_4 -info: {} -module: sky130.components -name: a211oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21bo_1_.yml b/tests/test_components/test_pdk_settings_a21bo_1_.yml deleted file mode 100644 index 8f17cc26a..000000000 --- a/tests/test_components/test_pdk_settings_a21bo_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21bo_1 -info: {} -module: sky130.components -name: a21bo_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21bo_2_.yml b/tests/test_components/test_pdk_settings_a21bo_2_.yml deleted file mode 100644 index 1dfbbe038..000000000 --- a/tests/test_components/test_pdk_settings_a21bo_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21bo_2 -info: {} -module: sky130.components -name: a21bo_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21bo_4_.yml b/tests/test_components/test_pdk_settings_a21bo_4_.yml deleted file mode 100644 index 5e76eded2..000000000 --- a/tests/test_components/test_pdk_settings_a21bo_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21bo_4 -info: {} -module: sky130.components -name: a21bo_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21boi_0_.yml b/tests/test_components/test_pdk_settings_a21boi_0_.yml deleted file mode 100644 index 834c958d1..000000000 --- a/tests/test_components/test_pdk_settings_a21boi_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21boi_0 -info: {} -module: sky130.components -name: a21boi_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21boi_1_.yml b/tests/test_components/test_pdk_settings_a21boi_1_.yml deleted file mode 100644 index 1d6fca562..000000000 --- a/tests/test_components/test_pdk_settings_a21boi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21boi_1 -info: {} -module: sky130.components -name: a21boi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21boi_2_.yml b/tests/test_components/test_pdk_settings_a21boi_2_.yml deleted file mode 100644 index c6b238b98..000000000 --- a/tests/test_components/test_pdk_settings_a21boi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21boi_2 -info: {} -module: sky130.components -name: a21boi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21boi_4_.yml b/tests/test_components/test_pdk_settings_a21boi_4_.yml deleted file mode 100644 index ebde1ef72..000000000 --- a/tests/test_components/test_pdk_settings_a21boi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21boi_4 -info: {} -module: sky130.components -name: a21boi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21oi_1_.yml b/tests/test_components/test_pdk_settings_a21oi_1_.yml deleted file mode 100644 index 8f40eabf5..000000000 --- a/tests/test_components/test_pdk_settings_a21oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21oi_1 -info: {} -module: sky130.components -name: a21oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21oi_2_.yml b/tests/test_components/test_pdk_settings_a21oi_2_.yml deleted file mode 100644 index d1be3f6e1..000000000 --- a/tests/test_components/test_pdk_settings_a21oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21oi_2 -info: {} -module: sky130.components -name: a21oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a21oi_4_.yml b/tests/test_components/test_pdk_settings_a21oi_4_.yml deleted file mode 100644 index dcdcf93ff..000000000 --- a/tests/test_components/test_pdk_settings_a21oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a21oi_4 -info: {} -module: sky130.components -name: a21oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a221o_1_.yml b/tests/test_components/test_pdk_settings_a221o_1_.yml deleted file mode 100644 index 7e5ae09bf..000000000 --- a/tests/test_components/test_pdk_settings_a221o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a221o_1 -info: {} -module: sky130.components -name: a221o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a221o_2_.yml b/tests/test_components/test_pdk_settings_a221o_2_.yml deleted file mode 100644 index 199c4e75f..000000000 --- a/tests/test_components/test_pdk_settings_a221o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a221o_2 -info: {} -module: sky130.components -name: a221o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a221o_4_.yml b/tests/test_components/test_pdk_settings_a221o_4_.yml deleted file mode 100644 index 4dd0cdf11..000000000 --- a/tests/test_components/test_pdk_settings_a221o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a221o_4 -info: {} -module: sky130.components -name: a221o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a221oi_1_.yml b/tests/test_components/test_pdk_settings_a221oi_1_.yml deleted file mode 100644 index ef1164b0b..000000000 --- a/tests/test_components/test_pdk_settings_a221oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a221oi_1 -info: {} -module: sky130.components -name: a221oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a221oi_2_.yml b/tests/test_components/test_pdk_settings_a221oi_2_.yml deleted file mode 100644 index c053ddde7..000000000 --- a/tests/test_components/test_pdk_settings_a221oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a221oi_2 -info: {} -module: sky130.components -name: a221oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a221oi_4_.yml b/tests/test_components/test_pdk_settings_a221oi_4_.yml deleted file mode 100644 index 716b67219..000000000 --- a/tests/test_components/test_pdk_settings_a221oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a221oi_4 -info: {} -module: sky130.components -name: a221oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a222oi_1_.yml b/tests/test_components/test_pdk_settings_a222oi_1_.yml deleted file mode 100644 index a0d16e03e..000000000 --- a/tests/test_components/test_pdk_settings_a222oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a222oi_1 -info: {} -module: sky130.components -name: a222oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a22o_1_.yml b/tests/test_components/test_pdk_settings_a22o_1_.yml deleted file mode 100644 index 87ebe28d5..000000000 --- a/tests/test_components/test_pdk_settings_a22o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a22o_1 -info: {} -module: sky130.components -name: a22o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a22o_2_.yml b/tests/test_components/test_pdk_settings_a22o_2_.yml deleted file mode 100644 index 9c0cb808c..000000000 --- a/tests/test_components/test_pdk_settings_a22o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a22o_2 -info: {} -module: sky130.components -name: a22o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a22o_4_.yml b/tests/test_components/test_pdk_settings_a22o_4_.yml deleted file mode 100644 index 364d8f6f3..000000000 --- a/tests/test_components/test_pdk_settings_a22o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a22o_4 -info: {} -module: sky130.components -name: a22o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a22oi_1_.yml b/tests/test_components/test_pdk_settings_a22oi_1_.yml deleted file mode 100644 index 62450d424..000000000 --- a/tests/test_components/test_pdk_settings_a22oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a22oi_1 -info: {} -module: sky130.components -name: a22oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a22oi_2_.yml b/tests/test_components/test_pdk_settings_a22oi_2_.yml deleted file mode 100644 index 48fdd60e2..000000000 --- a/tests/test_components/test_pdk_settings_a22oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a22oi_2 -info: {} -module: sky130.components -name: a22oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a22oi_4_.yml b/tests/test_components/test_pdk_settings_a22oi_4_.yml deleted file mode 100644 index c1d33a9af..000000000 --- a/tests/test_components/test_pdk_settings_a22oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a22oi_4 -info: {} -module: sky130.components -name: a22oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2o_1_.yml b/tests/test_components/test_pdk_settings_a2bb2o_1_.yml deleted file mode 100644 index 300b5c182..000000000 --- a/tests/test_components/test_pdk_settings_a2bb2o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2bb2o_1 -info: {} -module: sky130.components -name: a2bb2o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2o_2_.yml b/tests/test_components/test_pdk_settings_a2bb2o_2_.yml deleted file mode 100644 index d1d3bba0b..000000000 --- a/tests/test_components/test_pdk_settings_a2bb2o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2bb2o_2 -info: {} -module: sky130.components -name: a2bb2o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2o_4_.yml b/tests/test_components/test_pdk_settings_a2bb2o_4_.yml deleted file mode 100644 index aa3771ff4..000000000 --- a/tests/test_components/test_pdk_settings_a2bb2o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2bb2o_4 -info: {} -module: sky130.components -name: a2bb2o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2oi_1_.yml b/tests/test_components/test_pdk_settings_a2bb2oi_1_.yml deleted file mode 100644 index 88f20e041..000000000 --- a/tests/test_components/test_pdk_settings_a2bb2oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2bb2oi_1 -info: {} -module: sky130.components -name: a2bb2oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2oi_2_.yml b/tests/test_components/test_pdk_settings_a2bb2oi_2_.yml deleted file mode 100644 index 51e4e2c4e..000000000 --- a/tests/test_components/test_pdk_settings_a2bb2oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2bb2oi_2 -info: {} -module: sky130.components -name: a2bb2oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a2bb2oi_4_.yml b/tests/test_components/test_pdk_settings_a2bb2oi_4_.yml deleted file mode 100644 index 60430e640..000000000 --- a/tests/test_components/test_pdk_settings_a2bb2oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a2bb2oi_4 -info: {} -module: sky130.components -name: a2bb2oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a311o_1_.yml b/tests/test_components/test_pdk_settings_a311o_1_.yml deleted file mode 100644 index 6e7edeecc..000000000 --- a/tests/test_components/test_pdk_settings_a311o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a311o_1 -info: {} -module: sky130.components -name: a311o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a311o_2_.yml b/tests/test_components/test_pdk_settings_a311o_2_.yml deleted file mode 100644 index 1a8f45491..000000000 --- a/tests/test_components/test_pdk_settings_a311o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a311o_2 -info: {} -module: sky130.components -name: a311o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a311o_4_.yml b/tests/test_components/test_pdk_settings_a311o_4_.yml deleted file mode 100644 index cc3e61c8e..000000000 --- a/tests/test_components/test_pdk_settings_a311o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a311o_4 -info: {} -module: sky130.components -name: a311o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a311oi_1_.yml b/tests/test_components/test_pdk_settings_a311oi_1_.yml deleted file mode 100644 index 4ce6f4ff5..000000000 --- a/tests/test_components/test_pdk_settings_a311oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a311oi_1 -info: {} -module: sky130.components -name: a311oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a311oi_2_.yml b/tests/test_components/test_pdk_settings_a311oi_2_.yml deleted file mode 100644 index 307fb942d..000000000 --- a/tests/test_components/test_pdk_settings_a311oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a311oi_2 -info: {} -module: sky130.components -name: a311oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a311oi_4_.yml b/tests/test_components/test_pdk_settings_a311oi_4_.yml deleted file mode 100644 index 36774f541..000000000 --- a/tests/test_components/test_pdk_settings_a311oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a311oi_4 -info: {} -module: sky130.components -name: a311oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a31o_1_.yml b/tests/test_components/test_pdk_settings_a31o_1_.yml deleted file mode 100644 index 4c73442ec..000000000 --- a/tests/test_components/test_pdk_settings_a31o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a31o_1 -info: {} -module: sky130.components -name: a31o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a31o_2_.yml b/tests/test_components/test_pdk_settings_a31o_2_.yml deleted file mode 100644 index e560d54ab..000000000 --- a/tests/test_components/test_pdk_settings_a31o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a31o_2 -info: {} -module: sky130.components -name: a31o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a31o_4_.yml b/tests/test_components/test_pdk_settings_a31o_4_.yml deleted file mode 100644 index 9029675fc..000000000 --- a/tests/test_components/test_pdk_settings_a31o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a31o_4 -info: {} -module: sky130.components -name: a31o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a31oi_1_.yml b/tests/test_components/test_pdk_settings_a31oi_1_.yml deleted file mode 100644 index c7027a2af..000000000 --- a/tests/test_components/test_pdk_settings_a31oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a31oi_1 -info: {} -module: sky130.components -name: a31oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a31oi_2_.yml b/tests/test_components/test_pdk_settings_a31oi_2_.yml deleted file mode 100644 index 12e4e6274..000000000 --- a/tests/test_components/test_pdk_settings_a31oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a31oi_2 -info: {} -module: sky130.components -name: a31oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a31oi_4_.yml b/tests/test_components/test_pdk_settings_a31oi_4_.yml deleted file mode 100644 index 8cf1b8fe3..000000000 --- a/tests/test_components/test_pdk_settings_a31oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a31oi_4 -info: {} -module: sky130.components -name: a31oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a32o_1_.yml b/tests/test_components/test_pdk_settings_a32o_1_.yml deleted file mode 100644 index 4e3f7bb94..000000000 --- a/tests/test_components/test_pdk_settings_a32o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a32o_1 -info: {} -module: sky130.components -name: a32o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a32o_2_.yml b/tests/test_components/test_pdk_settings_a32o_2_.yml deleted file mode 100644 index 9f23cf22e..000000000 --- a/tests/test_components/test_pdk_settings_a32o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a32o_2 -info: {} -module: sky130.components -name: a32o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a32o_4_.yml b/tests/test_components/test_pdk_settings_a32o_4_.yml deleted file mode 100644 index df3856757..000000000 --- a/tests/test_components/test_pdk_settings_a32o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a32o_4 -info: {} -module: sky130.components -name: a32o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a32oi_1_.yml b/tests/test_components/test_pdk_settings_a32oi_1_.yml deleted file mode 100644 index 6c95f40be..000000000 --- a/tests/test_components/test_pdk_settings_a32oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a32oi_1 -info: {} -module: sky130.components -name: a32oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a32oi_2_.yml b/tests/test_components/test_pdk_settings_a32oi_2_.yml deleted file mode 100644 index 2bca2f871..000000000 --- a/tests/test_components/test_pdk_settings_a32oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a32oi_2 -info: {} -module: sky130.components -name: a32oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a32oi_4_.yml b/tests/test_components/test_pdk_settings_a32oi_4_.yml deleted file mode 100644 index 61672f63a..000000000 --- a/tests/test_components/test_pdk_settings_a32oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a32oi_4 -info: {} -module: sky130.components -name: a32oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a41o_1_.yml b/tests/test_components/test_pdk_settings_a41o_1_.yml deleted file mode 100644 index 731468819..000000000 --- a/tests/test_components/test_pdk_settings_a41o_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a41o_1 -info: {} -module: sky130.components -name: a41o_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a41o_2_.yml b/tests/test_components/test_pdk_settings_a41o_2_.yml deleted file mode 100644 index 856eb862b..000000000 --- a/tests/test_components/test_pdk_settings_a41o_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a41o_2 -info: {} -module: sky130.components -name: a41o_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a41o_4_.yml b/tests/test_components/test_pdk_settings_a41o_4_.yml deleted file mode 100644 index 8869da003..000000000 --- a/tests/test_components/test_pdk_settings_a41o_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a41o_4 -info: {} -module: sky130.components -name: a41o_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a41oi_1_.yml b/tests/test_components/test_pdk_settings_a41oi_1_.yml deleted file mode 100644 index 695de85d7..000000000 --- a/tests/test_components/test_pdk_settings_a41oi_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a41oi_1 -info: {} -module: sky130.components -name: a41oi_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a41oi_2_.yml b/tests/test_components/test_pdk_settings_a41oi_2_.yml deleted file mode 100644 index f0ab2a50f..000000000 --- a/tests/test_components/test_pdk_settings_a41oi_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a41oi_2 -info: {} -module: sky130.components -name: a41oi_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_a41oi_4_.yml b/tests/test_components/test_pdk_settings_a41oi_4_.yml deleted file mode 100644 index d3baf526c..000000000 --- a/tests/test_components/test_pdk_settings_a41oi_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: a41oi_4 -info: {} -module: sky130.components -name: a41oi_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and2_0_.yml b/tests/test_components/test_pdk_settings_and2_0_.yml deleted file mode 100644 index ab6f52159..000000000 --- a/tests/test_components/test_pdk_settings_and2_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and2_0 -info: {} -module: sky130.components -name: and2_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and2_1_.yml b/tests/test_components/test_pdk_settings_and2_1_.yml deleted file mode 100644 index 655412c17..000000000 --- a/tests/test_components/test_pdk_settings_and2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and2_1 -info: {} -module: sky130.components -name: and2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and2_2_.yml b/tests/test_components/test_pdk_settings_and2_2_.yml deleted file mode 100644 index 1c6957ab2..000000000 --- a/tests/test_components/test_pdk_settings_and2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and2_2 -info: {} -module: sky130.components -name: and2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and2_4_.yml b/tests/test_components/test_pdk_settings_and2_4_.yml deleted file mode 100644 index fe211e100..000000000 --- a/tests/test_components/test_pdk_settings_and2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and2_4 -info: {} -module: sky130.components -name: and2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and2b_1_.yml b/tests/test_components/test_pdk_settings_and2b_1_.yml deleted file mode 100644 index 54f8393ae..000000000 --- a/tests/test_components/test_pdk_settings_and2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and2b_1 -info: {} -module: sky130.components -name: and2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and2b_2_.yml b/tests/test_components/test_pdk_settings_and2b_2_.yml deleted file mode 100644 index 00e1bdb2d..000000000 --- a/tests/test_components/test_pdk_settings_and2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and2b_2 -info: {} -module: sky130.components -name: and2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and3_1_.yml b/tests/test_components/test_pdk_settings_and3_1_.yml deleted file mode 100644 index c426e4934..000000000 --- a/tests/test_components/test_pdk_settings_and3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and3_1 -info: {} -module: sky130.components -name: and3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and3_2_.yml b/tests/test_components/test_pdk_settings_and3_2_.yml deleted file mode 100644 index 960338045..000000000 --- a/tests/test_components/test_pdk_settings_and3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and3_2 -info: {} -module: sky130.components -name: and3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and3_4_.yml b/tests/test_components/test_pdk_settings_and3_4_.yml deleted file mode 100644 index cbf7fc178..000000000 --- a/tests/test_components/test_pdk_settings_and3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and3_4 -info: {} -module: sky130.components -name: and3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and3b_1_.yml b/tests/test_components/test_pdk_settings_and3b_1_.yml deleted file mode 100644 index 22aef8939..000000000 --- a/tests/test_components/test_pdk_settings_and3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and3b_1 -info: {} -module: sky130.components -name: and3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and3b_2_.yml b/tests/test_components/test_pdk_settings_and3b_2_.yml deleted file mode 100644 index c4a54beba..000000000 --- a/tests/test_components/test_pdk_settings_and3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and3b_2 -info: {} -module: sky130.components -name: and3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and3b_4_.yml b/tests/test_components/test_pdk_settings_and3b_4_.yml deleted file mode 100644 index 4ce6a6ca7..000000000 --- a/tests/test_components/test_pdk_settings_and3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and3b_4 -info: {} -module: sky130.components -name: and3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and4_1_.yml b/tests/test_components/test_pdk_settings_and4_1_.yml deleted file mode 100644 index 20ff077bd..000000000 --- a/tests/test_components/test_pdk_settings_and4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and4_1 -info: {} -module: sky130.components -name: and4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and4_2_.yml b/tests/test_components/test_pdk_settings_and4_2_.yml deleted file mode 100644 index eafe441fa..000000000 --- a/tests/test_components/test_pdk_settings_and4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and4_2 -info: {} -module: sky130.components -name: and4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and4_4_.yml b/tests/test_components/test_pdk_settings_and4_4_.yml deleted file mode 100644 index cc0e0ccdf..000000000 --- a/tests/test_components/test_pdk_settings_and4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and4_4 -info: {} -module: sky130.components -name: and4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and4b_1_.yml b/tests/test_components/test_pdk_settings_and4b_1_.yml deleted file mode 100644 index 1e38ec1f9..000000000 --- a/tests/test_components/test_pdk_settings_and4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and4b_1 -info: {} -module: sky130.components -name: and4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and4b_2_.yml b/tests/test_components/test_pdk_settings_and4b_2_.yml deleted file mode 100644 index e28d3ed4a..000000000 --- a/tests/test_components/test_pdk_settings_and4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and4b_2 -info: {} -module: sky130.components -name: and4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and4b_4_.yml b/tests/test_components/test_pdk_settings_and4b_4_.yml deleted file mode 100644 index 2248124b3..000000000 --- a/tests/test_components/test_pdk_settings_and4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and4b_4 -info: {} -module: sky130.components -name: and4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and4bb_1_.yml b/tests/test_components/test_pdk_settings_and4bb_1_.yml deleted file mode 100644 index ae08180f7..000000000 --- a/tests/test_components/test_pdk_settings_and4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and4bb_1 -info: {} -module: sky130.components -name: and4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and4bb_2_.yml b/tests/test_components/test_pdk_settings_and4bb_2_.yml deleted file mode 100644 index 4ccfa5cf5..000000000 --- a/tests/test_components/test_pdk_settings_and4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and4bb_2 -info: {} -module: sky130.components -name: and4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_and4bb_4_.yml b/tests/test_components/test_pdk_settings_and4bb_4_.yml deleted file mode 100644 index 6d2636e27..000000000 --- a/tests/test_components/test_pdk_settings_and4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: and4bb_4 -info: {} -module: sky130.components -name: and4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_12_.yml b/tests/test_components/test_pdk_settings_buf_12_.yml deleted file mode 100644 index 752e6fd9c..000000000 --- a/tests/test_components/test_pdk_settings_buf_12_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: buf_12 -info: {} -module: sky130.components -name: buf_12 -settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_16_.yml b/tests/test_components/test_pdk_settings_buf_16_.yml deleted file mode 100644 index 2c2ea72c0..000000000 --- a/tests/test_components/test_pdk_settings_buf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: buf_16 -info: {} -module: sky130.components -name: buf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_1_.yml b/tests/test_components/test_pdk_settings_buf_1_.yml deleted file mode 100644 index 0e1d755e0..000000000 --- a/tests/test_components/test_pdk_settings_buf_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: buf_1 -info: {} -module: sky130.components -name: buf_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_2_.yml b/tests/test_components/test_pdk_settings_buf_2_.yml deleted file mode 100644 index 5cd5f4b80..000000000 --- a/tests/test_components/test_pdk_settings_buf_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: buf_2 -info: {} -module: sky130.components -name: buf_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_4_.yml b/tests/test_components/test_pdk_settings_buf_4_.yml deleted file mode 100644 index a4fc3faac..000000000 --- a/tests/test_components/test_pdk_settings_buf_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: buf_4 -info: {} -module: sky130.components -name: buf_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_6_.yml b/tests/test_components/test_pdk_settings_buf_6_.yml deleted file mode 100644 index 26d7f5363..000000000 --- a/tests/test_components/test_pdk_settings_buf_6_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: buf_6 -info: {} -module: sky130.components -name: buf_6 -settings: {} diff --git a/tests/test_components/test_pdk_settings_buf_8_.yml b/tests/test_components/test_pdk_settings_buf_8_.yml deleted file mode 100644 index eea984f6e..000000000 --- a/tests/test_components/test_pdk_settings_buf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: buf_8 -info: {} -module: sky130.components -name: buf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_bufbuf_16_.yml b/tests/test_components/test_pdk_settings_bufbuf_16_.yml deleted file mode 100644 index 2fc195f0e..000000000 --- a/tests/test_components/test_pdk_settings_bufbuf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: bufbuf_16 -info: {} -module: sky130.components -name: bufbuf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_bufbuf_8_.yml b/tests/test_components/test_pdk_settings_bufbuf_8_.yml deleted file mode 100644 index 4d8d937f3..000000000 --- a/tests/test_components/test_pdk_settings_bufbuf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: bufbuf_8 -info: {} -module: sky130.components -name: bufbuf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_bufinv_16_.yml b/tests/test_components/test_pdk_settings_bufinv_16_.yml deleted file mode 100644 index 3c3059bb6..000000000 --- a/tests/test_components/test_pdk_settings_bufinv_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: bufinv_16 -info: {} -module: sky130.components -name: bufinv_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_bufinv_8_.yml b/tests/test_components/test_pdk_settings_bufinv_8_.yml deleted file mode 100644 index d935af6fb..000000000 --- a/tests/test_components/test_pdk_settings_bufinv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: bufinv_8 -info: {} -module: sky130.components -name: bufinv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p4x04p6_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p4x04p6_m1m2_noshield_.yml deleted file mode 100644 index 044885497..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_02p4x04p6_m1m2_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_02p4x04p6_m1m2_noshield -info: {} -module: sky130.components -name: cap_vpp_02p4x04p6_m1m2_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml deleted file mode 100644 index 45d1c805a..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap -info: {} -module: sky130.components -name: cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml deleted file mode 100644 index 5cc6841db..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap -info: {} -module: sky130.components -name: cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml deleted file mode 100644 index aef27f763..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap -info: {} -module: sky130.components -name: cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml deleted file mode 100644 index 71dfce12e..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap -info: {} -module: sky130.components -name: cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml b/tests/test_components/test_pdk_settings_cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml deleted file mode 100644 index a82fb65b3..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 -info: {} -module: sky130.components -name: cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml b/tests/test_components/test_pdk_settings_cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml deleted file mode 100644 index 5cfde05df..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 -info: {} -module: sky130.components -name: cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml deleted file mode 100644 index 48a7554c0..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_04p4x04p6_l1m1m2_noshield -info: {} -module: sky130.components -name: cap_vpp_04p4x04p6_l1m1m2_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml deleted file mode 100644 index b3682891d..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell -info: {} -module: sky130.components -name: cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml deleted file mode 100644 index 2d7e11de4..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 -info: {} -module: sky130.components -name: cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_.yml deleted file mode 100644 index e449b0c1b..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_04p4x04p6_m1m2_noshield -info: {} -module: sky130.components -name: cap_vpp_04p4x04p6_m1m2_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml deleted file mode 100644 index bb3432585..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_04p4x04p6_m1m2_noshield_o2 -info: {} -module: sky130.components -name: cap_vpp_04p4x04p6_m1m2_noshield_o2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml deleted file mode 100644 index 0b857a6bd..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2_shieldl1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_04p4x04p6_m1m2_shieldl1 -info: {} -module: sky130.components -name: cap_vpp_04p4x04p6_m1m2_shieldl1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml deleted file mode 100644 index 038e8f236..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_04p4x04p6_m1m2m3_shieldl1 -info: {} -module: sky130.components -name: cap_vpp_04p4x04p6_m1m2m3_shieldl1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml deleted file mode 100644 index e3fbbbe4c..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 -info: {} -module: sky130.components -name: cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml deleted file mode 100644 index 6a34b1b34..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top -info: {} -module: sky130.components -name: cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml deleted file mode 100644 index 41d9b6b05..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap -info: {} -module: sky130.components -name: cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml deleted file mode 100644 index 08ff4f642..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 -info: {} -module: sky130.components -name: cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml deleted file mode 100644 index b567158b5..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top -info: {} -module: sky130.components -name: cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml deleted file mode 100644 index 59298ab6f..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 -info: {} -module: sky130.components -name: cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml deleted file mode 100644 index e61f17c16..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top -info: {} -module: sky130.components -name: cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml deleted file mode 100644 index 1cc9d9a24..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_08p6x07p8_l1m1m2_noshield -info: {} -module: sky130.components -name: cap_vpp_08p6x07p8_l1m1m2_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml deleted file mode 100644 index b260d75af..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell -info: {} -module: sky130.components -name: cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml deleted file mode 100644 index 10667bd15..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 -info: {} -module: sky130.components -name: cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_noshield_.yml deleted file mode 100644 index 25b766f21..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_08p6x07p8_m1m2_noshield -info: {} -module: sky130.components -name: cap_vpp_08p6x07p8_m1m2_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml deleted file mode 100644 index 5488c42c4..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2_shieldl1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_08p6x07p8_m1m2_shieldl1 -info: {} -module: sky130.components -name: cap_vpp_08p6x07p8_m1m2_shieldl1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml deleted file mode 100644 index 22e57b14d..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_08p6x07p8_m1m2m3_shieldl1 -info: {} -module: sky130.components -name: cap_vpp_08p6x07p8_m1m2m3_shieldl1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml deleted file mode 100644 index 7135f124b..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 -info: {} -module: sky130.components -name: cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml deleted file mode 100644 index 64fffbc02..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top -info: {} -module: sky130.components -name: cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml deleted file mode 100644 index e9a529a47..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap -info: {} -module: sky130.components -name: cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml deleted file mode 100644 index d3d46d069..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv -info: {} -module: sky130.components -name: cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml deleted file mode 100644 index 9a0f8be58..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop -info: {} -module: sky130.components -name: cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml deleted file mode 100644 index 6207012af..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2_noshield -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml deleted file mode 100644 index 3276eecad..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2_shieldpom3 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2_shieldpom3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml deleted file mode 100644 index a4e96255c..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml deleted file mode 100644 index e6d71cbcc..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml deleted file mode 100644 index 377815b05..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml deleted file mode 100644 index db6a37f2e..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml deleted file mode 100644 index e4b14e722..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml deleted file mode 100644 index a267644df..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml deleted file mode 100644 index 4b88ce275..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml deleted file mode 100644 index 908f6f8ac..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml deleted file mode 100644 index 95f47cd90..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml deleted file mode 100644 index 635d252d0..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml deleted file mode 100644 index 1dfd40fc5..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_noshield_.yml deleted file mode 100644 index c04b81b65..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_m1m2_noshield -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_m1m2_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml deleted file mode 100644 index 641ac41dc..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2_shieldl1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_m1m2_shieldl1 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_m1m2_shieldl1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml deleted file mode 100644 index 854da1fc8..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_m1m2m3_shieldl1 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_m1m2m3_shieldl1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml deleted file mode 100644 index f43b4a1a5..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml deleted file mode 100644 index cb1eac5d1..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml deleted file mode 100644 index 622e70220..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml deleted file mode 100644 index 649d6a82a..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml deleted file mode 100644 index 7f1ab4ef1..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m4_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m4_noshield_.yml deleted file mode 100644 index 826d2fe7f..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_m1m4_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_m1m4_noshield -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_m1m4_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index 16e01e7df..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index ce201fb22..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index f3650de01..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index ea5be592c..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index 396335160..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index ec5d61568..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index 7360611ed..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index a30b81ce8..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index f974b2470..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml deleted file mode 100644 index e0b5b17c5..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin -info: {} -module: sky130.components -name: cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml deleted file mode 100644 index 3814f2f45..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield -info: {} -module: sky130.components -name: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml deleted file mode 100644 index bc7fd8962..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin -info: {} -module: sky130.components -name: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin -settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml b/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml deleted file mode 100644 index cb772a23b..000000000 --- a/tests/test_components/test_pdk_settings_cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test -info: {} -module: sky130.components -name: cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_16_.yml b/tests/test_components/test_pdk_settings_clkbuf_16_.yml deleted file mode 100644 index dfe7a879f..000000000 --- a/tests/test_components/test_pdk_settings_clkbuf_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkbuf_16 -info: {} -module: sky130.components -name: clkbuf_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_1_.yml b/tests/test_components/test_pdk_settings_clkbuf_1_.yml deleted file mode 100644 index 0cb28aba6..000000000 --- a/tests/test_components/test_pdk_settings_clkbuf_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkbuf_1 -info: {} -module: sky130.components -name: clkbuf_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_2_.yml b/tests/test_components/test_pdk_settings_clkbuf_2_.yml deleted file mode 100644 index 5307d9cb0..000000000 --- a/tests/test_components/test_pdk_settings_clkbuf_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkbuf_2 -info: {} -module: sky130.components -name: clkbuf_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_4_.yml b/tests/test_components/test_pdk_settings_clkbuf_4_.yml deleted file mode 100644 index 41198e07f..000000000 --- a/tests/test_components/test_pdk_settings_clkbuf_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkbuf_4 -info: {} -module: sky130.components -name: clkbuf_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkbuf_8_.yml b/tests/test_components/test_pdk_settings_clkbuf_8_.yml deleted file mode 100644 index ed3e36265..000000000 --- a/tests/test_components/test_pdk_settings_clkbuf_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkbuf_8 -info: {} -module: sky130.components -name: clkbuf_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s15_1_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s15_1_.yml deleted file mode 100644 index e3e046108..000000000 --- a/tests/test_components/test_pdk_settings_clkdlybuf4s15_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkdlybuf4s15_1 -info: {} -module: sky130.components -name: clkdlybuf4s15_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s15_2_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s15_2_.yml deleted file mode 100644 index 442c211f2..000000000 --- a/tests/test_components/test_pdk_settings_clkdlybuf4s15_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkdlybuf4s15_2 -info: {} -module: sky130.components -name: clkdlybuf4s15_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s18_1_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s18_1_.yml deleted file mode 100644 index d01e00e4f..000000000 --- a/tests/test_components/test_pdk_settings_clkdlybuf4s18_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkdlybuf4s18_1 -info: {} -module: sky130.components -name: clkdlybuf4s18_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s18_2_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s18_2_.yml deleted file mode 100644 index d0f2c5770..000000000 --- a/tests/test_components/test_pdk_settings_clkdlybuf4s18_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkdlybuf4s18_2 -info: {} -module: sky130.components -name: clkdlybuf4s18_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s25_1_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s25_1_.yml deleted file mode 100644 index a4fb04932..000000000 --- a/tests/test_components/test_pdk_settings_clkdlybuf4s25_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkdlybuf4s25_1 -info: {} -module: sky130.components -name: clkdlybuf4s25_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s25_2_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s25_2_.yml deleted file mode 100644 index 732cdcc35..000000000 --- a/tests/test_components/test_pdk_settings_clkdlybuf4s25_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkdlybuf4s25_2 -info: {} -module: sky130.components -name: clkdlybuf4s25_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s50_1_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s50_1_.yml deleted file mode 100644 index 94327d74b..000000000 --- a/tests/test_components/test_pdk_settings_clkdlybuf4s50_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkdlybuf4s50_1 -info: {} -module: sky130.components -name: clkdlybuf4s50_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkdlybuf4s50_2_.yml b/tests/test_components/test_pdk_settings_clkdlybuf4s50_2_.yml deleted file mode 100644 index 13f57fc87..000000000 --- a/tests/test_components/test_pdk_settings_clkdlybuf4s50_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkdlybuf4s50_2 -info: {} -module: sky130.components -name: clkdlybuf4s50_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_16_.yml b/tests/test_components/test_pdk_settings_clkinv_16_.yml deleted file mode 100644 index 2248cafa1..000000000 --- a/tests/test_components/test_pdk_settings_clkinv_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkinv_16 -info: {} -module: sky130.components -name: clkinv_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_1_.yml b/tests/test_components/test_pdk_settings_clkinv_1_.yml deleted file mode 100644 index 57dc2edcd..000000000 --- a/tests/test_components/test_pdk_settings_clkinv_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkinv_1 -info: {} -module: sky130.components -name: clkinv_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_2_.yml b/tests/test_components/test_pdk_settings_clkinv_2_.yml deleted file mode 100644 index ac83ffbe1..000000000 --- a/tests/test_components/test_pdk_settings_clkinv_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkinv_2 -info: {} -module: sky130.components -name: clkinv_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_4_.yml b/tests/test_components/test_pdk_settings_clkinv_4_.yml deleted file mode 100644 index b860429ef..000000000 --- a/tests/test_components/test_pdk_settings_clkinv_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkinv_4 -info: {} -module: sky130.components -name: clkinv_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinv_8_.yml b/tests/test_components/test_pdk_settings_clkinv_8_.yml deleted file mode 100644 index 9144cfb20..000000000 --- a/tests/test_components/test_pdk_settings_clkinv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkinv_8 -info: {} -module: sky130.components -name: clkinv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinvlp_2_.yml b/tests/test_components/test_pdk_settings_clkinvlp_2_.yml deleted file mode 100644 index 1d80a2cd4..000000000 --- a/tests/test_components/test_pdk_settings_clkinvlp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkinvlp_2 -info: {} -module: sky130.components -name: clkinvlp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_clkinvlp_4_.yml b/tests/test_components/test_pdk_settings_clkinvlp_4_.yml deleted file mode 100644 index 8e2b8cd0a..000000000 --- a/tests/test_components/test_pdk_settings_clkinvlp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: clkinvlp_4 -info: {} -module: sky130.components -name: clkinvlp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_conb_1_.yml b/tests/test_components/test_pdk_settings_conb_1_.yml deleted file mode 100644 index fea928d16..000000000 --- a/tests/test_components/test_pdk_settings_conb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: conb_1 -info: {} -module: sky130.components -name: conb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_12_.yml b/tests/test_components/test_pdk_settings_decap_12_.yml deleted file mode 100644 index 1de5087c8..000000000 --- a/tests/test_components/test_pdk_settings_decap_12_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: decap_12 -info: {} -module: sky130.components -name: decap_12 -settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_3_.yml b/tests/test_components/test_pdk_settings_decap_3_.yml deleted file mode 100644 index 02abd7137..000000000 --- a/tests/test_components/test_pdk_settings_decap_3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: decap_3 -info: {} -module: sky130.components -name: decap_3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_6_.yml b/tests/test_components/test_pdk_settings_decap_6_.yml deleted file mode 100644 index e2a4a4594..000000000 --- a/tests/test_components/test_pdk_settings_decap_6_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: decap_6 -info: {} -module: sky130.components -name: decap_6 -settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_8_.yml b/tests/test_components/test_pdk_settings_decap_8_.yml deleted file mode 100644 index 3d3e43123..000000000 --- a/tests/test_components/test_pdk_settings_decap_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: decap_8 -info: {} -module: sky130.components -name: decap_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfbbn_1_.yml b/tests/test_components/test_pdk_settings_dfbbn_1_.yml deleted file mode 100644 index cea98541a..000000000 --- a/tests/test_components/test_pdk_settings_dfbbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfbbn_1 -info: {} -module: sky130.components -name: dfbbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfbbn_2_.yml b/tests/test_components/test_pdk_settings_dfbbn_2_.yml deleted file mode 100644 index 6e06408fe..000000000 --- a/tests/test_components/test_pdk_settings_dfbbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfbbn_2 -info: {} -module: sky130.components -name: dfbbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfbbp_1_.yml b/tests/test_components/test_pdk_settings_dfbbp_1_.yml deleted file mode 100644 index 056cba553..000000000 --- a/tests/test_components/test_pdk_settings_dfbbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfbbp_1 -info: {} -module: sky130.components -name: dfbbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrbp_1_.yml b/tests/test_components/test_pdk_settings_dfrbp_1_.yml deleted file mode 100644 index c6e398612..000000000 --- a/tests/test_components/test_pdk_settings_dfrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfrbp_1 -info: {} -module: sky130.components -name: dfrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrbp_2_.yml b/tests/test_components/test_pdk_settings_dfrbp_2_.yml deleted file mode 100644 index 45463f37c..000000000 --- a/tests/test_components/test_pdk_settings_dfrbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfrbp_2 -info: {} -module: sky130.components -name: dfrbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrtn_1_.yml b/tests/test_components/test_pdk_settings_dfrtn_1_.yml deleted file mode 100644 index 537d98b1c..000000000 --- a/tests/test_components/test_pdk_settings_dfrtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfrtn_1 -info: {} -module: sky130.components -name: dfrtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrtp_1_.yml b/tests/test_components/test_pdk_settings_dfrtp_1_.yml deleted file mode 100644 index 47b23d0cf..000000000 --- a/tests/test_components/test_pdk_settings_dfrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfrtp_1 -info: {} -module: sky130.components -name: dfrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrtp_2_.yml b/tests/test_components/test_pdk_settings_dfrtp_2_.yml deleted file mode 100644 index 3c87c2776..000000000 --- a/tests/test_components/test_pdk_settings_dfrtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfrtp_2 -info: {} -module: sky130.components -name: dfrtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfrtp_4_.yml b/tests/test_components/test_pdk_settings_dfrtp_4_.yml deleted file mode 100644 index ad2887f5d..000000000 --- a/tests/test_components/test_pdk_settings_dfrtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfrtp_4 -info: {} -module: sky130.components -name: dfrtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfsbp_1_.yml b/tests/test_components/test_pdk_settings_dfsbp_1_.yml deleted file mode 100644 index 13a385267..000000000 --- a/tests/test_components/test_pdk_settings_dfsbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfsbp_1 -info: {} -module: sky130.components -name: dfsbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfsbp_2_.yml b/tests/test_components/test_pdk_settings_dfsbp_2_.yml deleted file mode 100644 index e46af788d..000000000 --- a/tests/test_components/test_pdk_settings_dfsbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfsbp_2 -info: {} -module: sky130.components -name: dfsbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfstp_1_.yml b/tests/test_components/test_pdk_settings_dfstp_1_.yml deleted file mode 100644 index 0d7bcb77c..000000000 --- a/tests/test_components/test_pdk_settings_dfstp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfstp_1 -info: {} -module: sky130.components -name: dfstp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfstp_2_.yml b/tests/test_components/test_pdk_settings_dfstp_2_.yml deleted file mode 100644 index 312b926bc..000000000 --- a/tests/test_components/test_pdk_settings_dfstp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfstp_2 -info: {} -module: sky130.components -name: dfstp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfstp_4_.yml b/tests/test_components/test_pdk_settings_dfstp_4_.yml deleted file mode 100644 index 2a9229e60..000000000 --- a/tests/test_components/test_pdk_settings_dfstp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfstp_4 -info: {} -module: sky130.components -name: dfstp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxbp_1_.yml b/tests/test_components/test_pdk_settings_dfxbp_1_.yml deleted file mode 100644 index 1793e2df7..000000000 --- a/tests/test_components/test_pdk_settings_dfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfxbp_1 -info: {} -module: sky130.components -name: dfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxbp_2_.yml b/tests/test_components/test_pdk_settings_dfxbp_2_.yml deleted file mode 100644 index 137ec4f5c..000000000 --- a/tests/test_components/test_pdk_settings_dfxbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfxbp_2 -info: {} -module: sky130.components -name: dfxbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxtp_1_.yml b/tests/test_components/test_pdk_settings_dfxtp_1_.yml deleted file mode 100644 index 62617c47a..000000000 --- a/tests/test_components/test_pdk_settings_dfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfxtp_1 -info: {} -module: sky130.components -name: dfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxtp_2_.yml b/tests/test_components/test_pdk_settings_dfxtp_2_.yml deleted file mode 100644 index 77b212ed4..000000000 --- a/tests/test_components/test_pdk_settings_dfxtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfxtp_2 -info: {} -module: sky130.components -name: dfxtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dfxtp_4_.yml b/tests/test_components/test_pdk_settings_dfxtp_4_.yml deleted file mode 100644 index cf80fffbd..000000000 --- a/tests/test_components/test_pdk_settings_dfxtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dfxtp_4 -info: {} -module: sky130.components -name: dfxtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_diode_2_.yml b/tests/test_components/test_pdk_settings_diode_2_.yml deleted file mode 100644 index 53eed7e28..000000000 --- a/tests/test_components/test_pdk_settings_diode_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: diode_2 -info: {} -module: sky130.components -name: diode_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlclkp_1_.yml b/tests/test_components/test_pdk_settings_dlclkp_1_.yml deleted file mode 100644 index 5d3d8d140..000000000 --- a/tests/test_components/test_pdk_settings_dlclkp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlclkp_1 -info: {} -module: sky130.components -name: dlclkp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlclkp_2_.yml b/tests/test_components/test_pdk_settings_dlclkp_2_.yml deleted file mode 100644 index e163be4f1..000000000 --- a/tests/test_components/test_pdk_settings_dlclkp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlclkp_2 -info: {} -module: sky130.components -name: dlclkp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlclkp_4_.yml b/tests/test_components/test_pdk_settings_dlclkp_4_.yml deleted file mode 100644 index b83dc4bde..000000000 --- a/tests/test_components/test_pdk_settings_dlclkp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlclkp_4 -info: {} -module: sky130.components -name: dlclkp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrbn_1_.yml b/tests/test_components/test_pdk_settings_dlrbn_1_.yml deleted file mode 100644 index b0f487af9..000000000 --- a/tests/test_components/test_pdk_settings_dlrbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrbn_1 -info: {} -module: sky130.components -name: dlrbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrbn_2_.yml b/tests/test_components/test_pdk_settings_dlrbn_2_.yml deleted file mode 100644 index 98c2fb685..000000000 --- a/tests/test_components/test_pdk_settings_dlrbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrbn_2 -info: {} -module: sky130.components -name: dlrbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrbp_1_.yml b/tests/test_components/test_pdk_settings_dlrbp_1_.yml deleted file mode 100644 index 30cbfc7ed..000000000 --- a/tests/test_components/test_pdk_settings_dlrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrbp_1 -info: {} -module: sky130.components -name: dlrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrbp_2_.yml b/tests/test_components/test_pdk_settings_dlrbp_2_.yml deleted file mode 100644 index 3d8b669de..000000000 --- a/tests/test_components/test_pdk_settings_dlrbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrbp_2 -info: {} -module: sky130.components -name: dlrbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtn_1_.yml b/tests/test_components/test_pdk_settings_dlrtn_1_.yml deleted file mode 100644 index 8d53f9211..000000000 --- a/tests/test_components/test_pdk_settings_dlrtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrtn_1 -info: {} -module: sky130.components -name: dlrtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtn_2_.yml b/tests/test_components/test_pdk_settings_dlrtn_2_.yml deleted file mode 100644 index 34a7499a5..000000000 --- a/tests/test_components/test_pdk_settings_dlrtn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrtn_2 -info: {} -module: sky130.components -name: dlrtn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtn_4_.yml b/tests/test_components/test_pdk_settings_dlrtn_4_.yml deleted file mode 100644 index e238617a5..000000000 --- a/tests/test_components/test_pdk_settings_dlrtn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrtn_4 -info: {} -module: sky130.components -name: dlrtn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtp_1_.yml b/tests/test_components/test_pdk_settings_dlrtp_1_.yml deleted file mode 100644 index bd5629be2..000000000 --- a/tests/test_components/test_pdk_settings_dlrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrtp_1 -info: {} -module: sky130.components -name: dlrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtp_2_.yml b/tests/test_components/test_pdk_settings_dlrtp_2_.yml deleted file mode 100644 index bda0723ac..000000000 --- a/tests/test_components/test_pdk_settings_dlrtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrtp_2 -info: {} -module: sky130.components -name: dlrtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlrtp_4_.yml b/tests/test_components/test_pdk_settings_dlrtp_4_.yml deleted file mode 100644 index 68902c10f..000000000 --- a/tests/test_components/test_pdk_settings_dlrtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlrtp_4 -info: {} -module: sky130.components -name: dlrtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxbn_1_.yml b/tests/test_components/test_pdk_settings_dlxbn_1_.yml deleted file mode 100644 index 6d9265454..000000000 --- a/tests/test_components/test_pdk_settings_dlxbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlxbn_1 -info: {} -module: sky130.components -name: dlxbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxbn_2_.yml b/tests/test_components/test_pdk_settings_dlxbn_2_.yml deleted file mode 100644 index 562712da2..000000000 --- a/tests/test_components/test_pdk_settings_dlxbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlxbn_2 -info: {} -module: sky130.components -name: dlxbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxbp_1_.yml b/tests/test_components/test_pdk_settings_dlxbp_1_.yml deleted file mode 100644 index 1e94f370a..000000000 --- a/tests/test_components/test_pdk_settings_dlxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlxbp_1 -info: {} -module: sky130.components -name: dlxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxtn_1_.yml b/tests/test_components/test_pdk_settings_dlxtn_1_.yml deleted file mode 100644 index 08c44c82f..000000000 --- a/tests/test_components/test_pdk_settings_dlxtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlxtn_1 -info: {} -module: sky130.components -name: dlxtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxtn_2_.yml b/tests/test_components/test_pdk_settings_dlxtn_2_.yml deleted file mode 100644 index 141ebeb28..000000000 --- a/tests/test_components/test_pdk_settings_dlxtn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlxtn_2 -info: {} -module: sky130.components -name: dlxtn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxtn_4_.yml b/tests/test_components/test_pdk_settings_dlxtn_4_.yml deleted file mode 100644 index c50cf9a75..000000000 --- a/tests/test_components/test_pdk_settings_dlxtn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlxtn_4 -info: {} -module: sky130.components -name: dlxtn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlxtp_1_.yml b/tests/test_components/test_pdk_settings_dlxtp_1_.yml deleted file mode 100644 index c6cd60a02..000000000 --- a/tests/test_components/test_pdk_settings_dlxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlxtp_1 -info: {} -module: sky130.components -name: dlxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlygate4sd1_1_.yml b/tests/test_components/test_pdk_settings_dlygate4sd1_1_.yml deleted file mode 100644 index 91cc453d4..000000000 --- a/tests/test_components/test_pdk_settings_dlygate4sd1_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlygate4sd1_1 -info: {} -module: sky130.components -name: dlygate4sd1_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlygate4sd2_1_.yml b/tests/test_components/test_pdk_settings_dlygate4sd2_1_.yml deleted file mode 100644 index 54f5ddfa0..000000000 --- a/tests/test_components/test_pdk_settings_dlygate4sd2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlygate4sd2_1 -info: {} -module: sky130.components -name: dlygate4sd2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlygate4sd3_1_.yml b/tests/test_components/test_pdk_settings_dlygate4sd3_1_.yml deleted file mode 100644 index 4f949d5cf..000000000 --- a/tests/test_components/test_pdk_settings_dlygate4sd3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlygate4sd3_1 -info: {} -module: sky130.components -name: dlygate4sd3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlymetal6s2s_1_.yml b/tests/test_components/test_pdk_settings_dlymetal6s2s_1_.yml deleted file mode 100644 index 504989c71..000000000 --- a/tests/test_components/test_pdk_settings_dlymetal6s2s_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlymetal6s2s_1 -info: {} -module: sky130.components -name: dlymetal6s2s_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlymetal6s4s_1_.yml b/tests/test_components/test_pdk_settings_dlymetal6s4s_1_.yml deleted file mode 100644 index f7cf95e8e..000000000 --- a/tests/test_components/test_pdk_settings_dlymetal6s4s_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlymetal6s4s_1 -info: {} -module: sky130.components -name: dlymetal6s4s_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_dlymetal6s6s_1_.yml b/tests/test_components/test_pdk_settings_dlymetal6s6s_1_.yml deleted file mode 100644 index d75455e45..000000000 --- a/tests/test_components/test_pdk_settings_dlymetal6s6s_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: dlymetal6s6s_1 -info: {} -module: sky130.components -name: dlymetal6s6s_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_ebufn_1_.yml b/tests/test_components/test_pdk_settings_ebufn_1_.yml deleted file mode 100644 index b4f2fc30a..000000000 --- a/tests/test_components/test_pdk_settings_ebufn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: ebufn_1 -info: {} -module: sky130.components -name: ebufn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_ebufn_2_.yml b/tests/test_components/test_pdk_settings_ebufn_2_.yml deleted file mode 100644 index 35722b1e9..000000000 --- a/tests/test_components/test_pdk_settings_ebufn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: ebufn_2 -info: {} -module: sky130.components -name: ebufn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_ebufn_4_.yml b/tests/test_components/test_pdk_settings_ebufn_4_.yml deleted file mode 100644 index d74909c4c..000000000 --- a/tests/test_components/test_pdk_settings_ebufn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: ebufn_4 -info: {} -module: sky130.components -name: ebufn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_ebufn_8_.yml b/tests/test_components/test_pdk_settings_ebufn_8_.yml deleted file mode 100644 index a1494fd07..000000000 --- a/tests/test_components/test_pdk_settings_ebufn_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: ebufn_8 -info: {} -module: sky130.components -name: ebufn_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_edfxbp_1_.yml b/tests/test_components/test_pdk_settings_edfxbp_1_.yml deleted file mode 100644 index 69d2e5f61..000000000 --- a/tests/test_components/test_pdk_settings_edfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: edfxbp_1 -info: {} -module: sky130.components -name: edfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_edfxtp_1_.yml b/tests/test_components/test_pdk_settings_edfxtp_1_.yml deleted file mode 100644 index 26afa6b13..000000000 --- a/tests/test_components/test_pdk_settings_edfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: edfxtp_1 -info: {} -module: sky130.components -name: edfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_0_.yml b/tests/test_components/test_pdk_settings_einvn_0_.yml deleted file mode 100644 index 014a32c16..000000000 --- a/tests/test_components/test_pdk_settings_einvn_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: einvn_0 -info: {} -module: sky130.components -name: einvn_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_1_.yml b/tests/test_components/test_pdk_settings_einvn_1_.yml deleted file mode 100644 index 87a89ad59..000000000 --- a/tests/test_components/test_pdk_settings_einvn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: einvn_1 -info: {} -module: sky130.components -name: einvn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_2_.yml b/tests/test_components/test_pdk_settings_einvn_2_.yml deleted file mode 100644 index 8f6c5e3d7..000000000 --- a/tests/test_components/test_pdk_settings_einvn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: einvn_2 -info: {} -module: sky130.components -name: einvn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_4_.yml b/tests/test_components/test_pdk_settings_einvn_4_.yml deleted file mode 100644 index 5e0af7557..000000000 --- a/tests/test_components/test_pdk_settings_einvn_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: einvn_4 -info: {} -module: sky130.components -name: einvn_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_einvn_8_.yml b/tests/test_components/test_pdk_settings_einvn_8_.yml deleted file mode 100644 index 0f68eaeb1..000000000 --- a/tests/test_components/test_pdk_settings_einvn_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: einvn_8 -info: {} -module: sky130.components -name: einvn_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_einvp_1_.yml b/tests/test_components/test_pdk_settings_einvp_1_.yml deleted file mode 100644 index b8000aa2f..000000000 --- a/tests/test_components/test_pdk_settings_einvp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: einvp_1 -info: {} -module: sky130.components -name: einvp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_einvp_2_.yml b/tests/test_components/test_pdk_settings_einvp_2_.yml deleted file mode 100644 index 0df4efe17..000000000 --- a/tests/test_components/test_pdk_settings_einvp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: einvp_2 -info: {} -module: sky130.components -name: einvp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_einvp_4_.yml b/tests/test_components/test_pdk_settings_einvp_4_.yml deleted file mode 100644 index c2fb9e0ff..000000000 --- a/tests/test_components/test_pdk_settings_einvp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: einvp_4 -info: {} -module: sky130.components -name: einvp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_einvp_8_.yml b/tests/test_components/test_pdk_settings_einvp_8_.yml deleted file mode 100644 index e770956b0..000000000 --- a/tests/test_components/test_pdk_settings_einvp_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: einvp_8 -info: {} -module: sky130.components -name: einvp_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml deleted file mode 100644 index 086b70abb..000000000 --- a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_21vW60p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: esd_rf_nfet_20v0_hbm_21vW60p00 -info: {} -module: sky130.components -name: esd_rf_nfet_20v0_hbm_21vW60p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_21vW60p00_.yml b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_21vW60p00_.yml deleted file mode 100644 index 161e4c392..000000000 --- a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_21vW60p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: esd_rf_nfet_20v0_iec_21vW60p00 -info: {} -module: sky130.components -name: esd_rf_nfet_20v0_iec_21vW60p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_32vW60p00_.yml b/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_32vW60p00_.yml deleted file mode 100644 index fbb57a300..000000000 --- a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_iec_32vW60p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: esd_rf_nfet_20v0_iec_32vW60p00 -info: {} -module: sky130.components -name: esd_rf_nfet_20v0_iec_32vW60p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fa_1_.yml b/tests/test_components/test_pdk_settings_fa_1_.yml deleted file mode 100644 index 9543c0b8b..000000000 --- a/tests/test_components/test_pdk_settings_fa_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fa_1 -info: {} -module: sky130.components -name: fa_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fa_2_.yml b/tests/test_components/test_pdk_settings_fa_2_.yml deleted file mode 100644 index 35cdb2c6e..000000000 --- a/tests/test_components/test_pdk_settings_fa_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fa_2 -info: {} -module: sky130.components -name: fa_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fa_4_.yml b/tests/test_components/test_pdk_settings_fa_4_.yml deleted file mode 100644 index 072468a02..000000000 --- a/tests/test_components/test_pdk_settings_fa_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fa_4 -info: {} -module: sky130.components -name: fa_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fah_1_.yml b/tests/test_components/test_pdk_settings_fah_1_.yml deleted file mode 100644 index 9f4d5acb0..000000000 --- a/tests/test_components/test_pdk_settings_fah_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fah_1 -info: {} -module: sky130.components -name: fah_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fahcin_1_.yml b/tests/test_components/test_pdk_settings_fahcin_1_.yml deleted file mode 100644 index af46a1735..000000000 --- a/tests/test_components/test_pdk_settings_fahcin_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fahcin_1 -info: {} -module: sky130.components -name: fahcin_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fahcon_1_.yml b/tests/test_components/test_pdk_settings_fahcon_1_.yml deleted file mode 100644 index 87abdf4f2..000000000 --- a/tests/test_components/test_pdk_settings_fahcon_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fahcon_1 -info: {} -module: sky130.components -name: fahcon_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fill_1_.yml b/tests/test_components/test_pdk_settings_fill_1_.yml deleted file mode 100644 index cdb7d9e6b..000000000 --- a/tests/test_components/test_pdk_settings_fill_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fill_1 -info: {} -module: sky130.components -name: fill_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fill_2_.yml b/tests/test_components/test_pdk_settings_fill_2_.yml deleted file mode 100644 index 173314541..000000000 --- a/tests/test_components/test_pdk_settings_fill_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fill_2 -info: {} -module: sky130.components -name: fill_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fill_4_.yml b/tests/test_components/test_pdk_settings_fill_4_.yml deleted file mode 100644 index 7a10f1e53..000000000 --- a/tests/test_components/test_pdk_settings_fill_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fill_4 -info: {} -module: sky130.components -name: fill_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_fill_8_.yml b/tests/test_components/test_pdk_settings_fill_8_.yml deleted file mode 100644 index cf67e267c..000000000 --- a/tests/test_components/test_pdk_settings_fill_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: fill_8 -info: {} -module: sky130.components -name: fill_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_ha_1_.yml b/tests/test_components/test_pdk_settings_ha_1_.yml deleted file mode 100644 index 085eba381..000000000 --- a/tests/test_components/test_pdk_settings_ha_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: ha_1 -info: {} -module: sky130.components -name: ha_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_ha_2_.yml b/tests/test_components/test_pdk_settings_ha_2_.yml deleted file mode 100644 index 64f90584d..000000000 --- a/tests/test_components/test_pdk_settings_ha_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: ha_2 -info: {} -module: sky130.components -name: ha_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_ha_4_.yml b/tests/test_components/test_pdk_settings_ha_4_.yml deleted file mode 100644 index fc5751a17..000000000 --- a/tests/test_components/test_pdk_settings_ha_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: ha_4 -info: {} -module: sky130.components -name: ha_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_12_.yml b/tests/test_components/test_pdk_settings_inv_12_.yml deleted file mode 100644 index 0105c2ed5..000000000 --- a/tests/test_components/test_pdk_settings_inv_12_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: inv_12 -info: {} -module: sky130.components -name: inv_12 -settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_16_.yml b/tests/test_components/test_pdk_settings_inv_16_.yml deleted file mode 100644 index 885ecee31..000000000 --- a/tests/test_components/test_pdk_settings_inv_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: inv_16 -info: {} -module: sky130.components -name: inv_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_1_.yml b/tests/test_components/test_pdk_settings_inv_1_.yml deleted file mode 100644 index 2de1e52f0..000000000 --- a/tests/test_components/test_pdk_settings_inv_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: inv_1 -info: {} -module: sky130.components -name: inv_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_2_.yml b/tests/test_components/test_pdk_settings_inv_2_.yml deleted file mode 100644 index 82fc3795a..000000000 --- a/tests/test_components/test_pdk_settings_inv_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: inv_2 -info: {} -module: sky130.components -name: inv_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_4_.yml b/tests/test_components/test_pdk_settings_inv_4_.yml deleted file mode 100644 index 8b7bd96a9..000000000 --- a/tests/test_components/test_pdk_settings_inv_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: inv_4 -info: {} -module: sky130.components -name: inv_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_6_.yml b/tests/test_components/test_pdk_settings_inv_6_.yml deleted file mode 100644 index 90a06c12e..000000000 --- a/tests/test_components/test_pdk_settings_inv_6_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: inv_6 -info: {} -module: sky130.components -name: inv_6 -settings: {} diff --git a/tests/test_components/test_pdk_settings_inv_8_.yml b/tests/test_components/test_pdk_settings_inv_8_.yml deleted file mode 100644 index b0589de71..000000000 --- a/tests/test_components/test_pdk_settings_inv_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: inv_8 -info: {} -module: sky130.components -name: inv_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_bleeder_1_.yml b/tests/test_components/test_pdk_settings_lpflow_bleeder_1_.yml deleted file mode 100644 index a28da6d4b..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_bleeder_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_bleeder_1 -info: {} -module: sky130.components -name: lpflow_bleeder_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_16_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_16_.yml deleted file mode 100644 index f3e901f6c..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkbufkapwr_16 -info: {} -module: sky130.components -name: lpflow_clkbufkapwr_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_1_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_1_.yml deleted file mode 100644 index 6cf729628..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkbufkapwr_1 -info: {} -module: sky130.components -name: lpflow_clkbufkapwr_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_2_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_2_.yml deleted file mode 100644 index ee1706ee0..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkbufkapwr_2 -info: {} -module: sky130.components -name: lpflow_clkbufkapwr_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_4_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_4_.yml deleted file mode 100644 index 0eb7b6fb5..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkbufkapwr_4 -info: {} -module: sky130.components -name: lpflow_clkbufkapwr_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_8_.yml b/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_8_.yml deleted file mode 100644 index e8d997451..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkbufkapwr_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkbufkapwr_8 -info: {} -module: sky130.components -name: lpflow_clkbufkapwr_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_16_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_16_.yml deleted file mode 100644 index d96dbc495..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkinvkapwr_16 -info: {} -module: sky130.components -name: lpflow_clkinvkapwr_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_1_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_1_.yml deleted file mode 100644 index 793593728..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkinvkapwr_1 -info: {} -module: sky130.components -name: lpflow_clkinvkapwr_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_2_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_2_.yml deleted file mode 100644 index e228ffb93..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkinvkapwr_2 -info: {} -module: sky130.components -name: lpflow_clkinvkapwr_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_4_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_4_.yml deleted file mode 100644 index 5512b986d..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkinvkapwr_4 -info: {} -module: sky130.components -name: lpflow_clkinvkapwr_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_8_.yml b/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_8_.yml deleted file mode 100644 index 8b9caccf2..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_clkinvkapwr_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_clkinvkapwr_8 -info: {} -module: sky130.components -name: lpflow_clkinvkapwr_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_12_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_12_.yml deleted file mode 100644 index 3d37e4b13..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_12_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_decapkapwr_12 -info: {} -module: sky130.components -name: lpflow_decapkapwr_12 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_3_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_3_.yml deleted file mode 100644 index f0e03f963..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_decapkapwr_3 -info: {} -module: sky130.components -name: lpflow_decapkapwr_3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_4_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_4_.yml deleted file mode 100644 index 11082d85e..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_decapkapwr_4 -info: {} -module: sky130.components -name: lpflow_decapkapwr_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_6_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_6_.yml deleted file mode 100644 index f41c1146f..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_6_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_decapkapwr_6 -info: {} -module: sky130.components -name: lpflow_decapkapwr_6 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_8_.yml b/tests/test_components/test_pdk_settings_lpflow_decapkapwr_8_.yml deleted file mode 100644 index bb887b703..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_decapkapwr_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_decapkapwr_8 -info: {} -module: sky130.components -name: lpflow_decapkapwr_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputiso0n_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputiso0n_1_.yml deleted file mode 100644 index ec268b433..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_inputiso0n_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_inputiso0n_1 -info: {} -module: sky130.components -name: lpflow_inputiso0n_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputiso0p_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputiso0p_1_.yml deleted file mode 100644 index 8dad8491c..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_inputiso0p_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_inputiso0p_1 -info: {} -module: sky130.components -name: lpflow_inputiso0p_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputiso1n_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputiso1n_1_.yml deleted file mode 100644 index c92328477..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_inputiso1n_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_inputiso1n_1 -info: {} -module: sky130.components -name: lpflow_inputiso1n_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputiso1p_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputiso1p_1_.yml deleted file mode 100644 index ec012d185..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_inputiso1p_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_inputiso1p_1 -info: {} -module: sky130.components -name: lpflow_inputiso1p_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_inputisolatch_1_.yml b/tests/test_components/test_pdk_settings_lpflow_inputisolatch_1_.yml deleted file mode 100644 index 89e3e083f..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_inputisolatch_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_inputisolatch_1 -info: {} -module: sky130.components -name: lpflow_inputisolatch_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_16_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_16_.yml deleted file mode 100644 index 7deaab754..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_isobufsrc_16 -info: {} -module: sky130.components -name: lpflow_isobufsrc_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_1_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_1_.yml deleted file mode 100644 index 5aa20a485..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_isobufsrc_1 -info: {} -module: sky130.components -name: lpflow_isobufsrc_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_2_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_2_.yml deleted file mode 100644 index 45075b06b..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_isobufsrc_2 -info: {} -module: sky130.components -name: lpflow_isobufsrc_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_4_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_4_.yml deleted file mode 100644 index 53a1c9a4a..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_isobufsrc_4 -info: {} -module: sky130.components -name: lpflow_isobufsrc_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_8_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrc_8_.yml deleted file mode 100644 index 3f6bede8f..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_isobufsrc_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_isobufsrc_8 -info: {} -module: sky130.components -name: lpflow_isobufsrc_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_isobufsrckapwr_16_.yml b/tests/test_components/test_pdk_settings_lpflow_isobufsrckapwr_16_.yml deleted file mode 100644 index 6a0c132aa..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_isobufsrckapwr_16_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_isobufsrckapwr_16 -info: {} -module: sky130.components -name: lpflow_isobufsrckapwr_16 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml deleted file mode 100644 index 2f4f5c496..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_lsbuf_lh_hl_isowell_tap_1 -info: {} -module: sky130.components -name: lpflow_lsbuf_lh_hl_isowell_tap_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml deleted file mode 100644 index 6a71bcb0e..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_lsbuf_lh_hl_isowell_tap_2 -info: {} -module: sky130.components -name: lpflow_lsbuf_lh_hl_isowell_tap_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml deleted file mode 100644 index 37fb5c4e4..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_hl_isowell_tap_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_lsbuf_lh_hl_isowell_tap_4 -info: {} -module: sky130.components -name: lpflow_lsbuf_lh_hl_isowell_tap_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_4_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_4_.yml deleted file mode 100644 index 96fe2f135..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_lsbuf_lh_isowell_4 -info: {} -module: sky130.components -name: lpflow_lsbuf_lh_isowell_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_2_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_2_.yml deleted file mode 100644 index 11124827a..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_lsbuf_lh_isowell_tap_2 -info: {} -module: sky130.components -name: lpflow_lsbuf_lh_isowell_tap_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_4_.yml b/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_4_.yml deleted file mode 100644 index df0c02587..000000000 --- a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: lpflow_lsbuf_lh_isowell_tap_4 -info: {} -module: sky130.components -name: lpflow_lsbuf_lh_isowell_tap_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_macro_sparecell_.yml b/tests/test_components/test_pdk_settings_macro_sparecell_.yml deleted file mode 100644 index a926f6981..000000000 --- a/tests/test_components/test_pdk_settings_macro_sparecell_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: macro_sparecell -info: {} -module: sky130.components -name: macro_sparecell -settings: {} diff --git a/tests/test_components/test_pdk_settings_maj3_1_.yml b/tests/test_components/test_pdk_settings_maj3_1_.yml deleted file mode 100644 index 66bfdc65d..000000000 --- a/tests/test_components/test_pdk_settings_maj3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: maj3_1 -info: {} -module: sky130.components -name: maj3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_maj3_2_.yml b/tests/test_components/test_pdk_settings_maj3_2_.yml deleted file mode 100644 index 925e1ab0c..000000000 --- a/tests/test_components/test_pdk_settings_maj3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: maj3_2 -info: {} -module: sky130.components -name: maj3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_maj3_4_.yml b/tests/test_components/test_pdk_settings_maj3_4_.yml deleted file mode 100644 index f9f848daa..000000000 --- a/tests/test_components/test_pdk_settings_maj3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: maj3_4 -info: {} -module: sky130.components -name: maj3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2_1_.yml b/tests/test_components/test_pdk_settings_mux2_1_.yml deleted file mode 100644 index e840869f2..000000000 --- a/tests/test_components/test_pdk_settings_mux2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux2_1 -info: {} -module: sky130.components -name: mux2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2_2_.yml b/tests/test_components/test_pdk_settings_mux2_2_.yml deleted file mode 100644 index d529c3823..000000000 --- a/tests/test_components/test_pdk_settings_mux2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux2_2 -info: {} -module: sky130.components -name: mux2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2_4_.yml b/tests/test_components/test_pdk_settings_mux2_4_.yml deleted file mode 100644 index 96130c315..000000000 --- a/tests/test_components/test_pdk_settings_mux2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux2_4 -info: {} -module: sky130.components -name: mux2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2_8_.yml b/tests/test_components/test_pdk_settings_mux2_8_.yml deleted file mode 100644 index bdf65af6d..000000000 --- a/tests/test_components/test_pdk_settings_mux2_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux2_8 -info: {} -module: sky130.components -name: mux2_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2i_1_.yml b/tests/test_components/test_pdk_settings_mux2i_1_.yml deleted file mode 100644 index 3a3ce7e3e..000000000 --- a/tests/test_components/test_pdk_settings_mux2i_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux2i_1 -info: {} -module: sky130.components -name: mux2i_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2i_2_.yml b/tests/test_components/test_pdk_settings_mux2i_2_.yml deleted file mode 100644 index 6e3c8c9f0..000000000 --- a/tests/test_components/test_pdk_settings_mux2i_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux2i_2 -info: {} -module: sky130.components -name: mux2i_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux2i_4_.yml b/tests/test_components/test_pdk_settings_mux2i_4_.yml deleted file mode 100644 index 124cff8cb..000000000 --- a/tests/test_components/test_pdk_settings_mux2i_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux2i_4 -info: {} -module: sky130.components -name: mux2i_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux4_1_.yml b/tests/test_components/test_pdk_settings_mux4_1_.yml deleted file mode 100644 index ff90d0d84..000000000 --- a/tests/test_components/test_pdk_settings_mux4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux4_1 -info: {} -module: sky130.components -name: mux4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux4_2_.yml b/tests/test_components/test_pdk_settings_mux4_2_.yml deleted file mode 100644 index b7da348cd..000000000 --- a/tests/test_components/test_pdk_settings_mux4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux4_2 -info: {} -module: sky130.components -name: mux4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_mux4_4_.yml b/tests/test_components/test_pdk_settings_mux4_4_.yml deleted file mode 100644 index d8c3b0bfb..000000000 --- a/tests/test_components/test_pdk_settings_mux4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: mux4_4 -info: {} -module: sky130.components -name: mux4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2_1_.yml b/tests/test_components/test_pdk_settings_nand2_1_.yml deleted file mode 100644 index 75736e252..000000000 --- a/tests/test_components/test_pdk_settings_nand2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand2_1 -info: {} -module: sky130.components -name: nand2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2_2_.yml b/tests/test_components/test_pdk_settings_nand2_2_.yml deleted file mode 100644 index 846816895..000000000 --- a/tests/test_components/test_pdk_settings_nand2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand2_2 -info: {} -module: sky130.components -name: nand2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2_4_.yml b/tests/test_components/test_pdk_settings_nand2_4_.yml deleted file mode 100644 index e55498085..000000000 --- a/tests/test_components/test_pdk_settings_nand2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand2_4 -info: {} -module: sky130.components -name: nand2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2_8_.yml b/tests/test_components/test_pdk_settings_nand2_8_.yml deleted file mode 100644 index 299ffff08..000000000 --- a/tests/test_components/test_pdk_settings_nand2_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand2_8 -info: {} -module: sky130.components -name: nand2_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2b_1_.yml b/tests/test_components/test_pdk_settings_nand2b_1_.yml deleted file mode 100644 index 3217ba99f..000000000 --- a/tests/test_components/test_pdk_settings_nand2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand2b_1 -info: {} -module: sky130.components -name: nand2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2b_2_.yml b/tests/test_components/test_pdk_settings_nand2b_2_.yml deleted file mode 100644 index 8ae1cf7ba..000000000 --- a/tests/test_components/test_pdk_settings_nand2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand2b_2 -info: {} -module: sky130.components -name: nand2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand2b_4_.yml b/tests/test_components/test_pdk_settings_nand2b_4_.yml deleted file mode 100644 index 1adabbcc0..000000000 --- a/tests/test_components/test_pdk_settings_nand2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand2b_4 -info: {} -module: sky130.components -name: nand2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3_1_.yml b/tests/test_components/test_pdk_settings_nand3_1_.yml deleted file mode 100644 index 3977d60d9..000000000 --- a/tests/test_components/test_pdk_settings_nand3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand3_1 -info: {} -module: sky130.components -name: nand3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3_2_.yml b/tests/test_components/test_pdk_settings_nand3_2_.yml deleted file mode 100644 index 033dec6b2..000000000 --- a/tests/test_components/test_pdk_settings_nand3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand3_2 -info: {} -module: sky130.components -name: nand3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3_4_.yml b/tests/test_components/test_pdk_settings_nand3_4_.yml deleted file mode 100644 index d0bf5f1b8..000000000 --- a/tests/test_components/test_pdk_settings_nand3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand3_4 -info: {} -module: sky130.components -name: nand3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3b_1_.yml b/tests/test_components/test_pdk_settings_nand3b_1_.yml deleted file mode 100644 index 3afb297b0..000000000 --- a/tests/test_components/test_pdk_settings_nand3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand3b_1 -info: {} -module: sky130.components -name: nand3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3b_4_.yml b/tests/test_components/test_pdk_settings_nand3b_4_.yml deleted file mode 100644 index 9383cd6ef..000000000 --- a/tests/test_components/test_pdk_settings_nand3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand3b_4 -info: {} -module: sky130.components -name: nand3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4_1_.yml b/tests/test_components/test_pdk_settings_nand4_1_.yml deleted file mode 100644 index 406e484ec..000000000 --- a/tests/test_components/test_pdk_settings_nand4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand4_1 -info: {} -module: sky130.components -name: nand4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4_2_.yml b/tests/test_components/test_pdk_settings_nand4_2_.yml deleted file mode 100644 index 3123e294f..000000000 --- a/tests/test_components/test_pdk_settings_nand4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand4_2 -info: {} -module: sky130.components -name: nand4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4_4_.yml b/tests/test_components/test_pdk_settings_nand4_4_.yml deleted file mode 100644 index 09061d303..000000000 --- a/tests/test_components/test_pdk_settings_nand4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand4_4 -info: {} -module: sky130.components -name: nand4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4b_1_.yml b/tests/test_components/test_pdk_settings_nand4b_1_.yml deleted file mode 100644 index a4c863ff1..000000000 --- a/tests/test_components/test_pdk_settings_nand4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand4b_1 -info: {} -module: sky130.components -name: nand4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4b_2_.yml b/tests/test_components/test_pdk_settings_nand4b_2_.yml deleted file mode 100644 index 28d873133..000000000 --- a/tests/test_components/test_pdk_settings_nand4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand4b_2 -info: {} -module: sky130.components -name: nand4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4b_4_.yml b/tests/test_components/test_pdk_settings_nand4b_4_.yml deleted file mode 100644 index 75c65080e..000000000 --- a/tests/test_components/test_pdk_settings_nand4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand4b_4 -info: {} -module: sky130.components -name: nand4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4bb_1_.yml b/tests/test_components/test_pdk_settings_nand4bb_1_.yml deleted file mode 100644 index 7ece1cdce..000000000 --- a/tests/test_components/test_pdk_settings_nand4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand4bb_1 -info: {} -module: sky130.components -name: nand4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4bb_2_.yml b/tests/test_components/test_pdk_settings_nand4bb_2_.yml deleted file mode 100644 index e006811da..000000000 --- a/tests/test_components/test_pdk_settings_nand4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand4bb_2 -info: {} -module: sky130.components -name: nand4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nand4bb_4_.yml b/tests/test_components/test_pdk_settings_nand4bb_4_.yml deleted file mode 100644 index bf793fa8a..000000000 --- a/tests/test_components/test_pdk_settings_nand4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nand4bb_4 -info: {} -module: sky130.components -name: nand4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2_1_.yml b/tests/test_components/test_pdk_settings_nor2_1_.yml deleted file mode 100644 index 04418613a..000000000 --- a/tests/test_components/test_pdk_settings_nor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor2_1 -info: {} -module: sky130.components -name: nor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2_2_.yml b/tests/test_components/test_pdk_settings_nor2_2_.yml deleted file mode 100644 index cdc358a50..000000000 --- a/tests/test_components/test_pdk_settings_nor2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor2_2 -info: {} -module: sky130.components -name: nor2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2_4_.yml b/tests/test_components/test_pdk_settings_nor2_4_.yml deleted file mode 100644 index 4adcff6f8..000000000 --- a/tests/test_components/test_pdk_settings_nor2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor2_4 -info: {} -module: sky130.components -name: nor2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2_8_.yml b/tests/test_components/test_pdk_settings_nor2_8_.yml deleted file mode 100644 index ffa984245..000000000 --- a/tests/test_components/test_pdk_settings_nor2_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor2_8 -info: {} -module: sky130.components -name: nor2_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2b_1_.yml b/tests/test_components/test_pdk_settings_nor2b_1_.yml deleted file mode 100644 index 642687edc..000000000 --- a/tests/test_components/test_pdk_settings_nor2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor2b_1 -info: {} -module: sky130.components -name: nor2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2b_2_.yml b/tests/test_components/test_pdk_settings_nor2b_2_.yml deleted file mode 100644 index b13bacbcc..000000000 --- a/tests/test_components/test_pdk_settings_nor2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor2b_2 -info: {} -module: sky130.components -name: nor2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor2b_4_.yml b/tests/test_components/test_pdk_settings_nor2b_4_.yml deleted file mode 100644 index 29ef77c42..000000000 --- a/tests/test_components/test_pdk_settings_nor2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor2b_4 -info: {} -module: sky130.components -name: nor2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3_1_.yml b/tests/test_components/test_pdk_settings_nor3_1_.yml deleted file mode 100644 index 2c87644bb..000000000 --- a/tests/test_components/test_pdk_settings_nor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor3_1 -info: {} -module: sky130.components -name: nor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3_2_.yml b/tests/test_components/test_pdk_settings_nor3_2_.yml deleted file mode 100644 index 389f1b850..000000000 --- a/tests/test_components/test_pdk_settings_nor3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor3_2 -info: {} -module: sky130.components -name: nor3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3_4_.yml b/tests/test_components/test_pdk_settings_nor3_4_.yml deleted file mode 100644 index fda4df929..000000000 --- a/tests/test_components/test_pdk_settings_nor3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor3_4 -info: {} -module: sky130.components -name: nor3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3b_1_.yml b/tests/test_components/test_pdk_settings_nor3b_1_.yml deleted file mode 100644 index 5693ef093..000000000 --- a/tests/test_components/test_pdk_settings_nor3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor3b_1 -info: {} -module: sky130.components -name: nor3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3b_2_.yml b/tests/test_components/test_pdk_settings_nor3b_2_.yml deleted file mode 100644 index f7b5faed2..000000000 --- a/tests/test_components/test_pdk_settings_nor3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor3b_2 -info: {} -module: sky130.components -name: nor3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor3b_4_.yml b/tests/test_components/test_pdk_settings_nor3b_4_.yml deleted file mode 100644 index 279177637..000000000 --- a/tests/test_components/test_pdk_settings_nor3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor3b_4 -info: {} -module: sky130.components -name: nor3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4_1_.yml b/tests/test_components/test_pdk_settings_nor4_1_.yml deleted file mode 100644 index f839fcad5..000000000 --- a/tests/test_components/test_pdk_settings_nor4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor4_1 -info: {} -module: sky130.components -name: nor4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4_2_.yml b/tests/test_components/test_pdk_settings_nor4_2_.yml deleted file mode 100644 index 05c3a4881..000000000 --- a/tests/test_components/test_pdk_settings_nor4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor4_2 -info: {} -module: sky130.components -name: nor4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4_4_.yml b/tests/test_components/test_pdk_settings_nor4_4_.yml deleted file mode 100644 index 9d4f205c4..000000000 --- a/tests/test_components/test_pdk_settings_nor4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor4_4 -info: {} -module: sky130.components -name: nor4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4b_1_.yml b/tests/test_components/test_pdk_settings_nor4b_1_.yml deleted file mode 100644 index 1a249d193..000000000 --- a/tests/test_components/test_pdk_settings_nor4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor4b_1 -info: {} -module: sky130.components -name: nor4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4b_2_.yml b/tests/test_components/test_pdk_settings_nor4b_2_.yml deleted file mode 100644 index 4b7c946f0..000000000 --- a/tests/test_components/test_pdk_settings_nor4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor4b_2 -info: {} -module: sky130.components -name: nor4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4b_4_.yml b/tests/test_components/test_pdk_settings_nor4b_4_.yml deleted file mode 100644 index 90693a14c..000000000 --- a/tests/test_components/test_pdk_settings_nor4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor4b_4 -info: {} -module: sky130.components -name: nor4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4bb_1_.yml b/tests/test_components/test_pdk_settings_nor4bb_1_.yml deleted file mode 100644 index d658ed519..000000000 --- a/tests/test_components/test_pdk_settings_nor4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor4bb_1 -info: {} -module: sky130.components -name: nor4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4bb_2_.yml b/tests/test_components/test_pdk_settings_nor4bb_2_.yml deleted file mode 100644 index 3e3d6059a..000000000 --- a/tests/test_components/test_pdk_settings_nor4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor4bb_2 -info: {} -module: sky130.components -name: nor4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_nor4bb_4_.yml b/tests/test_components/test_pdk_settings_nor4bb_4_.yml deleted file mode 100644 index b8053c3e2..000000000 --- a/tests/test_components/test_pdk_settings_nor4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: nor4bb_4 -info: {} -module: sky130.components -name: nor4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111a_1_.yml b/tests/test_components/test_pdk_settings_o2111a_1_.yml deleted file mode 100644 index 00359d9ef..000000000 --- a/tests/test_components/test_pdk_settings_o2111a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2111a_1 -info: {} -module: sky130.components -name: o2111a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111a_2_.yml b/tests/test_components/test_pdk_settings_o2111a_2_.yml deleted file mode 100644 index c8264c274..000000000 --- a/tests/test_components/test_pdk_settings_o2111a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2111a_2 -info: {} -module: sky130.components -name: o2111a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111a_4_.yml b/tests/test_components/test_pdk_settings_o2111a_4_.yml deleted file mode 100644 index 8cb245b50..000000000 --- a/tests/test_components/test_pdk_settings_o2111a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2111a_4 -info: {} -module: sky130.components -name: o2111a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111ai_1_.yml b/tests/test_components/test_pdk_settings_o2111ai_1_.yml deleted file mode 100644 index 833d10e77..000000000 --- a/tests/test_components/test_pdk_settings_o2111ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2111ai_1 -info: {} -module: sky130.components -name: o2111ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111ai_2_.yml b/tests/test_components/test_pdk_settings_o2111ai_2_.yml deleted file mode 100644 index b8d594de0..000000000 --- a/tests/test_components/test_pdk_settings_o2111ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2111ai_2 -info: {} -module: sky130.components -name: o2111ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2111ai_4_.yml b/tests/test_components/test_pdk_settings_o2111ai_4_.yml deleted file mode 100644 index 1bb3d396d..000000000 --- a/tests/test_components/test_pdk_settings_o2111ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2111ai_4 -info: {} -module: sky130.components -name: o2111ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o211a_1_.yml b/tests/test_components/test_pdk_settings_o211a_1_.yml deleted file mode 100644 index 6dc986ae7..000000000 --- a/tests/test_components/test_pdk_settings_o211a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o211a_1 -info: {} -module: sky130.components -name: o211a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o211a_2_.yml b/tests/test_components/test_pdk_settings_o211a_2_.yml deleted file mode 100644 index 81c62123e..000000000 --- a/tests/test_components/test_pdk_settings_o211a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o211a_2 -info: {} -module: sky130.components -name: o211a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o211a_4_.yml b/tests/test_components/test_pdk_settings_o211a_4_.yml deleted file mode 100644 index acac59425..000000000 --- a/tests/test_components/test_pdk_settings_o211a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o211a_4 -info: {} -module: sky130.components -name: o211a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o211ai_1_.yml b/tests/test_components/test_pdk_settings_o211ai_1_.yml deleted file mode 100644 index 1a7ed5f26..000000000 --- a/tests/test_components/test_pdk_settings_o211ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o211ai_1 -info: {} -module: sky130.components -name: o211ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o211ai_2_.yml b/tests/test_components/test_pdk_settings_o211ai_2_.yml deleted file mode 100644 index a79afcf2f..000000000 --- a/tests/test_components/test_pdk_settings_o211ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o211ai_2 -info: {} -module: sky130.components -name: o211ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o211ai_4_.yml b/tests/test_components/test_pdk_settings_o211ai_4_.yml deleted file mode 100644 index 725c4e44e..000000000 --- a/tests/test_components/test_pdk_settings_o211ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o211ai_4 -info: {} -module: sky130.components -name: o211ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21a_1_.yml b/tests/test_components/test_pdk_settings_o21a_1_.yml deleted file mode 100644 index 294d0a47a..000000000 --- a/tests/test_components/test_pdk_settings_o21a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21a_1 -info: {} -module: sky130.components -name: o21a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21a_2_.yml b/tests/test_components/test_pdk_settings_o21a_2_.yml deleted file mode 100644 index 8ef9423b5..000000000 --- a/tests/test_components/test_pdk_settings_o21a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21a_2 -info: {} -module: sky130.components -name: o21a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21a_4_.yml b/tests/test_components/test_pdk_settings_o21a_4_.yml deleted file mode 100644 index ca37b1c84..000000000 --- a/tests/test_components/test_pdk_settings_o21a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21a_4 -info: {} -module: sky130.components -name: o21a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ai_0_.yml b/tests/test_components/test_pdk_settings_o21ai_0_.yml deleted file mode 100644 index e9acb7da8..000000000 --- a/tests/test_components/test_pdk_settings_o21ai_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21ai_0 -info: {} -module: sky130.components -name: o21ai_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ai_1_.yml b/tests/test_components/test_pdk_settings_o21ai_1_.yml deleted file mode 100644 index 4a585ae11..000000000 --- a/tests/test_components/test_pdk_settings_o21ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21ai_1 -info: {} -module: sky130.components -name: o21ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ai_2_.yml b/tests/test_components/test_pdk_settings_o21ai_2_.yml deleted file mode 100644 index d4685b63a..000000000 --- a/tests/test_components/test_pdk_settings_o21ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21ai_2 -info: {} -module: sky130.components -name: o21ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ai_4_.yml b/tests/test_components/test_pdk_settings_o21ai_4_.yml deleted file mode 100644 index 1f322b76a..000000000 --- a/tests/test_components/test_pdk_settings_o21ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21ai_4 -info: {} -module: sky130.components -name: o21ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ba_1_.yml b/tests/test_components/test_pdk_settings_o21ba_1_.yml deleted file mode 100644 index 022e50dca..000000000 --- a/tests/test_components/test_pdk_settings_o21ba_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21ba_1 -info: {} -module: sky130.components -name: o21ba_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ba_2_.yml b/tests/test_components/test_pdk_settings_o21ba_2_.yml deleted file mode 100644 index ce8748225..000000000 --- a/tests/test_components/test_pdk_settings_o21ba_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21ba_2 -info: {} -module: sky130.components -name: o21ba_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21ba_4_.yml b/tests/test_components/test_pdk_settings_o21ba_4_.yml deleted file mode 100644 index 7d9b830f8..000000000 --- a/tests/test_components/test_pdk_settings_o21ba_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21ba_4 -info: {} -module: sky130.components -name: o21ba_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21bai_1_.yml b/tests/test_components/test_pdk_settings_o21bai_1_.yml deleted file mode 100644 index d8765b640..000000000 --- a/tests/test_components/test_pdk_settings_o21bai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21bai_1 -info: {} -module: sky130.components -name: o21bai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21bai_2_.yml b/tests/test_components/test_pdk_settings_o21bai_2_.yml deleted file mode 100644 index 32ba53978..000000000 --- a/tests/test_components/test_pdk_settings_o21bai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21bai_2 -info: {} -module: sky130.components -name: o21bai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o21bai_4_.yml b/tests/test_components/test_pdk_settings_o21bai_4_.yml deleted file mode 100644 index 9824f7e0f..000000000 --- a/tests/test_components/test_pdk_settings_o21bai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o21bai_4 -info: {} -module: sky130.components -name: o21bai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o221a_1_.yml b/tests/test_components/test_pdk_settings_o221a_1_.yml deleted file mode 100644 index dcc38a8bd..000000000 --- a/tests/test_components/test_pdk_settings_o221a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o221a_1 -info: {} -module: sky130.components -name: o221a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o221a_2_.yml b/tests/test_components/test_pdk_settings_o221a_2_.yml deleted file mode 100644 index ed446bad5..000000000 --- a/tests/test_components/test_pdk_settings_o221a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o221a_2 -info: {} -module: sky130.components -name: o221a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o221a_4_.yml b/tests/test_components/test_pdk_settings_o221a_4_.yml deleted file mode 100644 index f0ca233d7..000000000 --- a/tests/test_components/test_pdk_settings_o221a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o221a_4 -info: {} -module: sky130.components -name: o221a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o221ai_1_.yml b/tests/test_components/test_pdk_settings_o221ai_1_.yml deleted file mode 100644 index 0c6c26cd4..000000000 --- a/tests/test_components/test_pdk_settings_o221ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o221ai_1 -info: {} -module: sky130.components -name: o221ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o221ai_2_.yml b/tests/test_components/test_pdk_settings_o221ai_2_.yml deleted file mode 100644 index e3435da66..000000000 --- a/tests/test_components/test_pdk_settings_o221ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o221ai_2 -info: {} -module: sky130.components -name: o221ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o221ai_4_.yml b/tests/test_components/test_pdk_settings_o221ai_4_.yml deleted file mode 100644 index f34d6224b..000000000 --- a/tests/test_components/test_pdk_settings_o221ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o221ai_4 -info: {} -module: sky130.components -name: o221ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o22a_1_.yml b/tests/test_components/test_pdk_settings_o22a_1_.yml deleted file mode 100644 index 3ab8d0d4d..000000000 --- a/tests/test_components/test_pdk_settings_o22a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o22a_1 -info: {} -module: sky130.components -name: o22a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o22a_2_.yml b/tests/test_components/test_pdk_settings_o22a_2_.yml deleted file mode 100644 index 8ef3e426f..000000000 --- a/tests/test_components/test_pdk_settings_o22a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o22a_2 -info: {} -module: sky130.components -name: o22a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o22a_4_.yml b/tests/test_components/test_pdk_settings_o22a_4_.yml deleted file mode 100644 index a301c4967..000000000 --- a/tests/test_components/test_pdk_settings_o22a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o22a_4 -info: {} -module: sky130.components -name: o22a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o22ai_1_.yml b/tests/test_components/test_pdk_settings_o22ai_1_.yml deleted file mode 100644 index be13ad4d2..000000000 --- a/tests/test_components/test_pdk_settings_o22ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o22ai_1 -info: {} -module: sky130.components -name: o22ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o22ai_2_.yml b/tests/test_components/test_pdk_settings_o22ai_2_.yml deleted file mode 100644 index a7e9b1502..000000000 --- a/tests/test_components/test_pdk_settings_o22ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o22ai_2 -info: {} -module: sky130.components -name: o22ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o22ai_4_.yml b/tests/test_components/test_pdk_settings_o22ai_4_.yml deleted file mode 100644 index dc51801f3..000000000 --- a/tests/test_components/test_pdk_settings_o22ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o22ai_4 -info: {} -module: sky130.components -name: o22ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2a_1_.yml b/tests/test_components/test_pdk_settings_o2bb2a_1_.yml deleted file mode 100644 index f1e5c18e1..000000000 --- a/tests/test_components/test_pdk_settings_o2bb2a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2bb2a_1 -info: {} -module: sky130.components -name: o2bb2a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2a_2_.yml b/tests/test_components/test_pdk_settings_o2bb2a_2_.yml deleted file mode 100644 index d718ac938..000000000 --- a/tests/test_components/test_pdk_settings_o2bb2a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2bb2a_2 -info: {} -module: sky130.components -name: o2bb2a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2a_4_.yml b/tests/test_components/test_pdk_settings_o2bb2a_4_.yml deleted file mode 100644 index 2e72a34d1..000000000 --- a/tests/test_components/test_pdk_settings_o2bb2a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2bb2a_4 -info: {} -module: sky130.components -name: o2bb2a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2ai_1_.yml b/tests/test_components/test_pdk_settings_o2bb2ai_1_.yml deleted file mode 100644 index 060a96f02..000000000 --- a/tests/test_components/test_pdk_settings_o2bb2ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2bb2ai_1 -info: {} -module: sky130.components -name: o2bb2ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2ai_2_.yml b/tests/test_components/test_pdk_settings_o2bb2ai_2_.yml deleted file mode 100644 index 6097a170c..000000000 --- a/tests/test_components/test_pdk_settings_o2bb2ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2bb2ai_2 -info: {} -module: sky130.components -name: o2bb2ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o2bb2ai_4_.yml b/tests/test_components/test_pdk_settings_o2bb2ai_4_.yml deleted file mode 100644 index 414459b12..000000000 --- a/tests/test_components/test_pdk_settings_o2bb2ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o2bb2ai_4 -info: {} -module: sky130.components -name: o2bb2ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o311a_1_.yml b/tests/test_components/test_pdk_settings_o311a_1_.yml deleted file mode 100644 index 008806d30..000000000 --- a/tests/test_components/test_pdk_settings_o311a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o311a_1 -info: {} -module: sky130.components -name: o311a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o311a_2_.yml b/tests/test_components/test_pdk_settings_o311a_2_.yml deleted file mode 100644 index 2ee366b10..000000000 --- a/tests/test_components/test_pdk_settings_o311a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o311a_2 -info: {} -module: sky130.components -name: o311a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o311a_4_.yml b/tests/test_components/test_pdk_settings_o311a_4_.yml deleted file mode 100644 index 39eb1caa8..000000000 --- a/tests/test_components/test_pdk_settings_o311a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o311a_4 -info: {} -module: sky130.components -name: o311a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o311ai_0_.yml b/tests/test_components/test_pdk_settings_o311ai_0_.yml deleted file mode 100644 index 4e8f06419..000000000 --- a/tests/test_components/test_pdk_settings_o311ai_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o311ai_0 -info: {} -module: sky130.components -name: o311ai_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o311ai_1_.yml b/tests/test_components/test_pdk_settings_o311ai_1_.yml deleted file mode 100644 index 080819dc5..000000000 --- a/tests/test_components/test_pdk_settings_o311ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o311ai_1 -info: {} -module: sky130.components -name: o311ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o311ai_2_.yml b/tests/test_components/test_pdk_settings_o311ai_2_.yml deleted file mode 100644 index a2e83732b..000000000 --- a/tests/test_components/test_pdk_settings_o311ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o311ai_2 -info: {} -module: sky130.components -name: o311ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o311ai_4_.yml b/tests/test_components/test_pdk_settings_o311ai_4_.yml deleted file mode 100644 index cc74428d1..000000000 --- a/tests/test_components/test_pdk_settings_o311ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o311ai_4 -info: {} -module: sky130.components -name: o311ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o31a_1_.yml b/tests/test_components/test_pdk_settings_o31a_1_.yml deleted file mode 100644 index 86c55c1de..000000000 --- a/tests/test_components/test_pdk_settings_o31a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o31a_1 -info: {} -module: sky130.components -name: o31a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o31a_2_.yml b/tests/test_components/test_pdk_settings_o31a_2_.yml deleted file mode 100644 index 7827ab38f..000000000 --- a/tests/test_components/test_pdk_settings_o31a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o31a_2 -info: {} -module: sky130.components -name: o31a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o31a_4_.yml b/tests/test_components/test_pdk_settings_o31a_4_.yml deleted file mode 100644 index 5a2272508..000000000 --- a/tests/test_components/test_pdk_settings_o31a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o31a_4 -info: {} -module: sky130.components -name: o31a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o31ai_1_.yml b/tests/test_components/test_pdk_settings_o31ai_1_.yml deleted file mode 100644 index 1c6dfa4c7..000000000 --- a/tests/test_components/test_pdk_settings_o31ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o31ai_1 -info: {} -module: sky130.components -name: o31ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o31ai_2_.yml b/tests/test_components/test_pdk_settings_o31ai_2_.yml deleted file mode 100644 index c73e71837..000000000 --- a/tests/test_components/test_pdk_settings_o31ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o31ai_2 -info: {} -module: sky130.components -name: o31ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o31ai_4_.yml b/tests/test_components/test_pdk_settings_o31ai_4_.yml deleted file mode 100644 index 619e95c88..000000000 --- a/tests/test_components/test_pdk_settings_o31ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o31ai_4 -info: {} -module: sky130.components -name: o31ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o32a_1_.yml b/tests/test_components/test_pdk_settings_o32a_1_.yml deleted file mode 100644 index b31707b3a..000000000 --- a/tests/test_components/test_pdk_settings_o32a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o32a_1 -info: {} -module: sky130.components -name: o32a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o32a_2_.yml b/tests/test_components/test_pdk_settings_o32a_2_.yml deleted file mode 100644 index dcca60797..000000000 --- a/tests/test_components/test_pdk_settings_o32a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o32a_2 -info: {} -module: sky130.components -name: o32a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o32a_4_.yml b/tests/test_components/test_pdk_settings_o32a_4_.yml deleted file mode 100644 index 62c26a502..000000000 --- a/tests/test_components/test_pdk_settings_o32a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o32a_4 -info: {} -module: sky130.components -name: o32a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o32ai_1_.yml b/tests/test_components/test_pdk_settings_o32ai_1_.yml deleted file mode 100644 index 067af0590..000000000 --- a/tests/test_components/test_pdk_settings_o32ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o32ai_1 -info: {} -module: sky130.components -name: o32ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o32ai_2_.yml b/tests/test_components/test_pdk_settings_o32ai_2_.yml deleted file mode 100644 index 5dc142ced..000000000 --- a/tests/test_components/test_pdk_settings_o32ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o32ai_2 -info: {} -module: sky130.components -name: o32ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o32ai_4_.yml b/tests/test_components/test_pdk_settings_o32ai_4_.yml deleted file mode 100644 index e26c7ef91..000000000 --- a/tests/test_components/test_pdk_settings_o32ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o32ai_4 -info: {} -module: sky130.components -name: o32ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o41a_1_.yml b/tests/test_components/test_pdk_settings_o41a_1_.yml deleted file mode 100644 index 17f4f8d6c..000000000 --- a/tests/test_components/test_pdk_settings_o41a_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o41a_1 -info: {} -module: sky130.components -name: o41a_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o41a_2_.yml b/tests/test_components/test_pdk_settings_o41a_2_.yml deleted file mode 100644 index 7fc8c4774..000000000 --- a/tests/test_components/test_pdk_settings_o41a_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o41a_2 -info: {} -module: sky130.components -name: o41a_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o41a_4_.yml b/tests/test_components/test_pdk_settings_o41a_4_.yml deleted file mode 100644 index ed3a07f28..000000000 --- a/tests/test_components/test_pdk_settings_o41a_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o41a_4 -info: {} -module: sky130.components -name: o41a_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o41ai_1_.yml b/tests/test_components/test_pdk_settings_o41ai_1_.yml deleted file mode 100644 index 43d23aca3..000000000 --- a/tests/test_components/test_pdk_settings_o41ai_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o41ai_1 -info: {} -module: sky130.components -name: o41ai_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o41ai_2_.yml b/tests/test_components/test_pdk_settings_o41ai_2_.yml deleted file mode 100644 index d7e0910f3..000000000 --- a/tests/test_components/test_pdk_settings_o41ai_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o41ai_2 -info: {} -module: sky130.components -name: o41ai_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_o41ai_4_.yml b/tests/test_components/test_pdk_settings_o41ai_4_.yml deleted file mode 100644 index f20d65c89..000000000 --- a/tests/test_components/test_pdk_settings_o41ai_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: o41ai_4 -info: {} -module: sky130.components -name: o41ai_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or2_0_.yml b/tests/test_components/test_pdk_settings_or2_0_.yml deleted file mode 100644 index 334ca7520..000000000 --- a/tests/test_components/test_pdk_settings_or2_0_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or2_0 -info: {} -module: sky130.components -name: or2_0 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or2_1_.yml b/tests/test_components/test_pdk_settings_or2_1_.yml deleted file mode 100644 index ae1a11749..000000000 --- a/tests/test_components/test_pdk_settings_or2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or2_1 -info: {} -module: sky130.components -name: or2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or2_2_.yml b/tests/test_components/test_pdk_settings_or2_2_.yml deleted file mode 100644 index d3d8b9b81..000000000 --- a/tests/test_components/test_pdk_settings_or2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or2_2 -info: {} -module: sky130.components -name: or2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or2_4_.yml b/tests/test_components/test_pdk_settings_or2_4_.yml deleted file mode 100644 index b8686230b..000000000 --- a/tests/test_components/test_pdk_settings_or2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or2_4 -info: {} -module: sky130.components -name: or2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or2b_1_.yml b/tests/test_components/test_pdk_settings_or2b_1_.yml deleted file mode 100644 index 657897c81..000000000 --- a/tests/test_components/test_pdk_settings_or2b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or2b_1 -info: {} -module: sky130.components -name: or2b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or2b_2_.yml b/tests/test_components/test_pdk_settings_or2b_2_.yml deleted file mode 100644 index 7fa88820c..000000000 --- a/tests/test_components/test_pdk_settings_or2b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or2b_2 -info: {} -module: sky130.components -name: or2b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or2b_4_.yml b/tests/test_components/test_pdk_settings_or2b_4_.yml deleted file mode 100644 index 8a6437dec..000000000 --- a/tests/test_components/test_pdk_settings_or2b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or2b_4 -info: {} -module: sky130.components -name: or2b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or3_1_.yml b/tests/test_components/test_pdk_settings_or3_1_.yml deleted file mode 100644 index 4e52976ce..000000000 --- a/tests/test_components/test_pdk_settings_or3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or3_1 -info: {} -module: sky130.components -name: or3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or3_2_.yml b/tests/test_components/test_pdk_settings_or3_2_.yml deleted file mode 100644 index 700e2f546..000000000 --- a/tests/test_components/test_pdk_settings_or3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or3_2 -info: {} -module: sky130.components -name: or3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or3_4_.yml b/tests/test_components/test_pdk_settings_or3_4_.yml deleted file mode 100644 index 76e096a43..000000000 --- a/tests/test_components/test_pdk_settings_or3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or3_4 -info: {} -module: sky130.components -name: or3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or3b_1_.yml b/tests/test_components/test_pdk_settings_or3b_1_.yml deleted file mode 100644 index 72104e356..000000000 --- a/tests/test_components/test_pdk_settings_or3b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or3b_1 -info: {} -module: sky130.components -name: or3b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or3b_2_.yml b/tests/test_components/test_pdk_settings_or3b_2_.yml deleted file mode 100644 index d5b0444df..000000000 --- a/tests/test_components/test_pdk_settings_or3b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or3b_2 -info: {} -module: sky130.components -name: or3b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or3b_4_.yml b/tests/test_components/test_pdk_settings_or3b_4_.yml deleted file mode 100644 index df7a4186c..000000000 --- a/tests/test_components/test_pdk_settings_or3b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or3b_4 -info: {} -module: sky130.components -name: or3b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or4_1_.yml b/tests/test_components/test_pdk_settings_or4_1_.yml deleted file mode 100644 index 035229319..000000000 --- a/tests/test_components/test_pdk_settings_or4_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or4_1 -info: {} -module: sky130.components -name: or4_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or4_2_.yml b/tests/test_components/test_pdk_settings_or4_2_.yml deleted file mode 100644 index 72686e74a..000000000 --- a/tests/test_components/test_pdk_settings_or4_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or4_2 -info: {} -module: sky130.components -name: or4_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or4_4_.yml b/tests/test_components/test_pdk_settings_or4_4_.yml deleted file mode 100644 index dce77af2a..000000000 --- a/tests/test_components/test_pdk_settings_or4_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or4_4 -info: {} -module: sky130.components -name: or4_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or4b_1_.yml b/tests/test_components/test_pdk_settings_or4b_1_.yml deleted file mode 100644 index 891a2ce6c..000000000 --- a/tests/test_components/test_pdk_settings_or4b_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or4b_1 -info: {} -module: sky130.components -name: or4b_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or4b_2_.yml b/tests/test_components/test_pdk_settings_or4b_2_.yml deleted file mode 100644 index 29b0c53d6..000000000 --- a/tests/test_components/test_pdk_settings_or4b_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or4b_2 -info: {} -module: sky130.components -name: or4b_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or4b_4_.yml b/tests/test_components/test_pdk_settings_or4b_4_.yml deleted file mode 100644 index 90e478394..000000000 --- a/tests/test_components/test_pdk_settings_or4b_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or4b_4 -info: {} -module: sky130.components -name: or4b_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or4bb_1_.yml b/tests/test_components/test_pdk_settings_or4bb_1_.yml deleted file mode 100644 index 09fd195a8..000000000 --- a/tests/test_components/test_pdk_settings_or4bb_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or4bb_1 -info: {} -module: sky130.components -name: or4bb_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or4bb_2_.yml b/tests/test_components/test_pdk_settings_or4bb_2_.yml deleted file mode 100644 index f80e2c1d1..000000000 --- a/tests/test_components/test_pdk_settings_or4bb_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or4bb_2 -info: {} -module: sky130.components -name: or4bb_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_or4bb_4_.yml b/tests/test_components/test_pdk_settings_or4bb_4_.yml deleted file mode 100644 index 03b5ec8d1..000000000 --- a/tests/test_components/test_pdk_settings_or4bb_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: or4bb_4 -info: {} -module: sky130.components -name: or4bb_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_probe_p_8_.yml b/tests/test_components/test_pdk_settings_probe_p_8_.yml deleted file mode 100644 index 7edb99ea1..000000000 --- a/tests/test_components/test_pdk_settings_probe_p_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: probe_p_8 -info: {} -module: sky130.components -name: probe_p_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_probec_p_8_.yml b/tests/test_components/test_pdk_settings_probec_p_8_.yml deleted file mode 100644 index 5082a32ac..000000000 --- a/tests/test_components/test_pdk_settings_probec_p_8_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: probec_p_8 -info: {} -module: sky130.components -name: probec_p_8 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_aura_blocking_.yml b/tests/test_components/test_pdk_settings_rf_aura_blocking_.yml deleted file mode 100644 index b1a143465..000000000 --- a/tests/test_components/test_pdk_settings_rf_aura_blocking_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_aura_blocking -info: {} -module: sky130.components -name: rf_aura_blocking -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_aura_drc_flag_check_.yml b/tests/test_components/test_pdk_settings_rf_aura_drc_flag_check_.yml deleted file mode 100644 index c73e5b2f7..000000000 --- a/tests/test_components/test_pdk_settings_rf_aura_drc_flag_check_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_aura_drc_flag_check -info: {} -module: sky130.components -name: rf_aura_drc_flag_check -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_aura_lvs_drc_.yml b/tests/test_components/test_pdk_settings_rf_aura_lvs_drc_.yml deleted file mode 100644 index 3cc3c95a8..000000000 --- a/tests/test_components/test_pdk_settings_rf_aura_lvs_drc_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_aura_lvs_drc -info: {} -module: sky130.components -name: rf_aura_lvs_drc -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p15_.yml deleted file mode 100644 index dc848f0e2..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM02W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM02W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p18_.yml deleted file mode 100644 index 2ea1ca5c0..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM02W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM02W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p25_.yml deleted file mode 100644 index 91efc8902..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM02W1p65L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM02W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p15_.yml deleted file mode 100644 index 560647da9..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM02W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM02W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p18_.yml deleted file mode 100644 index 4f08ce4ea..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM02W3p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM02W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p25_.yml deleted file mode 100644 index 824ede051..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM02W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM02W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p15_.yml deleted file mode 100644 index e5f439af4..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM02W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM02W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p18_.yml deleted file mode 100644 index 2f3159805..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM02W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM02W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p25_.yml deleted file mode 100644 index 9c4503d1f..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM02W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM02W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM02W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p15_.yml deleted file mode 100644 index 9f6610054..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM04W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM04W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p18_.yml deleted file mode 100644 index d167afa9f..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM04W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM04W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p25_.yml deleted file mode 100644 index 64c5a5378..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM04W1p65L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM04W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p15_.yml deleted file mode 100644 index e076ba777..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p18_.yml deleted file mode 100644 index 60f7941e6..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM04W3p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM04W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p25_.yml deleted file mode 100644 index c3422c903..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM04W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM04W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p15_.yml deleted file mode 100644 index d80a04368..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p18_.yml deleted file mode 100644 index 964a6e304..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM04W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM04W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p25_.yml deleted file mode 100644 index 2a14bf3da..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_aM04W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_aM04W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_aM04W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p15_.yml deleted file mode 100644 index d0822680c..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM02W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM02W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p18_.yml deleted file mode 100644 index 141846352..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM02W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM02W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p25_.yml deleted file mode 100644 index 7eb41b26f..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM02W1p65L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM02W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p25_.yml deleted file mode 100644 index ef96d0ce4..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM02W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM02W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p15_.yml deleted file mode 100644 index 1c7aab755..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM02W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM02W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p18_.yml deleted file mode 100644 index 1952980e1..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM02W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM02W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p25_.yml deleted file mode 100644 index e73983c59..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM02W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM02W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p15_.yml deleted file mode 100644 index da7d4f552..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM04W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM04W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p18_.yml deleted file mode 100644 index b5220c89f..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM04W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM04W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p25_.yml deleted file mode 100644 index 4379a06a7..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM04W1p65L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM04W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p15_.yml deleted file mode 100644 index c9ad2a49c..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p18_.yml deleted file mode 100644 index edb918d9a..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM04W3p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM04W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p25_.yml deleted file mode 100644 index 8c6faf2e9..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM04W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM04W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p15_.yml deleted file mode 100644 index 59a920631..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p18_.yml deleted file mode 100644 index acda1b4ec..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM04W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM04W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p25_.yml deleted file mode 100644 index 3eb3adb2d..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM04W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_bM04W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_bM04W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml deleted file mode 100644 index e6d0161c7..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_hcM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_hcM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml deleted file mode 100644 index a654ead02..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_hcM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_hcM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_hcM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml deleted file mode 100644 index 3013ca88c..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF02W0p42L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF02W0p42L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml deleted file mode 100644 index 3cab51c8e..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF02W0p84L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF02W0p84L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml deleted file mode 100644 index 79d67dfa2..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF02W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF02W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml deleted file mode 100644 index 2675c4751..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF02W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF02W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml deleted file mode 100644 index 05b042a59..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF04W0p42L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF04W0p42L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml deleted file mode 100644 index 5ade5272c..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF04W0p84L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF04W0p84L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml deleted file mode 100644 index e3f3a04ee..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF04W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF04W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml deleted file mode 100644 index b8cfec2c9..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF04W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml deleted file mode 100644 index 6e3c1625e..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF06W0p42L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF06W0p42L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml deleted file mode 100644 index a94a5a90d..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF06W0p84L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF06W0p84L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml deleted file mode 100644 index 286ffb522..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF06W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF06W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml deleted file mode 100644 index 85ea78b49..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF06W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF06W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml deleted file mode 100644 index d7f89755d..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF08W0p42L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF08W0p42L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml deleted file mode 100644 index 42d2cbbd7..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF08W0p84L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF08W0p84L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml deleted file mode 100644 index 3d6d2ff8d..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF08W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF08W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml deleted file mode 100644 index 279038ff0..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aF08W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aF08W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml deleted file mode 100644 index 8175b81c7..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM02W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM02W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml deleted file mode 100644 index d14c42f2e..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM02W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM02W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml deleted file mode 100644 index 85b2d480e..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM02W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM02W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml deleted file mode 100644 index 5e111abb1..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM02W3p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM02W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml deleted file mode 100644 index 7bad96ae4..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM02W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM02W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml deleted file mode 100644 index 91f72ffeb..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM02W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM02W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml deleted file mode 100644 index 4ae78e998..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM02W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM02W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml deleted file mode 100644 index d12a61758..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM02W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM02W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml deleted file mode 100644 index ccd1fe1a0..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM04W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM04W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml deleted file mode 100644 index 8ab8881af..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM04W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM04W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml deleted file mode 100644 index f6df73d5c..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM04W1p65L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM04W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml deleted file mode 100644 index 4589e4693..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml deleted file mode 100644 index 25d2f231b..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM04W3p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM04W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml deleted file mode 100644 index be32d27a8..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM04W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM04W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml deleted file mode 100644 index 8b1a87b49..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml deleted file mode 100644 index b9ea4dee8..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM04W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM04W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml deleted file mode 100644 index b4d19d9aa..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_aM04W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_aM04W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml deleted file mode 100644 index 8ff1fe93a..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM02W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM02W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml deleted file mode 100644 index dd4488c15..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM02W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM02W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml deleted file mode 100644 index 529760211..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM02W1p65L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM02W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml deleted file mode 100644 index bdf5e20d9..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM02W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM02W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml deleted file mode 100644 index 92b4667b5..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM02W3p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM02W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml deleted file mode 100644 index 119d143aa..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM02W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM02W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml deleted file mode 100644 index 09850f97f..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM02W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM02W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml deleted file mode 100644 index 80791cf4b..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM02W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM02W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml deleted file mode 100644 index 18310f830..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM02W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM02W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml deleted file mode 100644 index bc53b5966..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM04W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM04W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml deleted file mode 100644 index 74f695df7..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM04W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM04W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml deleted file mode 100644 index 91f22be2e..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM04W1p65L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM04W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml deleted file mode 100644 index 6f4f9b067..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml deleted file mode 100644 index 68eb1102e..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM04W3p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM04W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml deleted file mode 100644 index d569d3d6d..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM04W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM04W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml deleted file mode 100644 index dce224e6e..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml deleted file mode 100644 index 743e4743e..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM04W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM04W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml deleted file mode 100644 index 51a4774b5..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_bM04W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_bM04W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml deleted file mode 100644 index 113702df7..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM02W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM02W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml deleted file mode 100644 index 990b44fd9..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM02W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM02W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml deleted file mode 100644 index b09128dda..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM02W1p65L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM02W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml deleted file mode 100644 index 1935355d6..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM02W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM02W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml deleted file mode 100644 index 81ce2305d..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM02W3p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM02W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml deleted file mode 100644 index 9cf0d6465..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM02W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM02W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml deleted file mode 100644 index ef658201a..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM02W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM02W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml deleted file mode 100644 index 60be588b2..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM02W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM02W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml deleted file mode 100644 index e38a3f2ea..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM02W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM02W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml deleted file mode 100644 index 876dd4f79..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM04W1p65L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM04W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml deleted file mode 100644 index 78e3bed36..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM04W1p65L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM04W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml deleted file mode 100644 index fe955bb84..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml deleted file mode 100644 index c62574f79..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM04W3p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM04W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml deleted file mode 100644 index 0bf13e28f..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM04W3p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM04W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml deleted file mode 100644 index 44bf3f94a..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml deleted file mode 100644 index 8cc58243a..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM04W5p00L0p18 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM04W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml deleted file mode 100644 index b25191775..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_lvt_cM04W5p00L0p25 -info: {} -module: sky130.components -name: rf_nfet_01v8_lvt_cM04W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml deleted file mode 100644 index 8398d7a55..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_mcM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_mcM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml deleted file mode 100644 index de2b129dc..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_mcM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_01v8_mcM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_nfet_01v8_mcM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_aup_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_aup_.yml deleted file mode 100644 index 1787653a6..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_20v0_aup_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_20v0_aup -info: {} -module: sky130.components -name: rf_nfet_20v0_aup -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_noptap_iso_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_noptap_iso_.yml deleted file mode 100644 index 69aa39d5d..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_20v0_noptap_iso_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_20v0_noptap_iso -info: {} -module: sky130.components -name: rf_nfet_20v0_noptap_iso -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_aup_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_aup_.yml deleted file mode 100644 index 626198d8c..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_aup_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_20v0_nvt_aup -info: {} -module: sky130.components -name: rf_nfet_20v0_nvt_aup -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_noptap_iso_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_noptap_iso_.yml deleted file mode 100644 index c3b680d0d..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_noptap_iso_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_20v0_nvt_noptap_iso -info: {} -module: sky130.components -name: rf_nfet_20v0_nvt_noptap_iso -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_.yml deleted file mode 100644 index 1c4615023..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_20v0_nvt_withptap -info: {} -module: sky130.components -name: rf_nfet_20v0_nvt_withptap -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_.yml deleted file mode 100644 index 8569a1102..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_20v0_withptap -info: {} -module: sky130.components -name: rf_nfet_20v0_withptap -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_iso_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_iso_.yml deleted file mode 100644 index df5433e6c..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_20v0_withptap_iso_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_20v0_withptap_iso -info: {} -module: sky130.components -name: rf_nfet_20v0_withptap_iso -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_zvt_withptap_.yml b/tests/test_components/test_pdk_settings_rf_nfet_20v0_zvt_withptap_.yml deleted file mode 100644 index b0162987c..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_20v0_zvt_withptap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_20v0_zvt_withptap -info: {} -module: sky130.components -name: rf_nfet_20v0_zvt_withptap -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml deleted file mode 100644 index 0cd13bff3..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_aM04W7p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_aM04W7p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml deleted file mode 100644 index fea46d9ac..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_aM10W3p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_aM10W3p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml deleted file mode 100644 index d543ad34f..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_aM10W5p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_aM10W5p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml deleted file mode 100644 index 1e40dd9ec..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_aM10W7p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_aM10W7p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml deleted file mode 100644 index 18dfb6ab2..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_bM02W3p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_bM02W3p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml deleted file mode 100644 index 0b2e93a0c..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_bM02W5p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_bM02W5p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml deleted file mode 100644 index 758a695ba..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_bM04W3p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_bM04W3p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml deleted file mode 100644 index c9a56b45b..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_bM04W5p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_bM04W5p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml deleted file mode 100644 index ada963e1f..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_bM04W7p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_bM04W7p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml deleted file mode 100644 index 53d5dcf31..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_bM10W3p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_bM10W3p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml deleted file mode 100644 index 368f163a2..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_bM10W5p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_bM10W5p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml deleted file mode 100644 index 913b35dba..000000000 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_nfet_g5v0d10v5_bM10W7p00L0p50 -info: {} -module: sky130.components -name: rf_nfet_g5v0d10v5_bM10W7p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml deleted file mode 100644 index 004dbced5..000000000 --- a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L1p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_npn_05v5_W1p00L1p00 -info: {} -module: sky130.components -name: rf_npn_05v5_W1p00L1p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml deleted file mode 100644 index 8ed2c1680..000000000 --- a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L2p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_npn_05v5_W1p00L2p00 -info: {} -module: sky130.components -name: rf_npn_05v5_W1p00L2p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml deleted file mode 100644 index 5455eb5d2..000000000 --- a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L4p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_npn_05v5_W1p00L4p00 -info: {} -module: sky130.components -name: rf_npn_05v5_W1p00L4p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml deleted file mode 100644 index 98d491263..000000000 --- a/tests/test_components/test_pdk_settings_rf_npn_05v5_W1p00L8p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_npn_05v5_W1p00L8p00 -info: {} -module: sky130.components -name: rf_npn_05v5_W1p00L8p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml deleted file mode 100644 index c570e7171..000000000 --- a/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L2p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_npn_05v5_W2p00L2p00 -info: {} -module: sky130.components -name: rf_npn_05v5_W2p00L2p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml deleted file mode 100644 index 1ad2d9d5f..000000000 --- a/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L4p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_npn_05v5_W2p00L4p00 -info: {} -module: sky130.components -name: rf_npn_05v5_W2p00L4p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml deleted file mode 100644 index 72d6ce936..000000000 --- a/tests/test_components/test_pdk_settings_rf_npn_05v5_W2p00L8p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_npn_05v5_W2p00L8p00 -info: {} -module: sky130.components -name: rf_npn_05v5_W2p00L8p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml deleted file mode 100644 index 5bc2f8f8c..000000000 --- a/tests/test_components/test_pdk_settings_rf_npn_05v5_W5p00L5p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_npn_05v5_W5p00L5p00 -info: {} -module: sky130.components -name: rf_npn_05v5_W5p00L5p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml b/tests/test_components/test_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml deleted file mode 100644 index 2fd301315..000000000 --- a/tests/test_components/test_pdk_settings_rf_npn_11v0_W1p00L1p00_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_npn_11v0_W1p00L1p00 -info: {} -module: sky130.components -name: rf_npn_11v0_W1p00L1p00 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W0p84L0p15_.yml deleted file mode 100644 index 3e793bc93..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W0p84L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF02W0p84L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF02W0p84L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W1p68L0p15_.yml deleted file mode 100644 index 9e4079842..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W1p68L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF02W1p68L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF02W1p68L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W2p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W2p00L0p15_.yml deleted file mode 100644 index 4b89a8064..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W2p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF02W2p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF02W2p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W3p00L0p15_.yml deleted file mode 100644 index fd1208bba..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF02W3p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF02W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W5p00L0p15_.yml deleted file mode 100644 index 0e08488a3..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF02W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF02W5p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF02W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W0p84L0p15_.yml deleted file mode 100644 index 45f29ecdd..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W0p84L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF04W0p84L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF04W0p84L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W1p68L0p15_.yml deleted file mode 100644 index 0a3d7e019..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W1p68L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF04W1p68L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF04W1p68L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W2p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W2p00L0p15_.yml deleted file mode 100644 index c46a75b11..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W2p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF04W2p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF04W2p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W3p00L0p15_.yml deleted file mode 100644 index d3858c77d..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF04W3p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W5p00L0p15_.yml deleted file mode 100644 index 363252e95..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF04W5p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W0p84L0p15_.yml deleted file mode 100644 index e895d3abd..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W0p84L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF06W0p84L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF06W0p84L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W1p68L0p15_.yml deleted file mode 100644 index 7e805b475..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W1p68L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF06W1p68L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF06W1p68L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W2p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W2p00L0p15_.yml deleted file mode 100644 index 956b58389..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W2p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF06W2p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF06W2p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W3p00L0p15_.yml deleted file mode 100644 index 87404076e..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF06W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF06W3p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF06W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W0p84L0p15_.yml deleted file mode 100644 index 8b55f7ede..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W0p84L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF08W0p84L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF08W0p84L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W1p68L0p15_.yml deleted file mode 100644 index 8a71182f2..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aF08W1p68L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aF08W1p68L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aF08W1p68L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p15_.yml deleted file mode 100644 index b5e6a86f7..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM02W1p65L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM02W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p18_.yml deleted file mode 100644 index 34ee3a607..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM02W1p65L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM02W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p25_.yml deleted file mode 100644 index 7c89c5a2d..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM02W1p65L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM02W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p15_.yml deleted file mode 100644 index 94edfe8b6..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM02W3p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM02W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p18_.yml deleted file mode 100644 index 15cefda31..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM02W3p00L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM02W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p25_.yml deleted file mode 100644 index 943196b2f..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM02W3p00L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM02W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p15_.yml deleted file mode 100644 index b1ff8b155..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM02W5p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM02W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p18_.yml deleted file mode 100644 index 3576cd640..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM02W5p00L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM02W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p25_.yml deleted file mode 100644 index 3faa46037..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM02W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM02W5p00L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM02W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p15_.yml deleted file mode 100644 index 55e98b95c..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM04W1p65L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM04W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p18_.yml deleted file mode 100644 index 821a3e4fa..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM04W1p65L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM04W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p25_.yml deleted file mode 100644 index aa3c0c033..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM04W1p65L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM04W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p15_.yml deleted file mode 100644 index a8d497712..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p18_.yml deleted file mode 100644 index bb41bee67..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM04W3p00L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM04W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p25_.yml deleted file mode 100644 index ee89ff383..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM04W3p00L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM04W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p15_.yml deleted file mode 100644 index b22aace34..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p18_.yml deleted file mode 100644 index e24fd1d52..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM04W5p00L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM04W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p25_.yml deleted file mode 100644 index bc7a1c83f..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_aM04W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_aM04W5p00L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_aM04W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p15_.yml deleted file mode 100644 index e26b73a8d..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM02W1p65L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM02W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p18_.yml deleted file mode 100644 index 26033926f..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM02W1p65L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM02W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p25_.yml deleted file mode 100644 index 3caa6dc86..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM02W1p65L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM02W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p15_.yml deleted file mode 100644 index 83f785180..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM02W3p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM02W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p18_.yml deleted file mode 100644 index c0252d371..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM02W3p00L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM02W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p25_.yml deleted file mode 100644 index 59d875be6..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM02W3p00L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM02W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p15_.yml deleted file mode 100644 index 8578047e8..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM02W5p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM02W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p18_.yml deleted file mode 100644 index 7ba090c27..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM02W5p00L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM02W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p25_.yml deleted file mode 100644 index c91a3a80d..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM02W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM02W5p00L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM02W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p15_.yml deleted file mode 100644 index 6a13251e0..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM04W1p65L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM04W1p65L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p18_.yml deleted file mode 100644 index 9b4de01bb..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM04W1p65L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM04W1p65L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p25_.yml deleted file mode 100644 index 930e75f6a..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W1p65L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM04W1p65L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM04W1p65L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p15_.yml deleted file mode 100644 index c28e029d2..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p18_.yml deleted file mode 100644 index 4e4bb8ad6..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM04W3p00L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM04W3p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p25_.yml deleted file mode 100644 index 601cad119..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W3p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM04W3p00L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM04W3p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p15_.yml deleted file mode 100644 index 254c86e3c..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p18_.yml deleted file mode 100644 index 8541ea14f..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p18_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM04W5p00L0p18 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM04W5p00L0p18 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p25_.yml deleted file mode 100644 index e3b758ae6..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_bM04W5p00L0p25_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_bM04W5p00L0p25 -info: {} -module: sky130.components -name: rf_pfet_01v8_bM04W5p00L0p25 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml deleted file mode 100644 index c3a363741..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_hcM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_hcM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml deleted file mode 100644 index 75fc0beab..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_hcM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_hcM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_hcM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml deleted file mode 100644 index 86eeed2a3..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_lvt_aM02W3p00L0p35 -info: {} -module: sky130.components -name: rf_pfet_01v8_lvt_aM02W3p00L0p35 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml deleted file mode 100644 index 1a55fcd63..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_lvt_aM02W3p00L0p50 -info: {} -module: sky130.components -name: rf_pfet_01v8_lvt_aM02W3p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml deleted file mode 100644 index 6d40314d8..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_lvt_aM02W5p00L0p35 -info: {} -module: sky130.components -name: rf_pfet_01v8_lvt_aM02W5p00L0p35 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml deleted file mode 100644 index ad8dc981a..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_lvt_aM02W5p00L0p50 -info: {} -module: sky130.components -name: rf_pfet_01v8_lvt_aM02W5p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml deleted file mode 100644 index e3bb878e9..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_lvt_aM04W3p00L0p35 -info: {} -module: sky130.components -name: rf_pfet_01v8_lvt_aM04W3p00L0p35 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml deleted file mode 100644 index f201376b1..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_lvt_aM04W3p00L0p50 -info: {} -module: sky130.components -name: rf_pfet_01v8_lvt_aM04W3p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml deleted file mode 100644 index c3f8c9de9..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_lvt_aM04W5p00L0p35 -info: {} -module: sky130.components -name: rf_pfet_01v8_lvt_aM04W5p00L0p35 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml deleted file mode 100644 index 02b6f8e27..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_lvt_aM04W5p00L0p50 -info: {} -module: sky130.components -name: rf_pfet_01v8_lvt_aM04W5p00L0p50 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W3p00L0p15_.yml deleted file mode 100644 index 0abfe6008..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W3p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_mcM04W3p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_mcM04W3p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml deleted file mode 100644 index afc635d2a..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_mcM04W5p00L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_mcM04W5p00L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_mcM04W5p00L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml deleted file mode 100644 index af6bf5c57..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_01v8_mvt_aF02W0p84L0p15 -info: {} -module: sky130.components -name: rf_pfet_01v8_mvt_aF02W0p84L0p15 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pfet_20v0_withptap_.yml b/tests/test_components/test_pdk_settings_rf_pfet_20v0_withptap_.yml deleted file mode 100644 index 8639d397c..000000000 --- a/tests/test_components/test_pdk_settings_rf_pfet_20v0_withptap_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pfet_20v0_withptap -info: {} -module: sky130.components -name: rf_pfet_20v0_withptap -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml b/tests/test_components/test_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml deleted file mode 100644 index c6ebbb628..000000000 --- a/tests/test_components/test_pdk_settings_rf_pnp_05v5_W0p68L0p68_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pnp_05v5_W0p68L0p68 -info: {} -module: sky130.components -name: rf_pnp_05v5_W0p68L0p68 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml b/tests/test_components/test_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml deleted file mode 100644 index 925869349..000000000 --- a/tests/test_components/test_pdk_settings_rf_pnp_05v5_W3p40L3p40_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_pnp_05v5_W3p40L3p40 -info: {} -module: sky130.components -name: rf_pnp_05v5_W3p40L3p40 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_test_coil1_.yml b/tests/test_components/test_pdk_settings_rf_test_coil1_.yml deleted file mode 100644 index 6fd12ca79..000000000 --- a/tests/test_components/test_pdk_settings_rf_test_coil1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_test_coil1 -info: {} -module: sky130.components -name: rf_test_coil1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_test_coil2_.yml b/tests/test_components/test_pdk_settings_rf_test_coil2_.yml deleted file mode 100644 index 120b2d60d..000000000 --- a/tests/test_components/test_pdk_settings_rf_test_coil2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_test_coil2 -info: {} -module: sky130.components -name: rf_test_coil2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_test_coil3_.yml b/tests/test_components/test_pdk_settings_rf_test_coil3_.yml deleted file mode 100644 index 5122e6c79..000000000 --- a/tests/test_components/test_pdk_settings_rf_test_coil3_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: rf_test_coil3 -info: {} -module: sky130.components -name: rf_test_coil3 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfbbn_1_.yml b/tests/test_components/test_pdk_settings_sdfbbn_1_.yml deleted file mode 100644 index 10472507f..000000000 --- a/tests/test_components/test_pdk_settings_sdfbbn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfbbn_1 -info: {} -module: sky130.components -name: sdfbbn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfbbn_2_.yml b/tests/test_components/test_pdk_settings_sdfbbn_2_.yml deleted file mode 100644 index 2c5794b72..000000000 --- a/tests/test_components/test_pdk_settings_sdfbbn_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfbbn_2 -info: {} -module: sky130.components -name: sdfbbn_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfbbp_1_.yml b/tests/test_components/test_pdk_settings_sdfbbp_1_.yml deleted file mode 100644 index 95b19aa6c..000000000 --- a/tests/test_components/test_pdk_settings_sdfbbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfbbp_1 -info: {} -module: sky130.components -name: sdfbbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrbp_1_.yml b/tests/test_components/test_pdk_settings_sdfrbp_1_.yml deleted file mode 100644 index a291be521..000000000 --- a/tests/test_components/test_pdk_settings_sdfrbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfrbp_1 -info: {} -module: sky130.components -name: sdfrbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrbp_2_.yml b/tests/test_components/test_pdk_settings_sdfrbp_2_.yml deleted file mode 100644 index 660055f90..000000000 --- a/tests/test_components/test_pdk_settings_sdfrbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfrbp_2 -info: {} -module: sky130.components -name: sdfrbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrtn_1_.yml b/tests/test_components/test_pdk_settings_sdfrtn_1_.yml deleted file mode 100644 index 06c29f9b4..000000000 --- a/tests/test_components/test_pdk_settings_sdfrtn_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfrtn_1 -info: {} -module: sky130.components -name: sdfrtn_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrtp_1_.yml b/tests/test_components/test_pdk_settings_sdfrtp_1_.yml deleted file mode 100644 index 1bdcf3909..000000000 --- a/tests/test_components/test_pdk_settings_sdfrtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfrtp_1 -info: {} -module: sky130.components -name: sdfrtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrtp_2_.yml b/tests/test_components/test_pdk_settings_sdfrtp_2_.yml deleted file mode 100644 index 49c99d965..000000000 --- a/tests/test_components/test_pdk_settings_sdfrtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfrtp_2 -info: {} -module: sky130.components -name: sdfrtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfrtp_4_.yml b/tests/test_components/test_pdk_settings_sdfrtp_4_.yml deleted file mode 100644 index 8f146081e..000000000 --- a/tests/test_components/test_pdk_settings_sdfrtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfrtp_4 -info: {} -module: sky130.components -name: sdfrtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfsbp_1_.yml b/tests/test_components/test_pdk_settings_sdfsbp_1_.yml deleted file mode 100644 index efc2147ed..000000000 --- a/tests/test_components/test_pdk_settings_sdfsbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfsbp_1 -info: {} -module: sky130.components -name: sdfsbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfsbp_2_.yml b/tests/test_components/test_pdk_settings_sdfsbp_2_.yml deleted file mode 100644 index c8d6d77b4..000000000 --- a/tests/test_components/test_pdk_settings_sdfsbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfsbp_2 -info: {} -module: sky130.components -name: sdfsbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfstp_1_.yml b/tests/test_components/test_pdk_settings_sdfstp_1_.yml deleted file mode 100644 index 459ab3098..000000000 --- a/tests/test_components/test_pdk_settings_sdfstp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfstp_1 -info: {} -module: sky130.components -name: sdfstp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfstp_2_.yml b/tests/test_components/test_pdk_settings_sdfstp_2_.yml deleted file mode 100644 index 38cb4de24..000000000 --- a/tests/test_components/test_pdk_settings_sdfstp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfstp_2 -info: {} -module: sky130.components -name: sdfstp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfstp_4_.yml b/tests/test_components/test_pdk_settings_sdfstp_4_.yml deleted file mode 100644 index ac53eccfe..000000000 --- a/tests/test_components/test_pdk_settings_sdfstp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfstp_4 -info: {} -module: sky130.components -name: sdfstp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxbp_1_.yml b/tests/test_components/test_pdk_settings_sdfxbp_1_.yml deleted file mode 100644 index e79462d15..000000000 --- a/tests/test_components/test_pdk_settings_sdfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfxbp_1 -info: {} -module: sky130.components -name: sdfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxbp_2_.yml b/tests/test_components/test_pdk_settings_sdfxbp_2_.yml deleted file mode 100644 index 8fff5161c..000000000 --- a/tests/test_components/test_pdk_settings_sdfxbp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfxbp_2 -info: {} -module: sky130.components -name: sdfxbp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxtp_1_.yml b/tests/test_components/test_pdk_settings_sdfxtp_1_.yml deleted file mode 100644 index 74498b92a..000000000 --- a/tests/test_components/test_pdk_settings_sdfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfxtp_1 -info: {} -module: sky130.components -name: sdfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxtp_2_.yml b/tests/test_components/test_pdk_settings_sdfxtp_2_.yml deleted file mode 100644 index eed034949..000000000 --- a/tests/test_components/test_pdk_settings_sdfxtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfxtp_2 -info: {} -module: sky130.components -name: sdfxtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdfxtp_4_.yml b/tests/test_components/test_pdk_settings_sdfxtp_4_.yml deleted file mode 100644 index d9f70555c..000000000 --- a/tests/test_components/test_pdk_settings_sdfxtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdfxtp_4 -info: {} -module: sky130.components -name: sdfxtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdlclkp_1_.yml b/tests/test_components/test_pdk_settings_sdlclkp_1_.yml deleted file mode 100644 index 68e2d71f3..000000000 --- a/tests/test_components/test_pdk_settings_sdlclkp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdlclkp_1 -info: {} -module: sky130.components -name: sdlclkp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdlclkp_2_.yml b/tests/test_components/test_pdk_settings_sdlclkp_2_.yml deleted file mode 100644 index d25fd6675..000000000 --- a/tests/test_components/test_pdk_settings_sdlclkp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdlclkp_2 -info: {} -module: sky130.components -name: sdlclkp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sdlclkp_4_.yml b/tests/test_components/test_pdk_settings_sdlclkp_4_.yml deleted file mode 100644 index 8ba502edf..000000000 --- a/tests/test_components/test_pdk_settings_sdlclkp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sdlclkp_4 -info: {} -module: sky130.components -name: sdlclkp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sedfxbp_1_.yml b/tests/test_components/test_pdk_settings_sedfxbp_1_.yml deleted file mode 100644 index a28c864f9..000000000 --- a/tests/test_components/test_pdk_settings_sedfxbp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sedfxbp_1 -info: {} -module: sky130.components -name: sedfxbp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sedfxtp_1_.yml b/tests/test_components/test_pdk_settings_sedfxtp_1_.yml deleted file mode 100644 index f8dc70c22..000000000 --- a/tests/test_components/test_pdk_settings_sedfxtp_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sedfxtp_1 -info: {} -module: sky130.components -name: sedfxtp_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sedfxtp_2_.yml b/tests/test_components/test_pdk_settings_sedfxtp_2_.yml deleted file mode 100644 index da950fcb9..000000000 --- a/tests/test_components/test_pdk_settings_sedfxtp_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sedfxtp_2 -info: {} -module: sky130.components -name: sedfxtp_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sedfxtp_4_.yml b/tests/test_components/test_pdk_settings_sedfxtp_4_.yml deleted file mode 100644 index 2c2b8d30d..000000000 --- a/tests/test_components/test_pdk_settings_sedfxtp_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: sedfxtp_4 -info: {} -module: sky130.components -name: sedfxtp_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield_.yml new file mode 100644 index 000000000..a826cfc6d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml new file mode 100644 index 000000000..179afcb41 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml new file mode 100644 index 000000000..1a0fbfa48 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml new file mode 100644 index 000000000..2effa6386 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml new file mode 100644 index 000000000..f9c68930d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml new file mode 100644 index 000000000..4ad97da11 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml new file mode 100644 index 000000000..fdcfeb0ee --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_.yml new file mode 100644 index 000000000..29ce6d2f6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml new file mode 100644 index 000000000..00925e4d4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml new file mode 100644 index 000000000..95363b796 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_.yml new file mode 100644 index 000000000..996f0af23 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml new file mode 100644 index 000000000..d15a6b5d8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1_.yml new file mode 100644 index 000000000..bda26fa03 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml new file mode 100644 index 000000000..3d5ada20c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml new file mode 100644 index 000000000..fa51c8885 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml new file mode 100644 index 000000000..fdb293586 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml new file mode 100644 index 000000000..c502c9a83 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml new file mode 100644 index 000000000..f65a03a81 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml new file mode 100644 index 000000000..524e56b80 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml new file mode 100644 index 000000000..3ade41f8f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml new file mode 100644 index 000000000..287a3e8e1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_.yml new file mode 100644 index 000000000..552d65758 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml similarity index 53% rename from tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml index 74575f9de..bf6b70549 100644 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell_.yml @@ -1,5 +1,5 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top +function: sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell info: {} module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top +name: sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml new file mode 100644 index 000000000..4529828a8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield_.yml new file mode 100644 index 000000000..b0e4976dc --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1_.yml new file mode 100644 index 000000000..c04f98b9a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml new file mode 100644 index 000000000..3e2aff3a8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml new file mode 100644 index 000000000..d1250fafe --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml new file mode 100644 index 000000000..2cf8f3942 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml new file mode 100644 index 000000000..75b195494 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml new file mode 100644 index 000000000..d3f56d98a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml new file mode 100644 index 000000000..a9fd70745 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield_.yml new file mode 100644 index 000000000..cd55ea90f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml new file mode 100644 index 000000000..e2f1aee3f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml new file mode 100644 index 000000000..cdd5e0096 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml new file mode 100644 index 000000000..f92cfcc9d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml new file mode 100644 index 000000000..40b869523 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml new file mode 100644 index 000000000..b394ab910 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml new file mode 100644 index 000000000..267886b5b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml new file mode 100644 index 000000000..03ef08cfa --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml new file mode 100644 index 000000000..5934d45da --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml new file mode 100644 index 000000000..d950d6af8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml new file mode 100644 index 000000000..6478bffa0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml new file mode 100644 index 000000000..c7b3d7820 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml new file mode 100644 index 000000000..1c039391c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml new file mode 100644 index 000000000..10806f3d7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml new file mode 100644 index 000000000..3c0bd4883 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml new file mode 100644 index 000000000..bb8bd2f94 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield_.yml new file mode 100644 index 000000000..a5c554910 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_.yml new file mode 100644 index 000000000..5cb86993d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml new file mode 100644 index 000000000..537c2417f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml new file mode 100644 index 000000000..b3d15a1dc --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml new file mode 100644 index 000000000..e4f0640b7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml new file mode 100644 index 000000000..59a01471e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml new file mode 100644 index 000000000..9f05b9f13 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml new file mode 100644 index 000000000..3b7e38053 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield_.yml new file mode 100644 index 000000000..31fabfa0a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..5a1561a94 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..3345e2d06 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..7f27e1ceb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..f2cfb9eae --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..35d90d50e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..00c264a72 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..5100689d1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..06f567aa6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..2baee55f9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml new file mode 100644 index 000000000..ef7a8e196 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml new file mode 100644 index 000000000..e873451ad --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml new file mode 100644 index 000000000..fe8c39147 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml new file mode 100644 index 000000000..58916b8a2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test +info: {} +module: sky130.components +name: sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00_.yml new file mode 100644 index 000000000..86fb508ed --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00 +info: {} +module: sky130.components +name: sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00_.yml new file mode 100644 index 000000000..e51eb014b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00 +info: {} +module: sky130.components +name: sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00_.yml new file mode 100644 index 000000000..6549e310c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00 +info: {} +module: sky130.components +name: sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00_.yml new file mode 100644 index 000000000..0d6765bfa --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00 +info: {} +module: sky130.components +name: sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_blocking_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_blocking_.yml new file mode 100644 index 000000000..f479e9a4f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_blocking_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_aura_blocking +info: {} +module: sky130.components +name: sky130_fd_pr__rf_aura_blocking +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_drc_flag_check_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_drc_flag_check_.yml new file mode 100644 index 000000000..470e8e03f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_drc_flag_check_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_aura_drc_flag_check +info: {} +module: sky130.components +name: sky130_fd_pr__rf_aura_drc_flag_check +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_lvs_drc_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_lvs_drc_.yml new file mode 100644 index 000000000..624442148 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_aura_lvs_drc_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_aura_lvs_drc +info: {} +module: sky130.components +name: sky130_fd_pr__rf_aura_lvs_drc +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15_.yml new file mode 100644 index 000000000..a669e5423 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18_.yml new file mode 100644 index 000000000..2a7417ae4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25_.yml new file mode 100644 index 000000000..4f0aef810 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15_.yml new file mode 100644 index 000000000..8b47f8765 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18_.yml new file mode 100644 index 000000000..d9e580676 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25_.yml new file mode 100644 index 000000000..8bbf4e228 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15_.yml new file mode 100644 index 000000000..1b8163183 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18_.yml new file mode 100644 index 000000000..e1c76c9e3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25_.yml new file mode 100644 index 000000000..808c150b5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15_.yml new file mode 100644 index 000000000..f0232c546 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18_.yml new file mode 100644 index 000000000..199aba829 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25_.yml new file mode 100644 index 000000000..9bd4a4c77 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15_.yml new file mode 100644 index 000000000..28fa38d24 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18_.yml new file mode 100644 index 000000000..42bd6c8c1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25_.yml new file mode 100644 index 000000000..2d3491af2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15_.yml new file mode 100644 index 000000000..8dbee1b81 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18_.yml new file mode 100644 index 000000000..58fdd9682 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25_.yml new file mode 100644 index 000000000..465ad0df4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15_.yml new file mode 100644 index 000000000..8a8bd9c47 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18_.yml new file mode 100644 index 000000000..13041472b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25_.yml new file mode 100644 index 000000000..b253aa125 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15_.yml new file mode 100644 index 000000000..b2368164a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18_.yml new file mode 100644 index 000000000..2ce292118 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25_.yml new file mode 100644 index 000000000..44dc06f9e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15_.yml new file mode 100644 index 000000000..90101cfa2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18_.yml new file mode 100644 index 000000000..a4023dd23 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25_.yml new file mode 100644 index 000000000..286ee0794 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15_.yml new file mode 100644 index 000000000..a7e1fdb5d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18_.yml new file mode 100644 index 000000000..1a327baa8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25_.yml new file mode 100644 index 000000000..478209145 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15_.yml new file mode 100644 index 000000000..9544ae47d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18_.yml new file mode 100644 index 000000000..9aa97fc0f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25_.yml new file mode 100644 index 000000000..499261c95 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15_.yml new file mode 100644 index 000000000..490be0fea --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18_.yml new file mode 100644 index 000000000..083805f32 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25_.yml new file mode 100644 index 000000000..5f6aa53fc --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15_.yml new file mode 100644 index 000000000..599dc26ec --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15_.yml new file mode 100644 index 000000000..c61ae2998 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml new file mode 100644 index 000000000..95d3b5528 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml new file mode 100644 index 000000000..a0f5d04a7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml new file mode 100644 index 000000000..aa2390c5e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml similarity index 56% rename from tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_1_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml index a19ca0980..527057191 100644 --- a/tests/test_components/test_pdk_settings_lpflow_lsbuf_lh_isowell_tap_1_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15_.yml @@ -1,5 +1,5 @@ -function: lpflow_lsbuf_lh_isowell_tap_1 +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15 info: {} module: sky130.components -name: lpflow_lsbuf_lh_isowell_tap_1 +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml new file mode 100644 index 000000000..d038a2032 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml new file mode 100644 index 000000000..f715319bf --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml new file mode 100644 index 000000000..961bf90a8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml new file mode 100644 index 000000000..04638c2fb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml new file mode 100644 index 000000000..ae8a29be8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml new file mode 100644 index 000000000..0c916c65c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml new file mode 100644 index 000000000..864b51fe7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml new file mode 100644 index 000000000..a98a33bbe --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml new file mode 100644 index 000000000..df1dc49a1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml new file mode 100644 index 000000000..52072c807 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml new file mode 100644 index 000000000..d4d099661 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml new file mode 100644 index 000000000..f233d6b5c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml new file mode 100644 index 000000000..7e8f6a995 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml new file mode 100644 index 000000000..077c6ad89 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml new file mode 100644 index 000000000..4dc6d7aef --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml similarity index 64% rename from tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml index d25480a33..3e0c08607 100644 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15_.yml @@ -1,5 +1,5 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15 info: {} module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15 settings: {} diff --git a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml similarity index 64% rename from tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml index 0c36bf4f9..fa85ec875 100644 --- a/tests/test_components/test_pdk_settings_cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18_.yml @@ -1,5 +1,5 @@ -function: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18 info: {} module: sky130.components -name: cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml new file mode 100644 index 000000000..88fb339c8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml new file mode 100644 index 000000000..0353e14ac --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml new file mode 100644 index 000000000..685036a7c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml new file mode 100644 index 000000000..d340c7b94 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml new file mode 100644 index 000000000..20b5c6681 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml new file mode 100644 index 000000000..55e10d1fd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml new file mode 100644 index 000000000..f6346d915 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml new file mode 100644 index 000000000..3a43f099e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml new file mode 100644 index 000000000..ffe01e112 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml new file mode 100644 index 000000000..831f06508 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml new file mode 100644 index 000000000..077a298e5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml new file mode 100644 index 000000000..d999981de --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml new file mode 100644 index 000000000..9edf95c96 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml new file mode 100644 index 000000000..a7bd018be --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml new file mode 100644 index 000000000..6d3efc2af --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml new file mode 100644 index 000000000..3f3c0d7e6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml new file mode 100644 index 000000000..cb94d47c5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml new file mode 100644 index 000000000..9bee1b095 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml new file mode 100644 index 000000000..d3babe259 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml new file mode 100644 index 000000000..d669f4b12 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml new file mode 100644 index 000000000..bf5a89d2a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml new file mode 100644 index 000000000..89ae9f80a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml new file mode 100644 index 000000000..62c924a75 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml new file mode 100644 index 000000000..df4794455 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml new file mode 100644 index 000000000..a919b898b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml new file mode 100644 index 000000000..954c49f72 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml new file mode 100644 index 000000000..2bc4e0c69 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml new file mode 100644 index 000000000..912cf030f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml new file mode 100644 index 000000000..d53bbc220 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml new file mode 100644 index 000000000..2883e77fb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml new file mode 100644 index 000000000..ee09f6a04 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml new file mode 100644 index 000000000..6534c5ea5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml new file mode 100644 index 000000000..07fd03a25 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml new file mode 100644 index 000000000..bfd6df17c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml new file mode 100644 index 000000000..9a06c8227 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml new file mode 100644 index 000000000..1ca12047a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml new file mode 100644 index 000000000..d4b4a7c9d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml new file mode 100644 index 000000000..cd86c55ae --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml new file mode 100644 index 000000000..dcf098a3d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml new file mode 100644 index 000000000..4dfa8bbca --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml new file mode 100644 index 000000000..a31f702f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml new file mode 100644 index 000000000..12b6e54e1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml new file mode 100644 index 000000000..d6f5b7c8d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml new file mode 100644 index 000000000..5260eea1e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml new file mode 100644 index 000000000..157825e0d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml new file mode 100644 index 000000000..d645b4688 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml new file mode 100644 index 000000000..77e0abbfb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml new file mode 100644 index 000000000..0f6f85d08 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml new file mode 100644 index 000000000..bc97897af --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15_.yml new file mode 100644 index 000000000..02e3f3ae5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15_.yml new file mode 100644 index 000000000..f58650ee6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_decap_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_aup_.yml similarity index 52% rename from tests/test_components/test_pdk_settings_decap_4_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_aup_.yml index fdf2f7618..b476a63b1 100644 --- a/tests/test_components/test_pdk_settings_decap_4_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_aup_.yml @@ -1,5 +1,5 @@ -function: decap_4 +function: sky130_fd_pr__rf_nfet_20v0_aup info: {} module: sky130.components -name: decap_4 +name: sky130_fd_pr__rf_nfet_20v0_aup settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_noptap_iso_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_noptap_iso_.yml new file mode 100644 index 000000000..dd9285e5c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_noptap_iso_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_20v0_noptap_iso +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_20v0_noptap_iso +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_aup_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_aup_.yml new file mode 100644 index 000000000..db72fca3c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_aup_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_20v0_nvt_aup +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_20v0_nvt_aup +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso_.yml new file mode 100644 index 000000000..79d35bcf0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_withptap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_withptap_.yml new file mode 100644 index 000000000..955134628 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_withptap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_20v0_nvt_withptap +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_20v0_nvt_withptap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso_.yml new file mode 100644 index 000000000..4ba639d12 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_withptap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_withptap_.yml new file mode 100644 index 000000000..6287a9e64 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_withptap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_20v0_withptap +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_20v0_withptap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_withptap_iso_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_withptap_iso_.yml new file mode 100644 index 000000000..f955a6333 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_withptap_iso_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_20v0_withptap_iso +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_20v0_withptap_iso +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_zvt_withptap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_zvt_withptap_.yml new file mode 100644 index 000000000..d27f991dc --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_20v0_zvt_withptap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_20v0_zvt_withptap +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_20v0_zvt_withptap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml new file mode 100644 index 000000000..c7930e947 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml new file mode 100644 index 000000000..c83b6a9f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml new file mode 100644 index 000000000..58f10d169 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml new file mode 100644 index 000000000..9542735e6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml new file mode 100644 index 000000000..ab24d69ca --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml new file mode 100644 index 000000000..1952be119 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml new file mode 100644 index 000000000..3b8464881 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml new file mode 100644 index 000000000..1cf4c0d38 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml new file mode 100644 index 000000000..31bf8fb06 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml new file mode 100644 index 000000000..6126e2dc3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml new file mode 100644 index 000000000..cf9c82570 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml new file mode 100644 index 000000000..c4f2c0dea --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml new file mode 100644 index 000000000..8dc14ebf1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml new file mode 100644 index 000000000..7b9744065 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L1p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L1p00_.yml new file mode 100644 index 000000000..41a358717 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L1p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_npn_05v5_W1p00L1p00 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_npn_05v5_W1p00L1p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L2p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L2p00_.yml new file mode 100644 index 000000000..4c3ea7a61 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L2p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_npn_05v5_W1p00L2p00 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_npn_05v5_W1p00L2p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L4p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L4p00_.yml new file mode 100644 index 000000000..5c824ca11 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L4p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_npn_05v5_W1p00L4p00 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_npn_05v5_W1p00L4p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L8p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L8p00_.yml new file mode 100644 index 000000000..ac5242487 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W1p00L8p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_npn_05v5_W1p00L8p00 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_npn_05v5_W1p00L8p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L2p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L2p00_.yml new file mode 100644 index 000000000..6b885314e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L2p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_npn_05v5_W2p00L2p00 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_npn_05v5_W2p00L2p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L4p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L4p00_.yml new file mode 100644 index 000000000..b5650631e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L4p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_npn_05v5_W2p00L4p00 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_npn_05v5_W2p00L4p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L8p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L8p00_.yml new file mode 100644 index 000000000..6ade18d82 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W2p00L8p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_npn_05v5_W2p00L8p00 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_npn_05v5_W2p00L8p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_32vW60p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W5p00L5p00_.yml similarity index 64% rename from tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_32vW60p00_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W5p00L5p00_.yml index c18011b40..f3a9d5879 100644 --- a/tests/test_components/test_pdk_settings_esd_rf_nfet_20v0_hbm_32vW60p00_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_05v5_W5p00L5p00_.yml @@ -1,5 +1,5 @@ -function: esd_rf_nfet_20v0_hbm_32vW60p00 +function: sky130_fd_pr__rf_npn_05v5_W5p00L5p00 info: {} module: sky130.components -name: esd_rf_nfet_20v0_hbm_32vW60p00 +name: sky130_fd_pr__rf_npn_05v5_W5p00L5p00 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_11v0_W1p00L1p00_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_11v0_W1p00L1p00_.yml new file mode 100644 index 000000000..f74e28c9a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_npn_11v0_W1p00L1p00_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_npn_11v0_W1p00L1p00 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_npn_11v0_W1p00L1p00 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15_.yml new file mode 100644 index 000000000..c971cb215 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15_.yml new file mode 100644 index 000000000..e93d98b45 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15_.yml new file mode 100644 index 000000000..7c468226f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15_.yml new file mode 100644 index 000000000..360bcccf3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15_.yml new file mode 100644 index 000000000..2cf964e03 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15_.yml new file mode 100644 index 000000000..4daa205f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15_.yml new file mode 100644 index 000000000..221f27661 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15_.yml new file mode 100644 index 000000000..d3250d8db --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15_.yml new file mode 100644 index 000000000..2569967c1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15_.yml new file mode 100644 index 000000000..76de2ea62 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15_.yml new file mode 100644 index 000000000..63b0282f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15_.yml new file mode 100644 index 000000000..f8bfece23 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15_.yml new file mode 100644 index 000000000..a5e025241 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15_.yml new file mode 100644 index 000000000..08ffa68ca --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15_.yml new file mode 100644 index 000000000..b4e699121 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15_.yml new file mode 100644 index 000000000..7f2751177 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15_.yml new file mode 100644 index 000000000..b3760c232 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18_.yml new file mode 100644 index 000000000..888214465 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25_.yml new file mode 100644 index 000000000..9c7b2befa --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15_.yml new file mode 100644 index 000000000..84643ad0c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18_.yml new file mode 100644 index 000000000..b66e07f7b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25_.yml new file mode 100644 index 000000000..3f62acbbd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15_.yml new file mode 100644 index 000000000..9b9e9d4a0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18_.yml new file mode 100644 index 000000000..eb14719b3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25_.yml new file mode 100644 index 000000000..76431ff58 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15_.yml new file mode 100644 index 000000000..2edbcdd14 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18_.yml new file mode 100644 index 000000000..e82cd9ba7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25_.yml new file mode 100644 index 000000000..46c5ef83e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15_.yml new file mode 100644 index 000000000..4b25086ba --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18_.yml new file mode 100644 index 000000000..9c2c32562 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25_.yml new file mode 100644 index 000000000..6e77cddfe --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15_.yml new file mode 100644 index 000000000..d453ad723 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18_.yml new file mode 100644 index 000000000..0e66a69b1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25_.yml new file mode 100644 index 000000000..a17560305 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15_.yml new file mode 100644 index 000000000..3014b4fad --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18_.yml new file mode 100644 index 000000000..b265a4bf1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25_.yml new file mode 100644 index 000000000..9358df368 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15_.yml new file mode 100644 index 000000000..db48553ce --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18_.yml new file mode 100644 index 000000000..707ef070d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25_.yml new file mode 100644 index 000000000..c6f3d6f61 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15_.yml new file mode 100644 index 000000000..ed366a888 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18_.yml new file mode 100644 index 000000000..b9b0c90b7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25_.yml new file mode 100644 index 000000000..ed6a68de3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15_.yml new file mode 100644 index 000000000..6f66b4bba --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18_.yml new file mode 100644 index 000000000..2eca016b3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25_.yml new file mode 100644 index 000000000..920424632 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15_.yml new file mode 100644 index 000000000..6aff10825 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18_.yml new file mode 100644 index 000000000..0edb88832 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25_.yml similarity index 61% rename from tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25_.yml index 997460f05..ae90c20eb 100644 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W3p00L0p50_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25_.yml @@ -1,5 +1,5 @@ -function: rf_nfet_g5v0d10v5_aM04W3p00L0p50 +function: sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25 info: {} module: sky130.components -name: rf_nfet_g5v0d10v5_aM04W3p00L0p50 +name: sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15_.yml new file mode 100644 index 000000000..97cd90ef8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18_.yml new file mode 100644 index 000000000..8c7787d2e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25_.yml similarity index 61% rename from tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25_.yml index 0819db69c..5d1262324 100644 --- a/tests/test_components/test_pdk_settings_rf_nfet_g5v0d10v5_aM04W5p00L0p50_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25_.yml @@ -1,5 +1,5 @@ -function: rf_nfet_g5v0d10v5_aM04W5p00L0p50 +function: sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25 info: {} module: sky130.components -name: rf_nfet_g5v0d10v5_aM04W5p00L0p50 +name: sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15_.yml new file mode 100644 index 000000000..8dfaede9d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15_.yml new file mode 100644 index 000000000..b6df40e09 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml new file mode 100644 index 000000000..61ec2a96e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml new file mode 100644 index 000000000..85f113c77 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml new file mode 100644 index 000000000..9c0e1fdb1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml new file mode 100644 index 000000000..1a969340d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml new file mode 100644 index 000000000..fa6d1e5bf --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml new file mode 100644 index 000000000..b5b4c9bfa --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml new file mode 100644 index 000000000..37bc1a29d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml new file mode 100644 index 000000000..7f1d1b350 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15_.yml new file mode 100644 index 000000000..b69cb970e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15_.yml new file mode 100644 index 000000000..edae5b327 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml new file mode 100644 index 000000000..158d7f18a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_20v0_withptap_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_20v0_withptap_.yml new file mode 100644 index 000000000..67b111f7e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pfet_20v0_withptap_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pfet_20v0_withptap +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pfet_20v0_withptap +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pnp_05v5_W0p68L0p68_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pnp_05v5_W0p68L0p68_.yml new file mode 100644 index 000000000..c30c82329 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pnp_05v5_W0p68L0p68_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pnp_05v5_W0p68L0p68 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pnp_05v5_W0p68L0p68 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pnp_05v5_W3p40L3p40_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pnp_05v5_W3p40L3p40_.yml new file mode 100644 index 000000000..7feeb7114 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_pnp_05v5_W3p40L3p40_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_pnp_05v5_W3p40L3p40 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_pnp_05v5_W3p40L3p40 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil1_.yml new file mode 100644 index 000000000..aff53edd7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_test_coil1 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_test_coil1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil2_.yml new file mode 100644 index 000000000..42a1b54a7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_test_coil2 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_test_coil2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil3_.yml new file mode 100644 index 000000000..d8c1f061e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_pr__rf_test_coil3_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_pr__rf_test_coil3 +info: {} +module: sky130.components +name: sky130_fd_pr__rf_test_coil3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_1_.yml new file mode 100644 index 000000000..4d02da28d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2111o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2111o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_2_.yml new file mode 100644 index 000000000..798bddf23 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2111o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2111o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_4_.yml new file mode 100644 index 000000000..845794349 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2111o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2111o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_0_.yml new file mode 100644 index 000000000..b215b7939 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_0_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2111oi_0 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2111oi_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_1_.yml new file mode 100644 index 000000000..9ceeb5675 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2111oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2111oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_2_.yml new file mode 100644 index 000000000..e91af34a2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2111oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2111oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_4_.yml new file mode 100644 index 000000000..9eb3532b5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2111oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2111oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2111oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_1_.yml new file mode 100644 index 000000000..14b81cb82 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a211o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a211o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_2_.yml new file mode 100644 index 000000000..d737ce7a5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a211o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a211o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_4_.yml new file mode 100644 index 000000000..80c7a1fcd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a211o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a211o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_1_.yml new file mode 100644 index 000000000..c653d62e7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a211oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a211oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_2_.yml new file mode 100644 index 000000000..0105efebd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a211oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a211oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_4_.yml new file mode 100644 index 000000000..600d35f04 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a211oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a211oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a211oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml new file mode 100644 index 000000000..d4d0fb5d6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21bo_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21bo_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml new file mode 100644 index 000000000..1656e3cf4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21bo_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21bo_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml new file mode 100644 index 000000000..33e9b3745 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21bo_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21bo_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21bo_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_and2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_0_.yml similarity index 56% rename from tests/test_components/test_pdk_settings_and2b_4_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_0_.yml index 525a227a9..c55750046 100644 --- a/tests/test_components/test_pdk_settings_and2b_4_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_0_.yml @@ -1,5 +1,5 @@ -function: and2b_4 +function: sky130_fd_sc_hd__a21boi_0 info: {} module: sky130.components -name: and2b_4 +name: sky130_fd_sc_hd__a21boi_0 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_1_.yml new file mode 100644 index 000000000..82172709e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21boi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21boi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_2_.yml new file mode 100644 index 000000000..43e973610 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21boi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21boi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_4_.yml new file mode 100644 index 000000000..bb13399cd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21boi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21boi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21boi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_1_.yml new file mode 100644 index 000000000..ed9e7a797 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_2_.yml new file mode 100644 index 000000000..09bd2a7ad --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_4_.yml new file mode 100644 index 000000000..7df30b814 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml new file mode 100644 index 000000000..606808c45 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml new file mode 100644 index 000000000..294fcab8d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml new file mode 100644 index 000000000..792384ac0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a21oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a21oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a21oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_1_.yml new file mode 100644 index 000000000..34d2d68e9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a221o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a221o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_2_.yml new file mode 100644 index 000000000..697f2c1b6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a221o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a221o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_4_.yml new file mode 100644 index 000000000..b938e2bec --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a221o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a221o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_1_.yml new file mode 100644 index 000000000..1e91a6f08 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a221oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a221oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_2_.yml new file mode 100644 index 000000000..8b98004b6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a221oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a221oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_4_.yml new file mode 100644 index 000000000..2585b344b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a221oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a221oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a221oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a222oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a222oi_1_.yml new file mode 100644 index 000000000..05b0fbec1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a222oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a222oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a222oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_1_.yml new file mode 100644 index 000000000..0ffad2e90 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a22o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a22o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_2_.yml new file mode 100644 index 000000000..a27de3c29 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a22o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a22o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_4_.yml new file mode 100644 index 000000000..b9790c36d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a22o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a22o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml new file mode 100644 index 000000000..97ae894f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a22oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a22oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml new file mode 100644 index 000000000..b1013fe72 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a22oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a22oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml new file mode 100644 index 000000000..a738eb5fa --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a22oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a22oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a22oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml new file mode 100644 index 000000000..01348a6f8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2bb2o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2bb2o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml new file mode 100644 index 000000000..c1b7b02d7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2bb2o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2bb2o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml new file mode 100644 index 000000000..056babc1a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2bb2o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2bb2o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml new file mode 100644 index 000000000..39f29f6e0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2bb2oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2bb2oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml new file mode 100644 index 000000000..069c8c21f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2bb2oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2bb2oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml new file mode 100644 index 000000000..25a279929 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a2bb2oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a2bb2oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a2bb2oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_1_.yml new file mode 100644 index 000000000..6fa2b5e1b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a311o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a311o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_2_.yml new file mode 100644 index 000000000..902e4c9c2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a311o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a311o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_4_.yml new file mode 100644 index 000000000..8e392ff25 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a311o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a311o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_1_.yml new file mode 100644 index 000000000..d640d9118 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a311oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a311oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_2_.yml new file mode 100644 index 000000000..279fa040d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a311oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a311oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_4_.yml new file mode 100644 index 000000000..8002dd447 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a311oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a311oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a311oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_1_.yml new file mode 100644 index 000000000..dfce5a91a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a31o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a31o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_2_.yml new file mode 100644 index 000000000..318d92a15 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a31o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a31o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_4_.yml new file mode 100644 index 000000000..5616d6826 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a31o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a31o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml new file mode 100644 index 000000000..96d5082f2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a31oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a31oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml new file mode 100644 index 000000000..2b569764e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a31oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a31oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml new file mode 100644 index 000000000..78a6cda8a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a31oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a31oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a31oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_1_.yml new file mode 100644 index 000000000..64f5c757a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a32o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a32o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_2_.yml new file mode 100644 index 000000000..c04c48c16 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a32o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a32o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_4_.yml new file mode 100644 index 000000000..1e7223a08 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a32o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a32o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml new file mode 100644 index 000000000..73f305bec --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a32oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a32oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml new file mode 100644 index 000000000..c46504d46 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a32oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a32oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml new file mode 100644 index 000000000..deeb09b15 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a32oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a32oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a32oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_1_.yml new file mode 100644 index 000000000..23c4be7d3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a41o_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a41o_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_2_.yml new file mode 100644 index 000000000..3f95b5247 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a41o_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a41o_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_4_.yml new file mode 100644 index 000000000..b339d1346 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41o_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a41o_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a41o_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml new file mode 100644 index 000000000..e6ac00b3b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a41oi_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a41oi_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml new file mode 100644 index 000000000..17f75f5be --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a41oi_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a41oi_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml new file mode 100644 index 000000000..54e842f71 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__a41oi_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__a41oi_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__a41oi_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_0_.yml new file mode 100644 index 000000000..ac393b4df --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_0_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and2_0 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and2_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_1_.yml new file mode 100644 index 000000000..7d4abbbc8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and2_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_2_.yml new file mode 100644 index 000000000..da1195585 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and2_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_4_.yml new file mode 100644 index 000000000..2195570a3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and2_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_1_.yml new file mode 100644 index 000000000..899168934 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and2b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and2b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_2_.yml new file mode 100644 index 000000000..971ea90e7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and2b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and2b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_4_.yml new file mode 100644 index 000000000..5c4451ffd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and2b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and2b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and2b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_1_.yml new file mode 100644 index 000000000..c5f624d0e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and3_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_2_.yml new file mode 100644 index 000000000..477a3f724 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and3_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_4_.yml new file mode 100644 index 000000000..6d70931a8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and3_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_1_.yml new file mode 100644 index 000000000..04e164f7e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and3b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and3b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_2_.yml new file mode 100644 index 000000000..de48136e5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and3b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and3b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_4_.yml new file mode 100644 index 000000000..dfe25f5ea --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and3b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and3b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and3b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_1_.yml new file mode 100644 index 000000000..3466b6b95 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and4_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and4_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_2_.yml new file mode 100644 index 000000000..3cea2dc20 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and4_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and4_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_4_.yml new file mode 100644 index 000000000..f7021666e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and4_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and4_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_1_.yml new file mode 100644 index 000000000..357109c19 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and4b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and4b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_2_.yml new file mode 100644 index 000000000..9d5fe5101 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and4b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and4b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_4_.yml new file mode 100644 index 000000000..20cc73a31 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and4b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and4b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_1_.yml new file mode 100644 index 000000000..776c1bbb4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and4bb_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and4bb_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_2_.yml new file mode 100644 index 000000000..38d9603f2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and4bb_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and4bb_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_4_.yml new file mode 100644 index 000000000..afef9ea76 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__and4bb_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__and4bb_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__and4bb_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_12_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_12_.yml new file mode 100644 index 000000000..b9720cc06 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_12_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__buf_12 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__buf_12 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_16_.yml new file mode 100644 index 000000000..15ab353f4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__buf_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__buf_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_1_.yml new file mode 100644 index 000000000..61c347405 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__buf_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__buf_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_2_.yml new file mode 100644 index 000000000..b27ec38c4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__buf_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__buf_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_4_.yml new file mode 100644 index 000000000..b286cccb5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__buf_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__buf_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_6_.yml new file mode 100644 index 000000000..0f14041c4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_6_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__buf_6 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__buf_6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_8_.yml new file mode 100644 index 000000000..2f7ab587b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__buf_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__buf_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__buf_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_16_.yml new file mode 100644 index 000000000..3dbf1d473 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__bufbuf_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__bufbuf_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_8_.yml new file mode 100644 index 000000000..4c9df8617 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufbuf_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__bufbuf_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__bufbuf_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_16_.yml new file mode 100644 index 000000000..a54991458 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__bufinv_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__bufinv_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_8_.yml new file mode 100644 index 000000000..c83d24752 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__bufinv_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__bufinv_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__bufinv_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_16_.yml new file mode 100644 index 000000000..22e3f7f89 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkbuf_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkbuf_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_1_.yml new file mode 100644 index 000000000..fc532e03a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkbuf_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkbuf_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_2_.yml new file mode 100644 index 000000000..de086acdb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkbuf_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkbuf_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_4_.yml new file mode 100644 index 000000000..4806f3f60 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkbuf_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkbuf_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_8_.yml new file mode 100644 index 000000000..3178e5668 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkbuf_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkbuf_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkbuf_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml new file mode 100644 index 000000000..3b3dc5c57 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkdlybuf4s15_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkdlybuf4s15_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml new file mode 100644 index 000000000..c3cac8621 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s15_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkdlybuf4s15_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkdlybuf4s15_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml new file mode 100644 index 000000000..725fd499a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkdlybuf4s18_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkdlybuf4s18_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml new file mode 100644 index 000000000..1d606d335 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s18_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkdlybuf4s18_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkdlybuf4s18_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml new file mode 100644 index 000000000..54f330fcb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkdlybuf4s25_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkdlybuf4s25_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml new file mode 100644 index 000000000..b21be1d6a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s25_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkdlybuf4s25_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkdlybuf4s25_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml new file mode 100644 index 000000000..27623e000 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkdlybuf4s50_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkdlybuf4s50_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml new file mode 100644 index 000000000..f268623f8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkdlybuf4s50_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkdlybuf4s50_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkdlybuf4s50_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_16_.yml new file mode 100644 index 000000000..e17d64432 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkinv_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkinv_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_1_.yml new file mode 100644 index 000000000..15b9ad3ba --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkinv_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkinv_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_2_.yml new file mode 100644 index 000000000..21936007d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkinv_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkinv_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_4_.yml new file mode 100644 index 000000000..ca24347f5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkinv_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkinv_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_8_.yml new file mode 100644 index 000000000..14e661025 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinv_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkinv_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkinv_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_2_.yml new file mode 100644 index 000000000..9a4edfdf0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkinvlp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkinvlp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_4_.yml new file mode 100644 index 000000000..40b8047b4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__clkinvlp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__clkinvlp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__clkinvlp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_12_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_12_.yml new file mode 100644 index 000000000..ab5c32a36 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_12_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__decap_12 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__decap_12 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_3_.yml new file mode 100644 index 000000000..ae2d6d8f8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_3_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__decap_3 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__decap_3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_4_.yml new file mode 100644 index 000000000..fcc23a760 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__decap_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__decap_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_6_.yml new file mode 100644 index 000000000..0461610c1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_6_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__decap_6 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__decap_6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_8_.yml new file mode 100644 index 000000000..4269858b2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__decap_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__decap_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__decap_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml new file mode 100644 index 000000000..9aa069198 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfbbn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfbbn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml new file mode 100644 index 000000000..724dd6a8e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbn_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfbbn_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfbbn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml new file mode 100644 index 000000000..5537e4276 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfbbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfbbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfbbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml new file mode 100644 index 000000000..f163442dd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfrbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfrbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml new file mode 100644 index 000000000..f951c90cc --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrbp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfrbp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfrbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml new file mode 100644 index 000000000..f9d204d63 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfrtn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfrtn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml new file mode 100644 index 000000000..bef25c94e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfrtp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfrtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml new file mode 100644 index 000000000..843f7aec5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfrtp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfrtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml new file mode 100644 index 000000000..a40d73e97 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfrtp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfrtp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfrtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml new file mode 100644 index 000000000..3d6826c0f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfsbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfsbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml new file mode 100644 index 000000000..03125eed8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfsbp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfsbp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfsbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml new file mode 100644 index 000000000..8cba1340b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfstp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfstp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml new file mode 100644 index 000000000..8ccf7b95f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfstp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfstp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml new file mode 100644 index 000000000..0392800ba --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfstp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfstp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfstp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml new file mode 100644 index 000000000..59dc52305 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfxbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfxbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml new file mode 100644 index 000000000..2fdb17efb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxbp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfxbp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfxbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml new file mode 100644 index 000000000..163e3e8f2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfxtp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml new file mode 100644 index 000000000..b8bcffe0c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfxtp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfxtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml new file mode 100644 index 000000000..bb01751cb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dfxtp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dfxtp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dfxtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__diode_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__diode_2_.yml new file mode 100644 index 000000000..71f3950b2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__diode_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__diode_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__diode_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_1_.yml new file mode 100644 index 000000000..3645562ae --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlclkp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlclkp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_2_.yml new file mode 100644 index 000000000..62600f5c2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlclkp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlclkp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_4_.yml new file mode 100644 index 000000000..ebceea242 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlclkp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlclkp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlclkp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml new file mode 100644 index 000000000..4fdd0f8b9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrbn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrbn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml new file mode 100644 index 000000000..99ef79c9b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbn_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrbn_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrbn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml new file mode 100644 index 000000000..2942f68e1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml new file mode 100644 index 000000000..efbf21d17 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrbp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrbp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml new file mode 100644 index 000000000..3957f0fe6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrtn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrtn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml new file mode 100644 index 000000000..d53f67ada --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrtn_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrtn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml new file mode 100644 index 000000000..10feec2bb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtn_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrtn_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrtn_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml new file mode 100644 index 000000000..6cbaf1080 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrtp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml new file mode 100644 index 000000000..422e9bc9d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrtp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml new file mode 100644 index 000000000..fce672142 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlrtp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlrtp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlrtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml new file mode 100644 index 000000000..1224f6a58 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlxbn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlxbn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml new file mode 100644 index 000000000..a68a6cc3e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbn_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlxbn_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlxbn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml new file mode 100644 index 000000000..10670eb38 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlxbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlxbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml new file mode 100644 index 000000000..789f0341f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlxtn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlxtn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml new file mode 100644 index 000000000..7ed38238c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlxtn_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlxtn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml new file mode 100644 index 000000000..1878f777b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtn_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlxtn_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlxtn_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml new file mode 100644 index 000000000..ddf9cb675 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlxtp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlxtp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd1_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd1_1_.yml new file mode 100644 index 000000000..8ccca58c9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd1_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlygate4sd1_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlygate4sd1_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd2_1_.yml new file mode 100644 index 000000000..89fabb39e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd2_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlygate4sd2_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlygate4sd2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd3_1_.yml new file mode 100644 index 000000000..4c1469600 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlygate4sd3_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlygate4sd3_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlygate4sd3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml new file mode 100644 index 000000000..0e5ffc646 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s2s_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlymetal6s2s_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlymetal6s2s_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml new file mode 100644 index 000000000..a948fb295 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s4s_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlymetal6s4s_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlymetal6s4s_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml new file mode 100644 index 000000000..0413d5332 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__dlymetal6s6s_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__dlymetal6s6s_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__dlymetal6s6s_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml new file mode 100644 index 000000000..c1f527fba --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__ebufn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__ebufn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml new file mode 100644 index 000000000..71153bbfc --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__ebufn_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__ebufn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml new file mode 100644 index 000000000..154e7c362 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__ebufn_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__ebufn_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml new file mode 100644 index 000000000..f8233ac9a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ebufn_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__ebufn_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__ebufn_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxbp_1_.yml new file mode 100644 index 000000000..f964e4388 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__edfxbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__edfxbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxtp_1_.yml new file mode 100644 index 000000000..d3fb5f0d5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__edfxtp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__edfxtp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__edfxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_0_.yml new file mode 100644 index 000000000..0198455d5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_0_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__einvn_0 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__einvn_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_1_.yml new file mode 100644 index 000000000..129cfcac4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__einvn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__einvn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_2_.yml new file mode 100644 index 000000000..5bec184e3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__einvn_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__einvn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_4_.yml new file mode 100644 index 000000000..4e658df32 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__einvn_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__einvn_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_8_.yml new file mode 100644 index 000000000..55818e238 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvn_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__einvn_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__einvn_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_1_.yml new file mode 100644 index 000000000..239c9c7e9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__einvp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__einvp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_2_.yml new file mode 100644 index 000000000..a72f38ebd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__einvp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__einvp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_4_.yml new file mode 100644 index 000000000..08663c519 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__einvp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__einvp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_8_.yml new file mode 100644 index 000000000..419100b16 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__einvp_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__einvp_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__einvp_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_1_.yml new file mode 100644 index 000000000..f4656e9fe --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__fa_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__fa_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_2_.yml new file mode 100644 index 000000000..87adf5737 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__fa_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__fa_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_4_.yml new file mode 100644 index 000000000..1c0952b86 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fa_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__fa_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__fa_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fah_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fah_1_.yml new file mode 100644 index 000000000..dae9441cf --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fah_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__fah_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__fah_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcin_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcin_1_.yml new file mode 100644 index 000000000..ab0fa0655 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcin_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__fahcin_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__fahcin_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcon_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcon_1_.yml new file mode 100644 index 000000000..616770300 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fahcon_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__fahcon_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__fahcon_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sedfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_1_.yml similarity index 57% rename from tests/test_components/test_pdk_settings_sedfxbp_2_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_1_.yml index 4434b8e4c..8d13f66cf 100644 --- a/tests/test_components/test_pdk_settings_sedfxbp_2_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_1_.yml @@ -1,5 +1,5 @@ -function: sedfxbp_2 +function: sky130_fd_sc_hd__fill_1 info: {} module: sky130.components -name: sedfxbp_2 +name: sky130_fd_sc_hd__fill_1 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_2_.yml new file mode 100644 index 000000000..dfc08e9d1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__fill_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__fill_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_4_.yml new file mode 100644 index 000000000..468c844b0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__fill_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__fill_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_8_.yml new file mode 100644 index 000000000..4a22e92e4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__fill_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__fill_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__fill_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_1_.yml new file mode 100644 index 000000000..820b13120 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__ha_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__ha_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_2_.yml new file mode 100644 index 000000000..a79c9d151 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__ha_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__ha_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_4_.yml new file mode 100644 index 000000000..108183933 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__ha_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__ha_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__ha_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_12_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_12_.yml new file mode 100644 index 000000000..68896ecf3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_12_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__inv_12 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__inv_12 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_16_.yml new file mode 100644 index 000000000..822dd36bd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__inv_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__inv_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_1_.yml new file mode 100644 index 000000000..a849070e1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__inv_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__inv_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_2_.yml new file mode 100644 index 000000000..bdd54905c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__inv_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__inv_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_4_.yml new file mode 100644 index 000000000..14fd411ea --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__inv_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__inv_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_6_.yml new file mode 100644 index 000000000..9c0951fb1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_6_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__inv_6 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__inv_6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_8_.yml new file mode 100644 index 000000000..d80030ebd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__inv_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__inv_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__inv_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_bleeder_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_bleeder_1_.yml new file mode 100644 index 000000000..b58004736 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_bleeder_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_bleeder_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_bleeder_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml new file mode 100644 index 000000000..4c85334a7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkbufkapwr_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkbufkapwr_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml new file mode 100644 index 000000000..20d85923f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkbufkapwr_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkbufkapwr_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml new file mode 100644 index 000000000..83bc919ac --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkbufkapwr_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkbufkapwr_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml new file mode 100644 index 000000000..286077ef7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkbufkapwr_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkbufkapwr_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml new file mode 100644 index 000000000..e5adf34a3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkbufkapwr_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkbufkapwr_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkbufkapwr_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml new file mode 100644 index 000000000..3e1d0398b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkinvkapwr_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkinvkapwr_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml new file mode 100644 index 000000000..79e449e27 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkinvkapwr_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkinvkapwr_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml new file mode 100644 index 000000000..a6c86ff57 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkinvkapwr_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkinvkapwr_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml new file mode 100644 index 000000000..a8e3129f7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkinvkapwr_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkinvkapwr_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml new file mode 100644 index 000000000..b12b89a7b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_clkinvkapwr_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_clkinvkapwr_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_clkinvkapwr_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml new file mode 100644 index 000000000..ee4be0b97 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_12_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_decapkapwr_12 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_decapkapwr_12 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml new file mode 100644 index 000000000..68a432d34 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_3_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_decapkapwr_3 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_decapkapwr_3 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml new file mode 100644 index 000000000..051abbf56 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_decapkapwr_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_decapkapwr_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml new file mode 100644 index 000000000..a73d764e3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_6_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_decapkapwr_6 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_decapkapwr_6 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml new file mode 100644 index 000000000..5c2f7ae6b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_decapkapwr_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_decapkapwr_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_decapkapwr_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml new file mode 100644 index 000000000..9bc388e40 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0n_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_inputiso0n_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_inputiso0n_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml new file mode 100644 index 000000000..cd8ec4115 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso0p_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_inputiso0p_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_inputiso0p_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml new file mode 100644 index 000000000..1530fb7ac --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1n_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_inputiso1n_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_inputiso1n_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml new file mode 100644 index 000000000..2a923b254 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputiso1p_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_inputiso1p_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_inputiso1p_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputisolatch_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputisolatch_1_.yml new file mode 100644 index 000000000..24e72e7f3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_inputisolatch_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_inputisolatch_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_inputisolatch_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml new file mode 100644 index 000000000..e3da21c82 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_isobufsrc_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_isobufsrc_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml new file mode 100644 index 000000000..877373d8f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_isobufsrc_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_isobufsrc_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml new file mode 100644 index 000000000..4a04fa35c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_isobufsrc_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_isobufsrc_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml new file mode 100644 index 000000000..c5de0e736 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_isobufsrc_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_isobufsrc_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml new file mode 100644 index 000000000..520ca80f2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrc_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_isobufsrc_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_isobufsrc_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml new file mode 100644 index 000000000..2f160ac0a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_isobufsrckapwr_16_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_isobufsrckapwr_16 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_isobufsrckapwr_16 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml new file mode 100644 index 000000000..e01bd09f1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml new file mode 100644 index 000000000..5b532ea68 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml new file mode 100644 index 000000000..30fe9e5eb --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml new file mode 100644 index 000000000..4c882bd2c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml new file mode 100644 index 000000000..8640cddad --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml new file mode 100644 index 000000000..4d7a3a119 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml new file mode 100644 index 000000000..a347719e5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_1_.yml new file mode 100644 index 000000000..e7ea9d618 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__maj3_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__maj3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_2_.yml new file mode 100644 index 000000000..687265837 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__maj3_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__maj3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_4_.yml new file mode 100644 index 000000000..2e6507d00 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__maj3_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__maj3_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__maj3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_1_.yml new file mode 100644 index 000000000..7d596c47d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux2_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_2_.yml new file mode 100644 index 000000000..8bb3619c7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux2_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_4_.yml new file mode 100644 index 000000000..225d116c1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux2_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_8_.yml new file mode 100644 index 000000000..666b29e48 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux2_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux2_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml new file mode 100644 index 000000000..4f280612c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux2i_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux2i_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml new file mode 100644 index 000000000..05649a1b0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux2i_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux2i_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml new file mode 100644 index 000000000..ac874d3e7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux2i_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux2i_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux2i_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_1_.yml new file mode 100644 index 000000000..f726a5844 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux4_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux4_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_2_.yml new file mode 100644 index 000000000..9346f74e3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux4_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux4_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_4_.yml new file mode 100644 index 000000000..341ad83e3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__mux4_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__mux4_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__mux4_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_a21o_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_1_.yml similarity index 53% rename from tests/test_components/test_pdk_settings_a21o_1_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_1_.yml index e1e08619b..ce6c2c9d5 100644 --- a/tests/test_components/test_pdk_settings_a21o_1_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_1_.yml @@ -1,5 +1,5 @@ -function: a21o_1 +function: sky130_fd_sc_hd__nand2_1 info: {} module: sky130.components -name: a21o_1 +name: sky130_fd_sc_hd__nand2_1 settings: {} diff --git a/tests/test_components/test_pdk_settings_a21o_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_2_.yml similarity index 53% rename from tests/test_components/test_pdk_settings_a21o_2_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_2_.yml index c93e175a1..afd9977a6 100644 --- a/tests/test_components/test_pdk_settings_a21o_2_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_2_.yml @@ -1,5 +1,5 @@ -function: a21o_2 +function: sky130_fd_sc_hd__nand2_2 info: {} module: sky130.components -name: a21o_2 +name: sky130_fd_sc_hd__nand2_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_a21o_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_4_.yml similarity index 53% rename from tests/test_components/test_pdk_settings_a21o_4_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_4_.yml index fb7dc34b4..e7113aae0 100644 --- a/tests/test_components/test_pdk_settings_a21o_4_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_4_.yml @@ -1,5 +1,5 @@ -function: a21o_4 +function: sky130_fd_sc_hd__nand2_4 info: {} module: sky130.components -name: a21o_4 +name: sky130_fd_sc_hd__nand2_4 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_8_.yml new file mode 100644 index 000000000..2b585bd16 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand2_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand2_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_1_.yml new file mode 100644 index 000000000..468997e99 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand2b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand2b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_2_.yml new file mode 100644 index 000000000..fb509c788 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand2b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand2b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_4_.yml new file mode 100644 index 000000000..c7c3912f9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand2b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand2b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand2b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_1_.yml new file mode 100644 index 000000000..aac865a0e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand3_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_2_.yml new file mode 100644 index 000000000..53b4a4725 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand3_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_4_.yml new file mode 100644 index 000000000..bb082b68a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand3_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_1_.yml new file mode 100644 index 000000000..fcbcebd63 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand3b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand3b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_2_.yml new file mode 100644 index 000000000..f7f641dc6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand3b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand3b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_4_.yml new file mode 100644 index 000000000..df38ffc8b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand3b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand3b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand3b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_1_.yml new file mode 100644 index 000000000..45c08a66e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand4_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand4_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_2_.yml new file mode 100644 index 000000000..849c9c41a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand4_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand4_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_4_.yml new file mode 100644 index 000000000..d5ab0dda0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand4_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand4_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_1_.yml new file mode 100644 index 000000000..ef890c52b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand4b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand4b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_2_.yml new file mode 100644 index 000000000..aebb6849c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand4b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand4b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_4_.yml new file mode 100644 index 000000000..1105460ac --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand4b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand4b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_1_.yml new file mode 100644 index 000000000..2d8aa3c1a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand4bb_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand4bb_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_2_.yml new file mode 100644 index 000000000..fb3037736 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand4bb_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand4bb_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_4_.yml new file mode 100644 index 000000000..95c3a3978 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nand4bb_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nand4bb_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nand4bb_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_1_.yml new file mode 100644 index 000000000..804acdb58 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor2_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_2_.yml new file mode 100644 index 000000000..8f69c0896 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor2_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_4_.yml new file mode 100644 index 000000000..401a73f98 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor2_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_8_.yml new file mode 100644 index 000000000..fbff44492 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor2_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor2_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml new file mode 100644 index 000000000..2fbbd972e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor2b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor2b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml new file mode 100644 index 000000000..38cd77ce3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor2b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor2b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml new file mode 100644 index 000000000..b55c55ed8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor2b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor2b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor2b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_1_.yml new file mode 100644 index 000000000..51e34ba59 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor3_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_2_.yml new file mode 100644 index 000000000..55a86a5ea --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor3_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_4_.yml new file mode 100644 index 000000000..c244994ff --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor3_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml new file mode 100644 index 000000000..b1465a1d5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor3b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor3b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml new file mode 100644 index 000000000..4b2d76948 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor3b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor3b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml new file mode 100644 index 000000000..f4f82d89c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor3b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor3b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor3b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p15_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_1_.yml similarity index 68% rename from tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p15_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_1_.yml index b0bffe210..dc324aec3 100644 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p15_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_1_.yml @@ -1,5 +1,5 @@ -function: rf_nfet_01v8_bM02W3p00L0p15 +function: sky130_fd_sc_hd__nor4_1 info: {} module: sky130.components -name: rf_nfet_01v8_bM02W3p00L0p15 +name: sky130_fd_sc_hd__nor4_1 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_2_.yml new file mode 100644 index 000000000..0339f1f55 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor4_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor4_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p18_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_4_.yml similarity index 68% rename from tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p18_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_4_.yml index cadc02977..108d70d61 100644 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_bM02W3p00L0p18_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4_4_.yml @@ -1,5 +1,5 @@ -function: rf_nfet_01v8_bM02W3p00L0p18 +function: sky130_fd_sc_hd__nor4_4 info: {} module: sky130.components -name: rf_nfet_01v8_bM02W3p00L0p18 +name: sky130_fd_sc_hd__nor4_4 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml new file mode 100644 index 000000000..ddc2ff62b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor4b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor4b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml new file mode 100644 index 000000000..bba86c5e6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor4b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor4b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml new file mode 100644 index 000000000..823da0311 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor4b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor4b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_1_.yml new file mode 100644 index 000000000..8c8b716b3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor4bb_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor4bb_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_2_.yml new file mode 100644 index 000000000..90c73333d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__nor4bb_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__nor4bb_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_tapvpwrvgnd_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_4_.yml similarity index 58% rename from tests/test_components/test_pdk_settings_tapvpwrvgnd_1_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_4_.yml index 85a557f60..ae2d8008c 100644 --- a/tests/test_components/test_pdk_settings_tapvpwrvgnd_1_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__nor4bb_4_.yml @@ -1,5 +1,5 @@ -function: tapvpwrvgnd_1 +function: sky130_fd_sc_hd__nor4bb_4 info: {} module: sky130.components -name: tapvpwrvgnd_1 +name: sky130_fd_sc_hd__nor4bb_4 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_1_.yml new file mode 100644 index 000000000..5f8dd9919 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2111a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2111a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_2_.yml new file mode 100644 index 000000000..4896d57e2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2111a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2111a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_4_.yml new file mode 100644 index 000000000..e789778c5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2111a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2111a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_1_.yml new file mode 100644 index 000000000..ef5124cd5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2111ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2111ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_2_.yml new file mode 100644 index 000000000..ce3b47ec0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2111ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2111ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_4_.yml new file mode 100644 index 000000000..036fcee73 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2111ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2111ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2111ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_1_.yml new file mode 100644 index 000000000..d6bd635d7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o211a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o211a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_2_.yml new file mode 100644 index 000000000..bf3c192e4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o211a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o211a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_4_.yml new file mode 100644 index 000000000..2a5e0bf4c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o211a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o211a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_1_.yml new file mode 100644 index 000000000..db75ab40a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o211ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o211ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_2_.yml new file mode 100644 index 000000000..2e4668614 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o211ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o211ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_4_.yml new file mode 100644 index 000000000..bc28038f1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o211ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o211ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o211ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_1_.yml new file mode 100644 index 000000000..6f629f774 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_2_.yml new file mode 100644 index 000000000..2f7e95278 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_4_.yml new file mode 100644 index 000000000..6a1d4d050 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml new file mode 100644 index 000000000..fef30e9c4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_0_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21ai_0 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21ai_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml new file mode 100644 index 000000000..41c889eaf --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml new file mode 100644 index 000000000..491299453 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml new file mode 100644 index 000000000..9647bb884 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml new file mode 100644 index 000000000..5678bfe7e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21ba_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21ba_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml new file mode 100644 index 000000000..78aaf0761 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21ba_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21ba_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml new file mode 100644 index 000000000..024db3125 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21ba_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21ba_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21ba_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_1_.yml new file mode 100644 index 000000000..14719d12c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21bai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21bai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_2_.yml new file mode 100644 index 000000000..8dd3429fa --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21bai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21bai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_4_.yml new file mode 100644 index 000000000..aed8de1f5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o21bai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o21bai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o21bai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_1_.yml new file mode 100644 index 000000000..fc5127b27 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o221a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o221a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_2_.yml new file mode 100644 index 000000000..b83f6c9e8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o221a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o221a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_4_.yml new file mode 100644 index 000000000..e4eba3aed --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o221a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o221a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_1_.yml new file mode 100644 index 000000000..e35344d60 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o221ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o221ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_2_.yml new file mode 100644 index 000000000..2af298dbc --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o221ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o221ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_4_.yml new file mode 100644 index 000000000..fe848977f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o221ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o221ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o221ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_1_.yml new file mode 100644 index 000000000..d3426453d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o22a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o22a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_2_.yml new file mode 100644 index 000000000..b5416b57f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o22a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o22a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_4_.yml new file mode 100644 index 000000000..ca2130b9c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o22a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o22a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml new file mode 100644 index 000000000..67631d856 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o22ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o22ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml new file mode 100644 index 000000000..fe4f308e9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o22ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o22ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml new file mode 100644 index 000000000..611cbaec8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o22ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o22ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o22ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml new file mode 100644 index 000000000..e35ccc09b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2bb2a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2bb2a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml new file mode 100644 index 000000000..addaf6455 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2bb2a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2bb2a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml new file mode 100644 index 000000000..2a439a97c --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2bb2a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2bb2a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml new file mode 100644 index 000000000..54c063c12 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2bb2ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2bb2ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml new file mode 100644 index 000000000..6d508b3b5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2bb2ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2bb2ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml new file mode 100644 index 000000000..cd217e62a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o2bb2ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o2bb2ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o2bb2ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_1_.yml new file mode 100644 index 000000000..2e8c99ee0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o311a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o311a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_2_.yml new file mode 100644 index 000000000..ad8f203d6 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o311a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o311a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_4_.yml new file mode 100644 index 000000000..745005cea --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o311a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o311a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_0_.yml new file mode 100644 index 000000000..0abdf39ab --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_0_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o311ai_0 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o311ai_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_1_.yml new file mode 100644 index 000000000..7b6163d76 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o311ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o311ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_2_.yml new file mode 100644 index 000000000..f8aa9ede8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o311ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o311ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_4_.yml new file mode 100644 index 000000000..e06d8f747 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o311ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o311ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o311ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_1_.yml new file mode 100644 index 000000000..19d4c841e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o31a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o31a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_2_.yml new file mode 100644 index 000000000..0c2ac9b7f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o31a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o31a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_4_.yml new file mode 100644 index 000000000..83dda4127 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o31a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o31a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml new file mode 100644 index 000000000..15e83c35f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o31ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o31ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml new file mode 100644 index 000000000..8287a0b3e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o31ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o31ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml new file mode 100644 index 000000000..22b401013 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o31ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o31ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o31ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_1_.yml new file mode 100644 index 000000000..49c27a7cc --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o32a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o32a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_2_.yml new file mode 100644 index 000000000..e83a7d35f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o32a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o32a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_4_.yml new file mode 100644 index 000000000..4e21a9034 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o32a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o32a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml new file mode 100644 index 000000000..4f7c31967 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o32ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o32ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml new file mode 100644 index 000000000..10d0699e2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o32ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o32ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml new file mode 100644 index 000000000..96c95e741 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o32ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o32ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o32ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_1_.yml new file mode 100644 index 000000000..ac816bcb9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o41a_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o41a_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_2_.yml new file mode 100644 index 000000000..96e61bf95 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o41a_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o41a_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_4_.yml new file mode 100644 index 000000000..f74725ce4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41a_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o41a_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o41a_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml new file mode 100644 index 000000000..b6c592428 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o41ai_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o41ai_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml new file mode 100644 index 000000000..2cad6649e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o41ai_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o41ai_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml new file mode 100644 index 000000000..23ee1637a --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__o41ai_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__o41ai_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__o41ai_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_0_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_0_.yml new file mode 100644 index 000000000..11bab2548 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_0_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or2_0 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or2_0 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_1_.yml new file mode 100644 index 000000000..4933294e9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or2_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_2_.yml new file mode 100644 index 000000000..abdddf683 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or2_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_4_.yml new file mode 100644 index 000000000..cec8042e2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or2_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_1_.yml new file mode 100644 index 000000000..716ceba6b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or2b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or2b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_2_.yml new file mode 100644 index 000000000..825cf4bf4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or2b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or2b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_4_.yml new file mode 100644 index 000000000..8c0757cbf --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or2b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or2b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or2b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_1_.yml new file mode 100644 index 000000000..97a7cd71b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or3_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_2_.yml new file mode 100644 index 000000000..856aec346 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or3_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_4_.yml new file mode 100644 index 000000000..70ef47c2e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or3_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_1_.yml new file mode 100644 index 000000000..59018306b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or3b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or3b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_2_.yml new file mode 100644 index 000000000..5004d0dbc --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or3b_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or3b_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_4_.yml new file mode 100644 index 000000000..44a41db6b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or3b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or3b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or3b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_1_.yml new file mode 100644 index 000000000..1319d8d2b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or4_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or4_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_iso_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_2_.yml similarity index 65% rename from tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_iso_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_2_.yml index 7a2428bee..9f6e5ba5f 100644 --- a/tests/test_components/test_pdk_settings_rf_nfet_20v0_nvt_withptap_iso_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_2_.yml @@ -1,5 +1,5 @@ -function: rf_nfet_20v0_nvt_withptap_iso +function: sky130_fd_sc_hd__or4_2 info: {} module: sky130.components -name: rf_nfet_20v0_nvt_withptap_iso +name: sky130_fd_sc_hd__or4_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_4_.yml new file mode 100644 index 000000000..8992e4efd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or4_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or4_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_1_.yml new file mode 100644 index 000000000..649baf898 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or4b_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or4b_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_2_.yml similarity index 64% rename from tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_2_.yml index 13ea24ad7..fcbaffe3e 100644 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_cM04W1p65L0p25_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_2_.yml @@ -1,5 +1,5 @@ -function: rf_nfet_01v8_lvt_cM04W1p65L0p25 +function: sky130_fd_sc_hd__or4b_2 info: {} module: sky130.components -name: rf_nfet_01v8_lvt_cM04W1p65L0p25 +name: sky130_fd_sc_hd__or4b_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_4_.yml new file mode 100644 index 000000000..f040225c3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4b_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or4b_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or4b_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml new file mode 100644 index 000000000..927c67d1e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or4bb_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or4bb_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml new file mode 100644 index 000000000..8074f4849 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or4bb_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or4bb_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml new file mode 100644 index 000000000..e8039461f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__or4bb_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__or4bb_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__or4bb_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probe_p_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probe_p_8_.yml new file mode 100644 index 000000000..dc7b6c011 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probe_p_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__probe_p_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__probe_p_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probec_p_8_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probec_p_8_.yml new file mode 100644 index 000000000..9df4fbba7 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__probec_p_8_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__probec_p_8 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__probec_p_8 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml new file mode 100644 index 000000000..5b2953bac --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfbbn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfbbn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml new file mode 100644 index 000000000..d5bd29c4b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbn_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfbbn_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfbbn_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml new file mode 100644 index 000000000..b82593d01 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfbbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfbbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfbbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml new file mode 100644 index 000000000..bdcb409b8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfrbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfrbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml new file mode 100644 index 000000000..e06a34411 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrbp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfrbp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfrbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml new file mode 100644 index 000000000..4ec3379a9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtn_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfrtn_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfrtn_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml new file mode 100644 index 000000000..095eb22d9 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfrtp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfrtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml new file mode 100644 index 000000000..a1a67b91b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfrtp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfrtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml new file mode 100644 index 000000000..67612d946 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfrtp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfrtp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfrtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml new file mode 100644 index 000000000..4cdd6c787 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfsbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfsbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml new file mode 100644 index 000000000..2870bec1b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfsbp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfsbp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfsbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_1_.yml new file mode 100644 index 000000000..b55eaf55b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfstp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfstp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_2_.yml new file mode 100644 index 000000000..4766ccb6f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfstp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfstp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_4_.yml new file mode 100644 index 000000000..b57d3e515 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfstp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfstp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfstp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_nand3b_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_1_.yml similarity index 57% rename from tests/test_components/test_pdk_settings_nand3b_2_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_1_.yml index cb4886269..2f279a464 100644 --- a/tests/test_components/test_pdk_settings_nand3b_2_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_1_.yml @@ -1,5 +1,5 @@ -function: nand3b_2 +function: sky130_fd_sc_hd__sdfxbp_1 info: {} module: sky130.components -name: nand3b_2 +name: sky130_fd_sc_hd__sdfxbp_1 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml new file mode 100644 index 000000000..2c541c47b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxbp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfxbp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfxbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml new file mode 100644 index 000000000..9882a3ac4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfxtp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml new file mode 100644 index 000000000..5a13a237f --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfxtp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfxtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml new file mode 100644 index 000000000..198c0f9ed --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdfxtp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdfxtp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdfxtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_1_.yml new file mode 100644 index 000000000..07cace3e3 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdlclkp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdlclkp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_2_.yml new file mode 100644 index 000000000..f51239158 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdlclkp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdlclkp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_4_.yml new file mode 100644 index 000000000..2ebcfd185 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sdlclkp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sdlclkp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sdlclkp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_1_.yml new file mode 100644 index 000000000..39af553e2 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sedfxbp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sedfxbp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_2_.yml new file mode 100644 index 000000000..367822a99 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxbp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sedfxbp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sedfxbp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_1_.yml new file mode 100644 index 000000000..5cd888142 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sedfxtp_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sedfxtp_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_2_.yml new file mode 100644 index 000000000..c17a8bf6e --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sedfxtp_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sedfxtp_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_4_.yml new file mode 100644 index 000000000..6584adc7d --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__sedfxtp_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__sedfxtp_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__sedfxtp_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_1_.yml new file mode 100644 index 000000000..14b94edc5 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__tap_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__tap_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_2_.yml new file mode 100644 index 000000000..f9f71cea0 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tap_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__tap_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__tap_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd2_1_.yml new file mode 100644 index 000000000..e49ffe3b1 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd2_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__tapvgnd2_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__tapvgnd2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd_1_.yml new file mode 100644 index 000000000..2aab78cac --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvgnd_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__tapvgnd_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__tapvgnd_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml new file mode 100644 index 000000000..4645c32dd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__tapvpwrvgnd_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__tapvpwrvgnd_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__tapvpwrvgnd_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml new file mode 100644 index 000000000..e8edd6b87 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xnor2_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xnor2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml new file mode 100644 index 000000000..daeaf4772 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xnor2_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xnor2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml new file mode 100644 index 000000000..559eedc0b --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor2_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xnor2_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xnor2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml new file mode 100644 index 000000000..5556303a4 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xnor3_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xnor3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_2_.yml similarity index 61% rename from tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml rename to tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_2_.yml index 4886fe423..068ba424d 100644 --- a/tests/test_components/test_pdk_settings_rf_nfet_01v8_lvt_aM02W1p65L0p25_.yml +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_2_.yml @@ -1,5 +1,5 @@ -function: rf_nfet_01v8_lvt_aM02W1p65L0p25 +function: sky130_fd_sc_hd__xnor3_2 info: {} module: sky130.components -name: rf_nfet_01v8_lvt_aM02W1p65L0p25 +name: sky130_fd_sc_hd__xnor3_2 settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml new file mode 100644 index 000000000..d3721b854 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xnor3_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xnor3_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xnor3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_1_.yml new file mode 100644 index 000000000..0b304d745 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xor2_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xor2_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_2_.yml new file mode 100644 index 000000000..23a8135d8 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xor2_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xor2_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_4_.yml new file mode 100644 index 000000000..223433996 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor2_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xor2_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xor2_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_1_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_1_.yml new file mode 100644 index 000000000..d00294840 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_1_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xor3_1 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xor3_1 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_2_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_2_.yml new file mode 100644 index 000000000..bcd88ea63 --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_2_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xor3_2 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xor3_2 +settings: {} diff --git a/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_4_.yml b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_4_.yml new file mode 100644 index 000000000..d8f0e76cd --- /dev/null +++ b/tests/test_components/test_pdk_settings_sky130_fd_sc_hd__xor3_4_.yml @@ -0,0 +1,5 @@ +function: sky130_fd_sc_hd__xor3_4 +info: {} +module: sky130.components +name: sky130_fd_sc_hd__xor3_4 +settings: {} diff --git a/tests/test_components/test_pdk_settings_tap_1_.yml b/tests/test_components/test_pdk_settings_tap_1_.yml deleted file mode 100644 index 9f056eef3..000000000 --- a/tests/test_components/test_pdk_settings_tap_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: tap_1 -info: {} -module: sky130.components -name: tap_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_tap_2_.yml b/tests/test_components/test_pdk_settings_tap_2_.yml deleted file mode 100644 index a3a54438f..000000000 --- a/tests/test_components/test_pdk_settings_tap_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: tap_2 -info: {} -module: sky130.components -name: tap_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_tapvgnd2_1_.yml b/tests/test_components/test_pdk_settings_tapvgnd2_1_.yml deleted file mode 100644 index 6fa3767f2..000000000 --- a/tests/test_components/test_pdk_settings_tapvgnd2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: tapvgnd2_1 -info: {} -module: sky130.components -name: tapvgnd2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_tapvgnd_1_.yml b/tests/test_components/test_pdk_settings_tapvgnd_1_.yml deleted file mode 100644 index 4a6f2907f..000000000 --- a/tests/test_components/test_pdk_settings_tapvgnd_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: tapvgnd_1 -info: {} -module: sky130.components -name: tapvgnd_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor2_1_.yml b/tests/test_components/test_pdk_settings_xnor2_1_.yml deleted file mode 100644 index 31b73ad19..000000000 --- a/tests/test_components/test_pdk_settings_xnor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xnor2_1 -info: {} -module: sky130.components -name: xnor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor2_2_.yml b/tests/test_components/test_pdk_settings_xnor2_2_.yml deleted file mode 100644 index 5c85e0e04..000000000 --- a/tests/test_components/test_pdk_settings_xnor2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xnor2_2 -info: {} -module: sky130.components -name: xnor2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor2_4_.yml b/tests/test_components/test_pdk_settings_xnor2_4_.yml deleted file mode 100644 index 148ace6db..000000000 --- a/tests/test_components/test_pdk_settings_xnor2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xnor2_4 -info: {} -module: sky130.components -name: xnor2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor3_1_.yml b/tests/test_components/test_pdk_settings_xnor3_1_.yml deleted file mode 100644 index e6e2c6261..000000000 --- a/tests/test_components/test_pdk_settings_xnor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xnor3_1 -info: {} -module: sky130.components -name: xnor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor3_2_.yml b/tests/test_components/test_pdk_settings_xnor3_2_.yml deleted file mode 100644 index aaa0ede3a..000000000 --- a/tests/test_components/test_pdk_settings_xnor3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xnor3_2 -info: {} -module: sky130.components -name: xnor3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xnor3_4_.yml b/tests/test_components/test_pdk_settings_xnor3_4_.yml deleted file mode 100644 index 67139bb2c..000000000 --- a/tests/test_components/test_pdk_settings_xnor3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xnor3_4 -info: {} -module: sky130.components -name: xnor3_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xor2_1_.yml b/tests/test_components/test_pdk_settings_xor2_1_.yml deleted file mode 100644 index 2f204e8bf..000000000 --- a/tests/test_components/test_pdk_settings_xor2_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xor2_1 -info: {} -module: sky130.components -name: xor2_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xor2_2_.yml b/tests/test_components/test_pdk_settings_xor2_2_.yml deleted file mode 100644 index 8f5061e70..000000000 --- a/tests/test_components/test_pdk_settings_xor2_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xor2_2 -info: {} -module: sky130.components -name: xor2_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xor2_4_.yml b/tests/test_components/test_pdk_settings_xor2_4_.yml deleted file mode 100644 index 53b8f12c3..000000000 --- a/tests/test_components/test_pdk_settings_xor2_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xor2_4 -info: {} -module: sky130.components -name: xor2_4 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xor3_1_.yml b/tests/test_components/test_pdk_settings_xor3_1_.yml deleted file mode 100644 index 1e939d2f1..000000000 --- a/tests/test_components/test_pdk_settings_xor3_1_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xor3_1 -info: {} -module: sky130.components -name: xor3_1 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xor3_2_.yml b/tests/test_components/test_pdk_settings_xor3_2_.yml deleted file mode 100644 index 48fbebe02..000000000 --- a/tests/test_components/test_pdk_settings_xor3_2_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xor3_2 -info: {} -module: sky130.components -name: xor3_2 -settings: {} diff --git a/tests/test_components/test_pdk_settings_xor3_4_.yml b/tests/test_components/test_pdk_settings_xor3_4_.yml deleted file mode 100644 index cf311c5fc..000000000 --- a/tests/test_components/test_pdk_settings_xor3_4_.yml +++ /dev/null @@ -1,5 +0,0 @@ -function: xor3_4 -info: {} -module: sky130.components -name: xor3_4 -settings: {} From 6af157accc2dbaab5d2280c74f0d784904a92901 Mon Sep 17 00:00:00 2001 From: Joaquin Matres <4514346+joamatab@users.noreply.github.com> Date: Wed, 29 May 2024 11:46:26 -0700 Subject: [PATCH 10/11] run nbstripout --- .pre-commit-config.yaml | 16 +- Makefile | 4 + docs/notebooks/intro.ipynb | 2922 +----------------------------------- sky130/__init__.py | 1 + sky130/spice_models.py | 1 + sky130/tech.py | 3 +- 6 files changed, 66 insertions(+), 2881 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 78c7e3a68..c7bdb9958 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,17 +6,19 @@ repos: - id: trailing-whitespace - id: requirements-txt-fixer - - repo: https://github.com/psf/black - rev: 25d886f52c2bbbb58386ac8050f4e67952507bc7 - hooks: - - id: black - - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: "6a0ba1854991b693612486cc84a2254de82d071d" + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: "v0.4.4" hooks: - id: ruff + args: [ --fix, --exit-non-zero-on-fix ] + - id: ruff-format - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks rev: v2.10.0 hooks: - id: pretty-format-toml args: [--autofix] + - repo: https://github.com/kynan/nbstripout + rev: 0.7.1 + hooks: + - id: nbstripout + files: ".ipynb" diff --git a/Makefile b/Makefile index fe43865fc..476ba644a 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,10 @@ install: dev: install pre-commit install +modules: + git submodule + git submodule update --init --recursive + test: pytest -s diff --git a/docs/notebooks/intro.ipynb b/docs/notebooks/intro.ipynb index 2e5596e79..ad4f26693 100644 --- a/docs/notebooks/intro.ipynb +++ b/docs/notebooks/intro.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "e4abbd64", + "id": "0", "metadata": {}, "source": [ "# Layout\n", @@ -14,30 +14,20 @@ }, { "cell_type": "code", - "execution_count": 1, - "id": "5a160bbd", + "execution_count": null, + "id": "1", "metadata": {}, "outputs": [], "source": [ - "import gdsfactory as gf\n", - "from gdsfactory.config import rich_output\n", - "gf.config.rich_output()" + "import gdsfactory as gf" ] }, { "cell_type": "code", - "execution_count": 2, - "id": "5b4ea2e4", + "execution_count": null, + "id": "2", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[32m2024-05-23 13:58:07.393\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.components as sc\n", @@ -46,7 +36,7 @@ }, { "cell_type": "markdown", - "id": "2c622905", + "id": "3", "metadata": {}, "source": [ "If you want to see what are the cells available:" @@ -54,18 +44,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "id": "a9b61cd7", - "metadata": {}, - "outputs": [], - "source": [ - "# sky130.cells" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "19872424", + "execution_count": null, + "id": "4", "metadata": {}, "outputs": [], "source": [ @@ -74,7 +54,7 @@ }, { "cell_type": "markdown", - "id": "8ba69f30", + "id": "5", "metadata": {}, "source": [ "Let's explore the available layers:" @@ -82,8 +62,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "ab318aea", + "execution_count": null, + "id": "6", "metadata": {}, "outputs": [], "source": [ @@ -94,7 +74,7 @@ }, { "cell_type": "markdown", - "id": "6414d6cb", + "id": "7", "metadata": {}, "source": [ "You can also verify this is the active PDK on `gdsfactory`:" @@ -102,38 +82,17 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "b7512a8b", + "execution_count": null, + "id": "8", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "text/plain": [
      -       "\u001b[32m'sky130'\u001b[0m"
      -      ]
      -     },
      -     "execution_count": 6,
      -     "metadata": {},
      -     "output_type": "execute_result"
      -    }
      -   ],
      +   "outputs": [],
          "source": [
           "gf.pdk.get_active_pdk().name"
          ]
         },
         {
          "cell_type": "markdown",
      -   "id": "5747fd38",
      +   "id": "9",
          "metadata": {},
          "source": [
           "Now, let's explore available symbols for the components:"
      @@ -141,31 +100,10 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": 7,
      -   "id": "6a0f3119",
      +   "execution_count": null,
      +   "id": "10",
          "metadata": {},
      -   "outputs": [
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "text/plain": [
      -       "\u001b[1m<\u001b[0m\u001b[1;95mmodule\u001b[0m\u001b[39m \u001b[0m\u001b[32m'sky130'\u001b[0m\u001b[39m from \u001b[0m\u001b[32m'/home/daquintero/phd/collaborate/skywater130/sky130/__init__.py'\u001b[0m\u001b[1m>\u001b[0m"
      -      ]
      -     },
      -     "execution_count": 7,
      -     "metadata": {},
      -     "output_type": "execute_result"
      -    }
      -   ],
      +   "outputs": [],
          "source": [
           "# dir(sky130)\n",
           "sky130"
      @@ -173,7 +111,7 @@
         },
         {
          "cell_type": "markdown",
      -   "id": "f769dbb1",
      +   "id": "11",
          "metadata": {},
          "source": [
           "Let's try exploring an example basic `nfet`:"
      @@ -181,51 +119,10 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": 15,
      -   "id": "3e4a603c",
      +   "execution_count": null,
      +   "id": "12",
          "metadata": {},
      -   "outputs": [
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "text/plain": [
      -       "sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15: uid d7772405, ports \u001b[1m[\u001b[0m\u001b[32m'DRAIN'\u001b[0m, \u001b[32m'SOURCE'\u001b[0m, \u001b[32m'GATE'\u001b[0m, \u001b[32m'SUBSTRATE'\u001b[0m, \u001b[32m'GATE1'\u001b[0m, \u001b[32m'SUBSTRATE1'\u001b[0m\u001b[1m]\u001b[0m, references \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m, \u001b[1;36m97\u001b[0m polygons"
      -      ]
      -     },
      -     "execution_count": 15,
      -     "metadata": {},
      -     "output_type": "execute_result"
      -    },
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "image/png": "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",
      -      "text/plain": [
      -       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
      -      ]
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    }
      -   ],
      +   "outputs": [],
          "source": [
           "c = sc.sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15()\n",
           "c"
      @@ -233,7 +130,7 @@
         },
         {
          "cell_type": "markdown",
      -   "id": "b03fd5c3",
      +   "id": "13",
          "metadata": {},
          "source": [
           "Explore it's ports:"
      @@ -241,46 +138,17 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": 9,
      -   "id": "bbb8ef08",
      +   "execution_count": null,
      +   "id": "14",
          "metadata": {},
      -   "outputs": [
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "text/plain": [
      -       "\n",
      -       "\u001b[1m{\u001b[0m\n",
      -       "    \u001b[32m'DRAIN'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'DRAIN'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m0.15\u001b[0m, \u001b[1;36m1.78\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m69\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      -       "    \u001b[32m'SOURCE'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'SOURCE'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m0.15\u001b[0m, \u001b[1;36m0.89\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m69\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      -       "    \u001b[32m'GATE'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'GATE'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m1.31\u001b[0m, \u001b[1;36m2.435\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m68\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      -       "    \u001b[32m'SUBSTRATE'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'SUBSTRATE'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m0.32\u001b[0m, \u001b[1;36m0.65\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m68\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      -       "    \u001b[32m'GATE1'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'GATE1'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m1.31\u001b[0m, \u001b[1;36m0.235\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m68\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m,\n",
      -       "    \u001b[32m'SUBSTRATE1'\u001b[0m: \u001b[1m{\u001b[0m\u001b[32m'name'\u001b[0m: \u001b[32m'SUBSTRATE1'\u001b[0m, \u001b[32m'width'\u001b[0m: \u001b[1;36m0.2\u001b[0m, \u001b[32m'center'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m2.29\u001b[0m, \u001b[1;36m0.65\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'layer'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m68\u001b[0m, \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m, \u001b[32m'port_type'\u001b[0m: \u001b[32m'electrical'\u001b[0m\u001b[1m}\u001b[0m\n",
      -       "\u001b[1m}\u001b[0m"
      -      ]
      -     },
      -     "execution_count": 9,
      -     "metadata": {},
      -     "output_type": "execute_result"
      -    }
      -   ],
      +   "outputs": [],
          "source": [
           "c.ports"
          ]
         },
         {
          "cell_type": "markdown",
      -   "id": "af7e5375",
      +   "id": "15",
          "metadata": {},
          "source": [
           "We can also explore the digital cells:"
      @@ -288,65 +156,10 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": 10,
      -   "id": "8946842c",
      +   "execution_count": null,
      +   "id": "16",
          "metadata": {},
      -   "outputs": [
      -    {
      -     "name": "stdout",
      -     "output_type": "stream",
      -     "text": [
      -      "\u001b[32m2024-05-23 13:58:08.005\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36msky130.components\u001b[0m:\u001b[36msky130_fd_sc_hd__a2111o_1\u001b[0m:\u001b[36m5638\u001b[0m - \u001b[33m\u001b[1mUserWarning: decorator is deprecated and will be removed soon. import_gds\u001b[0m\n"
      -     ]
      -    },
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "name": "stdout",
      -     "output_type": "stream",
      -     "text": [
      -      "\u001b[32m2024-05-23 13:58:08.009\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.klive\u001b[0m:\u001b[36mshow\u001b[0m:\u001b[36m49\u001b[0m - \u001b[33m\u001b[1mUserWarning: Could not connect to klive server. Is klayout open and klive plugin installed?\u001b[0m\n"
      -     ]
      -    },
      -    {
      -     "data": {
      -      "text/plain": [
      -       "sky130_fd_sc_hd__a2111o_1: uid 9695ee2b, ports \u001b[1m[\u001b[0m\u001b[32m'VGND'\u001b[0m, \u001b[32m'VPWR'\u001b[0m\u001b[1m]\u001b[0m, references \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m, \u001b[1;36m98\u001b[0m polygons"
      -      ]
      -     },
      -     "execution_count": 10,
      -     "metadata": {},
      -     "output_type": "execute_result"
      -    },
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "image/png": "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",
      -      "text/plain": [
      -       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
      -      ]
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    }
      -   ],
      +   "outputs": [],
          "source": [
           "c = sc.sky130_fd_sc_hd__a2111o_1()\n",
           "c"
      @@ -354,1280 +167,10 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": 11,
      -   "id": "d5d6f687",
      +   "execution_count": null,
      +   "id": "17",
          "metadata": {},
      -   "outputs": [
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      " - ], - "text/plain": [ - "\u001b[1m<\u001b[0m\u001b[1;95mIPython.core.display.HTML\u001b[0m\u001b[39m object\u001b[0m\u001b[1m>\u001b[0m" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "scene = c.to_3d()\n", "scene.show()" @@ -1635,7 +178,7 @@ }, { "cell_type": "markdown", - "id": "19a86bd4", + "id": "18", "metadata": {}, "source": [ "TODO: add Parametric cells natively into gdsfactory `sky130` pdk." @@ -1643,66 +186,10 @@ }, { "cell_type": "code", - "execution_count": 12, - "id": "5a72f996", + "execution_count": null, + "id": "19", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[32m2024-05-23 13:58:08.527\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36msky130.components\u001b[0m:\u001b[36msky130_fd_sc_hd__a311oi_4\u001b[0m:\u001b[36m5980\u001b[0m - \u001b[33m\u001b[1mUserWarning: decorator is deprecated and will be removed soon. import_gds\u001b[0m\n" - ] - }, - { - "data": { - "text/html": [ - "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "name": "stdout",
      -     "output_type": "stream",
      -     "text": [
      -      "\u001b[32m2024-05-23 13:58:08.540\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.show\u001b[0m:\u001b[36mshow\u001b[0m:\u001b[36m47\u001b[0m - \u001b[33m\u001b[1mUserWarning: Unnamed cells, 1 in 'Unnamed_6c622524'\u001b[0m\n",
      -      "\u001b[32m2024-05-23 13:58:08.542\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mgdsfactory.component\u001b[0m:\u001b[36mplot_klayout\u001b[0m:\u001b[36m1645\u001b[0m - \u001b[33m\u001b[1mUserWarning: Unnamed cells, 1 in 'Unnamed_6c622524'\u001b[0m\n"
      -     ]
      -    },
      -    {
      -     "data": {
      -      "text/plain": [
      -       "Unnamed_6c622524: uid 6c622524, ports \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m, references \u001b[1m[\u001b[0m\u001b[32m'sky130_fd_sc_hd__a2111o_1_1'\u001b[0m, \u001b[32m'sky130_fd_sc_hd__a311oi_4_1'\u001b[0m\u001b[1m]\u001b[0m, \u001b[1;36m0\u001b[0m polygons"
      -      ]
      -     },
      -     "execution_count": 12,
      -     "metadata": {},
      -     "output_type": "execute_result"
      -    },
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "image/png": "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P6V5+SU2y+dY/vpz7zGlPX69+yN69y83344e83vMfz+fi/u3XpCP9W8f037uNrErAHJ4/C7Z3zz9c0TE++9ta0fPY3kP3oEBgAy134HZ/0tns10Pfsv5evnc+23gU749PNX/nG8db/fv/Vb1X3+OxdPrrmBpbR/Kth9vDvn65tdERBT0+PXNcezdiqFvqx+ba9/1GerXbNeH+Q5d3779+8dt8fR62D/l2rSf32O/t0Pj3+v5OdQnImK5+bYr0ofegbki78AAwMw1q+Ofl+tfj37evH6NpnmLiIj169dYLjsvUv7tLTavX2O5/vXw30O/o3N/i3U8H53/cPzfd//0utk8f8zp395O5roff7OJk3kc9Y2I7kuUXb/n437vcz/K15rPx7kjne+93+7493z787euSztve47tebTH716Xfb718vn0+ndzph6/VRzPr3Ntjx6/9/NvNs8f8+zM76hfaz6Hx6A5fezi7y+H8ac8fqc+jk/1XS5Pn1/tsTeb076bzfPRXFOP/2Guned507ztvrzxMN/O45+Yf9/+9uPTly8ijh7/sef3XR6/1vNo8/p1N7/E789uDr+e/D7s+8UqYhnfIjan3R7CKmSPaTLX0WrLXFtemetpj8icWu2n2a6b9fK5WS+fj47d/9w0b0c/H/o1b0fb1svnk23dY/eZ98cOjZfqnzr3evl8yNB0+72v4NTu2yTmnsrXned+f98829vb51qtVoPXpd2/PV7TOW+yf8/j15dvypy75xnLl7p+h5XXEvmGHr/e523P/v1jnppT3+M29FiPPf8P2zoriK1Wq8H5n1zXxDmGrk07a981uebjN/T83G9v/y739W+Pl3p+7vNcsjriJW3MnyIDj17d5RFkrkNtmWvLGyFzLXLLvFz/Ovhxj6GPuez3799p6Nv/PzeJfyVvGTv/kNf3j6MM7R/8OMsV8qf2tx/nz+a79ePzmfNHfORLPbc/m699/kv6X+Px77Nara56/fr6f+b5fY3x27qP8Wd/f3KQRQEDAJznGi8CP3v+oRfZEeOfqb/1i8Ahny0SIuKmRcZnXqTv93823y2LkFvvj3js/Kc8v4fk/vg9mpv4ASBDl9zE3zRvsVgcf7Z9/5n3sRdDh3E75xi6GbhpdvccpPr39evexL9+v/G4ad0ofc4c9/3HioHuddmfp++6dG8cP+e6tB36R4ze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",
      -      "text/plain": [
      -       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
      -      ]
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    }
      -   ],
      +   "outputs": [],
          "source": [
           "c = gf.Component()\n",
           "g1 = c << sc.sky130_fd_sc_hd__a2111o_1()\n",
      @@ -1713,51 +200,10 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": 13,
      -   "id": "90789eb4",
      +   "execution_count": null,
      +   "id": "20",
          "metadata": {},
      -   "outputs": [
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "text/plain": [
      -       "demo_connect: uid c754374d, ports \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m, references \u001b[1m[\u001b[0m\u001b[32m'sky130_fd_sc_hd__a2111o_1_1'\u001b[0m, \u001b[32m'sky130_fd_sc_hd__a311oi_4_1'\u001b[0m, \u001b[32m'wire_corner_1'\u001b[0m, \u001b[32m'straight_1'\u001b[0m, \u001b[32m'straight_2'\u001b[0m\u001b[1m]\u001b[0m, \u001b[1;36m0\u001b[0m polygons"
      -      ]
      -     },
      -     "execution_count": 13,
      -     "metadata": {},
      -     "output_type": "execute_result"
      -    },
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "image/png": "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",
      -      "text/plain": [
      -       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 80\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
      -      ]
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    }
      -   ],
      +   "outputs": [],
          "source": [
           "c = gf.Component(\"demo_connect\")\n",
           "g1 = c << sc.sky130_fd_sc_hd__a2111o_1()\n",
      @@ -1772,1280 +218,10 @@
         },
         {
          "cell_type": "code",
      -   "execution_count": 14,
      -   "id": "da60090f",
      +   "execution_count": null,
      +   "id": "21",
          "metadata": {},
      -   "outputs": [
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      \n"
      -      ],
      -      "text/plain": []
      -     },
      -     "metadata": {},
      -     "output_type": "display_data"
      -    },
      -    {
      -     "data": {
      -      "text/html": [
      -       "
      " - ], - "text/plain": [ - "\u001b[1m<\u001b[0m\u001b[1;95mIPython.core.display.HTML\u001b[0m\u001b[39m object\u001b[0m\u001b[1m>\u001b[0m" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "scene = c.to_3d()\n", "scene.show()" @@ -3053,7 +229,7 @@ }, { "cell_type": "markdown", - "id": "018d097d", + "id": "22", "metadata": {}, "source": [ "## Netlist driven flow\n", @@ -3066,7 +242,7 @@ }, { "cell_type": "markdown", - "id": "e60fcf66", + "id": "23", "metadata": {}, "source": [ "## Spice simulations\n", @@ -3098,7 +274,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/sky130/__init__.py b/sky130/__init__.py index 91130f812..f450a4557 100644 --- a/sky130/__init__.py +++ b/sky130/__init__.py @@ -1,4 +1,5 @@ """sky130 - skywater gdsfactory pdk""" + import pathlib from gdsfactory.get_factories import get_cells diff --git a/sky130/spice_models.py b/sky130/spice_models.py index 18da20e8a..f664ade58 100644 --- a/sky130/spice_models.py +++ b/sky130/spice_models.py @@ -2,6 +2,7 @@ https://github.com/chipsalliance/silicon-notebooks/blob/main/analog-inverter-magic.ipynb """ + from functools import partial import matplotlib.pyplot as plt diff --git a/sky130/tech.py b/sky130/tech.py index 68cd65e15..efd27baf5 100644 --- a/sky130/tech.py +++ b/sky130/tech.py @@ -1,4 +1,5 @@ -""" Technology definitions.""" +"""Technology definitions.""" + import sys import gdsfactory as gf From f71e7460adbef7a870b5b1744df511465f6c3522 Mon Sep 17 00:00:00 2001 From: Joaquin Matres <4514346+joamatab@users.noreply.github.com> Date: Wed, 29 May 2024 11:50:20 -0700 Subject: [PATCH 11/11] add docs --- sky130/compile_components.py | 1 + sky130/config.py | 16 +--------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/sky130/compile_components.py b/sky130/compile_components.py index 9ce039d30..9f22df162 100644 --- a/sky130/compile_components.py +++ b/sky130/compile_components.py @@ -8,6 +8,7 @@ def compile_components(pdk_directories=pdk_directories): + """Compile the components from the PDK directories into a Python file.""" gds_files = [] # Walk through the PDK directories and collect GDS files diff --git a/sky130/config.py b/sky130/config.py index 42a04acbf..5e8bd9a8a 100644 --- a/sky130/config.py +++ b/sky130/config.py @@ -1,4 +1,4 @@ -"""Store configuration.""" +"""Store paths.""" __all__ = ["PATH"] @@ -21,24 +21,10 @@ class Path: lyp = module_path / "klayout" / "layers.lyp" lyp_yaml = module_path / "klayout" / "layers.yaml" libs = module_path / "sky130A" - # sparameters = module_path / "sparameters" sparameters = module_path / "sparameters" klayout = module_path / "klayout" - - # libs_tech = libs / "libs.tech" - # libs_ref = libs / "libs.ref" - # libs_ngspice = libs_tech / "ngspice" spice = module_path / "spice" - # libhd = libs / "sky130hd" - # libhs = libs / "sky130hs" - # libhvl = libs / "sky130hvl" - - # gds = module_path / "gds" - # gdshd = libhd / "gds" / "sky130_fd_sc_hd.gds" - # gdshs = libhs / "gds" / "sky130_fd_sc_hs.gds" - # gdshvl = libhvl / "gds" / "sky130_fd_sc_hvl.gds" - PATH = Path()

      Xrq(a-IXHKC|Iy+ud;h`tm*-2zkM|sSy#HuXUWhvr=huP*&ExMg@dM?B zxbsDP&OJOQ=N`T@b^dYA<8l5w@rXN9KKm5UZR}r8p4*5!{rRn_A=TfYotV|<^Zyg- zBW+nNtB<#3+HNLlD-YN*^}z9ezB+48)>faU7++1^Y35(evAX|P2iwo``>hQ3Td~jm z#%|;5cDqO4le)|1tT9$U`B-&x7|&V0YO+^-_VJt72LHIdeEt24+Ox0UY7cFoeD_Z| zVOIGs+0W~L#Ib8;`TF~}7cYO_Zgu|0viey4)Y+|n$#%yxuhbqp&dXlC?B&;dV(DD$ z1$}d|2k&uv)$*5L^WhujVvk%n7n}EIHr}fadigbPE}e_r+cy`Rx1f2=U%_mtJUSP< Sde2;J{yu+p&G`^q&HfK(;ioJB diff --git a/sky130/gds/sky130_fd_sc_hs__o32a_1.gds b/sky130/gds/sky130_fd_sc_hs__o32a_1.gds deleted file mode 100644 index f5574649b1ea2a588d712150575e5728c1041414..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7216 zcmbuES&S4_6ozkCS5;S6FCdwK0~6u`(a5MQMgyoBhEa(MvIz=G2LxA)2oH*20uLxg zAAE6Pafw2RYt*<9K|>@MpEM>$jrd@qK#UlPOF%Ih|NowQx~gZUN*pWc`MS=%|2gO0 zd+JtIj|q+E-C#NjUg>)in|4z&W6T-p@22X7EALpgdgu6kBkXxo_WxObPBx7D|q$EXhiIDH(AM^Ze5^RIF4SlNnm_*Yu{B-c(t zU)+;0xDx&6z_+70CjOPQGp-W)f%03={JbCGcQrUKMdao6;M}n~%$UOK#wckoJSXjB za4!0fNXR_A*DyzpwjFVlh?kj9=}h>=c*93iM7(f4K8~EH;IPaWNqg{BLObqW*fWMNdmSlKDhlLgrKYP1;Gui6$pxKGA2A56O1MQRd}S zxl!_n_os+>@!JxQWIplegv=)%;@UyRiO)~SeCSWfcE(ZW-(nc6=5!J%aB6gDEB66;xf z2IorDcI7^tE76aB*x&g}$9urW8|wB48%g@{EBl*2_y>m)si*dbuD<$eO>|1^LH1C> zp4Lxu$rn) zpm+2?MQz}EY;v>Azwd~CX@5QcbG`cMnTxFxrPhhEwO)?e_$IsFv`&<8o6diZ)%%0i zPfw4(hWn8JzO278SdRIGT?uGN;Yggvz!>OX@ z9z;Ku&{?}OM<0z6U34Ht=&W6tqc5KnUA!|z=&W6tqc_`d-JxIMiiF+qJ)^s}!BLPMNRw7mF?kl%iw(F}`chj2})FU3f?- zI@TZcu02y9jS^jSKq)%bAN8(1Q(rzQx_GBjbgVz>U3;d!a!_>DO-j*K4l1oZQ(xO7 zy7~&G=(v9{zH86abDgVrwq*S)YYU-;T?u=pp6g6qacn~BXjkUxxz5yc|4~v$yE0GD zb*9cf136MhyE0GDb*7&CkCHmtm3exuGj-g5l+@9#%+qt7sjF^ENFD9UJU!Q$dOklW zsiR#vpuWwlRDpK+9kGf+PE{gi(6 zxmX$gF8-CUXX=ZXcRuF_XD6hNb|u;~^?dK5zU6%idiy@+n5WnGqn7s{=VO^Zk4pbetTUdam8t^=nxF0TAHNLE zULn_~@~5m9S$Y=pj28nX-;WC~VH}S3y&UzVjBwwM@ZO@VbipsyO-Xz8MQJDb{9fIX zQ1bu>%GX|B(YwfDK74@GhkUnir%u0(rgeD;e`&(t@0O!Tp`^?GQ@-+K>z zaV-~@rg#){Lc6j%J3jldW~f(IupYE4Vb9Fp?8mrQVy^E_7!AiF!LCGmuD*=tI_jHz zNAzW7C120HsaG;@##iR$U%47%#~xk5HQXd>(b|>O?D(Z&n5!um``#3Pz&Y*8DcSns zdB`2V0~EhVh~Fa(?Mk#~&L8_RZ|a-mwM4rzC;!6561VVOLdK^Jo2Y{H%W^H}y?o+}5tl8GkTZ;s&22WL(;ndGXngaj9<-ajjjM z6W{J%C$QffM?A;k3$m{%Vb7eu@EpW?68q-o3BxX&!>&YorryW3N4<}0O-UW?$~=AC z5M8C5kUH9xdHQI&=%Sw!Qb)ToPha>2y8AJAxbG;#v#^%1D`C$Ze+~CH|ESzIl$;0J zm9S^)XCl@PSwE#WOV&>bd$xWq#_FN}-zmO|bJ~?&ww`s)=R4NFvb(e{ zQ~P;q-@;?7cqnavhjk`u4;ReB&8oj1dGyJqpT4@;>Sy=S<82?K>922&h9h8n)i0de z691I-F8`}$^|a{mw*T+(>qAjZLrmBnc25|bI@~x|wU5dW^|V36=5N+c?Vf^M6`j(! qqg74yr2jtdc($s$2N9dU=6mBfYuL`y6?aORQ;py3Q|c1D_~sw~2sqmS diff --git a/sky130/gds/sky130_fd_sc_hs__o32a_2.gds b/sky130/gds/sky130_fd_sc_hs__o32a_2.gds deleted file mode 100644 index f45fdbfb4754fa3cce90db5d9742a7bedaa54cdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8472 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o32ai_1.gds b/sky130/gds/sky130_fd_sc_hs__o32ai_1.gds deleted file mode 100644 index 0affcdc7959b0be332bfa088fbc8283c2cd2d02b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6812 zcmbuEYlu{37{}k4Ip@ronKQc8V684CrC(~n%LbuR?5=AU6Uj?jnhxG7Ya?-kvQ^5; zF47GGsWu`?35ujX1QH}d8T6$KL{>syM2L!z?jT|R|NFepyk{@xXw$&(n||C!%R=^x$iN#Al^{7JUcN10bo zqDUgX8R*XE=M zzuKkZN3x#k)1IuSx=Y$g`qwV-%?9Liu7^oT1FPwUrNf4!fWGiT29vwo$F8#}=9 zGt!>cOaB`jKhfB6{$8%HgY_dWmm}KK`ljoDYks5s^nu7fPf}>z7%5(6)YIy8ppi?8Qg0 z*F#S`mWV6Sp7tN7kGe(Q;@2n``bgQGt>-!pKEQk~@(eel$A~M@p6MSgfDiobJy!`| z8&~G|^Sbh@qF2V(i(ZL%u79ON^ev)4%v(`*Wb5N;xE6KCM^i-IHm=O6pVzT&>XodU zab;fpypDBK-y-U^aphU+=lY>u$#p}$GH?CVj?26!dptSsj4Q{?zwAGIf8mb9y`;u{ zr$k8iou!SZ=WmSO-f>pmi;pTr$N8t;wP)%p zr$tvipcGx@w9>{i^|j-oOZF&5$Mr*h*Pf~8JSFeQ{YP0}4K3nI#547rC+bQwJ*i_{ znWyJGQP2CYk~+qfd3w$hb-e#6sbgH3r{_FT$Nj6Mj&Wt4p7TUq^?)aJj4Si>oG0qJ z|CQ7+uAETcFoX8I!~Ku_XJ44_@_c-9EM1O%JchY(wCkZ)+G}9xS9lJ1vb{cC+U@GMr(G4dg<%+qt-uVEiU~#xG**5Lco- zSI@DfzQsR9Ur{c}*RyWwm8_fo%Dno`F&X#5ZcmOoRZIP+qg1k{COSg zre4Xq8CT}j&ppCtJ2mWiWpOF~MqG(_=J=QQ;=0-B>y;^fhp}K>Ir=<1YW;@$;Cm4J zq1O}7-wfkQv}gMBy3#h$D}$+`S0bLNukhXl|0?c5O8PRc%=71U^rc=&U&fVr{`@X0 z&BObv6i?tY25I<3}Gphopaths8fs zHnR16=0RODKSk(lT$!T}E`bhfAo$dibu+Hat3SF`bmfvKb&M9ew z<*c0kFUCCmE&ESddR_LP5^+2J2};5s+ z(c4L3z$iV=Z)f-Cv#07Y6LoT7qS#CB{d51j+CJBwY}NQL0iQg%m2ghp969ms>uFD2{*B)4s__K6O?AAjRe2kuMzyQF dO|`4MO|`6+zBbf+wu|2*95pxJWz2bC{smH$>16-_ diff --git a/sky130/gds/sky130_fd_sc_hs__o32ai_2.gds b/sky130/gds/sky130_fd_sc_hs__o32ai_2.gds deleted file mode 100644 index 7d0c100c24b7da64fb0a6df3bb023cb547281721..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11062 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 Qd!A#rw-xQC&Qc5i1J1cFxc~qF diff --git a/sky130/gds/sky130_fd_sc_hs__o32ai_4.gds b/sky130/gds/sky130_fd_sc_hs__o32ai_4.gds deleted file mode 100644 index 76e6c767c21ab9c8954afa44f4d49e551f495d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18084 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o41a_2.gds b/sky130/gds/sky130_fd_sc_hs__o41a_2.gds deleted file mode 100644 index 37296bd08dd7bab50c416cd29ff4cca17f2930f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8856 zcmbuEYlvM}7035|o%_CXXB?{2jN&UG7--T)q#2dTB(b7tP2cum#@NPJQ!PnBYFe>M zd_W6Tp=!ofu?EGe*bmZTRRnDnK|j_HRljIKs7QR&2Swxmx7S(soOztBnOqot_pY`7 zd#$z4-uv#mCuE^se_NQZ)!V-dy)YNr;g#W~<@aGw&yKwJoktHHy(5I#M(Yi`KlR$T zJo&ZL7w>)Sf-kRJe^r=oRcq(7?AR@L?6_$A^1E(cK6cacdyXwHe_-d1L(3P2(Cmbe z4eQ~qkd5kLTi7;kgb;pce>3%htyz2TRGa2>pg_Km?tLNjPL-(qdiPs?uzymY)xDGayMH!6Y`sx_<>w@y9?u~s zcH%e{Z=-yUkWaT}d30_mQSmxAT0F>jwx29WKJ7=%4~c``Ngnj;tcV}SBm1ev&32Ti z{t;^V7^{o$9$Rjk=Bm>csVoW(7#UcoLalI%W|q+xxWv^{>J(K5qq-syhRtD zTYdSb6?(43S)%sKZ z#%M3cU!|`fH(g_^({%OY&a}RHgXvl=r|DQf#LxYe@v{ZfWzRTG$NWQ|`z!UGEvD-{ z;WQod4}I>h)OVjZUGJ3Bbj&~WxxZ51f7*0|6He1H|Ip|DO8xM0(~S;0O*eep8SRz& zsTI?W_c=|+{3U+wuhdT;H{Hxur|G7TJEOf)&paD^%l3cg@LFkQcgkL=XP%*JY%Pcm zyECO{o}uUa!-)>NGo@#qp=1AZqQmY?>6vHf*#Dg9usc(F<{3KnJtsQs&Xk^chK~Ku zi4MCnrDvX@8yzl)4!bj@XP%*F|8%0m?o8>KXXs|O7DR{LxuJeGe3SES+<&$I#h2!L z{oQ((v!U% zH1YL&C3|r}`foR^e@K6M`;GdG_4)k(_W`tz_YJBm-XG+ws4wcfzcJn5p@NJHc4vkD zMxOuF`!xpdGxqhnW4xgJbGCFY8{edUb2h)I&)2Da&e}ogru2++dOzYu^~U>*?&mZ= zv@S*^a(~2G!^wOeyvF7=r2pQt1&PnSl#_YII&zXfah!^`Q9ehgzqi}^fyC)34<~uF zPFWrhJNvp5Kl9p&o%!t~zr6o)e7oPv&rj33S7;y6y83s)&UyMQyHoz8zN>Q|`U$^l z`mVE|*7v?)dT0MC(>rCajNki}^3*u=?=IM-ZrPpkSLz45OgH#_L3G%iDgE&0rW@T} z5FK`BO5b@vr~H-q)2_SU^b`Kw^j+uvw4QM%zLRmMUuSCk!;dZR z+N}l28@n@=KkdjH{e;Rp+MS8~X-D4Zo#c((naY29DD6qjw?_+dmxtXcf93dduf$#5 zNb7P!&828}?yA;vPtG0TSoeWW{r@1|pF3r*jE}x?o9Ug+^G)xRy;7h3OL@=e**#R^ z_qBIpcg|GnoBZ}t{;jJEk~el|Du3FMH+m;|V|S+V=Q$If=kFvgc4sO+?TCxsNnGsC zRQx*g=0DONDp>!zV$1H7zjFMiKCQ9W{>%5ClYJMvGqwNHj(r#XgxYtb-I>^bX~()j z?_}Lzcc#`4`v&9A|2>?HJ9cMk{AtIyqjxgy*qy2I?>%R6`?_BzJ|r%7XDUAJh>Oli zTJwf$hhY*FuJcgkO>Z+zBt&DR%1huxXd z*L0pDe!Wo;9d>6*-)Wn!^GHE-*qtdo=M&;{zH*|&?o8?9KK)PIzw0?0U$On$DSPGk z@jczsxtH(n2~XSich9-{e81}a#5n^U=Z^`ci*{#1&p87f=Z^`ci*{$OA81H)r+sC} z&g1{P*$Zo-6|(bdLCv?c7GHhhC68VH?8n1kzO{6{Y`g~k8%ytdb6Nhc;y4<4Z;P?F zg>}8neSz0W>!JG&>5qrbTz1W6OIjGy`dg(}9&55$ryqPW>JO~Z>o!r6#s9zcdH$DNws)0Yw}JmVe*916-65OHcJDZQb@Myg+y5HX7j917J$x=|%|$Zb zMC|wr)9SwH>@!E5*S$$~UiT)|dEJ{(cW%>Cv$}VlecinSu3p;2Y#D4n7xmO>?W0pX PZ+!{Ib*hcH*$n>$bd>#R diff --git a/sky130/gds/sky130_fd_sc_hs__o41a_4.gds b/sky130/gds/sky130_fd_sc_hs__o41a_4.gds deleted file mode 100644 index 6f1eebe48980f78b6ccdf7b4f46bde53320499ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13274 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 diff --git a/sky130/gds/sky130_fd_sc_hs__o41ai_1.gds b/sky130/gds/sky130_fd_sc_hs__o41ai_1.gds deleted file mode 100644 index f9cfbb582cb2f5f9026773f6f308bf4c57e77c8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6892 zcmbuEU5Hgx6vy{HU-#U5&)5_fV|1#C@*y1X6Dq9GampwYP1Dl!;#VjMhC>ggh6eUU zL108`gk<)eMG=^R_>lDw^;i#9FXB@XQkIaU{r`LIb@#b5a}GLQxc=^}z5i>iz4zMZ z>~l1U34(`BZzZUnGIi5qs^(_Xm;Y_DAlbBW&6d?$wi?q6|egb^v1>7-Xs}%eCxCsQ(KR%YYnY!Z5V2`HqV^4dSh#viBe;duE6Xt$+*DuoBr<5 z7;{X%*&5HdDZiEI6J2fE`T?tNnwO}LH^S*F;7vK6#^3OfIA+&C{IoGj+M~_VZV7#K zgXqcl9{l}=r#XY)(~*-S+Zk7h_@m{wo%w}RBu?1p$vlD=B_ERc1lw{Phgck!WAwGO zE15@#2~pC{I7;{{%%^$~elgx^SB{9ET)@|n`6U}9KhoMC@#MH^Q!kN%ILd!B9KKt)Akk(5^&#Ucb`D*XxP7c=6%@^H<6|asZr9Bkg&;jK9hG6Ak-y z{VM&*uH(*^Bii%&mK%S2J(IT?2YScoQ;h#xj9>YK%x~m~etCa`SGXP{^vs3p$&aPh zfwHq6ez);WaXo1rDB(7r|01i8#;l*4AAd3n^Vp9s_FS7k;y3Ne{*L$~^wl>-uT1Y1 zy%P3({v-6YZqc`SRP;4vce%d)jOdjOjtBWGVK0oIPQ*Sy{^^@U+P_Zp}uxrboE0@(bdi?t-Vm+I4Qbp zw^DShAI5j>g?g@2_OaBzvTGT%uq$CN)N`Gv3nzI}N4v62&vl}n`$tI~?aDGe*NHk_ zzm?R{t}N4Yov7pWM@b#+$}&CIiMskBPwHq_mg%`p)N}tUsiR#vs=jIL`PS}#>_7X# zddDsNatwJNdLL`!NPBImw3D>g4|uY@t54eP^~CxusK2JM&mZV*^Cp=u^-4P)j?H~} zpJ{w9_ZgD*0Ov4eeL4QV5ji;m-Z(1EMFZJMsO`lkuoi4m+RA^-r(gcn;&UUHawsWnNoX7Md(UY{(uM+L~@yq)HcR#fC{RjMG9jcD$>+p~DRl;7Xugw>I zoBxQurkr1{uYVwVWn+oxm9Q7auk6EILmv!!Qb)V8RF7w~>L%#1XO-!A=wVmFUK}6& zc#fpL&7-2{d6<4+FVxrGL7xlAeW7RY9yG8k(O#&peg@rPyi=#-yxV>6ST_HSeG-@NS6Bxm zFVGK39qr08J+GtGHO_icN4v62Z@z@CiSe$@@t85zu51?P&-bm2ANP1Nu6+;dSQel2 z%ykb2J-P0*D|P)d3<>Wj7Mo-|-!~`MR!nS?33#(+vWfBR$-A#Vvgo&GP1YL^EQgJs zjAsh>$$AofbuHs@{$^W$vqt#q*~`y9@xe2R*=Ew7Wa)wd43F>II`qh7SUw~4+4EMv zaF`y?hZxUDeS16{1LLcH*@GSNFIn&MpSNJJLyz;(rNvKnnWQI~Gh=M(>R(r)uC2ck zb^WKYs#9EBT;|g+f812N%*Uv9nU6uux7hJj9QOeJuO?Tom$cqg2a~DB4e_$od^75* TW#;9pv#D*h%N&Q{C^G*8n-mAK diff --git a/sky130/gds/sky130_fd_sc_hs__o41ai_2.gds b/sky130/gds/sky130_fd_sc_hs__o41ai_2.gds deleted file mode 100644 index e2833ebf2da3ab4dec56a65ac5a70899484e3661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10848 zcmbuF3yfT47017w_w3B!f zF{VC)R#AzBs0gT0kynUVBmoV^Xf*YKA=Rj$L`6_E_5b_MJ#+7F_kKc|Wb)fN=lg%> zobPq-o!QU`mCBpLvXM&jkuVyTgl2d_cwX`E(5*DKUUc5JbGKa@Lcdyn&6*D%f6{$7 zKK_amZaeCWyEmQ|metF(%NmXCZ@=`Il}FEQxnOSl`EwU;pPRe**kjJUXzpd9)(WA~ ztAr~;W2_QZgcTFj5W?N|9$cTZ-nYMhly2(u_Qsy`!s;yD|tG3M>uw`hHLQeW>Ti`&z9k_RNe zUNa~5?o;NE+!aFSPx|bXzq8l;5PfG|PV}AQGQUWkodvL4=hP>LE;~^El{c(#A$*=XFoaEPf%>0pOh0y%1K0D=aK4gA~zWK_W=$l7o zevx{br{<)dW>y!(-`2Wv;&1=j>V?>;!&$OEA7%dPPw2f-Yq^t?e5$I?Nxs!BmM@I< zGYcFGq4EZOc1mASeYAt{zJ~u+PFt;^>Q{YxA`6NW{v0jm7i1oF6WR__Q`jcKT`Jo z{pOF9pE&5Vc*T4!i}_4s=WEQw+VLmt1GVsSs?_H(P4L{^p#I)ZEVx|e@)KX8CnmrJLNBp zKYp*p9sDvUaj`oW#D8n7->+|B|Ni}J89%4ZBLm2M2lE%>+xYjHKhw}|$zj$W_U4qzo9|ji>5BcI@Eq620eW(a>(c4# z(m8*9J{seP^7ZZO(y4BX`JWQ?wS(5bwpjnnDvj$3UC(s}4f%6@#_n7(FaA9JV5#W_ zdkT~;+MNk~ZIkKh^#Y}fc4tE0$nxh5CI3k2qTQL$huw;GyVldXob?Md;<7vCFOL7b z`YSt3S6!YH9d>6*-+tQi9=)MJzUL3MX`nm$sxXm=*`)0<4!uNNp?v^(eP zZT-jnt#M-i>slGlhe(-x-A6`$ar_qOmHWc;`APcKIgxR}`E29w=hJTW|25{%DdFjQ z?{-FeG5$P#Wryji%bliU{^%$3m+EVqOjoZvO~?90pZQDmja8;=>~orq^@~39m+D(f zP1oAvG+k?{Gulh_?WavQdV|w+tUuys{!)Esuj#rwou*^`q0juK`raL;8{6zOUGENO zw3q6~cbjfvozryVyPawMDedfC)VXehuxXdvro`ZEzgM#yECO{pP=XZ<3xwunbNaQ&~g9bM2Fp( z(z8#{asT2(huyiTz8`Ml{xn|ybp44h?YGvf{>oTYAMJCrH!@=H+-81=oqIed{_%I4 zA7Y>Qeop+;>d%S4|5fut?1yCjcs-7J#dG1n{o4;8vHY!Wsbjt9sT(pL#c^%@&BoP< zpYM*Gt*&x;Okm7UhFQ~fR$e|;QZJ;(Fh z?$7fhKU6<@u8&l|)vK&uSo@sWovsrX>pzZ9d$Wzp=)E}^7wpcG@rnA*U8dvvA;uY^ z!|p86zl!>Jo<#@werWpD1u{?1w|=0vE9oze*W`B#mf`rC8T|E%`B6aU~z^F#XQd)OiM zUD@~z`kaw`@H^=zi&xCYzF*It4;pV&ytion{*|-c&}Z45@+bA9I$O~@JDO|sPT5QK zT!-3g?HnEQQ9DQ5&b4VhaXE*b#HC+nDn9#yxa^l96*tqIVJ(yE7HPrt^sTul*q>^N!t_nt$367rm3X*qy2P;d@%YTeWx3 z&l&F#WOvG6x_;2N^<0g9NS(FO?(C%X*arTWG;i_5(O@gZ@sJ5%v#M_hDH;$nBE;?Mq9+P~Y{W??gH+`w)&GnZ$AbDeVrt+s9d7~Rrc}Kf5 zkw5Lo8@-dfu{%@wk3XTfTIUmA$T>Qv>w@e~`Af&Y{Zp%Z^opF+joq25pLW!Zen{0F z?aoB~w4-kHPU^<)Ox4eQYrI!ko|AI}yEAou(2jG1``sZmp3&}1oFB9!Z}d*`#_mkz zKcj0r`*wCiPWCN!XKMe_j(v;X$-c$zOzq#vJ1y?imYl@J?o7p}9dXe+iHqHtia&j; z;vBB^zp=mvwEnR>4=-Q81C$!bn?*qtf;%yFihc{nFJ?9P;)-@WAz1I9liI_%Dr zKJK%pZ2wggO)&~z`YuRe0;VYi*~=MU=9r@nThY`nVhJErXKB@O>qwR!!m zj{U7VpuZ)b;q_VTqkFVE*%4Yx8fR?K<61Ev(<_q&`5d6{ULEx(FVO4vKGk!eepnAR z5a0D@zG+_kXROciKXJne^Yr??@Bhc2*`>jMUuZ08tU2b{s|S}n7d8L4V6nBSiX;Dw zGUr>jgICA@2^y#FwFgl*yQqH9>d})u^EJml`?^^%*^I4x_G<3GGPVA*Qy0TpQ}0^% EAN~>uPXGV_ diff --git a/sky130/gds/sky130_fd_sc_hs__o41ai_4.gds b/sky130/gds/sky130_fd_sc_hs__o41ai_4.gds deleted file mode 100644 index 1027b3e316b5b156a437f9a7067e614862371c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16862 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 K?Gf!|xcYy-wc-E( diff --git a/sky130/gds/sky130_fd_sc_hs__or2_1.gds b/sky130/gds/sky130_fd_sc_hs__or2_1.gds deleted file mode 100644 index 4d6ed6a5ecd2d1152b63db5e74419debe2b677b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4900 zcmbuDU1%It6vxlb&fNXTZjF*w@+zC<=lmil`u3>KBMrq*Sy%`sfFuf~5~)ABrDXeTo17J@;g0H<>Zif#o-Q?){&0 z?zwmF++A@JMR&mj_ngu_f72<=_x1IjUK%EmM`BtbIt0b zSG+pCah(h#`Px3`c0IUz=&F^i`zKqwwzRhGYPBAky0SGSaaF`MBiSczNhE_Z*j*Np zWBRGSmNMzldn5Y9=gXXa%rOjSEC710qJouQWqDxf!2rDOvZ*rHC0QXYl<~)GW~35y#k3pUq)@ zZe@LH_lh)+LyODk_J;8rIlg^}Z-kvX_6z##cpvlryTkhNp0yuu*k)oGk`9cZ zPd>*Q4J=KmKO_2O{oUj9v*$}@XJ^MaKBLx^17v+g+p~JDPY>&>8uqI%*ZySlxY~_q z&+1#*`uKT#gK?k_jNilj_hWpxPucBqG9YM0+-Vn?Bxzc^E|BB*U-ai+1B+zP{Rz zz2FtBzY{5|H{(0(MzrU~XTMsv>gR~@c)PK?SYLla^~NrYhk7II+4wsDem$d3xa>JM zHnA7;GIl)g9eS+&uJAm0LTKy8)3;~iYyItcoJRa3I)BFI2Ka#82z#zR+N1jNij>sR zZYPhNoHx}tRPtoa3jH+Y(s1NPA@!hcM+$p2#SU>7Rd#=9Pue$09qv}{c z>O=c{eUJF}ar`X${DwS1)}NP=_2<55q}~0k?WF0zh5Y;TSn@6$A`h~ReStb7?S9|& z)cpPX2lMGK*h`nGo-Cild_0}f{DKR`pW*x1$K&|Eg)T4}!2SF173j}qx1rAr`h(oh zc>bFs`Y}GwOl18TZ8vhC^YsYi`N^NR0(mZCyAgRTlrP?|7%R@9%!B7xtE03 zVZTdeQM+;E@>Ygtkt^-S@qB&h5c>Us&$TJb&m#xejcCt}U-=zNak4*U4eNz=W5@H@R)3DO zvP1JXR+nl1M%Z)XQ(wb-j`f@4hpMj`yNdPow^eWKTBmv=?78tvk7)kU#VMIL?Z%?~ z*{}8-Y7f1!zDo5**mL8{$EZD?=hBu8kKwtc-Pn__kD98BKFSa}Z#Nd`V3V}=^qVk z-bTE);d$PAU*z?Ydf+b+*(23nw|*SS`f7x1RF6D5vYDrE9Ps+vJM=g`Vl?yhbEDx1 z7~k|8?r4j@Xnn~4rt#HndYnH0J3fEeV}-e1*OC3A)Xd&JPW5Pe?G~l3?)19>)Yz7@ Wm0z^Fww1BZRbBrktLAGsmVW^XmM-G} diff --git a/sky130/gds/sky130_fd_sc_hs__or2_2.gds b/sky130/gds/sky130_fd_sc_hs__or2_2.gds deleted file mode 100644 index 0e263e4933af5ad2290abe29458175b2c0cb60af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5454 zcmbuDU5Hgx6vx*+AN!t}xnpLdHO^o?BtZ_P6C!5BIGGuxWSNHI+)5KosTiM3gChE* zhhB=(tf;^TO`={b`mo4)>*FN|gdRi)tdKtNC9(g1uf6U$bMKs!%p4eg_pH7DYpuQZ zI$tABqUb&utVQ)x(k=Z`m#gKf;%{k0Zr6?n#~&EqBhnYAH!pu-$sOMuI=ghmvFqPH zuyLIXrsdkX&h6g0XVDD{o7=WFcW-HK-`#9JIzHSSmLwB#y^%a2Zbl?SGBh(5kVVS=Yfq`I3E--dV6meC!tTz6bM~< zQpZW^(v>->PnU#oka=?4C};5-IwS4wZyhITufLd+<6MUk`AoLneOzzy5PZEX5`SMH z@`;aYK4i~+oL`%h`Njib9AvKX>YTN8I6oy~!!hNA%N80rb^c;0YToe8W#IZ;Qu<*-#D)RYJr$n^tajPXVV>oaOyxj@!ebiAn7`t-5Bs^Pruc{-o$J+5{m#*6x9u|9qu(Q`apVDbUh@-5b6 z{7&ni1Y%y%-->DOSBIXt_&zaOpBN|h%Wpoul=qwUi4ks#`LFf*WXk$mitBgFv=96> zjD8@aCqdYa=#ygn4t=~zbuIp>`q;RtTAzHPdSkj(^+wn$grDl|I>|x-`v69qq;{J^O@ldEFSPqup4g&jwVNoybWY?Zzs-96)^!vwlX@ z?q02*(%UQQr@DB)QT41J_0isHeX>b)X=+p*>qmVUFOBb(sm`4?s*d%eK8%;@vjNp* zCyc6N{iqM)oqFqkyr(2@pnf0awD%Sx#wXM7;`6%xE}mt$-bwC%ikL>)6I>HU+Ibkc zzkF^OY0rKSeE^zYaI*L>F}^&4Kg1;CU$Ks3Ieqv#gjOOanQC&&37ZA>0U{C|;i zAnpFS=Bf4d&v*2jKVT2>C(F;j&$!Fra~t9;$jNv0I%^kL8^bnO|f5m zuEg+ZtbK((-35Ih_cQrI_mk|JsrzeWT)v+gdvO2d{u{e+KhMrV7s&VaI`+oM?}=1ALO|ib5|m_**RGs+Km`5>h*gl+%I`ub>m%-_bX%1BKU*d2z#kM z!@FqhC}JJSiLXVW-H7o@ef*f}jmccq8(}Zi^SguZ{OKhH{(}5zH!d#M^LsM-1G#U{ z8NY`8gx!eo()jhiv~JnKoU9w|#;W?s$C%4r+mbVzgZQu;FmPs_!=9TfFdnGNFImHJZ2kF(>n;-B^{szfRFV?la^N$iAW7Sk*tA$G)N7 z$iAW7Sk*tg&ZAk-BIg!A#c$e;v&z@cd5lZFk#T7^R>hBZqIX}#TwcF{ZUnwyH^N?8 z|N438@Lb3a<>YgQb|c11_3R(shuA+YqW8Vs*r)miT;dzz9&vN{{}^|9O;T}lYna^_ zNJkbtGw;~iGtWw6Fdf|p8;^#6rs(hPey9J~nc!{2dt27wt^ai%`_%)##AL5z{cio5 zQ51{a7_w14@@UJZL*IDb>+fpQD0GY!xb>T={MXxA^t_{L;km|SusJ6ub=;q z&;Q^=3&iz1TpGpIU$i~esx(+Xi{0FiqR__1+ diff --git a/sky130/gds/sky130_fd_sc_hs__or2_4.gds b/sky130/gds/sky130_fd_sc_hs__or2_4.gds deleted file mode 100644 index b307b8fa802d505935a76072a2cfd8ab766081de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7446 zcmbuEYph&V7035H&N*}D%*-9k6?5Ch7dA1mk%}0iji$Y}q5-evRkR>C*rKTQb&DTL zA!4LHF%V-K@Ddf25ESYwMie!TiV=;EPilf6P}9W3en2Cs5o7)T_uBv2XYQS|ZE%vw zZ)UCi-+S$~*WPo^8JD|u`^|1st6lur_1%Ii+>6}v>!01AogaAT+g7e!Ipo}YCwt9~ zPh4=(Pw#*7l{+6k_lv80FL#@=X6=SNKltuLFMIjc<+tx&KDclB`h&~M?^`)<`Fz*y zIhPOH?q-*d+HQ;6GVVC%erWIU3nR06`z)eO_bfNjFM9pFJ3#&1Zglz&@WqkE8}NO> zIkEbWbEA(qC(=H;!TcokqdYSEiuEhPKWqH&bNu1?*3WQrB*z)tZsU<0Z*WT_$E#Ls zJd*xuUnKSYUz(nzzmGhL`8D|d2j~Oclh&WexCh^HPGmdADWacQ^SO=lDNmx^9pKj^ zIc|B6jZZSZvWld?_iyu))c5X<%wC7@rw~sd<19aoH4dbm2Z&&a7r|I{1v&wdA+2!Hl7YeQ0(ofk=Mc24k<&~=|(Bm7;~OCa@~_nV%iy>o4i z(6=u$y(j$bo#rR0Zyk%IzV!w3liUZbFGn(O?N?d;NcuaMM$+H;i}^|VGkg{4&yJd( zq`g3HMf#a%5%JX5dtib2QYS)J@Bc>M z|2UivzGrLCkJP!R_z5o&%TYTYwy)I>hNcs72Kko=dtJX{YJP7)?3~9pYPaO~ZC)ecsxW!{cTb;jinLLw@{zk!g;wrvgqMFeH!x@QKJ>w6e8>u^AkvY z`D)X9qSpD!1G~Sn^%K#)9?#DIbG_H;IkvAeQFSIx*V{=yzH6>m)tQKH>+xUW_1$Nz zf9=%#SJCMbq^*ifMiMwCVcyiKgTFGk?L~n7`_A(+!S@repn4AN-B_;UlIST_>7u_=xE3 zjrzG&(~WnDrkh(8(|Xp);33<8;_ymnVHaU<9G`VUU1xJ7b+n5qJ?n(}EQ_R$b}^-A zolwtf7?C>K#gv|PLS66CNa|=8Q+n13^*ldB>Sz~Jde#YbJikQhXctp@)(Lf^>msS6 zT}#+_$kM#TLdh=Hx{bTkYNdNc=^ZWDI$JJ2(llX1kQ2F^%&v}zRFX&(F}7c?`nL%Fp_@eN2H(m6KUrQT)+Q9{H=ZH^IfQST)T)Z zT>ob`qwm1ZapY(t-hs5YUtoTccHAXTSbP)yS70uI75eUc2sIf{bJ=TLPa4lK>K9cJ&cL98X?4S4DBHQ3^W;I)7|)l$au2@aoDpGf zjGyf|F7+bErCm&o-#%h_>zo_OywNVE^2c_}8}$<+Z{98@^2c_Jn|hIP(=Mjsci8vL z8_!{pd81uS<&W(+F7+bErCm&oU;YHzW6-`g5>HDV?IQe*>&JF{21LEs-C%kV_C|g6 z0LEFu-p4sMAJ=qovG*gi`3CBrt}$pAN(^sockizjdn4$e#1Ml_D7u? z;mi~(oWHb-sq?q|6KaLp+iEdv?cFeoKJ_=;sX%|!Z=Wi&VY4SH)%rSr3Mc5nTuYLgC zzcBxIMDkjWb`kzY{Rn3j^>ZjWkviJNl)n8X==Nj&Z;Z^j7hxCSZydjK%5>d(BB`TY zOzE?WOqV?sNgeHCN}uz2HR9)g0wQ&^izz+#8S5s;{u5a@w2P{r0h-~N+GQ?3oBt=} z&uQT?cfO&8)DJdh+h20zxes6R*N?ivrfhL9Y!F9rbcbDUA>Xrv&FWWUN{=|!M6*sm__){aUZcm;D9mQPeli<>m5uSGzw*+l z@y}Qv;=gcd=ae2#qyG2!{vU)nmoMa4n)>X|Se<|PnW_g{vFu*GCUa*rc7M0jJ3{0I H*meH}(Nlt! diff --git a/sky130/gds/sky130_fd_sc_hs__or2b_1.gds b/sky130/gds/sky130_fd_sc_hs__or2b_1.gds deleted file mode 100644 index 3ee01733452dd39ed54345d0d6cafa7b909e1a49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6072 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 aUHk~=uDjlQ3fU7}UEyQwvz%Q5L-QZ;wwJR2 diff --git a/sky130/gds/sky130_fd_sc_hs__or2b_4.gds b/sky130/gds/sky130_fd_sc_hs__or2b_4.gds deleted file mode 100644 index f9948ed61118ef1b7b358f6bf148dce03249adc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10298 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 OJId0}JeF*dxc>n^7`5^M diff --git a/sky130/gds/sky130_fd_sc_hs__or3_1.gds b/sky130/gds/sky130_fd_sc_hs__or3_1.gds deleted file mode 100644 index 7f7cb7f4981775f7bea2cb52ddd89473028b20e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5396 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 Xne$T`HLBwqPe)z(GOfk~G6>9n0&3Vi diff --git a/sky130/gds/sky130_fd_sc_hs__or3_4.gds b/sky130/gds/sky130_fd_sc_hs__or3_4.gds deleted file mode 100644 index a6e8b06cf41454d4a2872b8f70bc2bf72983a650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9566 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 diff --git a/sky130/gds/sky130_fd_sc_hs__or3b_1.gds b/sky130/gds/sky130_fd_sc_hs__or3b_1.gds deleted file mode 100644 index ea7e3820c76fe7dd2b97a460682b01653bd9ef17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7346 zcmbuEX^0#}6vu0N`kL;U$*N0a%_@TWDT^j3h{Pk=!~=~n@ix(nS3D!i2E`b~1LJ{y z@c7^nFYvxm6oWzWzza`2(Fmdv6bw;3!Grk!*Q+kt04*Sxj6-Lq!# zk!Cn5*AB<=inCYF+RZR7)1}5VKPYemu3yHrV{>a?lKPe> z{Wf1WMrnQ$KT6!+FP`O$C*NNB$*%THjx{E`&=@6sHNFv_B<+olJn1Jp6FG2X9PC$F z;{SU3PrsFZ(vLmqFWp!Ck@T1D<{80HvI_k>h7X`UK*AjvM|!KoLt6W5p48E=68-nf zkF8g-pZHB?c-q|G?rH!szWUjo;q&PGP55(UJgk{AT8Or1agSsC3bgQ}EQ!a~E5Nvu ze~by1dvc!CK1Do^Y_Gi`?PUBbuD9_FkH$6Tnv!v`UnTU#d@ObIcRuSi1-G?c!Y_Q3 z3H;U%g+Jv5=$rGyF}_%IO6ZFHUu63qaO+FDwto00{h8nR3m+xAFRZWGy?WM%IwjVy z{U~8C>gTxejc|Mh>mWS{vv?Oo15EuiBZb^3n&@6GYGu}QM-`8%GBD|}SqBN;dEQ{w(&e<#>{>3(Q7 zZ{9r0d@C`}P;Y*O)?U<0y#`rt(b#$MqTD|PY`r9QCEAPnj;q&~Iv?ZvkdFhPS7JSd zZ{gZ8!CDDVM1CAoOrGEq)YmcDgt4B1c4cbAH;H42@v&W5|5@~1Vy>`%&KZ*X4gGid z9{N5V*UFpV`*U0?Vds2hJBe`=$2;$T&hH6&xUhb@)ODpqD24U4(fT*#>r>a268#qS zi>yAJw0>@J{EfempAppi{sKS6^N4ok$T)}T1>Q`_G&Iu#XzU5WNeJ@ZC= zm&hCS%)ezt{#xsx#eMB%p21~U^RO$?Uh1Fs)sb)NyTp35cIEi}S?0gpZxA2%sod>X zmN4nOx3uj=|2=yDTRanX*IuR+9p@kYyY^B&>)d=?){nAv479K- zVK3FQ&eYX+@uZG+WtE1siR$4rDvU~x9=p5)X}c2(zDLgbKg}`N4v60&pK1b z{a;BP?aC@W>r7p9wI_A7E35RZGxgkml+@9#?5iI%*W2?Y_aCf(`{BCBxz4V8u>Kh4 z#S5Oa$Ja?a89an@#3!C?&zzoQd-FC=w%hZwrTVp;IKKwXa*0pI#rQZL>XjUCGnICd z&%X@kH6_~_zcSqeV#KASogc8Df1C$V$B!^Kd*2`N{z5z7V_bWwK3RpijPn=Y@09t$ zh!J)r?4^3V?c4KlaDpfO(yr_|56k{MXy!Bib`83-gbCi&n@_{HV~+D_8?{%~mLj)v zkuyitf&JpUgZ)Px%#Xi?`Q3==Vf5!nd;X)elYHl7?UeTW0n86&{cz+H=Ts%*NH3Lm zNZO;XJ=q@KBJHHc0rrd6&ZqiQ7(d>R`M#^<`Ga;P`wehDR&pKG6Z|-G{;*xi{86v$ z`@Za+w>*>b+}}c9%5*BOVOPRlj9OXHI z?oAl$T2FqbLAw&|mHNhf(RcZ~=o`xU)q2KF|4PP9|H`WPqbCvfSD1sxd8XH5Ucs(J zdujZI_NU^#(AyFXOIipm07ue z-pA)B^-6v(M7t99()eqqK#TK8(DLN>zO*ZQ&LiWVKlZ*qMISlxdoJ3Quv`C4nDAUW z!o*Yg|B86qnu$!jUCp3e)1ukaSMRWP(GORd=5RE+7&d;IdgjC5*--5M^-=6?w(V`! zgx-d3dyZ`o|p`!8SCLW6Cj350LsZ*>^QTL2}i`B_5^gUU1W7+>vXP-@0 v&HpzRH9{CzApJ9bE23b%6y=Z zy%35%L_T^zNzlU{_OL9m!uk;Qr3lKP4XIrz3w@8=AM&G19yJ+u66!< zt-bf!`<#7DWPJZN)9v}?pG<7JOxavy&d+`~i60HDTRC{g;09wlgYcT!k6n4g=P#eQ zs{g>$7j`dMXu89EZFdw6t=}+x#iev|(`=&N-)czw@}(uLfT+v>%q!_m$^4SK^Mj0&>`ci#>Qf~jl77ZfB3?G16>h!U$nhG3ai|~0Kl~}9O_&d~ z-z4h2ejk1-;iry%r_Z+kplyGwThF#-xsG3Xy}{VoKPAdBvz~j0>)Chel-M)upAz=0 zezxo1GWM_j9meq-)DtvKVtk|fWqd6$-~My>?HFUt8LUTTd78ANL_6)`+41bS5uI5C z{n3;@^!}IlIC_H^--|I{%5ROK&U1u5+x~LfAKf3#nKNgwH;!pi=79sk`7mP7>Sa7T zIUl06^L9wC9|P78i(LtSR^M>r2|e3KzrK?BP)09_T?ugxwZ*Re(^y81z7 zv7Ymsyw3Sg$$K^JO89f*bDpUWrlh2fc4d*?J}*Mg{fF(4)X}ai(sQ1vv(F@s)X}ai z(sQ1v=l-Fjj&@~{p7Tr{_YEa=v@47BoM-Bi?J23FU0I~(JX7DXCM9*WE8FTj%?`PL zO5I?_ZM_ENl)(hd>s$CZ+Vyn1_#-e#Fiwc2q`!87_{jkKa59jRetVy^)VMkI*=Yv! z{?7jKkNu%uNqYskDdW|c_f?n+N7{pL#81-hKb}(C1xMC*r?Jm#rArZGE$%IN)=-wa zQJ;7YSK71C8?fK6S}@{E?e zh<-ZOa6j(Ay-DePin+&pD+64|XJRGo)yu_C((dwUm+x!L*TdPT`XSokUhT-|2G*F8 z^T2znlFu1cDh|2=d#n*2U_4+~!e6MbJ|%i(e6{G6u;=Podu8lVoLeRL6xx-r=j!X&8~pL8Q`A6{ zAEAC|SB@{%2lt9zS(+qzCG5HJYlDb`a~#j-O>*pMS5C{A@a6%WkLSD zj(JnBWZtwZi}Ei|MBJGed%S;W@<;rpT{$y9f3J$`SU>wy2B;s}mGI||AJ?siTIYRE z>0>R>u7o{TUwRk1eW)M2k5S_NrJ-F3d!e4=M!k~bM!m9V{3^(k@5n01Um5k{H|$E- zbK{3cp~HQV?;Vs;2fo9uggsXuUnp^7wu3xK#-&|Z6hFZ}NL}6agQSjjWs#oyD)aVM zrDWc;D~s~yJ{e=}bN_7egzTTO(%o+pG>J3$Ehd`4_ruXd&x9tLggcl?CWpP3Z9nh8 zf?prTQVjc+z{bBspJDJl?uy*2W;>d$wO-rWtP!ns?d0DsX`#Fo`i-X26)l?Ahr$?# zPm3OT49jMOK6%vY=MU54G>P7f)Hi#>9x%S@7vJ0x|E%>c|Lf-Ux9D-2{O|asH<80B z6Lm#gTAALTmD;|~9ksfG)fsJL?AfD;O|@h`8g)EhV-K6Pv+B2fU%rjAKBqCy<&Nc5 HDw%%)81?1m diff --git a/sky130/gds/sky130_fd_sc_hs__or3b_4.gds b/sky130/gds/sky130_fd_sc_hs__or3b_4.gds deleted file mode 100644 index 89f536806110d09af0cadc444114c20c1d6737d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10324 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 diff --git a/sky130/gds/sky130_fd_sc_hs__or4_1.gds b/sky130/gds/sky130_fd_sc_hs__or4_1.gds deleted file mode 100644 index 895376972f73ca4b7ebae86714d22e26cffcf036..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6160 zcmbuDYlu}<6vy|y_ndw2IrrR}Vz5Ssm?G&zQz->KEE&hif(FSlHD80zUP3YxiK$S5 zRw5x%kxfJ&GNXqS5lK*pWd%Jx^r1c|L52_}BE3Pv{{Owsy8GOjdrmSQnEBni*7>is z_TKC4bIvu^l*@}ucd1CzRp@)aB8=7u{nlZLfHd~B6uWWiv zZ%4%#^NIW=D?P(b`K-h_!3CzN?|1r6vzhwxZex-QL3~zLml;#~!x*Lg9^dKKPz4i0B{4BuDb zdrIbyzmfbT?J@eYN$BINL{G9W<4--!Da5-MJ)4q#=2aqpw!YUgMi2flH$0S< zy?Yb#DLLLp@LjoCbT%b)+4zsS_#Nr>C81p&m!k*&|4fZav{&Z(>Km(18j??mYuFu1 z*t7as>G+m%e95B-z5u5`$ScU z`Hpy2-$1<2FsDkyPjFr}CC<;rTjuK5{mGm;bEco;SE5$TI}f3=XZ13Fot%HsxOMtb z&ToK?18J<3@MrZy>HN9tnf+m3L;W{ocu;D$%H!~Tfxnd1xtOcxaZXCwOPJp#q2ob4 zkKkKbUnTNo>lrx5ei)}`PL7L*qxPW^C1v{Ygv)R8`&s)?iLhDyJf{yPte@R7{!z>u z=CX8ahPXc%+LgU6`CIe>_ATneFhl5^U0I;#K1n_I!zQ6~c4dLSei(i63i^MmXYF=e zE3hl!&(2><{X8$~5Pg#$i9S+x6zk(BMX#)5JdCS^JvYCdA>-!W%<(&7+|I6S9l!LS zyB^tb$USyH`&;adlw3O3`!us4s6S)(1;O7lumF zas8-I{ki$=4AI$RO3`uss89X5`q~uH)eb2|$MvH=_2=rN)1r&_C`HHhqdxWL>g$I^ zmuyvvj_XH#>L0J~H12t;wiY%1hCh(&&qK-eZ}dnXkhI64r|Q6V@!j)gum%B92U)?s zYWqCh_;!gu0_l(OoT8+kd4)1QW0YbyBc8#7=);eZE2ZWI+tv3rpO4}%? zH2g~BZC5{@r;uk0&f9_b+dcW5OuG{PTs_~fs1MKgq>grFk-qvbbaT+B3p}Z#T?v1? z{I36!OJ%)CzC+dLdvd;#uVmiH66XicvP!OVs&5zH&5ypnwY;C9KH6Dd>d)%seLB5A zvB#r+{9%ooJR#Rir0j1Q-#9(jntCP2$hb<_bMr?>v9@?_jk(6ke-Mv$<=lLIfPI9z za8HKNIlHnzUy7hRi8+7Y)4h|!u7p3gez#uxuugb?)uqH$Tsd@O(sllOKpaQr3(0>>KKp z>>I{a7WGf*V$^*SbAQmYhVj#`gg>`_o)-;@zRABtA1Mcm^{kuum8_d_l|}VepObZ~ z&Gh8D(XK37zsfJ@{Uhl2U7q|ch;}9Xx#O=bh3*B+f%UX~m^;{&@aO7d?$4_+)+;>i zd6*0C≠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 BiB|vs diff --git a/sky130/gds/sky130_fd_sc_hs__or4b_4.gds b/sky130/gds/sky130_fd_sc_hs__or4b_4.gds deleted file mode 100644 index 19abd557e726628344c9fff8c02c6f3feb53ad83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12512 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 ko{5|VJ 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 bmtWjhyMC<7o;K(9s^*RP(`{U&i$(W8ISDx| diff --git a/sky130/gds/sky130_fd_sc_hs__sdfbbn_1.gds b/sky130/gds/sky130_fd_sc_hs__sdfbbn_1.gds deleted file mode 100644 index a25d421c17ee09283033ea7e5661d82e3f76fe8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24580 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sdfbbp_1.gds b/sky130/gds/sky130_fd_sc_hs__sdfbbp_1.gds deleted file mode 100644 index 772be29bcb268c01240a623efe8c866cd0b84801..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23670 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sdfrbp_1.gds b/sky130/gds/sky130_fd_sc_hs__sdfrbp_1.gds deleted file mode 100644 index ee3743a93aceb70b511d1fd3bff1c8dd1cde5688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21900 zcmbuH3zVHzb;rN^zVpgFGLy+?(&FCJRIcHC8K5OdS%~MmG&pzjp zGcTH28b#S+6y@vE(N$4?Mmidfh8r?b6g_VLjo%ZPYqo!jI49c};#ax&=4cJ$^RwYN zFN$)T19M&Y_W*33neX7=ABiF{wbJ55#8+y6him_fQB>T8^X~|(ZNhOjibVQzZKp)tyi1sV#yLvQz81>y9MNJqZvE~m^)c7L$ z=t+Cyv*vfie6Gj5;Cv>tPr?64Am@D(=9ifJOB_Q-M0=I;xsl`D_D!_=FHtmmO<>_- z9CO}y7Ez1Yi_w42nx#?H`f23rNqg%J<|i4~nhwk_gw7FY-;?7;T@m_~@^kg-xDs(M zM^XFMKsRD>b{u2lNix5V7Xq`3qX=70ByyfH4>4)J z_3T8yKNLkhI|7+s&n(N2bpApaSD=0D-+9k0`r5q*`ktI;b1z0hp1JL44>}^+t5m-= ztY0tN`460rc_Ol%dEM3?nLR3s=6@nEgL4@tBCbOFDYw2CU~Jf*`5z3d{y!XFg+0r& z7JGTi9a!I!H_1F^jRe-BZf(aQUr+XXu42siZs7PXxE7xstH4VGYaT*-FQHzZ^s{}j_*ESDAb-!o z`PPnz^D2yYboO=L59Tj{AL~_QKNn&hi@6`* z7@vV6&!esg-AeiGU_FN3g1lagqQTDwQh)F=(q$LL?)lW~jRY4N19uP7tphp{#oPqGff7$1@K8oI~oMbbX>$w1a= zxW?*5=C;9qN?_(q)Z=*UC!Va+;7_bxWCnAcx+3?f#Tavu=P$v+e4h#=qqo9UO6w;{HS&l*h03_aAQl4?c-;Ks^VLSBY2?-Phn) zguiRb{Eo0Uc)uh3_1;ewt~P&(_gj2HgrDux?+82f>34*kdC~9ltCasR*DwES>#YA` z-T# zahGVijH76SGWuNCE~^6J1ky=Jwe~{ZkP})Z??<)>$f?3Y<%Mu%e$#Bka^QCCgtC_#dMqc zMAKzF^}RnWA(eXnQr$)Aa!XMlk|BW_YKC2+&5?!llG6UZI*ZUglKs)p80!! zZ2oh%Sl&H-fy|qBF)9DKTTHj7Pc&V|Q{Vez_2*5R?)+RJb!iuq^yf{Q?);o+x{Rm3 z_s8n@t}xx+y@AxFT};yNU17StdqvY_JoUXlR)0ae=`Pq6NL|{+B>e^Lrn_L5Xu6E2 zzW2xK^FAK!NB!FasY|<V>Gp3IO_%Z1_x@P@fjy?n`)B4sQkQlyNuTF&-7rq% zx}jZ6T0aAOEbqasqUFta=I{Nn`48>1yoWahGH=?&r2L0=n(pu>(R3M4eeaLeU$o71 z7f%FImv%8pf6+G6T|6P0F5{{1{jvH>wwUfnUm$g97nAgtY%$%DKGAd;Pkrx?)n7Vk zy32Bb)TLca(qB4hy32B+=`x=B-XE(!y25lv_Xbjzb}>nRbcN}T?iEd!@znSJSpD&K z(;eRxNL|{+B>nMr(;eR>nl9t1@BN4BH%IRI1Ls`<&uWHm3aokz^Y%g9dwAC1oWb|u zUci&~emut#^_)+vYC!yt;rHb88_q{D{VLjf7WcNEDfow5a1ZX8UXABT&=QefrTpFV zw=wKFY?sfM#G21x+~*))&(zcA7u|Cm#EFQj)c%cpzQN~Qd_K1D!ocdU+w*rZzXzWa z7eL>$>I&@JyU>5n>}^rhw-xu&p6Qnm{{Z^unYtC{FG2r3GymnEuX#ehQhx6F%K-Y8 zM;xD{itafQ>>}*3@p(L_%?#q)u|W6!7IqQ-O7ZUflY1YF=ZV>FwBcEUXGzg!)Zdfi znnHcV4Bq$heY;4Vl-DDRcz)*I&wA>;tO%V-`MCMO`)@v{FJSCMz7J2I2AgN@-_iag za`1HTZ4oCP^!(nQH#OVyKD}=};C(8dzq$9Zp1Hf@^Q%LRIPYuE3`~6yx!@V8$nnUo zwecXM{n!f-CnCO5|J{6;@eKOe;qPZXIS*(T;g5~4zY5xS;{9k}pnIYH?dx1?t0uO{4S7l*1fOw z%)gBL%J*SDcxLX!`KKZuPv+BekL5%1Jt}oX=v2zbjc3=g;e9jqW|8&phD~HYJ5gVepL={?F48_5^Fyq<5dN9)duIL){yh5Y$^J54q)rFw zC}#IrULx|U(En5|^IyIZlksF+XZ$>n-)9JEIq{5RHVL5HEYjX|hWW|r zkD&j^MWnwS>rbpc8{><$D$+i8$oypfA?ZM@s-+l>zVIGdEN-FXGH4JF2Y_RKGnhT=6$o?lZ*Ub4ZklTW=FBVtU-RBoX6c? zviVG=e{cJhNPo+)`N_-^IR0%Q+nwEF?URLz%`X;Dz~|F^(2w z@^g~!eM@`+*Rz;6MNht~nR^+|7g^8UIQHas{kku}`Qnw>Klb5RguUZ+^OJmE&gYS0 z9<^@A94ird&1T-71)Mtzdx}VV%O3MP-i+&q5gdCKT5)}GE6(?1UJV$-5|LN^<>iUPk&a(7q@0;h&iO7RI^-|9Nsg@mYsRd;MnfJN_f~ z8?1+{2!GdW=68Gs^*Qtz4IeaE?{*fFv+Qp>tE4iGE4mDsnwWY_;9 zexc#6|3%ni^JhHg9q%7R&O6%0r1>{G4}Hb_AN{v7V%|Hum@xmB9)&tzi|2Je3*^|* zF2Wz1KkJmkXCdn+^0yYWi?GMW*WxqUUDwYFtT_qo!7jodAOB_4AJ->!8v=RXQwzHY ze{B4W+n|eeQ-5?I*A4Ar()!_fTsMptxqe)`o=NLx#^){X`u7AfZ`#GA{OhrQ@;av; z`=?k$Eom2FkL^GAN!FkHr^vd~E+*BV`y}T*_fL`Yo^~;5{x5mE#VvUyka4t&N%8gH z$GmHf-1qTHluNl|*d@kM68OZ0~w2Sb^ z=06M9{pr*2Jg+t|gSA7u2!DJ$u2ZW%X3s;#YUIx6iz4i?@!aRRZn^)9T(`7~N$Yp% zI^;cq=M&hgN_-LfKked3yngEm80X88|C@n@9vs6i!XKOeZ0g|p0ozrHyl$XfOuBxU zeIe@i6yniXhXW%+ARf0xAPl_JNHcCq5`hy3%W{v7iE6`q%) zjv}Ai&@RFrn}7d&?6Y6P`QHrWK0vz&e|-F>Y~LJM8OVLJA9gWm{~UZfbYI5v)mH)w ze~n|(@#-?Zj_X(2#dpNV^FD#&#QO)4`#0?(?6La%+~W1)80L(~>qgqe zr0YlCr}Dao_pc(aduSJvu78Ffv$#dbf$=2cXcv>>7yWtUen++FwLretqg}-Bn_~OF zXg${LI=o-W24Xrzw2Mjik35gpsf;gihsE>zAl@IVzof_dz2w*RKT)6W%NQ>fH&~nqdwKln_Ws1aPq2I=?){%Y!SE;YdnakGYfnC3%3px? zJ!!A%Ha}VXTl9T<8KGbM5{^B2{*3$VeA0byVrd}#vwmWJvhZ#+_l!Cr#=M1Bt-hf(SZ{zzqM||F8H{sYbh0h~CQ!8;V z<^$#qKc5{RwRTgUXup!ad%xFkhxNN@0z->Uy7V3Y*$44mGp09|3>gR!+9`#OBt~?2d=}hh<^5;Z2fhF zy%%FgKgoV~|8HRaY1ps9y!Pa?=tW(qhi75LbVcY_%FliOVPvk2^P>8|=qvX90FnLV zc_QXTYwN>q;|SEL?g`r)MD82)``tcaJQwwzz_B(B}UPJuve-Hfq zD&`fs)`;i#5X*C&C`9&ui>F&gc8u62E8H-g$92K0Z5Xas2%+;~f#_>|#PZ zzq7$O{(iSa#5uc|5YOK^W>F{pep2LhH0>hnvHj=oOsUJ?ua*d1XBQLnc^=1~@gm2a zb}?!E*-zeou>U2#ZvE%yhxfW9M{A2N~ zJL5}4-5JmEb4;i|{hYUq7ddZf7n9~M&*Qvhe2M6fvx|QI*5VZGX(vYcS^WRkKfzqk(n>#y9Z^|0};wrr2AZOfPbXLzojzP**My%mSF*LFMq z?yxr6@tGWLiHdFcb;qwlSNVB#Ks+)zD4#>(Yd_}V-*ZqrJ`d2JL*q;RVIKyeU-(Ug zKAbRd;>1Z)(`kc!P!6Y@a6ljaq#Vj>aP0B^ow~09*2Ew0!;og|5Laxf zB2swNDufDEQ>|D)>Q>_d+PLDv(^k}gq8P1$mfA<_V^sS8o%g)=+zI#ls_8t>Jiqzg z_j}L(J?}Z+`L=r}t7YZ#GqZW6a{ZyKGaJn6*+@3r{CCz}u3h@P3opCivMaJ|psjl1 z$#2?l+UMW*=%#HSUwzBIbI#7@Rr6yP)M}T%;EFZtCU#wX(XPv%v+KE+@7i_wMHgRo z;fr^z&9X{+meqR7*{iZzZ#f&w#`@c`Ec>+mZn`kBI$(c0wNGVQir*UI2eK20ul4G8 zEX&IOo>=)omQ`P&fXGsZ?dR0~t=hZC+iO3l_{Xx$**#s`&&x7ru%8qC@M7to)kMXY zx0xRjSGp~c_|nbhhxI$P{bz}7S8DscS>`0~@@Cm0EB*TWu=*ESpJ)AZs{K~|yN3R? zuT_4imlkbLVsiTG>3H$Nn<_F!V$-+nreLRQ#aEJd*yfpHus{ z%Kw$*-~AQkaiX}siORQIIgvM{KV8=)V()sL`C;`IZEIdQ(WN~nc66N5Yn9KXpkD}Ao=usIgxyN4wxUJ+k0jr^Ne<#YQL3!sK@lzsIG^zY`VtAiQcsD zm>$GFP5o(5$8_Jx+K#OJi~M(MzC~t_s=a4qnG-uYPPNl2pD_Oi?^C;%W!apqiOiEZ ztJI&!_IGQ0q52=$rM}L7lg1R{7k-{8>1uc3+xh z^FPx>>CL~x^dR}npPNWN^Sh#7tbb42I&Phnf0h1IG+vS9H&4f}v+{&2TX2>9k@c8| zQ~9*YH`H&@wW`}Ivuu&(gR^T*mJR_8|QnIWMtIbB#Es;##$TF6|$uwWj?)#MOyi z&rTe|erB|Cj@U7DOskS5Qe`@VGwSNn}QaFB=^{Y;5cgYz|R2`Rayhe8Z#{AB1 z^T2mMRRqQj%jDN>O6RY^dmd(*Y;^TCq%ZtK-=F}JtKo% zIXH=1e3QjP>azIOMDoV&tbR`8ai#K&q(9W%srt7VpDfJ(6{p&`F8e_fHU7&q2bl+u zd9h4$&Kc}l|D4PN;+^O&*Y%VWJ33CyqgMHZ^dlG7 zt$L;T11Ga=d{Enw)N{Pk>Itd$*k2^#AKPtySUo}Y`elSh?GLd}yfYF18qGf^{4@*aV8qu27;C7v-&(^k6etz(0*<+7Awl&K(4?Basx&1Rk z`;~YjU;Rp7V!=DXmt2usKh#$zp@w4)7J5E>J+{8`F?{(UC>R4Q`%lv_|_eX!A z{C&|6>#sF`ga2spb*KEak3Ud$^zjGEPG0z9ey#E!WB%~d-DCZB_WY08ow66itIl1q z-hqnMScjj$;BSsUC62G@?~}grE@>>CJz6_6*`2Z%#H;;ViFYdYX%=q`_T2dL9@A}G znusoTXOVt+kLk88b(%i$=tqC9er2cWR;!8VVs{qlS9Y3iwdyoo;?a-(T>aV>)8!ba z{t#X4&LaKV7SpXAcA75n=tqC9e*2K=hI>WnhkG&UV@E&w3*t?;{h-ryi9^4ADA;r3 zJC2xs=l(==u{(?U-*LorJNG+Hmw5D}KUcr&km+{sO+**Fvq-<|km+{sb(${m=tqC9 ze$N5Z?cJS-E_P>;e$N5Z?cMD(UEkAC#$>d)9|x?KND zC)@|1i``kIKVzrq4pg0{OFa6~pQ}G}i|NihoQN)VXOaHQEv7s3u+wyjM?d;=^=A*6 z?(Bn!=wf#k>CYZA-Ps47rb|5f(Vwe7=ZNVJ?oUJ)yR%4t&Joic-0w79;?a-(T>ZI+ zOm}E+BD&a}Mf!6OneNbDr|A-pe)Q++&pTkc^LHnri``kIKktC)&fo1cUENH*A(U1OI{dHSRcirJcbg?^&^w(`M-F1hZrb|5f(Vwfoe#ms!A526SyR%4t{gCOd zKj<`F;?a-(T>Z%-rn_N(BD&a}Mf#IROn1Y6r|A-pe)Q++Z#-nWoAxH6i``kIzwwai zZrbZKUESSN*z=p(d_9L-skKJG&dT5GzEgIm?5*O%^W)BO-J|K5SLsuUUGJ5) zp2ImyFPHy?`i%_l*?C^4XU0{rHYT6+oE`nj=OMKh8Q#lE$0@y5`Gn_P{(hEsKfI@f zJV!3iOXRsO&xD=TGxTizcI6Uz)caa{-V*EO?^~z5PgVQjeQad)mi+vBv`^b98f)d? zEd7JDPgV^gu~+mw(3w4^xu7_w?5+AAo(J{nxg`Ax_j8f-AG=fj+<4xjR&G+fo-aE6 zy{c38R`J*HJdF1=JV%^yMPmK)x)1w_@``N#OSP}(pHA|f{&mY6@*Z^B`b3@+_g|-a zM3(gYblUe+ugL0J({)O}MSi7A$#3(p9apMmIKH5cudIAYV&?~>t@jsB{N1DGhn*KG z_N9sVr(a-x$Y&8|=$V=m|B%k{&Q7&GPtUWR*cblZ{IGVft~-C7h=2K@`62o%FHOWh zuDR=^o~ur^dP3|IzfG*aR?o{9$RCOSc#V&f_{nt^53z65^HC@MO&>Eq#7C_x@w*AcXoW$`wqd~oUAm0w>Ty1|$+mZEe=)Us~z0LXy*?*qK z!^wNp@V-1!d9}(v9M6k&4(a@y_P;BU<7e?kJAPngtJ+_g7(OrYO!>724T){A&ZFMvPB~wO`y0*mvDa(=Nakg@zloH+MSZg{zT--xxs0%#^sixjSLwLo^FJ%}j@8NWL4TZ`Iz~n} zY5qmBF0oEK`P{VIf|Qf>2|@_5ZRC++io)k!<}o#8#E;+%?W(S9kk zzj;^#@id)JKABi~zMXHJ;W}D1cVb_!x#PsXc9;2KMe8v4KTiCsUT%I^o~`kCRU-Zs zI!2vb2QODUPV5Uc{?5{kS`Ve+#6CmojFY^kUu*e6?0r`ya$VP}{hj!k3r_6iMdpXt z!%v`H=ZE*Rx7vAE{ucGM^TXtiZCrSN%=kdY4ZBnJ=J;LqezqL0?-`$(_Mg!D+~9LG zUw@@-=V$GBs71C<)BL_t>ycA`kLqvE_krKm^^4Y!_Q;OctKKK*c!|Wm^oiyVe4mcz zZ))3lqK^NsYCDp5Wy4yt8~lRCOF7pf>%Z3asak&`+b_`geM|AqZmq{J(RL)~(V=$j zA4$LFJYDTY);DW?{-OMl*k|5r{y=F@o6vS-U1Qk)cI_WYUHX?v&#AifeOlYjk6JC- zBRMaUn-hCg>q~=*D=S~(1Jy1+w9ilFYs%%GMAmU?=fvNq1+l?9l;6$TcFI4j{@@S% zlFpa!*0xjj5!DwzYm-I&(D2U+t-_TzqYYE*A~Rz zWp!hXq>hlfwaM-*s$b;_)2%LPqI84ZS)gBewe`EYJdu85cNX=Zdj{qW_v;O+?!oRX zs6XdK`d!udJLxxeXHoy_Iu5xnsedOCZR}3@bH|TsMDCBcS8;arN?UfP?78vW^Kf0v zy;+05(>8YJSq1UylRp*P-ny7U**qsIIZ=cRv%=(BLIn~pWE z7oA+EhU>*h*$d-2ZxHV!Z{nRr`A`3l#_ewuzcaDxB*n|_ls{L0#%EObt8~BlyhNVc zVt2})8$WP@^?Tq)iS!@4v#9^kf8j(fTus<5zQM zHpg#dc#b2xQ}*2c&w7{EDjkEfcO>%c3AGq*`4}aZGQZJscx_5a|wyO1DP+oQ~uoe1)8Vz zvlOrS+n~;y!R{mj#?9N5``onM2xT{`^PHf_RY7e_}JU^cA>G0jn#VZoqWW(;1Kezvj?y|Zqetsf# z!|p7qANx@^;+@njv>RDeKlY<;#5btA1-rALek0qJw~pTtorjzpx7eLU$M48(s?)c1 zf2K9lSZeoHqiZ=L&={xGrq6m84yls`ZILLFy^^}Mb-vHaJHm)$9UZv65y zOn3Qj64Ax(EYe@DYm|~|x8hleW%UQUQ~rGYhgIhfEB@_?UFRuYcBlNg@w~U;x@T1D zpOfnz?9QU=pV2pI-0#rymUW4p=cql|o$}}Ej~=vskG&|7eq(nQ^?$6Ud9qdd%AvtW zw2j@lHD7=H7UlT?J&!vzk^3&}&Z7G-_UkBFe1o@Ie224CtWVv;`>{ysPP@*c`j3BA zbG6WxjQ8@scp|Ln(eXW|?DgvIl`Ir?+QA3yyk-buf) zJB#|i`eRx*6gzQ26F;hW?9T3j{%b$3+lY5^-A25#==yEVh}CV4&ezltQa9|*qWZBP z?+J)&@W&S4;hg$Be9H4D;(4z}yp!i{*qyTH)_=`z)oEDItNWVxWyNE64j0Fl?y-1h z`DGUGls#8}o#rleTc^3|q;A-qMfGF9j;$8o;3F2#ckQFUP`~~|i+8qPYjIB5^W#ra zoyyw(r%n8zwy`_Q#qrEL;+@Pp;+;kF@AxO`I^`mJU+&~{5!juw=jOkDlhu9wLy6QK zyR)eN8$V^o?WRi-Ic~8#i;iD(I=ZAM{RTf``aDC4{@ncgA5@)p=>GTWChA@!*quA_ z`@iwCR`*SpCQ^6o&Z7FWANS3~JGpPf?ku{0q)zmk`ZcJ22fMSYAb-Vk+z{_%+=zD; zjUV-8-KG9c#tpl(aQrT|eoyKgK>s2A4)4Pvi~7%VX5x7M>?9t$vnU=NjvI8Hj2m`m z(fF-@s~tbQSLFB!?-zCaVCVRW{@nS;=jy0CpVxCzckIrh`m-P7PJDwJ_h5Gxj6eG^ zZp1qoH|)-%#_v3PpH^zTPwTlW3qMXiFICcgm6Oj!agXoB&iA^UtdpIm$>uy)&;Nd+ z?MU|Pz18-I;d54N67kPC)BJ%q>iNfg+IGr6>pSL$JTIMdej@R6W4@68{la~?@wzMAc(dzw`sL|F|mH;0tv<@nvm0<=;GP ze%N!@l;ini8xMOwn!Q1_f3uE-rzEzmR^zfe$tuq z^1oiNJLS*S?|-j!_55Sz;za&W0d}YS`SJgxahp)Q#>R_Y1zLxp=*v z$J~|Jb(@~Y+^zUX{IgzSe%SsqJ?~JQQ~p-%pUdYP#@?Yi>iAmnXcKjwnWdcDBFm?1 z{;ksb6PbNj^KZUt7)gC-$Eo&O>D`1L-^-@oM+ZI;>ru$heR1xABMB_jSK= zb0T#h&Z#=KYJZG+9REAZYts#h)CapWXMTkE^~0t^JbIA)usdaM);}p8pJDtrf0yG| zpLy7t$Z@|=^S!|tsxRx2bBor4-)h^*dZ2dL-`bm^cV*D)kL!WT#Lwp80OK$1@5cAC zmHIUOwyQ~f*ZriUkwnU_)l~E(fMniW_|lSQ`Be7xW43j)D8YZ+t{5`uP>*>^Eu7RC$xTT zPvklSyHoyL{qi2G8}GBJBcyKFok!JgiazT;aeN=$NgQ@(Q9S)5j{ZA|!|p7K=X=Xs zJMewz2DKIiyL0OMfhqa3AG*Xl(Z%j8(ht{1iVxREk;H}TqsXFozBj|T^L?BKHSWRg zEEs?GWBiGCGVa)&MdQzY)Q$KCRkvVw#`<+@7tQUnvf3>EKVfZlDXV6+xh2i-?xE^Q zqk9*8{LF{{N+0#FZapU+7u`+ANcUi^@y`y!e2nd#6x!SJxb_Bb;OE9Hv@yS5E$+$M z2WwA1T}$KR`yAL&;$Mio2YlF3IQ!DrfMfW|b8P!JxPkHib z#}HrsMyR0T&pKuMF~nEy`2WSzdyU{R>vvCR`oGTNkEMRZyZ*7nZ#W~wYxK@MhU%^U iMi_hb{>)vvY-~P${-Dt(-bVk}@~^#9-A{@;B=&N;e5XD!w* z=iB?+|8IYLpMB2R=Uk#fl*xQN>aNQapO4B>B`QV(QE%8dw`x$VJhN+fmt*<&*EXa>t{h zsQp14iztu&#>z?l$96^d=h}k)p-#WU^bdF(I=iCifcpX)C*im=ibPk=;8~BnDT?NA z56mA9`w;X!qhI0}?TYY=(|?KmU-*Xz45^-bX<%U{j+dZ)&*B+YugZ6Dd{z_{JsIbM z?_0bi?Q@R}tiKb-<548C{@4RnpQL^4jzH>;jhQ~levCaCnEi~!Tjlf6|Boojda^$I zC8B?E{lAX=AN``~j($3j@r}G}@sW&gzAW<&1Am6LeNY(d=t$hWI*bi|0hfGix*Y*&ap1{~buZVdP(AJj2iwogMuabKkahM6?&D=f-E&6&TkyqiE=q zz})wuXz&%xSI^=}IQ|Ldnahv&jf$T@$*Q`Gz$G7js z8e%+p`*7?@o!*tEM`n)1@y`NTP8|{L#l>?g$9u-dtlgf!4lMm3ih3q+K6!FndXBR3 zAsO#|g6s)<2T=)+cHR|JJGIPjcO9y+1JbEwl$65qgR7G~bMI z#@ID&4=nA#@gVZ!$#@#Cw|Gd}8?UV4Jk+0qW6!#FYft2T26aT}#l_>+??$e>ABv)e zs{^T5#`z;Mo-*dY={uJuv(e~EB z>^983mvBAsWV@^$eu(U6={D;xNqY(Bp~&ki+YuAi zBRBtwxXo7@ zc@4=Sc3vCA?AZ&)j4mXCaXN$zEXnA=w{Z!>jDYxxEs{BFZz% zt(>HP9nLS2es#B7xg-4Q{>=PIUiUJXPhuW(fqG)`a~7wF_GNPUvJw2Nu_ zg{7uj*d>}S{i*NE6ZK17rpt4l`XqH}7t{1hU8Y;wA(}4zsqf1Z_3L+=Zh1=}b!ivV z^y_zohU!JJnzS?v<@`2Q)T};z&Uv0V_ zdC_#~PkmpWs6TnB=}z7iNL|{+H2uj-O?UDx(RArgeP5oa-`QolojU@lOS_n+-`Qol zojXL+r9bt3d7}Q*-KJaF5=dRz#Wek?yG^&UMKoRdQ{R^->QCEgx?P(BsY|<2_@rO_%=E_vMND-P=re`no{s(k`aycW*P@>FY$(r9bt3d7?g_!_j^;V?2<$w2Nu_ ztjBeW{#9b#a&|Fg{p#6lanBeREpGZVeqWv#fA2<%yKgX%anmlQ#oxQpbo&NH)1^Q4 zeR-n(%+;pbpAV!i?P8k#%+;pbpBGJ+{?zy7iTVReO?O~dAa!XM)AR?Hn(n|Z(RArg zeP5oaKh$NqLpuVgOS_n+Kh$NqLpwy%r9bt3d7}RCZquE$C6Kzbi)s49yG?i27SVL+ zPkmpWs6TtB>CV{{NL|{+H2v8-O?S>F(RArgeP5oaKeEkqN7n^Xmv%8tpY?d&(!WZa zx6Ur6oWCR6Ebh^DqQy;r#_!7$;~(2>ar1o&;&ks-7&q-=TKr?1O?U3NXu9;LzAsPI zpSRI;=MM%_mv%8tf8IvZoj)j=F8!(R%M22HxAA)Bo&m8tH%6H(|(lhf8_M`5?v#yA}o`&DYu_xab(O=A9zh^4;48+`Fh`$Z( zd1kP;)$$9Jd)C)kKSlH>E+1|`B6kqh0qm!6e@rZW1Z~4E!XD>;9rMY3zWQ6SpKxv< z^A}xY`6JyP)DwZZX~-Y<*F3qe#{D!ghrMmKCzgJNSWrjgy5;s4J)s{L--#~1U)w$x z-|2F{i=;pIzeKms)`|9ekwehc!&r#fZO}tIBJ6Q`E}xt$`8P1PF}`9+bI23+IR6!l zw+VZp*&~oUjEPwHb+q*ya^lH(llwek^^EqIp9sIW_Fa5UXj}WxNm(H<({;6 zj9EEZcP9FS^-g4Y%TKMGq@8<+BFnRXVdW(Eh%;vdvfTYS+B)d=6S00RS%Z?};`(pz zds)tPmVYAF+bFZx)?6fA0llETpU#u_SeJS!H(mwlKD<{h*VEn!l$nv?!vB-YS`%9F2 z($4W0Iqx_>MB10Ev2qf5i<@8W{5s$+jN{3;4!s=6^^kTE<#GNiI6oJbabDbn>-g?K z`py5c`IBs)kG_0j`qHRIpkUQx27W|tk1VH9)7pO>&zUCuUPyz?!%8p{yiDrP|@Ne3-@Du z+X9PUh5i`odvcu^Zm{)&}*9J1Kos{yDx?7HC*k_edXCVVav_dI*n4o!vz*L-1Lqgw6?y+NbP4pttr*`~IQGn8 z?U?li_={*~&QGj8$3Mq>`3R0Zv$x@TQGvgRcIRGe?URgy^G?LPtDT?r{j1)`Vs4ia zFP~S$hGUUj*hSb={rP>Qdwvp;7y9#=!!hoA#u|N|NA#}}eWzbWT%4@W`$~Q*k;Qmb z`3!t%7l+dQ^Us>USim_&e-ZY?{%1BJZ+F0dUZ8sxhFwH?vi~F2Z$8hl|BmQ)hITQf z|G9rd?tYHBc1>XBPcineizrXj=QWtm>AZG}e9os`ggx2+Y4rO`@V_*$;b8c~E}}fq zpXYFKIsRK;!&lHA?c(xee_k7?&$UFPF70BPe(96Q(@MzG{8v{fsY9)NlA0>fD0= z-U@8Qc+f7QJkg(ZGLujjV^!tj=9>{GCHuSmDXc%utr$N~t~+l3$}?^KVLh%t^sf@@ zjrc~d$Q$z1d{|)dEAWS1M0sNWS&#RX^cOh}u3b;q6aAZSj@<7QxL?NKE0BDS zrd@9-Li_`~8N$eze^M-Ou5=d_*Ac6KEGvo~YkGV0mxHHIw-# znRnX7wEVXpgt)O*w!aw2wUl-d<;nWrw{h#ZB9PdT^vra4+@1Dl4RP&oc5(0h(7o>8x^X|xz31-dYxuu7rd`~7KXGsWe?;70^7~bu4OmOM zVHeY`pFPJx2YujuZ>|n&^T+EPe>cSIUzHEp^{-w` zxqllt+44SE3S{1C7t`|3ddxfhMdshN>zS5+)??o3UnTPH>|#p(2hYH|^#eTLwgvKc zN3@G5Pt4y?uf;v|oj}GoIQnSBbctT}+98XqDxCxGs=+r(I0T|IouWZ-&J8_;?@ce&x4WGn*5A9+lIe)XUR+f(O``Y5$IHp}ZCfR?^a_je;R|45@ z+Qqc~&$$x)z90J&a{}=Tc! zb}{YxF^2oD{4DIB4A<~kv`4!*D_NiQIREJ{a^BM}rp^DkYmui(c;C=e!^hDc?PALF z(_E}^zK0svK;f<`HP(Qw2Nu;pX-0!4{iMyGno6di?Aogzi8a@ zw&>MB=8bkSEr0X>%i>?~#X!bQyOy*t!k2zz4u3$Six=EEP?@hbln z$Fz&{Q~dGV&gbR@j|KAic>(NV+VeB>%yHxOS7g6w7vI(YlWl*$&h76nS%YWw?UDNv zx$jr^7W6&&yDq*@7HQ`_x5&MxBKj&8HzJl6*u;~dF%QR{r6Qj1F*ilFGxd0DkK}u% z%8vqB-t}E8CwZPsKe~oPxL#k4V^7w1@8vw}&&GQEew+`UET4a)wdeRvF5{%`w{)brp{qKRUL9Ve@aW7lUo(MPCMcCu~ zSMdEx^9qdf4cKp59N37wbL|&d&i2H5%q{wfu*bFU-fy-c-#Ls)OHW`H&sMp65uaz> zO=zzH@q1FMp1`BJ%Tu< z;QYh-Bj%4nfByjMnP+Yh`a6jDJu}zi`St~@kDhfncY8~S-!ty5k?;Si zM1QHv{(Akm_^SD1p6741{*wGof%z0UuFRkKuKphE&({^~?}0cEnzq}yF7iC@Jjc#= z$JcTH{|=5tl+%y(%zv+Ze!{iin*96By?FY9D=ekn1l09N(~iSM#uU|6g+X!!0kzM}M{c>bHnGwf(o>XZrs0J5=7s z@cULVb0v;p7vFV1vyXok^Napf;@qNtR*d^TrAD9MozP#*pJx6d?5XkdyGZ(1$^Jl} zzfW@e97jPLaoOk}j*_WJq!MY6-YtLM_7R#m^%iq%0$fll0kN(BgQDb-hP_*R! zT)X;rrBMAJZPm7Su#0VJdTd=-|D%mjsZu!pNZiWp>yKWg^^N|Gf9(8^dY3=eHsoes z|7w4j8@{_MTopA|3dfAE96xqqf7+;xVU^$S@HzdRVyMZ%VMqG+&E6mD+i&l~;tQ}o zjzon@0XOEg8T_5SaR>Y!yz?#Z#T(gw58B1o-ivqry7%H;er|ug+n&K0*%Fm2g=H%a zpEz B2d)4B diff --git a/sky130/gds/sky130_fd_sc_hs__sdfrtp_1.gds b/sky130/gds/sky130_fd_sc_hs__sdfrtp_1.gds deleted file mode 100644 index 8a64287a56b61b9f714a25e3f49f6912ffe5bde4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20632 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 X(0gYcquToZSk=nCA-0bE#bWY*o{wUl diff --git a/sky130/gds/sky130_fd_sc_hs__sdfrtp_4.gds b/sky130/gds/sky130_fd_sc_hs__sdfrtp_4.gds deleted file mode 100644 index 7d0d42805f76fced4658d67bd58d64e92e598fa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21380 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sdfsbp_1.gds b/sky130/gds/sky130_fd_sc_hs__sdfsbp_1.gds deleted file mode 100644 index b022ed82baa270e50f47f5b78dbc0e746da37b24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21582 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 U`9HoFdhXM0BdeK?pJk34#WtELIF!w@|56 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sdfstp_1.gds b/sky130/gds/sky130_fd_sc_hs__sdfstp_1.gds deleted file mode 100644 index 53ae4cc251733706965a2104486e336d7ff9eb11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20846 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sdfstp_2.gds b/sky130/gds/sky130_fd_sc_hs__sdfstp_2.gds deleted file mode 100644 index feab0b89b217ed6d6aec72f5910733fe5de851a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21784 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sdfstp_4.gds b/sky130/gds/sky130_fd_sc_hs__sdfstp_4.gds deleted file mode 100644 index e9c99ff634ca7fc01efc83046ffe83018893fc97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23098 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 Lt=Gk?R7(CIP}#S1 diff --git a/sky130/gds/sky130_fd_sc_hs__sdfxbp_1.gds b/sky130/gds/sky130_fd_sc_hs__sdfxbp_1.gds deleted file mode 100644 index 49d28f19ddb393ab9fd67c1ebe4469d043f9aa27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19098 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 SJ{14d+sKJ}{BTexxc>z!aXPmE diff --git a/sky130/gds/sky130_fd_sc_hs__sdfxbp_2.gds b/sky130/gds/sky130_fd_sc_hs__sdfxbp_2.gds deleted file mode 100644 index 62b236439ab16e5df9a36992d57c67f5a0b8ae95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19818 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 Hj#Bb}xVX}K diff --git a/sky130/gds/sky130_fd_sc_hs__sdfxtp_1.gds b/sky130/gds/sky130_fd_sc_hs__sdfxtp_1.gds deleted file mode 100644 index 0a217efb1070715c5701ba3af6a08de92d15fcb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16784 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 diff --git a/sky130/gds/sky130_fd_sc_hs__sdfxtp_2.gds b/sky130/gds/sky130_fd_sc_hs__sdfxtp_2.gds deleted file mode 100644 index 706f5397df757c49fa8d57ba9d0ec7ae29f510b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17176 zcmbuG3zS_|dB^vCKW8$N%p;R|WG0!JWFAR?R4oRZKnU`%7>E!hKo*ejP#%$3Ehbv9 z4G5)5wY0@SQ88j$Edr}cFhHpq7M4~ks|7Ju)6!TFN@<0@f~Nof{`UXwo8+Do#aV0C z@1F15|GmHc-sjwNUD0K;Z+8QkZ0Q+Sb$zbnM%{4pXIIY_FTd={+`8%F-+a%O zjmJ2bFFRLk%eoJ^Vtdw2yXlUcbM9gLU%DW&&}E-Rq{(+i{Rv**<-Sk-lH-x-J`e?n z_1Vr%-|n19`}FUb-?QDhso%o22>;X;^OMv~elL>x$;Zv_3EkowOi$*&0sp;`?j_`R zGU^aWKg$(qU$W5rB<-w+i1J$1_h#025%MXGfFF#kJ?Y%|v(Ab1k3VgGviLW+UKUw+ zgL7l3kH~n&FR*yX{AX~zJF@U0D_2DRt>W9x_{LVE+;=-SdPQVqGp^5fPGp=5AG3H# z+7~_$S$Y)LPeC8Z_?VwqTx8{lD6dsKzP%RwE9#B%=HC}tx(V0FqrsozdM>U5+5bbR zvq<~UR`Yv8KXjSt$>J*K7Mu~uI9aZU@>|7sF57Ft1nS-4+{pSSqCG}1e%LM~+iMu( zOQe1HPVML?_gALQ{+f$%T7DJ!dm>q%-p^Wn zNY=Nv9!Y->`baEY=v?=A&_98NbDZmhU*vk(`6AjQkok4K-SQ*7{gfu6f7|!tI*{w& zEcB_!e(kv4`j@1A&bK1j9$lNPJxKa{E{Wv&$9jvXf2;PsobA*7?^e(5y^)N+`&5gc zWIJ@Ph%7&gc>V(I8CXP`t^+79uzaTFD?;C@{Ov5ieH6M|oNJqGBHFR7AJ>75r@q7D zA!)C_w~5f#P-o^tvi<7lE3t5rl_Mfut9X2SRKJgUVeD0*Y49Vs#vW1*tnIP35NWS` z%={$FtuBr%%-|aNipaNB`F{MDF&^{i>k`+ez})X3Z;Vfo`7@n}bgl9`m+i}RjIaFh zNXE^zN2I^>qWL{h{}RS6>rWOjMwpL?^sUPC{aL&YniEl1tT!U_FR)z$SuXoR^!Cuc z+@tfKhyS!l*0bH(8OZ#ZPDHv^`8~+? z%)i;{k^j|5)+2}Z5m}!s+CZc|^XKL#X?I_bWL}v+LEeGv=M2^xk#S`)zeU=!SWiWc zlgvAy4=nwU#VMk^=K7p(=gG`lSf8bPG1neJ-uM%X+mZhi+BmQ@j<)JU`-vCg^BeIW zSYD6u{eP%WAa(TzP49_1x1WG(5&k)UWPY+z#CkCpNqx_A<|ixju%2BNN&h_T=OWJm z17nCMkoF;rACdd=@L$0nSXqkm1Nu>9I-bA8(np;eI}hmti$BJBknxI0&vs+_(0tE-`e;dvv z`LoeKcSq)WAin|QCy@II(}_smD!+66dX0Xp-Gctb_z>#@$p80Y3#?%*GJmoBG(MxP z#L`hV9z^8Rs=R4m9?t)atMkrC)~6kI5&l+sU;jDX7H7xLA{pnbwH7bQIG9dMh{x{_ zybocyqnMu}+i?NLaD#vB-0XXB9hi9;ipaNBeSG& z$80Z>X_#)=rz}0$_K4X<_?z_`Z9Zjh)_Pg|9O7LBz4$e|Uo47yaXkuuU}?5<o^8T&&Rm3BH4CAkg>p-5j=X?g~1KCd1 zm#n?W@~`6>>qCQVn=j#7ya4;n&A1lFupc4za$soy*RO*nkoDl7==Z@}F`mAKF$U(g z;J*|}dja#LLB!4S@`1SJc%Xpr0EUrcPm+mz`iS}$BpC|s3`^8~;wk6BqpXV#~Ibpwg!IzIm zKAa!=Yu0O@5|O4k{xiHj|C;ryo9mz5hIYj|mqY(Fi1zk&@#KTbKSgqmt$dDC>NtKy>S!0!^t{)i z&Oa{*q>gqmP0x8wJ?Fnj9qnS8e%6fXI@Ux|N4uD&@7!j(*<+E^(JrRx=WH-tS0R!* z+Ql?IpYy=)y7xs=N4uD&@9j5T@9s$IXcyD;bN8FBZ)YTRw2Nu_d3#LPzax@5+Ql^e zz%J7bZjPjmb}>yqG-JB?Ya*$mT};ytZ!_JPhNo7t{0;drUXEBa%AW#WX$l8J5fa zOQeo=F-^Z@#&k>9L{dk)n5K6#*kAsP`-h0V<1E`hjNYEO{${tCE;lBcp8E&&!Jnwl zZ!leM15ty>8d+L({cZx zKKK*$wLPY*?+{JL{e$}8Pt>>VGF|&-(RAEDs1N=`{j3?&b*vFh$Nhu);7`ME#r%rt2z*rsMuWeefshyH}X5d!J}J?jO_#f1g=|u5YJkI_@9T2Y;e|-X7ES?+{JL{e$}8Pt*_WGTq>2(RAEDs1N=`{m_i*=C2V= z$Nhu);7`;KZ!_Jp*T()syUgODw*OK7?I_JyD;36UzBK(&G82Sb7~k!!E*}sOK}w z0{Z%(?`JQ@n1a0=2!AWRZ?7plqvSjxYk1B%jkXqPpT;;5Gv_1SGPF@3`*rHuh&538 zfUU~Ao%4HY40UbCx%h7*YnNhOy9(t7R`7Z8LewEJkNL;5d`~F~1b^8e>^x ze2Y+jk#?5X;5RG|zIPDfX%+8w#@lnA&3}^LzxwxF#4p%$Qvcozo|p1{h@Ou|W-$i4 zZ^f7m%zY8p_hC#0vYmM@5V_8T@)G0eI2!%>EZ(mG`M%vOtWP4J$F_YO`3GiB#W*|# z?GVWCbL!8*ADF)#`dMg~z|yCnucMxUDhF&8&kJlHey?9W4$se#kI4FTSFBzn$6_be z0g>NZ&%v`Pk?q0nQAM`bY>Y>d_3PMU^(2{3{isNOr(O9E)FY7nUUc;K_4nf=^AOVBi2u(<@;w8+cR-eYh`OO)MAq9Ku=@BQuDNYoS=X0-sTii1J#+y$$|FKI>Y9 z`7ZMPLB5A5@*aliMaIo@mB@A<{yS@TQgMJS;>`?j{O~=f-1{+)eh|quc>Z?e6IfV_ zd@=t-K9^m9f3fr^-n+y66a9N}%r*5Wf!+`CgQNFD!(OX^zL<9}dr_{dwRbRo{Lw$qjOXgb}T}-S0=pE2uK8>9cS(}UV2<#&KiT%&_N~>r)-e-ul zIk<*hggsH;Gh(`)$0MnuT};!@dIITQkM$1gYlC}n4xn9peRBD2=c4~!#CaEMt60W) zf_4%1#Q2N1qTiN7yRwP@h`CR@xI9^3V>==K8rrWx#O>{3O8i-@>nuNaK@(A~w~Hy| z^S!r9H`Z?K7Y$-gc)Qr096!@lx0+t84VqqrJ+b|`&hQ;Pu3sX4A>!8`5%yF)-vgjt z=?|FV|5cA&K z#gzHqwGriBX7@)T*KOLxwDsGcGrxrM=F@1y!18)Ke~Pdt#y|L7v=hb)e=j5QISB0{ z?1_4RKMQ@&O4F0n(JrRxXaAe&c)!Q;{e2(wv{N7aiRE`ZWaFmul1Ppl+Qqc-!*pCX zs290z&@QH}AMPoXi+P&4E;4(qbF_=_C&tg;v2pxQPed|q+Qqc^3pXIn|H6DZI3BaveSgb=6})ee~-4lGcx}{^abo9{E6k4f{yS0F&~mT+Ql?IegUxrs+A==RK@{4L*$fLE6QX`@hL4(@p+E z6QT2VF-1QgXAk!O@NJRociP3Y{vTO}cJ9G>?dc{yf@|8vp5*o$U4wReAI^&?Pvq}+ zX%}HnY=6E-U3dcL*NI5J&rQ1sf1=)>(=dN{e#-{>=ecMP5%xqq&*`~gv^UQ04dN{8 z?c#87E@!t$8&O^lD@TvuQ5%BwcM^Ea;8via(b7hSsfqIaR0 zJMka#TIFL~aae2z<<*P+a@$Fn#^QUcdGbJ>ES<+Z?WMv<;u} zvV7^+pLtOHKes-_|K`)fZ{DxOn5U!(s^;@t_ z{=#~`2M>L*uZWHE7gkr-s`PcMU#q_K6RZ7e(NClH&?EXYUPJU$44$_$HA$_iRY7y$_g26;spA%ud2S0Y6W zV3mf21x2JP5I`u6K#8>?C>o?e8?DO%TGU0GwQPN4sYMDEQE7Cg|Ns8>|L!}6}ehMNvnt z@aCgGeE139xc{Xij(KeAo^5BH8ub;DwF7ay`J$^1IdppV{PSivub;hO^X%;A^Ui)qbSOkq9|_8M%P5~ylgZPO|<5sD0;$vr?Y{D4*R!=d-82Tzsl)5GFMYSHHbv_ zg7X8b`1gvdqe!HG#l_}#JUfaeXK^jUKY6nGN$MuP5=i~TL*{pcZu~COJHkKyQS+13 zkNqx?`mtY_-x2!JJ*IbrfAn9>Pf|bn$AQ$3F7tjcdI{HG4P-ryk42G4|M)KRleAAf z7fAo)CFUpTUvYgP{ZoDBC+TNBi-@N|dqj`3J(m4Aii+<7pABrQa}&!m z{3JTw(?}2XE|xR6?v5gn@htt2#Y57*baP8Q+q7QEy)WuM1@UOWtewlZf;ct}xoi6`tQ4UNM zi?;^GFXH;oke+7|V`1?bXb;b7a}+K58v3^-z*)HVjL(E0X^FX?Al{#& zo;+E9OAv>McpAmKhVd@yw{rDA8<<~&{7`0*=?v_*^hnyN6HzaX(s%Pw-%iB+*HP4W zVjWSwzBgO>NS3?zfk2kK_jdC;Lcfsp;TgXb`eBsclkqVh5%)EU$Muh%AEBK;6-7P& z8d$~n=s6PkdpiH5_k)FdqNw{Lff@9lo~2PF=1;>l(iNd^kbkDi`tDvAMJ2RV*X}^( z*Y!oqk7OKOivyh><6JC`L{U5XvB-IQKKwOeew?4hwI}D#Hp~Yi?QNJNYJ|R}V0x1C zTFWN`S+A`Vk*i;l{?@nE@t-Z8f+y>xqhj?##vikCizt7C`iYKY{dA!n3nxcWC+AsD zrq}tfrAOvtyHCV@jnZ@N-H9|=Zwr1M$ogG?GKd#Y56wzAljCu8cfI##2FTBJIpaOc;-@ zy-VLi+)pEx;{!R*moP7gOqchGY4d;SR^0ne{Gz^VMEoVxH_Jh?d_`a1B<)4ica6|9 z9_mT1mrPfLy;1$%#Qqy!iC?U-oSQ|a%eoMmf8h~}gQUH%J&?Kr<{h!{Ib5HBUr*LU z0rQPWJM$HxYZTw(j4%JF<&*zRAmhomT0A7<$vzxNe-`6Wq(Az)`N{mH7@H3U<}ijc z-$na*GR`dOSEN1rviZqE0r#W6#L|?HQ{3IKJg)!b*P)I66zQRz#KJ2`8!?K^m-mUd zufBfH_WS1v*3a}Vj7|LVM~tsV`s1i$PwuaBpGSUT7yb=@(X;e^)D8S%5p`L49)3@z z(~fo!%kRegvJzv;llD&3i&(~d*L@ZIp0qFgg!xIP+t(XN|G<&vCyP&Fy~h4RjL|kr z{teOnXu~h2VLtyH zb)cU60qR8D<9-9%l``P-@d=U~p4fTyNE9N>O$2b$Yp71^q_a&w`?@-LWAA=sT zi)Dcvzlw~Lb`kbOeaq37Py1*fj zvFS$a@33x(Rg9yB6KHSGrt7hPI2?Y@@{i&FH0s;4wA#`W%WKeo5t~?i!1ApT?K6$I z*gj-h`;1`DVL5r9$abM!JfMBv<@%qV-=qEe_pf6A6>Z$G19SXD=C7|m>;D}bKc?Y* zhg@s-lg&OY5&nApto8q_+iy(og6?neJa=y$zlQkHzOiSq5B0Sd_2EhTl1I(&_)T1+ zPGisFcQBuP4)=>+!u4Bl?MZzf2DHd}=YGD%U*H;ZbkUP@WA~*tM>_r<*D3g#Ll^-D z{hr0OxJKF{%gG;+`|<&~U+u>HlM~_Zxyk%weig1?sUy`9XTtHS^(*Bg*1_M1+Fwr}gBQE`J>Ha6Zycyh&VMAcyJj@BOi}2USKS$4f zPds6Js~UfRv}hM6lJ(_%rmt+TBXrI#zJ{J-je4Pa2#Vw#@MVbt@PL8Oj$F-^~Y zLLK{$NFD8Bn!ag|>8e`;siR#?({r3LUyeVKI@-lFeakk}wax@mN4uD&Z`)$J`NM(K z(JrRx+t-<{qYy|P?P8jq&n56j3-$(5N4uD&@9H%j&%2loNgeHCn!bCV>3X&YQb)U( zreCxsiR#?)AL-BarbWsq>gqmO+T>Bbc<#JsiR#?(=Xm)y20T<>S!0!^h?&6 zZfPNqI@-lF{m@F&aleTB+`f@I+Ql^eNU!Neb_Y^NyO^e5w$F6Sw+B*3yO^fu`y|Fa zwl$DC+Ql^e_)gPJYzU-|b}>yqxy^JdW&)|BT};z+on!o5|3vC&7t{37Hmpw%as3go z_PoQ^AEUFUtUsp94U4Ad`a^woOS(S4&UA%>XgaPx)O&wo{_#rF#d}55as8p*`xEu0 zUelF!i>BlHL%sJW>dX5~SJ^I_j_VKg-k+#%+GD!vR?&1^f2jBVM1Av4)6Lr;nvUxa z_1>STZ`o$L))~=sTz{zd{zQG-7Sqii7EQ=jMN^@n=zPtST zAKhcRv8|%%xc*S@{fYYVou-@EAexTr5B1)ksGrA3z-@BNATsV%0P9u`f< z^@n=zKUm+9sXc#l-Qo||tLa^VZaq8EuWMlG!$=R$>>~XW-!ebR_c7zo1k%6!dGnKe zKfL_tK>CMqb|aSm1pTFqIop%=-gC`QHZ8+=><*+~`){)HcbG3H1L?1SuAsltV}6o; zz9ScTzLotx;`gMTKVV}0Wl<*9GnvC7NA8D#v{!C1Kbadt>^BC|&*v7AXId>d#}jGq z;d?vJ>=`IO&dfyGm!e+9?7yQv4};&6_GM@nF}Dl-xgGg?(msxJE;0KJwCDdo?@2q` zTcmyZMDvrhv%eUv|GD$ihhXCm{Jwq~)StZ%;CrbY#tO-2VD}!+ll2w%TYWkD`*44w z^jv?gej9Cir$3MJ^3&J4w9Ki=!(yid%(2mPPt zj-IT;_Mch&B;SX(zp0LWIEP)0Yfru(=X-RK@6-7nU8KGP{Z?f9zJ40ipPk3$k)Pgk zihNH>y9j%tp6{{QPL-zuOXnjd*u?|hpWAs_N94}eTfU6?!ueJ62Ldx^qx}yto)rfkpIto)3ub`wQeFBELrExyhYxVhl8K%#H_^Fm~MgYw?}P z>sI`F@;$cRYm@x0Cc5Ck$+-*OK}eGzFT9zC}F(?nLq6! z-}4WC9_f2BU4Abm=2zhU!_mf`#h=2Dek?ZSp}!5~_bh$X(if3$gZMI4)?XR@Ci@r0 z!dsBWm59re?;DC+;S*!@nU%QqWWCcbR!}WGr>XIi=-*3m?b&pP^?$MaOWgkq(i4$S z+wGPg8E>-jC1%&!_!9ZOP3wz@*OPHp2Tf0Mo+@LUika)}UNP&-4K}DB>+cJ`i8$~c zkYwClQ-S5DFH@BH!GseHgj@oZ%O8Ten6?>=MsS?I4r z{+`9V`FsJtr~B^f-w@BwVFxSMV17m)68X&tzw;B7F4!plJDLB;3#g9{WAR}yi~Kw} z9+sgzqWiwL2kB#cO@h?XFLIt=wgBb#f^WXtNnR?$7ZzGCFr;Pflb{Q=dg?LC+hpq_O4%kJdpjBb`kzWz1#op zz&`3K=sh{^X%}Hn)pMUpz1VcB=|$KR^=^OtQ`>iQ{^h=#^DONm?5X-n#dI}3V)}|$ zN!BmC0QHPHx_5pc=Q`R&_!IM=T8nna95nTZ!0gSqhFyd|Q9u4$=+GA@?hWL(O|*;f zC+e5?K!VFC@R)o`hY5JyFkkcF%XHf3bY1)xQXPqJHR1^z(0F9>QEARyJcEf?b3? zQQvtO?wiHBg*ixUD&rb<5%xrV%YGX-tq%rr+|Vwjjh_nE3ywR^Wg>O7i)s31?&;89 z`R-CI9f51uMc5PLk1yq z){NLOZ;pK_kn<+(V%q%4`^rtGuMutM>|#@L{Jf9-j`@r1ceIOX{cq&$h!cCnk>A&G z2d-%sv&s4MKCau;*Z7F(xqf?pV*QUDk9tS{bNe$-_B-0ewEoBYxb9Fda^0a_Ok024 zeir$1pUXH%=1aSnmOt-fzSN1#*X@rz)AC<@H|qHVcwRj&usn+AS=hz2{U7gRy;EN! z>fPDJl>O6U^qVa9PJ`#v@p0&B7w0FpfBy>Hhxw-exj@c+w2Sa3w!eGcd%&Ipvz|Hh zDcVKY6ZP}?{BSd#gI@^bx<|X1w*Jk(6>%e9o?D5`mv%8Nf1Z!A-?U-8iR?GDi)sCb z_p#qlFS7s8E~fRL!Zmo#!d@d@78pN>f5R@qpICoI%+);q;Qxh<@+vVoLw#IRXEUh35w~ z?y~cPoYbKgsSjhMHoFN=Qu#F0hIt!)eOgDk*j64C+nltz z-;Id2M5Uhiw3Ajf(xX%dlRYu($tgqD#&s>?m^rydlPW-Q1@8duA zq+{mj@owz3^XK3F=I&zrYgfcVFLdUn?keEJDS(LOMNxP#S2H(pBD&P1R&Pam9*rNl)Hg z;F8|Fo9$-z7o2nV+IPl+$Wqh(FQQCwz_s-YyuRtqr+)loRC*8C=-_teTCd_durUqS zr#dHk`?0}KLf=ANV(}(iKa7BZ?pcc?qFib|V}s6>zwO*uF|vNEbE9WCC(=JUX?`;4 zb#C~Y$lP-0Mn34ASbPxWUqn8Er7xj=#1Thdq6X|b0WqvaG4z7=iWWO|bV9WwbhdDQWf8-aKLwlw_WbGl7*DNm)^>@qPkMF=O z7H8nv$ol=x4WMlz^XY%V{GRB~zN>K^$bRd;(E5*Lo&&>?^fQi#`nu(_mi^gxyK`0a zY2S^J%%iVn`H=MY?u@J);#|+)oD*}%tM~Khk3jYV>lLBz55(I#Rl5Za}M$ktYgmgT#Oij)iJaaUy*jUTSWW2^pEWaJ!QoGg{^h5JZ`bX z`W)1?4&Ol9>nEbm0;#Lbw|dCZY0#e)$#G*G5#>|!DWadsm|F#mf1B8w3V*dh?4S8J~5DjGMc`{GQ0)J%;PR z66SdBhv<($YV)78I!M|XM?`&{`J52;|HYioGf{PNzH@`vm)b;o`Y`|49#8oBq2IY( zyLO@M%r?Efv;Gsq`QZ0I*57j;#(zZEJN5HJ|IOz3xUZqThoJK3BI{S0U4*}z-j8n?^PqUNl^65- z!*&4XNTB;V=E_kh6PP<2V*{NCUAOu_#r&!tx4o*ocVzuK)VB*`7+6LemJ_kJb*pbJ z>zlTp<=cmLGhfoL&3AY38uZ1q-;eeLR=yv%a5DBO^hGw<@kmAyS2y9 z*RhqBH_I`9lH*9b2z#gA)=Sg*`8xAn?i04hh+LIlnBi}FJTI4#0&aY>$pHly% zt*4yT?@$hV=jfk0ct7e}jB9Z@?pMymbzu2Fh<^s!A6PjaIlh897+A*ou3Zg(VDejB z?+d+%daDmw{hr*r*W+4*zj%@P$@1N}9_!#U=*u~{7UAcI<@hOL%y{05h363u^@z0h zebxM)Kezj}q6q)+#pd^fedNEm7U7>6;*iL@bNm*)&HZix*w$zp%6Y<6AH;-^09L9m)Nhb`k#0_ zW6k(t9qWYgMc7m056#8+qCEGXHnHz`yEr>tUtD4BE|ntv`31X})qc0h;^rngh`8P^ zPK|H#r>XJ7-cjeg5uw$*@$~l2_V1?0-oN{K{SxZHrzdc?^V-Hwzo$2${-0pIPKXd5 zg)iD=^!Cp9Q}p=_rYp=6O_$#wX6uV9Ojjz2rsKFUe(n6$uC`e;U3I6Jt*>u0U1OtYy81RTTi>(AbiJ!Z)Aei-v-N$OOxHgl znyzn?n5`e!V7h6uMAHpy5VQ4zD@@lciKZJ|A!h4`=9+G3yJ$MDf6kxaPaXf^mg$DK zil!TGiQb;7AK7WT(aoaiMs|wX`mt@MYi$%wH?~d8){k#7-Hg?u>9~Kg{lTA_Ki7HV zr(FM$J;y)`y9j@(p6i_Y!mLQ@Xcx2eT<6qt{}rjDUCh#Rom0nW2O@Q}i&=WEbLuKv zBdMcZ%+hn6Q(xO0NgeHCmY(aJ`o_jc>S!0U^jzoE_pXklj&?Ci&vj0H|3oBpw2N7K zu5;?A&5ERsb}>uObxwV=6iFTJVwRrkoO+)BB6YNjS$eK>>V~&QQb)U(rRO@Qespsr zb+n6FdaiToTN@*(qg~9>bDdMq`zMh)+QqK=rhCNyUgv!W&VT>mxsUsNf9`|DldvzW zi}dI5JIr4M`Fn}ax}fX><06b^tY~!q~G6P zdn#|wJ@=<}`>bD3tM3o$*)Jsft94dnrGfbPZ7I?}yvF=weGvIS8cBbD7(cRlDcXBg zB>m-&n4YYyLVxXuq(66$`N_&sB!zw#>E{RR);|CHaC{+RpbyD9exJ>_DKd8=?6{W~ z*`MPtS$~q!f!*q#&H2&9?@s?*9x=q^1+$B=r|Nkw@Oc;acahJ*Xcu8m)w>Iztzi!B z9qFGd!Y;z!P5&74r!J4&NzUi|!;z&sP$!;|i2VIhz`7CHpUhk2@0r?%;1A^UY5qnL z%O{v$WIf4etUi+MD4Y|?^-(z-IRzFl|EdS0Od!XNeo^fJyR~;M+gpDPb>JCB9b+Ui zzn+6EPm=FB`k#p8dyK{{=$Ak~i>*%}ufW3fRSq4Otj|}^iv@H)#uDl78CRv*0{*`4SfF~ z@;O0m6a0b9w+CxaMYpM{te0MUKb75*rti`7y4@a=ralo>X37xBSm%{v!t<-?=!yu%5*7DY$+S z;}OVpJC1oM@;xj4V(xy_gE1AEkAF@WnA~Y`M8rwWr;MDqFH{#t@;NyBR^*wZ_bmRs zOBK0duS^09zryvYm>(j>AemwFh2%cKI3nV8=40=R!|&s!&Y5+gDl8 z5&lel?Z>7UITxuHVNcZ;>&P4W;x8kqqg~9>^FE00%UXv<;x97%eUb=&YJBRsPf{;( zefs;WK-g3D<9KJm`22edk#T7kv*NQH<5Dj&KJ8*weBLMKr{TQ7-qz;bxTam4mYzS$ zF)sBY?RVcnzce6QN(R$S9Aw$k;y7w6wbR9=a!Ovg3sBK)cG$I(~R&p0rW zI@-n8(^s)qP~Rr@66&jBJv%=4AL>Q!JJgF=`_I7Nk@q<6LoV(h?peHDoO(Yx<@{v1 z$`;d$Rm=(6Mc7mOkL7B|nO>|HO)tWpsvo%s@iG3R`*slH?(Jg6__G|(ZR*?HVS1k5 z!JitxfpePYUIXX1$a9Z&G3)&E_j`|{z5m1d2`pTO>m^u!fv~5>_xJHXz*zqq`oO~B zxSoJM5cX7kvJU02f0c(Lxo^=fX6;{<>#=U1K-=-VM$BK1v4CBKJvDx78TP(aIKN(v zeb}$s#9Z)paY=go;ir*z6Z7<&9lRI6OK2CH>G}%#iSNOy=s&T9?VolL_SE** zu0pwAW4_IeOjcsXf+GOXqm|*VGF2bIw?|TY*w7>t#4x-)OE@rf!=Tu>h zonKit2zzRLu5;cubN!3FZ>C*@Jyp;9L_SC0{bQSV;hJ_aykBjgOYqKknM)J z9KDvG>zuCz2fT9|TxB#lddUJLIDqdIJ#yJCqdoMEOTGSx-Sl|li5BgtZ?}l8V0`J1 zSvn>D8`g*X4_>lpiXLw~UqAi~j1vCh0_{I|;o|T_EVTa(>v1B!Eq(2;Z(Tox6_Q*? jJ=1^l?dQ{!(Ej<$C*HiCe=Tb9mo3Bs_w%O=7Tx~=NV9cY diff --git a/sky130/gds/sky130_fd_sc_hs__sdlclkp_2.gds b/sky130/gds/sky130_fd_sc_hs__sdlclkp_2.gds deleted file mode 100644 index 8dee51d39710057667a80ec075ea55d39d3739e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12598 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 AhyVZp diff --git a/sky130/gds/sky130_fd_sc_hd__o2bb2ai_2.gds b/sky130/gds/sky130_fd_sc_hd__o2bb2ai_2.gds deleted file mode 100644 index 20f49b9b4f4717b8b61d2b3fa23bcbb6756a6656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8644 zcmbW7eTZCF8OG1tnYpt&v%9k&lh(DNSg=S*v}RWcC8C>6P$YHRG{%@hvNpDjAr&=M zv=y}?BGFb`kYY`tQL#mhC}=^^{!s-LQTj*mi%=Ac3VuKf2GLOB^E>Z-@4d5`IjIh8 ze!K5E&w1YSo^wAZArD#h_OQ8;b)F5~uoybw<>6)Z-@{av-*N27iCa$G6~ds|e*Mmq z+xPtBvFEPa{k>~XpSt<2VRL)D_R2iJ^Y~rcmS4So`>pGDzH|Lux2~_hXX(h1rCW}z zFNM}b2>Emt{vPs~EQGLiwyA%M&!+qB7uY>*zdQ9;Yfe9f{_d!sE%XmwxNzYcAv9K; z>b+k-4?1JKu3s6}%Wn_*8qb-&>)bQszk68kzE1abUgW<)U-R`m+}AnmzbpC=Z2rwF zRG8%u+8?U%dA$;>(jr|+9B;T@2^OE=LKtrw0HJZq`mQOYlq|+eq1rGzd}Y^mreIO zW4yi}ydJ;s{NuW-TS=`8`-y!5JDO)h`_xIi`K-0Wi33`TXDZU(*<$UG_HMr-?Ngt$ zb~y2t5T?Iek@kh#tR3PzSgJ^SJZ_xlMy}8Gaeh0rmN#hpn<}z@W*)Zv1KVHK`rTcT z_D#|`r5{zldl`Rlvubft^Z8~)_7(GWvYwNhY&~JPpnQH_G5fvt$IsMWkoLKGYlqpd zRFBz;wBzfP|ET=p{O3O_?=NY-*H@(8{Wn^@BmX78&+G4k`M*^U>73G!8hK=WiYchqUVvrjl`pzS^1gryu^)Pt_>j7TTZnBTkz)dd`3CbLshao;2OWai{6X zAAQkYKYtyr-><7zXe)p2*POk>M0E@mRJ^WVsr2$(m2NSF%hoFP4qM!*_PYL1)ECze z-6X{^;{CA3B9Er-bNCozdtJXatk+)uqv@R8(@|bNw<%uN@2v7yKix01f2r$~YT%rF z+~Q8f$Lc3_y$OGlUiZJw<_C2AEACW$tR8=K6P#}gq9g9ypttLH@w_?vYt4VJu0QwG zcwW~Z;?BK8{zLlS3C&ygA5)tvaxX&MsrGvQLwcS+@NcZtDBl=&Cj7ZSK+kSMWSKeW1p(swZ*h zw(!-rJPaykp#%m_PlfJ9;N| zC+B>dtwur0O2y&P4s`N8QjnsT*-; zs($3mzT;d~Qu{8(or(QNKYYGbu2J)jac5%w?QdD$xt^oQKT>(e zxHFMI{m2zvNzEn3or(2p^=#j@9p?HqULoXnfJGc|wuQFrtuRreToChAW=>W1D)-H1C= z^=o|4>Xuzqqv{sp&P4rqPtLyMy?II1EykUR{YO9QhTcit;`{f4sru26x}h(ry2ZFN zQ9t@oH}p>GM%*YTy^1ihHXB~qDY46`? z?Jyj(b|>#K(L0GVu2cGp_wOLY_nQlkn$Lpn!|{Xo&3~aH;}Cb^gU-3({i)rb74wVl zM>THtS{olSeuL-jg7`LGVeOD{X?Nm_&PkkcohkpBkJ`91s}=E`K4bn6|LONuWL)A- ze9=3JGp=)t|Gm8bp8Bx)^!`*4zwU3$50Xz;&n!;b`5wcG5A9C!K<6aR_)g;ZIyLU7 z^^g0H_tf}wbo@KXBma!$1Bu7?+Xe9q-&bUsW|D@8^_r>;o=^*4+W$H80Z)&&wAq-e8KHbyyG%3ccUz`dh&!GB5 z)s%VZS^Kgqv_pP*gMVMzxJOHKMSEpAeqN);_V(&`qe^iynA@TO9u4_ozN&Ay=k&+8 zk)#?L33czMn)!cFAG|~!qtrp?9C=SH<~z5oul?`ttxuHtrAz5ARfoaX<5<+8xOxKwNzGzkCO^iO8$=lX+;MVJC`r3+&(`)_F-?%}q-7~zRBlW7JKIq@H twtL9`MeE)Fz)eH?ebImG`1xx`@!ch#xTEaXFteCf|8>Gf?5HxW@Lz!5@4Wy3 diff --git a/sky130/gds/sky130_fd_sc_hd__o2bb2ai_4.gds b/sky130/gds/sky130_fd_sc_hd__o2bb2ai_4.gds deleted file mode 100644 index 42f7e67d06d3e227f33ded460ce5b419b365a837..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14908 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 Y4zI?!S2($7r%(U$n(JR&b>#4EpKz0sR& zSFAc$?$5i^t~`);&aD_K;J?YwqC@rvSwCWbi+ELR;y3ZH_5L>f=gys5?_8#Cv&NoR0VpI9ELd|FV>|2jPb#n$b} z*8|St#6ew*tl##1sQX3atxj3F9e(H{+B3($b<*l?e?B1U_PQ9UfAZ(%oBDJ>_`EJg z{HV0@IxuN z?x>5g_1C-(b-rN7i`AWY4PAtuIe&xLXF06FA?&{%u@=29UK#N(wfw#hkoKc8V6JIxKY(VTguZxlWSH*dQ^H;kzCFhO07@I$T9OjLF z&L7Enqb|nguX3H$UBUT^=MPWR?R7CyKaXSm^ogvSx)`h9ABVc>XZ?hBg?7zr;LtTvRA0EejLw}FhH(nPb`-k`ZyzeW`1;o60 zU5v~h`^mc5f01=l7i0DFGYZGO_+&tgyVu3Y`J2bFe)@Yv-Ch?jP(R0w_4kNzWBt7T zct*yLIb3(l7rE}Ji?Q|RkHfyBpZkyGzN0S2_Fw*H=l4(kzbU!ysEhf?{XdW6ywNXm z-l&VQ`QvdMH~M?TxOrWSjGucB^N#agZd*W{_q;Af&VM`({qug2{iZI)`p@IaNq&z> zZdtrQekI8lt4Y2HJ@fp*{OSp-U##u7`bFrWf9Cwp?*;hz`CTlngC9R4^w7WA`-^&h zV8>p>^NV$1ehvG?;a+3tnUsZlv38-0XbU@8Z*GA@w=RF_Q`fG4JD~}>~CD@;m`Q^`AKFRhHGDNl)Pg*-kz3_5Mwii}e zJIVI^l9X)EJz(u5>t?&ibwQsdM{TTf+e7IJO?@L))iah8d+B5wV z?>65e)X4WC>7y=Y`2Bw4@jTD=W6VT8M`<3!oF#PUaDIFU{YgmOKle;XozE{tw)6R` zNS)7TMe4k-6sfZg5p^uoUq4?wuJ)w)#qzAZzgWG=@`JA$6`Lk?rMw;5Q-Xt?;zXAIW)TyO=+Y zY|KZG7|*^x+jx?kN5B3PvR|xQMBNMZ?=<`8zrUHoT;QiJ-iQ}l@H!#iC-;oKA4#2c zik01{71s)pI_npy`_I-1srNl#?IhcI{Sw*E>xoF+KQBy3ed4{=PO^RS-jrsdN2_+_&_J z&@=0+Zm_x<_%e{=OR_HNVn%(ZwLZBPIlm(7;Jk~}IbI@lj;Ba{1p7p!-n!P>N$PwK zB=XwD^(#{6`WC5k{fpGOFGP+T{}%bT|MA54lh1N}ivHMz#_zlAKc92(efW7(+Ozx#Iuj+x0%^e{nO`$6Ac9 z_%^(#pZDLMo9B(+Jbw+}OVL-y_fKCg=r z|G=B(8$1#aKCg=r{}7(lu>K~V(ewzP*Tsl`_^ak?eIOuwUKb<&_HE`HDF%ek>te*; z;r$xw@BA_#d|nqL{?UJ#Z|w1a@OfQ~_`5$e-}s#Y;q$r}@lSlke3MrNgwN|@#6Pvw ze2cKuIS!uid0m|E-{kjS@85gC_b0oai*>9e{)o`S{crn6{%<7boizb@-k~neKmVNP zPxk#95ni5u;5TOM|0F-Z-Es?+fXMZ_7|G9Xx7tZCoxZHA!Cq>JppZQ69W_}47ydUHDBRxX%x){kX%~@{w3DI)tXMWP2nO`|(xz#-Z z;q|&0$*&x<-0B|Da_MJ&(w>>m`(E~&_y0X2*Xv>=zxJTz)~^;Vmwx6a?V0&~+bp+% zdkN-yBG>C;B)@N)?lx1KdWbLlsFJu|<5ndSDM2#8#-i;?{PWtQ82LbP1^nV+<0 z=JUB5`#pF#AacDfM)C*FTJGRs(Q@f$e$t+qKZJWQ<~MOq-y?FpE=KZ)W-Yh5TeMvI znV+<0<`3U*zSgv8zTx{tuV?!CoRxLAanIKy>h`)AslUC&a@zpc58sD%({GIDca~Ug z=XgNmdR>gsWCM6TDxNPhRI<&N(XEth`gC+(T}69+AKa#cX&dR>g0o%Y34-hS?K+`e>H2woJdwD#{PpvDZ~is$UC#QG{7vWi iZ}#~svi*~#_4u6YfBYFke|O9Jp8>2t_z+Vpy8i(qMCJAX diff --git a/sky130/gds/sky130_fd_sc_hd__o311ai_0.gds b/sky130/gds/sky130_fd_sc_hd__o311ai_0.gds deleted file mode 100644 index 75e7b398a82812308242814468c5e6d956a0e740..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7572 zcmb`MU5Hgx7>3u`e`lW`P4i$(4PnrYG?C*_lNmKL3PGmj_)|)Hv<6W|2s8pCf+C_I z`$M9i3#X!_goq&Vq97r<=%x#yu7b$wq9h^`si^6F*SEgC_p#Y)JiE@tJjZXZcfH^G z*4k^YeKd&)f_uzhEvTO{O*3HX=4!L7_}#RFWdFYV4(vW~$e2zT-!lI6=(^92{jzH9 z$?Ilb+rHTh#^u^8ljPv^q2ZAg-91y?gZFp$PIbEvj0_L&-q&4WOq3dvEC|e5lPnC3 zF++<&{B@u95&1$kXXLvQ|B4pp`Z23t?$fJ^F`x^|Q0H$EjCB zyG8Uu8!!5={eSg^ymcI!x3V{X8Gnc4M{X0w!~@1Gn9SMQDRCvP7xUj?^B>asOWXDl zr7_`oj2|DNjTiMht={@eyBK+M-juDK5?3N#)UWCB?|=R-&?CS8=C4N|>=1oeS0Z=J zf3QPoy+aU>jlEs#+AMP z8+z_P*hJsT{j1b{SBZGhf1}k$x__VpeEQhGCyM^*3C!_BSZBL(rpt_BT#4&N|9|Pz z&qc3nJSci4;-&iLyJ!o2YjaNO7+21xXa3YHnYZoN(U*Vnr0D8+KvGXq&$x0vJ@dCZ zN9Ikv(wBezXUzWyyk0KwYxKvsa>P@=XYlOYi}Bx(Gq@DvM_h^PrS*?r65nL3K=|6Y z(&HaJ1>YrTzp}uO(HG;&CFTC%3Gt0~6$oD&S9<(wF7MipqPK+3#+4p@GK99MU-D&6 z){SwcuYUBQp1w-z7+3oA!FQqypUp`f<4T{NK3sqFS90AkuJo-xw&S{|UdeTD`*rlK z|JFjOd+TI@sJo3Td+RUHe|LW5b2j)(p1aEM81#rM5ihRa9=*Z&g*u);mDDk=^y#_J zr|XeBo*x-;{<3l9`f`7^OMVxQ?@0ZW!6vDn z5^=AddGp+(WZvvo>C2z(SU2i3qHZ>>^wf{%9OljQlahHeuJq+^+hP8x=lqkLcgB^z z`DZ)UojN7!&bV^E`bQgO{2Bk0@kh#y<@M(|i#nd)GD2tLN{^oBBD}C#ac~ZyxmDDk=oKxR1kMRA!eXHDO z&8eL6R}xn?UdQ;hV@!_8V^|v>p?^old0tRbXYVUVGb{ZmabHJ^QLYqS;P(jG&)xeh z`w7qB!f!d_Yo&iBu9xch+~Gc8$K^;Jv06N+k&=_=d68?WN$=`9eF*t zNv@OJr)-KjY<+(ZQcL&GMb5OVnW5W4E$$8`XL>WAXc03{i)<$)c6!J zN3&0^D>*Lel+cy-pZ+TSrjt3@FYkXP`$_MW{z&>zr}XuoVBE|*{v#**ji;o4lKt?y zl77@FOZvC>Q}m+r8*RY243OkRnw+x^eEDJ!z2UA z_)78YN8Nf46_})Y&2ax}^Mk6#E2x=y9lz&P%baSg>xyb-?$i}B=lZIyX3cAVGjnXE zea|;DkKVT9u8=va=F}BdOLBXrc5kKqthIEhswXOB&ZEESk}5Ms zwRl%mS6?mkmX%t?oAWJqXjQfBOjXpJ@BgNrGxIT%%)h7d9>Y$a4kTOen!x1oyzN%H z=vVvqWa{yue!~TNJU=eZ-|27Lu(rqlqV<~p-IG1~P1b*?JpaLX0;eJSvCkL%K9FSp M8EWgnSH{Tv1D#Q2PXGV_ diff --git a/sky130/gds/sky130_fd_sc_hd__o311ai_1.gds b/sky130/gds/sky130_fd_sc_hd__o311ai_1.gds deleted file mode 100644 index cb9929b9e505bd963e07fe596a929db38482fde1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6994 zcmb`MU5Hgx7>3u`e`lW`OK~u!hA8Mpn#ge=GofZiA;`4+EhRl!gCz>VNP!VS5mAtp zA<@r;Q&CbvL{NBvl&XOwO3}@{=ElAMwfMVPj>d--+6Gd(|KrgWMtQ#&WJHdZcMfyGG|S8No0%} zUKrzV_h}!NFJyCCzAN#sWKpRfv-*Wje+d288dF>4@f;M4E7x}EAMMu9%*-64UJ30M z(F<+d_h0k>>b<;m9-6nZJAaw~0Oya~CX7i3jajgvvkc^_PAr@@CzXt(_8ABJS%~clq~Tzgc?Z*IWI%^wAE{$8{xgNByH6 zN*k}tzqL*3*T!DvKD0#LY+MxH911I4Hi& z6-x1?p8l@Aa{l#`;+yaF2wxjl2K?(M#W&xp6kqD;@7gQKRqYD z*%77qQcr)^Ug@7K72o8PM`&$a8Sqb*if?jCDZbRx-?dlzbDwhlaor<)ZCu&yzrO4G zgH7_CT)#@a?Od)k=%DC)edWMc#BiMSH&zW*G3eUs=5 zo)>*xxv5&8e=NR@drQ)nab?hd7{47~!0+pl(Ifab;!3nv=1(8yP5*+(+s2iF{G0EI zuC>`CbT+QMfS&75y^`~$UKyG{`=v9YS7z^uUWs_+{F~2VogRSxhLZ6j=n+?O|?yq<}jkRQ4Ia;kxUlv_9<`Fs@R|fRSGuSuCKV9ze1jb@q z8OT4z{$c(J_D@0h+PE^{UvqiaeiFSUbT+OG=%eq^7yCbcz9jcOb-e);)-hY*xH{;4#^Oy6JJAd<>QbT{9Ta*#z!?+T0 zKmR%U>`&1v>u-r(iFi<-uM>SioL}jmE7w))dCpt^-9*AdS$5o?8mxOUl4V-ab=+XJZCX)p5F>0ZyQ$z^5;2=I-b7@LTBU3 zfZiMu9iLyRw}j5dl>t5X4|Uvs1);NX<$U@9^BAAM+qWS1mC#R?Ouv!1vhfDmw_{Al z>u>$ zK)+%1ab%o2C3N%65AQ3G(@Cu381lt=OUb%0u0*_2&vOmyo187leaE=6qQ2JO)(Lv9 zAIGul2!Fe-jT%mr~J+Wq|J=*`d2Pr=hMepvKM#C^Ry z?+h4QpBB$4$dlKjlGlFYGsGOt9%)x{p42I!s~kW7O~%dnJ_$Y~$K~~|Xf1Jvnd%j{i`I$O($i1lH;&lNk8h8731&Y{z_hwag(hjIez@9j8Af2@lz!^F5^o2 zQmosZGEB-#U~mnNxz!A|BxJq?MnJkr$oMfeLDXBLoXA5CD*eu9cL8taYWqe z8(22HZY-6pXRi?J52YYqS8I{TQ6Kr^upP0Nn}!!T~_1Y zm)F?sigax7ReoMGZMwGJM+X0xY%tq~gSRvL>m#BK8kIcDhGVj%WsJXxTU$q9_5XBq&tr*qf-A}!#?tiyXjeAL-dyVz3<9%6w zJC*AE&3@Ia_kUB*oB7zqT%o+ia9_v=v#obdpm^RjD*9F7E1Y_Ks9!%zkGs)@?+~8; u*7a+;{4ZLs`QNp%OTWqb4_D_uluqEc)qd>VO1}?g#eZel_27X&G5-RMYBA*i diff --git a/sky130/gds/sky130_fd_sc_hd__o311ai_2.gds b/sky130/gds/sky130_fd_sc_hd__o311ai_2.gds deleted file mode 100644 index ab776a41e4091b55e3a8556ff8e8616b39366fec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10542 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 diff --git a/sky130/gds/sky130_fd_sc_hd__o311ai_4.gds b/sky130/gds/sky130_fd_sc_hd__o311ai_4.gds deleted file mode 100644 index e5ac5c208fa9c784bb678b9f58df266ab7feedfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15998 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 ZrIhFOy8d&&=kQ#~{cGgA zsl&cDB3`QJd6{}6&(+i$5iiyAoJoC3_8)qlw}su_r*i!dSE)YbRn_r*gnGnF{R7-* z>2ItaQ=Jj?Z2qX{ zyisrDyh*#BW%I{+?6;hsjOe$-jV1l(KBu1dkCf0!+*qRLKBbQPJ|%P#H+p@7ZsPY) z{XMbY#didlr}`}H+{*W^pKp)+@Tnc0?0GNVRM+t9 zXm4tVtW{U{nl-8`fBzS?j=Pr`qqmN`S9Se^UV9$CYV$qX!+h80rD}gB_v?Jwbk{j{ zSA8H}_aq)w`F*1LCI7xpuz#pud7U16dV2fJ>mOOUqQigMdh7qwt2^{-#DA!`|AW!k YMtJk1dtR>_1F`?_8p#F@v0>=`0ZS?%#Q*>R diff --git a/sky130/gds/sky130_fd_sc_hd__o31a_2.gds b/sky130/gds/sky130_fd_sc_hd__o31a_2.gds deleted file mode 100644 index 3faf260c1bcdae0e59219e7606980cdd67d4fbac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7410 zcmbuETZmOv7{}M%XJ5{BG#renAq*;sCdzyeF=A$tiY!a*qN2`dQi(#L6&Sq~bc5_h z2v(TgjOd~J?O_6YkY2*VhlnsDyF3)sLlPBc|Nr-`@9cea_9{;soZp#mt^fM3_3d># zqsv?zuXMvvoF8^gH{^16mYY-l?Amd*Wz&YO>$h%qZm^bKGWPI-CHr6bb>ZRg(KaTCE+&A(R+vd+(KXH+BN!_`u6T6>XHV`}KMrPLV z(?0`~`hjfj(a%QwmYh=P7mI$T*Y7-b?AUA0MWaU4z8?Q}8YLdk!*2=oB_2_I)3~I^ zf3(-Xq_cKRXYAGA-K)2L8?E2Q6Z)_IgB(A~#+^%toSSh*!PYvB8&O^!|CsoT9v%-u z_o;K8FAFx_)wmJmLB0D4`Zdsa*6vij5%IEq-1|Sm_n&+V-}Aw}1)B@-`%L83ljZSS zT23+^4;OTswA@%bta>BkY~Ltx_!`mvbp5-E{mVX9pKPQc`;)$-{UO;7%Z>D*&WQd_ z*Zvl^Uw=W{soz|X*2w*DwKGoKHrD_VV&1Emk6!IjlJvrIDge;&y@%r{kh)=1N!7# z?RRp}sQpgPHHQ1|o>1RtQHk)CxG~`Go>1Rtkx_lAXa0P7W&Yx|>RZc8gs;Sn0snZd z`qpxz`chASUta0YJn{V{2TO#n#Ek*}e4qN(HyhQL@1Op@ywbn1Lwz~d*$*LnC2kD( zH+HCRbAeHPsi(g$uk>%NQr|Y#9{q*zmAEnB-&&=^1EYf5*II+<0}*et&{K z`$P4{{6*Cp5ij@u1bzCl>W$eosy8AY)F;bS-{oJbPmIgL`uM2ojkQ-)Z$v!kAHAx2 zW4uE3M#L-i>7Q7u=zsQ7iRib)je-8>`=Let>$ewV-WfNB^3QtAJM~89UE1{w<)8J~ zf9ktLza?%A^uO_>>Y5jq2%W@@0ex$o>e{%B(_aXk#Ek(x@72^rqa{KoapQFQL3gp- zcOJ#qv3@vSBhUGK7xL-JbG(jvM$|iTKKT1<;|8tQytW|QW!#8%rqj#)u5}M|3o#dd zE9j1)Kf5s|&-gLyRT#ICaq5iFPuKnk$J?5#{c68oQ0_H|8!P(vEcF8|^zB}KPsYac zh;79fJvsl93^7mUEqO!zNY2w7_hlpZsn!7UNz$rX_UIt<+s~E z`Cf`@T`m!goabyi{ZRdla^KmZ=WPOV|4Tn9DEEN(wVd;mc^<%gGO~PNQp<%$dfxxq z^8FfCc*a#%`yKtmqm=UU_}2OFgR)*&FZF&#?oE7*h?n*HebV3W-Rl?^-gmUB z#J3@4+}H@~xz4FK^8He8L_Fx9Z&AImK3nxh#Dn_!0o5BD+f{Ewyiy;3hq;RLxW;|f zvw{7ZaUJ~Ga#)^i`^y63*v z7|I{(F>lm& zIi-5$&zD#G|Dbux9xw3_bc`DV`QteneTA{_E*RgBwTHM7<(2+&55oJC`;ig85;q3? z>+k8f8R_BlR6z0D*T9A2{`-^8N|E&jf-0cfX#JDAH42-{hm(JVHoPwOUj2lDqm-RSr zsqb=1^?ZN6ymJ0@a?N|^&4SE3N9ZbjJ|P$ybbZ8tDO3KPDVu~Rd~d!tzP&pJ3Dr%%TA5>^Rx)%?bFlIp}{d7~0U3Bt2Z@q2m@jk{)Z+wSl z*81?KI>$WjPtB~=miPOSV)L(n!@*e%@fAYslF+DE&mFD}u^f>(r@gJ$y52xe! XJ}Hmv82)o}DD(f>D80c}o+R!cvxZnr diff --git a/sky130/gds/sky130_fd_sc_hd__o31a_4.gds b/sky130/gds/sky130_fd_sc_hd__o31a_4.gds deleted file mode 100644 index 7b14b1d51ae0e6fcfe26cf511dce0244a324d105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11256 zcmbuFYlvM}8HU%K`|Ff_8%l#YJKJ4F%_ET*-_iv8=smy=ZnKNge2x06p(R%N+ ze|L#dPxviw3;qI6yT2`N8Oh%;nqTngIP!_3{yRtgs#{duVoCk|u%G!`ejCvmS7zGK+ekNLO>U- zy)>VGt&{E-$M1E&XnLuC#>UG0&HTMUo42ToiTNA+)WJUXI2(ybw^!H)IaqNtJT(TdRtD`4P8vF-<(~T zS_9kv&lUKz{fsUS%EwPX^6`u0qKm0~>TLYX>ld5*y?)X3()q_v{fvJ|t2^pqqW)gp z=e_sc0&U)-E+*!`7i`?Ne|wJ?c*K527ZdxJe$D&bFSf3Bzi4{t`0;bzkuP%Ip^K^W zuWQ%5`oBV$Y~*a%oT7`?UYg&%#@D_3Qcl(#T}-Y2#0x&}oi7w<^B#3EG5-^G{jJ!w zzGK&4vAWg#ri-SR)<3b@=WXJ5Ihi+fF*SeVr+nSp4-{zY9(6IX{^Otb{olSSC;J{< zOznUAvG4H@`Lz2vf3x<|@i%{Mb=$qab!UOUv21klvhw+(U*$9I7ps@LUo<_L-&pVd zA^+_DhPXcM=e(hQk@JSS#MJo{``P(}pYsQ@?&xA_{W(Xt|2FOVGo?Ca$0L>wMf?Ll}RgjXUaMV*EAk zwRZiizp=n0b}V!;asJScb;mEV?&xA_{bN5{cl@kBWZlul)cRNdrX${9lyxBql>BaryuK%e@I*RsEdj9AG6O%TtCK+6=>IusEdi~ z2mPA1|M8108$Y^edhz=4?&9a~xtIO9Vflk%h|fQBFN?2wemKi-Ia}>>{(}Yn!#=;5 zza?%><@@swex9Qu?YRd(&rgw~&p#vigH>Ml;Hc}-{0xE zeFM*t{WG51-zlc^=|?`kAuTuRVj_R$py$r66+L(6pqS35AGx!3?HST?qb?@$r;d2; z^ev+2PT94G=jg1xbpO$h{WE<_fwpg=E++O5{iqxNkXCop#YFv+uXx?PL!#F``HC3z z()#H~ZtqZmmK$|3k>9=4bGyey&+Xbd%=~5TrTO$Dzk9qu%Z<92$e+00b30Yhb0@AB zqh6X%Kk_@(0xdV{Vj_S1Ue9f>6FrxE2jkD$OY`YRetTVkmK$|3k>7mAb6fjF&uu;< zM!htje&o0I6==Cp7ZdsQ)1KRSRP@}sc^QA!UYbuo@*9s9Xj;_8M1JiG&#j#hJ-2p+ z81>S8`jKBdQK02UT}Yx0ueSANkd0ftDL}F_9nc_uR4dqUVPD#dJRX z$RD%M;6qw&)Wy;Kg?Rt%=kG78cJA`tQmk(@zkP|O7w3ON?zh@DS-*MnznF94Cf7x4 zFZy>E@Bblq-}%c$tHZ9ld^w|D^xu@{d%wDkpZdj#n_L%7FZ#EQ=G$KRll#T?VfTxs z7ya9#zn0G*y)WSXuYZ2%hbMXe$um;*)3#rp&sqP0>GpYE9RI5Q{5rd)WNh4HeLrhj zM)b4UJ^zyl`P{#3Lr(Nr z+b1IJ)Bp5#h~Bg350UoC?|C~!Z~Y=C^To4*NPGP@Z---6JLkVh``G`y9adKP_ag1_ zE7JDc6O2oYeHR=5F^xaIXSZ%c+J5AioR6^iX3rPVhu1Bu6P>z6+M9Q~AF>Y^zes!g z58e)WPtbW&PTFT5_I5~n-_B2wcGhjk(~GX}!+Jl@Ja_GVpvZd#-b;w=ldio#6?qPh z?=Lf=^L|gHJ-(mLh|c?Kk@oohF(W$f@kOg+vGur7_44e_`&*G`*{Sc?{AH}Y-ts?T zYmkv=-a*USGoq6x+Hn@kTTR|v#n#HkMt_m>5nVKWG5`DV4|aJ!e&0ZU$a5U;qeXPa zBa(wpG<~t-$NKtxAICDgCNdt#JfMrFFXn$2^-VwGxvVGoka_Lcc`Gt+^b=F{Og`mx z^v>j@4s@}ko-a}l*9q$2x*#%7#rJ3E>`$@Yw!M4Mj-Qcvpj~9Y@%~a|pL0Bsc_vr1 z*X~{1hdSmF<7Xo~PepR+C!TeG^6P8%`@zcFt*-ytzvpvSAG7aG7p?u(^%VTI z?d~7)-|nx8+tdE~H{CBbKHz@Q^wNBOk4gQ!V-TquT};(aKkCLmq}3gDF;PGLs2jgX z-RNSfexCoy<-Nd=mK$|3kxxHz@r&f5i>Z9x1CY!6fgvq7>S7|Fe&pg8$we1a`Md`p zm-hohT5i5KPk|BQ5O^biEG_A@z(;)7j^L*e&!9o$h_ef&ze8~{dPaZ`_tSH&DZn$ znaH#5z}``c;Z|=KYh(7a`9$*-uMax@ey-=-k2p^M=Q+ul{jujl+Gj7xNe;S54t^1x zVW6;?EXM5Wc-uA z%85St4sVC#&@M7=d?Gr>6-&k+@2B?nEHSTb_cwAOdF?$p(Z}ucyGVQMNpFYbwzK(% z zecVfNclTb5yZ0WsH)g*#ypY{8ZRd$szVWIHANS027wh&FTT1recCFY_+{-sztb6IR zM&(O)_a7g+M|Y}S$Ij#0@?yNEwdNZie($!;BP)L1e!I5ezwRSDM*JJjH(!2Rg5uT9 t{p-(hZOrT6c9#ExF@JTre?@)M4cQglue1I`d%ltV$!)BrX;sz2{{b}cI*R}R diff --git a/sky130/gds/sky130_fd_sc_hd__o31ai_1.gds b/sky130/gds/sky130_fd_sc_hd__o31ai_1.gds deleted file mode 100644 index 710e91a45e02027527b511af400be6e857802b0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6418 zcmbuEO^8)x9LC>!zV12K$rOfSbfBa}1jD8w1{sN&QD|XWepO0((JY#j3Z;d%33MH{zP^Zg*$(vm1)CL$mu2?>l_dx#2i{VEXvPrVFQkTetDt+PQaj z?{K4Oy>~RrjvPEXHhypW=>zQ}Pqv>q&~86JKDKYRJ?4_!x$Kt6{pzyCk#la%k{G}J z)w-x3$kv?y?1_IROY!6VQ{rFZ{coZCCg&Pc6<&jbx^YvN|5&$wet!Ne{YH3qs$VI3 zHGgBbzmjY1uv}wz{sO<{8gH7vSMrC;@k^1*aWgL3i#l)_p;z0#LHujH{|(>%$qLzS z>c*how|mkE?@skAMX$||_GoV0tPr`P8w2^#9?gxLM$M<6`Tl-wezIC~lPeV>S9D__ zKUuB0$rYpK($9Q4)k!W)G|12tDX$zuEo{(Qnqv{tE;BPp_*l`=CPj zL^lTf%?mni`3n_d+(b79#*gJVZuA>DZq$vT@nboT8~sL(o7C$W8b6lfxY6Gs`YpQg zCjF28R=+Vmt$ri)+WBKn<74$3qwVT9La+4~FKfG7_f&{>i*5|Gzj#ygTkA_Qm%4F5 z{&d&#^HuD%Ur_$DlJSf94Bd$P)%M@uPrt(cN4`<&g5LTh@DBPzbE=Z7(!hKS1u zz3SKfXV3rL7`Jis{ancuW9gt9alh6t`wRZ$4)v48ySnd;HU2|37a-0$U= z{)%s%?zh;J^VB@4^F}rjt>1`pz3S`CpSwLXRN9J3E6*b zt+!ZGlJ)1uG>2qv^HNFX`q!8CQk< z(d+6rav#fi=m|ZT-WD}{Px8C+WBX>Y_a+~#Is*?#w13a&x@}L1)NpB}uJDo^XVeq7>2A8<()zP>RF@20m!E_K=M4gOw+r=%NN zo=%ONX2;tG&E_|Spz<<_wE5& z&Toa@?bla7V_tk~?wJ8vUi|!jXDokj&>7>XHL-^VpKl$tLDm{qi>|dn-P-a&-8yOu z+&B+zzQ?#yv9t4$?9oSNF!f9EVTc(qH~#+q&}qv)|`GxMgFP gf4k(bsc-*iI)iU7a>;pPpGPwLuL!NLi7`pszdWAf^8f$< diff --git a/sky130/gds/sky130_fd_sc_hd__o31ai_2.gds b/sky130/gds/sky130_fd_sc_hd__o31ai_2.gds deleted file mode 100644 index 27bd513649f9d04b7c2e945eeaebceb301448268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9072 zcmbuFZHOIb8HV38=giDGd(M8GX0fadXu!0D#*es^P*-HLjcAEUOk-M8NtV=N4T)45 zibN}-B2sFNQ7CA@uAfEHQbcMCk{?wlh)C4_P=83(`0+zQi^SSWiTC|HbI;64&b%fk z2R7Hq{mwnl^FHs#%E< z+aBDyah>5e)#Uy)q5AW96G%E z*3jvOkWDAy?;)E>LI|7Z+W5El4FBU_$f-5|F5-WkA$|(~cJt2_{zoocxNtgz*0PAB z_u=Oe(e#KP@pjN(<9YW_i91H(FOSBr`E(xn#8LmpNBzoMRNmqx`R_4*XX5(pGXLhv z-}z$*th=bXi_q)!+h+dx!vA^X`8W7)t=PUF-=T|WZ}j&TLr8z_ezEsd2-HRBjef?V zue-4#ebmK^{3}KNU*P;3o`CO-AO8+lopD8+zuv!*{05)%IQ@TAOlR@^56Gt=^Whv8srUZs?PRBg|Npll^O!p6`H*bq z`9-!fu88xF%kKf!uZyu}ynI7N=8-+*`H*Z+KUtCO9poi44%NWt)I7jOGU;{Zu0mf7%)jM+5qe|(`Ewq(`_UQ^*K{!wpVu|!-&(E_KGVgB zKe@|&?Lm$3nJz~B94E%-_?3jubTQ(eJLA6LJvG8-x)}3g{8@L7zsS0C{KZ)PnP>VP z&tJ@Td;TKy#_{7CWxofw87YapO&25ir?0p#`*w}+nJz~Boj19!^P3vsGhK}MStqVP z)=%WRqb`nJf5rX6%!}A7PNROOM9jT?sNajC>6g~8@Xwub-|!yMeH?$Dr)ZD(vG%xs zV*Zpo@AHTEYdjD1MnChUZ}wD;@R=?~{K*0LweuR`GhK}M!%6RVYf1Eehm)e|jrsF9 z=FjU?NyIf>jKoiI41F1|e=(y=W9e<)5S>qLlN@V*GaYdYWTz>XE-MbxY3FqYf zyU6Dk>LT=U{-gFh#OH6;0-utocT()PWPT&A6~l@g59Tkjo%xH@?YUk&KQ{j379agg zZuR<#t?zk#MSHHi6FJ5~=N&iaaMXWd2W_A&ZAw&#J< zUT3tA%g^Qq>&1Ct_YVa*FQ|(R^TYg{_sPG!9wL3zMd;(=AGPPjoj&jLc15lWj*G~3 z!|@ZTb9_bW%va>P;F=QgeO!FYKmCmNzx#Ma=1pB}=>L0|KgW}CIbI^?d4~N{?7oEK z)*+{Y)aeu9tLNv>`}%#%PvAR;{(hvQT^pc_Xm9j)`aV}WPgUexqAp@CMg1-0PJc<{ zPCv)MxUSjHx^xq-M@iJ$bTNthTQ|7Bf*ZQ`D6PY)<5?tec&;V61*Tj^j>$NsPPcVr2Yz9OpXyBG&?S5qjhL;c*-{ z`b%OgOcx{L$9clMIe$tbZ_~v{{;gvC`1?}MUn9oNbTKl1jKjPcza;WDU5w<<>l4SH z*DsOdPF;+RKab-o%SpGaN`MUeX_PgCLLT{XZb00(8KjHpxL&feFaeoM1M0?bqeaZb|{xQ`n zCw8sC{1LfssEe`nLr?u$M^F7)ShP3BXM6q$k0tWml=%umZ}hWHt=-=Lk}rGzTjK7B z{|A_BSa-t%HDcY(Q5TE#*TWRW`&fUUIv=tP*snu(wv7yaALe(0HII6E zE;{ML$ND<(Sa=uknk1wlySBxDU)w_a;JS2q;j8?7Eesen!5-H6Zpaq0ZCkF~jkk?g z;T~R#5`2@f_fL@d><-*%zH&8g@Ao9J`KB+&yWPn$XTK+Rv)}F8t|qp-S0)(m;WZlX zN!)#|3!iJns<@JwYHwF3c6YBUW8<$Qu+em`BsSkx6q!%p?tHd%kJcQ!!T(>O;V-tb zy9?Rv@7lF}B=^hqV?Uw)y?5L;;$Ob3_*moeub?Bf+PQxzzQb^jz=!d7UF6?u@i#a7 a*QYD^-GhB>x6=28On>O&`Q*r}6aEKOVjPPA diff --git a/sky130/gds/sky130_fd_sc_hd__o31ai_4.gds b/sky130/gds/sky130_fd_sc_hd__o31ai_4.gds deleted file mode 100644 index ff1e0f37b83bfba30e79961fcf98f455d894108d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14628 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 diff --git a/sky130/gds/sky130_fd_sc_hd__o32a_1.gds b/sky130/gds/sky130_fd_sc_hd__o32a_1.gds deleted file mode 100644 index 1dba7735b1746773e1cc05f425847153ffc62414..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7188 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 D7ixNH diff --git a/sky130/gds/sky130_fd_sc_hd__o32a_4.gds b/sky130/gds/sky130_fd_sc_hd__o32a_4.gds deleted file mode 100644 index 6b88daaeb6e046138fa232b89278138fc0d2787e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12392 zcmbuFYm8o16^74zGv8(IGo9&7r=4kO6iH)aff@;^m$tMaq_J9{3dB;mL?mE{5Mxjb zF^Z%Sf|vl&2~y*QXf^!uLJTqdP)v{z!VfQzXe62#B-m&}6iHprTKhfcd}YoaS|^!4 zGi&enylbz$&;HKYouX5;T2~Z{1Fi0h#YnMGbc?qZXVrf$##)`5Z@l)_Yi_;0C}s!S z@7;Cef_=Yy^dA@Q`RTT!%U4}qEVi4qi=EDGH{E{T_Hz$^?E1sEU3d87*B?H7%l7lH zIsDF|80r;8XS`MXz35D|ilW#$HE92)ud}X*AK=K*_*t~yhNdh1XIwv(^bejqdGc6M z4D1xG_d)x9Q1p0Rzq4O&e*4hZcp~&8;=VrrJ^gz5it-iT;D3s~=Bqs9EB5>Ea{t*h z{=18!{Y+8xtU%)MkIdWRqQ&due}lewsVGK2VVcCjPlaBzc%y!JQ}~WwQxRX{V$Of! zme9@3S42l#Tuo2j=tc5IFXr-}KRbLkK2{N5;$qI9e)ysn@g**v;(t+n{S3Xs7WM)A z{%wt~+0Vqq1AX=H(|3O#y51LSG@ZxAjDF3JLpSr$8cpYMF{9tKWOe&aQEYmuV&?<) zyTwIoudkoJ{OQN|(U&w|kBh7Lw_XpuIQVGjMT&x4*j_(*muQ|qn5vYi59Qd z?@+(q_P5>WMO*i;hCb-=x<2+_-@iiBUMPyqb5`@j(W@gaTD-2mx^Mq8tMsR%=KkeT;YCK^VBrf**pQ5+19<%kcLp1Hd&<8zU&%aOK zIuyQx-5Sl;<6_3YbtrrXyJGmG$3L|<`VVah-=XJgG+&R48ULXz;XCxa7{2K7PwkEV zZS&ysyYonm7W256@o%39-_9dq_@c)@wKw{ApA6sLO*NX<<6_3Y`(*g`ZW6;6J^rb^ z(SP{f@Ey6JM)UQ!nDHOJH+)Af5W^Qe{;9pufAq@m9kXXS=D}&c9v3tIqgRIS*q|7` z=K&;z8)7d{!>qc@AM5~_@c)@wKw{&ITF4z+iNsmkBb@qHAljC zX1f@^=}bCWbG1{8M|QKhMed^88%Vd_68^{5LIy@2023@I{Y*YOnhrKK1!) z(Dq)QpTzbq)7qD4@w$F@(%;Pc|JoVL+djKyKUc9mSrjuiev$SyKZ|x)+!*cR&_L)# z;#^lW{Yw7#;6M0_xb7h9$9y2ZExZ3j;salfc1WCSi}(^3X+tj(=eiG_KIP7Q}YB)`eqD$+jr?r4Yj(k|kQP9)CtMdJ914f*-}b;rZE^XZECx9u7t`T6r< zBG;u|#239toa>4!`wxsUe@n;0cWG@!d>8F`Sj2zBC!-w_XTK6@Uw9_kA@OxTuSom4 zEzu5XpSKe%k-UkE08JOC(PIB5}qi5@+1v%JnIHeUBZAyhqs|Y#flh zM{Iu;iI2P`+9C1Ywu<=l(t3sDG5mZ*+DGhLq#a-Jl>FlTC7oaSImLF<@3Q`)?WKL^ z7u);pU+I1QjUTaGzG?ZrTCwwWTTgrKJF)w^jb+)cnaFtsej?hj_r*0Jajq-c_3QhG z{O@4>%~^l^r|+xS{g&Nt_nTiL?GqPAJLI~wi=BVl{`Nb|H?jA!?Ps=ki}b@sY{+LT z`S`hw)p7QosHfBF*>|3^ay?z|=N6{-^90fKedie~>wkbhpF^F`+xj%E$oMz>EyfRt zFT7Nd_I36xwtr*#7i_$VgEkkmi^a*%i>;^Q`XX`sMdIWon*U1k`D^m$bIjk{O-)$|4#HV&dJM6vRe*a5F+UG4MqMNrhClX)(K(s^R8*IKs+Np;~eB&RY z9TNAv#S<%z&*#U_ISz)N&v*2ER&jmNpL@(-Bu-u;aq<`aoYTf95+6Pu?Qq~Z(^_ps z+WpHJ&mDe#bS$0299%JfU!Q(1W^+6BrC8riTc3UBWh<{w*Za9DYm@Un(e!=itt;z& zeXy>EtX7P_q>XXySM2x1!L#jtv-3ES`*zmmM(kZ=&o8!~Mb1g5&$XNq(M`N3^pJDl z(FZEBkBz)!^PkAMXR6*Hj{Pq}C$)cjpzmR$_NgTvs%G z-9Mf`)A`+^`IG&43Gk+y5Z;y+a{Mq;L-FSCJe2I%WfAVDB$iJlddR)x-(~tFsUS!=77jx^cy==b! zvhTeWyWg;T!{VZ~H`b4S)D3+}%iH5(Cja*LEqB{jI+xdIwez^xzn}Kqe_h)rsDIa< z3q?!-lFZ>(SM&KURbmKtr`9v3s?XV0SU z>~STn?j9F2^&h@C>c;0R^@G%nxR|RS{iqu{k^1>{6La;WAL|}{$>&1P{*~Gr>&NE> z`_|~*itJndd6JmhzxW(v{quPxvhMx!F)_FP$L@=|joUs#{UCKCF6Qb-Kk9}~q<((g z#9aO8N8Qkuw7Pj*%*_A9Ly`C7u8QPMT+HQ9Kk`N|lD}U!F_%C6$Qyl0%iH7PD*1E& zp%=OD(2KeIZ!*2-OuZ}aKd0Sy9v3tBpFgiZoSxScS+m5&-owrJKmE9GdEPH+RWr6P4FF6Qb_KkANN zr2c;0#9aO9$9;poq~+~#ah3d;H}oR&hF;9gAMd5CJKkqR#!Xzzjh}vu+uvss8NXjQ zF*kntkvDpgyorme<PB45 z)sKGE54}kJ{JM#``q7VdgTCZ*q382AwKsnL($0O0zNC%YffsA8}Fj8@4I7zu%3&U!5&Fo9+KVir(a) zW&5XMmeU-*MvkV_$fNP8{pM6C{cO@wnYM2`KEun-+UHtDyXedh@bCHo>o&Hby>sDf ze0{wb!*$cGmhYuSXQ9I%v7L!}=)3=q+WuDX483PYEn)ZGeg5fZ-uj8uyUsg(wf$9U z@;(#w&=*Se8D!2$XN-H-8L0WcsiaPK#_6mU|DVvPd4JV*`dZtOUu#s&zIqFt5AC-< zd#tav(66#q(c2w@{)4CJ?Y>%ltrveS{V(3Xr_cXQ>*fF9OZ)Vfx&PMY@h`S_U*+z0 W59)5W-$xcY=}-K<8eOZ(Q1L%#g4FZ? diff --git a/sky130/gds/sky130_fd_sc_hd__o32ai_1.gds b/sky130/gds/sky130_fd_sc_hd__o32ai_1.gds deleted file mode 100644 index 77a2a2ecf9fb2f55f6a0aac7377b3830d69f5edc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6820 zcmb`MTZmO<6vw}_Z)cw~$FvxX$$3yHM3^o*4?qvF8y=e`swNE52-go zyGiv*iI@FX|G)ZD-d2a@ZS2nf9`WyY`#63wZpgQFx8_a8tI+46f~+GytnFm&7w6K8 z1*J|jD|H-N$BYs$*FVEw#u=w|h&tRBt&2>*hu7|coG<2QWIOXVGA`@DIMp?O<}d4~ zIUjXiP`xp|6@4RaM0~dVAK~~le$;V_FBRnYFmI!qMqguyc}7Q}8+OiEdsh1~V*F?G zlYHy1XukQ!1siWW$GEW~U(u&8sV;l3V0It!L)=)QmwK~?`b0MrgRdf|I{0~?-@6S_J91j z)}1_FkaaU|4An2^p>FC~KgqfoH-_rxb(iy(EGQB4CUIk6{-TYj`zSvD6qNe|;zqPr zu7CHH`to|sJcRI-xG~`GPU^hz`pNYx#Jow|INSX7JH7wmdeK~o^>VQwpA*s*_;|WK z`2G$0^yGaddja)%Cd=?Q`Z1!vnf3O&dwKtgmZ(qd)q?bKPpBU$_bs#==}Vn4)PJL< z{pNcMvj6%i?Vn`7Y&WuB>Wmfr?_>VSquNh=xFE+b`a}Iljzhe#AbsqB3_xloOfCEd>&*!^>iBzxdLeWYH_oQF=lR#L_a`uaBPC8@ z{unpT_WQY`_rLo`jL>dUy;9;c=ilq2t?C=sON6h)jRF5?tNO-uqxw@%f8So|&ucI1 zPtKPJUx^z7{>d`+P0kzDmwNj9_DcU09`w(Smx!3ejRF63N`15AM)jqh{=U7^zkWu2 z<^G2}gwRUd81S#3QQv&8QGKbWzi+SfZyZs7xfj7-2w#aC1OAO8>f2mtRA1`p@7pW= zd7qQ_C2@)HmAEnB-?v$PTd`4nsi(hhFZ-{T`)AVg`@3yj_g~ng7&pG}G4kHW!-#m< zf3(me=W*x;oSV0yVBa>48_{0YZxy}mf2Zfl`!4jwJoqk%hf>MgciEB%C*|`o^R=H`KcCik&|Ti1 zP0mF{B~>`Yi?<_q;aO#2>qQ6LGZYnlHlV9hVJcV=H=7*DJ z*kv>H*m2aayF!mE!nOH({hD>FyZoHvo L`@=(2lDK~XyhiAi diff --git a/sky130/gds/sky130_fd_sc_hd__o32ai_2.gds b/sky130/gds/sky130_fd_sc_hd__o32ai_2.gds deleted file mode 100644 index 0dc62875204a6a98c0f0260342ec477171a282bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10070 zcmb`NUx-~-6~_1dckchWbMM@laoT_lG=|vJm<}34)MjEz9-`40qoy_)QmZv25NQaK z7O6#0LR&+8P-+TIpjt``#RpL+eW+l42qj7t^&y}Jm7<_|2&GCHzi+Mc-E(d_XQwlI zVe*?3lfw|L@6fbped zeB!dVlZ;PbO^a-Af6LoR##hi^Z(T!Qd`8@j zv7f`=DH{)?R(GL3DH$Jhyq)Aa8~h<7+o!+g?Ii0slkO*y?RFj&uZ`umBRzi}V|^>X zK>sb^ri`3-t}&7ArANJ;446~4iAT!__(DedPhD_-lKD-wGqQc~qPLUupW2&|zC+YqWc!eNDkbCe z6|c*0yRG-h^nT+kd{MK~wj6mZ#>L%Z>-E8Ly`NW0+eB#hyWVN>{CeN{|JCR6);N^6 zIG(@XFQwz3c@NenYCH3*9RGvA85j4CjeksU_gm0UeaQ7j=qxTq^me_0zWW>38= z#fW~0>pXSS)f}O-xHzs~NUwJrdA<+d#?RmVdMQ>;dR#<2KmTL;K^=4bD)cyii_M>4 z{Ua_SUZ`*Ga^2*c8L4AjjOm#_eH;CZ)G;nzr{81a-z&q~*ZcX`zOT8qHW$LXZbJSk+lM?ZBA(YD8k;{@)o|Y9{f*c@ z0I{})B{-jBc6iWZOP{ro+1F~@7J z=kIBY4@F)7u|PoTC{kf zKl{;lYCcE!T3n3yPrl^7{rg4toqS1*`?DYY`}gMvUyF+o|B0*a+dC(^@5EIx?$3Vo z@14sLz7`iF{@r!%+r1>ZZ+D#-_h&!)cQ54#UyF+o|Mmg*?NmhfZ66Th{_ID8yWbY! zYjH8+-+bJCTU$i;<#&9p|Fpeu{jneYc@H`wd@U|U{Od2fZ{w)wzV(+yix>K{AAK7~ zbA+$O#fX3Hn)@bCiSAp2mg7&`3;o%T{>f80B4%+h;$Pk1zSY-6_pNRaEneu)e)PBR zb0T~#E=K&z2i><)7u~mv>oLclwio)dAN?!!9N}wmG2$Q2y6+0^|HrN$;jH_v;QPno z_1C`&_U`Oqj3H%h0b|EUL_9x!|Gu4Gzos9>T6+lBnGa;-a~Z}(v`6)P9!9;`Jmq>3 z@k0F+_8*=ng(3Feh?j9aU|bx3UOSdQpEH%#Lw|dYzlNT1aec%e&kqvnzn&v?jEgtW zvwqZztQ+-WtbW!H^`oBkBUv}b#aR6Yo7~r)2O$rVzKn}8|L}s3o6nC~2P4L9aWOLf z=|`|v&S3s;%UIcp`A1wtd*S@EALozy5#eibG2+iWSvTe_vTlrvvHGze=Z$)ib+hB9 zjMb0(gmvTkACY-8E=KaVc|!g+Zz-8K<6}d7#Cyn z$LHYmorKqj_}$`S#Gn1>OT9>6#>E@?bKa;IIe*lPvH7!ps5|vsKP2nUxEQPd#4bN? z@qUfxFXLs9aWQiK;&Xl0jnDZ07h~gZ zJ?8V?{$P$cmc_-0fAhHew&pU@mvJ%XZ~ahz>NyW2>(00stAG7Y&%6G5j;saaVkCd| zW8J71nK$ENEPv~Vys2mYB=crmjOEYwM%*`iUnFwhFfPXS5BqWbQ9mNqoyEn-`eQ%l zZSSj6GH=GkSpIxQ#Pde=LXN1r#l=Yd*^hOnUS!=F7i0Cee#o18j)P?0jEk}S%lo|U z<+n1j?u?7E`m-PFPW_0eyT!#w{n?NEp863{H;apr`mrDDM!m?oF)qgH$NMDCAMc+= zgs;WLh(G&r-BK^IZj6hnUlT*b{}=K1C&Q4eEu&wfho`uuKZc<_%|)Pf-k;`ycGvmN zR1oSJpsDaUonH8^Hd79@kj$3&?@c9i>)c%1ehd5K)1fQh{Z@YzlDTAIvwN;YUBx#Q zSMOMbx<4!R0{%x$AAhXGn{VY-pZVa*|Dx_bJW{VB^XA`1>U4LkWZd?))@BULZpBrj z8t->7->Xscti1ly$DUqxpB3qM?b$iz|Bm%ID_H)Y`}CN8pZRYr&VNm92i`Q<$M(E_ QpG)-L+5C8Q)TJ8!3;ok*761SM diff --git a/sky130/gds/sky130_fd_sc_hd__o32ai_4.gds b/sky130/gds/sky130_fd_sc_hd__o32ai_4.gds deleted file mode 100644 index d2e5951c87c39bd3d575456edffbbc00231eef35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16122 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 diff --git a/sky130/gds/sky130_fd_sc_hd__o41a_1.gds b/sky130/gds/sky130_fd_sc_hd__o41a_1.gds deleted file mode 100644 index 9f5ae84ec915aa6968ea2f928c67bdddd15afaa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8298 zcmb`MTZkM*7=>$krY|!)mnf^Ung@dh5mq!t2@;SbMn!YcB;KMXOJWoy0l^>=MMOkI zP(*wX4PsO@NKg?Ge9en5A|Z&6q9`if&^#>Sbv>v4I@3Ly?ZO=$*!^bz>Qm>hzpAS* z>oS)lx45N^B>&2F+?31Rx$f-hch^m_efR9XZ`XYXoSST>m#=+t)rJob|8m*-4=y}( z@YWmL(zIT?G|TqyJ+NZsMKgEpnc08G%-wrtX70UY#jcqZ&b12XvR>kTbXh-f&P^|A z;&=EgnYJ%v=a79D@mK4VQoqLQmjwN@IDUh3jnx&-LczGWVMPDnsD5s4?g;fFv^SdG z=;KxY_5ZKFlDEd8yv5P{ukikpZX@fL>~^mGisdZ2IgIB`!~&c5p zpZb4_{b#5v`%TxD%#Ne4O=t^DQ}oxvF@dd>`1^BASYYxIzCVUoV55&?KSoZ0%_q^m z1$_oGFZzl#`T6zJ`ony(mrF7a#zo|@(D=MQzs7XMb0yn1Imfsd)3@(5T?aXHyd-su zi!uGgcGGoP8|X>u7#C~w`#3*?{Z_Z^fszf>B4393268SslQt(L*Tuxnl5FpvZ|x-8 z*{_IsS*U(~efaYh=S%Mq93Pm#yL&163uL^#(b`GI3+wnBnM8V z>RU(5m*b~DNnggrdH$Py{?q0D-ulw&C3X&>FMLGAtNuGi^_b^%)Qj-_)$~Rmuj=jk zFiC&Yq*Ks;kMRdi?6kOucvZi1r2eo?UNcj4=81bLjZoXaa1xKtO`ciN7@ml}ha`WvSs}R0EE=K%&%gwiUOf+BW z=^xr_{re}(m)8%D-xIz*E=K(OC(L(nP&8la=^xrp_OIMu7n^MV8It=i_N7AHw7~vV z(WkGQUd*mDy@+_!pZA8`|Azd-^t{Jo9*9Tv*>9#7^Vdu#A|BNzf0zE=Ka_am<@~k$E#N#`5QJ%$s_V`TKqYWBGHRVcy)o zhD6>zE=Ka_am<@~k$E#N#`5QJ%$s_V`TKqYWBGHR;QI6TuOil+kBg)0Z)X1eQ}dYJ z|A>5+=Qq*aW9=e+s1u=EsQ-P;pU;)-H-D=n`_0d={>fH&-W1tyjy*!8Z~h$$7RWgJ z6>I!`{rEgd|1Nw)`cFJ+{v`WlyU2d26Kndv-M=5W()vvYCE0)Lfb~zdZo?1iE3#ic z+l%zg(2rQ-=f~6k)_nRaOVW?eQzH9eyGS4E#G3x6Ii3VR)Fm&JWZf7S(SGuLhx_%$ z-Iy!f8z-lhEO774xQOXPj(&?7FQy*7Uy z$GwC4A^$RcE^dqK(>c?N*_);p5wG>UBquaAon|IQwa^BL@~c(*AwFGGKbi-^~bpU3fD zk@_LOHhn`}U9X?O7@2n$=fIH2+sDO7{@ur|ZoLaDM4vt`M(Wr5$$b0IR|sDp7bE`t zJ26+-KL&%6+&35(WBUh>nZuA9L*CAn@G7h~&(KHUH4FLK{wT#W61^x?Xr|BzpsKi6MquN^<@ zoMHcD{fET3eOwIV$7PQH53>KKOuB3t-U+*6fGcg|3pdHDF+ZI{cJ~N+*MFy?GQ4y1 zs;+tA-PGxcOI>zGgTK#g;IQsl>6){7JU(5z4z9x5eZyr_+1eH6xfu1t+t@9C_v(ws zQ|EYt3hy!1#jE40+jvhKG7o3yV#ZB%$b3w7$b1ZSaXJ=`jr)?t*PQB*`IzcZwK3G$ zwOVWI##n3a8;$!GbaM)R7Bgd1+qlP7+qlP7H~!{I9ar7l`d`#`e$Vq>Q?olvy}-|l zwmYzD*o%s(?56ASkBMs4O~3l2-Q^@bb{gt8&(mWkTyS@)(_g)L{fPg+)+_&;w~pwy gdH?D9{FkQdZuR?Q*eS#J&Quou$?vO?qbe=;4|no!L;wH) diff --git a/sky130/gds/sky130_fd_sc_hd__o41a_2.gds b/sky130/gds/sky130_fd_sc_hd__o41a_2.gds deleted file mode 100644 index 11121c01d11c2d4e492734cb254e32df0e3eff08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9224 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 NI^)^sT2_XN{{#8n@BRP) diff --git a/sky130/gds/sky130_fd_sc_hd__o41ai_1.gds b/sky130/gds/sky130_fd_sc_hd__o41ai_1.gds deleted file mode 100644 index 1a8ef1075c8a2c55aced235dbdd3fffa01793a18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7390 zcmbuEU5Hgx7>3u`e`lXF$21s>(Ya9QPZ+aFOTvh8lDe3*)T|VA)I=18Lg~Wtt_zV6 zDn#f9ob1OUsEeq)3WV|^Dhr_^vLd0Ix{yHnv7Fxb`_^~%KF-<8=5*lrocY#z*So&8 z_F8-Gt;<{#J?sW+QT?22x&c>r*SdM-->wy9yLWEgvt`dd=lbLH&gBP}j-5Jw{`M6o z7EQdk;Q=?8R%-{dZ11jp!;5bo-@a{p?<3p!i-`h#pv=x-zbO0LG&>z@$)EU!N@IXU^3bF~p8YOllhh*9EY{Ya-Ceq+>^ zctQ0|<5-9PicY=x8qL=@#s4yW$=CW}zQ#`fyTrfW-NEr|%)xiDbM;dN(*yYX3+Idp z%305d`sMMk_V%;AzGs|^590fN!RS`}p6#5`O`@&M$j>wS0TcT+$~_sc|Dok1xgY}U6bi+n2+@Z8RzwAOuyFa(a5;$L&ggo`H#x_ z8`Ax!*{|c({IEpKi^Pqc*H@<=`&8`)_>YwMCG?CNZwUCKUi75ujq!D=HzHmhzbXFt zY1JDW*!byhL_Da^eE-|@{mzV6=zrb!-z+!*M8v=%ud z@93Wrp_91r3VL3*)Ejx-Qf~}hzfuqDk9w{@lIxCfV`%+3zwgv`==clIV&7xj7#M%| zj*c7mN6xoSL?Z`&5LM{apUT0Jq5N5o zc~jRW@|L(UkiYD+n19)SjmTT##z6k8$GoXGGH=F>q5P#D@}{2olgyiOV<>+qa7G(R`ZQ4G`a;^tsd``=a^r7C! zINLQs*UewXuX$eEZEh<_|HkL)PqJN>8`&;(#!&nD-`cM1ugHUB`}J=NvR%fFY?nG? zMf-aHftJsPoPQ(dgKZfR@0NdC&-tak%>mV?#?JZE`;UMAanB-;G3b|-cmaCGjosc~ zwDtbI$uc9f>r}6lc)9-_{?SJDjq4@CSK`Kif3#73_1ZI(dSX< zuusfbQ?PH7#*HX1>o>Ws|^k+Bu}*#HS_iY~O|Gb(alf%ZI10&gUYDW1_yLH+3B| z0`DHxxU=`D=K0k3+&|$?XVj?nJ?~NNd)}kk&sY!Ycnz<$UetI7ceP9ZN3D5}cCJwDrC8s~rmXLQ=lOX-*SGsw)_OjW zJ-7;6WI1!yPu(A;=&>tNfB$8A>}6f|mnnMmfckq@t?2Oo&wBHJXibNHt@saB=RcT^ XZjkK#UT41tGW%~uZ4bx4Bys-&`aBjE diff --git a/sky130/gds/sky130_fd_sc_hd__o41ai_2.gds b/sky130/gds/sky130_fd_sc_hd__o41ai_2.gds deleted file mode 100644 index b7997b6b83c466647ef0abcbd69c2953506bf5f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11188 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 diff --git a/sky130/gds/sky130_fd_sc_hd__o41ai_4.gds b/sky130/gds/sky130_fd_sc_hd__o41ai_4.gds deleted file mode 100644 index 833db058502ca73d9af35b91225d4c3eebbb36dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18202 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 D^;zY2 diff --git a/sky130/gds/sky130_fd_sc_hd__or2_0.gds b/sky130/gds/sky130_fd_sc_hd__or2_0.gds deleted file mode 100644 index 40116756102d0bcd8ed3a00fdceebbf03fe942bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4036 zcmbW4TWDNW6o%Ki?KzpIwL)y28bLvXLd0qwN~zc+2DHXTQ+ttOGN{E1sTLA^s1%=k z@kJ^6;su)`D&m_DB7$I11Ya!DXF;q8ig*vA2IBwkwbz_I>71$Qfypi=g&cP|EkxDoBW z^v7)cobO^0nn31}zpnX^j3+-@Iu)d0&AwVPt*jV}xHk zo(aF6Msz0Y7fTxLc|~NopIxydOhcjU!C2gcJ&1j3V;8WFLEecagV`4{p} zXVo`r7}b}0`iJ&f|9pFRPM(hlUmrL2@z1xbZ+_mWzSPq{wAcC<@L>J9Upqw1$Bljb zi)Hn7r;X}MJ^e#_t$*XJ`j+z%q4jZNAOFT#^)2U(>PtQSLwoE$h;y1(=IPsG z{dBh;Yvfzi8JkO9-gys3Jl2m_`QyyE8lSIFXP&iz+0z;~BHl}X8_(Ouix~THuyuV9-zxN-hAOCPMam0@vGiqxGznd+m|2}JPcueNG{0E$F{Qdv{ diff --git a/sky130/gds/sky130_fd_sc_hd__or2_1.gds b/sky130/gds/sky130_fd_sc_hd__or2_1.gds deleted file mode 100644 index 9295044b48c0d186aa2a93a488ab080b1dfcece5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4308 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 Aod5s; diff --git a/sky130/gds/sky130_fd_sc_hd__or2_4.gds b/sky130/gds/sky130_fd_sc_hd__or2_4.gds deleted file mode 100644 index a9f7f07b7ec3984ab513b563844ea643d47ac352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5844 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 N{kNXZ2FF*D$iJQta(n;) diff --git a/sky130/gds/sky130_fd_sc_hd__or3_2.gds b/sky130/gds/sky130_fd_sc_hd__or3_2.gds deleted file mode 100644 index c17b4b75e674123fd289e5b24ed642443a123152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5756 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 diff --git a/sky130/gds/sky130_fd_sc_hd__or3b_1.gds b/sky130/gds/sky130_fd_sc_hd__or3b_1.gds deleted file mode 100644 index 996ff717eebec21a99aa5b8398973a52bbb629d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6350 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 G=>7$i)5iG# diff --git a/sky130/gds/sky130_fd_sc_hd__or3b_4.gds b/sky130/gds/sky130_fd_sc_hd__or3b_4.gds deleted file mode 100644 index 3da9fd50c27ecc59b04733295b5d6ae587064322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6578 zcmbW6Z-`V?7{<@sJNMq1*_mC9#aP`UO9N~BV{4kN+3qTYDQjkyN;+i{ic7^xAM}$! z6qY7h2xZX{m6SrzKm3>w5>Xi$^`%IZ{_2M;)=G)(dCq&@x%ckQy@>Ary{UTP;Kp@B4-RcHrri(b_idlE_{jd>=Po>S z!|=Y<_n6KgTiY3in>THl*?nXE;q~>+57jrUuh$

  • H9Q+n9`?1!`8oI5A`P3fVZyrKPy${YGm{v-zZ z!*%ioze(Ppn^FEyF8zBF`AzaB)mt*kAIgz8v|mwqlXNr4AIgz8_)YQ#-Hh@l-M{3Y zy*K+IK6G^V03Qa9C?GUqVgu`W{^LWBX97V=w{S^$`LpIii$hwW)MH+h#$X6+~{T$ zKl4o7%)d$8DKAQf@#~z<{BeFanYVPVFB#1r?a*)9uc&?}-3Ee`A9;$8{5A2Ro9p@c-h#iPzPI4#`%7Z*{e?Vb-z9%d_FZ%{+J7m> zzK`Ez-%s_HjP`%Zao@pTQTLsso5B5ua_l?!P4*phGunU1bNWsGoAevqjQY<$xpbj& zXJ?I1<^6NXEdPymU)AdQ#K`y0nMbm3mOM~BiSi}g4E)5&xD&t0_@{oAjK-gGj642{ z8uz4|!T3{-amQ~m?&xMT{;V^`o%Lrj?&xMT{*Ma@dpK|mYe?|2>>1NP> z@{Dr>`Db!&KsTfF1LK5`@iXzEn~|S5@e#j?58aIXfDrcGde%X&$#0^ z8F&2V*!aJ@s6D?b$`8Mh-~)Lt!N=5pru)adhB@ya`W=gY&C>K6k@0^c-~Ec_^CQK| z#@@agckj7=aLdhm1~=X?_FES1N{3hL^ws~5T07c1{`axY?1^eUsv6hP_fBKaP4m88 zzSr^d_rrLuDgUtk#^;)TZ*)NU^NiNSgG2g#jXCz*bfo?X?`=ln=lzV|*O-1^V~#!d zT~q(qbKlYWH|P5Koe1^A6t{HK^^e>a%l>yR&pys%_#r-Y)BZ{GH{rd}Nc{y_w%DO&UMqq@ToZruVhdP3d9$QT@;1y~oJ>*WY`T z`?7x5p&hiF_T?VGFT72+ApO4ZMSIgH{k~8;ar&fx`_1pVdiNKz`t8!|FWY%RdCGe} WwdqZ~YTL1M`^B#-=XP40D*gjG+m-|X diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15.gds index dda05ae2647e3a47885f9d3a5c33a5a84c283d1c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20282 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18.gds index 3fda625771d2d31b50206328622b58b486c3e6ca..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15622 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25.gds index 1c381b26c2d36ed3add11a42b87a1785e898c16b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 15686 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15.gds index c5bd736e157e3b4c16ed1987d670c48d3a84e4e3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20564 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 WO`mvFZ5uYOKl`2K*)$Nxi~j*vCG2(p diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18.gds index 48d78026e9319cd6edbb446d9032acf8e140d677..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 21076 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 Jo0i3;>U*d|{OSMz diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25.gds index 796ca9de464e1aa27b295fb8ae9635566806960f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 21140 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 L%Gop)7n=VAohb~` diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18.gds index 865e272b417f0d11fa11c88b990f1aa091b5cff6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 28308 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25.gds index e4452a38bb80e4ce605b107463786c6f4285ca70..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 28372 zcmcJYZLDQiS;zN1_nvdleV;pTckZ+(sUp7AcBVMiiX)wN3RN6mrfu5Pz)ehBG<_R^ zHa3PpBE*291c)gwB8`5)#87Q0;s@&(Q{{tHq90I045(=eni+{Y7SUw<|JGXnwa>Zt z?B_6dU&%tp^@`>((!vI`Ttz9y@d7$WI+PbKS9~*+1L= z@e}X9{`G(PiLc#o@{g~5@}qa(-dx!adKg@44|B^+Gg#?0C!4{+Uej*|8#DaxVaC6F zMgPXl5A)|E&GMevrWt-rm-LIxaC7jw6Sv>e%&j-gCHps@8TSu!|F<-Q)n2owxte|y zwPyYu;vckJ)IZTp9Z&st`Pcs>`_277mi?ymQU4oL|NBe-YC3yu)AW9z<;FRQ`eW*N zr+;lN`__N7B|da>oBu@W|LW5J^YT4i`Y+tLU!6-gb$qn{F@Ne`zC91-^FVy5|H5tl ztLc$tvmm& z?B8^Ejz-SK{zo;Qr<=W-g9jhJ=iUdl9(l{XTMs|m#u8xX$|cw>qw~AB@ggYM5&9NDX{m4%MKU{~F<6Xa%5~r3Q`F@IBxB8k%{v&h_?Y zb#rjr9XH)}`)P{$SXPaVXrP15-!{$CD_hQdPUTy=spF$rxx>Gy48U(5K9v2Y^wF%y zyV50G(b_Y*qECFYSG1=6WaZ9WCo9jXPNJK4j*Unes(te69WmZmJbvbP|87w!zb#MG zdU~1>-SfzU4?eba=HYEQddX*;{g6htn=^jTed$lGAA^6_Ssrf&n}d^O&dVz58qb)! zf5PtDcHv&6mZrXUXbW=!HrFG@Gj-# z7e;tq|3)|Onvmlo{sZK+{FP5-{{iz*?BDnI*>CQDDEm$6J8R5H|9h1m^l$FFCi_k4 zp?|$xf93h?UpJ>*|DJOFl}}~=9&^g|ua@gK*B;7#Q+nt4ho@Cv)z9!NEtj=i&`li= z{fp`kzqvG*{igKLzi>_VS3Z~h3+6SkfBt;-o5OczzbQTJe^9R9oIjcUru5L?FV}Al z=Ca?E9{T6X^;eebo->2%Uw$;t+lq=Y^9Y$YbTgVi+A(kVOy(_}w=kMN+A(kVD>d$< zn^VTmyx}*QH~eNaf3#!X@SDsVx*5$M?U*A&(B>s*Ib~RLH(y4`yT$vr?Q{@ zuN)8iXWzqbvhU$DrH6j@J^Uv79)2_0|7gd)hrjZC_Ot($<6-~od-yA#%0Bi#{L(`| z`yPIieGi|xZU4(}j{N3EckZi8>O)UW=7yg9d2?h+AMJmKe^yWa_|28|>^G%%`UeZ@ z_t%s=D=q04-PG|;|L}_3@4|PsT>h|fPr4cPzx?A^K~yBZOL_`o7=8GKO=hnp3nXA)XVrGzVzm+(ET4!So539@9#DH^Ha@?o@(|! zlH)t+czJ_48vn8W``@d+^k;c*%ibqdi=>-6lKfrgZ~ins-rE}=*BjFC{F{sU_^@8T z-WrtnG0sB|=kc5Ajgxd!dgt}?=mk#(Vb&pVhq(y18#`{g3%)u2!txrMmNlmgy~=bW_Ji^Jj;D>1Ekp z`C0v2{w4Eev47#y*>5gxWxpvs?0WDy+o6@@)3cnFqT4{a;aaR=fsRwVctKLN|51v;V=Dvv2-AE%Bk7)BLPI z{FPdF_*s96Q`XTKf_zIZ}=ZA@u8cMe@XY=^t<%uE%Bk7)BH24Q~1r^FK53gJ-mK=T)&Br z>o+5Rx=#7Ie*6$0x*7RXp36u6#?qxwfX>Ms6D)!n3AZze{h}Rp6Mv=ZX41`| ze$tM*jo+khqnlCvrX6(yze(LdH>3KI+Fi(g>IdhcZlIe{{h%Fn1D{FVKsTq=5B5#` zCi^CSGul6C$G(l-C9X?Zf=qK;+o8%vU zGs-{Ok$3njm3K)ugZ!f%d57O5@6gRC{{}yt=Z*b_`kAPCOS&1%AMKbod?xdTZbtJ* zJLV04rRFW^W>7zA$GqV;nKyJZnm^hxZ}?5-EuFV8nm^hxZ}=-UZ%H?U`J)~4hTmk~ z(9LP{N8QA4QaACNQT=3{;A8!m_|VPBpZd9w`=|ag4(cwt8P(s^k9_oxAL2tdBR~C6 zx9QiUZljw~{iYv$^lRcnHzPm&Q1|KIr0%1eQT?YMeDrVPLpLKo{jhJ)zsbIl##I>Y zAM}Hd{!RR8T!oRJe%N>Dzw&JEpZ%vC59=pB`mdCa{_!UU&%YcWo>DvcD__b!_OEih zvwy~ikMUQ^mvl3De&xQOy2;PnD?gu~2e|(%$2&@qxwlZ>L&imi`lFXsSL#PT`o|CPp_`GPe%QC@*JR&9H>3TFe(=$+i4Wb3{Pe@VMgJ!I z7P=YjU-W~I{!M)7X5^bL%hW9?azo~py|3)__ zz5ns&53bXDpL^Bcux0w(fpk;H)A$u8KEI)#pSGXh=*_Bb+&W=@D(COrrJoC5tN*@y zgdfwpd31C9n_2nivm^eEw`YIlx$NhgS)51u&iEGp%#C?oXa2P%d4+Cj-aGw#j)ifi z@fR|V^!b)T9q;rrz8U4$?C-Qp-&8AcDaX6x`*mI8d*bsG2hMM9UZ3M)N)OL}=mXuy z2d~z9!1DQ(N%KGdpVNV* zIe#>MKEE{WxW1v;xqkY}L;jGTX74kqmC{Y=o%2io9=}de^0)o`(aMMNx?KI|maI>7 zQ|q_${Hw=RH_H0yIzQ`@^P8+o&TmHRlk-RGf9+>;Uax(lC3%f*M)|#ZSl6i-rO!_l zlHcfNl;6p(cyWEiD^ch1dCT$6__6++Uz6fj$3grUm*dFzh-)5a=lNN`(fQeDxPJB@ zlYY?6==vw^Up#lAo7&gX_$FQ7r2Vr#x9L2c`)8@|9B16@-zMWmH>2@SdjCrQ=w>v2 z+R-oXe@*&DH>3V1J^#`#x*7FPJNo7M*`!}|GwOfR^E>^bn^FI?qhFr?P5MPQ-T$Qh zgZg>+jotNy`W_vpzHR&bzxw8H`}wsLf8}9{f8pE{IsWGC z`1AXif95LX-VLg~pBv%7=-=q(4P*JU!@v68>^Ij`U-6sLNAquof9;>L-`w*X*>6e@ z{p-iFzw%4jziu9j{d?b?{pP+`Wxpvs?0?@sX1}@r*R$W09{LX)&Hlk-?wRgN$=`@yXDM2&7X8r$2;p+|Hs4@u8cMpZMS-ekMM2Gx8HB z=8yQ9#6QKgFp58M!bjXp{3))5k)Jr>BYr0S6xYJYpYH$9<@&{aO!_(E6S;m-f6DRB z`R6-=d-yB0?i&Qul31H>3Nv-^3TZc04!Wuherx(#_!cfp$DMr2jvmLY^DY&FJ|d zwfk!J^ZdYhcy2&9qvr?O@!Wu~QgKhZ8N{DAqvwazPU{ap>kqQ-(9LN5 zai7GzrT1@z%p1BH%^&TEKYo+AqnlCuxzEDK{g;Uk-HiOhTeFY-13$!vZbp9YGx2f% zY2rgSBR~5KKK30GAG#U&i4*Id_*H7%C*2IzKXJlG{3_*3x*7P16F%ZrDPPjfz)zg; z4HUmh`I2r1e&U3W_*Kf6bTja$b*8)}e&jDCZ_&*te`!bF;;U5NCfyA3mv-bWev`aK zH>3Pb?Uc9p$zMp`qMOt5mwf|YrS=W{JpU&K`v>>=?7Q6mS8Cr)x*6=h>{HAe`&Xsr zE$L=3f3&0i;5Vr|=w?)ZXh+=fo5UU6jN(r_<{f{f<~`|VF#qHkaVP&O75Ai@LHudQ zyyG{ScXTtFf7)@~_)V@mowqQ$e%f)}_$zhYNjIllKY54WB=7K>QT|b9h#U2%QgKVV z8N`ov#0|em+|bP^ezYTQ_)X%M&RZD8k9Ncjf2HD$mb#`Zv0{5Wj!H$NPgy`FMYTKXHox(5JKC+}z4OQ+oLP&vjG(O|F~z zZ${V8{>pPN`>)A!FS;2$|57LMQ9n(5=w{?6&iIJGi4Wb3{NxEf^2fx7Zbp9A2|m`3 zi4Wb3{KSd-4&qn&#T-9={#A~5&L45YNBk<~OS&1{zYr&U#II7mq?>`CIN>9HmGULs z4E)3iAMvY{FX?9BCqBHlA$}(BZP3l={S9%#NBm5D=w{?6PWXtQi4Wb3{9GqKuHVFm zZbp9MjF0%6_|VPBPoDGKM*f>Tx1pQS^Becc+_!T7Y;xa^Yi<1yfgnf z&U;V%ChtAb&FK9n*U7%g^;f=_ub-d)mgAlMbDVt}zsdfMZbtieYWG6+bN|43xNkr= zqx%Q)l(>_>Ch<>sT^PlmcElZjrQ)7+GkE_;JK~PtB<|>D6o2Xj%EHj2nNY#+`IC7(eY8H-3|G zqnpwAsk4lm`fD=&RF?~*@zaiRpv*q?^J0 zJMH+n4}O!M`=FcA&wpsgb>pwpbtl~nuAiT?ao@|&-zq<){6RN^```YP*~icS@F&Wb zbTjbtb4Gmp+_6%=q?>`Cez@aTEEOc>ld7XOZfb~ zK7Tjz{fVzP+dto&Kc835-|y@AXEdJ|Tk?GkbW_JW$2Y%`eZ%#Z_|Q%J4`|x-{f@Em zP56BL*zpOUj~_ce;q&oh$N7Bcw$I0p9jE{3IQ{$hu#Ug|d^_La;m`7~w$$~e@AjBF zlHxb%`X_w9U~GJ&-!GWd|HAj>xG#QJOX7}hI{uUVm-79QN&eY8^|PoK^1ZRi=kC!> zf4+Z`pL;0cw0x{3<3=|<{z>s8KK}gqq~pXlI^OyD+mauAkHFt6F#Wv(bKCa|#^!JI z`vsH6H{tsY^0(`23)<5u$DU;Iz!@h|84qW}Nt`kU7V{N}ZH=<@ZO*Xr+E z(QlM_CRdv#{T4QUE86hSnnnHAo}ann^v$TB*}^re%yGQD>4?;-l&$CAOj$X&!>ZO^-@b6|(Z!9|EWK@EV{ys3i#pjGmhav7)}KE7x7Qu~-Zc;1 zf6EcKCyR`bZ*_$3*tvWzb%$MkN$TcZzAJH=%P(d8`My}-F`d+a{|k54su?E4ts=kgt?yU5LR{NXDQ z!!-!z#*)LYc)N&pi>OJ@xlo_Jx+HaciBtOb+W7N+eCZSiNgeItlzzFYH{G|L8+{bx z2bvH134gFxd#_@B3aa_E)`LguPYY z`?#NXe{V_7n|3iafA-_NsV|6mn_aBW|3EeW$vm{Ed-7z-!F%u?b`kB>_&4c$hrGVv z-@U#k9*XO;KX|>Ef5PiU*rVfj&w0I=Vcjx*5%yMn_mzI$-N#CD-n5Ic`LiGAO?^Sk z+w5Xw{_MwjQ!jGfw2QI%vmfV8y~uf+-@w@XvzKG<`vu1SdC9pmcn`aX_SXEd-{@Aa z7sqp6FTx(xCqMIgG5wI&i?B!aZsPS~GVpp4_ICZReBJYplw{pA*u_}=*^hOnz98yu zb}>?a_G8_t7g=}O#aR8>k9DVBWc|%=V66W6$9&y;3nf{1+QnG?*^hOnUS!?PZ(ywc z?8mxOFS72mi?RB%AL~xN$hw=~z*zlzcl)~cuPn*B(=Nv9&wi{s^#xIPvx|}XvmfhD zy~w)LF2?H5eylt7BI|E{17r0c-s$H(x~wGUO}iMIKl^ds)EC6O%`Qgf&wiXY^&;m@ zyBM24`*GgXi=4mt4V;?)UDf-a3om~D@| zatXVL_Evp*(Ca$iElC~i;w=5}Q|Jr5IPQ482z%@JjFURXFH%Rl7}N7}+X&YgKW~WR z4$eio@P40Lo*|iQlDVZ_RF1m})zc5#;f^g{2yX@1;8G=5V%_mEgS^FR7=d;Hx$q8)vDYbAMaqg_P%=4&X_ zkNxA&Ot(|3EnoiCN7U)sf4{zq?VkDq?{tc(7|(R1Fv2zzV%%umce^FY7Mk4V3? zi!uMz{jDi~Y}fwO*#0=KvrF3Jr+#XGsI8Cet{Hmx*ZK?VyS6@5r_NqqFC(6knq3Uf zIGf_<`10S>o@0E)-!#5GL&P{5mmKcHj&Z(Z=YjV1!Dkt0w`Uw8^|Xu9H^rCY^Q`vI zruYU|`@C>{a6KC_p4r72`H9V+XK}{OGrGvQX%`iLQ+#%Ppuh5F#Cq0s6WXi$Z>|2C zhwX2OgXFlhiyFTvf7SKb6d#|nj$VfS{A@|PufQ&%y){1S`J!G-A4Pp(7h!MJ_wM$2 zrFw?7 z>jU>KJ_F=^jO2Zbc2W1QCVloQ)NLL4y1e9g7uF~2BHF9@uZ_=s$q&3@M%U}96>{Cm~{c43cW13xD zYOf!^f1-Zy)e50AyBN`@*f%-v&fW?UzuCpe{MnCrr(R^4NdDN5d81xr-e?zN`C~uk zje3#!Grxhc{IMVNMtwo#&Fo?%f9%J+Q7FxfH`0f55$m^DNQSpzF;#Zs$bM^ zNAcU3&e4!R?hVW%$n!GoqR#zO`Y-agHN8*5|D)icl6FpjUBokFmp@|9l8x-2;kl#8 zery-nzxyNKpQJs@O4@k=b}?D^afq;Q-iNdv-|y$yf4-zWAAnude4Exg&k0lKUGX&YOkI{!aj=c8j9}T<+3&r+ w1FwA9_a*$ECcDZF@vQtEH?1D1e{--cZ+J2YZwFVG58a5RaRL5%`0Kj=0YiA))Bpeg diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18.gds index 3e7d706bce8b603c8888ebf26908f91b3242ec3b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 10138 zcmcJVZHQgP9meOLd(XLd@4YKgqA@m#RB5HgnnYqElIm`fmiSU(6Vck%3pLqD-A&e) z1cC^q&<|EbZBbDPmX;8|h@=g^Kvht&f^9)4wWWo<PIeg(^z*gU>TF&w05!GwUi| zk)QtOJoA5ne%9{3D z;1d;#d1n{VZX=56yL+8pocNd1i?G-A*IWN9o&Wv_e$PiSeq6DC#2DH|v`6*uWcAs( z6{+J-9Mex(|7&ahj~O#~7JASAS>C@V>~;SQz4@KfS^vgrRDLvz-US!dfKFQN7m z#&lnswAQX0JNE2)osvT+aWmWM-vXf4vip$1mfYI?3K>O`$8acq5UtIzNJ|A_A+_`J8`#7~eD>>}Fh z^i?Ap4ooS~p`6s9Eh|_UB=N0|-zEhEY zX%|!ec^&;yUlM+;UG)C_JplE?JpjA^*gatNL;OAL=3Q|i#&oagtuDSXwQIYJe_8sg z?7VO2{r>F6Py0Leq2f_o`>TrGjc$Ju(QfPC@V_D+|M)$ubus#Wn|GX@S5NQUHN%7g zBjO|Kd<#v0J{kL;u+!f{nuS4+_9M%$xLV$l~Jf7^fUOo^Dhqn=KPDW zf2N8IP=HTR5v_6FL$Eir-mPfYHteGI2)~D6jH^A2dr<4fK*fCjoi|Wv{JM`-%pOO^ zu#0H18OQn`&ZYYweA)FcPGbLO|03+k{);!$?b%83cJARRJ@@cbJL@-iA)a6ReK#(g zIUFaF<3hWr@oCIBU;q3?r^8d3)sxiGE~fO|dz`L^XGQuasiR$#J~n>3M}^u0_qfLV zs^23+`Sl-gaoJ}m#78nN+C|0Z^;_%rsMcEKbPRL&j}<4rjsJ&TM0;q+p0m(z=|C;hXAj9<*pa(WT=s6Iafs}Ik+`70G$cqXDdNI@-mQ-qsm)qkqzFt7C6Twai;4Vs9rLDMWZtxksr-2z z^QK;8{ds19rLEXB=WX)F_Ay7W8Tz@%$s&Gl|Qdz-qefC z-}dX7%Af0madX|2MBLUchT`|n2NU1NwVUwoh8mBccC?F|-2Ub7-?;xZpZ~_5U)=ps z&wn_l@Ynri#q25M2fK)t#rtDTKRDg#Mf+R_y$HM2hvH*R$DY5U@rU%;2Y9~7;_+qI zV&DBIuK9UIzEh%IM0+$o_CL5R-9N{H{fmRQUH>BN(fTQl_L(jo%fmiCvH6axF@E+P z6RwkvRE-^oKeh7^(PD*C-lz9Dm|8{k^ z>jVBs)}3}y^$+zwad$Pop>{t1kDV_X^D}>>iZ7@~ELwk|cIs2@%wPU{7^=z4H0sYh zIlq~=$azh>sQDezb05L{aPK%hIiA{ge0y|#uzp&9vHTQ&sJ&j_P<*`4Fh1UYM8-$E zsQDezbDyS;`?p9P?P5yL`#g2L|BKYoE=nKDFL3^B%pc~j{Vx>1tv|+-ac5&?d*3jGfL1*jdNgeHCN@d|8aVeXLRaC z*z5O)M*RKfoZrEXHNvm8i%a+~?sxvh?j_E@2z%7OT|XE%yM8>GH|=6-{FrAx<@}fY zuk)XaQ*r;)qkngQ^Xxq6^kT|?>x-^#t>4y&_^n+`)Q{J3+^82hZnTT3@#A%@JM|*# zZu|92)t}d~Zq%1V-KW!Wg<8NaqCM^(_cxAPe`Q6E8~05yHGaH~<3_#6@uOW#jUU%3 zbzHw9b+n5qz1`n2e)P}rBROugi>dMBb(}ZUmBhTUb}=!3Sm)NWh!yo0v%RkVBJ9!n z+dNT!=Ff2;S$EpSRQ-7!Le>c@Sb^(%>egZ1P7XW868 z?x^2Cad)*p{tcTylIJ4+MEs|%-w;y-&v)4W@i!uTEfD(~(fHq3x@#bO)10)rnBTv9 z&)n$1t$RlM_l%LkMfAcdP*hQV2L;j1`oZs$`D$+0QqWs75 z8#{MkhE(+loNF5Ge6CFC>*uOa{L4AF#q>Jwh&u0xI`@R~51d;X`32r9puHM@j#G>G zC5)eF-gt)T%`XW)Rd4u9A$r?3GqvNJ{+`tZJLY4&w*)Q# diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25.gds index 137c5dcf8bf69b5bd154b7bbb0439d0cd1ba649f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 10138 zcmcJVTZ~;*9mdz$=bU}6(-cyuBQ+8*-YC*mOEsq0nHII)NTwwyMvj4ANa(a9v`rc{ zF}@L>)DUkW5Dmc>V*n#QC?@6-?i``Kdr{!JBsp-+swr=(%rLpxO?S0e;m5;mhR$>mJ{q7 z+s?JW4&ndYhWYZ)spaJ}la&+4&bZD6&b{g$2Zzz)`B;yAALF&I+)%iUZY%wxvabDi z@cR|ZWp5YJZV{#Qy`x?)4*u%(BJ6ejP3C`-_dk3Fey?(F?&6BW`<$a)M0-*XPo^)f zs7M_@;*5U5{BN!Ke*lBAANs)I<-va->~;SQz5A8dnSba>>S-5e^pkr2#Xd~$-=dEn zR&4J@Kd_5vulrx6AAZ^E#c|u~Mc9-2!KV=?^uym(q>grREj{C>US!lktUVaI_ z?{CEC*H@U|T3_SepdMIfq}G)fU0*dl*A;c5)|EK3zV_AUcew}g{TDv}P;u}T{2O)= z?e+Su()WJs^&-d0`VE9Vsqef4_4}e953zh5{tdebdsg3B^!h3P2CH$IQ4F1DC0QJK?0K5OpJz)MD{Cv~TyYh1w)1$6GUw&ZW;I%&f zb?NW2dEd~7{n?M7_IK<<lY6k zTw+3z5eX4>{sZriqk`D+#nzu8fL(-r^^6Gm(Jej`?%2$XWG1wW$|zP5`Wc<|{>AYV z-oFU@|5cF@cEndu5v_5I1^0&5`HHr-VHdSWggp#nTajO6Ev3&odxA^|Wx!?Q#McA|bm*?{B#f9m1?%_E-_wZah>o@vYI=}Y6 z{J3!DaGXev3+gqmr|)0lb%Qrnq>gq``qcR89u;ek+~XSa ztA3A+$%LAChyhjBNK8b(BF2Y{l5mxDY@JaoY zFL-@V+@IHX|Kjzcttt2yVbA(!4e4L(Uhe&iuqXB1Ls)$i_}Wmhg}Fhyi1wtuhoVy7 zd$1yPw2L{t`FYIyZv_^g@%}~Flm4l#xz)N}rmwkJX_=H`F@gFf#5^A#C4?P4x|UdMGy{gha@W*0N-m)9|F z>P5y)ySP^TtQ++r>t_81=IU2ojcc)Qm1iq5Z`#FN{=ANPQ$Hp0HoKU~pVu*O>P6;F zyO_(L*D-JEMdok)2IlhbyvgU?`E^C+O}m)OpVu*O>Ze5BW*0O0^E&2Dy~w<27jyaZ zI_6Ei$o#F}z+C=ZKa88}W=h0ub}<%z_5G5k z`$dtCulP9j-KTKPw=43Q673?|lku_t(TDQ=^H~!67e~+f{zcf6^-~<}OMN^>d}lSg z*nGy-7(aW)gzKauIbZApydTX!vKG^e4YY)WhuJ8uL@gqmr{{g1I^O?9>S!0GkL4FRe>Ub1^Vj|ti{I*x z@#Oe&JdKDajEiU3A7cJFf7~PK_0RE9d+@(lKYv;Mac;Bv2lCuTyEt=xYv`?h&{_Qg zsiR%Y=?9Nu{ve0p@fz_&#_ZzG#{SUoUwqf=+DkP;XLd2CKMh~IQTt14MEnKq;_i%p zT-STr>&5<8yc`==iL`}^wUdM5xUgWsZ zF6PFM*Rk%@i>$l#8kewQ_PJYuj9B; zFLL~77jxssbxIxAuSgy3Voq=SJjRdyIesL^jdn3Ne!PzJhPo*+Z_F-c<`3)K`Uzr1 z{l(&_ufGU;vi_DQ)(`XN`XO0&+QnS`c^%`XZc4;$b}Nmy|!S_4t|M-mvZwsV;Bbxn-slT#BYAC1G}hmbAK8?-pvU5-e&K& ze?dk1rCpT&RDLt(4&+zWCvvW7v`5Z0jrRJvDi;5G&TT2Z&O4&cJEG1#vHTd$d%;l9N26H#v)KN0ri`15?sxYzMqq7h%@+}LQ3Jhy1Xuk-mUd2SJ_U*ufc z=)cXnFhA_QBG2Qri@EWspBtm&|2E(6fa3r^q@DL+7jykb&P9#-Mb1T^s_*N1r%3N8 z>768d$LBt*$t#d+^SOVX~iGJx~( A5C8xG diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15.gds index 864d1453265e041de0bdfb0d5cbf69394ebb1bb2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 13050 zcmcJWd#Ghq9mn@M=bm%#J@?L?JCkOkQlp8FY0x{0n2P1q(U6|bD5hYSa2!Ktbn=xG z3DzHpLPbSXiV*gWqQXdvOapsB4=|yEf+&-y2n#Z!7kxi#?e9K&pV|92%v4w8GxxjK zcdfP8`mS}>-gBlH75!pR9NX&`7Z*MK$4{^E=hOS6TW;9D?TnSR-MiNI-MqGT^X|19 zcVBz!+RC=uU%s~I_FLDkdF{&SSDdkLW#u(1`?j4~6h{n(uUNh3tXF^M(|>B4DRE;OM)i{^?_@-jC z)Gv-Gw$eU7gVTzl|FQ|!KbLh=*He$${NtBq-{R{g#D{K9`L9mxZ_VwyUDsnDI{xx{ zz5Ug?zxbir{c>5Z_@$hvdGqLQ|I9yh=PN}qs}*5x)Cxm4 zrPpV)(LUvhUu3`8`+4@8(hr=`Ll}|q_jGUjgArLvb5v%0=82SrV)ot%``=fOq?^i0 z{f-*`xsPZ~{YrB>o^Zp?qChuwJ@ogU%zkrlVfLHSJN@)?`AUtb`fqM1`)^9`^!K;x zzSaKVs}s^Lx*4@kIqo07$$g`nQ}>_uh;sY~&ugrY)c;C`Ij`T*P3iUiH~j1+_!hMQ zO?>F)!TjU(*>A4b@AysWo$U`lsku}6(Pt;bhi*pxS&bF_p1Wc~`i*W*^*^tu@-t@U zRC%|^`$Ub8>vwc>OQZh>_(#9beslJ&>^G&?@BaY*@N?O3j?T}1Q+nv1xjy^NVUhi& z^iDsy=l7N4dq{WWTxY?b&Zi?;Jn;3!lh-bMc()H>HRE@viKz`1kA| zo4Z>4!T!OzWB)K)*H7tZowEK|zoyr%8Ts4RFFtfL@*l?jm)Bp}|F-tMZ(!0ozp#kGr!j7*4s2*dnSB=@{Dfkddg2*{i*$L z#Mk>}{~Bksa{OqAAKEwjU&!s7(!=(9Z|S~2&U)mEv$shu(9LLmII-d5#Af14&j2N- z{1?`rA%;Je?@~?NJ8INtZPLw48~tzi(`SJE=`+TZFX`q%{KKzhzd5=l`%UTf{o#Q2 zXOGMNiaOt6e@+n@h)_M7ATv)_~+`WJLQWBkm;LH3){L;vEp zvfo^HL-w1}JN?5K>tue6=3A%Yir?1n=;kqjU-?-&CFiH&Q#n6NX88A$NjC$3Z)?td? zW{_XXkz4#GxkWdl{HAisFMje1$t}7W<(G2g7N1FO(ak8oshskQpZr2{i*82wr5y8) zucGEX>1Hth<2&-aFC1T^<~`|VF#nWe-tn8vJGvRoKjoNr{1r9tNjHP}XPquTq_(ww z%?(%Ucj>0|&hy&w8{hG`hx*5$M<;V?wliZ|wOGf#j z9J$4Bl3R2$$}iMa?~ALW=g{3i2;ZbtJ*Ipz(&$^4~yOGfiY zIpz(2Ma^5%&0zj0$GqV;nKyJZnm^WA@4ISS>(A`JRbJ_)^v?CmI>*QQH}RpHk)L*o zwcNhho6qf=(!=)g(Y}c<^{Zs$XP;x<*#AuC58aIBFO^e%@RJ`%ZqUsrKa?Z4_)PMP zZbtb{<+OhAvwk4!2HlL-59RpW!dLOB>|Zj2&oAbWeV_c8?EC1Z_y6+wNawFD)$`f# z&I6v$8rMfp#@F$0+@15$Re$l#?(5Wlub?K(`w7%NLZ~juv>wVq* zqn_R~xn7fgqMOpg`uq2GUr*!Pe131{L*wt~=eGX$wU!pwb@#vj#@x@r<{CAwNjHP> zr5y8%zoN!D>E^-aSM8*~11p*G;@pUu=g#qCe0=|H`J4Hf=5Mdo=j{`w_ZHGkUGJ=) z^%d36b3Qpt<5!aYr|18Y2kZaT`-w(==|4a8-|RoE^M!O%dg_1c{p)-}|2UtR^pEq2 z>Hf9(`5eW^=c|bi-HiORcV!>Xhxj2rbkqK}{IWlJ{9CV|G}#~9`cDp7mxBi6w zmyFhD|6eLwuFtOe*;lCFWM83vGumIMe``Wze?j@BeRJ`B z*>6e@+aJF_`^|-Ov)_~+`pFONS5$7efAW(U&d!Eg9v9 za^wboMdc>xW{@AsksJIbxj{Fh{BX{}H?RHL#D{Jk%um1ZS5&|8lmEn^|6FI>@SBVu zx*3gMDyR9w&-_8=4c(09k81L20%8^_ACb>m7qx`0FoX_NE{Xo_Yx*4q> z%CT=2HlME zLpgGTucC63bTh~g<;V?wliZ-2QGPflEI+ET*ZINRaGkOs-IU(B|Mx#r6#X-my&X0F zQh!D_&+PWka{kl)m(G7B=U<}!NH?SWrt_zK>HJv|AG#U&Ip@-TI{%i$hi*oG?sNH~ zeE$`n&G)}-mfumEQ#bYZuZ{E9+&{B_{!=x|mvl4mGfv}S9zTnN+&L881kMT3{ zrSp5q$j><8WBg3~>G`2#vphtLe?$18Li(`?wRao{ZbF> z7Tt{2FXdRb_$oe~{hZ&*>z(7zb=EC@lkr10r`GSC_49vG{_q`Fejv}S{FwSGdVJdagDbL+&nD`D_|VPB&wcjF`#013AnB&`v@f)c zf6IF_-TzYc-Tcu*xt`feCS;t^O|{cqzs7Isy-j0$Ti&ZR+8+*cyTkh@q+N6~YM=V2 z-fK77ufO+ho1epYZ`7#2{@$qEm-W3^?V$O)?<4+w#$DRZ_3txI+?{^Xzt8xJdd*Mz r?iSyxA3aix_1*E;U%unQ@|5u3)TX})QEl6ItX`szku-O+;!N=$uFKBY diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18.gds index c60f58b92d3995391122dc923baeac8fed57feb7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 13050 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25.gds index fe96bbc4ffe97b2a0a55183843b6f3830280048a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 13050 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 Hai;hWZB*rb diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15.gds index e8333d6f009de46270f86cbaddeddac2b10fce7f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 17594 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25.gds index 61bb2fb2c6e9d86a6c65127da4dc080316c9a7e8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 17594 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15.gds index 7fa16fd67b7f3d063ef29645353df9649dc9895a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 12902 zcmcJWZK!2s7035E=bo2)&bc!tjy7c=6&X6_OgU+V)r_Mty)!dn8FdL~#=se!e1oAE z2ZKoaR1v*M7)4l-L>L-T2@&sjkrYdtUfx#t#xqFeNe(>vYblA@#k_;hMNzq&iP?y95PUbA)e;QrMk*RHN!dvNvY zg9ol(-Ma0@3sw)^c>U@X@7Q|YW!sLtcKh469@)0NC{F41-?-zJ^WXOKJDz^st{cF?bRFPhZ@B^J(J?k9_^XaWOr; zzw`1mCdp6g6-DohQhcV^uz9fmhQo)Ct{%DO(9vS)1x4|kdz?I@9-nIJag=?$xEO5c z7AF;3u&>A#!z;z_R$P88%T2W>kJ|KmPiB2{a5(FmlF#dZAlW~qw68~d=N3ix?26-W zNT`pg_E!Cso3h@`QOMA9Ftt zy=1@Sg8uvG?R(rFhy6y5|7H7H`(^x6yX@N!+fDkiU$)Qd=lnbV%0GGAxWA(FW-jD! zjXw2*zUjI#T|b*<^>-Qg)|NoY)Yb!2)R=!AX zs=d`d&kcW+_07?qtZz!*s=s_ew!8d5MeHIsBl|puUGz=trhZFC_J_CTxR1`LNZgT| zQT%z1xT8PgLs_5rm+h_NA3vJyPCi-@yU5MRKF?tn{TXF9$;~qVE^Y~SqsGTS#LUu(Zy!b`A2*vKW&ds!ydLKzM89HeEa1dSgVgRzhj-vi0ef4W#Tt- zGxDE3E{bnYGmn0kRR1RZA~)CTzhB?OYvX4Rj_mh!&cW{BTNSa3+>Gou?C~}GoDm}X z%Q~fFf84K#UF2qDzu^p0vrqj*_J@13-O*(gv5VZa{jxqTs-01kx9NR3UgpXTIiIHF z^Yf#oKYm!xszxTCtk~Dt5xJ@MP(Q7q(l-a6&ibb0q5g1pwm;+Fvi{KA9qW&D2F8DL z`F&a6l)T-(^4|G{p4WUbyC2rSB{wB+)gKl@qxhxgv#6u)Jig|WNLdCHXCBsT;5JV*VZZxT1;W)#2loZ^N) z@q@$-xf#Web+1^JuGSl~vn*dEHzjY)e`ibfyQ4D%{zLpmZbtqmJE}kIQ-6@ULvBX( zhaKXM-5C}4BsYWj_jUHb?*V7jlK73>jQqzAb%TAAxGp}ajI?@KlKBt8{}qGKgmz!E%{xNydgKE{P7&?Hu@&(HgYpuzqL-G z$NFWW$NFVP`q-IVk?ot)m2BUXytV#`6LBYQCUHk@t`~pm7X2Ajx9GF}CkFMq^zvM{ zOAl0}ZjqZ&{if%Xcl60WB=5-0DE~Z%-{{RKzmwct$A996zDeBBH>3CsKA-2!@J$t& zH^|Ls{!l06o%%7!J90D1Kl7ZprFE|)aYJrK@k@Sc-rzs$A7tJjH>3H(I{3K)Kl)3o z-*MOMdmO#5%u#ihC0zQT>wN zsJ_VG%Bk)3#rPt9;vebr{_gr{iVyoV`Cls%{ZCW-;LK|M zZ)#^xiuMQ2r{taUt4ZFGo6dhze1^xe9`E1iL-dfFkv{J^=<)tzqKDj!^wa(7OZ4m$ z%5%xIC*P}_u{Vp7x9)GW^QqlG-;?#aCDq)j&pi`V%T z`ljTq`uxTpzgG@c#BbzgLwemqCq z&^L)2ax;n_b&B829}~Zko07Ns&vV2d{TUVaBsYWj_g|@X_hA#HzWJcSD!dBZ;0QFvY+H;Fn`kdOMa*GS4sR%_s=CG|I_<} z^wRr7N%YhGU&%9xozA}{@gKPv`Oi8tIjnlSx#IM+ zy#APKpI<*dHh=yo$`9WGlMz4qUIB6=PC=S1{6*7sKb{}C8{=S1|{yCv#%lNxgk zRCj=*BdU=49h0(IwJ-lLZtp*>xmLdetLYD4AGc$FJ^jc(?1$|SYHroP!&3L}?6|$* z4xpyb9YWOq@^9nzzWnnY#AucueNWkUY!dqJ!1UdLxp0S2^RMBKr`A4y2hwD}=^c4` zr52TYb4Dd{@tTJNHH?gU5MnS+$<1>_haBo00zLgIRC%Y(?~to7Qhy{~GS_YU88MJM7V% zhfCroa#Qm8JyzcnpM8&Yz~4d~Q~LF{5U)6xKIv~EzOPk_Px@O3{sy6cPBGp**!!+a e_gqx}R_k->P2UVxZ@c#F*!|9O{~wA=#eV^(W)`Rb diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18.gds index 8db8dc8e18ca39ca3495dd009db84d849f2af854..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 13190 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 Z@^flU-~3l=2M+GN_RZz_WKmow{trKb_7(sD diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15.gds index 147ff9ed2079d903eb3764f4adb39ed3c1c74a3c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 17428 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 J(~LM>{SUQno|FIp diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18.gds index 3dd649484d65875f7548d820d210ac2bc070d95f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 17684 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 J7R34H{{WyJA=v-` diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18.gds index 9c5b695a67a3645da770fd428da4d322b7b94651..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 23316 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25.gds index 989f7d15f497ca068953bc4d77c01bebaa178bd1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 23380 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 Cc$EbJ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15.gds index 8d2560679734fb8822d5a283212a75e28c3e8896..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 20390 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 MA61WGO&m7=26|SamH+?% diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15.gds index 4e78a32c4335d6b6897a0b3587cf0863bbab5a07..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 29682 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 MC@U*sL7eaY7jRz^GXMYp diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_aup.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_aup.gds index 35572c5b2adc0f54ec8947ce2c287199b6a452c7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 105426 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 W^_$(Sf5RJ>sczaI6Z>&w=l=!I&P(0^ diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_noptap_iso.gds index fab064b941f1e42ded2e58ba4336a2d6e0bfc189..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 181086 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 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_aup.gds index d119d3a9dea7dffdc2c683b76450fa6254b809f6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 106004 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 z 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 A+W-In diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/rf/rf_mosfet/sky130_fd_pr__rf_nfet_20v0_nvt_withptap.gds index 7ac0f31ae8048f4d0d261fda370be3b155e5f2e4..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 120878 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

    ~Huzu5U) z_lu^7`E3umUu^$N_lu@C`m5)8-D}%fbKgByaZMMa`p0(EJ^Ui|FTHMNRR7q{>Ra-Q z>!;l>njY>yb&q_Jx|d!zGpc`VXZ0=lMd}{9XnL4W-6Oy7NA9Qo@j9l5{)P9uU!?Bg z6HO2O)DH3szwUnKa9+ps&`;gNFH(E(iBbJyJL(>Ok-CR2M)i;FtUe{bNZm@Wn`wHu z|I{7wMd}WIF{(doXZ0odMd}W^XnL4W-63D3?%)@r`onhA9sGs&yPx`#+rxb74t|lk zgHMd=58F|9@Qc(PbTO(wY&USs{UUWIy>6!I;r>&1$QP+Q_{FIHupM;=zewFd7flcI zsXO>Z>JEM}sz1C(SvT?C7g;xTU8^5^YmF^Rx`pxT8xA7O=>wfBY zZV&UR+xW%K=ekdf>Nl@X-Nr9cx6#F@e((O6)&39I9CmZf1Fx~ZH(j*$#{HkP9Q;$3 zFXBTNBmdOb+&6uDO?>ELTlxhb~6`#Sge|$vn1Q1@WPak$?H1`<5TAi4R?j{40OszSXza#D^|M{Ge(*2IS{M*f~p zxv%#RYT`o|BY)pz?&}|}i4R?j{Qci_-@pfI;zJiB|DbJa?bXo1n)uMg$UpR``-cCf zCO&jA@{hdTeWNd{i4R?j{9}{u8~cZv_|V13Po1GwQGY~g8M)ERuskJiM8E=GRp41Vg5h!0(i{L~qI)E^Nax)}MXGx(@KB0h96@>6H< zQGY~y=wjrj&fuf|i1^UO$WNWYNBt4;p^K59I)jh;BjQ6BBR_QpAN5DXhb~5b>I^>W zkBARljQrFYeAFKiAG#R%sWbSfKO#PKG4l6a=055VeuxiUjQrFYeAFKiAG#R%sWbSf zKO#PKG4fMq@KJw6eCT52r_SJ`{)qU{#mG;c!AJcO@u7>6f80Jh@ws!CeP$B*+=(tm zpFi1-Z2aQ*pSxc)y|I4b=h*R!?0b6MOw&U@eUD$H@9>MJhyEcu_xKARbwB5j*D*cx zGxqR{j2(QU>7k!7kH7Gn?q>}1I;Mwy-h22(-aGh2(?dV+ef%QtUHqcyp}+fD_lwLO z_(ju0KXV`XB6Amh(e%*I+>2ji?!+&e9{QR4@r%se_(ju0|K5Y{FMQPfd&PsXe=Uz6 zaXpV8(eyBXb=dO@zv=m_;&AL=&f`a1$>T>fJIY3&wR}D#XUEBzG!;rpI&f(;Xk^6T3m?zlmFiR z;?!@rUo<_;pJ;P`;TPRMA-2VS)eTW~LyYQ2$BJdY-rjrPuZa&`jQpLSa9`J(YvMx} zBY*3#`*!r##D^|M{vBU;U-$cK;zJiB|ITCX>p4&pAG#R%dw%4;-p|&=hb~6`zLW0j zKT;DPx)}Kf#@#n?e@%SoV&oq@?Y^PoHSwW~k$?Ci_YMC`O?>EL6pE_ghss4!g(8d3s{@uUp`P{oBACikMM)}<1!^gct5g)o3`MJl4 zZ~B!r@u7>6pL?D7xpyk!Ll+;{Ki2jNo-yRPx$)22=g${y;b+ZjHEBF^>~-EQj(o}6 z3xCDiM>2=*@bvF~DU7kmH8+r^$9Zx?s|zPF1zzUA$OFZT8w znO*jLAjelY>+M~c9k+P9*#5A$i*1)%`z!48MW%i7IOq98>(8IBH)CDtSyB2M@4oph zw0+t2brpQ$-@rMHXIKk;^P=B?f?&aQiV;m5swHgo=JZ!dh%+vhVE-{$S& z(wMi4%b)aiape+k7gxXM?c&-^-Y)K)@bjRaq+e(k={MTN`3Jqd@M>?T|Jjc7 zg1>M*>zSNa+C|PgK9O-jyU6&VU1Y4c-RR>h(Z(NNj6=S5+4};$@G|%F1Tn9}v%I{1 z;Z<4B9KPGz3s=2;ICJnV-YyRO*xSYaE4*FovuA(F6?+%GUF>+~PG4-L1PZ6E*E8^pQE%Lgw7g|2;k9m>tm*>aFnLq1##rvMIEAIa-f3J(|8)LrkLT}&5Tz`kR7utzq zuCTXT;;OwiesP7l$J)i^{oXDvo$_{Z;iukSc*5HkGUvYR?S+TDeJ*p)pLl!Wkhky2 zoW9=M#i{RjyEyqAZx?sl+JOBp{9f+oOzX$S{vNlnNS)jIhdMZZ(8hBnb&__GI!b$? zoiEy{w{VA@XW9#`UMD@1I!?Ptou^%79YDLtI)QePbp-7q>kQgO)*-YP-r?=6SJ;kq z4DE$q%6ca2AlgOdDtv{XuhJKDguduUzH)zt{mr=MOWbYeiPtZ*^GQDE6LOwu7a0fW zBIAU1k#R(Op^Z1%8EAXW&KM(^ZpRYSo^R3nsB_+_U(N& zX-~C2llBEWMx<~*isX@4$;RyT$6Tc zw@CZYZQc&i?R(w|Y481pw?o>yuc%4;j#Y1mw0C^4ChhHS^mfP}+QnV={>CSw^ZFt> zxgt9IC!(|8B09$>qI3KrI{hM|(|;m5{VSr=?;<+qM?_z?^CqHmenoW7zlhGb5Uqc< zj-Ok$e!txAVVlQKdS8k&*1zbY>0A9T@cFL(ez{#2`TJYcI2KKB^fNE;KH&41h!0&f zz0pri9RITW#eIKmn(3nHjsCX(V|{t6Z!fM|y+#*JZ}!`M@;PvPqUOeneg8#kZ}wZx z#!oz7WWUK5O>g#FKA-c*7w3M{^F`A`fBIZ%esS$R?iWpO_S=50KgajK@T~9uy7-*f zKi}>C!ZYsYdp79@)0^|{_*n;V{Dt4}{a+UM2Y!3~MVp%$FXGZ$JXbV5%unkU%NG}? zJYO`u*>CxKe$Dg6*&fdqO>g$w@lV@a!|{tVAM||D^k%>1Prcjo#pz2tUo^ehZ~3ef z$uIn0o|nS0R1$iM5q zS#7boc;oh(-5WL^nJ!v;V}7b-ukiit$mDZ8x@dZ%pB(y%e6ihX6S`=6qo14s8-E;k z;g3C^&+EB8^tbHX<1e(n!^icJ#EIs7_OtUY-+!^|b-w?i>5cjL`yO<^*l*(>T{OMX z&;E7W_+$S?)}H91>5YDJde%L^(8hhz#r0-CIlcD&BVXimC%R~Qm_K;R^Ti>X|H&6k zZ}gKh-0k^=Hhz*W2Jh)bkX$2eD<4lPrBZe$+`tyjMhKQGx{7L;zJjs^$*9%x`pExS+}5z z(fWnsWc|YaimY4E#c2IP4(k^3Mb<6oVzhoChjk12BI_1(FgW!a#**JFHYO|MHi#> z3puP?$S<^cJLzJuej$f-3;81J7IZOMzu4L$eX-Wy3$lLUOSHc>9>08ie&P$FZT(|% zqd%>4Z2gdYnS72y7o+t9YYx^wY%j9zK^LR-5Btfwhq+s1-GeSh>mPFXqvL?Ad(cGt zd*ktw!@7t3!XJA+>z~{n`dRnjFSLEYm+lY2p#HF*tb5pRk#!Hc7_EQUj&%=yk#!Hc z7_EQUPu4x`zsR}=U5wU0_!R$QN1npo`J^hn&Gvo-eZQK^ILA z&mZd^@(US1mY?oF!eISF4(lF{Uu4~bE=KDga#;6}FS71I7o+tLIe5u0w7QXWF&clC zv+Gv(imZFc7ft{9{>wk_sCucLrx}}J&Tiou`!~8c)9fF&{qOml?Zbbn+52kSAJau^ z5A%CI?)hS`oqzI0(;NNd?7YhJ#U8V#{mL}G(NE4!n?E@ILYp^|E9xPMe!j{RfraKD)D z?b&gOrZ?tu{;5-(KXLGs_n&Bbqo4j8_$SX72km^Ii>5dF$?t!c=Zgc+@_f}Q=x|B0+)d0o-;Fn`+W75+l%vH7RPi(~)f ze|Nt)^?U9YO%L-YUh95wa?Jgr>5YE+dFC&?|HVC5dH;*1hkmXTGXE7m?0&9C^7^KS z{>lI8esStH_lc&5{)wC1FHX+7Uo^eZ&v{CpQ|$Z|e%$-dK6j?`XnLcc?eQjMn8Yzywy{5(eyBX&c+Mi>5dF$zQW^LcX}3>z8PHqo4e}mwSGp zX-O9^Z}yYF_e#$%{F(RvUNKmIkh5{O=ZpJZ;rXKJjr&hN&!utv;=b!VUo^eZzt7g1 zL$?3>?LAm%`<-+#*nhTT-GpCc-GnYi>nFBj-GsmJEAD6gl-tAoXWfKfWZi^MjMh(V z$GQi<$hrqzjMhJF$GQc-$oeI{Zf3N8VLLuQ;V-oJZPLZy{mXWI?!hnexd&a0KL4;C zpIh)3+Ps-`F_=HuZpVY}7rWo(e$n*s{I!11{UXn5q}R0y5RCGIbL*!}Hdu>NU#w|VcfYgHH5JaCPD{x)5-_Qw47pSX|bU3eXc z4_%D>oxkP2uAZ9s(8b8#^#%8}Yz;#`#D^|M{v8*(kMFI(5AmUkk)O}V_;%X(74e~q zk>3tG`FOqzKg5SFMt-hQ;Ony*F5*KMBR`)}@b%wP6Cb)5`3IimzJUj7;zJiB|KKV2 z4P9OnAG#R%xyHc$bFECohb~5bt})=_TA7FsU5xx(W574|mYVp`#mLV!2K?jyyCyz# zG4k*FGxzPjq9#6cG4f9gxo_grHSwW~k$>_{?weYyi4R?j{5+Rt?bY-j)x?J`M*f)> zxo_s5YvMx}BmW-DCV$pEB0h96^3P4UZ|?Io@u7>6fBshYEo{`phb~6`^c<+|>*9Od z5AmUkk$>r>?pr!r6Cb)5`T3q9Yp+&*yCyz#G4ij@yKnVNHSwW~k$>%N?puFqO?>EL z=2I=6@Q7aw)E(0tTi{E07Z zuHV#IeAM4U^Cevj{M1=|)ZIe!C0z{s)LDGg-9qyvT@3uxS$x#rLh~hE4E!86KI(3v z`I0UMe(Eef>TjX>k}d{*>MTC$Z=v~;E(U(;EI#UQq4|<72L8cQ?xX(VPc&cB#lTOU z#Yg=uG+)xiz)zjUNBu1{U(&_EPo2d_{Vg2XryI|G;+KcfePeKX-HgA-6ZyZ`!%Uzo33aQ`5;hx^ZUfBYiX{qc#>_5ZZpgYM`0J+H%cdvr0ne$RGX zcgI(luNy6j=ed5wb#we8*UfodF}i-vc3k(yUwFp-T>sAPVgGU68o$VOYkXpK{W@*; zPwwaXGq1ySXLK>T{>*kM{?RU1@q9jez3pfKJ58izhpm5-|D|)>-T@PSw7D{^ZcO5bBpNWW1fFL$Iti8@pBFMemRlXN#9SG zX?kP6?P2H9G=`S~U2qO~{rIZyO^`>i$Uf1TId-stC^3;j1fQInrji7rO{ zH+qxjj@j|DACP=>F*^S|b4UKj_iB=xp2f?I@`r8glRIqZPb3#zjPi%}d+yLDYm$#H zM)`wwz~l~|s!1-o80Gi>)N=>kR+C(GG0NweQS$pw)Fc;OjPiTG?74kc*CZERjPki> zMSkz0n&hI3QU1<9@m!ugwH$v2)$-BF&+U!lci)C@$M-3eE}Gux?|!TA_s*f3 z>^Hg??LW^VYSK}hLH~N|9 z7$?ksBJ(!7XnLccd5-ye%yv>_-bNRr`I~u;T;@NKTy!zYXPzUM`A;MlU5xUX=g4LL z6UjvvqkPU2<7C6uZzB7FE}Guhf6S9?H+ZTh`;9I}`_DYdelvfH>^Hg??LYG*`OKdp zx#(h)&pb&k^QTBIx)|j%Pm6xnZdG1`CTNpf4?sYx!n809lRlFPg)l8Y`z`OK5#Gk=QYqKi>J z^CY>)u2D1YT{&rLt;!S*A4&!pv|vmd#=asQX^@Z6Qvn&hI3QGWUv z1D3ly;QIl|P2anh86E%PYdx21E%XB<7hR0<7q0N!g>Tm+A6<;{=P&l$^s^c)ACikM zM)`A#o;zosxflnKTy!zY=b2rOd-lCG$we2Ve6E|5yXW_7l8Y`z`P1L>+?nfYl8Y`z z`BPTs$me?%MRL)_D1Y)Jo;&r7n&hI3Q9j?JNG{hbMRL)_D4+R*d5if&WZps-qxp+@ zf_aPiLuB4U7o+)$d4gQ#50PASG0JD2AeZ?=Bo|$b@|hpVW!@0UMHi!d<_U6{KSXlT z#VDV7f?Vbekz8~!%4eP+mw7`Z7hR0gt zTy!zYXPzLJ`9mZZU5xUXC&*>~5XnUsqkQHGa+yCwa?!;opLv2@<`0ovbTP_jo*vhn1 zz1-gDXFsVw?7zsoi!Mg+O4L?w+@Q zn=V>=qrde73%JJC%l0$C3LmlcFS>Y5>?a?;NG^Uc%J2H9=kogj$WOG~q>Dj5+mV}o z??5KG=wg)Ld4uQjyH?3hwA`eNK|b4&k542QU5xTOF7Vurd$!PWlP(7NY)3ABkz8~! z%5VFD=eD2RLd#9M803%t%*NUY%l;2FciMXaU9|Sb@t3x{%l$hudoFdqXnN@HvHc`p z?7hwXqUoW(??U$%o^gNrdC_(priXq$`;#vY0*%2cI4s{$we2V{N5jUF27%c z{6x!5x)|iM9l7cEc4U%^E=Ku1AN5>**EjizmYZ}j$Y(q9@rmT3i&6g08$7qCYYQzm z>0*$--SN|Zf#*Ka^PkR>&YNiaopdqS|LykwcKeSy%Xz2%7TSI%T@3bryY+Xw^>e%R zZ@cwtyY+`Y9~`v4x4tes?dO8ud6U~4=TF-Ezv_N*;F$YF(?fsXzjMFXzv6z;^w8h? z689HA7ljy0hxsF4we9U3h@;2cFPa|u#|GVBc-sAA;$X9% z{u#7v`d{Q{RilfhH|7t1)V#L-7&=^&bqBf_tv`l-;J)FLHSwW~k$>a@_od$(X8VzT zPnh}9@#pr&{U5!-{bOA<@u7=R{@6#|H=d6l;zJiB|C9Z<{r*euVe9uo8_)D>s_8IT zKQYeId-&uQnm_4c;Aec{XWSK|7XPn_<{1uun>0;nd$H^S_OM3jwQ|%Yp7_#}R zFwgt#Vle;X?>OOpk)IogE}Gsrf28g1azFQA*^jPE-7lIR`nw*uTAUJy-hJbwJE_qbnN zd%62X(?kEd9Xt7jce;OF?27$+54*qcKKJhx56AwEeEj0RY4?k!hx@-TAHTT&6|Cjyv89y8O{U`3b#mA3mdgJ-Wzc;`C#f^*IFPa|u z*N^)9zwoU4(=$Z&`lg3|eohthN1=@e_G?WH#y{Jw5ci+PsSbB|3t|8V&tEAr~4+CYT`o|BmeFr?%SP@ zAL2t7Bma~AxBdQO4q^Ni+FVAzGN&a5*MAvj_!xhM=1aO5_!(#T7=MN4OS%~N8E5zy ze}(2tx)}KL@%_>s|DyGuy}zm@>pzkA9l993|CaLkTh8Y%(fU2K)r=wg(=ey`{5ebp9PZqmgdpY6!SFOrKcM)@24p1bj(EwtREi$VUL zce-!Zj-UA>(R@i4&*Nvm@rmp=elgnrSvyX0=j`|kEjQ_6kk5AH;upz97o+_7e$So% z&=y*5(#0U3?a0M1l8Y`z`3pxpcj3ERXt_xjgM79l7r#g@x)|j%&(ZJ9e}$HtbTP=^ z?)cg6`QPsO+iw4FxBr&z^?rY%^&`#mcK)8|{J-7#do7QjCp!ObcmCY&{Kw}Lo;&38 zOJV-pGAIVm@8IXTL;NDo9iofT^M`E5bBFjvo;yshn;AWS$acLiaev`M?&tZ#+}`;4 zi}s#;{Dr68$Mc7|J@oV3A^R`#+#x(u? z>5a$F=O36pU-*t`1~j0Ll-0e zFZ=ORf9W^suSmb4i&6hkfALX&MSSRD)L(qmUlAX=82PEc`1t%G z;zJiBKlK+MpFc!==wjq&{fLjx4 z?mzdP@E6|aKJGu^H$C+8+$VmK=RWa?(es~ayL{X{|HgP=}2@^Y>m}bx*dA9KQ1DzW>>ODEa?Q z_NT3PzsOds?QH#TfBpIP!DHC|>@caTy}Gn&v;X*NJLm5gw_0!botqCn?ZVCLj&7c~ zadY!k*PhsX`M_+|nryuwKQsP|xOdsl5ZS*sxeuPRr{|8iG-8%E?f&u| tYg)|ChTMSXnVzfGmHa$UG;ALt*Wm6FTOX{m7Sf{{{v6j6g>a{ literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl new file mode 100644 index 000000000..c7d887cac --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 C0 C1 MET4 SUB + +Cx C0 C1 MET4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4.gds new file mode 100644 index 0000000000000000000000000000000000000000..06e53e0bb1cc9a3095d9b49d2819fd96eb0c32a1 GIT binary patch literal 59108 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 aT6)5+mS$I3`k(*09l+^mu?E=Q-uS=j0+CJt literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl new file mode 100644 index 000000000..f287d5d9d --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top C0 C1 M4 SUB + +Cx C0 C1 M4 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top.gds new file mode 100644 index 0000000000000000000000000000000000000000..999555559ccbc49a60e77fcc601d99aea1a83a4b GIT binary patch literal 59774 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 B?{xqG literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl new file mode 100644 index 000000000..378846e00 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 C0 C1 MET5 SUB + +Cx C0 C1 MET5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5.gds new file mode 100644 index 0000000000000000000000000000000000000000..08df3df8030049504b48bc3ed4fb51d00f972257 GIT binary patch literal 61716 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl new file mode 100644 index 000000000..a251f532b --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top C0 C1 M5 SUB + +Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top.gds new file mode 100644 index 0000000000000000000000000000000000000000..2f3b2c69e945bb7b1d835bb049379cc9ddcf6c04 GIT binary patch literal 62382 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl new file mode 100644 index 000000000..1c6f0bd7f --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top C0 C1 M5 SUB + +Cx C0 C1 M5 SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top.gds new file mode 100644 index 0000000000000000000000000000000000000000..d5cb6b9fdb348f7062558caf5153d1f79080c8a5 GIT binary patch literal 70966 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 H_QwAMs*D(m literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl new file mode 100644 index 000000000..63f772b1c --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 C0 C1 M5A SUB + +Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6.gds new file mode 100644 index 0000000000000000000000000000000000000000..1847eb88b5d1a53196c3e000fc3bba9ea18d1d0a GIT binary patch literal 71306 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 D%hjBO literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl new file mode 100644 index 000000000..c79ffe642 --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 C0 C1 M5A SUB + +Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7.gds new file mode 100644 index 0000000000000000000000000000000000000000..b772653dc5ec80d31a48fc37c29f4e2cb9723b53 GIT binary patch literal 71242 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 literal 0 HcmV?d00001 diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl new file mode 100644 index 000000000..c8c6bee4e --- /dev/null +++ b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.cdl @@ -0,0 +1,22 @@ + +# Copyright 2022 SkyWater PDK Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +.SUBCKT sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 C0 C1 M5A SUB + +Cx C0 C1 M5A SUB sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 + +.ENDS diff --git a/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds b/sky130/cells/klayout/pymacros/cells/fixed_devices/VPP/sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8.gds new file mode 100644 index 0000000000000000000000000000000000000000..4fbabaed7376f3b36c86a16027e0d035c09a56c9 GIT binary patch literal 71562 zcmeI5dypMxd8f~eG^6WiW~3QObCEP7&5TAjYyl3&>rmoiZX0upLjkd^5NsBR6^qMK z#uc)L#cW6*%Th@S! z@9Q&?`_+1st^5I#avt&f`Z;gkPQQKn^f{+D+#Bqz>CFxd_MY4u(Esr_u;Skr4i3Na z=U#L4QRg0i@fF8UzT)`t7rpT0@mHTbdHm?nljmKd|M!^VR~26Q{$iEH<#)s1XCBG@`FDnI?!7X6 zQ+Zl{ZY2E5&xb!}j^sZ34%^?{b5Z!F^0fZ!H^VpC_t<|-<()n?*ngRKll_+5Jk$O= zb6M0kXBVTssl2m3>xjCndy~54=9%hG-4XT8>0gifrt;4Etf!qn9=6uzlE^(Sr) z-<&)VzNtL*w@rp$d3X5R%*oszzdn3(>&4-l%G3Iz-wod!`)K&4^3>mQW%%akk?>9B zslQpmSQTXQOk?>9BslVYv;hP&@8@{PL_17C|6}Z_;p)99ax?RH zeJ8x#A8v_9Zf5?T*M&Ftw3c|}X6Db2hc|y`OFVKj^Y^|hynS*sT@T`so0-3GG`xlT zTjG(MnZNj_;Vr$XB_6q%`TL(8-ttsSJaRMhm%kF;f!}S3M{Z{R!Iy`3=&>#F$j!_j zcz$?;^DXhn&CDPCyYSY$za<{InfYs96W-9{TjG(MnLoTCyy4Hb#3MH|f87n?t$$%l zJaRMhHyj9W!*^QZk(-&n@x$S5dRggv?U(7nfYV)hd2JGE%C_B%-{N^@U}g>B_6q%`4dy&O?; =VzM^ci{;{l}!2 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