Modified the "directional surround" rules in the magic tech file in conjunction with a change to magic's DRC rules to accommodate the rule (for GF180MCU).
diff --git a/gf180mcu/magic/gf180mcu.tech b/gf180mcu/magic/gf180mcu.tech index 9638ec5..9f74262 100644 --- a/gf180mcu/magic/gf180mcu.tech +++ b/gf180mcu/magic/gf180mcu.tech
@@ -21,7 +21,7 @@ version version REVISION description "Global Foundries 180mcu: open PDK rules and DRC" - requires magic-8.3.304 + requires magic-8.3.348 end #----------------------------------------------------- @@ -2782,7 +2782,7 @@ spacing (ndc,nsc,pdc,psc,ndic,pdic,pc)/m1 \ (ndc,nsc,pdc,psc,ndic,pdic,pc)/m1 240 \ touching_ok "Diffusion contact spacing < %d (CO.2a - CO.6)" - surround (ndc,nsc,pdc,psc,ndic,pdic,pc)/m1 *m1 55 \ + surround (ndc,nsc,pdc,psc,ndic,pdic,pc)/m1 *m1 55 35 \ directional "Metal1 overlap of contact < %d in one direction (CO.6)" surround ndc/a *ndiff 65 absence_illegal \ "N-Diffusion overlap of contact < %d (CO.4)" @@ -2803,7 +2803,7 @@ spacing (mvndc,mvnsc,mvpdc,mvpsc,mvndic,mvnndic,mvpdic)/m1 \ (mvndc,mvnsc,mvpdc,mvpsc,mvndic,mvnndic,mvpdic)/m1 240 touching_ok \ "Diffusion contact spacing < %d (CO.2a - CO.6)" - surround (mvndc,mvnsc,mvpdc,mvpsc,mvndic,mvnndic,mvpdic)/m1 *m1 55 directional \ + surround (mvndc,mvnsc,mvpdc,mvpsc,mvndic,mvnndic,mvpdic)/m1 *m1 55 35 directional \ "Metal1 overlap of contact < %d in one direction (CO.6)" surround mvndc/a *mvndiff 65 absence_illegal \ "MV N-Diffusion overlap of contact < %d (CO.4)" @@ -2857,11 +2857,11 @@ width v1/m1 260 "Via1 width < %d (V1.1)" spacing v1 v1 260 touching_ok "Via1 spacing < %d (V1.2a)" - surround v1/m1 *m1 60 directional \ + surround v1/m1 *m1 60 40 directional \ "Metal1 overlap of Via1 < %d in one direction (V1.3)" surround v1/m2 *m2 10 absence_illegal \ "Metal2 overlap of Via1 < %d (V1.4)" - surround v1/m2 *m2 60 directional \ + surround v1/m2 *m2 60 40 directional \ "Metal2 overlap of Via1 < %d in one direction (V1.4i)" exact_overlap v1/m2 @@ -2886,7 +2886,7 @@ width v2/m2 280 "Via2 width < %d (V2.1 + 2 * V2.3)" spacing v2 v2 240 touching_ok "Via2 spacing < %d (V2.2a - 2 * V2.3)" - surround v2/m2 *m2 50 directional \ + surround v2/m2 *m2 50 30 directional \ "Metal2 overlap of Via2 < %d in one direction (V2.3i - V2.3)" exact_overlap v2/m3 @@ -2908,7 +2908,7 @@ "Thick Metal3 overlap of Via2 < %d in one direction (MT30.6 - V2.4)" #elseif defined(THICKMET0P9 || THICKMET1P1) - surround v2/m3 *m3 50 directional \ + surround v2/m3 *m3 50 30 directional \ "Metal3 overlap of Via2 < %d in one direction (V2.4i - V2.4)" width *m3,rm3 440 "Metal3 width < %d (MT.1)" @@ -2920,7 +2920,7 @@ "Metal3 > %c spacing to unrelated m3 < %d (MT.2b)" #else (!(THICKMET3P0 || THICKMET0P9 || THICKMET1P1)) - surround v2/m3 *m3 50 directional \ + surround v2/m3 *m3 50 30 directional \ "Metal3 overlap of Via2 < %d in one direction (V2.4i - V2.4)" width *m3,rm3 360 "Metal3 width < %d (MT.1)" @@ -2932,7 +2932,7 @@ "Metal3 > %c spacing to unrelated m3 < %d (MT.2b)" #endif (!(THICK3UMET || THICKMET1P1 || THICKMET0P9)) #else (!METALS3) - surround v2/m3 *m3 50 directional \ + surround v2/m3 *m3 50 30 directional \ "Metal3 overlap of Via2 < %d in one direction (V2.4i - V2.4)" width *m3,rm3 280 "Metal3 width < %d (M3.1)" @@ -2954,7 +2954,7 @@ width v3/m3 280 "Via3 width < %d (V3.1 + 2 * V3.4)" spacing v3 v3 240 touching_ok "Via3 spacing < %d (V3.2a - 2 * V3.4)" - surround v3/m3 *m3 50 directional \ + surround v3/m3 *m3 50 30 directional \ "Metal3 overlap of Via3 < %d in one direction (V3.3i - V3.3)" exact_overlap v3/m4 @@ -2975,7 +2975,7 @@ "Thick Metal4 overlap of Via3 < %d in one direction (MT30.6 - V3.4)" #elseif defined(THICKMET0P9 || THICKMET1P1) - surround v3/m4 *m4 50 directional \ + surround v3/m4 *m4 50 30 directional \ "Metal4 overlap of Via3 < %d in one direction (V3.4i - V3.4)" width *m4,rm4 440 "Metal4 width < %d (MT.1)" @@ -2986,7 +2986,7 @@ widespacing allm4,obsm4 10000 allm4,obsm4 600 touching_ok \ "Metal4 > %c spacing to unrelated m4 < %d (MT.2b)" #else (!(THICK3UMET || THICKMET1P1 || THICKMET0P9)) - surround v3/m4 *m4 50 directional \ + surround v3/m4 *m4 50 30 directional \ "Metal4 overlap of Via3 < %d in one direction (V3.4i - V3.4)" width *m4,rm4 360 "Metal4 width < %d (MT.1)" @@ -2998,7 +2998,7 @@ "Metal4 > %c spacing to unrelated m4 < %d (MT.2b)" #endif (!(THICK3UMET || THICKMET1P1 || THICKMET0P9)) #else (!METALS4) - surround v3/m4 *m4 50 directional \ + surround v3/m4 *m4 50 30 directional \ "Metal4 overlap of Via3 < %d in one direction (V3.4i - V3.4)" width *m4,rm4 200 "Metal4 width < %d (M4.1)" @@ -3038,9 +3038,9 @@ "Metal5 overlap of Via4 < %d in one direction (MT30.6 - V4.4)" #elseif defined(THICKMET1P1 || THICKMET0P9) - surround v4/m4 *m4 50 directional \ + surround v4/m4 *m4 50 30 directional \ "Metal4 overlap of Via4 < %d in one direction (V4.3i - V4.3)" - surround v4/m5 *m5 50 directional \ + surround v4/m5 *m5 50 30 directional \ "Metal5 overlap of Via4 < %d in one direction (V4.4i - V4.4)" width *m5,rm5 440 "Metal5 width < %d (MT.1)" @@ -3051,9 +3051,9 @@ widespacing allm5,obsm5 10000 allm5,obsm5 600 touching_ok \ "Metal5 > %c spacing to unrelated m5 < %d (MT.2b)" #else (!(THICK3UMET || THICKMET1P1 || THICKMET0P9)) - surround v4/m4 *m4 50 directional \ + surround v4/m4 *m4 50 30 directional \ "Metal4 overlap of Via4 < %d in one direction (V4.3i - V4.3)" - surround v4/m5 *m5 50 directional \ + surround v4/m5 *m5 50 30 directional \ "Metal5 overlap of Via4 < %d in one direction (V4.4i - V4.4)" width *m5,rm5 360 "Metal5 width < %d (MT.1)" @@ -3065,9 +3065,9 @@ "Metal5 > %c spacing to unrelated m5 < %d (MT.2b)" #endif (!(THICK3UMET || THICKMET1P1 || THICKMET0P9)) #else (!METALS5) - surround v4/m4 *m4 50 directional \ + surround v4/m4 *m4 50 30 directional \ "Metal4 overlap of Via4 < %d in one direction (V4.3i - V4.3)" - surround v4/m5 *m5 50 directional \ + surround v4/m5 *m5 50 30 directional \ "Metal5 overlap of Via4 < %d in one direction (V4.4i - V4.4)" width *m5,rm5 200 "Metal5 width < %d (M5.1)"