Modified the DRC rule in magic for MiM cap (both types) spacing to unrelated metal 3. Although the foundry rule is weirdly defined and ambiguously worded, I do not see why it cannot be implemented as, e.g., (metal3 to MiM cap spacing < 1.34um). This implementation still cannot catch "same net" exceptions, but is much preferable to the previous rule that defines the bottom plate as all metal forming a single polygon with the bottom plate, which is much more restrictive.
diff --git a/VERSION b/VERSION index 624016c..224b658 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.487 +1.0.488
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech index 9156c45..82c8cbc 100644 --- a/sky130/magic/sky130.tech +++ b/sky130/magic/sky130.tech
@@ -1561,14 +1561,6 @@ grow 150 and-not nwell - # Define MiM cap bottom plate for spacing rule - templayer mim_bottom - bloat-all *mimcap *metal3 - - # Define MiM2 cap bottom plate for spacing rule - templayer mim2_bottom - bloat-all *mimcap2 *metal4 - # Define areas where mim2cc is inside the boundary of mimcc # by more than the contact surround templayer mim2_contact_overlap @@ -4973,14 +4965,9 @@ "Metal3 must surround MiM cap by %d (capm.3)" spacing via2 *mimcap 100 touching_illegal \ "MiM cap spacing to via2 < %d (capm.8 - via2.4)" - spacing *mimcap *metal3/m3 500 surround_ok \ + spacing *metal3 *mimcap 1340 surround_ok \ "MiM cap spacing to unrelated metal3 < %d (capm.11)" -variants (full) - cifspacing mim_bottom mim_bottom 1200 touching_ok \ - "MiM cap bottom plate spacing < %d (capm.2b)" -variants (fast),(full) - # MiM cap contact rules (VIA3) width mimcc/c1 320 "MiM cap contact width < %d (via3.1 + 2 * via3.4)" @@ -5001,15 +4988,12 @@ "Metal4 must surround MiM2 cap by %d (cap2m.3)" spacing via3 *mimcap2 80 touching_illegal \ "MiM2 cap spacing to via3 < %d (cap2m.8 - via3.4)" - spacing *mimcap2 *metal4/m4 500 surround_ok \ + spacing *metal4 *mimcap2 1340 surround_ok \ "MiM2 cap spacing to unrelated metal4 < %d (cap2m.11)" variants (full) cifmaxwidth mim2_contact_overlap 0 bend_illegal \ "MiM2 cap contact must not cross MiM cap contact (cap2m.8)" - - cifspacing mim2_bottom mim2_bottom 1200 touching_ok \ - "MiM2 cap bottom plate spacing < %d (cap2m.2b)" variants (fast),(full) # MiM cap contact rules (VIA4)