Open d-m-bailey opened 1 year ago
Looks like METAL5S
might have the same problem.
#-------------------------------------------------------------- | #--------------------------------------------------------------
# VIA 3 - Requires METALS4, METALS5, or METALS6 Module | # VIA 3 - Requires METALS4, 1, or METALS6 Module
#-------------------------------------------------------------- | #--------------------------------------------------------------
|
width v3/m3 280 "Via3 width < %d (V3.1 + 2 * V3.4)" | 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)" | spacing v3 v3 240 touching_ok "Via3 spacing < %d (V3.2a - 2 * V3.4)"
surround v3/m3 *m3 50 30 directional \ | surround v3/m3 *m3 50 30 directional \
"Metal3 overlap of Via3 < %d in one direction (V3.3i - V3.3)" | "Metal3 overlap of Via3 < %d in one direction (V3.3i - V3.3)"
+ +-- 15 lines: exact_overlap v3/m4--------------------------------------------------------------|+ +-- 15 lines: exact_overlap v3/m4-------------------------------------------------------------
widespacing allm4,obsm4 10000 allm4,obsm4 300 touching_ok \ | widespacing allm4,obsm4 10000 allm4,obsm4 300 touching_ok \
"Metal4 > %c spacing to unrelated m4 < %d (M4.2b)" | "Metal4 > %c spacing to unrelated m4 < %d (M4.2b)"
|
variants * | variants *
|
#------------------------------------------------------ | #------------------------------------------------------
# VIA 4 - Requires METALS5 Module | # VIA 4 - Requires 1 Module
#------------------------------------------------------ | #------------------------------------------------------
|
width v4/m4 280 "Via4 width < %d (V4.1 + 2 * V4.4)" | width v4/m4 280 "Via4 width < %d (V4.1 + 2 * V4.4)"
spacing v4 v4 240 touching_ok "Via4 spacing < %d (V4.2a - 2 * V4.4)" | spacing v4 v4 240 touching_ok "Via4 spacing < %d (V4.2a - 2 * V4.4)"
exact_overlap v4/m5 | exact_overlap v4/m5
|
#----------------------------- | #-----------------------------
# METALS 5 - METALS5 Module | # METALS 5 - 1 Module
I had previously been doing complicated #undef
s when I encountered these (fixed them all in sky130; hadn't really gone through gf180mcu to check for any), but defining the value as itself might be a simpler, clever solution (if it doesn't try to do a recursive replacement, which it might).
Yes, defining something as itself does bad things. But it's easy to put #undef
s in a few key places and fix the problem.
Fixed in the last push to the repo on opencircuitdesign.com.
Looks like the string
MIM
is begin treated as a macro with a definition of1
in the final version ofmagic/gf180cmuC.tech
.Here's a comparison of the expected vs actual.
MIMTM
has been replace with1TM
.One solution might be to define
MIM
to beMIM
instead of1
.