Corrected a poly fill spacing rule for GF180MCU (correctly implements both the fill cell spacing of 2.4um and the minimum corner-to-corner spacing of 1.1um). Added "gds maskhints on" to the GDS import routine for standard cells in both sky130 and gf180mcu, having tested this and determining that it looks correct. Using this setting should create .mag views of all standard cells that have mask hints showing where implant layers exist beyond the minimum areas that magic would generate itself. This will prevent magic from trying to generate extra layers over digital blocks, and the "cif *hier write disable" command can go back to being used to speed up processing when writing output for large digital circuits.
diff --git a/VERSION b/VERSION index b1f4dc5..9d615cb 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.555 +1.0.556
diff --git a/gf180mcu/custom/scripts/gds_import_sc.tcl b/gf180mcu/custom/scripts/gds_import_sc.tcl index 9cf8601..a633651 100644 --- a/gf180mcu/custom/scripts/gds_import_sc.tcl +++ b/gf180mcu/custom/scripts/gds_import_sc.tcl
@@ -3,3 +3,6 @@ # shapes that they get flattened out of existence. There are no # instances in the standard cells that could get flattened, anyway. gds flatten false +# Regenerate implant layers that don't conform to minimum rules +# as mask-hints +gds maskhints on
diff --git a/gf180mcu/magic/gf180mcu.tech b/gf180mcu/magic/gf180mcu.tech index 8ef040e..6145f9b 100644 --- a/gf180mcu/magic/gf180mcu.tech +++ b/gf180mcu/magic/gf180mcu.tech
@@ -3210,7 +3210,9 @@ width fillpoly 5600 "Poly fill width < %d (DPF.1)" spacing allpoly allpoly 240 touching_ok "Poly spacing < %d (PL.3a)" spacing allpoly fillpoly 5000 touching_illegal "Poly fill spacing to poly < %d (DPF.5)" - spacing fillpoly fillpoly 2400 touching_ok "Poly fill spacing < %d (DPF.2a)" + edge4way fillpoly space/poly 2400 ~(fillpoly)/poly 0 0 \ + "Lateral spacing between poly fill shapes < %d (DPF.2a)" + spacing fillpoly fillpoly 1100 touching_ok "Poly fill spacing < %d (DPF.2b)" spacing allpolynonfet alldifflvnonfet 100 corner_ok allfets \ "Poly spacing to diffusion < %d (PL.5a)" # NOTE: Below, 2nd argument was alldiffmvnonfet, but needs to exclude sram diffusion.
diff --git a/sky130/Makefile.in b/sky130/Makefile.in index 1868b2c..2060565 100644 --- a/sky130/Makefile.in +++ b/sky130/Makefile.in
@@ -1547,7 +1547,7 @@ digital-hd-%: # Install custom additions to standard cell libraries ${STAGE} -source ./custom -target ${STAGING_PATH}/${SKY130$*} \ - -gds %l/gds/*.gds options=custom/scripts/gds_import_setup.tcl \ + -gds %l/gds/*.gds options=custom/scripts/gds_import_sc.tcl \ -lef %l/lef/*.lef compile-only rename=sky130_ef_sc_hd.lef \ -verilog %l/verilog/*.v \ -library digital sky130_fd_sc_hd 2>&1 | tee -a ${SKY130$*}_make.log @@ -1567,7 +1567,7 @@ -lib timing/*.lib \ -gds cells/*/*.gds compile-only \ include=custom/sky130_fd_sc_hd/gds/sky130_ef*.gds \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ sort=../common/sort_pdkfiles.py \ -verilog models/*/*.v compile-only \ exclude=*.*.v \ @@ -1616,7 +1616,7 @@ -lib timing/*.lib.part* collate \ -lib timing/*.lib \ -gds cells/*/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ sort=../common/sort_pdkfiles.py \ -verilog models/*/*.v exclude=*.*.v compile-only \ rename=primitives filter=custom/scripts/inc_verilog.py \ @@ -1638,7 +1638,7 @@ digital-hvl-%: ${STAGE} -source ./custom -target ${STAGING_PATH}/${SKY130$*} \ - -gds %l/gds/*.gds options=custom/scripts/gds_import_setup.tcl \ + -gds %l/gds/*.gds options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_fd_sc_hvl 2>&1 | tee -a ${SKY130$*}_make.log # Install all SkyWater digital standard cells. ${STAGE} -source ${SKY130_SC_HVL_PATH} -target ${STAGING_PATH}/${SKY130$*} \ @@ -1654,7 +1654,7 @@ -lib timing/*.lib \ -gds cells/*/*.gds compile-only \ include=custom/sky130_fd_sc_hvl/gds/sky130_ef*.gds \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ sort=../common/sort_pdkfiles.py \ -verilog models/*/*.v exclude=*.*.v compile-only \ rename=primitives filter=custom/scripts/inc_verilog.py \ @@ -1693,7 +1693,7 @@ -lib timing/*.lib.part* collate \ -lib timing/*.lib \ -gds cells/*/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ sort=../common/sort_pdkfiles.py \ -verilog models/*/*.v exclude=*.*.v compile-only \ rename=primitives filter=custom/scripts/inc_verilog.py \ @@ -1728,7 +1728,7 @@ -lib timing/*.lib.part* collate \ -lib timing/*.lib \ -gds cells/*/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ sort=../common/sort_pdkfiles.py \ -verilog models/*/*.v exclude=*.*.v compile-only \ rename=primitives filter=custom/scripts/inc_verilog.py \ @@ -1763,7 +1763,7 @@ -lib timing/*.lib.part* collate \ -lib timing/*.lib \ -gds cells/*/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ sort=../common/sort_pdkfiles.py \ -verilog models/*/*.v exclude=*.*.v compile-only \ rename=primitives filter=custom/scripts/inc_verilog.py \ @@ -1798,7 +1798,7 @@ -lib timing/*.lib.part* collate \ -lib timing/*.lib \ -gds cells/*/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ sort=../common/sort_pdkfiles.py \ -verilog models/*/*.v exclude=*.*.v compile-only \ rename=primitives filter=custom/scripts/inc_verilog.py \ @@ -1874,7 +1874,7 @@ -lef 12T_hs/lef/*.lef \ -lib 12T_hs/lib/*.lib \ -gds 12T_hs/gds/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_osu_sc_12t_hs 2>&1 | tee -a ${SKY130$*}_make.log # Install OSU T12 ms digital standard cells. ${STAGE} -source ${OSU_T12_PATH} -target ${STAGING_PATH}/${SKY130$*} \ @@ -1883,7 +1883,7 @@ -lef 12T_ms/lef/*.lef \ -lib 12T_ms/lib/*.lib \ -gds 12T_ms/gds/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_osu_sc_12t_ms 2>&1 | tee -a ${SKY130$*}_make.log # Install OSU T12 ls digital standard cells. ${STAGE} -source ${OSU_T12_PATH} -target ${STAGING_PATH}/${SKY130$*} \ @@ -1892,7 +1892,7 @@ -lef 12T_ls/lef/*.lef \ -lib 12T_ls/lib/*.lib \ -gds 12T_ls/gds/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_osu_sc_12t_ls 2>&1 | tee -a ${SKY130$*}_make.log osu-t15-%: @@ -1903,7 +1903,7 @@ -lef 15T_hs/lef/*.lef \ -lib 15T_hs/lib/*.lib \ -gds 15T_hs/gds/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_osu_sc_15t_hs 2>&1 | tee -a ${SKY130$*}_make.log # Install OSU T15 ms digital standard cells. ${STAGE} -source ${OSU_T15_PATH} -target ${STAGING_PATH}/${SKY130$*} \ @@ -1912,7 +1912,7 @@ -lef 15T_ms/lef/*.lef \ -lib 15T_ms/lib/*.lib \ -gds 15T_ms/gds/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_osu_sc_15t_ms 2>&1 | tee -a ${SKY130$*}_make.log # Install OSU T15 ls digital standard cells. ${STAGE} -source ${OSU_T15_PATH} -target ${STAGING_PATH}/${SKY130$*} \ @@ -1921,7 +1921,7 @@ -lef 15T_ls/lef/*.lef \ -lib 15T_ls/lib/*.lib \ -gds 15T_ls/gds/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_osu_sc_15t_ls 2>&1 | tee -a ${SKY130$*}_make.log osu-t18-%: @@ -1932,7 +1932,7 @@ -lef 18T_hs/lef/*.lef \ -lib 18T_hs/lib/*.lib \ -gds 18T_hs/gds/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_osu_sc_18t_hs 2>&1 | tee -a ${SKY130$*}_make.log # Install OSU T18 ms digital standard cells. ${STAGE} -source ${OSU_T18_PATH} -target ${STAGING_PATH}/${SKY130$*} \ @@ -1941,7 +1941,7 @@ -lef 18T_ms/lef/*.lef \ -lib 18T_ms/lib/*.lib \ -gds 18T_ms/gds/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_osu_sc_18t_ms 2>&1 | tee -a ${SKY130$*}_make.log # Install OSU T18 ls digital standard cells. ${STAGE} -source ${OSU_T18_PATH} -target ${STAGING_PATH}/${SKY130$*} \ @@ -1950,7 +1950,7 @@ -lef 18T_ls/lef/*.lef \ -lib 18T_ls/lib/*.lib \ -gds 18T_ls/gds/*.gds compile-only \ - options=custom/scripts/gds_import_setup.tcl \ + options=custom/scripts/gds_import_sc.tcl \ -library digital sky130_osu_sc_18t_ls 2>&1 | tee -a ${SKY130$*}_make.log install: $(foreach var, ${VARIANTS}, install-$(var))
diff --git a/sky130/custom/scripts/gds_import_sc.tcl b/sky130/custom/scripts/gds_import_sc.tcl new file mode 100644 index 0000000..1f9e375 --- /dev/null +++ b/sky130/custom/scripts/gds_import_sc.tcl
@@ -0,0 +1,2 @@ +cif istyle sky130() +gds maskhints true