Modified the magic techfile to remove the CELLRING templayer from the GDS output, as it is being replaced by the "mask-hints" method. Added mask hints to the top_gpiov2 cell from the Makefile for sky130A so that the GPIO cell does not generate bit trash on the HVI mask due to remaining inconsistencies in the way the GDS for the cell is read into magic. Updated VERSION and also the required magic version for using this tech file (8.3.111), since only revision 111 will correctly handle the mask-hints method.
diff --git a/VERSION b/VERSION index d5515c5..882cfd4 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.102 +1.0.103
diff --git a/common/insert_property.py b/common/insert_property.py index 1ee5687..53fdba9 100755 --- a/common/insert_property.py +++ b/common/insert_property.py
@@ -10,8 +10,8 @@ # # e.g.: # -# insert_property.py /home/tim/projects/efabless/tech/SkyWater/EFS8A \ -# s8iom0 s8iom0s8_top_gpio "FIXED_BBOX 0 607 15000 40200" +# insert_property.py /path/to/sky130A \ +# sky130_fd_io sky130_fd_io__top_gpiov2 "MASKHINTS_HVI 0 607 15000 40200" import os import re @@ -84,6 +84,13 @@ cellname = arguments[2] propstring = arguments[3] + # Diagnostic + print('insert_property.py:') + print(' source = ' + source) + print(' library = ' + libname) + print(' cell = ' + cellname) + print(' property = ' + propstring) + noupdate = True if '-noupdate' in options else False fail = 0
diff --git a/sky130/Makefile.in b/sky130/Makefile.in index 38d000f..7870243 100644 --- a/sky130/Makefile.in +++ b/sky130/Makefile.in
@@ -471,6 +471,10 @@ -gds %l/gds/*.gds \ -lef %l/lef/*.lef compile-only rename=sky130_ef_io \ -library general sky130_fd_io |& tee -a ${SKY130A}_install.log + # Add a maskhint set for the GPIO pad .mag view to prevent problems writing + # when writing HVI to GDS during hierarchical adjustments. + ${ADDPROP} ${STAGING_PATH}/${SKY130A} sky130_fd_io sky130_fd_io__top_gpiov2 \ + "MASKHINTS_HVI 1346 17198 5828 19224 13700 1890 15920 2360 24 17522 1778 20612" -mag # Install SkyWater I/O pad library ${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \ -spice %l/latest/cells/*/*.spice compile-only \
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech index de7b737..2dc5417 100644 --- a/sky130/magic/sky130.tech +++ b/sky130/magic/sky130.tech
@@ -23,7 +23,7 @@ version version REVISION description "SkyWater SKY130: Open Source rules and DRC" - requires magic-8.3.107 + requires magic-8.3.111 end #------------------------------------------------------------------------ @@ -722,16 +722,6 @@ layer BOUND CELLBOUND calma 235 4 -# Create a boundary outside of an abutment box, so that layers -# can be made to stretch to the abutment box edges. First strink -# so that any box that would be so small as to interact with -# itself will be removed. - - templayer CELLRING CELLBOUND - shrink 345 - grow 545 - and-not CELLBOUND - #---------------------------------------------------------------- # DNWELL #---------------------------------------------------------------- @@ -812,10 +802,9 @@ bloat-or allnactivetap * 125 allpactivenontap 0 bloat-or allnactivenontap * 125 allpactivetap 0 - templayer extendPSDM basePSDM,CELLRING + templayer extendPSDM basePSDM bridge 380 380 and-not baseNSDM - and-not CELLRING layer PSDM basePSDM,extendPSDM grow 185 @@ -824,10 +813,9 @@ mask-hints PSDM calma 94 20 - templayer extendNSDM baseNSDM,CELLRING + templayer extendNSDM baseNSDM bridge 380 380 and-not basePSDM - and-not CELLRING layer NSDM baseNSDM,extendNSDM grow 185 @@ -1023,17 +1011,10 @@ # (HVI min width rule is 0.6 but CNTM min width rule is 0.84um) grow-min 840 - templayer baseHVI thkox_area,small_ptap_mv + layer HVI thkox_area,small_ptap_mv bridge 700 600 grow 345 shrink 345 - - templayer extendHVI baseHVI,CELLRING - grow 345 - shrink 345 - and-not CELLRING - - layer HVI baseHVI,extendHVI mask-hints HVI calma 75 20