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