Corrected an issue with the preprocessor running on the gf180mcu tech file for magic. The preprocessor syntax accepts the syntax "if defined(A) || defined(B)" but not the syntax "if defined(A || B)". This prevented the C variant from having the correct DRC rules for the 0.9um thick top metal. Also: Ran an update on the PV library to capture a recent fix (also related to top metal) for the klayout DRC rules, and updated the distribution JSON file to reflect the PV library's new commit hash.
diff --git a/VERSION b/VERSION index 3f2d5b1..302d5de 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.396 +1.0.397
diff --git a/gf180mcu/gf180mcu.json b/gf180mcu/gf180mcu.json index 7bdef04..24fdb91 100644 --- a/gf180mcu/gf180mcu.json +++ b/gf180mcu/gf180mcu.json
@@ -89,11 +89,11 @@ "magic": "MAGIC_COMMIT" }, "reference": { - "open_pdks": "815863e7bf1848eb9e21ac1fba50fba0fcbde173", - "magic": "e72f85fd105f2f87a809a0512f85b0da75b0350e", + "open_pdks": "7ddd413a3495a9055f03ae60b4320b14d0d6dc55", + "magic": "eb36edf35a9fca496898f5e745ba2c796b13917f", "gf180mcu_pdk": "a897aa30369d3bcec87d9d50ce9b01f320f854ef", "gf180mcu_fd_pr": "9d03c3186e8ebfb97c0d05e3d35e64fe6dbbf511", - "gf180mcu_fd_pv": "1984a3ca2749350060799115ebb1af41ad4af495", + "gf180mcu_fd_pv": "8c2297c81dc9781120a25761678107e0e12c6f27", "gf180mcu_fd_io": "2aeec51ea2824b6cc0b396acfc39f4535f40b23a", "gf180mcu_fd_sc_mcu7t5v0": "8743b6f9641eb8707179c4e51703380d4dc90f16", "gf180mcu_fd_sc_mcu9t5v0": "376ea56fa36ce7702595ce4e0e3c9357ee38c81c",
diff --git a/gf180mcu/magic/gf180mcu.tech b/gf180mcu/magic/gf180mcu.tech index 27d236a..c902ded 100644 --- a/gf180mcu/magic/gf180mcu.tech +++ b/gf180mcu/magic/gf180mcu.tech
@@ -1344,7 +1344,7 @@ shrink 500 grow 500 -#elseif defined(THICKMET0P9 || THICKMET1P1) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) templayer obstruct_mtp allmtp,allpad,fillmtp,obsmtp grow 2010 shrink 500 @@ -3002,7 +3002,7 @@ surround v2/m3 *m3 240 directional \ "Thick Metal3 overlap of Via2 < %d in one direction (MT30.6 - V2.4)" -#elseif defined(THICKMET0P9 || THICKMET1P1) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) surround v2/m3 *m3 50 30 directional \ "Metal3 overlap of Via2 < %d in one direction (V2.4i - V2.4)" @@ -3069,7 +3069,7 @@ surround v3/m4 *m4 240 directional \ "Thick Metal4 overlap of Via3 < %d in one direction (MT30.6 - V3.4)" -#elseif defined(THICKMET0P9 || THICKMET1P1) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) surround v3/m4 *m4 50 30 directional \ "Metal4 overlap of Via3 < %d in one direction (V3.4i - V3.4)" @@ -3132,7 +3132,7 @@ surround v4/m5 *m5 240 directional \ "Metal5 overlap of Via4 < %d in one direction (MT30.6 - V4.4)" -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) surround v4/m4 *m4 50 30 directional \ "Metal4 overlap of Via4 < %d in one direction (V4.3i - V4.3)" surround v4/m5 *m5 50 30 directional \ @@ -3206,7 +3206,7 @@ surround vtp/mtp *mtp 240 directional \ "Thick Top Metal overlap of ViaTP < %d in one direction (MT30.6 - VTP.4)" -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) surround vtp/mtp *mtp 80 absence_illegal \ "Top Metal overlap of ViaTP < %d (VT.4 - VT.3)" width allmtp 440 "Top Metal width < %d (MT.1)" @@ -3635,7 +3635,7 @@ #ifdef METALS3 #ifdef THICKMET3P0 resist (allm3)/metal3 10 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allm3)/metal3 40 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allm3)/metal3 60 @@ -3648,7 +3648,7 @@ #ifdef METALS4 #ifdef THICKMET3P0 resist (allm4)/metal4 10 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allm4)/metal4 40 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allm4)/metal4 60 @@ -3661,7 +3661,7 @@ #ifdef METALS5 #ifdef THICKMET3P0 resist (allm5)/metal5 10 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allm5)/metal5 40 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allm5)/metal5 60 @@ -3674,7 +3674,7 @@ #ifdef METALS6 #ifdef THICKMET3P0 resist (allmtp)/metaltp 10 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allmtp)/metaltp 40 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allmtp)/metaltp 60 @@ -3739,7 +3739,7 @@ #ifdef METALS3 #ifdef THICKMET3P0 resist (allm3)/metal3 15 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allm3)/metal3 49 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allm3)/metal3 70 @@ -3752,7 +3752,7 @@ #ifdef METALS4 #ifdef THICKMET3P0 resist (allm4)/metal4 14 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allm4)/metal4 49 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allm4)/metal4 70 @@ -3765,7 +3765,7 @@ #ifdef METALS5 #ifdef THICKMET3P0 resist (allm5)/metal5 14 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allm5)/metal5 49 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allm5)/metal5 70 @@ -3778,7 +3778,7 @@ #ifdef METALS6 #ifdef THICKMET3P0 resist (allmtp)/metaltp 14 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allmtp)/metaltp 49 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allmtp)/metaltp 70 @@ -3843,7 +3843,7 @@ #ifdef METALS3 #ifdef THICKMET3P0 resist (allm3)/metal3 6 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allm3)/metal3 31 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allm3)/metal3 50 @@ -3856,7 +3856,7 @@ #ifdef METALS4 #ifdef THICKMET3P0 resist (allm4)/metal4 6 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allm4)/metal4 31 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allm4)/metal4 50 @@ -3869,7 +3869,7 @@ #ifdef METALS5 #ifdef THICKMET3P0 resist (allm5)/metal5 6 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allm5)/metal5 31 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allm5)/metal5 50 @@ -3882,7 +3882,7 @@ #ifdef METALS6 #ifdef THICKMET3P0 resist (allmtp)/metaltp 6 -#elseif defined(THICKMET1P1 || THICKMET0P9) +#elseif defined(THICKMET0P9) || defined(THICKMET1P1) resist (allmtp)/metaltp 31 #else (!(THICKMET3P0 || THICKMET1P1 || THICKMET0P9)) resist (allmtp)/metaltp 50