Updated the magic techfile with the first draft of the completed automated waffle fill cif output style.
diff --git a/VERSION b/VERSION index 79728fe..4a4127c 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.24 +1.0.25
diff --git a/common/gate_list.txt b/common/gate_list.txt index 84fd5b7..b1097ec 100644 --- a/common/gate_list.txt +++ b/common/gate_list.txt
@@ -98,7 +98,7 @@ LATCHRQ function Q=IQ QB=IQB enable E data_in D clear !R LATCHIRQ function Q=IQ QB=IQB enable !E data_in D clear !R LATCHSRQ function Q=IQ QB=IQB enable E data_in D preset !S clear !R -LATCHISRQ function Q=IQ QB=IQB enable E data_in D preset !S clear !R +LATCHISRQ function Q=IQ QB=IQB enable !E data_in D preset !S clear !R DFF function Q=IQ clocked_on C next_state D DFFQ function Q=IQ function QB=IQB clocked_on C next_state D
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech index ee75912..6de5487 100644 --- a/sky130/magic/sky130.tech +++ b/sky130/magic/sky130.tech
@@ -360,12 +360,6 @@ padl m1 m2 m3 glass #endif (!METAL5) - res0p35 implant1 - res0p69 implant1 - res1p41 implant1 - res2p85 implant1 - res5p73 implant1 - #ifdef REDISTRIBUTION mrdlc metal5 mrdl #endif (REDISTRIBUTION) @@ -508,6 +502,12 @@ xpc polysilicon pselect2 metal1 contact_X'es rmp polysilicon poly_resist_stripes + res0p35 implant1 + res0p69 implant1 + res1p41 implant1 + res2p85 implant1 + res5p73 implant1 + pdiode pdiffusion pselect2 ndiode ndiffusion nselect2 pdiodec pdiffusion pselect2 metal1 contact_X'es @@ -1494,116 +1494,147 @@ options calma-permissive-labels gridlimit 5 +#---------------------------------------------------------------- +# Generate guard-band around nwells to keep FOM from crossing +# Spacing from nwell = Diff/Tap 9 = 0.34um +# Enclosure by nwell = Diff/Tap 8 = 0.18um +#---------------------------------------------------------------- + templayer well_shrink nwell + shrink 180 + templayer well_guardband nwell + grow 340 + and-not well_shrink + #--------------------------------------------------- -# FOM fill (under development) +# Interleaved FOM and POLY fill #--------------------------------------------------- templayer slots_fom_pass1 bbox top slots 0 4080 1320 0 4080 1320 1360 0 templayer obstruct_fom_pass1 alldiff,allpoly,rpw grow 500 + or well_guardband templayer fomfill_pass1 slots_fom_pass1 and-not obstruct_fom_pass1 shrink 2035 grow 2035 +#--------------------------------------------------- + + templayer slots_poly_pass1 + bbox top + slots 0 720 360 0 720 360 240 0 + templayer obstruct_poly_pass1 alldiff,allpoly,rpw + grow 700 + or fomfill_pass1 + grow 300 + or well_guardband + templayer polyfill_pass1 slots_poly_pass1 + and-not obstruct_poly_pass1 + shrink 355 + grow 355 + +#--------------------------------------------------- + templayer slots_fom_pass2 bbox top slots 0 2500 1320 0 2500 1320 1360 0 templayer obstruct_fom_pass2 fomfill_pass1 grow 820 - or alldiff,allpoly,rpw - grow 500 + grow 200 + or polyfill_pass1 + grow 300 + or obstruct_fom_pass1 templayer fomfill_pass2 slots_fom_pass2 and-not obstruct_fom_pass2 shrink 1245 grow 1245 - templayer slots_fom_coarse - bbox top - slots 0 1500 1320 0 1500 1320 1360 0 - templayer obstruct_fom_coarse fomfill_pass1,fomfill_pass2 - grow 820 - or alldiff,allpoly,rpw - grow 500 - templayer fomfill_coarse slots_fom_coarse - and-not obstruct_fom_coarse - shrink 745 - grow 745 - - templayer slots_fom_fine - bbox top - slots 0 500 400 0 500 400 160 0 - templayer obstruct_fom_fine fomfill_pass1,fomfill_pass2,fomfill_coarse - grow 820 - or alldiff,allpoly,rpw - grow 500 - templayer fomfill_fine slots_fom_fine - and-not obstruct_fom_fine - shrink 245 - grow 245 - - layer FOMMASK fomfill_pass1 - or fomfill_pass2 - or fomfill_coarse - or fomfill_fine - calma 23 0 - #--------------------------------------------------- -# POLY fill (under development) -#--------------------------------------------------- - templayer slots_poly_pass1 - bbox top - slots 0 720 360 0 720 360 240 0 - templayer obstruct_poly_pass1 alldiff,allpoly,rpw - grow 1000 - templayer polyfill_pass1 slots_poly_pass1 - and-not obstruct_poly_pass1 - shrink 355 - grow 355 templayer slots_poly_coarse bbox top slots 0 720 360 0 720 360 240 120 - templayer obstruct_poly_coarse alldiff,allpoly,rpw - grow 640 - or polyfill_pass1 - grow 360 + templayer obstruct_poly_coarse polyfill_pass1 + grow 60 + or fomfill_pass1,fomfill_pass2 + grow 300 + or obstruct_poly_pass1 templayer polyfill_coarse slots_poly_coarse and-not obstruct_poly_coarse shrink 355 grow 355 +#--------------------------------------------------- + + templayer slots_fom_coarse + bbox top + slots 0 1500 1320 0 1500 1320 1360 0 + templayer obstruct_fom_coarse fomfill_pass1,fomfill_pass2 + grow 1020 + or polyfill_pass1,polyfill_coarse + grow 300 + or obstruct_fom_pass1 + templayer fomfill_coarse slots_fom_coarse + and-not obstruct_fom_coarse + shrink 745 + grow 745 + +#--------------------------------------------------- templayer slots_poly_medium bbox top slots 0 540 360 0 540 360 240 100 - templayer obstruct_poly_medium alldiff,allpoly,rpw - grow 650 - or polyfill_pass1,polyfill_coarse - grow 360 + templayer obstruct_poly_medium polyfill_pass1,polyfill_coarse + grow 1010 + or obstruct_poly_pass1 templayer polyfill_medium slots_poly_medium and-not obstruct_poly_medium shrink 265 grow 265 +#--------------------------------------------------- + + templayer slots_fom_fine + bbox top + slots 0 500 400 0 500 400 160 0 + templayer obstruct_fom_fine fomfill_pass1,fomfill_pass2,fomfill_coarse + grow 1320 + or obstruct_fom_pass1 + templayer fomfill_fine slots_fom_fine + and-not obstruct_fom_fine + shrink 245 + grow 245 + +#--------------------------------------------------- templayer slots_poly_fine bbox top slots 0 480 360 0 480 360 240 200 - templayer obstruct_poly_fine alldiff,allpoly,rpw + templayer obstruct_poly_fine polyfill_pass1,polyfill_coarse,polyfill_medium grow 650 or polyfill_pass1,polyfill_coarse,polyfill_medium grow 360 + or obstruct_poly_pass1 templayer polyfill_fine slots_poly_fine and-not obstruct_poly_fine shrink 235 grow 235 - layer POLYMASK polyfill_pass1 +#--------------------------------------------------- + templayer fomfill fomfill_pass1 + or fomfill_pass2 + or fomfill_coarse + or fomfill_fine + calma 23 0 + + templayer polyfill polyfill_pass1 or polyfill_coarse or polyfill_medium or polyfill_fine calma 28 0 + layer FOMMASK fomfill + layer POLYMASK polyfill + #--------------------------------------------------- # MET1 fill #---------------------------------------------------