Modified the sky130 techfile for magic with a hack that works around the issue of sky130 not having a fill block layer for the local interconnect mask. The fill generation output style now uses the fill block layer for the metal1 mask as fill block for local interconnect as well. Not a perfect solution but works in practice as the only thing it needs to accomplish is to prevent LI fill in the chip corners and under the seal ring.
diff --git a/VERSION b/VERSION index 9ecac49..226ae8a 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.515 +1.0.516
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech index 15a9893..f2b1bfa 100644 --- a/sky130/magic/sky130.tech +++ b/sky130/magic/sky130.tech
@@ -2105,12 +2105,24 @@ # LI fill # Note requirement that LI fill may not overlap (non-fill) # diff or poly. +# +# Important note: sky130 does not define an LI mask fill +# blockage layer, because LI fill requirements were added +# to the process after the open PDK was made. While +# obstruction layers can be used in magic to block LI +# fill, this does not translate into GDS, so running fill +# on a GDS top level cell will result in LI fill shapes +# being placed in the corner and under the seal ring. To +# work around this, I have added obsm1 to the layers that +# obstruct LI, which is a bit of a hack but should not +# cause issues in practice. #--------------------------------------------------------- templayer obstruct_li_coarse allli,obsli,lifill,fillblock grow 2800 or alldiff,allpoly grow 200 + or obsm1 templayer lifill_coarse topbox # slots 0 3000 650 0 3000 650 700 0 slots 0 3000 900 0 3000 900 700 0 @@ -2125,6 +2137,7 @@ grow 300 or alldiff,allpoly grow 200 + or obsm1 templayer lifill_medium topbox slots 0 1500 500 0 1500 500 700 0 and-not obstruct_li_medium @@ -2137,6 +2150,7 @@ grow 300 or alldiff,allpoly grow 200 + or obsm1 templayer lifill_fine topbox slots 0 580 500 0 580 500 700 0 and-not obstruct_li_fine