Modified the magic techfile to remove the CELLRING templayer from the
GDS output, as it is being replaced by the "mask-hints" method.  Added
mask hints to the top_gpiov2 cell from the Makefile for sky130A so
that the GPIO cell does not generate bit trash on the HVI mask due to
remaining inconsistencies in the way the GDS for the cell is read into
magic.  Updated VERSION and also the required magic version for using
this tech file (8.3.111), since only revision 111 will correctly handle
the mask-hints method.
diff --git a/VERSION b/VERSION
index d5515c5..882cfd4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.102
+1.0.103
diff --git a/common/insert_property.py b/common/insert_property.py
index 1ee5687..53fdba9 100755
--- a/common/insert_property.py
+++ b/common/insert_property.py
@@ -10,8 +10,8 @@
 # 
 # e.g.:
 #
-# insert_property.py /home/tim/projects/efabless/tech/SkyWater/EFS8A \
-#	s8iom0 s8iom0s8_top_gpio "FIXED_BBOX 0 607 15000 40200"
+# insert_property.py /path/to/sky130A \
+#	sky130_fd_io sky130_fd_io__top_gpiov2 "MASKHINTS_HVI 0 607 15000 40200"
 
 import os
 import re
@@ -84,6 +84,13 @@
     cellname = arguments[2]
     propstring = arguments[3]
 
+    # Diagnostic
+    print('insert_property.py:')
+    print('   source   = ' + source)
+    print('   library  = ' + libname)
+    print('   cell     = ' + cellname)
+    print('   property = ' + propstring)
+
     noupdate = True if '-noupdate' in options else False
     fail = 0
 
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 38d000f..7870243 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -471,6 +471,10 @@
 		-gds %l/gds/*.gds \
 		-lef %l/lef/*.lef compile-only rename=sky130_ef_io \
 		-library general sky130_fd_io |& tee -a ${SKY130A}_install.log
+	# Add a maskhint set for the GPIO pad .mag view to prevent problems writing
+	# when writing HVI to GDS during hierarchical adjustments.
+	${ADDPROP} ${STAGING_PATH}/${SKY130A} sky130_fd_io sky130_fd_io__top_gpiov2 \
+		"MASKHINTS_HVI 1346 17198 5828 19224 13700 1890 15920 2360 24 17522 1778 20612" -mag
 	# Install SkyWater I/O pad library
 	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
 		-spice %l/latest/cells/*/*.spice compile-only \
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index de7b737..2dc5417 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -23,7 +23,7 @@
 version
  version REVISION
  description "SkyWater SKY130: Open Source rules and DRC"
- requires magic-8.3.107
+ requires magic-8.3.111
 end
 
 #------------------------------------------------------------------------
@@ -722,16 +722,6 @@
  layer 	BOUND CELLBOUND
 	calma 235 4
 
-# Create a boundary outside of an abutment box, so that layers
-# can be made to stretch to the abutment box edges.  First strink
-# so that any box that would be so small as to interact with
-# itself will be removed.
-
- templayer CELLRING CELLBOUND
-	shrink 345
-	grow 545
-	and-not CELLBOUND
-
 #----------------------------------------------------------------
 # DNWELL
 #----------------------------------------------------------------
@@ -812,10 +802,9 @@
 	bloat-or allnactivetap * 125 allpactivenontap 0
 	bloat-or allnactivenontap * 125 allpactivetap 0
 
- templayer extendPSDM  basePSDM,CELLRING
+ templayer extendPSDM  basePSDM
 	bridge	380 380
 	and-not baseNSDM
-	and-not	CELLRING
 
  layer PSDM basePSDM,extendPSDM 
 	grow	185
@@ -824,10 +813,9 @@
 	mask-hints PSDM
 	calma	94 20
 
- templayer extendNSDM  baseNSDM,CELLRING
+ templayer extendNSDM  baseNSDM
 	bridge	380 380
 	and-not basePSDM
-	and-not	CELLRING
 
  layer NSDM baseNSDM,extendNSDM
 	grow	185
@@ -1023,17 +1011,10 @@
 	# (HVI min width rule is 0.6 but CNTM min width rule is 0.84um)
 	grow-min 840
 
- templayer baseHVI 	thkox_area,small_ptap_mv
+ layer HVI 	thkox_area,small_ptap_mv
 	bridge	700 600
  	grow 	345
  	shrink 	345
-
- templayer extendHVI	baseHVI,CELLRING
- 	grow 	345
- 	shrink 	345
-	and-not	CELLRING
-
- layer HVI	baseHVI,extendHVI
 	mask-hints HVI
  	calma 	75 20