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"
}