Corrected the parasitic capacitance tables in the magic techfile to
account for deep nwell to substrate, and shielding of fringing
capacitance from poly and all metal layers to substrate by nwell
and pwell, which was missing. The missing shielding caused nodes
to have coupling capacitance to substrate even when they were
shielded from substrate (the plate area capacitance was calculated
correctly, but the fringing capacitance can be large).
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index 7bad45a..8ff3a5f 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -5206,9 +5206,13 @@
# should be split between the two terminals. Unsure of the correct model.
#-------------------------------------------------------------------------
+#deep n-well
+defaultareacap dnwell dwell 120
+
#n-well
# NOTE: This value not found in PEX files
defaultareacap nwell well 120
+defaultoverlap nwell well dnwell dwell 0
#n-active
# Rely on device models to capture *ndiff area cap
@@ -5231,12 +5235,14 @@
defaultsidewall *poly active 23
defaultareacap *poly active nwell,obswell,pwell well 106
defaultperimeter *poly active nwell,obswell,pwell well 55
+ defaultsideoverlap *poly active nwell,obswell,pwell well 55
#locali
defaultsidewall allli locali 33
defaultareacap allli locali nwell,obswell,pwell well 37
defaultperimeter allli locali nwell,obswell,pwell well 55
- defaultoverlap allli locali nwell well 37
+ defaultoverlap allli locali nwell,obswell,pwell well 37
+ defaultsideoverlap allli locali nwell,obswell,pwell well 55
#locali->diff
defaultoverlap allli locali allactivenonfet active 37
@@ -5251,7 +5257,8 @@
defaultsidewall allm1 metal1 45
defaultareacap allm1 metal1 nwell,obswell,pwell well 26
defaultperimeter allm1 metal1 nwell,obswell,pwell well 41
- defaultoverlap allm1 metal1 nwell well 26
+ defaultoverlap allm1 metal1 nwell,obswell,pwell well 26
+ defaultsideoverlap allm1 metal1 nwell,obswell,pwell well 41
#metal1->diff
defaultoverlap allm1 metal1 allactivenonfet active 26
@@ -5275,7 +5282,8 @@
defaultsidewall allm2 metal2 50
defaultareacap allm2 metal2 nwell,obswell,pwell well 17
defaultperimeter allm2 metal2 nwell,obswell,pwell well 41
- defaultoverlap allm2 metal2 nwell well 38
+ defaultoverlap allm2 metal2 nwell,obswell,pwell well 38
+ defaultsideoverlap allm2 metal2 nwell,obswell,pwell well 41
#metal2->diff
defaultoverlap allm2 metal2 allactivenonfet active 17
@@ -5298,9 +5306,10 @@
#metal3
defaultsidewall allm3 metal3 63
- defaultoverlap allm3 metal3 nwell well 12
defaultareacap allm3 metal3 nwell,obswell,pwell well 12
defaultperimeter allm3 metal3 nwell,obswell,pwell well 41
+ defaultoverlap allm3 metal3 nwell,obswell,pwell well 12
+ defaultsideoverlap allm3 metal3 nwell,obswell,pwell well 41
#metal3->diff
defaultoverlap allm3 metal3 allactive active 12
@@ -5331,8 +5340,9 @@
defaultsidewall allm4 metal4 67
# defaultareacap alltopm metal4 well 6
areacap allm4/m4 8
- defaultoverlap allm4 metal4 nwell well 8
- defaultperimeter allm4 metal4 well 37
+ defaultperimeter allm4 metal4 nwell,obswell,pwell well 37
+ defaultoverlap allm4 metal4 nwell,obswell,pwell well 8
+ defaultsideoverlap allm4 metal4 nwell,obswell,pwell well 37
#metal4->diff
defaultoverlap allm4 metal4 allactivenonfet active 8
@@ -5367,8 +5377,9 @@
defaultsidewall allm5 metal5 127
# defaultareacap allm5 metal5 well 6
areacap allm5/m5 6
- defaultoverlap allm5 metal5 nwell well 6
- defaultperimeter allm5 metal5 well 39
+ defaultoverlap allm5 metal5 nwell,obswell,pwell well 6
+ defaultperimeter allm5 metal5 nwell,obswell,pwell well 39
+ defaultsideoverlap allm5 metal5 nwell,obswell,pwell well 39
#metal5->diff
defaultoverlap allm5 metal5 allactivenonfet active 6