Updated the sky130.tech file to better handle the HVI-to-LV-nwell
DRC rule, accounting for HVI abutting nwell through the use of
mask hints. Modified the Makefile to include such an HV mask hint
on the high-voltage library level shifter cell, so that it does not
generate (fals positive) DRC errors.
diff --git a/VERSION b/VERSION
index 535f771..a3d10e9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.170
+1.0.171
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 818071c..847ccb9 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -907,6 +907,10 @@
"MASKHINTS_PSDM 0 38 92 196" -mag
${ADDPROP} ${STAGING_PATH}/${SKY130A} sky130_fd_sc_hd sky130_fd_sc_hd__tapvpwrvgnd_1 \
"MASKHINTS_NSDM 0 280 92 506" -mag
+ # Add a maskhint to the HVL level shifter to represent the HVI layer as
+ # drawn in the GDS, and so eliminate the HVI-to-nwell DRC error.
+ ${ADDPROP} ${STAGING_PATH}/${SKY130A} sky130_fd_sc_hvl sky130_fd_sc_hvl__lsbufhv2lv_1 \
+ "MASKHINTS_HVI 22 34 706 1316" -mag
# Remove the base verilog files which have already been included into
# the libraries
${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/${HD_VERILOG}/*.*.v
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index 8a4d9f3..8edca23 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -1633,7 +1633,16 @@
bridge 700 600
# Simple spacing checks to lvnwell must use CIF-DRC rule
+ # Note that HVI may *abut* lvnwell; this can only be handled
+ # with mask-hints layers.
+
+ templayer drawn_hvi
+ mask-hints HVI
+
templayer allmvdiffnowell *mvndiff,*mvpsd
+ and-not drawn_hvi
+
+ templayer nwell_or_hvi nwell,drawn_hvi
templayer lvnwell nwell
and-not mvnwell
@@ -4145,6 +4154,8 @@
variants (full)
cifspacing allmvdiffnowell lvnwell 825 touching_illegal \
"MV diffusion to LV nwell spacing < %d (hvi.5 + nsd/psd.5)"
+ cifspacing nwell_or_hvi nwell_or_hvi 700 touching_ok \
+ "HVI to HVI or LV nwell spacing < %d (hvi.5)"
variants (fast),(full)
spacing allnfets allpactivenonfet 270 touching_illegal \