Added netlists for the analog pads introduced (as layout) in the last commit,
and collected the analog pad netlists into a single file.  Added scripts to
modify the SkyWater layouts for the low-voltage clamp power and ground pads
in the same was as was previously done for the high-voltage clamp pads, which
is to isolate the connection to VDDIO_Q or VSSIO_Q with a metal 3 resistor
ring so that the "quiet" busses remain separated for LVS.  Modified existing
netlists to account for the addition of the two extra isolated pad pins
inside the metal 3 resistor ring.
diff --git a/VERSION b/VERSION
index 82d479a..144afd4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.410
+1.0.411
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index a965766..f3d269c 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -1410,6 +1410,30 @@
 	./custom/scripts/fix_vssio_overlay_gds.py \
 		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}/sky130_fd_io__overlay_vssio_hvc.gds
 
+	# Copy the GDS file for the LVC power pad, then run the script that fixes it.
+	cp ${SKYWATER_LIBS_PATH}/sky130_fd_io/latest/cells/top_power_lvc_wpad/sky130_fd_io__top_power_lvc_wpad.gds \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}
+	./custom/scripts/fix_vddio_lvc_gds.py \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}/sky130_fd_io__top_power_lvc_wpad.gds
+
+	# Copy the GDS file for the LVC power pad overlay, then run the script that fixes it.
+	cp ${SKYWATER_LIBS_PATH}/sky130_fd_io/latest/cells/overlay_vddio_lvc/sky130_fd_io__overlay_vddio_lvc.gds \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}
+	./custom/scripts/fix_vddio_overlay_lvc.py \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}/sky130_fd_io__overlay_vddio_lvc.gds
+
+	# Copy the GDS file for the LVC ground pad, then run the script that fixes it.
+	cp ${SKYWATER_LIBS_PATH}/sky130_fd_io/latest/cells/top_ground_lvc_wpad/sky130_fd_io__top_ground_lvc_wpad.gds \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}
+	./custom/scripts/fix_vssio_lvc_gds.py \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}/sky130_fd_io__top_ground_lvc_wpad.gds
+
+	# Copy the GDS file for the LVC ground pad overlay, then run the script that fixes it.
+	cp ${SKYWATER_LIBS_PATH}/sky130_fd_io/latest/cells/overlay_vssio_lvc/sky130_fd_io__overlay_vssio_lvc.gds \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}
+	./custom/scripts/fix_vssio_overlay_lvc.py \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}/sky130_fd_io__overlay_vssio_lvc.gds
+
 	# Install SkyWater I/O pad library
 	${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130$*} \
 		-cdl %l/latest/cells/*/*.cdl ignore=topography compile-only \
@@ -1426,8 +1450,8 @@
 		-gds %l/latest/cells/*/*.gds compile-only \
 			sort=../common/sort_pdkfiles.py \
 			options=custom/scripts/gds_import_io.tcl \
-			no-copy=sky130_fd_io__top_gpiov2.gds,sky130_fd_io__top_ground_hvc_wpad.gds,sky130_fd_io__top_power_hvc_wpadv2.gds,sky130_fd_io__overlay_vssio_hvc.gds,sky130_fd_io__overlay_vddio_hvc.gds \
-			include=sky130_fd_io__top_gpiov2.gds,sky130_fd_io__top_ground_hvc_wpad.gds,sky130_fd_io__top_power_hvc_wpadv2.gds,sky130_fd_io__overlay_vssio_hvc.gds,sky130_fd_io__overlay_vddio_hvc.gds \
+			no-copy=sky130_fd_io__top_gpiov2.gds,sky130_fd_io__top_ground_hvc_wpad.gds,sky130_fd_io__top_power_hvc_wpadv2.gds,sky130_fd_io__overlay_vssio_hvc.gds,sky130_fd_io__overlay_vddio_hvc.gds,sky130_fd_io__top_ground_lvc_wpad.gds,sky130_fd_io__top_power_lvc_wpad.gds,sky130_fd_io__overlay_vssio_lvc.gds,sky130_fd_io__overlay_vddio_lvc.gds \
+			include=sky130_fd_io__top_gpiov2.gds,sky130_fd_io__top_ground_hvc_wpad.gds,sky130_fd_io__top_power_hvc_wpadv2.gds,sky130_fd_io__overlay_vssio_hvc.gds,sky130_fd_io__overlay_vddio_hvc.gds,sky130_fd_io__top_ground_lvc_wpad.gds,sky130_fd_io__top_power_lvc_wpad.gds,sky130_fd_io__overlay_vssio_lvc.gds,sky130_fd_io__overlay_vddio_lvc.gds \
 		-verilog %l/latest/cells/*/*.*.v \
 		-verilog %l/latest/cells/*/*.v exclude=*.*.v,sky130_ef_io.v \
 			compile-only filter=custom/scripts/inc_verilog.py \
diff --git a/sky130/custom/scripts/fix_vddio_lvc_gds.py b/sky130/custom/scripts/fix_vddio_lvc_gds.py
new file mode 100755
index 0000000..5da6b8f
--- /dev/null
+++ b/sky130/custom/scripts/fix_vddio_lvc_gds.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python3
+#
+# fix_vddio_lvc_gds.py ---
+#
+# Special-purpose script that does the work of what ought to be a simple
+# binary diff and patch.  Except that no such thing exists as a standard
+# offering on most Linux systems, so instead of adding another OS
+# package requirement, I'm just writing a binary search-and-replace in
+# python.
+#
+# The purpose of the patch is to add metal3 resistor ID markers to the
+# sky130_fd_io__hvc_clampv2 cell.  Also add label for PADISOL|R
+# in the isolated metal3 region formed by the resistors, in the
+# sky130_fd_io__top_power_lvc_wpad cell.
+#
+
+import sys
+
+if len(sys.argv) != 2:
+    print('Usage:  fix_vddio_pad_gds.py <filename>')
+    sys.exit(1)
+else:
+    file_name = sys.argv[1]
+
+# Metal 3 resistor at (0.505um 61.12um 24.485um 61.56um)
+add_data_1 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x01\xf9\x00\x00\xee\xc0\x00\x00\x5f\xa5\x00\x00\xee\xc0\x00\x00\x5f\xa5\x00\x00\xf0\x78\x00\x00\x01\xf9\x00\x00\xf0\x78\x00\x00\x01\xf9\x00\x00\xee\xc0\x00\x04\x11\x00'
+
+# Metal 3 resistor at (50.40um 61.12um 74.64um 61.56um)
+add_data_2 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\xc4\xe0\x00\x00\xee\xc0\x00\x01\x23\x90\x00\x00\xee\xc0\x00\x01\x23\x90\x00\x00\xf0\x78\x00\x00\xc4\xe0\x00\x00\xf0\x78\x00\x00\xc4\xe0\x00\x00\xee\xc0\x00\x04\x11\x00'
+
+# Metal 3 resistor at (24.475um 61.56um 24.485um 67.07um)
+add_data_3 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x5f\x9b\x00\x00\xf0\x78\x00\x00\x5f\xa5\x00\x00\xf0\x78\x00\x00\x5f\xa5\x00\x01\x05\xfe\x00\x00\x5f\x9b\x00\x01\x05\xfe\x00\x00\x5f\x9b\x00\x00\xf0\x78\x00\x04\x11\x00'
+
+# Metal 3 resistor at (0.505um 61.56um 0.515um 67.07um)
+add_data_4 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x01\xf9\x00\x00\xf0\x78\x00\x00\x02\x03\x00\x00\xf0\x78\x00\x00\x02\x03\x00\x01\x05\xfe\x00\x00\x01\xf9\x00\x01\x05\xfe\x00\x00\x01\xf9\x00\x00\xf0\x78\x00\x04\x11\x00'
+
+# Metal 3 resistor at (0.505um 67.07um 24.485um 67.51um)
+add_data_5 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x01\xf9\x00\x01\x05\xfe\x00\x00\x5f\xa5\x00\x01\x05\xfe\x00\x00\x5f\xa5\x00\x01\x07\x66\x00\x00\x01\xf9\x00\x01\x07\x66\x00\x00\x01\xf9\x00\x01\x05\xfe\x00\x04\x11\x00'
+
+# Metal 3 resistor at (50.76um 67.07um 74.64um 67.51um)
+add_data_6 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\xc6\x48\x00\x01\x05\xfe\x00\x01\x23\x90\x00\x01\x05\xfe\x00\x01\x23\x90\x00\x01\x07\x66\x00\x00\xc6\x48\x00\x01\x07\x66\x00\x00\xc6\x48\x00\x01\x05\xfe\x00\x04\x11\x00'
+
+# Metal 3 resistor at (50.76um 61.56um 50.77um 67.07um)
+add_data_7 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\xc6\x48\x00\x00\xf0\x78\x00\x00\xc6\x52\x00\x00\xf0\x78\x00\x00\xc6\x52\x00\x01\x05\xfe\x00\x00\xc6\x48\x00\x01\x05\xfe\x00\x00\xc6\x48\x00\x00\xf0\x78\x00\x04\x11\x00'
+
+# Metal 3 resistor at (74.63um 61.56um 74.64um 67.07um)
+add_data_8 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x01\x23\x86\x00\x00\xf0\x78\x00\x01\x23\x90\x00\x00\xf0\x78\x00\x01\x23\x90\x00\x01\x05\xfe\x00\x01\x23\x86\x00\x01\x05\xfe\x00\x01\x23\x86\x00\x00\xf0\x78\x00\x04\x11\x00'
+
+# PADISOR label at (67.45um 64.22um) size 0.3um on MET3PIN
+add_data_9 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x01\x07\x7a\x00\x00\xfa\xdc\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x52\x00\x00\x04\x11\x00'
+
+# PADISOL label at (5.05um 64.22um) size 0.3um on MET3PIN
+add_data_10 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x00\x13\xba\x00\x00\xfa\xdc\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x4c\x00\x00\x04\x11\x00'
+
+# Append metal resistors after this data (between 69:16 and 69:44)
+orig_data_1 = b'\x00\x00\x00\x00\x00\x00\xad\x98\x00\x00\x01\x45\x00\x00\x86\x88\x00\x00\x01\x45\x00\x00\x86\x88\x00\x00\x00\x00\x00\x04\x11\x00'
+
+# Append port label after this data (after "P_CORE" label)
+orig_data_2 = b'\x00\x0c\x10\x03\x00\x00\xf5\x0a\x00\x00\x08\x7f\x00\x0a\x19\x06\x50\x5f\x43\x4f\x52\x45\x00\x04\x11\x00'
+
+# This is not efficient, but only needs to be done once.
+
+with open(file_name, 'rb') as ifile:
+    data = ifile.read()
+    data = data.replace(orig_data_1, orig_data_1 + add_data_1 + add_data_2 + add_data_3 + add_data_4 + add_data_5 + add_data_6 + add_data_7 + add_data_8)
+    data = data.replace(orig_data_2, orig_data_2 + add_data_9 + add_data_10)
+
+# Write back into the same file
+with open(file_name, 'wb') as ofile:
+    ofile.write(data)
+
+print("Done!")
diff --git a/sky130/custom/scripts/fix_vddio_overlay_lvc.py b/sky130/custom/scripts/fix_vddio_overlay_lvc.py
new file mode 100755
index 0000000..6888db6
--- /dev/null
+++ b/sky130/custom/scripts/fix_vddio_overlay_lvc.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+#
+# fix_vddio_overlay_lvc.py ---
+#
+# Special-purpose script that does the work of what ought to be a simple
+# binary diff and patch.  Except that no such thing exists as a standard
+# offering on most Linux systems, so instead of adding another OS
+# package requirement, I'm just writing a binary search-and-replace in
+# python.
+#
+# The purpose of the patch is to narrow down the metal 3 area under
+# the vias in this cell to clear the metal3 resistor marker that has
+# been added to the base cell.  Since the overlay just duplicates the
+# metal 3 layer, this has no impact on the physical mask geometry.
+#
+
+import sys
+
+if len(sys.argv) != 2:
+    print('Usage:  fix_vddio_overlay_lvc.py <filename>')
+    sys.exit(1)
+else:
+    file_name = sys.argv[1]
+
+# Convert this data
+orig_data_0 = b'\x00\x00\xf2\x8a\x00\x00\x02\x58\x00\x01\x03\xe2\x00\x00\x5f\xb4\x00\x01\x03\xe2\x00\x00\x5f\xb4\x00\x00\xf2\x8a\x00\x00\x02\x58\x00\x00\xf2\x8a'
+
+# To this data (move X position 24500 to 24470)
+new_data_0 = b'\x00\x00\xf2\x8a\x00\x00\x02\x58\x00\x01\x03\xe2\x00\x00\x5f\x96\x00\x01\x03\xe2\x00\x00\x5f\x96\x00\x00\xf2\x8a\x00\x00\x02\x58\x00\x00\xf2\x8a'
+
+# Convert this data
+
+# Convert this data
+orig_data_1 = b'\x00\x00\xc6\x43\x00\x00\xf2\x8a\x00\x00\xc6\x43\x00\x01\x03\xe2\x00\x01\x23\x9f\x00\x01\x03\xe2\x00\x01\x23\x9f\x00\x00\xf2\x8a\x00\x00\xc6\x43'
+
+# To this data (move X position 50755 to 50780), (move X position 74655 to 74625)
+new_data_1 = b'\x00\x00\xc6\x5c\x00\x00\xf2\x8a\x00\x00\xc6\x5c\x00\x01\x03\xe2\x00\x01\x23\x81\x00\x01\x03\xe2\x00\x01\x23\x81\x00\x00\xf2\x8a\x00\x00\xc6\x53'
+
+
+# This is not efficient, but only needs to be done once.
+
+with open(file_name, 'rb') as ifile:
+    data = ifile.read()
+    data = data.replace(orig_data_0, new_data_0)
+    data = data.replace(orig_data_1, new_data_1)
+
+# Write back into the same file
+with open(file_name, 'wb') as ofile:
+    ofile.write(data)
+
+print("Done!")
diff --git a/sky130/custom/scripts/fix_vddio_pad_gds.py b/sky130/custom/scripts/fix_vddio_pad_gds.py
index be038a7..0f9d002 100755
--- a/sky130/custom/scripts/fix_vddio_pad_gds.py
+++ b/sky130/custom/scripts/fix_vddio_pad_gds.py
@@ -52,10 +52,10 @@
 # PADISOL label at (5.05um 66.22um) size 0.3um on MET3PIN
 add_data_10 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x00\x13\xba\x00\x01\x02\xac\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x4c\x00\x00\x04\x11\x00'
 
-# Append metal resistors after this data
+# Append metal resistors after this data (between 70:44 and 69:44)
 orig_data_1 = b'\x00\x02\x9d\x33\x00\x00\x2b\x1b\x00\x02\x9d\xfb\x00\x00\x2a\x53\x00\x02\x9d\xfb\x00\x00\x2a\x53\x00\x02\x9d\x33\x00\x04\x11\x00'
 
-# Append port label after this data
+# Append port label after this data (after "P_CORE" label)
 orig_data_2 = b'\x00\x0c\x10\x03\x00\x00\x2d\x1e\x00\x00\x05\x23\x00\x0a\x19\x06\x50\x5f\x43\x4f\x52\x45\x00\x04\x11\x00'
 
 # This is not efficient, but only needs to be done once.
diff --git a/sky130/custom/scripts/fix_vssio_lvc_gds.py b/sky130/custom/scripts/fix_vssio_lvc_gds.py
new file mode 100755
index 0000000..a1bc8d8
--- /dev/null
+++ b/sky130/custom/scripts/fix_vssio_lvc_gds.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python3
+#
+# fix_vssio_lvc_gds.py ---
+#
+# Special-purpose script that does the work of what ought to be a simple
+# binary diff and patch.  Except that no such thing exists as a standard
+# offering on most Linux systems, so instead of adding another OS
+# package requirement, I'm just writing a binary search-and-replace in
+# python.
+#
+# The purpose of the patch is to add metal3 resistor ID markers to the
+# sky130_fd_io__top_ground_lvc_wpad cell.  Also add label for PAD_ISO
+# in the isolated metal3 regions formed by the resistors.
+#
+
+import sys
+
+if len(sys.argv) != 2:
+    print('Usage:  fix_vssio_lvc_gds.py <filename>')
+    sys.exit(1)
+else:
+    file_name = sys.argv[1]
+
+# Metal 3 resistor at (0.505um 61.12um 24.385um 61.56um)
+add_data_1 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x01\xf9\x00\x00\xee\xc0\x00\x00\x5f\x41\x00\x00\xee\xc0\x00\x00\x5f\x41\x00\x00\xf0\x78\x00\x00\x01\xf9\x00\x00\xf0\x78\x00\x00\x01\xf9\x00\x00\xee\xc0\x00\x04\x11\x00'
+
+# Metal 3 resistor at (50.76um 61.12um 74.64um 61.56um)
+add_data_2 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\xc6\x48\x00\x00\xee\xc0\x00\x01\x23\x90\x00\x00\xee\xc0\x00\x01\x23\x90\x00\x00\xf0\x78\x00\x00\xc6\x48\x00\x00\xf0\x78\x00\x00\xc6\x48\x00\x00\xee\xc0\x00\x04\x11\x00'
+
+# Metal 3 resistor at (24.375um 55.760um 24.385um 61.120um)
+add_data_3 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x5f\x37\x00\x00\xd9\xd0\x00\x00\x5f\x41\x00\x00\xd9\xd0\x00\x00\x5f\x41\x00\x00\xee\xc0\x00\x00\x5f\x37\x00\x00\xee\xc0\x00\x00\x5f\x37\x00\x00\xd9\xd0\x00\x04\x11\x00'
+
+# Metal 3 resistor at (0.505um 55.760um 0.515um 61.120um)
+add_data_4 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x01\xf9\x00\x00\xd9\xd0\x00\x00\x02\x03\x00\x00\xd9\xd0\x00\x00\x02\x03\x00\x00\xee\xc0\x00\x00\x01\xf9\x00\x00\xee\xc0\x00\x00\x01\xf9\x00\x00\xd9\xd0\x00\x04\x11\x00'
+
+# Metal 3 resistor at (0.505um 55.32um 24.385um 55.76um)
+add_data_5 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x01\xf9\x00\x00\xd8\x18\x00\x00\x5f\x41\x00\x00\xd8\x18\x00\x00\x5f\x41\x00\x00\xd9\xd0\x00\x00\x01\xf9\x00\x00\xd9\xd0\x00\x00\x01\xf9\x00\x00\xd8\x18\x00\x04\x11\x00'
+
+# Metal 3 resistor at (50.76um 55.32um 74.64um 55.76um)
+add_data_6 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\xc6\x48\x00\x00\xd8\x18\x00\x01\x23\x90\x00\x00\xd8\x18\x00\x01\x23\x90\x00\x00\xd9\xd0\x00\x00\xc6\x48\x00\x00\xd9\xd0\x00\x00\xc6\x48\x00\x00\xd8\x18\x00\x04\x11\x00'
+
+# Metal 3 resistor at (50.76um 55.760um 50.77um 61.120um)
+add_data_7 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\xc6\x48\x00\x00\xd9\xd0\x00\x00\xc6\x52\x00\x00\xd9\xd0\x00\x00\xc6\x52\x00\x00\xee\xc0\x00\x00\xc6\x48\x00\x00\xee\xc0\x00\x00\xc6\x48\x00\x00\xd9\xd0\x00\x04\x11\x00'
+
+# Metal 3 resistor at (74.63um 55.760um 74.64um 61.120um)
+add_data_8 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x01\x23\x86\x00\x00\xd9\xd0\x00\x01\x23\x90\x00\x00\xd9\xd0\x00\x01\x23\x90\x00\x00\xee\xc0\x00\x01\x23\x86\x00\x00\xee\xc0\x00\x01\x23\x86\x00\x00\xd9\xd0\x00\x04\x11\x00'
+
+# PADISOR label at (67.45um 58.34um) size 0.3um on MET3PIN
+add_data_9 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x01\x07\x7a\x00\x00\xe3\xe4\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x52\x00\x00\x04\x11\x00'
+
+# PADISOL label at (5.05um 58.34um) size 0.3um on MET3PIN
+add_data_10 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x00\x13\xba\x00\x00\xe3\xe4\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x4c\x00\x00\x04\x11\x00'
+
+# Append after this data
+orig_data = b'\x00\x00\x61\x8f\x00\x01\x12\xc4\x00\x03\x05\x70\x00\x01\x0b\xda\x00\x03\x05\x70\x00\x01\x0b\xda\x00\x00\x61\x8f\x00\x04\x11\x00'
+
+# This is not efficient, but only needs to be done once.
+
+with open(file_name, 'rb') as ifile:
+    data = ifile.read()
+    data = data.replace(orig_data, orig_data + add_data_1 + add_data_2 + add_data_3 + add_data_4 + add_data_5 + add_data_6 + add_data_7 + add_data_8 + add_data_9 + add_data_10)
+
+# Write back into the same file
+with open(file_name, 'wb') as ofile:
+    ofile.write(data)
+
+print("Done!")
diff --git a/sky130/custom/scripts/fix_vssio_overlay_lvc.py b/sky130/custom/scripts/fix_vssio_overlay_lvc.py
new file mode 100755
index 0000000..036fb19
--- /dev/null
+++ b/sky130/custom/scripts/fix_vssio_overlay_lvc.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+#
+# fix_vssio_overlay_lvc.py ---
+#
+# Special-purpose script that does the work of what ought to be a simple
+# binary diff and patch.  Except that no such thing exists as a standard
+# offering on most Linux systems, so instead of adding another OS
+# package requirement, I'm just writing a binary search-and-replace in
+# python.
+#
+# The purpose of the patch is to narrow down the metal 3 area under
+# the vias in this cell to clear the metal3 resistor marker that has
+# been added to the base cell.  Since the overlay just duplicates the
+# metal 3 layer, this has no impact on the physical mask geometry.
+#
+
+import sys
+
+if len(sys.argv) != 2:
+    print('Usage:  fix_vssio_overlay_lvc.py <filename>')
+    sys.exit(1)
+else:
+    file_name = sys.argv[1]
+
+# Convert this data
+orig_data_0 = b'\x00\x00\x01\xf4\x00\x00\xdb\xb0\x00\x00\x01\xf4\x00\x00\xed\x08\x00\x00\x5f\x50\x00\x00\xed\x08\x00\x00\x5f\x50\x00\x00\xdb\xb0\x00\x00\x01\xf4'
+
+# To this data (move X position 24400 to 24370), (move X position 500 to 520)
+new_data_0 = b'\x00\x00\x02\x08\x00\x00\xdb\xb0\x00\x00\x02\x08\x00\x00\xed\x08\x00\x00\x5f\x32\x00\x00\xed\x08\x00\x00\x5f\x32\x00\x00\xdb\xb0\x00\x00\x02\x08'
+
+# Convert this data
+orig_data_1 = b'\x00\x00\xc6\x43\x00\x00\xdb\xb0\x00\x00\xc6\x43\x00\x00\xed\x08\x00\x01\x22\x32\x00\x00\xed\x08\x00\x01\x22\x32\x00\x00\xdb\xb0\x00\x00\xc6\x43'
+
+# To this data (move X position 50755 to 50775)
+new_data_1 = b'\x00\x00\xc6\x57\x00\x00\xdb\xb0\x00\x00\xc6\x57\x00\x00\xed\x08\x00\x01\x22\x32\x00\x00\xed\x08\x00\x01\x22\x32\x00\x00\xdb\xb0\x00\x00\xc6\x57'
+
+# This is not efficient, but only needs to be done once.
+
+with open(file_name, 'rb') as ifile:
+    data = ifile.read()
+    data = data.replace(orig_data_0, new_data_0)
+    data = data.replace(orig_data_1, new_data_1)
+
+# Write back into the same file
+with open(file_name, 'wb') as ofile:
+    ofile.write(data)
+
+print("Done!")
diff --git a/sky130/custom/sky130_fd_io/cdl/sky130_ef_io.cdl b/sky130/custom/sky130_fd_io/cdl/sky130_ef_io.cdl
index b20e56e..ba4edfb 100644
--- a/sky130/custom/sky130_fd_io/cdl/sky130_ef_io.cdl
+++ b/sky130/custom/sky130_fd_io/cdl/sky130_ef_io.cdl
@@ -33,7 +33,7 @@
 * Instantiate the underlying power pad (connects P_PAD to VCCD)
 Xsky130_fd_io__top_power_lvc_base
 + AMUXBUS_A AMUXBUS_B BDY2_B2B DRN_LVC1 DRN_LVC2 BDY2_B2B
-+ VCCD VCCD_PAD
++ PADISOL PADISOR VCCD VCCD_PAD
 + SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_power_lvc_wpad
@@ -54,7 +54,7 @@
 * Instantiate the underlying power pad (connects P_PAD to VDDA)
 Xsky130_fd_io__top_power_lvc_base
 + AMUXBUS_A AMUXBUS_B BDY2_B2B DRN_LVC1 DRN_LVC2 BDY2_B2B
-+ VDDA VDDA_PAD
++ PADISOL PADISOR VDDA VDDA_PAD
 + SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_power_lvc_wpad
@@ -94,7 +94,7 @@
 * Instantiate the underlying power pad (connects P_PAD and VDDIO_Q to VDDIO)
 Xsky130_fd_io__top_power_lvc_base
 + AMUXBUS_A AMUXBUS_B BDY2_B2B DRN_LVC1 DRN_LVC2 BDY2_B2B
-+ VDDIO VDDIO_PAD
++ PADISOL PADISOR VDDIO VDDIO_PAD
 + SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_power_lvc_wpad
@@ -134,7 +134,7 @@
 * Instantiate the underlying ground pad (connects G_PAD to VSSD)
 Xsky130_fd_io__top_ground_lvc_base
 + AMUXBUS_A AMUXBUS_B BDY2_B2B DRN_LVC1 DRN_LVC2
-+ VSSD VSSD_PAD
++ VSSD VSSD_PAD PADISOL PADISOR
 + BDY2_B2B SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_ground_lvc_wpad
@@ -174,7 +174,7 @@
 * Instantiate the underlying ground pad (connects G_PAD and VSSIO_Q to VSSIO)
 Xsky130_fd_io__top_ground_lvc_base
 + AMUXBUS_A AMUXBUS_B BDY2_B2B DRN_LVC1 DRN_LVC2
-+ VSSIO VSSIO_PAD
++ VSSIO VSSIO_PAD PADISOL PADISOR
 + BDY2_B2B SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_ground_lvc_wpad
@@ -214,7 +214,7 @@
 * Instantiate the underlying ground pad (connects G_PAD to VSSA)
 Xsky130_fd_io__top_ground_lvc_base
 + AMUXBUS_A AMUXBUS_B BDY2_B2B DRN_LVC1 DRN_LVC2
-+ VSSA VSSA_PAD
++ VSSA VSSA_PAD PADISOL PADISOR
 + BDY2_B2B SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_ground_lvc_wpad
@@ -489,7 +489,7 @@
 * Instantiate the underlying power pad (connects P_PAD to VCCD)
 Xsky130_fd_io__top_power_lvc_base
 + AMUXBUS_A AMUXBUS_B VSSA VCCD VCCD VSSA
-+ VCCD VCCD_PAD
++ PADISOL PADISOR VCCD VCCD_PAD
 + VSSIO VSSD VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_power_lvc_wpad
@@ -510,7 +510,7 @@
 * Instantiate the underlying ground pad (connects G_PAD to VSSD)
 Xsky130_fd_io__top_ground_lvc_base
 + AMUXBUS_A AMUXBUS_B VSSA VCCD VCCD
-+ VSSD VSSD_PAD
++ VSSD VSSD_PAD PADISOL PADISOR
 + VSSA VSSIO VSSD VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_ground_lvc_wpad
@@ -532,7 +532,7 @@
 * Instantiate the underlying power pad (connects P_PAD to VCCD)
 Xsky130_fd_io__top_power_lvc_base
 + AMUXBUS_A AMUXBUS_B VSSIO VCCD1 VCCD1 VSSIO
-+ VCCD1 VCCD_PAD
++ PADISOL PADISOR VCCD1 VCCD_PAD
 + VSSD1 VSSD1 VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_power_lvc_wpad
@@ -554,7 +554,7 @@
 * Instantiate the underlying ground pad (connects G_PAD to VSSD)
 Xsky130_fd_io__top_ground_lvc_base
 + AMUXBUS_A AMUXBUS_B VSSIO VCCD1 VCCD1
-+ VSSD1 VSSD_PAD
++ VSSD1 VSSD_PAD PADISOL PADISOR
 + VSSIO VSSD1 VSSD1 VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_ground_lvc_wpad
@@ -575,7 +575,7 @@
 * Instantiate the underlying power pad (connects P_PAD to VCCD)
 Xsky130_fd_io__top_power_lvc_base
 + AMUXBUS_A AMUXBUS_B VSSA VCCD VCCD VSSA
-+ VCCD VCCD_PAD
++ PADISOL PADISOR VCCD VCCD_PAD
 + VSSIO VSSD VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_power_lvc_wpad
@@ -596,7 +596,7 @@
 * Instantiate the underlying ground pad (connects G_PAD to VSSD)
 Xsky130_fd_io__top_ground_lvc_base
 + AMUXBUS_A AMUXBUS_B VSSA VCCD VCCD
-+ VSSD VSSD_PAD
++ VSSD VSSD_PAD PADISOL PADISOR
 + VSSA VSSIO VSSD VCCD VCCHIB VDDA VDDIO VDDIO_Q
 + VSSA VSSD VSSIO VSSIO_Q VSWITCH
 + sky130_fd_io__top_ground_lvc_wpad
@@ -625,3 +625,47 @@
 .ENDS
 
 *--------------------------------------------------------------------------
+* sky130_ef_io__vddio_lvc_clamped_pad
+* sky130_ef_io__vddio_lvc_pad with LV clamp connections to VDDIO and VSSIO,
+* for use with 1.8V VDDIO.  The back-to-back diodes are both shorted to
+* VSSIO.
+*--------------------------------------------------------------------------
+
+.SUBCKT sky130_ef_io__vddio_lvc_clamped_pad
++ AMUXBUS_A AMUXBUS_B VDDIO_PAD
++ VSSA VDDA VSWITCH VDDIO_Q VCCHIB VDDIO VCCD
++ VSSIO VSSD VSSIO_Q
+
+* Instantiate the underlying power pad (connects P_PAD to VCCIO)
+Xsky130_fd_io__top_power_lvc_base
++ AMUXBUS_A AMUXBUS_B VSSIO VDDIO VDDIO VSSIO
++ VDDIO_Q VDDIO_Q VDDIO VDDIO_PAD
++ VSSIO VSSIO VCCD VCCHIB VDDA VDDIO VDDIO_Q
++ VSSA VSSD VSSIO VSSIO_Q VSWITCH
++ sky130_fd_io__top_power_lvc_wpad
+
+.ENDS
+
+*--------------------------------------------------------------------------
+* sky130_ef_io__vssio_lvc_clamped_pad
+* sky130_ef_io__vssio_lvc_pad with LV clamp connections to VDDIO and VSSIO,
+* for use with 1.8V VDDIO.  The back-to-back diodes are both shorted to
+* VSSIO.
+*--------------------------------------------------------------------------
+
+.SUBCKT sky130_ef_io__vssio_lvc_clamped_pad
++ AMUXBUS_A AMUXBUS_B VSSIO_PAD
++ VSSA VDDA VSWITCH VDDIO_Q VCCHIB VDDIO VCCD
++ VSSIO VSSD VSSIO_Q
+
+* Instantiate the underlying ground pad (connects G_PAD to VSSIO)
+Xsky130_fd_io__top_ground_lvc_base
++ AMUXBUS_A AMUXBUS_B VSSIO VDDIO VDDIO
++ VSSIO VSSIO_PAD VSSIO VSSIO_Q VSSIO_Q
++ VSSIO VSSIO VCCD VCCHIB VDDA VDDIO VDDIO_Q
++ VSSA VSSD VSSIO VSSIO_Q VSWITCH
++ sky130_fd_io__top_ground_lvc_wpad
+
+.ENDS
+
+*--------------------------------------------------------------------------
diff --git a/sky130/custom/sky130_fd_io/gds/sky130_ef_io__analog.gds b/sky130/custom/sky130_fd_io/gds/sky130_ef_io__analog.gds
index 83f1fb1..d37d552 100644
--- a/sky130/custom/sky130_fd_io/gds/sky130_ef_io__analog.gds
+++ b/sky130/custom/sky130_fd_io/gds/sky130_ef_io__analog.gds
Binary files differ
diff --git a/sky130/custom/sky130_fd_io/spice/sky130_ef_io__analog.spice b/sky130/custom/sky130_fd_io/spice/sky130_ef_io__analog.spice
new file mode 100644
index 0000000..22e944a
--- /dev/null
+++ b/sky130/custom/sky130_fd_io/spice/sky130_ef_io__analog.spice
@@ -0,0 +1,66 @@
+* NGSPICE file created from sky130_ef_io__analog --- technology: sky130A
+* Library of analog pads for sky130
+*---------------------------------------------------------------------------
+
+*---------------------------------------------------------------------------
+* sky130_ef_io__analog_noesd_pad:
+*---------------------------------------------------------------------------
+* Simple pad, straight through, no ESD protection.
+*---------------------------------------------------------------------------
+
+.subckt sky130_ef_io__analog_noesd_pad P_CORE VSSA VSSD AMUXBUS_B AMUXBUS_A
++ VDDIO_Q VDDIO VSWITCH VSSIO VDDA VCCD VCCHIB VSSIO_Q P_PAD
+
+R0 P_PAD P_CORE sky130_fd_pr__res_generic_m5 w=253 l=0.1
+.ends
+
+*---------------------------------------------------------------------------
+* sky130_ef_io__analog_pad:
+*---------------------------------------------------------------------------
+* Simple pad, straight through, with ESD diodes (5 each P and N).
+*---------------------------------------------------------------------------
+
+.subckt sky130_ef_io__analog_pad P_CORE VSSA VSSD AMUXBUS_B AMUXBUS_A VDDIO_Q VDDIO
++ VSWITCH VSSIO VDDA VCCD VCCHIB VSSIO_Q P_PAD
+R0 P_PAD P_CORE sky130_fd_pr__res_generic_m5 w=253 l=0.1
+
+D0 VSSIO P_CORE sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
+D1 VSSIO P_CORE sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
+D2 VSSIO P_CORE sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
+D3 VSSIO P_CORE sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
+D4 VSSIO P_CORE sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
+
+D5 P_CORE VDDIO sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
+D6 P_CORE VDDIO sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
+D7 P_CORE VDDIO sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
+D8 P_CORE VDDIO sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
+D9 P_CORE VDDIO sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
+.ends
+
+*---------------------------------------------------------------------------
+* sky130_ef_io__analog_minesd_pad:
+*---------------------------------------------------------------------------
+* Simple pad, straight through, with ESD diodes (1 each P and N).
+*---------------------------------------------------------------------------
+
+.subckt sky130_ef_io__analog_minesd_pad P_CORE VSSA VSSD AMUXBUS_B AMUXBUS_A VDDIO_Q VDDIO
++ VSWITCH VSSIO VDDA VCCD VCCHIB VSSIO_Q P_PAD
+R0 P_PAD P_CORE sky130_fd_pr__res_generic_m5 w=253 l=0.1
+
+D0 VSSIO P_CORE sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
+D1 P_CORE VDDIO sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
+.ends
+
+*---------------------------------------------------------------------------
+* sky130_ef_io__analog_minesd_pad_short:
+*---------------------------------------------------------------------------
+* Simple pad, straight through, with ESD diodes (1 each P and N).
+* All busses except for VDDIO and VSSIO removed
+*---------------------------------------------------------------------------
+
+.subckt sky130_ef_io__analog_minesd_pad_short P_CORE VDDIO VSSIO P_PAD
+R0 P_PAD P_CORE sky130_fd_pr__res_generic_m5 w=253 l=0.1
+
+D0 VSSIO P_CORE sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
+D1 P_CORE VDDIO sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
+.ends
diff --git a/sky130/custom/sky130_fd_io/spice/sky130_ef_io__analog_noesd_pad.spice b/sky130/custom/sky130_fd_io/spice/sky130_ef_io__analog_noesd_pad.spice
deleted file mode 100644
index e235ead..0000000
--- a/sky130/custom/sky130_fd_io/spice/sky130_ef_io__analog_noesd_pad.spice
+++ /dev/null
@@ -1,40 +0,0 @@
-* NGSPICE file created from sky130_ef_io__analog_noesd_pad.ext - technology: sky130A
-
-.subckt sky130_fd_io__pad_esd VSUBS m4_960_20297# m5_1354_20528#
-R0 m4_960_20297# m5_1354_20528# sky130_fd_pr__res_generic_m5 w=2.5284e+08u l=100000u
-.ends
-
-.subckt sky130_fd_io__com_busses_esd VSUBS sky130_fd_io__com_bus_hookup_0/VCCD sky130_fd_io__com_bus_hookup_0/VSWITCH
-+ sky130_fd_io__com_bus_hookup_0/AMUXBUS_A sky130_fd_io__com_bus_hookup_0/VSSIO sky130_fd_io__com_bus_hookup_0/AMUXBUS_B
-+ sky130_fd_io__com_bus_hookup_0/VDDA sky130_fd_io__com_bus_hookup_0/VDDIO sky130_fd_io__com_bus_hookup_0/VSSIO_Q
-+ sky130_fd_io__pad_esd_0/m5_1354_20528# sky130_fd_io__pad_esd_0/m4_960_20297# sky130_fd_io__com_bus_hookup_0/VDDIO_Q
-+ sky130_fd_io__com_bus_hookup_0/VSSA sky130_fd_io__com_bus_hookup_0/VSSD sky130_fd_io__com_bus_hookup_0/VCCHIB
-Xsky130_fd_io__pad_esd_0 VSUBS sky130_fd_io__pad_esd_0/m4_960_20297# sky130_fd_io__pad_esd_0/m5_1354_20528#
-+ sky130_fd_io__pad_esd
-.ends
-
-.subckt sky130_fd_io__simple_pad_and_busses VSUBS sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSWITCH
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDA sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSIO
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VCCHIB sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDIO
-+ m3_99_16575# sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSIO_Q
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/AMUXBUS_A sky130_fd_io__com_busses_esd_0/sky130_fd_io__pad_esd_0/m5_1354_20528#
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/AMUXBUS_B sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSA
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDIO_Q sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSD
-+ w_818_9944# sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VCCD
-Xsky130_fd_io__com_busses_esd_0 VSUBS sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VCCD
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSWITCH sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/AMUXBUS_A
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSIO sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/AMUXBUS_B
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDA sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDIO
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSIO_Q sky130_fd_io__com_busses_esd_0/sky130_fd_io__pad_esd_0/m5_1354_20528#
-+ m3_99_16575# sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDIO_Q
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSA sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSD
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VCCHIB sky130_fd_io__com_busses_esd
-.ends
-
-.subckt sky130_ef_io__analog_noesd_pad P_CORE VSSA VSSD AMUXBUS_B AMUXBUS_A VDDIO_Q VDDIO
-+ VSWITCH VSSIO VDDA VCCD VCCHIB VSSIO_Q P_PAD
-Xsky130_fd_io__simple_pad_and_busses_0 sky130_fd_io__simple_pad_and_busses_0/VSUBS
-+ VSWITCH VDDA VSSIO VCCHIB VDDIO P_CORE VSSIO_Q AMUXBUS_A P_PAD AMUXBUS_B VSSA VDDIO_Q
-+ VSSD sky130_fd_io__simple_pad_and_busses_0/VSUBS VCCD sky130_fd_io__simple_pad_and_busses
-.ends
-
diff --git a/sky130/custom/sky130_fd_io/spice/sky130_ef_io__analog_pad.spice b/sky130/custom/sky130_fd_io/spice/sky130_ef_io__analog_pad.spice
deleted file mode 100644
index 9156cf5..0000000
--- a/sky130/custom/sky130_fd_io/spice/sky130_ef_io__analog_pad.spice
+++ /dev/null
@@ -1,62 +0,0 @@
-* NGSPICE file created from sky130_ef_io__analog_pad.ext - technology: sky130A
-
-.subckt sky130_fd_io__pad_esd m4_960_20017# m5_1354_20500#
-R0 m4_960_20017# m5_1354_20500# sky130_fd_pr__res_generic_m5 w=253 l=0.1
-.ends
-
-.subckt sky130_fd_io__com_busses_esd sky130_fd_io__com_bus_hookup_0/VCCHIB sky130_fd_io__com_bus_hookup_0/VSSD
-+ sky130_fd_io__pad_esd_0/m5_1354_20500# sky130_fd_io__com_bus_hookup_0/VSSA sky130_fd_io__com_bus_hookup_0/VDDIO_Q
-+ sky130_fd_io__com_bus_hookup_0/VSSIO_Q sky130_fd_io__com_bus_hookup_0/VDDA sky130_fd_io__pad_esd_0/m4_960_20017#
-+ sky130_fd_io__com_bus_hookup_0/AMUXBUS_B sky130_fd_io__com_bus_hookup_0/VSSIO sky130_fd_io__com_bus_hookup_0/AMUXBUS_A
-+ sky130_fd_io__com_bus_hookup_0/VDDIO sky130_fd_io__com_bus_hookup_0/VSWITCH sky130_fd_io__com_bus_hookup_0/VCCD
-Xsky130_fd_io__pad_esd_0 sky130_fd_io__pad_esd_0/m4_960_20017# sky130_fd_io__pad_esd_0/m5_1354_20500#
-+ sky130_fd_io__pad_esd
-.ends
-
-.subckt sky130_ef_io__esd_pdiode_11v0_array a_n1540_n5136# a_1132_n5000# a_516_n5000#
-+ a_n1332_n5000# a_n716_n5000# a_n100_n5000#
-D0 a_n716_n5000# a_n716_n5000# sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
-D1 a_n1332_n5000# a_n1332_n5000# sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
-D2 a_n100_n5000# a_n100_n5000# sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
-D3 a_1132_n5000# a_1132_n5000# sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
-D4 a_516_n5000# a_516_n5000# sky130_fd_pr__diode_pw2nd_11v0 pj=1.02e+08 area=5e+13
-.ends
-
-.subckt sky130_ef_io__esd_ndiode_11v0_array a_964_n5000# a_n1164_n5000# a_432_n5000#
-+ a_n632_n5000# a_n100_n5000# w_n1396_n5168#
-D0 a_432_n5000# w_n1396_n5168# sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
-D1 a_n100_n5000# w_n1396_n5168# sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
-D2 a_n632_n5000# w_n1396_n5168# sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
-D3 a_964_n5000# w_n1396_n5168# sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
-D4 a_n1164_n5000# w_n1396_n5168# sky130_fd_pr__diode_pd2nw_11v0 pj=1.02e+08 area=5e+13
-.ends
-
-.subckt sky130_ef_io__esd_pad_and_busses sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VCCD
-+ m1_2509_27880# sky130_fd_io__com_busses_esd_0/sky130_fd_io__pad_esd_0/m5_1354_20500#
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSD sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDIO_Q
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSA sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/AMUXBUS_B
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/AMUXBUS_A sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSIO_Q
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDIO sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VCCHIB
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSIO sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDA
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSWITCH
-Xsky130_fd_io__com_busses_esd_0 sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VCCHIB
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSD sky130_fd_io__com_busses_esd_0/sky130_fd_io__pad_esd_0/m5_1354_20500#
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSA sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDIO_Q
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSIO_Q sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDA
-+ m1_2509_27880# sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/AMUXBUS_B
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSIO sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/AMUXBUS_A
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDIO sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSWITCH
-+ sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VCCD sky130_fd_io__com_busses_esd
-Xsky130_ef_io__esd_vssio sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VSSIO
-+ m1_2509_27880# m1_2509_27880# m1_2509_27880# m1_2509_27880# m1_2509_27880# sky130_ef_io__esd_pdiode_11v0_array
-Xsky130_ef_io__esd_vddio m1_2509_27880# m1_2509_27880# m1_2509_27880# m1_2509_27880#
-+ m1_2509_27880# sky130_fd_io__com_busses_esd_0/sky130_fd_io__com_bus_hookup_0/VDDIO
-+ sky130_ef_io__esd_ndiode_11v0_array
-.ends
-
-.subckt sky130_ef_io__analog_pad P_CORE VSSA VSSD AMUXBUS_B AMUXBUS_A VDDIO_Q VDDIO
-+ VSWITCH VSSIO VDDA VCCD VCCHIB VSSIO_Q P_PAD
-Xsky130_ef_io__esd_pad_and_busses_0 VCCD P_CORE P_PAD VSSD VDDIO_Q VSSA AMUXBUS_B
-+ AMUXBUS_A VSSIO_Q VDDIO VCCHIB VSSIO VDDA VSWITCH sky130_ef_io__esd_pad_and_busses
-.ends
-
diff --git a/sky130/custom/sky130_fd_io/spice/sky130_fd_io.spice b/sky130/custom/sky130_fd_io/spice/sky130_fd_io.spice
index 39b4f25..29c75fd 100644
--- a/sky130/custom/sky130_fd_io/spice/sky130_fd_io.spice
+++ b/sky130/custom/sky130_fd_io/spice/sky130_fd_io.spice
@@ -7725,16 +7725,18 @@
 * SPDX-License-Identifier: Apache-2.0
 
 .SUBCKT sky130_fd_io__top_ground_lvc_wpad AMUXBUS_A AMUXBUS_B BDY2_B2B DRN_LVC1
-+ DRN_LVC2 G_CORE G_PAD OGC_LVC SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD VCCHIB VDDA VDDIO
-+ VDDIO_Q VSSA VSSD VSSIO VSSIO_Q VSWITCH
++ DRN_LVC2 G_CORE G_PAD OGC_LVC PADISOL PADISOR SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD
++ VCCHIB VDDA VDDIO VDDIO_Q VSSA VSSD VSSIO VSSIO_Q VSWITCH
 *.PININFO AMUXBUS_A:B AMUXBUS_B:B BDY2_B2B:B DRN_LVC1:B DRN_LVC2:B
-*.PININFO G_CORE:B G_PAD:B OGC_LVC:B SRC_BDY_LVC1:B SRC_BDY_LVC2:B
-*.PININFO VCCD:B VCCHIB:B VDDA:B VDDIO:B VDDIO_Q:B VSSA:B VSSD:B
-*.PININFO VSSIO:B VSSIO_Q:B VSWITCH:B
+*.PININFO G_CORE:B G_PAD:B OGC_LVC:B PADISOL:B PADISOR:B SRC_BDY_LVC1:B
+*.PININFO SRC_BDY_LVC2:B VCCD:B VCCHIB:B VDDA:B VDDIO:B VDDIO_Q:B VSSA:B
+*.PININFO VSSD:B VSSIO:B VSSIO_Q:B VSWITCH:B
 Xesd_q0 BDY2_B2B SRC_BDY_LVC1 VSSD sky130_fd_io__gnd2gnd_120x2_lv_isosub
 xI54 SRC_BDY_LVC2 VDDIO sky130_fd_io__condiode
 xI50 SRC_BDY_LVC1 VDDIO sky130_fd_io__condiode
 RI21 G_PAD G_CORE sky130_fd_pr__res_generic_m5 w=2.5385e+08u l=100000u
+RIL G_CORE PADISOL sky130_fd_pr__res_generic_m3 w=11.825 l=0.01
+RIR G_CORE PADISOR sky130_fd_pr__res_generic_m3 w=11.825 l=0.01
 Xpre_p1_q0 g_nclamp_lvc1 g_pdpre_lvc1 DRN_LVC1 DRN_LVC1 sky130_fd_pr__pfet_01v8
 + m=20 w=7.0 l=0.18 mult=1 sa=0.265 sb=0.265 sd=0.28 topography=normal area=0.063
 + perim=1.14
@@ -7795,16 +7797,18 @@
 * SPDX-License-Identifier: Apache-2.0
 
 .SUBCKT sky130_fd_io__top_power_lvc_wpad AMUXBUS_A AMUXBUS_B BDY2_B2B DRN_LVC1
-+ DRN_LVC2 OGC_LVC P_CORE P_PAD SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD VCCHIB VDDA VDDIO
-+ VDDIO_Q VSSA VSSD VSSIO VSSIO_Q VSWITCH
++ DRN_LVC2 OGC_LVC PADISOL PADISOR P_CORE P_PAD SRC_BDY_LVC1 SRC_BDY_LVC2 VCCD
++ VCCHIB VDDA VDDIO VDDIO_Q VSSA VSSD VSSIO VSSIO_Q VSWITCH
 *.PININFO AMUXBUS_A:B AMUXBUS_B:B BDY2_B2B:B DRN_LVC1:B DRN_LVC2:B
-*.PININFO OGC_LVC:B P_CORE:B P_PAD:B SRC_BDY_LVC1:B SRC_BDY_LVC2:B
-*.PININFO VCCD:B VCCHIB:B VDDA:B VDDIO:B VDDIO_Q:B VSSA:B VSSD:B
-*.PININFO VSSIO:B VSSIO_Q:B VSWITCH:B
+*.PININFO OGC_LVC:B PADISOL:B PADISOR:B P_CORE:B P_PAD:B SRC_BDY_LVC1:B
+*.PININFO SRC_BDY_LVC2:B VCCD:B VCCHIB:B VDDA:B VDDIO:B VDDIO_Q:B
+*.PININFO VSSA:B VSSD:B VSSIO:B VSSIO_Q:B VSWITCH:B
 Xesd_q0 BDY2_B2B SRC_BDY_LVC1 VSSD sky130_fd_io__gnd2gnd_120x2_lv_isosub
 xI54 SRC_BDY_LVC2 VDDIO sky130_fd_io__condiode
 xI50 SRC_BDY_LVC1 VDDIO sky130_fd_io__condiode
 RI21 P_PAD P_CORE sky130_fd_pr__res_generic_m5 w=2.5385e+08u l=100000u
+RIL P_CORE PADISOL sky130_fd_pr__res_generic_m3 w=11.825 l=0.01
+RIR P_CORE PADISOR sky130_fd_pr__res_generic_m3 w=11.825 l=0.01
 Xpre_p1_q0 g_nclamp_lvc1 g_pdpre_lvc1 DRN_LVC1 DRN_LVC1 sky130_fd_pr__pfet_01v8
 + m=20 w=7.0 l=0.18 mult=1 sa=0.265 sb=0.265 sd=0.28 topography=normal area=0.063
 + perim=1.14