Moved the fill type GDS import into the regular GDS import instead
of in its own special section.  Created new types for poly and FOM
fill.  Created type "fillblock4" to block all fill up to but not
including metal5.
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index 3c1bc09..7ba5b9a 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -177,6 +177,7 @@
  -active srampvar,corepvar,corepvaractor
 
 # Diffusions
+ -active fomfill
   active ndiff,ndiffusion,ndif
   active pdiff,pdiffusion,pdif
   active mvndiff,mvndiffusion,mvndif
@@ -200,6 +201,7 @@
   active poly,p,polysilicon
   active polycont,pc,pcontact,polycut,polyc
   active xpolycontact,xpolyc,xpc
+ -active polyfill
 
 # Resistors
   active npolyres,npres,mrp1
@@ -292,7 +294,7 @@
 
 # Miscellaneous
  -block  glass
- -block  fillblock
+ -block  fillblock,fillblock4
   comment comment
  -comment obscomment
 # fixed resistor width identifiers
@@ -407,7 +409,7 @@
   alldiffmvnonfet  allndiffmvnonfet,allpdiffmvnonfet
 
   alldiffnonfet	   alldifflvnonfet,alldiffmvnonfet
-  alldiff	   alldifflv,alldiffmv
+  alldiff	   alldifflv,alldiffmv,fomfill
 
   allpolyres	   mrp1,xhrpoly,uhrpoly,rmp
   allpolynonfet	   *poly,allpolyres,xpc
@@ -456,6 +458,7 @@
   pwell	    pwell
   rpwell    pwell 	ptransistor_stripes
   ndiff     ndiffusion
+  fomfill   ndiffusion
   pdiff     pdiffusion
   nsd       ndiff_in_nwell
   psd       pdiff_in_pwell
@@ -501,6 +504,7 @@
   mvpsc     pdiff_in_pwell metal1  contact_X'es hvpdiff_mask
 
   poly      polysilicon 
+  polyfill  polysilicon
   pc        polysilicon    metal1  contact_X'es
   npolyres  polysilicon    silicide_block nselect2
   ppolyres  polysilicon    silicide_block pselect2
@@ -590,6 +594,7 @@
   error_s   error_waffle
   error_ps  error_waffle
   fillblock cwell
+  fillblock4 cwell
 
   obswell   cwell
   obsactive implant4
@@ -678,7 +683,7 @@
 #endif (METAL5)
    allnactivenonfet	allnactivenonfet
    allpactivenonfet	allpactivenonfet
-  *poly,xpc,allfets	*poly,xpc,allfets
+  *poly,xpc,allfets,polyfill	*poly,xpc,allfets,polyfill
 #ifdef REDISTRIBUTION
   # RDL connects to m5 (i.e., padl) through glass cut
   *mrdl			*mrdl
@@ -783,6 +788,14 @@
  	calma 	65 44
 
 #----------------------------------------------------------------
+# FOM
+#----------------------------------------------------------------
+
+ layer FOMFILL	fomfill
+	labels	fomfill
+	calma	65 28
+
+#----------------------------------------------------------------
 # PPLUS, NPLUS (PSDM, NSDM)
 #----------------------------------------------------------------
 
@@ -981,6 +994,10 @@
 	labels  allpoly port
 	calma	66 5
 
+ layer POLYFILL	polyfill
+	labels 	polyfill
+	calma	66 28
+
 #----------------------------------------------------------------
 # THKOX (HVI) (includes rules NWELL 8-11 and DIFFTAP 14-26)
 #----------------------------------------------------------------
@@ -1327,16 +1344,16 @@
 #----------------------------------------------------------------
 # FILLBLOCK
 #----------------------------------------------------------------
- layer FILLOBSM1 fillblock
+ layer FILLOBSM1 fillblock,fillblock4
  	calma 	62 24
 
- layer FILLOBSM2 fillblock
+ layer FILLOBSM2 fillblock,fillblock4
  	calma 	105 52
 
- layer FILLOBSM3 fillblock
+ layer FILLOBSM3 fillblock,fillblock4
  	calma 	107 24
 
- layer FILLOBSM4 fillblock
+ layer FILLOBSM4 fillblock,fillblock4
  	calma 	112 4
 
  render	DNWELL 	cwell       -0.1    0.1
@@ -1836,28 +1853,23 @@
         grow    245
 
 #---------------------------------------------------
- templayer	fomfill
-	or	fomfill_pass1 
+ layer  FOMFILL fomfill_pass1 
 	or	fomfill_pass2
 	or	fomfill_coarse
 	or	fomfill_fine
-
- templayer	polyfill
-	or	polyfill_pass1 
-	or	polyfill_coarse
-	or	polyfill_medium
-	or	polyfill_fine
-
- layer	FOMFILL    fomfill
  	calma 	65 28
- layer	POLYFILL    polyfill
+
+ layer	POLYFILL polyfill_pass1 
+	or	 polyfill_coarse
+	or	 polyfill_medium
+	or	 polyfill_fine
  	calma 	66 28
 
 #---------------------------------------------------
 # MET1 fill
 #---------------------------------------------------
 
- templayer      obstruct_m1_coarse allm1,allpad,obsm1,m1fill,fillblock
+ templayer      obstruct_m1_coarse allm1,allpad,obsm1,m1fill,fillblock,fillblock4
         grow    3000
  templayer	met1fill_coarse topbox
         slots   0 2000 200 0 2000 200 700 0
@@ -1866,7 +1878,7 @@
         shrink  995
         grow    995
 
- templayer      obstruct_m1_medium allm1,allpad,obsm1,m1fill,fillblock
+ templayer      obstruct_m1_medium allm1,allpad,obsm1,m1fill,fillblock,fillblock4
         grow    2800
 	or	met1fill_coarse
         grow    200
@@ -1877,7 +1889,7 @@
         shrink  495
         grow    495
 
- templayer      obstruct_m1_fine allm1,allpad,obsm1,m1fill,fillblock
+ templayer      obstruct_m1_fine allm1,allpad,obsm1,m1fill,fillblock,fillblock4
         grow    300
 	or	met1fill_coarse,met1fill_medium
         grow    200
@@ -1888,7 +1900,7 @@
         shrink  285
         grow    285
 
- templayer      obstruct_m1_veryfine allm1,allpad,obsm1,m1fill,fillblock
+ templayer      obstruct_m1_veryfine allm1,allpad,obsm1,m1fill,fillblock,fillblock4
         grow    100
 	or	met1fill_coarse,met1fill_medium,met1fill_fine
         grow    200
@@ -1908,7 +1920,7 @@
 #---------------------------------------------------
 # MET2 fill
 #---------------------------------------------------
- templayer      obstruct_m2 allm2,allpad,obsm2,m2fill,fillblock
+ templayer      obstruct_m2 allm2,allpad,obsm2,m2fill,fillblock,fillblock4
         grow    3000
  templayer	met2fill_coarse topbox
         slots   0 2000 200 0 2000 200 700 350
@@ -1917,7 +1929,7 @@
         shrink  995
         grow    995
 
- templayer      obstruct_m2_medium allm2,allpad,obsm2,m2fill,fillblock
+ templayer      obstruct_m2_medium allm2,allpad,obsm2,m2fill,fillblock,fillblock4
         grow    2800
 	or	met2fill_coarse
         grow    200
@@ -1928,7 +1940,7 @@
         shrink  495
         grow    495
 
- templayer      obstruct_m2_fine allm2,allpad,obsm2,m2fill,fillblock
+ templayer      obstruct_m2_fine allm2,allpad,obsm2,m2fill,fillblock,fillblock4
         grow    300
 	or	met2fill_coarse,met2fill_medium
         grow    200
@@ -1939,7 +1951,7 @@
         shrink  285
         grow    285
 
- templayer      obstruct_m2_veryfine allm2,allpad,obsm2,m2fill,fillblock
+ templayer      obstruct_m2_veryfine allm2,allpad,obsm2,m2fill,fillblock,fillblock4
         grow    100
 	or	met2fill_coarse,met2fill_medium,met2fill_fine
         grow    200
@@ -1959,7 +1971,7 @@
 #---------------------------------------------------
 # MET3 fill
 #---------------------------------------------------
- templayer      obstruct_m3 allm3,allpad,obsm3,m3fill,fillblock
+ templayer      obstruct_m3 allm3,allpad,obsm3,m3fill,fillblock,fillblock4
         grow    3000
  templayer	met3fill_coarse topbox
         slots   0 2000 300 0 2000 300 700 700
@@ -1968,7 +1980,7 @@
         shrink  995
         grow    995
 
- templayer      obstruct_m3_medium allm3,allpad,obsm3,m3fill,fillblock
+ templayer      obstruct_m3_medium allm3,allpad,obsm3,m3fill,fillblock,fillblock4
         grow    2700
 	or	met3fill_coarse
         grow    300
@@ -1979,7 +1991,7 @@
         shrink  495
         grow    495
 
- templayer      obstruct_m3_fine allm3,allpad,obsm3,m3fill,fillblock
+ templayer      obstruct_m3_fine allm3,allpad,obsm3,m3fill,fillblock,fillblock4
         grow    200
 	or	met3fill_coarse,met3fill_medium
         grow    300
@@ -1990,7 +2002,7 @@
         shrink  285
         grow    285
 
- templayer      obstruct_m3_veryfine allm3,allpad,obsm3,m3fill,fillblock
+ templayer      obstruct_m3_veryfine allm3,allpad,obsm3,m3fill,fillblock,fillblock4
 	# Note: Adding 0.1 to waffle rule to clear wide spacing rule
         grow    100
 	or	met3fill_coarse,met3fill_medium,met3fill_fine
@@ -2012,7 +2024,7 @@
 #---------------------------------------------------
 # MET4 fill
 #---------------------------------------------------
- templayer      obstruct_m4 allm4,allpad,obsm4,m4fill,fillblock
+ templayer      obstruct_m4 allm4,allpad,obsm4,m4fill,fillblock,fillblock4
         grow    3000
  templayer	met4fill_coarse topbox
         slots   0 2000 300 0 2000 300 700 1050
@@ -2021,7 +2033,7 @@
         shrink  995
         grow    995
 
- templayer      obstruct_m4_medium allm4,allpad,obsm4,m4fill,fillblock
+ templayer      obstruct_m4_medium allm4,allpad,obsm4,m4fill,fillblock,fillblock4
         grow    2700
 	or	met4fill_coarse
         grow    300
@@ -2031,7 +2043,7 @@
         shrink  495
         grow    495
 
- templayer      obstruct_m4_fine allm4,allpad,obsm4,m4fill,fillblock
+ templayer      obstruct_m4_fine allm4,allpad,obsm4,m4fill,fillblock,fillblock4
         grow    200
 	or	met4fill_coarse,met4fill_medium
         grow    300
@@ -2042,7 +2054,7 @@
         shrink  285
         grow    285
 
- templayer      obstruct_m4_veryfine allm4,allpad,obsm4,m4fill,fillblock
+ templayer      obstruct_m4_veryfine allm4,allpad,obsm4,m4fill,fillblock,fillblock4
 	# Note: Adding 0.1 to waffle rule to clear wide spacing rule
         grow    100
 	or	met4fill_coarse,met4fill_medium,met4fill_fine
@@ -3061,6 +3073,12 @@
  or mvpdicbase
  labels CONT
 
+ layer	fomfill  FOMFILL
+ labels FOMFILL
+
+ layer	polyfill POLYFILL
+ labels POLYFILL
+
  layer coreli LI,LITXT,LIPIN
  and-not LIRES,LISHORT
  and COREID
@@ -5181,24 +5199,6 @@
  calma FILLOBSM2  105 52
  calma FILLOBSM3  107 24
  calma FILLOBSM4  112 4
-
-style  waffleimport
- # This style is for reading back and validating shapes
- # generated by the "wafflefill" cifoutput style.
-
- scalefactor 10 nanometers
- gridlimit 5
-
- options ignore-unknown-layer-labels no-reconnect-labels
-
- layer	ndiff  FOMFILL
- layer	poly   POLYFILL
- layer	m1fill MET1FILL
- layer	m2fill MET2FILL
- layer	m3fill MET3FILL
- layer	m4fill MET4FILL
- layer	m5fill MET5FILL
-
  calma  FOMFILL  65 28
  calma 	POLYFILL 66 28
  calma 	MET1FILL 68 28
@@ -5282,7 +5282,7 @@
 # DIFF
 #-----------------------------
 
- width *ndiff,nfet,scnfet,npd,npass,*nsd,*ndiode,ndiffres,*pdiff,pfet,scpfet,scpfethvt,ppu,*psd,*pdiode,pdiffres \
+ width *ndiff,nfet,scnfet,npd,npass,*nsd,*ndiode,ndiffres,*pdiff,pfet,scpfet,scpfethvt,ppu,*psd,*pdiode,pdiffres,fomfill \
 	150 "Diffusion width < %d (diff/tap.1)"
  width *mvndiff,mvnfet,mvnfetesd,mvnnfet,*mvndiode,*nndiode,mvndiffres,*mvpdiff,mvpfet,mvpfetesd,*mvpdiode,mvpdiffres 290 \
 	"MV Diffusion width < %d (diff/tap.14)"
@@ -5293,7 +5293,7 @@
  extend *psd *ndiff 290 "Butting tap length < %d (diff/tap.4)"
  extend *nsd *pdiff 290 "Butting tap length < %d (diff/tap.4)"
  width mvpdiffres 150 "MV P-Diffusion resistor width < %d (diff/tap.14a)"
- spacing alldifflv,var,varhvt alldifflv,var,varhvt 270 touching_ok \
+ spacing alldifflv,var,varhvt,fomfill alldifflv,var,varhvt,fomfill 270 touching_ok \
 	"Diffusion spacing < %d (diff/tap.3)"
  spacing alldiffmvnontap,mvvar alldiffmvnontap,mvvar 300 touching_ok \
 	"MV Diffusion spacing < %d (diff/tap.15a)"
@@ -5379,10 +5379,10 @@
 # POLY
 #-----------------------------
 
- width allpoly 150 "poly width < %d (poly.1a)"
- spacing allpoly allpoly 210 touching_ok "poly spacing < %d (poly.2)"
+ width allpoly,polyfill 150 "poly width < %d (poly.1a)"
+ spacing allpoly,polyfill allpoly,polyfill 210 touching_ok "poly spacing < %d (poly.2)"
 
- spacing allpolynonfet \
+ spacing allpolynonfet,polyfill \
 	*ndiff,*mvndiff,*ndiode,*nndiode,ndiffres,*ndiodelvt,*pdiff,*mvpdiff,*pdiode,pdiffres,*pdiodelvt,*pdiodehvt \
 	75 corner_ok allfets \
 	"poly spacing to Diffusion < %d (poly.4)"
@@ -5409,7 +5409,7 @@
  spacing xhrpoly,uhrpoly,xpc allndiffmvnontap 830 touching_illegal \
 	"Distance from precision resistor to MV N+ diffusion < %d (rpm.3 + rpm.9)"
 
- angles allpoly 90 "Only 90 degree angles permitted on poly (x.2)"
+ angles allpoly,polyfill 90 "Only 90 degree angles permitted on poly (x.2)"
 
 #--------------------------------------------------------------------
 # HVTP
@@ -5607,7 +5607,7 @@
 #-------------------------------------------------------------
 
  width *m1,rm1 140 "Metal1 width < %d (met1.1)"
- spacing allm1 allm1,*obsm1 140 touching_ok "Metal1 spacing < %d (met1.2)"
+ spacing allm1,m1fill allm1,*obsm1,m1fill 140 touching_ok "Metal1 spacing < %d (met1.2)"
  area allm1,*obsm1 83000 140 "Metal1 minimum area < %a (met1.6)"
 
  surround lic/m1 *met1 30 absence_illegal \
@@ -5615,10 +5615,10 @@
  surround lic/m1 *met1 60 directional \
 	"Metal1 overlap of local interconnect contact < %d in one direction (met1.5)"
 
- angles allm1 45 "Only 45 and 90 degree angles permitted on metal1 (x.3a)"
+ angles allm1,m1fill 45 "Only 45 and 90 degree angles permitted on metal1 (x.3a)"
 
 variants (fast),(full)
- widespacing allm1 3005 allm1,*obsm1 280 touching_ok \
+ widespacing allm1 3005 allm1,*obsm1,m1fill 280 touching_ok \
 	"Metal1 > 3um spacing to unrelated m1 < %d (met1.3b)"
  widespacing *obsm1 3005 allm1 280 touching_ok \
 	"Metal1 > 3um spacing to unrelated m1 < %d (met1.3b)"
@@ -5648,14 +5648,14 @@
 # METAL2 - 
 #--------------------------------------------------
 
- width allm2 140 "Metal2 width < %d (met2.1)"
- spacing allm2  allm2,obsm2 140 touching_ok       "Metal2 spacing < %d (met2.2)"
+ width allm2,m2fill 140 "Metal2 width < %d (met2.1)"
+ spacing allm2  allm2,obsm2,m2fill 140 touching_ok       "Metal2 spacing < %d (met2.2)"
  area allm2,obsm2 67600 140 "Metal2 minimum area < %a (met2.6)"
 
  angles allm2 45 "Only 45 and 90 degree angles permitted on metal2 (x.3a)"
 
 variants (fast),(full)
- widespacing allm2 3005 allm2,obsm2  280 touching_ok \
+ widespacing allm2 3005 allm2,obsm2,m2fill  280 touching_ok \
 	"Metal2 > 3um spacing to unrelated m2 < %d (met2.3b)"
  widespacing obsm2 3005 allm2  280 touching_ok \
 	"Metal2 > 3um spacing to unrelated m2 < %d (met2.3b)"
@@ -5686,14 +5686,14 @@
 # METAL3 - 
 #--------------------------------------------------
 
- width allm3 300 "Metal3 width < %d (met3.1)"
- spacing allm3 allm3,obsm3  300 touching_ok "Metal3 spacing < %d (met3.2)"
+ width allm3,m3fill 300 "Metal3 width < %d (met3.1)"
+ spacing allm3 allm3,obsm3,m3fill  300 touching_ok "Metal3 spacing < %d (met3.2)"
  area allm3,obsm3 240000 300 "Metal3 minimum area < %a (met3.6)"
 
  angles allm3 45 "Only 45 and 90 degree angles permitted on metal3 (x.3a)"
 
 variants (fast),(full)
- widespacing allm3 3005 allm3,obsm3  400 touching_ok \
+ widespacing allm3,m3fill 3005 allm3,obsm3  400 touching_ok \
 	"Metal3 > 3um spacing to unrelated m3 < %d (met3.3d)"
  widespacing obsm3 3005 allm3  400 touching_ok \
 	"Metal3 > 3um spacing to unrelated m3 < %d (met3.3d)"
@@ -5724,14 +5724,14 @@
 
 variants *
 
- width allm4 300 "Metal4 width < %d (met4.1)"
- spacing allm4  allm4,obsm4 300 touching_ok      "Metal4 spacing < %d (met4.2)"
+ width allm4,m4fill 300 "Metal4 width < %d (met4.1)"
+ spacing allm4  allm4,obsm4,m4fill 300 touching_ok      "Metal4 spacing < %d (met4.2)"
  area allm4,obsm4 240000 300 "Metal4 minimum area < %a (met4.4a)"
 
  angles allm4 45 "Only 45 and 90 degree angles permitted on metal4 (x.3a)"
 
 variants (fast),(full)
- widespacing allm4 3005 allm4,obsm4  400 touching_ok \
+ widespacing allm4,m4fill 3005 allm4,obsm4  400 touching_ok \
 	"Metal4 > 3um spacing to unrelated m4 < %d (met4.5b)"
  widespacing obsm4 3005 allm4  400 touching_ok \
 	"Metal4 > 3um spacing to unrelated m4 < %d (met4.5b)"
@@ -5755,8 +5755,8 @@
 # METAL5 - METAL5 Module
 #-----------------------------
 
- width allm5 1600 "Metal5 width < %d (met5.1)"
- spacing allm5  allm5,obsm5 1600 touching_ok "Metal5 spacing < %d (met5.2)"
+ width allm5,m5fill 1600 "Metal5 width < %d (met5.1)"
+ spacing allm5  allm5,obsm5,m5fill 1600 touching_ok "Metal5 spacing < %d (met5.2)"
  area allm5,obsm5 4000000 1600 "Metal5 minimum area < %a (met5.4)"
 
  angles allm5 45 "Only 45 and 90 degree angles permitted on metal5 (x.3a)"
@@ -5793,9 +5793,9 @@
  # Except:  Note that standard cells allow transistor width minimum 0.36um
  width pfetlvt 350 "LVT PMOS gate length < %d (poly.1b)"
 
- spacing allpolynonfet *nsd 55 corner_ok varactor \
+ spacing allpolynonfet,polyfill *nsd 55 corner_ok varactor \
 	"poly spacing to diffusion tap < %d (poly.5)"
- spacing allpolynonfet *mvnsd 55 corner_ok mvvaractor \
+ spacing allpolynonfet,polyfill *mvnsd 55 corner_ok mvvaractor \
 	"poly spacing to diffusion tap < %d (poly.5)"
 
  edge4way *psd *ndiff 300 ~(nfet,npass,npd,scnfet,nfetlvt,nsonos)/a *psd 300 \
@@ -6093,21 +6093,28 @@
  height	dnwell 	    -0.1    0.1
  height	nwell,pwell  0.0    0.2062
  height alldiff	     0.2062 0.12
+ height fomfill	     0.2062 0.12
  height allpoly	     0.3262 0.18
+ height polyfill     0.3262 0.18
  height alldiffcont  0.3262 0.61
  height pc	     0.5062 0.43
  height allli	     0.9361 0.10
  height lic	     1.0361 0.34
  height allm1	     1.3761 0.36
+ height m1fill	     1.3761 0.36
  height v1	     1.7361 0.27
  height allm2	     2.0061 0.36
+ height m2fill	     1.3761 0.36
  height v2	     2.3661 0.42
  height allm3	     2.7861 0.845
+ height m3fill	     1.3761 0.36
 #ifdef METAL5
  height v3	     3.6311 0.39
  height allm4	     4.0211 0.845
+ height m4fill	     1.3761 0.36
  height v4	     4.8661 0.505
  height allm5	     5.3711 1.26
+ height m5fill	     1.3761 0.36
  height mimcap	     2.4661 0.2
  height mimcap2	     3.7311 0.2
  height mimcc	     2.6661 0.12
@@ -6679,6 +6686,14 @@
   style pnm
      default
      draw fillblock no_color_at_all
+     draw fillblock4 no_color_at_all
+     draw fomfill no_color_at_all
+     draw polyfill no_color_at_all
+     draw m1fill no_color_at_all
+     draw m2fill no_color_at_all
+     draw m3fill no_color_at_all
+     draw m4fill no_color_at_all
+     draw m5fill no_color_at_all
      draw nwell cwell
 end