Added additional rules for HV nwell spacing, taps without contacts, and minimum tap area to satisfy the minimum PPLUS/NPLUS implant area rule.
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech index e20d172..b3158b5 100644 --- a/sky130/magic/sky130.tech +++ b/sky130/magic/sky130.tech
@@ -1505,12 +1505,28 @@ and-not dnwell and allpdifflv,allpdiffmv + # MV nwell must be 2um from any other nwell + templayer mvnwell + bloat-all alldiffmv nwell + grow-min 840 + bridge 700 600 + + templayer lvnwell nwell + and-not mvnwell + templayer nwell_with_tap bloat-all nsc,mvnsc nwell templayer nwell_missing_tap nwell and-not nwell_with_tap + templayer tap_with_licon + bloat-all psc,mvpsc psd,mvpsd + bloat-all nsc,mvnsc nsd,mvnsd + + templayer tap_missing_licon psd,nsd,mvpsd,mvnsd + and-not tap_with_licon + # Make sure varactor nwell contains no P diffusion templayer pdiff_in_varactor_well bloat-all varactor,mvvaractor nwell @@ -5048,6 +5064,11 @@ variants (full) cifmaxwidth nwell_missing_tap 0 bend_illegal \ "All nwells must contain metal-connected N+ taps (nwell.4)" + + cifspacing mvnwell lvnwell 2000 touching_illegal \ + "Spacing of HV nwell to LV nwell < 2.0um (nwell.8)" + cifspacing mvnwell mvnwell 2000 touching_ok \ + "Spacing of HV nwell to HV nwell < 2.0um (nwell.8)" variants (fast),(full) #----------------------------- @@ -5124,9 +5145,13 @@ edge4way (*pdiff)/a (*nsd)/a 400 ~(*pdiff)/a 0 0 "NSDM width < %d (diff/tap.5)" edge4way (*ndiff)/a (*psd)/a 400 ~(*ndiff)/a 0 0 "PSDM width < %d (diff/tap.5)" + area *nsd,*mvnsd 70110 150 "N-tap minimum area < 0.07011um^2 (nsd.10b)" + area *psd,*mvpsd 70110 150 "P-tap minimum area < 0.07011um^2 (psd.10b)" + angles allactive 90 "Only 90 degree angles permitted on diff and tap (x.2)" variants (full) + cifmaxwidth tap_missing_licon 0 bend_illegal "All taps must be contacted (licon.16)" # Latchup rules cifmaxwidth ptap_missing 0 bend_illegal \