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 \