Modified the fill generation script in magic to increase the size of the minimum fill shape from 0.4um x 0.4um to 0.49um x 0.49um, so that the shape passes the minimum metal area rule, for both metals 3 and 4. Also: Updated references for volare.
diff --git a/gf180mcu/gf180mcu.json b/gf180mcu/gf180mcu.json index 5acd702..4fb934d 100644 --- a/gf180mcu/gf180mcu.json +++ b/gf180mcu/gf180mcu.json
@@ -89,8 +89,8 @@ "magic": "MAGIC_COMMIT" }, "reference": { - "open_pdks": "3cd608200b515f95382f3a7627193c4d7a3364df", - "magic": "efccdbf34145878180c6fce5654a65a60171a5b0", + "open_pdks": "dc02929a0a50cedf6f6160cab4d3f683796adc22", + "magic": "291ba96285bcd7c2176f95229fc540bd88a25b88", "gf180mcu_pdk": "a897aa30369d3bcec87d9d50ce9b01f320f854ef", "gf180mcu_fd_pr": "a11222d681f2134ab28e97f97b9b99b6af188f88", "gf180mcu_fd_pv": "e9410df04da5b64a1053aa6e5180dc144b8a12a2",
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech index 15c63c5..6af7b20 100644 --- a/sky130/magic/sky130.tech +++ b/sky130/magic/sky130.tech
@@ -314,7 +314,7 @@ # Miscellaneous -block glass - -block fillblock,fillblock4 + -block fillblock comment comment -comment obscomment @@ -459,7 +459,7 @@ psub pwell obstypes obswell,mvobsactive,obsactive,obsli,obsmcon,obsm1,obsm2,obsm3,obsm4,obsm5,obsmrdl,obscomment - blocktypes fillblock,fillblock4 + blocktypes fillblock end @@ -617,7 +617,6 @@ error_s error_waffle error_ps error_waffle fillblock cwell - fillblock4 cwell obswell cwell obsactive implant4 @@ -1485,19 +1484,19 @@ layer FILLOBSFOM obsactive calma 22 24 - layer FILLOBSM1 fillblock,fillblock4 + layer FILLOBSM1 fillblock,obsm1 calma 62 24 - layer FILLOBSM2 fillblock,fillblock4 + layer FILLOBSM2 fillblock,obsm2 calma 105 52 - layer FILLOBSM3 fillblock,fillblock4 + layer FILLOBSM3 fillblock,obsm3 calma 107 24 - layer FILLOBSM4 fillblock,fillblock4 + layer FILLOBSM4 fillblock,obsm4 calma 112 4 - layer FILLOBSM5 fillblock,fillblock4 + layer FILLOBSM5 fillblock,obsm5 calma 117 4 render DNWELL cwell -0.1 0.1 @@ -2109,7 +2108,7 @@ # diff or poly. #--------------------------------------------------------- - templayer obstruct_li_coarse allli,obsli,lifill,fillblock,fillblock4 + templayer obstruct_li_coarse allli,obsli,lifill,fillblock grow 2800 or alldiff,allpoly grow 200 @@ -2121,7 +2120,7 @@ shrink 1495 grow 1495 - templayer obstruct_li_medium allli,obsli,lifill,fillblock,fillblock4 + templayer obstruct_li_medium allli,obsli,lifill,fillblock grow 2500 or lifill_coarse grow 300 @@ -2134,7 +2133,7 @@ shrink 745 grow 745 - templayer obstruct_li_fine allli,obsli,lifill,fillblock,fillblock4 + templayer obstruct_li_fine allli,obsli,lifill,fillblock or lifill_coarse,lifill_medium grow 300 or alldiff,allpoly @@ -2155,7 +2154,7 @@ # MET1 fill #--------------------------------------------------- - templayer obstruct_m1_coarse allm1,obsm1,m1fill,fillblock,fillblock4 + templayer obstruct_m1_coarse allm1,glass,obsm1,m1fill,fillblock grow 3000 templayer met1fill_coarse topbox # slots 0 2000 200 0 2000 200 700 0 @@ -2165,7 +2164,7 @@ shrink 995 grow 995 - templayer obstruct_m1_medium allm1,obsm1,m1fill,fillblock,fillblock4 + templayer obstruct_m1_medium allm1,glass,obsm1,m1fill,fillblock grow 2800 or met1fill_coarse grow 200 @@ -2176,7 +2175,7 @@ shrink 495 grow 495 - templayer obstruct_m1_fine allm1,obsm1,m1fill,fillblock,fillblock4 + templayer obstruct_m1_fine allm1,glass,obsm1,m1fill,fillblock grow 300 or met1fill_coarse,met1fill_medium grow 200 @@ -2187,7 +2186,7 @@ shrink 285 grow 285 - templayer obstruct_m1_veryfine allm1,obsm1,m1fill,fillblock,fillblock4 + templayer obstruct_m1_veryfine allm1,glass,obsm1,m1fill,fillblock grow 100 or met1fill_coarse,met1fill_medium,met1fill_fine grow 200 @@ -2207,7 +2206,7 @@ #--------------------------------------------------- # MET2 fill #--------------------------------------------------- - templayer obstruct_m2 allm2,obsm2,m2fill,fillblock,fillblock4 + templayer obstruct_m2 allm2,glass,obsm2,m2fill,fillblock grow 3000 templayer met2fill_coarse topbox # slots 0 2000 200 0 2000 200 700 350 @@ -2217,7 +2216,7 @@ shrink 995 grow 995 - templayer obstruct_m2_medium allm2,obsm2,m2fill,fillblock,fillblock4 + templayer obstruct_m2_medium allm2,glass,obsm2,m2fill,fillblock grow 2800 or met2fill_coarse grow 200 @@ -2228,7 +2227,7 @@ shrink 495 grow 495 - templayer obstruct_m2_fine allm2,obsm2,m2fill,fillblock,fillblock4 + templayer obstruct_m2_fine allm2,glass,obsm2,m2fill,fillblock grow 300 or met2fill_coarse,met2fill_medium grow 200 @@ -2239,7 +2238,7 @@ shrink 285 grow 285 - templayer obstruct_m2_veryfine allm2,obsm2,m2fill,fillblock,fillblock4 + templayer obstruct_m2_veryfine allm2,glass,obsm2,m2fill,fillblock grow 100 or met2fill_coarse,met2fill_medium,met2fill_fine grow 200 @@ -2259,7 +2258,7 @@ #--------------------------------------------------- # MET3 fill #--------------------------------------------------- - templayer obstruct_m3 allm3,glass,obsm3,m3fill,fillblock,fillblock4 + templayer obstruct_m3 allm3,glass,obsm3,m3fill,fillblock grow 3000 templayer met3fill_coarse topbox # slots 0 2000 300 0 2000 300 700 700 @@ -2269,7 +2268,7 @@ shrink 995 grow 995 - templayer obstruct_m3_medium allm3,glass,obsm3,m3fill,fillblock,fillblock4 + templayer obstruct_m3_medium allm3,glass,obsm3,m3fill,fillblock grow 2700 or met3fill_coarse grow 300 @@ -2280,7 +2279,7 @@ shrink 495 grow 495 - templayer obstruct_m3_fine allm3,glass,obsm3,m3fill,fillblock,fillblock4 + templayer obstruct_m3_fine allm3,glass,obsm3,m3fill,fillblock grow 200 or met3fill_coarse,met3fill_medium grow 300 @@ -2291,17 +2290,17 @@ shrink 285 grow 285 - templayer obstruct_m3_veryfine allm3,glass,obsm3,m3fill,fillblock,fillblock4 + templayer obstruct_m3_veryfine allm3,glass,obsm3,m3fill,fillblock # Note: Adding 0.1 to waffle rule to clear wide spacing rule grow 100 or met3fill_coarse,met3fill_medium,met3fill_fine grow 300 templayer met3fill_veryfine topbox - slots 0 400 300 0 400 300 150 200 + slots 0 490 300 0 490 300 150 200 and-not obstruct_m3_veryfine and topbox - shrink 195 - grow 195 + shrink 240 + grow 240 layer MET3FILL met3fill_coarse or met3fill_medium @@ -2315,7 +2314,7 @@ #--------------------------------------------------- templayer obstruct_m4 glass grow 2500 - or allm4,obsm4,m4fill,fillblock,fillblock4 + or allm4,obsm4,m4fill,fillblock grow 3000 templayer met4fill_coarse topbox # slots 0 2000 300 0 2000 300 700 1050 @@ -2327,7 +2326,7 @@ templayer obstruct_m4_medium glass grow 2500 - or allm4,obsm4,m4fill,fillblock,fillblock4 + or allm4,obsm4,m4fill,fillblock grow 2700 or met4fill_coarse grow 300 @@ -2340,7 +2339,7 @@ templayer obstruct_m4_fine glass grow 5000 - or allm4,obsm4,m4fill,fillblock,fillblock4 + or allm4,obsm4,m4fill,fillblock grow 200 or met4fill_coarse,met4fill_medium grow 300 @@ -2353,17 +2352,17 @@ templayer obstruct_m4_veryfine glass grow 5100 - or allm4,obsm4,m4fill,fillblock,fillblock4 + or allm4,obsm4,m4fill,fillblock # Note: Adding 0.1 to waffle rule to clear wide spacing rule grow 100 or met4fill_coarse,met4fill_medium,met4fill_fine grow 300 templayer met4fill_veryfine topbox - slots 0 400 300 0 400 300 150 300 + slots 0 490 300 0 490 300 150 300 and-not obstruct_m4_veryfine and topbox - shrink 195 - grow 195 + shrink 240 + grow 240 layer MET4FILL met4fill_coarse or met4fill_medium @@ -2429,8 +2428,6 @@ ignore HVNTM ignore POLYMOD ignore LOWTAPDENSITY - ignore FILLOBSPOLY - ignore FILLOBSFOM ignore MET5BLOCK ignore OUTLINE ignore POLYCUT @@ -3963,12 +3960,28 @@ layer comment TTEXT labels TTEXT text - layer fillblock FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4,FILLOBSM5 - labels FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4,FILLOBSM5 +# Do not infer generic "fillblock" from GDS input +# layer fillblock FILLOBSM5 +# and FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4 - layer fillblock4 FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4 - and-not FILLOBSM5 - labels FILLOBSM1,FILLOBSM2,FILLOBSM3,FILLOBSM4 +# Use the obstruction types for fill block on individual layers + layer obsactive FILLOBSFOM,FILLOBSPOLY + labels FILLOBSFOM,FILLOBSPOLY + + layer obsm1 FILLOBSM1 + labels FILLOBSM1 + + layer obsm2 FILLOBSM2 + labels FILLOBSM2 + + layer obsm3 FILLOBSM3 + labels FILLOBSM3 + + layer obsm4 FILLOBSM4 + labels FILLOBSM4 + + layer obsm5 FILLOBSM5 + labels FILLOBSM5 # MOS Varactor @@ -6587,8 +6600,8 @@ device rsubcircuit sky130_fd_pr__res_generic_pd__hv mvpdiffres \ *mvpdiff nwell error l=l w=w - device resistor sky130_fd_pr__res_generic_po rmp *poly - device resistor sky130_fd_pr__res_generic_po mrp1 *poly + device rsubcircuit sky130_fd_pr__res_generic_po rmp *poly l=l w=w + device rsubcircuit sky130_fd_pr__res_generic_po mrp1 *poly l=l w=w # NOTE: SkyWater diode models have bizarre units requiring bizarre scaling device subcircuit sky130_fd_pr__diode_pd2nw_05v5 *pdiode nwell a=area*1E12 p=perim*1E6 @@ -6744,7 +6757,12 @@ style pnm default draw fillblock no_color_at_all - draw fillblock4 no_color_at_all + draw obsactive no_color_at_all + draw obsm1 no_color_at_all + draw obsm2 no_color_at_all + draw obsm3 no_color_at_all + draw obsm4 no_color_at_all + draw obsm5 no_color_at_all draw fomfill no_color_at_all draw polyfill no_color_at_all draw m1fill no_color_at_all
diff --git a/sky130/netgen/sky130_setup.tcl b/sky130/netgen/sky130_setup.tcl index 8f73e0b..2db9715 100644 --- a/sky130/netgen/sky130_setup.tcl +++ b/sky130/netgen/sky130_setup.tcl
@@ -74,16 +74,16 @@ } } -#------------------------------------------- -# poly resistor -#------------------------------------------- +#---------------------------------------------- +# poly resistor (changed from R type to X type) +#---------------------------------------------- set devices {} lappend devices sky130_fd_pr__res_generic_po foreach dev $devices { if {[lsearch $cells1 $dev] >= 0} { - permute "-circuit1 $dev" end_a end_b + permute "-circuit1 $dev" 1 2 property "-circuit1 $dev" series enable property "-circuit1 $dev" series {w critical} property "-circuit1 $dev" series {l add} @@ -96,7 +96,7 @@ property "-circuit1 $dev" delete mult } if {[lsearch $cells2 $dev] >= 0} { - permute "-circuit2 $dev" end_a end_b + permute "-circuit2 $dev" 1 2 property "-circuit2 $dev" series enable property "-circuit2 $dev" series {w critical} property "-circuit2 $dev" series {l add}
diff --git a/sky130/sky130.json b/sky130/sky130.json index a4f89dc..ea89833 100644 --- a/sky130/sky130.json +++ b/sky130/sky130.json
@@ -94,10 +94,10 @@ "magic": "MAGIC_COMMIT" }, "reference": { - "open_pdks": "3cd608200b515f95382f3a7627193c4d7a3364df", - "magic": "efccdbf34145878180c6fce5654a65a60171a5b0", - "sky130_fd_pr": "6927177c9946a35e3f50d1f80d6e43ccd4c1cab8", - "sky130_fd_io": "979f0a09c39b12e195e5da872eeac62c9f49f8b1", + "open_pdks": "dc02929a0a50cedf6f6160cab4d3f683796adc22", + "magic": "291ba96285bcd7c2176f95229fc540bd88a25b88", + "sky130_fd_pr": "49971d88997f8fc1bf8cb9d07fb6e5fa614b5ec9", + "sky130_fd_io": "3abef97503c37e5e68f450059f51eee308432b0b", "sky130_fd_sc_hs": "d96f84170db1c3e12d701ed0ff59ea4246305202", "sky130_fd_sc_ms": "8b7c93432fe8bd025d566a742c2dc398c4a323d9", "sky130_fd_sc_ls": "355741cee5e90bd418f26abc128d053768e0ff52", @@ -112,7 +112,7 @@ "sky130_fd_bd_sram": "be33adbcf188fdeab5c061699847d9d440f7a084", "sky130_fd_pr_reram": "d6d2a3c6960aac0a0b12fc21221c31777bbf284d", "sky130_ml_xx_hd": "6eb3b0718552b034f1bf1870285ff135e3fb2dcb", - "xschem_sky130": "d1bdbf57af9b717dc93de290ddf9e1f38e74392b", + "xschem_sky130": "5c86542cfb5a01419a763f0f14156db08e2a3d63", "klayout_sky130": "e4816ab2b6aca53c6b53759c647b3395f772b112", "precheck_sky130": "4fd5283b124e931c9e71219f47270075176f84e2" }