diff --git a/sky130/magic/sky130.magicrc b/sky130/magic/sky130.magicrc
index e0cf60a..db999db 100644
--- a/sky130/magic/sky130.magicrc
+++ b/sky130/magic/sky130.magicrc
@@ -50,9 +50,7 @@
 
 # add path to reference cells
 if {[file isdir ${PDKPATH}/libs.ref/${MAGTYPE}]} {
-    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_pr_base
-    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_pr_rf
-    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_pr_rf2
+    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_pr
     addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_io
     addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hd
     addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hdll
@@ -61,11 +59,9 @@
     addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_lp
     addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_ls
     addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_ms
-    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_osu130
+    addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_osu_sc
 } else {
-    addpath ${PDKPATH}/libs.ref/sky130_fd_pr_base/${MAGTYPE}
-    addpath ${PDKPATH}/libs.ref/sky130_fd_pr_rf/${MAGTYPE}
-    addpath ${PDKPATH}/libs.ref/sky130_fd_pr_rf2/${MAGTYPE}
+    addpath ${PDKPATH}/libs.ref/sky130_fd_pr/${MAGTYPE}
     addpath ${PDKPATH}/libs.ref/sky130_fd_io/${MAGTYPE}
     addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hd/${MAGTYPE}
     addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hdll/${MAGTYPE}
@@ -74,15 +70,13 @@
     addpath ${PDKPATH}/libs.ref/sky130_fd_sc_lp/${MAGTYPE}
     addpath ${PDKPATH}/libs.ref/sky130_fd_sc_ls/${MAGTYPE}
     addpath ${PDKPATH}/libs.ref/sky130_fd_sc_ms/${MAGTYPE}
-    addpath ${PDKPATH}/libs.ref/sky130_osu130/${MAGTYPE}
+    addpath ${PDKPATH}/libs.ref/sky130_osu_sc/${MAGTYPE}
 }
 
 # add path to GDS cells
 #ifdef FULLTECH
 if {[file isdir ${PDKPATH}/libs.ref/gds]} {
-    path cell ${PDKPATH}/libs.ref/gds/sky130_fd_pr_base
-    path cell ${PDKPATH}/libs.ref/gds/sky130_fd_pr_rf
-    path cell ${PDKPATH}/libs.ref/gds/sky130_fd_pr_rf2
+    path cell ${PDKPATH}/libs.ref/gds/sky130_fd_pr
     path cell +${PDKPATH}/libs.ref/gds/sky130_fd_io
     path cell +${PDKPATH}/libs.ref/gds/sky130_fd_sc_hd
     path cell +${PDKPATH}/libs.ref/gds/sky130_fd_sc_hdll
@@ -93,9 +87,7 @@
     path cell +${PDKPATH}/libs.ref/gds/sky130_fd_sc_ms
     path cell +${PDKPATH}/libs.ref/gds/sky130_osu130
 } else {
-    path cell ${PDKPATH}/libs.ref/sky130_fd_pr_base/gds
-    path cell ${PDKPATH}/libs.ref/sky130_fd_pr_rf/gds
-    path cell ${PDKPATH}/libs.ref/sky130_fd_pr_rf2/gds
+    path cell ${PDKPATH}/libs.ref/sky130_fd_pr/gds
     path cell +${PDKPATH}/libs.ref/sky130_fd_io/gds
     path cell +${PDKPATH}/libs.ref/sky130_fd_sc_hd/gds
     path cell +${PDKPATH}/libs.ref/sky130_fd_sc_hdll/gds
diff --git a/sky130/magic/sky130.tcl b/sky130/magic/sky130.tcl
index c97d9a9..d868da7 100644
--- a/sky130/magic/sky130.tcl
+++ b/sky130/magic/sky130.tcl
@@ -6,7 +6,7 @@
 # Magic/TCL design kit for SKYWATER TECHNAME
 #-----------------------------------------------------
 # Tim Edwards
-# Revision 0	PRE-ALPHA   3/21/2019
+# Revision 1	ALPHA   9/10/2020
 #-----------------------------------------------------
 
 set TECHPATH STAGING_PATH
@@ -109,36 +109,38 @@
    magic::add_toolkit_menu $layoutframe "Devices 1" pdk1
 
    magic::add_toolkit_command $layoutframe "nmos (MOSFET)" \
-	    "magic::gencell sky130::nshort" pdk1
+	    "magic::gencell sky130::sky130_fd_pr__nfet_01v8" pdk1
    magic::add_toolkit_command $layoutframe "pmos (MOSFET)" \
-	    "magic::gencell sky130::pshort" pdk1
+	    "magic::gencell sky130::sky130_fd_pr__pfet_01v8" pdk1
 
    magic::add_toolkit_separator	$layoutframe pdk1
    magic::add_toolkit_command $layoutframe "n-diode" \
-	    "magic::gencell sky130::ndiode" pdk1
+	    "magic::gencell sky130::sky130_fd_pr__diode_pw2nd_05v5" pdk1
    magic::add_toolkit_command $layoutframe "p-diode" \
-	    "magic::gencell sky130::pdiode" pdk1
+	    "magic::gencell sky130::sky130_fd_pr__diode_pd2nw_05v5" pdk1
 
    magic::add_toolkit_separator	$layoutframe pdk1
    magic::add_toolkit_command $layoutframe "MOS varactor" \
-	    "magic::gencell sky130::xcnwvc" pdk1
+	    "magic::gencell sky130::sky130_fd_pr__cap_var_lvt" pdk1
    magic::add_toolkit_separator	$layoutframe pdk1
 
-   magic::add_toolkit_command $layoutframe "NPN 1x1" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_npn_1x1" pdk1
-   magic::add_toolkit_command $layoutframe "NPN 1x2" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_npn_1x2" pdk1
-   magic::add_toolkit_command $layoutframe "PNP 5x" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_pnp5x" pdk1
+   magic::add_toolkit_command $layoutframe "NPN 1.0 x 1.0" \
+	    "magic::gencell sky130::sky130_fd_pr__npn_05v5_W1p00L1p00" pdk1
+   magic::add_toolkit_command $layoutframe "NPN 1.0 x 2.0" \
+	    "magic::gencell sky130::sky130_fd_pr__npn_05v5_W1p00L2p00" pdk1
+   magic::add_toolkit_command $layoutframe "PNP 0.68 x 0.68" \
+	    "magic::gencell sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68" pdk1
+   magic::add_toolkit_command $layoutframe "PNP 3.4 x 3.4" \
+	    "magic::gencell sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40" pdk1
 
+#ifdef REDISTRIBUTION
    magic::add_toolkit_separator	$layoutframe pdk1
 
-   magic::add_toolkit_command $layoutframe "balun" \
-	    "magic::gencell sky130::balun" pdk1
-   magic::add_toolkit_command $layoutframe "inductor 011" \
-	    "magic::gencell sky130::xind4_011" pdk1
-   magic::add_toolkit_command $layoutframe "inductor 02" \
-	    "magic::gencell sky130::xind4_02" pdk1
+   magic::add_toolkit_command $layoutframe "inductor 01x04" \
+	    "magic::gencell sky130::sky130_fd_pr__ind_01_04" pdk1
+   magic::add_toolkit_command $layoutframe "inductor 02x04" \
+	    "magic::gencell sky130::sky130_fd_pr__ind_02_04" pdk1
+#endif (REDISTRIBUTION)
 
    magic::add_toolkit_separator	$layoutframe pdk1
 
@@ -164,88 +166,82 @@
 
    magic::add_toolkit_menu $layoutframe "Devices 2" pdk2
 
-   magic::add_toolkit_command $layoutframe "mrdn (1.8V) - 120 Ohm/sq" \
-	    "magic::gencell sky130::mrdn" pdk2
-   magic::add_toolkit_command $layoutframe "mrdp (1.8V) - 197 Ohm/sq" \
-	    "magic::gencell sky130::mrdp" pdk2
-   magic::add_toolkit_command $layoutframe "mrdn_hv (5.0V) - 114 Ohm/sq" \
-	    "magic::gencell sky130::mrdn_hv" pdk2
-   magic::add_toolkit_command $layoutframe "mrdp_hv (5.0V) - 191 Ohm/sq" \
-	    "magic::gencell sky130::mrdp_hv" pdk2
+   magic::add_toolkit_command $layoutframe "n-diff resistor (1.8V) - 120 Ohm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_generic_nd" pdk2
+   magic::add_toolkit_command $layoutframe "p-diff resistor (1.8V) - 197 Ohm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_generic_pd" pdk2
+   magic::add_toolkit_command $layoutframe "n-diff resistor (5.0V) - 114 Ohm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__mrdn_hv" pdk2
+   magic::add_toolkit_command $layoutframe "p-diff resistor (5.0V) - 191 Ohm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__mrdp_hv" pdk2
 
-   magic::add_toolkit_command $layoutframe "mrp1 - 48.2 Ohm/sq" \
-	    "magic::gencell sky130::mrp1" pdk2
-   magic::add_toolkit_command $layoutframe "xhrpoly_0p35 - 319.8 Ohm/sq" \
-	    "magic::gencell sky130::xhrpoly" pdk2
-   magic::add_toolkit_command $layoutframe "uhrpoly_0p35 - 2000 Ohm/sq" \
-	    "magic::gencell sky130::uhrpoly" pdk2
-   magic::add_toolkit_command $layoutframe "xpwres - 3050 Ohm/sq" \
-	    "magic::gencell sky130::xpwres" pdk2
+   magic::add_toolkit_command $layoutframe "poly resistor - 48.2 Ohm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_generic_po" pdk2
+   magic::add_toolkit_command $layoutframe "poly resistor - 319.8 Ohm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_high_po_0p35" pdk2
+   magic::add_toolkit_command $layoutframe "poly resistor - 2000 Ohm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_xhigh_po_0p35" pdk2
+   magic::add_toolkit_command $layoutframe "p-well resistor - 3050 Ohm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_iso_pw" pdk2
    magic::add_toolkit_separator	$layoutframe pdk2
 
-   magic::add_toolkit_command $layoutframe "mrl1 - 12.2 Ohm/sq" \
-	    "magic::gencell sky130::mrl1" pdk2
-   magic::add_toolkit_command $layoutframe "mrm1 - 125 mOhm/sq" \
-	    "magic::gencell sky130::mrm1" pdk2
-   magic::add_toolkit_command $layoutframe "mrm2 - 125 mOhm/sq" \
-	    "magic::gencell sky130::mrm2" pdk2
-   magic::add_toolkit_command $layoutframe "mrm3 - 47 mOhm/sq" \
-	    "magic::gencell sky130::mrm3" pdk2
+   magic::add_toolkit_command $layoutframe "l1 metal resistor - 12.2 Ohm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_generic_l1" pdk2
+   magic::add_toolkit_command $layoutframe "m1 metal resistor - 125 mOhm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_generic_m1" pdk2
+   magic::add_toolkit_command $layoutframe "m2 metal resistor - 125 mOhm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_generic_m2" pdk2
+   magic::add_toolkit_command $layoutframe "m3 metal resistor - 47 mOhm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_generic_m3" pdk2
 #ifdef METAL5
-   magic::add_toolkit_command $layoutframe "mrm4 - 47 mOhm/sq" \
-	    "magic::gencell sky130::mrm4" pdk2
-   magic::add_toolkit_command $layoutframe "mrm5 - 29 mOhm/sq" \
-	    "magic::gencell sky130::mrm5" pdk2
+   magic::add_toolkit_command $layoutframe "m4 metal resistor - 47 mOhm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_generic_m4" pdk2
+   magic::add_toolkit_command $layoutframe "m5 metal resistor - 29 mOhm/sq" \
+	    "magic::gencell sky130::sky130_fd_pr__res_generic_m5" pdk2
 #endif (METAL5)
 
 #ifdef MIM
-   magic::add_toolkit_command $layoutframe "xcmimc1 - 1fF/um^2 MiM cap" \
-	    "magic::gencell sky130::xcmimc1" pdk2
-   magic::add_toolkit_command $layoutframe "xcmimc2 - 1fF/um^2 MiM cap" \
-	    "magic::gencell sky130::xcmimc2" pdk2
+   magic::add_toolkit_command $layoutframe "MiM cap - 1fF/um^2 (metal3)" \
+	    "magic::gencell sky130::sky130_fd_pr__cap_mim_m3_1" pdk2
+   magic::add_toolkit_command $layoutframe "MiM cap - 1fF/um^2 (metal4)" \
+	    "magic::gencell sky130::sky130_fd_pr__cap_mim_m3_2" pdk2
 #endif (MIM)
    magic::add_toolkit_separator	$layoutframe pdk2
 
    magic::add_toolkit_command $layoutframe "vpp 11.5x11.7 li/m5 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_lim5shield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 11.5x11.7 li/m3/m5 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m3_lim5shield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 11.5x11.7 m4 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m4shield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 11.5x11.7 p/m4 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym4shield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield" pdk2
    # magic::add_toolkit_command $layoutframe "vpp 11.5x11.7 p/m5 shield" \
-   #	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym50p4shield" pdk2
-   magic::add_toolkit_command $layoutframe "vpp 4.4x4.6 li/m3/m5 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvpp4p4x4p6_m3_lim5shield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 6.8x6.1 li/m4 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_lim4shield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 6.8x6.1 p/m4 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_polym4shield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_6p8x6p1_pom4_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 8.6x7.9 li/m3/m5 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvpp8p6x7p9_m3_lim5shield" pdk2
-   magic::add_toolkit_command $layoutframe "vpp 4.2x2 nhvnat" \
-	    "magic::gencell sky130::sky130_fd_pr_rf2_xcmvppx4_2xnhvnative10x4" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 11.5x11.7 li/m3 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3_lishield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 11.5x11.7 m3 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3shield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield" pdk2
    # magic::add_toolkit_command $layoutframe "vpp 1.8x1.8 li shield" \
-   #	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_lishield" pdk2
+   #	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_1p8x1p8_li_shield" pdk2
    # magic::add_toolkit_command $layoutframe "vpp 1.8x1.8 m3 shield" \
-   #	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_m3shield" pdk2
+   #	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 4.4x4.6 li/m3 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3_lishield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 4.4x4.6 m3 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3shield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 8.6x7.9 li/m3 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3_lishield" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield" pdk2
    magic::add_toolkit_command $layoutframe "vpp 8.6x7.9 m3 shield" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3shield" pdk2
-   magic::add_toolkit_command $layoutframe "vpp2" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp2" pdk2
-   magic::add_toolkit_command $layoutframe "vpp2 nwell" \
-	    "magic::gencell sky130::sky130_fd_pr_rf_xcmvpp2_nwell" pdk2
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield" pdk2
+   magic::add_toolkit_command $layoutframe "vpp 4.4x4.6" \
+	    "magic::gencell sky130::sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield" pdk2
 
    ${layoutframe}.titlebar.mbuttons.drc.toolmenu add command -label "DRC Routing" -command {drc style drc(routing)}
 
@@ -754,35 +750,37 @@
 }
 
 #------------------------------------------------------------------
-# NOTE:  ndiode_lvt, ndiode_native, pdiode_lvt, and pdiode_hvt are
-# all considered parasitic diodes.  They may be generated by
-# invoking the build procedure on the command line.  To enable them
-# in the PDK, add them to the appropriate compatible {} list.
+# NOTE:  sky130_fd_pr__diode_pw2nd_05v5_lvt,
+# sky130_fd_pr__diode_pw2nd_05v5_nvt, sky130_fd_pr__pd2nw_05v5_lvt,
+# and sky130_fd_pr__pd2nw_11v0 are all considered parasitic diodes.
+# They may be generated by invoking the build procedure on the
+# command line.  To enable them in the PDK, add them to the
+# appropriate compatible {} list.
 #------------------------------------------------------------------
 
-proc sky130::ndiode_defaults {} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_defaults {} {
     return {w 0.45 l 0.45 area 0.2025 peri 1.8 \
 	nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
 	elc 1 erc 1 etc 1 ebc 1 doverlap 0 \
-	compatible {ndiode ndiode_h} full_metal 1}
+	compatible {ndiode sky130_fd_pr__diode_pw2nd_11v0} full_metal 1}
 }
 
-proc sky130::ndiode_lvt_defaults {} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_lvt_defaults {} {
     return {w 0.45 l 0.45 area 0.2025 peri 1.8 \
 	nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
 	elc 1 erc 1 etc 1 ebc 1 doverlap 0 \
 	full_metal 1}
 }
 
-proc sky130::pdiode_defaults {} {
+proc sky130::sky130_fd_pr__pd2nw_05v5_defaults {} {
     return {w 0.45 l 0.45 area 0.2025 peri 1.8 \
 	nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
 	elc 1 erc 1 etc 1 ebc 1 \
 	glc 1 grc 1 gtc 1 gbc 1 doverlap 0 \
-	compatible {pdiode pdiode_h} full_metal 1}
+	compatible {pdiode sky130_fd_pr__pd2nw_11v0} full_metal 1}
 }
 
-proc sky130::pdiode_lvt_defaults {} {
+proc sky130::sky130_fd_pr__pd2nw_05v5_lvt_defaults {} {
     return {w 0.45 l 0.45 area 0.2025 peri 1.8 \
 	nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
 	elc 1 erc 1 etc 1 ebc 1 \
@@ -790,7 +788,7 @@
 	full_metal 1}
 }
 
-proc sky130::pdiode_hvt_defaults {} {
+proc sky130::sky130_fd_pr__pd2nw_11v0_defaults {} {
     return {w 0.45 l 0.45 area 0.2025 peri 1.8 \
 	nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
 	elc 1 erc 1 etc 1 ebc 1 \
@@ -798,127 +796,127 @@
 	full_metal 1}
 }
 
-proc sky130::ndiode_h_defaults {} {
+proc sky130::sky130_fd_pr__diode_pw2nd_11v0_defaults {} {
     return {w 0.45 l 0.45 area 0.2024 peri 1.8 \
 	nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
 	elc 1 erc 1 etc 1 ebc 1 doverlap 0 \
-	compatible {ndiode ndiode_h} full_metal 1}
+	compatible {ndiode sky130_fd_pr__diode_pw2nd_11v0} full_metal 1}
 }
 
-proc sky130::ndiode_native_defaults {} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_nvt_defaults {} {
     return {w 0.45 l 0.45 area 0.2024 peri 1.8 \
 	nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
 	elc 1 erc 1 etc 1 ebc 1 doverlap 0 \
 	full_metal 1}
 }
 
-proc sky130::pdiode_h_defaults {} {
+proc sky130::sky130_fd_pr__pd2nw_11v0_defaults {} {
     return {w 0.45 l 0.45 area 0.2024 peri 1.8 \
 	nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
 	elc 1 erc 1 etc 1 ebc 1 \
 	glc 1 grc 1 gtc 1 gbc 1 doverlap 0 \
-	compatible {pdiode pdiode_h} full_metal 1}
+	compatible {pdiode sky130_fd_pr__pd2nw_11v0} full_metal 1}
 }
 
 #----------------------------------------------------------------
 
-proc sky130::ndiode_convert {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_convert {parameters} {
     return [sky130::diode_convert $parameters]
 }
 
-proc sky130::ndiode_lvt_convert {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_lvt_convert {parameters} {
     return [sky130::diode_convert $parameters]
 }
 
-proc sky130::pdiode_convert {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_05v5_convert {parameters} {
     return [sky130::diode_convert $parameters]
 }
 
-proc sky130::pdiode_lvt_convert {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_05v5_lvt_convert {parameters} {
     return [sky130::diode_convert $parameters]
 }
 
-proc sky130::pdiode_hvt_convert {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_11v0_convert {parameters} {
     return [sky130::diode_convert $parameters]
 }
 
-proc sky130::ndiode_h_convert {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_11v0_convert {parameters} {
     return [sky130::diode_convert $parameters]
 }
 
-proc sky130::ndiode_native_convert {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_nvt_convert {parameters} {
     return [sky130::diode_convert $parameters]
 }
 
-proc sky130::pdiode_h_convert {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_11v0_convert {parameters} {
     return [sky130::diode_convert $parameters]
 }
 
 #----------------------------------------------------------------
 
-proc sky130::ndiode_dialog {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_dialog {parameters} {
     sky130::diode_dialog ndiode $parameters
 }
 
-proc sky130::ndiode_lvt_dialog {parameters} {
-    sky130::diode_dialog ndiode_lvt $parameters
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_lvt_dialog {parameters} {
+    sky130::diode_dialog sky130_fd_pr__diode_pw2nd_05v5_lvt $parameters
 }
 
-proc sky130::pdiode_dialog {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_05v5_dialog {parameters} {
     sky130::diode_dialog pdiode $parameters
 }
 
-proc sky130::pdiode_lvt_dialog {parameters} {
-    sky130::diode_dialog pdiode_lvt $parameters
+proc sky130::sky130_fd_pr__pd2nw_05v5_lvt_dialog {parameters} {
+    sky130::diode_dialog sky130_fd_pr__pd2nw_05v5_lvt $parameters
 }
 
-proc sky130::pdiode_hvt_dialog {parameters} {
-    sky130::diode_dialog pdiode_hvt $parameters
+proc sky130::sky130_fd_pr__pd2nw_11v0_dialog {parameters} {
+    sky130::diode_dialog sky130_fd_pr__pd2nw_11v0 $parameters
 }
 
-proc sky130::ndiode_h_dialog {parameters} {
-    sky130::diode_dialog ndiode_h $parameters
+proc sky130::sky130_fd_pr__diode_pw2nd_11v0_dialog {parameters} {
+    sky130::diode_dialog sky130_fd_pr__diode_pw2nd_11v0 $parameters
 }
 
-proc sky130::ndiode_native_dialog {parameters} {
-    sky130::diode_dialog ndiode_native $parameters
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_nvt_dialog {parameters} {
+    sky130::diode_dialog sky130_fd_pr__diode_pw2nd_05v5_nvt $parameters
 }
 
-proc sky130::pdiode_h_dialog {parameters} {
-    sky130::diode_dialog pdiode_h $parameters
+proc sky130::sky130_fd_pr__pd2nw_11v0_dialog {parameters} {
+    sky130::diode_dialog sky130_fd_pr__pd2nw_11v0 $parameters
 }
 
 #----------------------------------------------------------------
 
-proc sky130::ndiode_check {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_check {parameters} {
     sky130::diode_check $parameters
 }
 
-proc sky130::ndiode_lvt_check {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_lvt_check {parameters} {
     sky130::diode_check $parameters
 }
 
-proc sky130::pdiode_check {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_05v5_check {parameters} {
     sky130::diode_check $parameters
 }
 
-proc sky130::pdiode_lvt_check {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_05v5_lvt_check {parameters} {
     sky130::diode_check $parameters
 }
 
-proc sky130::pdiode_hvt_check {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_11v0_check {parameters} {
     sky130::diode_check $parameters
 }
 
-proc sky130::ndiode_h_check {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_11v0_check {parameters} {
     sky130::diode_check $parameters
 }
 
-proc sky130::ndiode_native_check {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_nvt_check {parameters} {
     sky130::diode_check $parameters
 }
 
-proc sky130::pdiode_h_check {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_11v0_check {parameters} {
     sky130::diode_check $parameters
 }
 
@@ -1107,7 +1105,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::ndiode_draw {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -1132,9 +1130,9 @@
 #----------------------------------------------------------------
 # NOTE:  Use ppd instead of psd so that there is additional
 # diffusion around the contact, allowing more space for the
-# implant (likewise pdiode_lvt and pdiode_hvt).
+# implant (likewise sky130_fd_pr__pd2nw_05v5_lvt and sky130_fd_pr__pd2nw_11v0).
 
-proc sky130::ndiode_lvt_draw {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_lvt_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -1158,7 +1156,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::pdiode_draw {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_05v5_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -1186,7 +1184,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::pdiode_lvt_draw {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_05v5_lvt_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -1214,7 +1212,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::pdiode_hvt_draw {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_11v0_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -1242,7 +1240,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::ndiode_h_draw {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_11v0_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -1266,7 +1264,7 @@
 }
 
 
-proc sky130::ndiode_native_draw {parameters} {
+proc sky130::sky130_fd_pr__diode_pw2nd_05v5_nvt_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -1291,7 +1289,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::pdiode_h_draw {parameters} {
+proc sky130::sky130_fd_pr__pd2nw_11v0_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -1325,12 +1323,12 @@
 #----------------------------------------------------------------
 
 #ifdef MIM
-proc sky130::xcmimc1_defaults {} {
+proc sky130::sky130_fd_pr__cap_mim_m3_1_defaults {} {
     return {w 2.00 l 2.00 val 4.0 carea 1.00 cperi 0.17 \
 		nx 1 ny 1 dummy 0 square 0 lmin 2.00 wmin 2.00 \
 		lmax 30.0 wmax 30.0 dc 0 bconnect 1 tconnect 1}
 }
-proc sky130::xcmimc2_defaults {} {
+proc sky130::sky130_fd_pr__cap_mim_m3_2_defaults {} {
     return {w 2.00 l 2.00 val 4.0 carea 1.00 cperi 0.17 \
 		nx 1 ny 1 dummy 0 square 0 lmin 2.00 wmin 2.00 \
 		lmax 30.0 wmax 30.0 dc 0 bconnect 1 tconnect 1}
@@ -1405,10 +1403,10 @@
 }
 
 #ifdef MIM
-proc sky130::xcmimc1_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_mim_m3_1_convert {parameters} {
     return [cap_convert $parameters]
 }
-proc sky130::xcmimc2_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_mim_m3_2_convert {parameters} {
     return [cap_convert $parameters]
 }
 #endif (MIM)
@@ -1448,11 +1446,11 @@
 }
 
 #ifdef MIM
-proc sky130::xcmimc1_dialog {parameters} {
-    sky130::cap_dialog xcmimc1 $parameters
+proc sky130::sky130_fd_pr__cap_mim_m3_1_dialog {parameters} {
+    sky130::cap_dialog sky130_fd_pr__cap_mim_m3_1 $parameters
 }
-proc sky130::xcmimc2_dialog {parameters} {
-    sky130::cap_dialog xcmimc2 $parameters
+proc sky130::sky130_fd_pr__cap_mim_m3_2_dialog {parameters} {
+    sky130::cap_dialog sky130_fd_pr__cap_mim_m3_2 $parameters
 }
 #endif (MIM)
 
@@ -1916,7 +1914,7 @@
 #----------------------------------------------------------------
 
 #ifdef MIM
-proc sky130::xcmimc1_draw {parameters} {
+proc sky130::sky130_fd_pr__cap_mim_m3_1_draw {parameters} {
     set newdict [dict create \
 	    top_type 		m4 \
 	    top_contact_type	via3 \
@@ -1936,7 +1934,7 @@
     return [sky130::cap_draw $drawdict]
 }
 
-proc sky130::xcmimc2_draw {parameters} {
+proc sky130::sky130_fd_pr__cap_mim_m3_2_draw {parameters} {
     set newdict [dict create \
 	    top_type 		m5 \
 	    top_contact_type	via4 \
@@ -2032,10 +2030,10 @@
 }
 
 #ifdef MIM
-proc sky130::xcmimc1_check {parameters} {
+proc sky130::sky130_fd_pr__cap_mim_m3_1_check {parameters} {
     return [sky130::cap_check $parameters]
 }
-proc sky130::xcmimc2_check {parameters} {
+proc sky130::sky130_fd_pr__cap_mim_m3_2_check {parameters} {
     return [sky130::cap_check $parameters]
 }
 #endif (MIM)
@@ -2069,12 +2067,12 @@
 #----------------------------------------------------------------
 
 #----------------------------------------------------------------
-# xpwres: Specify all user-editable default values and those
-# needed by xpwres_check
+# sky130_fd_pr__res_iso_pw: Specify all user-editable default values and those
+# needed by sky130_fd_pr__res_iso_pw_check
 # NOTE:  Work in progress.  These values need to be corrected.
 #----------------------------------------------------------------
 
-proc sky130::xpwres_defaults {} {
+proc sky130::sky130_fd_pr__res_iso_pw_defaults {} {
     return {w 2.650 l 26.50 m 1 nx 1 wmin 2.650 lmin 26.50 \
 	 	rho 975 val 4875 dummy 0 dw 0.25 term 1.0 \
 		guard 1 endcov 100 full_metal 1}
@@ -2085,7 +2083,7 @@
 # needed by rp1_check
 #----------------------------------------------------------------
 
-proc sky130::mrp1_defaults {} {
+proc sky130::sky130_fd_pr__res_generic_po_defaults {} {
     return {w 0.330 l 1.650 m 1 nx 1 wmin 0.330 lmin 1.650 \
 		rho 48.2 val 241 dummy 0 dw 0.0 term 0.0 \
 		sterm 0.0 caplen 0.4 snake 0 guard 1 \
@@ -2094,95 +2092,110 @@
 }
 
 # "term" is rho * 0.06, the distance between xpc edge and CONT.
-proc sky130::xhrpoly_0p35_defaults {} {
+proc sky130::sky130_fd_pr__res_high_po_0p35_defaults {} {
     return {w 0.350 l 0.50 m 1 nx 1 wmin 0.350 lmin 0.50 \
 		rho 319.8 val 456.857 dummy 0 dw 0.0 term 19.188 \
 		sterm 0.0 caplen 0 guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {xhrpoly_0p35 xhrpoly_0p69 xhrpoly_1p41 \
-		xhrpoly_2p85 xhrpoly_5p73} \
+		compatible {sky130_fd_pr__res_high_po_0p35 \
+		sky130_fd_pr__res_high_po_0p69 sky130_fd_pr__res_high_po_1p41 \
+		sky130_fd_pr__res_high_po_2p85 sky130_fd_pr__res_high_po_5p73} \
 		full_metal 1 wmax 0.350}
 }
-proc sky130::xhrpoly_0p69_defaults {} {
+proc sky130::sky130_fd_pr__res_high_po_0p69_defaults {} {
     return {w 0.690 l 1.00 m 1 nx 1 wmin 0.690 lmin 0.50 \
 		rho 319.8 val 463.480 dummy 0 dw 0.0 term 19.188 \
 		sterm 0.0 caplen 0 guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {xhrpoly_0p35 xhrpoly_0p69 xhrpoly_1p41 \
-		xhrpoly_2p85 xhrpoly_5p73} \
+		compatible {sky130_fd_pr__res_high_po_0p35 \
+		sky130_fd_pr__res_high_po_0p69 sky130_fd_pr__res_high_po_1p41 \
+		sky130_fd_pr__res_high_po_2p85 sky130_fd_pr__res_high_po_5p73} \
 		full_metal 1 wmax 0.690}
 }
-proc sky130::xhrpoly_1p41_defaults {} {
+proc sky130::sky130_fd_pr__res_high_po_1p41_defaults {} {
     return {w 1.410 l 2.00 m 1 nx 1 wmin 1.410 lmin 0.50 \
 		rho 319.8 val 453.620 dummy 0 dw 0.0 term 19.188 \
 		sterm 0.0 caplen 0 guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {xhrpoly_0p35 xhrpoly_0p69 xhrpoly_1p41 \
-		xhrpoly_2p85 xhrpoly_5p73} \
+		compatible {sky130_fd_pr__res_high_po_0p35 \
+		sky130_fd_pr__res_high_po_0p69 sky130_fd_pr__res_high_po_1p41 \
+		sky130_fd_pr__res_high_po_2p85 sky130_fd_pr__res_high_po_5p73} \
 		full_metal 1 wmax 1.410}
 }
-proc sky130::xhrpoly_2p85_defaults {} {
+proc sky130::sky130_fd_pr__res_high_po_2p85_defaults {} {
     return {w 2.850 l 3.00 m 1 nx 1 wmin 2.850 lmin 0.50 \
 		rho 319.8 val 336.630 dummy 0 dw 0.0 term 19.188 \
 		sterm 0.0 caplen 0 guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {xhrpoly_0p35 xhrpoly_0p69 xhrpoly_1p41 \
-		xhrpoly_2p85 xhrpoly_5p73} \
+		compatible {sky130_fd_pr__res_high_po_0p35 \
+		sky130_fd_pr__res_high_po_0p69 sky130_fd_pr__res_high_po_1p41 \
+		sky130_fd_pr__res_high_po_2p85 sky130_fd_pr__res_high_po_5p73} \
 		full_metal 1 wmax 2.850}
 }
-proc sky130::xhrpoly_5p73_defaults {} {
+proc sky130::sky130_fd_pr__res_high_po_5p73_defaults {} {
     return {w 5.730 l 6.00 m 1 nx 1 wmin 5.730 lmin 0.50 \
 		rho 319.8 val 334.870 dummy 0 dw 0.0 term 19.188 \
 		sterm 0.0 caplen 0 guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {xhrpoly_0p35 xhrpoly_0p69 xhrpoly_1p41 \
-		xhrpoly_2p85 xhrpoly_5p73} \
+		compatible {sky130_fd_pr__res_high_po_0p35 \
+		sky130_fd_pr__res_high_po_0p69 sky130_fd_pr__res_high_po_1p41 \
+		sky130_fd_pr__res_high_po_2p85 sky130_fd_pr__res_high_po_5p73} \
 		full_metal 1 wmax 5.730}
 }
 
 # "term" is rho * 0.06, the distance between xpc edge and CONT.
-proc sky130::uhrpoly_0p35_defaults {} {
+proc sky130::sky130_fd_pr__res_xhigh_po_0p35_defaults {} {
     return {w 0.350 l 0.50 m 1 nx 1 wmin 0.350 lmin 0.50 \
 		rho 2000 val 2875.143 dummy 0 dw 0.0 term 120 \
 		sterm 0.0 caplen 0 wmax 0.350 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {uhrpoly_0p35 uhrpoly_0p69 uhrpoly_1p41 \
-		uhrpoly_2p85 uhrpoly_5p73} full_metal 1}
+		compatible {sky130_fd_pr__res_xhigh_po_0p35 \
+		sky130_fd_pr__res_xhigh_po_0p69 sky130_fd_pr__res_xhigh_po_1p41 \
+		sky130_fd_pr__res_xhigh_po_2p85 sky130_fd_pr__res_xhigh_po_5p73} \
+		full_metal 1}
 }
-proc sky130::uhrpoly_0p69_defaults {} {
+proc sky130::sky130_fd_pr__res_xhigh_po_0p69_defaults {} {
     return {w 0.690 l 1.00 m 1 nx 1 wmin 0.690 lmin 0.50 \
 		rho 2000 val 2898.600 dummy 0 dw 0.0 term 120 \
 		sterm 0.0 caplen 0 wmax 0.690 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {uhrpoly_0p35 uhrpoly_0p69 uhrpoly_1p41 \
-		uhrpoly_2p85 uhrpoly_5p73} full_metal 1}
+		compatible {sky130_fd_pr__res_xhigh_po_0p35 \
+		sky130_fd_pr__res_xhigh_po_0p69 sky130_fd_pr__res_xhigh_po_1p41 \
+		sky130_fd_pr__res_xhigh_po_2p85 sky130_fd_pr__res_xhigh_po_5p73} \
+		full_metal 1}
 }
-proc sky130::uhrpoly_1p41_defaults {} {
+proc sky130::sky130_fd_pr__res_xhigh_po_1p41_defaults {} {
     return {w 1.410 l 2.00 m 1 nx 1 wmin 1.410 lmin 0.50 \
 		rho 2000 val 2836.900 dummy 0 dw 0.0 term 120 \
 		sterm 0.0 caplen 0 wmax 1.410 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {uhrpoly_0p35 uhrpoly_0p69 uhrpoly_1p41 \
-		uhrpoly_2p85 uhrpoly_5p73} full_metal 1}
+		compatible {sky130_fd_pr__res_xhigh_po_0p35 \
+		sky130_fd_pr__res_xhigh_po_0p69 sky130_fd_pr__res_xhigh_po_1p41 \
+		sky130_fd_pr__res_xhigh_po_2p85 sky130_fd_pr__res_xhigh_po_5p73} \
+		full_metal 1}
 }
-proc sky130::uhrpoly_2p85_defaults {} {
+proc sky130::sky130_fd_pr__res_xhigh_po_2p85_defaults {} {
     return {w 2.850 l 3.00 m 1 nx 1 wmin 2.850 lmin 0.50 \
 		rho 2000 val 2105.300 dummy 0 dw 0.0 term 120 \
 		sterm 0.0 caplen 0 wmax 2.850 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {uhrpoly_0p35 uhrpoly_0p69 uhrpoly_1p41 \
-		uhrpoly_2p85 uhrpoly_5p73} full_metal 1}
+		compatible {sky130_fd_pr__res_xhigh_po_0p35 \
+		sky130_fd_pr__res_xhigh_po_0p69 sky130_fd_pr__res_xhigh_po_1p41 \
+		sky130_fd_pr__res_xhigh_po_2p85 sky130_fd_pr__res_xhigh_po_5p73} \
+		full_metal 1}
 }
-proc sky130::uhrpoly_5p73_defaults {} {
+proc sky130::sky130_fd_pr__res_xhigh_po_5p73_defaults {} {
     return {w 5.730 l 6.00 m 1 nx 1 wmin 5.730 lmin 0.50 \
 		rho 2000 val 2094.200 dummy 0 dw 0.0 term 120 \
 		sterm 0.0 caplen 0 wmax 5.730 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 \
-		compatible {uhrpoly_0p35 uhrpoly_0p69 uhrpoly_1p41 \
-		uhrpoly_2p85 uhrpoly_5p73} full_metal 1}
+		compatible {sky130_fd_pr__res_xhigh_po_0p35 \
+		sky130_fd_pr__res_xhigh_po_0p69 sky130_fd_pr__res_xhigh_po_1p41 \
+		sky130_fd_pr__res_xhigh_po_2p85 sky130_fd_pr__res_xhigh_po_5p73} \
+		full_metal 1}
 }
 
 #----------------------------------------------------------------
-# mrdn: Specify all user-editable default values and those
+# sky130_fd_pr__res_generic_nd: Specify all user-editable default values and those
 # needed by rdn_check
 #----------------------------------------------------------------
 
-proc sky130::mrdn_defaults {} {
+proc sky130::sky130_fd_pr__res_generic_nd_defaults {} {
     return {w 0.420 l 2.100 m 1 nx 1 wmin 0.42 lmin 2.10 \
 		rho 120 val 600.0 dummy 0 dw 0.05 term 0.0 \
 		sterm 0.0 caplen 0.4 snake 0 guard 1 \
@@ -2190,7 +2203,7 @@
 		full_metal 1}
 }
 
-proc sky130::mrdn_hv_defaults {} {
+proc sky130::sky130_fd_pr__mrdn_hv_defaults {} {
     return {w 0.420 l 2.100 m 1 nx 1 wmin 0.42 lmin 2.10 \
 		rho 120 val 600.0 dummy 0 dw 0.02 term 0.0 \
 		sterm 0.0 caplen 0.4 snake 0 guard 1 \
@@ -2199,11 +2212,11 @@
 }
 
 #----------------------------------------------------------------
-# mrdp: Specify all user-editable default values and those
+# sky130_fd_pr__res_generic_pd: Specify all user-editable default values and those
 # needed by rdp_check
 #----------------------------------------------------------------
 
-proc sky130::mrdp_defaults {} {
+proc sky130::sky130_fd_pr__res_generic_pd_defaults {} {
     return {w 0.420 l 2.100 m 1 nx 1 wmin 0.42 lmin 2.10 \
 		rho 197 val 985.0 dummy 0 dw 0.02 term 0.0 \
 		sterm 0.0 caplen 0.60 snake 0 guard 1 \
@@ -2211,7 +2224,7 @@
 		full_metal 1}
 }
 
-proc sky130::mrdp_hv_defaults {} {
+proc sky130::sky130_fd_pr__mrdp_hv_defaults {} {
     return {w 0.420 l 2.100 m 1 nx 1 wmin 0.42 lmin 2.10 \
 		rho 197 val 985.0 dummy 0 dw 0.02 term 0.0 \
 		sterm 0.0 caplen 0.60 snake 0 guard 1 \
@@ -2220,61 +2233,61 @@
 }
 
 #----------------------------------------------------------------
-# mrl1: Specify all user-editable default values and those needed
-# by mrl1_check
+# sky130_fd_pr__res_generic_l1: Specify all user-editable default values and those needed
+# by sky130_fd_pr__res_generic_l1_check
 #----------------------------------------------------------------
 
-proc sky130::mrl1_defaults {} {
+proc sky130::sky130_fd_pr__res_generic_l1_defaults {} {
     return {w 0.170 l 0.170 m 1 nx 1 wmin 0.17 lmin 0.17 \
 		rho 12.8 val 12.8 dummy 0 dw 0.0 term 0.0 snake 0 \
 		roverlap 0}
 }
 
 #----------------------------------------------------------------
-# mrm1: Specify all user-editable default values and those needed
-# by mrm1_check
+# sky130_fd_pr__res_generic_m1: Specify all user-editable default values and those needed
+# by sky130_fd_pr__res_generic_m1_check
 #----------------------------------------------------------------
 
-proc sky130::mrm1_defaults {} {
+proc sky130::sky130_fd_pr__res_generic_m1_defaults {} {
     return {w 0.140 l 0.140 m 1 nx 1 wmin 0.14 lmin 0.14 \
 		rho 0.125 val 0.125 dummy 0 dw 0.0 term 0.0 \
 		roverlap 0}
 }
 
 #----------------------------------------------------------------
-# mrm2: Specify all user-editable default values and those needed
-# by mrm2_check
+# sky130_fd_pr__res_generic_m2: Specify all user-editable default values and those needed
+# by sky130_fd_pr__res_generic_m2_check
 #----------------------------------------------------------------
 
-proc sky130::mrm2_defaults {} {
+proc sky130::sky130_fd_pr__res_generic_m2_defaults {} {
     return {w 0.140 l 0.140 m 1 nx 1 wmin 0.14 lmin 0.14 \
 		rho 0.125 val 0.125 dummy 0 dw 0.0 term 0.0 \
 		roverlap 0}
 }
 
 #----------------------------------------------------------------
-# mrm3: Specify all user-editable default values and those needed
-# by mrm3_check
+# sky130_fd_pr__res_generic_m3: Specify all user-editable default values and those needed
+# by sky130_fd_pr__res_generic_m3_check
 #----------------------------------------------------------------
 
-proc sky130::mrm3_defaults {} {
+proc sky130::sky130_fd_pr__res_generic_m3_defaults {} {
     return {w 0.300 l 0.300 m 1 nx 1 wmin 0.30 lmin 0.30 \
 		rho 0.047 val 0.047 dummy 0 dw 0.0 term 0.0 \
 		roverlap 0}
 }
 
 #----------------------------------------------------------------
-# Additional entries for mrm4 and mrm5, depending on the
+# Additional entries for sky130_fd_pr__res_generic_m4 and sky130_fd_pr__res_generic_m5, depending on the
 # back-end metal stack.
 #----------------------------------------------------------------
 
 #ifdef METAL5
-proc sky130::mrm4_defaults {} {
+proc sky130::sky130_fd_pr__res_generic_m4_defaults {} {
     return {w 0.300 l 0.300 m 1 nx 1 wmin 0.30 lmin 0.30 \
 		rho 0.047 val 0.047 dummy 0 dw 0.0 term 0.0 \
 		roverlap 0}
 }
-proc sky130::mrm5_defaults {} {
+proc sky130::sky130_fd_pr__res_generic_m5_defaults {} {
     return {w 1.600 l 1.600 m 1 nx 1 wmin 1.60 lmin 1.60 \
 		rho 0.029 val 0.029 dummy 0 dw 0.0 term 0.0 \
 		roverlap 0}
@@ -2304,83 +2317,83 @@
 
 #----------------------------------------------------------------
 
-proc sky130::xpwres_convert {parameters} {
+proc sky130::sky130_fd_pr__res_iso_pw_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::mrp1_convert {parameters} {
+proc sky130::sky130_fd_pr__res_generic_po_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::xhrpoly_0p35_convert {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_0p35_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
-proc sky130::xhrpoly_0p69_convert {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_0p69_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
-proc sky130::xhrpoly_1p41_convert {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_1p41_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
-proc sky130::xhrpoly_2p85_convert {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_2p85_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
-proc sky130::xhrpoly_5p73_convert {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_5p73_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::uhrpoly_0p35_convert {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_0p35_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
-proc sky130::uhrpoly_0p69_convert {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_0p69_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
-proc sky130::uhrpoly_1p41_convert {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_1p41_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
-proc sky130::uhrpoly_2p85_convert {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_2p85_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
-proc sky130::uhrpoly_5p73_convert {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_5p73_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::mrdn_convert {parameters} {
+proc sky130::sky130_fd_pr__res_generic_nd_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::mrdp_convert {parameters} {
+proc sky130::sky130_fd_pr__res_generic_pd_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::mrdn_hv_convert {parameters} {
+proc sky130::sky130_fd_pr__mrdn_hv_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::mrdp_hv_convert {parameters} {
+proc sky130::sky130_fd_pr__mrdp_hv_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::mrl1_convert {parameters} {
+proc sky130::sky130_fd_pr__res_generic_l1_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::mrm1_convert {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m1_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::mrm2_convert {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m2_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
-proc sky130::mrm3_convert {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m3_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 
 #ifdef METAL5
-proc sky130::mrm4_convert {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m4_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
-proc sky130::mrm5_convert {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m5_convert {parameters} {
     return [sky130::res_convert $parameters]
 }
 #endif (METAL5)
@@ -2452,84 +2465,84 @@
 
 #----------------------------------------------------------------
 
-proc sky130::xpwres_dialog {parameters} {
-    sky130::res_dialog xpwres $parameters
+proc sky130::sky130_fd_pr__res_iso_pw_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_iso_pw $parameters
 }
 
-proc sky130::mrp1_dialog {parameters} {
-    sky130::res_dialog mrp1 $parameters
+proc sky130::sky130_fd_pr__res_generic_po_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_generic_po $parameters
 }
 
-proc sky130::xhrpoly_0p35_dialog {parameters} {
-    sky130::res_dialog xhrpoly_0p35 $parameters
+proc sky130::sky130_fd_pr__res_high_po_0p35_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_high_po_0p35 $parameters
 }
-proc sky130::xhrpoly_0p69_dialog {parameters} {
-    sky130::res_dialog xhrpoly_0p69 $parameters
+proc sky130::sky130_fd_pr__res_high_po_0p69_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_high_po_0p69 $parameters
 }
-proc sky130::xhrpoly_1p41_dialog {parameters} {
-    sky130::res_dialog xhrpoly_1p41 $parameters
+proc sky130::sky130_fd_pr__res_high_po_1p41_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_high_po_1p41 $parameters
 }
-proc sky130::xhrpoly_2p85_dialog {parameters} {
-    sky130::res_dialog xhrpoly_2p85 $parameters
+proc sky130::sky130_fd_pr__res_high_po_2p85_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_high_po_2p85 $parameters
 }
-proc sky130::xhrpoly_5p73_dialog {parameters} {
-    sky130::res_dialog xhrpoly_5p73 $parameters
+proc sky130::sky130_fd_pr__res_high_po_5p73_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_high_po_5p73 $parameters
 }
 
-proc sky130::uhrpoly_0p35_dialog {parameters} {
-    sky130::res_dialog uhrpoly_0p35 $parameters
+proc sky130::sky130_fd_pr__res_xhigh_po_0p35_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_xhigh_po_0p35 $parameters
 }
-proc sky130::uhrpoly_0p69_dialog {parameters} {
-    sky130::res_dialog uhrpoly_0p69 $parameters
+proc sky130::sky130_fd_pr__res_xhigh_po_0p69_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_xhigh_po_0p69 $parameters
 }
-proc sky130::uhrpoly_1p41_dialog {parameters} {
-    sky130::res_dialog uhrpoly_1p41 $parameters
+proc sky130::sky130_fd_pr__res_xhigh_po_1p41_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_xhigh_po_1p41 $parameters
 }
-proc sky130::uhrpoly_2p85_dialog {parameters} {
-    sky130::res_dialog uhrpoly_2p85 $parameters
+proc sky130::sky130_fd_pr__res_xhigh_po_2p85_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_xhigh_po_2p85 $parameters
 }
-proc sky130::uhrpoly_5p73_dialog {parameters} {
-    sky130::res_dialog uhrpoly_5p73 $parameters
+proc sky130::sky130_fd_pr__res_xhigh_po_5p73_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_xhigh_po_5p73 $parameters
 }
 
-proc sky130::mrdn_dialog {parameters} {
-    sky130::res_dialog mrdn $parameters
+proc sky130::sky130_fd_pr__res_generic_nd_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_generic_nd $parameters
 }
 
-proc sky130::mrdp_dialog {parameters} {
-    sky130::res_dialog mrdp $parameters
+proc sky130::sky130_fd_pr__res_generic_pd_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_generic_pd $parameters
 }
 
-proc sky130::mrdn_hv_dialog {parameters} {
-    sky130::res_dialog mrdn_hv $parameters
+proc sky130::sky130_fd_pr__mrdn_hv_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__mrdn_hv $parameters
 }
 
-proc sky130::mrdp_hv_dialog {parameters} {
-    sky130::res_dialog mrdp_hv $parameters
+proc sky130::sky130_fd_pr__mrdp_hv_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__mrdp_hv $parameters
 }
 
-proc sky130::mrl1_dialog {parameters} {
-    sky130::res_dialog mrl1 $parameters
+proc sky130::sky130_fd_pr__res_generic_l1_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_generic_l1 $parameters
 }
 
-proc sky130::mrm1_dialog {parameters} {
-    sky130::res_dialog mrm1 $parameters
+proc sky130::sky130_fd_pr__res_generic_m1_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_generic_m1 $parameters
 }
 
-proc sky130::mrm2_dialog {parameters} {
-    sky130::res_dialog mrm2 $parameters
+proc sky130::sky130_fd_pr__res_generic_m2_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_generic_m2 $parameters
 }
 
-proc sky130::mrm3_dialog {parameters} {
-    sky130::res_dialog mrm3 $parameters
+proc sky130::sky130_fd_pr__res_generic_m3_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_generic_m3 $parameters
 }
 
 #ifdef METAL5
-proc sky130::mrm4_dialog {parameters} {
-    sky130::res_dialog mrm4 $parameters
+proc sky130::sky130_fd_pr__res_generic_m4_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_generic_m4 $parameters
 }
-proc sky130::mrm5_dialog {parameters} {
-    sky130::res_dialog mrm5 $parameters
+proc sky130::sky130_fd_pr__res_generic_m5_dialog {parameters} {
+    sky130::res_dialog sky130_fd_pr__res_generic_m5 $parameters
 }
 #endif (METAL5)
 
@@ -2981,7 +2994,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::mrp1_draw {parameters} {
+proc sky130::sky130_fd_pr__res_generic_po_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3010,7 +3023,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::xhrpoly_0p35_draw {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_0p35_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3040,7 +3053,7 @@
     return [sky130::res_draw $drawdict]
 }
 
-proc sky130::xhrpoly_0p69_draw {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_0p69_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3070,7 +3083,7 @@
     return [sky130::res_draw $drawdict]
 }
 
-proc sky130::xhrpoly_1p41_draw {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_1p41_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3100,7 +3113,7 @@
     return [sky130::res_draw $drawdict]
 }
 
-proc sky130::xhrpoly_2p85_draw {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_2p85_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3130,7 +3143,7 @@
     return [sky130::res_draw $drawdict]
 }
 
-proc sky130::xhrpoly_5p73_draw {parameters} {
+proc sky130::sky130_fd_pr__res_high_po_5p73_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3162,7 +3175,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::uhrpoly_0p35_draw {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_0p35_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3192,7 +3205,7 @@
     return [sky130::res_draw $drawdict]
 }
 
-proc sky130::uhrpoly_0p69_draw {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_0p69_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3222,7 +3235,7 @@
     return [sky130::res_draw $drawdict]
 }
 
-proc sky130::uhrpoly_1p41_draw {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_1p41_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3252,7 +3265,7 @@
     return [sky130::res_draw $drawdict]
 }
 
-proc sky130::uhrpoly_2p85_draw {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_2p85_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3282,7 +3295,7 @@
     return [sky130::res_draw $drawdict]
 }
 
-proc sky130::uhrpoly_5p73_draw {parameters} {
+proc sky130::sky130_fd_pr__res_xhigh_po_5p73_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3314,7 +3327,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::mrdn_draw {parameters} {
+proc sky130::sky130_fd_pr__res_generic_nd_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3342,7 +3355,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::mrdn_hv_draw {parameters} {
+proc sky130::sky130_fd_pr__mrdn_hv_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3370,7 +3383,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::mrdp_draw {parameters} {
+proc sky130::sky130_fd_pr__res_generic_pd_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3398,7 +3411,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::mrdp_hv_draw {parameters} {
+proc sky130::sky130_fd_pr__mrdp_hv_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3427,7 +3440,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::xpwres_draw {parameters} {
+proc sky130::sky130_fd_pr__res_iso_pw_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3462,7 +3475,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::mrl1_draw {parameters} {
+proc sky130::sky130_fd_pr__res_generic_l1_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3485,7 +3498,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::mrm1_draw {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m1_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3508,7 +3521,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::mrm2_draw {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m2_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3531,7 +3544,7 @@
 
 #----------------------------------------------------------------
 
-proc sky130::mrm3_draw {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m3_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3555,7 +3568,7 @@
 #----------------------------------------------------------------
 
 #ifdef METAL5
-proc sky130::mrm4_draw {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m4_draw {parameters} {
 
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
@@ -3576,7 +3589,7 @@
     return [sky130::res_draw $drawdict]
 }
 
-proc sky130::mrm5_draw {parameters} {
+proc sky130::sky130_fd_pr__res_generic_m5_draw {parameters} {
     # Set a local variable for each rule in ruleset
     foreach key [dict keys $sky130::ruleset] {
         set $key [dict get $sky130::ruleset $key]
@@ -3750,84 +3763,84 @@
 
 #----------------------------------------------------------------
 
-proc sky130::xpwres_check {parameters} {
-    return [sky130::res_check xpwres $parameters]
+proc sky130::sky130_fd_pr__res_iso_pw_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_iso_pw $parameters]
 }
 
-proc sky130::mrp1_check {parameters} {
-    return [sky130::res_check mrp1 $parameters]
+proc sky130::sky130_fd_pr__res_generic_po_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_generic_po $parameters]
 }
 
-proc sky130::xhrpoly_0p35_check {parameters} {
-    return [sky130::res_check xhrpoly_0p35 $parameters]
+proc sky130::sky130_fd_pr__res_high_po_0p35_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_high_po_0p35 $parameters]
 }
-proc sky130::xhrpoly_0p69_check {parameters} {
-    return [sky130::res_check xhrpoly_0p69 $parameters]
+proc sky130::sky130_fd_pr__res_high_po_0p69_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_high_po_0p69 $parameters]
 }
-proc sky130::xhrpoly_1p41_check {parameters} {
-    return [sky130::res_check xhrpoly_1p41 $parameters]
+proc sky130::sky130_fd_pr__res_high_po_1p41_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_high_po_1p41 $parameters]
 }
-proc sky130::xhrpoly_2p85_check {parameters} {
-    return [sky130::res_check xhrpoly_2p85 $parameters]
+proc sky130::sky130_fd_pr__res_high_po_2p85_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_high_po_2p85 $parameters]
 }
-proc sky130::xhrpoly_5p73_check {parameters} {
-    return [sky130::res_check xhrpoly_5p73 $parameters]
+proc sky130::sky130_fd_pr__res_high_po_5p73_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_high_po_5p73 $parameters]
 }
 
-proc sky130::uhrpoly_0p35_check {parameters} {
-    return [sky130::res_check uhrpoly_0p35 $parameters]
+proc sky130::sky130_fd_pr__res_xhigh_po_0p35_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_xhigh_po_0p35 $parameters]
 }
-proc sky130::uhrpoly_0p69_check {parameters} {
-    return [sky130::res_check uhrpoly_0p69 $parameters]
+proc sky130::sky130_fd_pr__res_xhigh_po_0p69_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_xhigh_po_0p69 $parameters]
 }
-proc sky130::uhrpoly_1p41_check {parameters} {
-    return [sky130::res_check uhrpoly_1p41 $parameters]
+proc sky130::sky130_fd_pr__res_xhigh_po_1p41_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_xhigh_po_1p41 $parameters]
 }
-proc sky130::uhrpoly_2p85_check {parameters} {
-    return [sky130::res_check uhrpoly_2p85 $parameters]
+proc sky130::sky130_fd_pr__res_xhigh_po_2p85_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_xhigh_po_2p85 $parameters]
 }
-proc sky130::uhrpoly_5p73_check {parameters} {
-    return [sky130::res_check uhrpoly_5p73 $parameters]
+proc sky130::sky130_fd_pr__res_xhigh_po_5p73_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_xhigh_po_5p73 $parameters]
 }
 
-proc sky130::mrdn_check {parameters} {
-    return [sky130::res_check mrdn $parameters]
+proc sky130::sky130_fd_pr__res_generic_nd_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_generic_nd $parameters]
 }
 
-proc sky130::mrdp_check {parameters} {
-    return [sky130::res_check mrdp $parameters]
+proc sky130::sky130_fd_pr__res_generic_pd_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_generic_pd $parameters]
 }
 
-proc sky130::mrdn_hv_check {parameters} {
-    return [sky130::res_check mrdn_hv $parameters]
+proc sky130::sky130_fd_pr__mrdn_hv_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__mrdn_hv $parameters]
 }
 
-proc sky130::mrdp_hv_check {parameters} {
-    return [sky130::res_check mrdp_hv $parameters]
+proc sky130::sky130_fd_pr__mrdp_hv_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__mrdp_hv $parameters]
 }
 
-proc sky130::mrl1_check {parameters} {
-    return [sky130::res_check mrl1 $parameters]
+proc sky130::sky130_fd_pr__res_generic_l1_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_generic_l1 $parameters]
 }
 
-proc sky130::mrm1_check {parameters} {
-    return [sky130::res_check mrm1 $parameters]
+proc sky130::sky130_fd_pr__res_generic_m1_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_generic_m1 $parameters]
 }
 
-proc sky130::mrm2_check {parameters} {
-    return [sky130::res_check mrm2 $parameters]
+proc sky130::sky130_fd_pr__res_generic_m2_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_generic_m2 $parameters]
 }
 
-proc sky130::mrm3_check {parameters} {
-    return [sky130::res_check mrm3 $parameters]
+proc sky130::sky130_fd_pr__res_generic_m3_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_generic_m3 $parameters]
 }
 
 #ifdef METAL5
-proc sky130::mrm4_check {parameters} {
-    return [sky130::res_check mrm4 $parameters]
+proc sky130::sky130_fd_pr__res_generic_m4_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_generic_m4 $parameters]
 }
-proc sky130::mrm5_check {parameters} {
-    return [sky130::res_check mrm5 $parameters]
+proc sky130::sky130_fd_pr__res_generic_m5_check {parameters} {
+    return [sky130::res_check sky130_fd_pr__res_generic_m5 $parameters]
 }
 #endif (METAL5)
 
@@ -3855,32 +3868,40 @@
 # needed by mos_check
 #----------------------------------------------------------------
 
-proc sky130::pshort_defaults {} {
+proc sky130::sky130_fd_pr__pfet_01v8_defaults {} {
     return {w 0.42 l 0.15 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.15 wmin 0.42 \
-		compatible {pshort plowvt phighvt phv} full_metal 1}
+		compatible {sky130_fd_pr__pfet_01v8 \
+		sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt \
+		sky130_fd_pr__pfet_g5v0d10v5} full_metal 1}
 }
 
-proc sky130::plowvt_defaults {} {
+proc sky130::sky130_fd_pr__pfet_01v8_lvt_defaults {} {
     return {w 0.42 l 0.35 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.35 wmin 0.42 \
-		compatible {pshort plowvt phighvt phv} full_metal 1}
+		compatible {sky130_fd_pr__pfet_01v8 \
+		sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt \
+		sky130_fd_pr__pfet_g5v0d10v5} full_metal 1}
 }
 
-proc sky130::phighvt_defaults {} {
+proc sky130::sky130_fd_pr__pfet_01v8_hvt_defaults {} {
     return {w 0.42 l 0.15 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.15 wmin 0.42 \
-		compatible {pshort plowvt phighvt phv} full_metal 1}
+		compatible {sky130_fd_pr__pfet_01v8 \
+		sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt \
+		sky130_fd_pr__pfet_g5v0d10v5} full_metal 1}
 }
 
-proc sky130::phv_defaults {} {
+proc sky130::sky130_fd_pr__pfet_g5v0d10v5_defaults {} {
     return {w 0.42 l 0.50 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 \
-		compatible {pshort plowvt phighvt phv} full_metal 1}
+		compatible {sky130_fd_pr__pfet_01v8 \
+		sky130_fd_pr__pfet_01v8_lvt sky130_fd_pr__pfet_01v8_hvt \
+		sky130_fd_pr__pfet_g5v0d10v5} full_metal 1}
 }
 
 #----------------------------------------------------------------
@@ -3888,39 +3909,49 @@
 # needed by mos_check
 #----------------------------------------------------------------
 
-proc sky130::nshort_defaults {} {
+proc sky130::sky130_fd_pr__nfet_01v8_defaults {} {
     return {w 0.420 l 0.150 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.15 wmin 0.42 \
-		compatible {nshort nlowvt sonos_e nhv nhvnative} full_metal 1}
+		compatible {sky130_fd_pr__nfet_01v8 sky130_fd_pr__nfet_01v8_lvt \
+		sky130_fd_bs_flash__special_sonosfet_star \
+		sky130_fd_pr__nfet_g5v0d10v5 sky130_fd_pr__nfet_05v0_nvt} full_metal 1}
 }
 
-proc sky130::nlowvt_defaults {} {
+proc sky130::sky130_fd_pr__nfet_01v8_lvt_defaults {} {
     return {w 0.420 l 0.150 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.15 wmin 0.42 \
-		compatible {nshort nlowvt sonos_e nhv nhvnative} full_metal 1}
+		compatible {sky130_fd_pr__nfet_01v8 sky130_fd_pr__nfet_01v8_lvt \
+		sky130_fd_bs_flash__special_sonosfet_star \
+		sky130_fd_pr__nfet_g5v0d10v5 sky130_fd_pr__nfet_05v0_nvt} full_metal 1}
 }
 
-proc sky130::sonos_e_defaults {} {
+proc sky130::sky130_fd_bs_flash__special_sonosfet_star_defaults {} {
     return {w 0.420 l 0.150 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.15 wmin 0.42 \
-		compatible {nshort nlowvt sonos_e nhv nhvnative} full_metal 1}
+		compatible {sky130_fd_pr__nfet_01v8 sky130_fd_pr__nfet_01v8_lvt \
+		sky130_fd_bs_flash__special_sonosfet_star \
+		sky130_fd_pr__nfet_g5v0d10v5 sky130_fd_pr__nfet_05v0_nvt} full_metal 1}
 }
 
-proc sky130::nhv_defaults {} {
+proc sky130::sky130_fd_pr__nfet_g5v0d10v5_defaults {} {
     return {w 0.42 l 0.50 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 \
-		compatible {nshort nlowvt sonos_e nhv nhvnative} full_metal 1}
+		compatible {sky130_fd_pr__nfet_01v8 sky130_fd_pr__nfet_01v8_lvt \
+		sky130_fd_bs_flash__special_sonosfet_star \
+		sky130_fd_pr__nfet_g5v0d10v5 sky130_fd_pr__nfet_05v0_nvt} full_metal 1}
 }
 
-proc sky130::nhvnative_defaults {} {
+proc sky130::sky130_fd_pr__nfet_05v0_nvt_defaults {} {
     return {w 0.42 l 0.50 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.50 wmin 0.42 \
-		compatible {nshort nlowvt sonos_e nhv nhvnative} full_metal 1}
+		compatible {sky130_fd_pr__nfet_01v8 sky130_fd_pr__nfet_01v8_lvt \
+		sky130_fd_bs_flash__special_sonosfet_star \
+		sky130_fd_pr__nfet_g5v0d10v5 sky130_fd_pr__nfet_05v0_nvt} full_metal 1}
 }
 
 #----------------------------------------------------------------
@@ -3928,25 +3959,28 @@
 # needed by mosvc_check
 #----------------------------------------------------------------
 
-proc sky130::xcnwvc_defaults {} {
+proc sky130::sky130_fd_pr__cap_var_lvt_defaults {} {
     return {w 1.0 l 0.18 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.18 wmin 1.0 \
-		compatible {xcnwvc xcnwvc2 xchvnwc} full_metal 1}
+		compatible {sky130_fd_pr__cap_var_lvt \
+		sky130_fd_pr__cap_var_hvt sky130_fd_pr__cap_var} full_metal 1}
 }
 
-proc sky130::xcnwvc2_defaults {} {
+proc sky130::sky130_fd_pr__cap_var_hvt_defaults {} {
     return {w 1.0 l 0.18 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.18 wmin 1.0 \
-		compatible {xcnwvc xcnwvc2 xchvnwc} full_metal 1}
+		compatible {sky130_fd_pr__cap_var_lvt \
+		sky130_fd_pr__cap_var_hvt sky130_fd_pr__cap_var} full_metal 1}
 }
 
-proc sky130::xchvnwc_defaults {} {
+proc sky130::sky130_fd_pr__cap_var_defaults {} {
     return {w 1.0 l 0.50 m 1 nf 1 diffcov 100 polycov 100 \
 		guard 1 glc 1 grc 1 gtc 1 gbc 1 tbcov 100 rlcov 100 \
 		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.50 wmin 1.0 \
-		compatible {xcnwvc xcnwvc2 xchvnwc} full_metal 1}
+		compatible {sky130_fd_pr__cap_var_lvt \
+		sky130_fd_pr__cap_var_hvt sky130_fd_pr__cap_var} full_metal 1}
 }
 
 #----------------------------------------------------------------
@@ -3993,51 +4027,51 @@
 
 #----------------------------------------------------------------
 
-proc sky130::nshort_convert {parameters} {
+proc sky130::sky130_fd_pr__nfet_01v8_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::nlowvt_convert {parameters} {
+proc sky130::sky130_fd_pr__nfet_01v8_lvt_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::sonos_e_convert {parameters} {
+proc sky130::sky130_fd_bs_flash__special_sonosfet_star_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::nhv_convert {parameters} {
+proc sky130::sky130_fd_pr__nfet_g5v0d10v5_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::nhvnative_convert {parameters} {
+proc sky130::sky130_fd_pr__nfet_05v0_nvt_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::pshort_convert {parameters} {
+proc sky130::sky130_fd_pr__pfet_01v8_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::plowvt_convert {parameters} {
+proc sky130::sky130_fd_pr__pfet_01v8_lvt_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::phighvt_convert {parameters} {
+proc sky130::sky130_fd_pr__pfet_01v8_hvt_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::phv_convert {parameters} {
+proc sky130::sky130_fd_pr__pfet_g5v0d10v5_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::xcnwvc_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_var_lvt_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::xcnwvc2_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_var_hvt_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
-proc sky130::xchvnwc_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_var_convert {parameters} {
     return [sky130::mos_convert $parameters]
 }
 
@@ -4086,52 +4120,52 @@
 
 #----------------------------------------------------------------
 
-proc sky130::nshort_dialog {parameters} {
-    sky130::mos_dialog nshort $parameters
+proc sky130::sky130_fd_pr__nfet_01v8_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__nfet_01v8 $parameters
 }
 
-proc sky130::nlowvt_dialog {parameters} {
-    sky130::mos_dialog nlowvt $parameters
+proc sky130::sky130_fd_pr__nfet_01v8_lvt_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__nfet_01v8_lvt $parameters
 }
 
-proc sky130::sonos_e_dialog {parameters} {
-    sky130::mos_dialog sonos_e $parameters
+proc sky130::sky130_fd_bs_flash__special_sonosfet_star_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_bs_flash__special_sonosfet_star $parameters
 }
 
-proc sky130::nhv_dialog {parameters} {
-    sky130::mos_dialog nhv $parameters
+proc sky130::sky130_fd_pr__nfet_g5v0d10v5_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__nfet_g5v0d10v5 $parameters
 }
 
-proc sky130::nhvnative_dialog {parameters} {
-    sky130::mos_dialog nhvnative $parameters
+proc sky130::sky130_fd_pr__nfet_05v0_nvt_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__nfet_05v0_nvt $parameters
 }
 
-proc sky130::pshort_dialog {parameters} {
-    sky130::mos_dialog pshort $parameters
+proc sky130::sky130_fd_pr__pfet_01v8_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__pfet_01v8 $parameters
 }
 
-proc sky130::plowvt_dialog {parameters} {
-    sky130::mos_dialog plowvt $parameters
+proc sky130::sky130_fd_pr__pfet_01v8_lvt_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__pfet_01v8_lvt $parameters
 }
 
-proc sky130::phighvt_dialog {parameters} {
-    sky130::mos_dialog phighvt $parameters
+proc sky130::sky130_fd_pr__pfet_01v8_hvt_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__pfet_01v8_hvt $parameters
 }
 
-proc sky130::phv_dialog {parameters} {
-    sky130::mos_dialog phv $parameters
+proc sky130::sky130_fd_pr__pfet_g5v0d10v5_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__pfet_g5v0d10v5 $parameters
 }
 
-proc sky130::xcnwvc_dialog {parameters} {
-    sky130::mos_dialog xcnwvc $parameters
+proc sky130::sky130_fd_pr__cap_var_lvt_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__cap_var_lvt $parameters
 }
 
-proc sky130::xcnwvc2_dialog {parameters} {
-    sky130::mos_dialog xcnwvc2 $parameters
+proc sky130::sky130_fd_pr__cap_var_hvt_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__cap_var_hvt $parameters
 }
 
-proc sky130::xchvnwc_dialog {parameters} {
-    sky130::mos_dialog xchvnwc $parameters
+proc sky130::sky130_fd_pr__cap_var_dialog {parameters} {
+    sky130::mos_dialog sky130_fd_pr__cap_var $parameters
 }
 
 #----------------------------------------------------------------
@@ -4870,7 +4904,7 @@
 # nMOS 1.8V
 #-------------------
 
-proc sky130::nshort_draw {parameters} {
+proc sky130::sky130_fd_pr__nfet_01v8_draw {parameters} {
     set newdict [dict create \
 	    gate_type		nfet \
 	    diff_type 		ndiff \
@@ -4887,7 +4921,7 @@
     return [sky130::mos_draw $drawdict]
 }
 
-proc sky130::nlowvt_draw {parameters} {
+proc sky130::sky130_fd_pr__nfet_01v8_lvt_draw {parameters} {
     set newdict [dict create \
 	    gate_type		nfetlvt \
 	    diff_type 		ndiff \
@@ -4904,7 +4938,7 @@
     return [sky130::mos_draw $drawdict]
 }
 
-proc sky130::sonos_e_draw {parameters} {
+proc sky130::sky130_fd_bs_flash__special_sonosfet_star_draw {parameters} {
     set newdict [dict create \
 	    gate_type		nsonos \
 	    diff_type 		ndiff \
@@ -4927,7 +4961,7 @@
 # pMOS 1.8V
 #-------------------
 
-proc sky130::pshort_draw {parameters} {
+proc sky130::sky130_fd_pr__pfet_01v8_draw {parameters} {
     set newdict [dict create \
 	    gate_type		pfet \
 	    diff_type 		pdiff \
@@ -4945,7 +4979,7 @@
     return [sky130::mos_draw $drawdict]
 }
 
-proc sky130::plowvt_draw {parameters} {
+proc sky130::sky130_fd_pr__pfet_01v8_lvt_draw {parameters} {
     set newdict [dict create \
 	    gate_type		pfetlvt \
 	    diff_type 		pdiff \
@@ -4963,7 +4997,7 @@
     return [sky130::mos_draw $drawdict]
 }
 
-proc sky130::phighvt_draw {parameters} {
+proc sky130::sky130_fd_pr__pfet_01v8_hvt_draw {parameters} {
     set newdict [dict create \
 	    gate_type		pfethvt \
 	    diff_type 		pdiff \
@@ -4985,7 +5019,7 @@
 # pMOS 5.0V
 #-------------------
 
-proc sky130::phv_draw {parameters} {
+proc sky130::sky130_fd_pr__pfet_g5v0d10v5_draw {parameters} {
     set newdict [dict create \
 	    gate_type		mvpfet \
 	    diff_type 		mvpdiff \
@@ -5009,7 +5043,7 @@
 # nMOS 5.0V
 #-------------------
 
-proc sky130::nhv_draw {parameters} {
+proc sky130::sky130_fd_pr__nfet_g5v0d10v5_draw {parameters} {
     set newdict [dict create \
 	    gate_type		mvnfet \
 	    diff_type 		mvndiff \
@@ -5027,7 +5061,7 @@
     return [sky130::mos_draw $drawdict]
 }
 
-proc sky130::nhvnative_draw {parameters} {
+proc sky130::sky130_fd_pr__nfet_05v0_nvt_draw {parameters} {
     set newdict [dict create \
 	    gate_type		mvnnfet \
 	    diff_type 		mvndiff \
@@ -5049,7 +5083,7 @@
 # MOS varactor (1.8V)
 #------------------------
 
-proc sky130::xcnwvc_draw {parameters} {
+proc sky130::sky130_fd_pr__cap_var_lvt_draw {parameters} {
     set newdict [dict create \
 	    gate_type		var \
 	    diff_type 		nnd \
@@ -5070,7 +5104,7 @@
     return [sky130::mos_draw $drawdict]
 }
 
-proc sky130::xcnwvc2_draw {parameters} {
+proc sky130::sky130_fd_pr__cap_var_hvt_draw {parameters} {
     set newdict [dict create \
 	    gate_type		varhvt \
 	    diff_type 		nnd \
@@ -5097,7 +5131,7 @@
 # Should have option for same-net with merged wells.
 #---------------------------------------------------------
 
-proc sky130::xchvnwc_draw {parameters} {
+proc sky130::sky130_fd_pr__cap_var_draw {parameters} {
     set newdict [dict create \
 	    gate_type		mvvar \
 	    diff_type 		mvnsd \
@@ -5231,52 +5265,52 @@
 
 #----------------------------------------------------------------
 
-proc sky130::nshort_check {parameters} {
-   return [sky130::mos_check nshort $parameters]
+proc sky130::sky130_fd_pr__nfet_01v8_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__nfet_01v8 $parameters]
 }
 
-proc sky130::nlowvt_check {parameters} {
-   return [sky130::mos_check nlowvt $parameters]
+proc sky130::sky130_fd_pr__nfet_01v8_lvt_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__nfet_01v8_lvt $parameters]
 }
 
-proc sky130::sonos_e_check {parameters} {
-   return [sky130::mos_check sonos_e $parameters]
+proc sky130::sky130_fd_bs_flash__special_sonosfet_star_check {parameters} {
+   return [sky130::mos_check sky130_fd_bs_flash__special_sonosfet_star $parameters]
 }
 
-proc sky130::nhv_check {parameters} {
-   return [sky130::mos_check nhv $parameters]
+proc sky130::sky130_fd_pr__nfet_g5v0d10v5_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__nfet_g5v0d10v5 $parameters]
 }
 
-proc sky130::nhvnative_check {parameters} {
-   return [sky130::mos_check nhvnative $parameters]
+proc sky130::sky130_fd_pr__nfet_05v0_nvt_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__nfet_05v0_nvt $parameters]
 }
 
-proc sky130::pshort_check {parameters} {
-   return [sky130::mos_check pshort $parameters]
+proc sky130::sky130_fd_pr__pfet_01v8_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__pfet_01v8 $parameters]
 }
 
-proc sky130::plowvt_check {parameters} {
-   return [sky130::mos_check plowvt $parameters]
+proc sky130::sky130_fd_pr__pfet_01v8_lvt_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__pfet_01v8_lvt $parameters]
 }
 
-proc sky130::phighvt_check {parameters} {
-   return [sky130::mos_check phighvt $parameters]
+proc sky130::sky130_fd_pr__pfet_01v8_hvt_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__pfet_01v8_hvt $parameters]
 }
 
-proc sky130::phv_check {parameters} {
-   return [sky130::mos_check phv $parameters]
+proc sky130::sky130_fd_pr__pfet_g5v0d10v5_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__pfet_g5v0d10v5 $parameters]
 }
 
-proc sky130::xcnwvc_check {parameters} {
-   return [sky130::mos_check xcnwvc $parameters]
+proc sky130::sky130_fd_pr__cap_var_lvt_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__cap_var_lvt $parameters]
 }
 
-proc sky130::xcnwvc2_check {parameters} {
-   return [sky130::mos_check xcnwvc2 $parameters]
+proc sky130::sky130_fd_pr__cap_var_hvt_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__cap_var_hvt $parameters]
 }
 
-proc sky130::xchvnwc_check {parameters} {
-   return [sky130::mos_check xchvnwc $parameters]
+proc sky130::sky130_fd_pr__cap_var_check {parameters} {
+   return [sky130::mos_check sky130_fd_pr__cap_var $parameters]
 }
 
 #----------------------------------------------------------------
@@ -5305,140 +5339,124 @@
 #
 # Bipolar transistors:
 #
-# sky130_fd_pr_rf_npn_1x1
-# sky130_fd_pr_rf_npn_1x2
-# sky130_fd_pr_rf_pnp5x
+# sky130_fd_pr__npn_05v5_W1p00L1p00
+# sky130_fd_pr__npn_05v5_W1p00L2p00
+# sky130_fd_pr__pnp_05v5_W0p68L0p68
+# sky130_fd_pr__pnp_05v5_W3p40L3p40
 #
 # Parallel Plate Capacitors:
 #
-# sky130_fd_pr_rf2_xcmvpp11p5x11p7_lim5shield
-# sky130_fd_pr_rf2_xcmvpp11p5x11p7_m3_lim5shield
-# sky130_fd_pr_rf2_xcmvpp11p5x11p7_m4shield
-# sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym4shield
-# sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym50p4shield
-# sky130_fd_pr_rf2_xcmvpp4p4x4p6_m3_lim5shield
-# sky130_fd_pr_rf2_xcmvpp6p8x6p1_lim4shield
-# sky130_fd_pr_rf2_xcmvpp6p8x6p1_polym4shield
-# sky130_fd_pr_rf2_xcmvpp8p6x7p9_m3_lim5shield
-# sky130_fd_pr_rf2_xcmvppx4_2xnhvnative10x4
-# sky130_fd_pr_rf_xcmvpp11p5x11p7_m3_lishield
-# sky130_fd_pr_rf_xcmvpp11p5x11p7_m3shield
-# sky130_fd_pr_rf_xcmvpp1p8x1p8_lishield
-# sky130_fd_pr_rf_xcmvpp1p8x1p8_m3shield
-# sky130_fd_pr_rf_xcmvpp2
-# sky130_fd_pr_rf_xcmvpp2_nwell
-# sky130_fd_pr_rf_xcmvpp4p4x4p6_m3_lishield
-# sky130_fd_pr_rf_xcmvpp4p4x4p6_m3shield
-# sky130_fd_pr_rf_xcmvpp8p6x7p9_m3_lishield
-# sky130_fd_pr_rf_xcmvpp8p6x7p9_m3shield
+# sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield
+# sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield
+# sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield
+# sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield
+# sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield
+# sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield
+# sky130_fd_pr__cap_vpp_6p8x6p1_pom4_shield
+# sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield
+# sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield
+# sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield
+# sky130_fd_pr__cap_vpp_1p8x1p8_li_shield
+# sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield
+# sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield
+# sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield
+# sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield
+# sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield
+#ifdef REDISTRIBUTION
 #
 # Inductors:
 #
-# balun
-# xind4_011
-# xind4_02
+# sky130_fd_pr__ind_01_04
+# sky130_fd_pr__ind_02_04
+#endif (REDISTRIBUTION)
 
-proc sky130::sky130_fd_pr_rf_npn_1x1_defaults {} {
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L1p00_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 7.03 ystep 7.03}
 }
 
-proc sky130::sky130_fd_pr_rf_npn_1x2_defaults {} {
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L2p00_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 7.03 ystep 8.03}
 }
 
-proc sky130::sky130_fd_pr_rf_pnp5x_defaults {} {
+proc sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 6.44 ystep 6.44}
 }
 
-proc sky130::balun_defaults {} {
-    return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 292 ystep 292}
+proc sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40_defaults {} {
+    return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 6.44 ystep 6.44}
 }
 
-proc sky130::xind4_02_defaults {} {
+#ifdef REDISTRIBUTION
+proc sky130::sky130_fd_pr__ind_02_04_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 258 ystep 258}
 }
 
-proc sky130::xind4_011_defaults {} {
+proc sky130::sky130_fd_pr__ind_01_04_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 290 ystep 404}
 }
+#endif (REDISTRIBUTION)
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_lim5shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 11.08 ystep 11.36}
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m3_lim5shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 11.08 ystep 11.36}
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m4shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 11.08 ystep 11.36}
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym4shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 11.08 ystep 11.36}
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym50p4shield_defaults {} {
-    return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 11.08 ystep 11.36}
-}
-
-proc sky130::sky130_fd_pr_rf2_xcmvpp4p4x4p6_m3_lim5shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 4.05 ystep 4.26}
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_lim4shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 6.47 ystep 5.76}
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_polym4shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_pom4_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 6.47 ystep 5.76}
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp8p6x7p9_m3_lim5shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 8.25 ystep 7.51}
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvppx4_2xnhvnative10x4_defaults {} {
-    return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 10.41 ystep 11.54}
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3_lishield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 11.08 ystep 11.36}
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 11.08 ystep 11.36}
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_lishield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_li_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 1.77 ystep 1.77}
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_m3shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 3.88 ystep 3.88}
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp2_defaults {} {
-    return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 4.55 ystep 4.76}
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp2_nwell_defaults {} {
-    return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 4.55 ystep 4.76}
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3_lishield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 4.05 ystep 4.26}
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 4.05 ystep 4.26}
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3_lishield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 8.25 ystep 7.51}
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3shield_defaults {} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield_defaults {} {
     return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 8.25 ystep 7.51}
 }
 
@@ -5460,107 +5478,93 @@
 
 #----------------------------------------------------------------
 
-proc sky130::sky130_fd_pr_rf_npn_1x1_convert {parameters} {
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L1p00_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_npn_1x2_convert {parameters} {
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L2p00_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_pnp5x_convert {parameters} {
+proc sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::balun_convert {parameters} {
+proc sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::xind4_011_convert {parameters} {
+#ifdef REDISTRIBUTION
+proc sky130::sky130_fd_pr__ind_01_04_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::xind4_02_convert {parameters} {
+proc sky130::sky130_fd_pr__ind_02_04_convert {parameters} {
+    return [sky130::fixed_convert $parameters]
+}
+#endif (REDISTRIBUTION)
+
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_lim5shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m3_lim5shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m4shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym4shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym50p4shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp4p4x4p6_m3_lim5shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_pom4_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_lim4shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_polym4shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp8p6x7p9_m3_lim5shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvppx4_2xnhvnative10x4_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_li_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3_lishield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_lishield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_m3shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp2_convert {parameters} {
-    return [sky130::fixed_convert $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp2_nwell_convert {parameters} {
-    return [sky130::fixed_convert $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3_lishield_convert {parameters} {
-    return [sky130::fixed_convert $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3shield_convert {parameters} {
-    return [sky130::fixed_convert $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3_lishield_convert {parameters} {
-    return [sky130::fixed_convert $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3shield_convert {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield_convert {parameters} {
     return [sky130::fixed_convert $parameters]
 }
 
@@ -5607,107 +5611,93 @@
     magic::add_entry deltay "Y step (um)" $parameters
 }
 
-proc sky130::sky130_fd_pr_rf_npn_1x1_dialog {parameters} {
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L1p00_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf_npn_1x2_dialog {parameters} {
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L2p00_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf_pnp5x_dialog {parameters} {
+proc sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::balun_dialog {parameters} {
+proc sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::xind4_011_dialog {parameters} {
+#ifdef REDISTRIBUTION
+proc sky130::sky130_fd_pr__ind_01_04_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::xind4_02_dialog {parameters} {
+proc sky130::sky130_fd_pr__ind_02_04_dialog {parameters} {
+    sky130::fixed_dialog $parameters
+}
+#endif (REDISTRIBUTION)
+
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_lim5shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m3_lim5shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m4shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym4shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym50p4shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp4p4x4p6_m3_lim5shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_pom4_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_lim4shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_polym4shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp8p6x7p9_m3_lim5shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvppx4_2xnhvnative10x4_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_li_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3_lishield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_lishield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_m3shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp2_dialog {parameters} {
-    sky130::fixed_dialog $parameters
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp2_nwell_dialog {parameters} {
-    sky130::fixed_dialog $parameters
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3_lishield_dialog {parameters} {
-    sky130::fixed_dialog $parameters
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3shield_dialog {parameters} {
-    sky130::fixed_dialog $parameters
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3_lishield_dialog {parameters} {
-    sky130::fixed_dialog $parameters
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3shield_dialog {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield_dialog {parameters} {
     sky130::fixed_dialog $parameters
 }
 
@@ -5749,108 +5739,94 @@
 # No additional parameters declared for drawing
 #----------------------------------------------------------------
 
-proc sky130::sky130_fd_pr_rf_npn_1x1_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_npn_1x1 $parameters]
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L1p00_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__npn_05v5_W1p00L1p00 $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_npn_1x2_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_npn_1x2 $parameters]
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L2p00_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__npn_05v5_W1p00L2p00 $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_pnp5x_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_pnp5x $parameters]
+proc sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__pnp_05v5_W0p68L0p68 $parameters]
 }
 
-proc sky130::balun_draw {parameters} {
-    return [sky130::fixed_draw balun $parameters]
+proc sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__pnp_05v5_W3p40L3p40 $parameters]
 }
 
-proc sky130::xind4_011_draw {parameters} {
-    return [sky130::fixed_draw xind4_011 $parameters]
+#ifdef REDISTRIBUTION
+proc sky130::sky130_fd_pr__ind_01_04_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__ind_01_04 $parameters]
 }
 
-proc sky130::xind4_02_draw {parameters} {
-    return [sky130::fixed_draw xind4_02 $parameters]
+proc sky130::sky130_fd_pr__ind_02_04_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__ind_02_04 $parameters]
+}
+#endif (REDISTRIBUTION)
+
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_lim5shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvpp11p5x11p7_lim5shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m3_lim5shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvpp11p5x11p7_m3_lim5shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m4shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvpp11p5x11p7_m4shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym4shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym4shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym50p4shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym50p4shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp4p4x4p6_m3_lim5shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvpp4p4x4p6_m3_lim5shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_pom4_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_6p8x6p1_pom4_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_lim4shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvpp6p8x6p1_lim4shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_polym4shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvpp6p8x6p1_polym4shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp8p6x7p9_m3_lim5shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvpp8p6x7p9_m3_lim5shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvppx4_2xnhvnative10x4_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf2_xcmvppx4_2xnhvnative10x4 $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_li_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_1p8x1p8_li_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3_lishield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp11p5x11p7_m3_lishield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp11p5x11p7_m3shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_lishield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp1p8x1p8_lishield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_m3shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp1p8x1p8_m3shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp2_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp2 $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp2_nwell_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp2_nwell $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3_lishield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp4p4x4p6_m3_lishield $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp4p4x4p6_m3shield $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3_lishield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp8p6x7p9_m3_lishield $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3shield_draw {parameters} {
-    return [sky130::fixed_draw sky130_fd_pr_rf_xcmvpp8p6x7p9_m3shield $parameters]
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield_draw {parameters} {
+    return [sky130::fixed_draw sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield $parameters]
 }
 
 #----------------------------------------------------------------
@@ -5903,107 +5879,93 @@
 
 #----------------------------------------------------------------
 
-proc sky130::sky130_fd_pr_rf_npn_1x1_check {parameters} {
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L1p00_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_npn_1x2_check {parameters} {
+proc sky130::sky130_fd_pr__npn_05v5_W1p00L2p00_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_pnp5x_check {parameters} {
+proc sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::balun_check {parameters} {
+proc sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::xind4_011_check {parameters} {
+#ifdef REDISTRIBUTION
+proc sky130::sky130_fd_pr__ind_01_04_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::xind4_02_check {parameters} {
+proc sky130::sky130_fd_pr__ind_02_04_check {parameters} {
+    return [sky130::fixed_check $parameters]
+}
+#endif (REDISTRIBUTION)
+
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_lim5shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m3_lim5shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_m4shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym4shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp11p5x11p7_polym50p4shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp4p4x4p6_m3_lim5shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_6p8x6p1_pom4_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_lim4shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp6p8x6p1_polym4shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvpp8p6x7p9_m3_lim5shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf2_xcmvppx4_2xnhvnative10x4_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_li_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3_lishield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp11p5x11p7_m3shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_lishield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp1p8x1p8_m3shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
-proc sky130::sky130_fd_pr_rf_xcmvpp2_check {parameters} {
-    return [sky130::fixed_check $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp2_nwell_check {parameters} {
-    return [sky130::fixed_check $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3_lishield_check {parameters} {
-    return [sky130::fixed_check $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp4p4x4p6_m3shield_check {parameters} {
-    return [sky130::fixed_check $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3_lishield_check {parameters} {
-    return [sky130::fixed_check $parameters]
-}
-
-proc sky130::sky130_fd_pr_rf_xcmvpp8p6x7p9_m3shield_check {parameters} {
+proc sky130::sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield_check {parameters} {
     return [sky130::fixed_check $parameters]
 }
 
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index 8faaa03..994e000 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -42,13 +42,13 @@
 #------------------------------------------------------------------------
 # sky130_fd_pr__nfet_01v8	nfet		standard nFET
 # sky130_fd_pr__nfet_01v8	scnfet		standard nFET in standard cell**
-# npd				npd		special nFET in SRAM cell
-# npass				npass		special nFET in SRAM cell
+# sky130_fd_pr__special_nfet_latch npd		special nFET in SRAM cell
+# sky130_fd_pr__special_nfet_pass  npass	special nFET in SRAM cell
 # sky130_fd_pr__nfet_01v8_lvt	nfetlvt		low Vt nFET
-# sonos_p/e			nsonos		SONOS nFET
+# sky130_fd_bs_flash__special_sonosfet_star nsonos SONOS nFET
 # sky130_fd_pr__pfet_01v8	pfet		standard pFET
 # sky130_fd_pr__pfet_01v8	scpfet		standard pFET in standard cell**
-# ppu				ppu		special pFET in SRAM cell
+# sky130_fd_pr__special_pfet_pass ppu		special pFET in SRAM cell
 # sky130_fd_pr__pfet_01v8_lvt	pfetlvt		low Vt pFET
 # sky130_fd_pr__pfet_01v8_mvt	pfetmvt		med Vt pFET
 # sky130_fd_pr__pfet_01v8_hvt	pfethvt		high Vt pFET
@@ -56,10 +56,10 @@
 # sky130_fd_pr__pfet_g5v0d10v5	mvpfet		thickox pFET
 # sky130_fd_pr__nfet_g5v0d10v5	mvnfet		thickox nFET
 # sky130_fd_pr__nfet_01v8_nvt	mvnnfet		thickox native nFET
-# sky130_fd_pr__diode_pw2nd	ndiode		n+ diff diode
-# ndiode_h			mvndiode	thickox n+ diff diode
-# sky130_fd_pr__diode_pd2nw	pdiode		p+ diff diode
-# pdiode_h			mvpdiode	thickox p+ diff diode
+# sky130_fd_pr__diode_pw2nd_05v5 ndiode		n+ diff diode
+# sky130_fd_pr__diode_pw2nd_11v0 mvndiode	thickox n+ diff diode
+# sky130_fd_pr__diode_pd2nw_05v5 pdiode		p+ diff diode
+# sky130_fd_pr__diode_pd2nw_11v0 mvpdiode	thickox p+ diff diode
 # sky130_fd_pr__diode_pw2nd_nvt	nndiode		diode with nndiff
 # sky130_fd_pr__diode_pw2nd_lvt	ndiodelvt	low Vt n+ diff diode
 # sky130_fd_pr__diode_pd2nw_lvt	pdiodelvt	low Vt p+ diff diode
@@ -67,56 +67,43 @@
 # sky130_fd_pr__npn_05v0	pbase		NPN in deep nwell
 # sky130_fd_pr__npn_11v0	mvpbase		thick oxide gated NPN
 # sky130_fd_pr__pnp_05v0	nbase		PNP
-# xcmimc1			mimcap		MiM cap 1st plate
-# xcmimc2			mimcap2		MiM cap 2nd plate
-# mrdn				rdn		n+ diff resistor
+# sky130_fd_pr__cap_mim_m3_1	mimcap		MiM cap 1st plate
+# sky130_fd_pr__cap_mim_m3_2	mimcap2		MiM cap 2nd plate
+# sky130_fd_pr__res_generic_nd	rdn		n+ diff resistor
 # mrdn_hv			mvrdn		thickox n+ diff resistor
-# mrdp				rdp		p+ diff resistor
+# sky130_fd_pr__res_generic_pd	rdp		p+ diff resistor
 # mrdp_hv			mvrdp		thickox p+ diff resistor
-# mrl1				rli		local interconnect resistor
-# mrp1				npres		n+ poly resistor
-# xhrpoly_*			ppres (*)	p+ poly resistor (300 Ohms/sq)
-# uhrpoly_*			xres (*)	p+ poly resistor (2k Ohms/sq)
-# xcnwvc			varactor	varactor (low Vt?)
-# xcnwvc2			varactorhvt	high Vt varactor
-# xchvnwc			mvvaractor	thickox varactor
-# xpwres			rpw		pwell resistor (in deep nwell)
+# sky130_fd_pr__res_generic_l1	rli		local interconnect resistor
+# sky130_fd_pr__res_generic_po	npres		n+ poly resistor
+# sky130_fd_pr__res_high_po_*	ppres (*)	p+ poly resistor (300 Ohms/sq)
+# sky130_fd_pr__res_xhigh_po_*	xres (*)	p+ poly resistor (2k Ohms/sq)
+# sky130_fd_pr__cap_var_lvt	varactor	low Vt varactor
+# sky130_fd_pr__cap_var_hvt	varactorhvt	high Vt varactor
+# sky130_fd_pr__cap_var		mvvaractor	thickox varactor
+# sky130_fd_pr__res_iso_pw	rpw		pwell resistor (in deep nwell)
 #
-# (*) Note that ppres may extract into some generic type
-# called "xhrpoly", but only specific sizes of xhrpoly are
-# allowed, and these are created from fixed layouts like the
-# types below.
+# (*) Note that ppres may extract into some generic type called
+# "sky130_fd_pr__res_xhigh_po", but only specific sizes of xhrpoly are
+# allowed, and these are created from fixed layouts like the types below.
 #
 # (**) nFET and pFET in standard cells are the same as devices
 # outside of the standard cell except for the DRC rule for
 # FET to diffusion contact spacing (which is 0.05um, not 0.055um)
 #
-# To avoid creating a large number of types, a few ID layers are
-# used in conjunction with standard devices types:  "lvt" for
-# low threshold voltage, and "hvt" for high threshold voltage.
-# "dnwell" is used as an identifier layer where appropriate.
-# Layer HVI (thick oxide) is treated differently, and types
-# "mv*" are defined where thick oxide is required.
-#
 #-------------------------------------------------------------
 # The following devices are not extracted but are represented
 # only by script-generated subcells in the PDK.
 #-------------------------------------------------------------
-# nshortesd			ESD nFET
-# nhvesd			ESD thickox nFET
-# nhvnativeesd			ESD native nFET
-# phvesd			ESD thickox pFET
-# fnpass			flash nFET device
-# xesd_ndiode_h_***		ESD n+ diode
-# xesd_pdiode_h_***		ESD p+ diode
-# reslocsub			local substrate island indicator
-# xcmvpp			Vpp cap
-# xcmvpp_2			Vpp cap
-# xcmvpp_*			Vpp cap
-# xcmvpp*			Vpp cap
-# balun				balun inductor
-# ind4				inductor
-# fuse				metal fuse device
+# sky130_fd_pr__esd_nfet_01v8		ESD nFET
+# sky130_fd_pr__esd_nfet_g5v0d10v5	ESD thickox nFET
+# sky130_fd_pr__esd_nfet_05v0_nvt	ESD native nFET
+# sky130_fd_pr__esd_pfet_g5v0d10v5	ESD thickox pFET
+# sky130_fd_pr__special_nfet_pass_flash	flash nFET device
+# sky130_fd_pr__esd_rf_diode_pw2nd_11v0	ESD n+ diode
+# sky130_fd_pr__esd_rf_diode_pd2nw_11v0	ESD p+ diode
+# sky130_fd_pr__cap_vpp_*		Vpp cap
+# sky130_fd_pr__ind_*			inductor
+# sky130_fd_pr__fuse_m4			metal fuse device
 #--------------------------------------------------------------
 
 #-----------------------------------------------------
@@ -5897,7 +5884,7 @@
 
  device msubcircuit sky130_fd_pr__pfet_01v8 pfet,scpfet \
 	*pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w
- device msubcircuit ppu ppu \
+ device msubcircuit sky130_fd_pr__special_pfet_pass ppu \
 	*pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w
  device msubcircuit sky130_fd_pr__pfet_01v8_lvt pfetlvt \
 	*pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w
@@ -5906,23 +5893,36 @@
  device msubcircuit sky130_fd_pr__pfet_01v8_hvt pfethvt \
 	*pdiff,pdiffres *pdiff,pdiffres nwell error l=l w=w
 
- device msubcircuit sky130_fd_pr__nfet_01v8 nfet,scnfet,npd,npass \
+ device msubcircuit sky130_fd_pr__nfet_01v8 nfet,scnfet \
 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
- device msubcircuit npd npd \
+ device msubcircuit sky130_fd_pr__special_nfet_latch npd \
 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
- device msubcircuit npass npass \
+ device msubcircuit sky130_fd_pr__special_nfet_pass npass \
+	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
+
+ device msubcircuit sky130_fd_pr__special_nfet_latch npd \
+	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
+ device msubcircuit sky130_fd_pr__special_nfet_pass npass \
 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
  device msubcircuit sky130_fd_pr__nfet_01v8_lvt nfetlvt \
 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
- device msubcircuit sonos_e nsonos \
+ device msubcircuit sky130_fd_bs_flash__special_sonosfet_star nsonos \
 	*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w
- device subcircuit xcnwvc varactor \
+ device subcircuit sky130_fd_pr__cap_var_lvt varactor \
 	*nndiff nwell error l=l w=w
- device subcircuit xcnwvc2 varhvt \
+ device subcircuit sky130_fd_pr__cap_var_hvt varhvt \
 	*nndiff nwell error l=l w=w
- device subcircuit xchvnwc mvvaractor \
+ device subcircuit sky130_fd_pr__cap_var mvvaractor \
 	*mvnndiff nwell error l=l w=w
 
+ # Extended drain devices (must appear before the regular devices)
+ device msubcircuit sky130_fd_pr__nfet_20v0_nvt mvnnfet *mvndiff,mvndiffres \
+	dnwell pwell,space/w error l=l w=w
+ device msubcircuit sky130_fd_pr__nfet_20v0 mvnfet *mvndiff,mvndiffres \
+	dnwell pwell,space/w error l=l w=w
+ device msubcircuit sky130_fd_pr__pfet_20v0 mvpfet *mvpdiff,mvpdiffres \
+	pwell,space/w nwell error l=l w=w
+
  device msubcircuit sky130_fd_pr__pfet_g5v0d10v5 mvpfet \
 	*mvpdiff,mvpdiffres *mvpdiff,mvpdiffres nwell error l=l w=w
  device msubcircuit sky130_fd_pr__nfet_g5v0d10v5 mvnfet \
@@ -5933,64 +5933,56 @@
  device msubcircuit sky130_fd_pr__npn_05v0 npn dnwell *ndiff space/w error a1=area
  device msubcircuit sky130_fd_pr__pnp_05v0 pnp pwell,space/w *pdiff a1=area
 
- # Extended drain devices
- device msubcircuit sky130_fd_pr__nfet_20v0_nvt mvnnfet *mvndiff dnwell \
-	pwell,space/w error l=l w=w
- device msubcircuit sky130_fd_pr__nfet_20v0 mvnfet *mvndiff dnwell \
-	pwell,space/w error l=l w=w
- device msubcircuit sky130_fd_pr__pfet_20v0 mvpfet *mvpdiff pwell,space/w \
-	nwell error l=l w=w
-
- device rsubcircuit short rmp \
+ device rsubcircuit sky130_fd_pr__res_generic_po rmp \
 	*poly	 space/w,pwell,nwell error l=l w=w
- device rsubcircuit short rli1 \
+ device rsubcircuit sky130_fd_pr__res_generic_l1 rli1 \
        *li,coreli space/w,pwell,nwell error l=l w=w
- device rsubcircuit short rmetal1 \
+ device rsubcircuit sky130_fd_pr__res_generic_m1 rmetal1 \
 	*metal1 space/w,pwell,nwell error l=l w=w
- device rsubcircuit short rmetal2 \
+ device rsubcircuit sky130_fd_pr__res_generic_m2 rmetal2 \
 	*metal2 space/w,pwell,nwell error l=l w=w
- device rsubcircuit short rmetal3 \
+ device rsubcircuit sky130_fd_pr__res_generic_m3 rmetal3 \
 	*metal3 space/w,pwell,nwell error l=l w=w
 #ifdef METAL5
- device rsubcircuit short rm4 \
+ device rsubcircuit sky130_fd_pr__res_generic_m4 rm4 \
 	*m4 space/w,pwell,nwell error l=l w=w
- device rsubcircuit short rm5 \
+ device rsubcircuit sky130_fd_pr__res_generic_m5 rm5 \
 	*m5 space/w,pwell,nwell error l=l w=w
 #endif (METAL5)
 
- device rsubcircuit xhrpoly_0p35 xhrpoly \
+ device rsubcircuit sky130_fd_pr__res_high_po_0p35 xhrpoly \
 	xpc pwell,space/w error +res0p35 l=l w=w
- device rsubcircuit xhrpoly_0p69  xhrpoly \
+ device rsubcircuit sky130_fd_pr__res_high_po_0p69  xhrpoly \
 	xpc pwell,space/w error +res0p69 l=l w=w
- device rsubcircuit xhrpoly_1p41  xhrpoly \
+ device rsubcircuit sky130_fd_pr__res_high_po_1p41  xhrpoly \
 	xpc pwell,space/w error +res1p41 l=l w=w
- device rsubcircuit xhrpoly_2p85  xhrpoly \
+ device rsubcircuit sky130_fd_pr__res_high_po_2p85  xhrpoly \
 	xpc pwell,space/w error +res2p85 l=l w=w
- device rsubcircuit xhrpoly_5p73  xhrpoly \
+ device rsubcircuit sky130_fd_pr__res_high_po_5p73  xhrpoly \
 	xpc pwell,space/w error +res5p73 l=l w=w
- device rsubcircuit xhrpoly  xhrpoly \
+ device rsubcircuit sky130_fd_pr__res_high_po	    xhrpoly \
 	xpc pwell,space/w error l=l w=w
- device rsubcircuit uhrpoly_0p35  uhrpoly \
+ device rsubcircuit sky130_fd_pr__res_xhigh_po_0p35  uhrpoly \
 	xpc pwell,space/w error +res0p35 l=l w=w
- device rsubcircuit uhrpoly_0p69  uhrpoly \
+ device rsubcircuit sky130_fd_pr__res_xhigh_po_0p69  uhrpoly \
 	xpc pwell,space/w error +res0p69 l=l w=w
- device rsubcircuit uhrpoly_1p41  uhrpoly \
+ device rsubcircuit sky130_fd_pr__res_xhigh_po_1p41  uhrpoly \
 	xpc pwell,space/w error +res1p41 l=l w=w
- device rsubcircuit uhrpoly_2p85  uhrpoly \
+ device rsubcircuit sky130_fd_pr__res_xhigh_po_2p85  uhrpoly \
 	xpc pwell,space/w error +res2p85 l=l w=w
- device rsubcircuit uhrpoly_5p73  uhrpoly \
+ device rsubcircuit sky130_fd_pr__res_xhigh_po_5p73  uhrpoly \
 	xpc pwell,space/w error +res5p73 l=l w=w
- device rsubcircuit uhrpoly  uhrpoly \
+ device rsubcircuit sky130_fd_pr__res_xhigh_po	     uhrpoly \
 	xpc pwell,space/w error l=l w=w
 
- device rsubcircuit mrp1     mrp1 \
+ device rsubcircuit sky130_fd_pr__res_generic_po     mrp1 \
 	*poly pwell,space/w error 	l=l w=w
 
- device rsubcircuit mrdn     ndiffres \
+ device rsubcircuit sky130_fd_pr_res_generic_nd     ndiffres \
 	*ndiff pwell,space/w  error l=l w=w
- device rsubcircuit mrdp     pdiffres \
+ device rsubcircuit sky130_fd_pr_res_generic_pd     pdiffres \
 	*pdiff nwell    error l=l w=w
- device rsubcircuit xpwres   rpw \
+ device rsubcircuit sky130_fd_pr__res_iso_pw   rpw \
         pwell dnwell error l=l w=w
 
  device rsubcircuit mrdn_hv  mvndiffres \
@@ -5998,13 +5990,13 @@
  device rsubcircuit mrdp_hv  mvpdiffres \
 	*mvpdiff nwell   error l=l w=w
 
- device subcircuit  sky130-fd_pr__diode_pd2nw *pdiode \
+ device subcircuit  sky130_fd_pr__diode_pd2nw_05v5 *pdiode \
 	nwell a=area
- device msubcircuit sky130_fd_pr__diode_pw2nd *ndiode \
+ device msubcircuit sky130_fd_pr__diode_pw2nd_05v5 *ndiode \
 	pwell,space/w a=area
- device subcircuit  pdiode_h *mvpdiode \
+ device subcircuit  sky130_fd_pr__diode_pd2nw_11v0 *mvpdiode \
 	nwell a=area
- device msubcircuit ndiode_h *mvndiode \
+ device msubcircuit sky130_fd_pr__diode_pw2nd_11v0 *mvndiode \
 	pwell,space/w a=area
 
  # These are parasitic devices
@@ -6018,88 +6010,88 @@
 	pwell,space/w a=area
 
 #ifdef MIM
- device subcircuit xcmimc1 *mimcap  m3 nwell,pwell,space/w error a=area s=subs
- device subcircuit xcmimc2 *mimcap2 m4,mimcc/m4 nwell,pwell,space/w error a=area s=subs
+ device subcircuit sky130_fd_pr__cap_mim_m3_1 *mimcap  m3 nwell,pwell,space/w error a=area s=subs
+ device subcircuit sky130_fd_pr__cap_mim_m3_2 *mimcap2 m4,mimcc/m4 nwell,pwell,space/w error a=area s=subs
 #endif (MIM)
 
  variants (orig)
 
- device mosfet pshort scpfet,pfet pdiff,pdiffres,pdc nwell 
- device mosfet ppu ppu pdiff,pdiffres,pdc nwell 
- device mosfet plowvt pfetlvt pdiff,pdiffres,pdc nwell 
- device mosfet pmedvt pfetmvt pdiff,pdiffres,pdc nwell 
- device mosfet phighvt pfethvt pdiff,pdiffres,pdc nwell 
- device mosfet nshort scnfet,npd,npass,nfet ndiff,ndiffres,ndc pwell,space/w
- device mosfet npd npd ndiff,ndiffres,ndc pwell,space/w
- device mosfet npass npass ndiff,ndiffres,ndc pwell,space/w
- device mosfet nlowvt nfetlvt ndiff,ndiffres,ndc pwell,space/w
- device mosfet sonos_e nsonos ndiff,ndiffres,ndc pwell,space/w
- device mosfet phv mvpfet mvpdiff,mvpdiffres,mvpdc nwell 
- device mosfet nhv mvnfet mvndiff,mvndiffres,mvndc pwell,space/w
- device mosfet nhvnative mvnnfet *mvndiff,mvndiffres pwell,space/w
+ device mosfet sky130_fd_pr__pfet_01v8 scpfet,pfet pdiff,pdiffres,pdc nwell 
+ device mosfet sky130_fd_pr__special_pfet_pass ppu pdiff,pdiffres,pdc nwell 
+ device mosfet sky130_fd_pr__pfet_01v8_lvt pfetlvt pdiff,pdiffres,pdc nwell 
+ device mosfet sky130_fd_pr__pfet_01v8_mvt pfetmvt pdiff,pdiffres,pdc nwell 
+ device mosfet sky130_fd_pr__pfet_01v8_hvt pfethvt pdiff,pdiffres,pdc nwell 
+ device mosfet sky130_fd_pr__nfet_01v8 scnfet,nfet ndiff,ndiffres,ndc pwell,space/w
+ device mosfet sky130_fd_pr__special_nfet_pass  npass ndiff,ndiffres,ndc pwell,space/w
+ device mosfet sky130_fd_pr__special_nfet_latch npd ndiff,ndiffres,ndc pwell,space/w
+ device mosfet sky130_fd_pr__special_nfet_latch npd ndiff,ndiffres,ndc pwell,space/w
+ device mosfet sky130_fd_pr__nfet_01v8_lvt nfetlvt ndiff,ndiffres,ndc pwell,space/w
+ device mosfet sky130_fd_bs_flash__special_sonosfet_star nsonos ndiff,ndiffres,ndc \
+	pwell,space/w
+
+ # Extended drain devices (must appear before the regular devices)
+ device mosfet sky130_fd_pr__nfet_20v0_nvt mvnnfet *mvndiff,mvndiffres \
+	dnwell pwell,space/w error
+ device mosfet sky130_fd_pr__nfet_20v0 mvnfet *mvndiff,mvndiffres \
+	dnwell pwell,space/w error
+ device mosfet sky130_fd_pr__pfet_20v0 mvpfet *mvpdiff,mvpdiffres \
+	pwell,space/w nwell error
+
+ device mosfet sky130_fd_pr__pfet_g5v0d10v5 mvpfet mvpdiff,mvpdiffres,mvpdc nwell 
+ device mosfet sky130_fd_pr__nfet_g5v0d10v5 mvnfet mvndiff,mvndiffres,mvndc pwell,space/w
+ device mosfet sky130_fd_pr__nfet_05v0_nvt mvnnfet *mvndiff,mvndiffres pwell,space/w
 
  # These devices always extract as subcircuits
- device subcircuit xcnwvc varactor *nndiff nwell error l=l w=w
- device subcircuit xcnwvc2 varhvt *nndiff nwell error l=l w=w
- device subcircuit xchvnwc mvvaractor *mvnndiff nwell error l=l w=w
+ device subcircuit sky130_fd_pr__cap_var_lvt varactor *nndiff nwell error l=l w=w
+ device subcircuit sky130_fd_pr__cap_var_hvt varhvt *nndiff nwell error l=l w=w
+ device subcircuit sky130_fd_pr__cap_var mvvaractor *mvnndiff nwell error l=l w=w
 
- device resistor short rmp     *poly
- device resistor short rli1    *li,coreli
- device resistor short rmetal1 *metal1
- device resistor short rmetal2 *metal2
- device resistor short rmetal3 *metal3
+ device resistor sky130_fd_pr__res_generic_po rmp     *poly
+ device resistor sky130_fd_pr__res_generic_l1 rli1    *li,coreli
+ device resistor sky130_fd_pr__res_generic_m1 rmetal1 *metal1
+ device resistor sky130_fd_pr__res_generic_m2 rmetal2 *metal2
+ device resistor sky130_fd_pr__res_generic_m3 rmetal3 *metal3
 #ifdef METAL5
- device resistor short rm4 *m4
- device resistor short rm5 *m5
+ device resistor sky130_fd_pr__res_generic_m4 rm4 *m4
+ device resistor sky130_fd_pr__res_generic_m5 rm5 *m5
 #endif (METAL5)
 
- device resistor xhrpoly_0p35 xhrpoly xpc +res0p35
- device resistor xhrpoly_0p69 xhrpoly xpc +res0p69
- device resistor xhrpoly_1p41 xhrpoly xpc +res1p41
- device resistor xhrpoly_2p85 xhrpoly xpc +res2p85
- device resistor xhrpoly_5p73 xhrpoly xpc +res5p73
- device resistor xhrpoly xhrpoly xpc 
- device resistor uhrpoly_0p35 uhrpoly xpc +res0p35
- device resistor uhrpoly_0p69 uhrpoly xpc +res0p69
- device resistor uhrpoly_1p41 uhrpoly xpc +res1p41
- device resistor uhrpoly_2p85 uhrpoly xpc +res2p85
- device resistor uhrpoly_5p73 uhrpoly xpc +res5p73
- device resistor uhrpoly uhrpoly xpc 
- device resistor mrp1 mrp1       *poly 
- device resistor mrdn  ndiffres *ndiff 
- device resistor mrdp  pdiffres *pdiff 
+ device resistor sky130_fd_pr__res_high_po_0p35 xhrpoly xpc +res0p35
+ device resistor sky130_fd_pr__res_high_po_0p69 xhrpoly xpc +res0p69
+ device resistor sky130_fd_pr__res_high_po_1p41 xhrpoly xpc +res1p41
+ device resistor sky130_fd_pr__res_high_po_2p85 xhrpoly xpc +res2p85
+ device resistor sky130_fd_pr__res_high_po_5p73 xhrpoly xpc +res5p73
+ device resistor sky130_fd_pr__res_high_po xhrpoly xpc 
+ device resistor sky130_fd_pr__res_xhigh_po_0p35 uhrpoly xpc +res0p35
+ device resistor sky130_fd_pr__res_xhigh_po_0p69 uhrpoly xpc +res0p69
+ device resistor sky130_fd_pr__res_xhigh_po_1p41 uhrpoly xpc +res1p41
+ device resistor sky130_fd_pr__res_xhigh_po_2p85 uhrpoly xpc +res2p85
+ device resistor sky130_fd_pr__res_xhigh_po_5p73 uhrpoly xpc +res5p73
+ device resistor sky130_fd_pr__res_xhigh_po uhrpoly xpc 
+ device resistor sky130_fd_pr__res_generic_po  mrp1     *poly 
+ device resistor sky130_fd_pr__res_generic_nd  ndiffres *ndiff 
+ device resistor sky130_fd_pr__res_generic_pd  pdiffres *pdiff 
  device resistor mrdn_hv   mvndiffres *mvndiff 
  device resistor mrdp_hv   mvpdiffres *mvpdiff 
- device resistor xpwres   rpw    pwell
+ device resistor sky130_fd_pr__res_iso_pw   rpw    pwell
 
- device pdiode pdiode *pdiode nwell a=area
- device ndiode ndiode *ndiode pwell,space/w a=area
- device pdiode pdiode_h *mvpdiode nwell a=area
- device ndiode ndiode_h *mvndiode pwell,space/w a=area
+ device pdiode sky130_fd_pr__diode_pd2nw_05v5 *pdiode nwell a=area
+ device ndiode sky130_fd_pr__diode_pw2nd_05v5 *ndiode pwell,space/w a=area
+ device pdiode sky130_fd_pr__diode_pd2nw_11v0 *mvpdiode nwell a=area
+ device ndiode sky130_fd_pr__diode_pw2nd_11v0 *mvndiode pwell,space/w a=area
 
  # These are parasitic devices
- device ndiode ndiode_lvt *ndiodelvt pwell,space/w a=area
- device pdiode pdiode_lvt *pdiodelvt nwell a=area
- device pdiode pdiode_hvt *pdiodehvt nwell a=area
- device ndiode ndiode_native *nndiode pwell,space/w a=area
+ device ndiode sky130_fd_pr__diode_pw2nd_05v5_lvt *ndiodelvt pwell,space/w a=area
+ device pdiode sky130_fd_pr__diode_pd2nw_05v5_lvt *pdiodelvt nwell a=area
+ device pdiode sky130_fd_pr__diode_pd2nw_05v5_hvt *pdiodehvt nwell a=area
+ device ndiode sky130_fd_pr__diode_pw2nd_05v5_nvt *nndiode pwell,space/w a=area
 
- device bjt sky130_fd_pr__npn_05v0 npn dnwell *ndiff space/w error a1=area
- device bjt sky130_fd_pr__pnp_05v0 pnp pwell,space/w *pdiff a1=area
-
- # Extended drain devices
- device mosfet sky130_fd_pr__nfet_20v0_nvt mvnnfet *mvndiff dnwell \
-	pwell,space/w error
- device mosfet sky130_fd_pr__nfet_20v0 mvnfet *mvnndiff dnwell \
-	pwell,space/w error
- device mosfet sky130_fd_pr__pfet_20v0 mvpfet *mvpdiff pwell,space/w \
-	nwell error
-
- device subcircuit  pdiode_h *mvpdiode nwell a=area
- device msubcircuit ndiode_h *mvndiode pwell,space/w a=area
+ device bjt sky130_fd_pr__npn_05v5 npn dnwell *ndiff space/w error a1=area
+ device bjt sky130_fd_pr__pnp_05v5 pnp pwell,space/w *pdiff a1=area
 
 #ifdef MIM
- device capacitor xcmimc1 *mimcap  *m3 1
- device capacitor xcmimc2 *mimcap2 *m4 1
+ device capacitor sky130_fd_pr__cap_mim_m3_1 *mimcap  *m3 1
+ device capacitor sky130_fd_pr__cap_mim_m3_2 *mimcap2 *m4 1
 #endif (MIM)
 
 end
