Changed seal ring generator to round up widths on layouts with odd-numbered lambda
units;  rounding down causes a tiny gap in the middle of the seal ring edges.
Added angle restriction rules to the magic techfile.
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index e9b77dd..bc95751 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -5118,8 +5118,10 @@
 	"MV P-Diffusion to MV N-tap spacing < %d across butted junction (nsd.5a)"
 
  # Sandwiched butting junction restrictions
- edge4way (*pdiff)/a (*nsd)/a 400 ~(*pdiff)/a 0 0 "NSDM width < %d (diff/tap.5)
- edge4way (*ndiff)/a (*psd)/a 400 ~(*ndiff)/a 0 0 "PSDM width < %d (diff/tap.5)
+ edge4way (*pdiff)/a (*nsd)/a 400 ~(*pdiff)/a 0 0 "NSDM width < %d (diff/tap.5)"
+ edge4way (*ndiff)/a (*psd)/a 400 ~(*ndiff)/a 0 0 "PSDM width < %d (diff/tap.5)"
+
+ angles allactive 90 "Only 90 degree angles permitted on diff and tap (x.2)"
 
  variants (full)
 
@@ -5166,6 +5168,8 @@
  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)"
+
 #--------------------------------------------------------------------
 # HVTP
 #--------------------------------------------------------------------
@@ -5310,8 +5314,7 @@
  surround pc/a *poly,mrp1,xhrpoly,uhrpoly 80 directional \
 	"poly overlap of poly contact < %d in one direction (licon.8a)"
 
- exact_overlap ndc/a,pdc/a,psc/a,nsc/a,pc/a,ndic/a,pdic/a
- exact_overlap mvndc/a,mvpdc/a,mvpsc/a,mvnsc/a,mvndic/a,mvpdic/a
+ exact_overlap (allcont)/a
 
 #-------------------------------------------------------------
 # LI - Local interconnect layer
@@ -5334,6 +5337,8 @@
 
  area allli,*obsli 56100 170 "Local interconnect minimum area < %a (li.6)"
 
+ angles allli 90 "Only 90 degree angles permitted on local interconnect (x.2)"
+
 #-------------------------------------------------------------
 # MCON - Contact between local interconnect and metal1
 #-------------------------------------------------------------
@@ -5341,7 +5346,7 @@
  width lic/m1 170 "mcon.width < %d (mcon.1)"
  spacing lic/m1 lic/m1,obslic/m1 190 touching_ok "mcon.spacing < %d (mcon.2)"
 
- exact_overlap lic/m1
+ exact_overlap lic/li
 
 #-------------------------------------------------------------
 # METAL1 -
@@ -5356,6 +5361,8 @@
  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)"
+
 variants (fast),(full)
  widespacing allm1 3000 allm1,*obsm1 280 touching_ok \
 	"Metal1 > 3um spacing to unrelated m1 < %d (met1.3b)"
@@ -5381,7 +5388,7 @@
  surround v1/m2 *m2 30 directional \
 	"Metal2 overlap of Via1 < %d in one direction (met2.5 - met2.4)"
 
- exact_overlap v1/m2
+ exact_overlap v1/m1
 
 #--------------------------------------------------
 # METAL2 - 
@@ -5391,6 +5398,8 @@
  spacing allm2  allm2,obsm2 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 3000 allm2,obsm2  280 touching_ok \
 	"Metal2 > 3um spacing to unrelated m2 < %d (met2.3b)"
@@ -5427,6 +5436,8 @@
  spacing allm3 allm3,obsm3  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 3000 allm3,obsm3  400 touching_ok \
 	"Metal3 > 3um spacing to unrelated m3 < %d (met3.3d)"
@@ -5462,6 +5473,8 @@
  spacing allm4  allm4,obsm4 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 3000 allm4,obsm4  400 touching_ok \
 	"Metal4 > 3um spacing to unrelated m4 < %d (met4.5b)"
@@ -5490,6 +5503,8 @@
  spacing allm5  allm5,obsm5 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)"
+
 #define METAL5
 #endif (METAL5)