Significant improvements to primitives sky130_fd_pr version 0.20.0.

This commit contains major improvements to all files by regenerating
from original data, improving consistency and automated cross checking
of data.

These improvements should drastically reduce customer confusion when
using the library and further reduce future possibility for human errors to
creep into designs.

Notable improvements include;

 * A large number of files have been regenerated from original source
   data (compared to previous hand created versions).

 * Catalog and other library aggregations are now automatically
   generated from library contents (compared to previous hand created
   versions).

 * Significant improvements to documentation for all cells and models,
   including producing graphical representations, verified metadata and
   descriptions.

 * Names have been cross referenced between file types (such as
   simulation, layout, schematic and timing) and now verified to match.

 * Names have been improved to fix a standard format across all supported
   libraries and PDK contents.

 * Significant improvements to the contents of text files through improving
   consistent style that has been automatically checked.

 * Simplified spice files for usage with open tools.

 * Too many numerous other changes to list here.

Signed-off-by: Kevin Kelley <kevin.kelley@skywatertechnology.com>
Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
diff --git a/cells/res_generic_nd/sky130_fd_pr__res_generic_nd.model.spice b/cells/res_generic_nd/sky130_fd_pr__res_generic_nd.model.spice
new file mode 100644
index 0000000..b0474c5
--- /dev/null
+++ b/cells/res_generic_nd/sky130_fd_pr__res_generic_nd.model.spice
@@ -0,0 +1,21 @@
+* Copyright 2020 The SkyWater PDK Authors
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     https://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+
+* SKY130 Spice File.
+.subckt  sky130_fd_pr__res_generic_nd t1 t2 b
++ w=1 l=1
+r0 t1 t2 sky130_fd_pr__res_generic_nd w = {w} l = {l}
+d0 b t1 sky130_fd_pr__diode_pw2nd_05v5 area = 'w*l*0.5' pj = 'w+l'
+d1 b t2 sky130_fd_pr__diode_pw2nd_05v5 area = 'w*l*0.5' pj = 'w+l'
+.ends sky130_fd_pr__res_generic_nd
diff --git a/cells/res_generic_pd/sky130_fd_pr__res_generic_pd.model.spice b/cells/res_generic_pd/sky130_fd_pr__res_generic_pd.model.spice
new file mode 100644
index 0000000..2a36824
--- /dev/null
+++ b/cells/res_generic_pd/sky130_fd_pr__res_generic_pd.model.spice
@@ -0,0 +1,21 @@
+* Copyright 2020 The SkyWater PDK Authors
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     https://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+
+* SKY130 Spice File.
+.subckt  sky130_fd_pr__res_generic_pd t1 t2 b
++ w=1 l=1
+r0 t1 t2 sky130_fd_pr__res_generic_pd w = {w} l = {l}
+d0 t1 b sky130_fd_pr__model__parasitic__diode_ps2nw area = 'w*l*0.5' pj = 'w+l'
+d1 t2 b sky130_fd_pr__model__parasitic__diode_ps2nw area = 'w*l*0.5' pj = 'w+l'
+.ends sky130_fd_pr__res_generic_pd
diff --git a/cells/res_high_po/sky130_fd_pr__res_high_po.model.spice b/cells/res_high_po/sky130_fd_pr__res_high_po.model.spice
index 6652ae1..600a007 100644
--- a/cells/res_high_po/sky130_fd_pr__res_high_po.model.spice
+++ b/cells/res_high_po/sky130_fd_pr__res_high_po.model.spice
@@ -16,8 +16,12 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
-.subckt  sky130_fd_pr__res_high_po r0 r1
+.subckt  sky130_fd_pr__res_high_po r0 r1 b
 + w=1 l=1
 .param  mult = 1.0
 + rsheet = 317.3885
@@ -30,8 +34,21 @@
 + rbody_match = {body_pelgrom/sqrt(w*l*mult)*sky130_fd_pr__res_high_po__slope_spectre}
 + rend_match = {head_pelgrom/sqrt((w+0.525)*num_con_row*mult)*sky130_fd_pr__res_high_po__con_slope_spectre}
 + weff = {w+rbody_dw-0.0672*max(0.69-w,0)}
-+ rbody = {rsheet*(l+0.247)/weff*(1+rbody_match)}
-+ rhead = {rhead_ps/(weff+0.1558)*(1+rend_match)}
-rbody r0 rb  r = {rbody*(1+v(r0,r1))}
-rhead rb r1  r = {rhead}
++ leff = {l+0.247}
++ res_match = {(body_pelgrom/sqrt(w*l*mult))*sky130_fd_pr__res_high_po__slope_spectre}
+rhead r0 rb rhead_model w = {weff+0.1558} l = 1.0
+rbody rb r1 rbody_model w = {weff} l = {leff}
+xc0 r0 r1 b sky130_fd_pr__model__parasitic__res_po w = {w} l = {l}
+.model rhead_model r sw_et=0 isnoisy=0
++ rsh = {345.8312*(1+sky130_fd_pr__res_high_po__var)*(1+rend_match)}
++ p2 = {-80.87e-3/cosh(6.34e-3*weff*weff)*(1-exp(-1.554/leff))}
++ q2 = {10.13/cosh(0.0898*weff*weff)}
++ tc1 = -4.3e-4 tc2 = 12e-6 tnom = 30.0
+.model rbody_model r sw_et=0 isnoisy=0
++ rsh = {rsheet*(1+sky130_fd_pr__res_high_po__var)*(1+res_match)}
++ p2 = {(w>0.6)?130.8e3*(1-exp(-1.818e-3*leff/weff))-867.4/weff+2236*weff/leff:300*(1-exp(-0.1124*leff/weff))+304.8*weff/leff}
++ q2 = {(w>0.6)?6.11*(1-exp(-852.8e-6*leff/weff))+1.375e-3*weff:0.5*0.3155*(1-exp(-0.05518*leff/weff))+1.19E-05*weff}
++ p3 = {(w>0.6)?380.3*weff/leff:0}
++ q3 = {(w>0.6)?42.62e-3*weff/leff:0}
++ tc1 = {tc1rpolybody} tc2 = {tc2rpolybody} tnom = 30.0
 .ends sky130_fd_pr__res_high_po
diff --git a/cells/res_high_po/sky130_fd_pr__res_high_po_0p35.model.spice b/cells/res_high_po/sky130_fd_pr__res_high_po_0p35.model.spice
index 2e981f1..097a848 100644
--- a/cells/res_high_po/sky130_fd_pr__res_high_po_0p35.model.spice
+++ b/cells/res_high_po/sky130_fd_pr__res_high_po_0p35.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_high_po_0p35 r0 r1 b
 + 
diff --git a/cells/res_high_po/sky130_fd_pr__res_high_po_0p69.model.spice b/cells/res_high_po/sky130_fd_pr__res_high_po_0p69.model.spice
index a823c27..4051622 100644
--- a/cells/res_high_po/sky130_fd_pr__res_high_po_0p69.model.spice
+++ b/cells/res_high_po/sky130_fd_pr__res_high_po_0p69.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_high_po_0p69 r0 r1 b
 + 
diff --git a/cells/res_high_po/sky130_fd_pr__res_high_po_1p41.model.spice b/cells/res_high_po/sky130_fd_pr__res_high_po_1p41.model.spice
index bafca03..5249b91 100644
--- a/cells/res_high_po/sky130_fd_pr__res_high_po_1p41.model.spice
+++ b/cells/res_high_po/sky130_fd_pr__res_high_po_1p41.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_high_po_1p41 r0 r1 b
 + 
diff --git a/cells/res_high_po/sky130_fd_pr__res_high_po_2p85.model.spice b/cells/res_high_po/sky130_fd_pr__res_high_po_2p85.model.spice
index aadba5a..ee9382c 100644
--- a/cells/res_high_po/sky130_fd_pr__res_high_po_2p85.model.spice
+++ b/cells/res_high_po/sky130_fd_pr__res_high_po_2p85.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_high_po_2p85 r0 r1 b
 + 
diff --git a/cells/res_high_po/sky130_fd_pr__res_high_po_5p73.model.spice b/cells/res_high_po/sky130_fd_pr__res_high_po_5p73.model.spice
index d5a8c17..f182d09 100644
--- a/cells/res_high_po/sky130_fd_pr__res_high_po_5p73.model.spice
+++ b/cells/res_high_po/sky130_fd_pr__res_high_po_5p73.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_high_po_5p73 r0 r1 b
 + 
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po.model.spice
new file mode 100644
index 0000000..4314abd
--- /dev/null
+++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po.model.spice
@@ -0,0 +1,56 @@
+* Copyright 2020 The SkyWater PDK Authors
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     https://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+
+* SKY130 Spice File.
+* statistics {
+* 	mismatch {
+*     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
+* }
+.subckt  sky130_fd_pr__res_xhigh_po r0 r1 sub
++ w=1 l=1
+.param  mult = 1.0
++ rsheet = 2000.0
++ rend_mm = {0.0472/sqrt(w)}
++ leff = {l-0.0592}
++ weff = {w-0.056}
+* $  Resistor voltco fitting parameters
++ bp2 = -0.1228
++ bq2 = 1.304
++ bp22 = -0.2874
++ bp23 = 0.5252
+* $  Substrate voltco fitting parameters
++ sub1 = 1.2
++ sub2 = 41.26e-3
++ sub3 = 8.697e-3
++ sub4 = 24.0
++ sub5 = 39.86
++ body_pelgrom = 0.0347
++ res_match = {(body_pelgrom/sqrt(w*l*mult))*sky130_fd_pr__res_high_po__slope_spectre}
++ rhead0 = {188.2/(weff-0.0672*max(0.69-w,0)+1.41)}
++ rbody0 = {rsheet*leff/(weff-0.0672*max(0.69-w,0))}
++ rhead = {rhead0*(1+sky130_fd_pr__res_xhigh_po__var_mult)*(1+rend_mm/sqrt(mult)*sky130_fd_pr__res_high_po__con_slope_spectre)}
++ rbody = {rbody0*(1+sky130_fd_pr__res_xhigh_po__var_mult)*(1+res_match)}
++ Efac = {1/leff*(1+bp22/w+bp23*min(0.2,leff-0.5)*log(leff/w))}
+rend1 r0 t1 reshead r = {rhead}
+rend2 t2 r1 reshead r = {rhead}
+xc0 r0 r1 sub sky130_fd_pr__model__parasitic__res_po w = {w} l = {l}
+rbody t1 t2 resbody r = {rbody*(1-bp2+bp2*sqrt(1+(bq2*abs(v(t1,t2))*Efac)**2))*
++ (sub1+sub2*tanh(sub3*(min(v(r0,sub)+v(r1,sub),sub4)+sub5))) / (sub1+sub2*tanh(sub3*sub5)) }
+.model resbody r tc1 = {-1.47e-3-5e-7*sky130_fd_pr__res_xhigh_po__var_mult*rsheet} tc2 = 2.7e-6 tnom = 25.0
+.model reshead r tc1 = -4.3e-4 tc2 = -1.3e-5 tnom = 25.0
+.ends sky130_fd_pr__res_xhigh_po
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p35.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p35.model.spice
index 7de8040..ae6c399 100644
--- a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p35.model.spice
+++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p35.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_xhigh_po_0p35 r0 r1 b
 + 
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p69.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p69.model.spice
index 6e62c24..3656a47 100644
--- a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p69.model.spice
+++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p69.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_xhigh_po_0p69 r0 r1 b
 + 
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_1p41.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_1p41.model.spice
index 5789252..1c5a5f7 100644
--- a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_1p41.model.spice
+++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_1p41.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_xhigh_po_1p41 r0 r1 b
 + 
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_2p85.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_2p85.model.spice
index f1db674..a5bb5f0 100644
--- a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_2p85.model.spice
+++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_2p85.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_xhigh_po_2p85 r0 r1 b
 + 
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_5p73.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_5p73.model.spice
index 8cfb799..dacbe44 100644
--- a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_5p73.model.spice
+++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_5p73.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_xhigh_po_5p73 r0 r1 b
 + 
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po__base.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po__base.model.spice
index 9a27020..2054731 100644
--- a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po__base.model.spice
+++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po__base.model.spice
@@ -16,6 +16,10 @@
 * statistics {
 * 	mismatch {
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
 .subckt  sky130_fd_pr__res_xhigh_po__base r1 r2 b
 + 
diff --git a/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_b.pm3.spice b/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_b.pm3.spice
index 20e3cff..6066607 100644
--- a/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_b.pm3.spice
+++ b/cells/rf_nfet_01v8/sky130_fd_pr__rf_nfet_01v8_b.pm3.spice
@@ -785,7 +785,7 @@
 .ends sky130_fd_pr__rf_nfet_01v8_bM02
 .subckt  sky130_fd_pr__rf_nfet_01v8_bM02W3p00 d g s b
 + 
-.param  l = 1 w = 3.01 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_nfet_01v8_bM02W3p00 d g s b sky130_fd_pr__rf_nfet_01v8_bM02__model l = {l} w = 3.01 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_nfet_01v8_bM02__model.3 nmos
 * DC IV MOS Parameters
@@ -1543,7 +1543,7 @@
 .ends sky130_fd_pr__rf_nfet_01v8_bM02W3p00
 .subckt  sky130_fd_pr__rf_nfet_01v8_bM02W5p00 d g s b
 + 
-.param  l = 1 w = 5.05 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_nfet_01v8_bM02W5p00 d g s b sky130_fd_pr__rf_nfet_01v8_bM02__model l = {l} w = 5.05 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_nfet_01v8_bM02__model.6 nmos
 * DC IV MOS Parameters
@@ -3059,7 +3059,7 @@
 .ends sky130_fd_pr__rf_nfet_01v8_bM04
 .subckt  sky130_fd_pr__rf_nfet_01v8_bM04W3p00 d g s b
 + 
-.param  l = 1 w = 3.01 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_nfet_01v8_bM04W3p00 d g s b sky130_fd_pr__rf_nfet_01v8_bM04__model l = {l} w = 3.01 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_nfet_01v8_bM04__model.3 nmos
 * DC IV MOS Parameters
@@ -3817,7 +3817,7 @@
 .ends sky130_fd_pr__rf_nfet_01v8_bM04W3p00
 .subckt  sky130_fd_pr__rf_nfet_01v8_bM04W5p00 d g s b
 + 
-.param  l = 1 w = 5.05 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_nfet_01v8_bM04W5p00 d g s b sky130_fd_pr__rf_nfet_01v8_bM04__model l = {l} w = 5.05 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_nfet_01v8_bM04__model.6 nmos
 * DC IV MOS Parameters
diff --git a/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_b.pm3.spice b/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_b.pm3.spice
index 31696f0..bf316dc 100644
--- a/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_b.pm3.spice
+++ b/cells/rf_nfet_g5v0d10v5/sky130_fd_pr__rf_nfet_g5v0d10v5_b.pm3.spice
@@ -284,7 +284,7 @@
 .ends sky130_fd_pr__rf_nfet_g5v0d10v5_bM02
 .subckt  sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00 d g s b
 + 
-.param  l = 1 w = 5.05 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00 d g s b sky130_fd_pr__rf_nfet_g5v0d10v5_bM02__model l = {l} w = 5.05 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_nfet_g5v0d10v5_bM02__model.1 nmos
 * DC IV MOS Parameters
@@ -798,7 +798,7 @@
 .ends sky130_fd_pr__rf_nfet_g5v0d10v5_bM04
 .subckt  sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00 d g s b
 + 
-.param  l = 1 w = 5.05 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00 d g s b sky130_fd_pr__rf_nfet_g5v0d10v5_bM04__model l = {l} w = 5.05 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_nfet_g5v0d10v5_bM04__model.1 nmos
 * DC IV MOS Parameters
@@ -1055,7 +1055,7 @@
 .ends sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00
 .subckt  sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00 d g s b
 + 
-.param  l = 1 w = 7.09 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00 d g s b sky130_fd_pr__rf_nfet_g5v0d10v5_bM04__model l = {l} w = 7.09 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_nfet_g5v0d10v5_bM04__model.2 nmos
 * DC IV MOS Parameters
@@ -1569,7 +1569,7 @@
 .ends sky130_fd_pr__rf_nfet_g5v0d10v5_bM10
 .subckt  sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00 d g s b
 + 
-.param  l = 1 w = 5.05 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00 d g s b sky130_fd_pr__rf_nfet_g5v0d10v5_bM10__model l = {l} w = 5.05 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_nfet_g5v0d10v5_bM10__model.1 nmos
 * DC IV MOS Parameters
@@ -1826,7 +1826,7 @@
 .ends sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00
 .subckt  sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00 d g s b
 + 
-.param  l = 1 w = 7.09 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00 d g s b sky130_fd_pr__rf_nfet_g5v0d10v5_bM10__model l = {l} w = 7.09 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_nfet_g5v0d10v5_bM10__model.2 nmos
 * DC IV MOS Parameters
diff --git a/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_b.pm3.spice b/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_b.pm3.spice
index adefbbd..ff41605 100644
--- a/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_b.pm3.spice
+++ b/cells/rf_pfet_01v8/sky130_fd_pr__rf_pfet_01v8_b.pm3.spice
@@ -757,7 +757,7 @@
 .ends sky130_fd_pr__rf_pfet_01v8_bM02
 .subckt  sky130_fd_pr__rf_pfet_01v8_bM02W3p00 d g s b
 + 
-.param  l = 1 w = 3.01 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_pfet_01v8_bM02W3p00 d g s b sky130_fd_pr__rf_pfet_01v8_bM02__model l = {l} w = 3.01 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_pfet_01v8_bM02__model.3 pmos
 * DC IV MOS Parameters
@@ -1485,7 +1485,7 @@
 .ends sky130_fd_pr__rf_pfet_01v8_bM02W3p00
 .subckt  sky130_fd_pr__rf_pfet_01v8_bM02W5p00 d g s b
 + 
-.param  l = 1 w = 5.05 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_pfet_01v8_bM02W5p00 d g s b sky130_fd_pr__rf_pfet_01v8_bM02__model l = {l} w = 5.05 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_pfet_01v8_bM02__model.6 pmos
 * DC IV MOS Parameters
@@ -2941,7 +2941,7 @@
 .ends sky130_fd_pr__rf_pfet_01v8_bM04
 .subckt  sky130_fd_pr__rf_pfet_01v8_bM04W3p00 d g s b
 + 
-.param  l = 1 w = 3.01 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_pfet_01v8_bM04W3p00 d g s b sky130_fd_pr__rf_pfet_01v8_bM04__model l = {l} w = 3.01 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_pfet_01v8_bM04__model.3 pmos
 * DC IV MOS Parameters
@@ -3669,7 +3669,7 @@
 .ends sky130_fd_pr__rf_pfet_01v8_bM04W3p00
 .subckt  sky130_fd_pr__rf_pfet_01v8_bM04W5p00 d g s b
 + 
-.param  l = 1 w = 5.05 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
+.param  l = 1 ad = 0 as = 0 pd = 0 ps = 0 nrd = 0 nrs = 0 sa = 0 sb = 0 sd = 0 mult = 1 nf = 1.0
 msky130_fd_pr__rf_pfet_01v8_bM04W5p00 d g s b sky130_fd_pr__rf_pfet_01v8_bM04__model l = {l} w = 5.05 ad = {ad} as = {as} pd = {pd} ps = {ps} nrd = {nrd} nrs = {nrs} sa = {sa} sb = {sb} sd = {sd} nf = {nf}
 .model sky130_fd_pr__rf_pfet_01v8_bM04__model.6 pmos
 * DC IV MOS Parameters
diff --git a/models/parameters/montecarlo.spice b/models/parameters/montecarlo.spice
index 5d5e676..c8d42a7 100644
--- a/models/parameters/montecarlo.spice
+++ b/models/parameters/montecarlo.spice
@@ -379,6 +379,8 @@
 + sky130_fd_pr__special_nfet_pass_flash__vth0_diff_1 = '-3.54442e-03*lvn_threshold*lvn_threshold+4.54875e-02*lvn_threshold+-5.70930e-03'
 + sky130_fd_pr__special_nfet_pass_flash__wint_diff = '5.63000e-09*diff_cd'
 + sky130_fd_pr__res_high_po__var_mult = '1.25000e+00*ic_res'
++ sky130_fd_pr__res_high_po__var = '1.25000e+00*ic_res'
++ sky130_fd_pr__res_xhigh_po__var_mult = '1.25000e+00*ic_res'
 + mcl1d_ca_w_0_170_s_0_180 = '-5.50000e-07*ic_cap*ic_cap+-3.00000e-07*ic_cap+5.53000e-05'
 + mcl1d_ca_w_0_170_s_0_225 = '-5.50000e-07*ic_cap*ic_cap+-3.00000e-07*ic_cap+5.53000e-05'
 + mcl1d_ca_w_0_170_s_0_270 = '-5.50000e-07*ic_cap*ic_cap+-3.00000e-07*ic_cap+5.53000e-05'
diff --git a/models/parasitics/sky130_fd_pr__model__parasitic__res_po.model.spice b/models/parasitics/sky130_fd_pr__model__parasitic__res_po.model.spice
new file mode 100644
index 0000000..8de731a
--- /dev/null
+++ b/models/parasitics/sky130_fd_pr__model__parasitic__res_po.model.spice
@@ -0,0 +1,28 @@
+* Copyright 2020 The SkyWater PDK Authors
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     https://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+
+* SKY130 Spice File.
+* statistics {
+* 	mismatch {
+*     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
+* }
+.subckt  sky130_fd_pr__model__parasitic__res_po r0 r1 sub
++ w=1 l=1
+c0 r0 sub  c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_1_1*1e-6)/2}
+c1 r1 sub  c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_1_1*1e-6)/2}
+.ends sky130_fd_pr__model__parasitic__res_po
diff --git a/models/r+c/res_high__cap_high__lin.spice b/models/r+c/res_high__cap_high__lin.spice
index ac4d220..93c7aa2 100644
--- a/models/r+c/res_high__cap_high__lin.spice
+++ b/models/r+c/res_high__cap_high__lin.spice
@@ -2,6 +2,8 @@
 *  P+ Poly Preres Corner Parameters
 .param
 + sky130_fd_pr__res_high_po__var_mult = 5.0
++ sky130_fd_pr__res_high_po__var = 0.125
++ sky130_fd_pr__res_xhigh_po__var_mult = 0.15
 + camimc=  2.231e-15  $ Units: farad/micrometer^2
 + cpmimc = 0.35e-15 $ Units: farad/micrometer
 + cvpp_cor = 1.136
diff --git a/models/r+c/res_high__cap_low__lin.spice b/models/r+c/res_high__cap_low__lin.spice
index 81e9654..6c1f87c 100644
--- a/models/r+c/res_high__cap_low__lin.spice
+++ b/models/r+c/res_high__cap_low__lin.spice
@@ -2,6 +2,8 @@
 *  P+ Poly Preres Corner Parameters
 .param
 + sky130_fd_pr__res_high_po__var_mult = 5.0
++ sky130_fd_pr__res_high_po__var = 0.125
++ sky130_fd_pr__res_xhigh_po__var_mult = 0.15
 + camimc=  1.778e-15  $ Units: farad/micrometer^2
 + cpmimc = 0.03e-15 $ Units: farad/micrometer
 + cvpp_cor = 0.862
diff --git a/models/r+c/res_low__cap_high__lin.spice b/models/r+c/res_low__cap_high__lin.spice
index 14d4544..a412063 100644
--- a/models/r+c/res_low__cap_high__lin.spice
+++ b/models/r+c/res_low__cap_high__lin.spice
@@ -2,6 +2,8 @@
 *  P+ Poly Preres Corner Parameters
 .param
 + sky130_fd_pr__res_high_po__var_mult = -5.0
++ sky130_fd_pr__res_high_po__var = -0.125
++ sky130_fd_pr__res_xhigh_po__var_mult = -0.15
 + camimc=  2.231e-15  $ Units: farad/micrometer^2
 + cpmimc = 0.35e-15 $ Units: farad/micrometer
 + cvpp_cor = 1.136
diff --git a/models/r+c/res_low__cap_low__lin.spice b/models/r+c/res_low__cap_low__lin.spice
index 2cc43ab..fd186b4 100644
--- a/models/r+c/res_low__cap_low__lin.spice
+++ b/models/r+c/res_low__cap_low__lin.spice
@@ -2,6 +2,8 @@
 *  P+ Poly Preres Corner Parameters
 .param
 + sky130_fd_pr__res_high_po__var_mult = -5.0
++ sky130_fd_pr__res_high_po__var = -0.125
++ sky130_fd_pr__res_xhigh_po__var_mult = -0.15
 + camimc=  1.778e-15  $ Units: farad/micrometer^2
 + cpmimc = 0.03e-15 $ Units: farad/micrometer
 + cvpp_cor = 0.862
diff --git a/models/r+c/res_typical__cap_typical__lin.spice b/models/r+c/res_typical__cap_typical__lin.spice
index 60acb93..d5880f0 100644
--- a/models/r+c/res_typical__cap_typical__lin.spice
+++ b/models/r+c/res_typical__cap_typical__lin.spice
@@ -2,6 +2,8 @@
 *  P+ Poly Preres Corner Parameters
 .param
 + sky130_fd_pr__res_high_po__var_mult = 0.0
++ sky130_fd_pr__res_high_po__var = 0.0
++ sky130_fd_pr__res_xhigh_po__var_mult = 0.0
 + camimc=  2.00e-15  $ Units: farad/micrometer^2
 + cpmimc = 0.19e-15 $ Units: farad/micrometer
 + cvpp_cor = 1.00
diff --git a/models/sky130_fd_pr__model__linear.model.spice b/models/sky130_fd_pr__model__linear.model.spice
index c352622..9589fa4 100644
--- a/models/sky130_fd_pr__model__linear.model.spice
+++ b/models/sky130_fd_pr__model__linear.model.spice
@@ -20,7 +20,13 @@
 *   		vary  sky130_fd_pr__res_high_po__slope_spectre dist=gauss std=1.0
 * 		vary  sky130_fd_pr__res_high_po__con_slope_spectre dist=gauss std=1.0
 *     	}
+*         process {
+* 		vary sky130_fd_pr__res_xhigh_po__var_mult dist=gauss std=0.025
+* 		vary sky130_fd_pr__res_high_po__var       dist=gauss std=0.025
+*         }
 * }
+.include "parasitics/sky130_fd_pr__model__parasitic__res_po.model.spice"
+.include "../cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po.model.spice"
 .include "../cells/res_high_po/sky130_fd_pr__res_high_po.model.spice"
 .include "../cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p35.model.spice"
 .include "../cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p69.model.spice"
diff --git a/models/sky130_fd_pr__model__r+c.model.spice b/models/sky130_fd_pr__model__r+c.model.spice
index fa9ff0f..035e4a8 100644
--- a/models/sky130_fd_pr__model__r+c.model.spice
+++ b/models/sky130_fd_pr__model__r+c.model.spice
@@ -149,3 +149,5 @@
 .model mrcvia3 r tc1r = {tc1rvia3} tc2r = {tc2rvia3} res = {rcvia3} tref = 30.0
 .model mrcvia4 r tc1r = {tc1rvia4} tc2r = {tc2rvia4} res = {rcvia4} tref = 30.0
 .model mrcrdlcon r tc1r = {tc1rrdlcon} tc2r = {tc2rrdlcon} res = {rcrdlcon} tref = 25.0
+.include "../cells/res_generic_nd/sky130_fd_pr__res_generic_nd.model.spice"
+.include "../cells/res_generic_pd/sky130_fd_pr__res_generic_pd.model.spice"