Added a patch file to correct the deep nwell and nwell overlap
errors in the original SkyWater layout for the GPIOv2 cell in
the sky130_fd_io library.
diff --git a/VERSION b/VERSION
index 5c037ec..d1deb38 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.293
+1.0.294
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 3a49b01..9373208 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -524,6 +524,7 @@
 # These definitions depend on the setting of EF_STYLE
 ifeq (${EF_STYLE}, 1)
 	IO_VERILOG = verilog/sky130_fd_io
+	IO_GDS = gds/sky130_fd_io
 	HD_VERILOG = verilog/sky130_fd_sc_hd
 	HDLL_VERILOG = verilog/sky130_fd_sc_hdll
 	HVL_VERILOG = verilog/sky130_fd_sc_hvl
@@ -542,6 +543,7 @@
 	SPIEXT = spi
 else
 	IO_VERILOG = sky130_fd_io/verilog
+	IO_GDS = sky130_fd_io/gds
 	HD_VERILOG = sky130_fd_sc_hd/verilog
 	HDLL_VERILOG = sky130_fd_sc_hdll/verilog
 	HVL_VERILOG = sky130_fd_sc_hvl/verilog
@@ -1181,6 +1183,11 @@
 			compile-only rename=sky130_ef_io \
 		-lef %l/lef/sky130_fd_io__top_xres4v2.lef \
 		-library general sky130_fd_io 2>&1 | tee -a ${SKY130$*}_make.log
+	# Copy the GDS file for the GPIOv2 cell, then run the script that fixes it.
+	cp ${SKYWATER_LIBS_PATH}/sky130_fd_io/latest/cells/top_gpiov2/sky130_fd_io__top_gpiov2.gds \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}
+	./custom/scripts/fix_gpiov2_gds.py \
+		${STAGING_PATH}/${SKY130$*}/libs.ref/${IO_GDS}/sky130_fd_io__top_gpiov2.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 \
@@ -1196,6 +1203,8 @@
 		-gds %l/latest/cells/*/*.gds compile-only \
 			sort=../common/sort_pdkfiles.py \
 			options=custom/scripts/sky130_fd_io_import.tcl \
+			no-copy=sky130_fd_io__top_gpiov2.gds \
+			include=sky130_fd_io__top_gpiov2.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_gpiov2_gds.py b/sky130/custom/scripts/fix_gpiov2_gds.py
new file mode 100755
index 0000000..3c8c788
--- /dev/null
+++ b/sky130/custom/scripts/fix_gpiov2_gds.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+#
+# fix_gpiov2_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 correct the coordinates of the deep nwell
+# and nwell layers in the cell amux_switch_1v2b, as the SkyWater cell
+# contains DRC errors.
+#
+# Specifically, DNWELL coordinate (34.450, 0.035) is moved to (34.905, 0.035)
+# and NWELL coordinate (35.055, -0.365) is moved to (35.390, -0.365)
+
+import sys
+
+if len(sys.argv) != 2:
+    print('Usage:  fix_gpiov2_gds.py <filename>')
+    sys.exit(1)
+else:
+    file_name = sys.argv[1]
+
+orig_data_1    = b'\x00\x00\x86\x92\x00\x00\x00\x23\x00\x00\x86\x92'
+replace_data_1 = b'\x00\x00\x88\x59\x00\x00\x00\x23\x00\x00\x88\x59'
+
+orig_data_2    = b'\x00\x00\x88\xef\xff\xff\xff\x8d\x00\x00\x47\xef\xff\xff\xff\x8d'
+replace_data_2 = b'\x00\x00\x8a\x3e\x00\x00\x00\x91\x00\x00\x47\xef\x00\x00\x00\x91'
+
+orig_data_3    = b'\x00\x00\x88\xef\xff\xff\xfe\x93\x00\x00\x88\xef\xff\xff\xff\x8d'
+replace_data_3 = b'\x00\x00\x8a\x3e\xff\xff\xfe\x93\x00\x00\x8a\x3e\x00\x00\x00\x91'
+
+# 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, replace_data_1)
+    data = data.replace(orig_data_2, replace_data_2)
+    data = data.replace(orig_data_3, replace_data_3)
+
+# 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/README b/sky130/custom/sky130_fd_io/README
index 52b7385..03c4bdd 100644
--- a/sky130/custom/sky130_fd_io/README
+++ b/sky130/custom/sky130_fd_io/README
@@ -16,5 +16,7 @@
     either high- or low-voltage clamps, connecting to one of the six
     power domains vddio, vdda, vccd, vssio, vssa, or vssd.
 
+(4) Fix a DRC error in the SkyWater GPIO pad layout
+
 "sky130_ef_io" is open source copyright 2020 efabless, Inc.
 Released under Apache 2.0 license