Modified the GDS read-in section of the magic tech file for sky130 to remove the area of any actual metal coincident with the corresponding fill block type from the fill block area. Otherwise the fill block will overwrite and obliterate the metal on read-in. This solves the issue reported on the github issue tracker for magic (issue 321). NOTE: There remains an issue that the "fillblock" layer in magic does not symmetrically write out and read back in; however, this problem is due mostly to the poor implementation of "fillblock".
diff --git a/VERSION b/VERSION index 3ba5134..b9c0a67 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.491 +1.0.492
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech index 82c8cbc..147f502 100644 --- a/sky130/magic/sky130.tech +++ b/sky130/magic/sky130.tech
@@ -3957,22 +3957,32 @@ # and FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4 # Use the obstruction types for fill block on individual layers - layer obsactive FILLOBSFOM,FILLOBSPOLY + templayer obspoly FILLOBSPOLY + and-not POLY + + layer obsactive FILLOBSFOM + and-not DIFF,TAP + or obspoly labels FILLOBSFOM,FILLOBSPOLY layer obsm1 FILLOBSM1 + and-not MET1 labels FILLOBSM1 layer obsm2 FILLOBSM2 + and-not MET2 labels FILLOBSM2 layer obsm3 FILLOBSM3 + and-not MET3 labels FILLOBSM3 layer obsm4 FILLOBSM4 + and-not MET4 labels FILLOBSM4 layer obsm5 FILLOBSM5 + and-not MET5 labels FILLOBSM5 # MOS Varactor