| * SKY130 Spice File. |
| .param sky130_fd_pr__res_high_po__slope_spectre = 0.0 |
| .param sky130_fd_pr__res_high_po__con_slope_spectre = 0.0 |
| * statistics { |
| * mismatch { |
| * 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 |
| * } |
| * } |
| .subckt sky130_fd_pr__res_xhigh_po_0p35 r0 r1 b |
| + |
| .param w = 0.35 l = 5 mult = 1.0 |
| sky130_fd_pr__res_xhigh_po_0p35 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} |
| .ends sky130_fd_pr__res_xhigh_po_0p35 |
| .subckt sky130_fd_pr__res_xhigh_po_0p69 r0 r1 b |
| + |
| .param w = 0.69 l = 5 mult = 1.0 |
| sky130_fd_pr__res_xhigh_po_0p69 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} |
| .ends sky130_fd_pr__res_xhigh_po_0p69 |
| .subckt sky130_fd_pr__res_xhigh_po_1p41 r0 r1 b |
| + |
| .param w = 1.41 l = 5 mult = 1.0 |
| sky130_fd_pr__res_xhigh_po_1p41 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} |
| .ends sky130_fd_pr__res_xhigh_po_1p41 |
| .subckt sky130_fd_pr__res_xhigh_po_2p85 r0 r1 b |
| + |
| .param w = 2.85 l = 5 mult = 1.0 |
| sky130_fd_pr__res_xhigh_po_2p85 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} |
| .ends sky130_fd_pr__res_xhigh_po_2p85 |
| .subckt sky130_fd_pr__res_xhigh_po_5p73 r0 r1 b |
| + |
| .param w = 5.73 l = 5 mult = 1.0 |
| sky130_fd_pr__res_xhigh_po_5p73 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} |
| .ends sky130_fd_pr__res_xhigh_po_5p73 |
| .subckt sky130_fd_pr__res_xhigh_po__base r1 r2 b |
| + |
| + w=1 l=1 mult=1 |
| + |
| .param rsheet = 2000.0 |
| + vc1_body = -1.00e-3 |
| + vc2_body = -1.00e-4 |
| + vc1_raw_end = -2.02e-2 |
| + vc2_raw_end = 1.55e-1 |
| + vc3_raw_end = 4.61e-2 |
| + body_pelgrom = 0.0347 |
| + r0_var = {17.23/w+2.318} |
| + r1_var = {11.76/w} |
| + rcon = {-46.62/(w*w)+331.73/w+20.576} |
| + rend_mm = {0.0472/sqrt(w)} |
| + tc1_voltco = -7.1e-3 |
| + rend_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2)*r0_var} |
| + rtot_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2*pow(r0_var,2)+pow((r1_var*l),2))} |
| + res_match = {(body_pelgrom/sqrt(w*l*mult))*sky130_fd_pr__res_high_po__slope_spectre} |
| + rbody_var = {rtot_var-rend_var} |
| + rend = {(rcon+rend_var)*(1+rend_mm/sqrt(mult)*sky130_fd_pr__res_high_po__con_slope_spectre)} |
| + vc1_end = {vc1_raw_end/pwr(l,0.5)*(1+tc1_voltco*(temp-30))} |
| + vc2_end = {vc2_raw_end/pwr(l,0.5)*(1+tc1_voltco*(temp-30))} |
| + vc3_end = {vc3_raw_end/pwr(l,0.5)*(1+tc1_voltco*(temp-30))} |
| + rbody = {(l*rsheet+rbody_var)*(1+res_match)/w} |
| rbody ra r2 resbody r = {rbody*(1+abs(v(r1,r2))*vc1_body+abs(v(r1,r2))*abs(v(r1,r2))/(l*l)*vc2_body)} |
| rend r1 ra r = {rend*(1+vc1_raw_end*(1-exp(-abs(v(r2,r1))))} |
| + +=1 vc2_raw_end*(1=1 -=1 exp(-abs(v(r2,r1))))=1 *=1 (1=1 -=1 exp(-abs(v(r2,r1))))=1 )=1 |
| + +=1 vc3_raw_end*(1=1 -=1 exp(-abs(v(r2,r1))))=1 *=1 (1=1 -=1 exp(-abs(v(r2,r1))))=1 *=1 (1=1 -=1 exp(-abs(v(r2,r1))))=1 )=1 |
| c1 r2 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_1_1*1e-6)/2} |
| c2 r1 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_1_1*1e-6)/2} |
| .model resbody r tc1 = -1.47e-3 tc2 = 2.7e-6 tnom = 30.0 |
| .ends sky130_fd_pr__res_xhigh_po__base |
| .subckt sky130_fd_pr__res_high_po_0p35 r0 r1 b |
| + |
| .param w = 0.350 l = 5 mult = 1.0 |
| + |
| + body_pelgrom = 0.0347 |
| + rend_mm = 0.085 |
| + rcon = 589.99 |
| + rsheet = 1112.41 |
| + tc1_voltco = -7.1e-3 |
| + vc1_body = -8.46e-3 |
| + vc2_body = 1.97e-3 |
| + vc3_body = 3.30e-5 |
| + vc1_raw_end = -2.02e-2 |
| + vc2_raw_end = 1.55e-1 |
| + vc3_raw_end = 4.61e-2 |
| + r0_var = 50.97 |
| + r1_var = 34.74 |
| + vc1_end = {vc1_raw_end/pwr(l,0.5)*(1+tc1_voltco*(temp-30))} |
| + vc2_end = {vc2_raw_end/pwr(l,0.5)*(1+tc1_voltco*(temp-30))} |
| + vc3_end = {vc3_raw_end/pwr(l,0.5)*(1+tc1_voltco*(temp-30))} |
| + rtot_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2*pow(r0_var,2)+pow((r1_var*l),2))} |
| + rend_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2)*r0_var} |
| + rbody_var = {rtot_var-rend_var} |
| + res_match = {(body_pelgrom/sqrt(w*l*mult))*sky130_fd_pr__res_high_po__slope_spectre} |
| + rend = {(rcon+rend_var)*(1+rend_mm/sqrt(mult)*sky130_fd_pr__res_high_po__con_slope_spectre)} |
| + rbody = {(l*rsheet+rbody_var)*(1+res_match)} |
| rend r0 ra r = {rend*(1+min((abs(v(r0,r1))-1.7),0.3)*vc1_end+pow(min(abs(v(r0,r1))-1.7,0.3),2)*vc2_end+pow(min(abs(v(r0,r1))-1.7,0.3),3)*vc3_end)} |
| rhrpoly_0p35 ra r1 resbody r = {rbody*(1+abs(v(r0,r1))*vc1_body+pow(abs(v(r0,r1)),2)*vc2_body+pow(abs(v(r0,r1)),3)*vc3_body)} |
| c1 r0 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_1_1*1e-6)/2} |
| c2 r1 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_1_1*1e-6)/2} |
| .model resbody r tc1 = {tc1rpolybody} tc2 = {tc2rpolybody} tnom = 30.0 |
| .ends sky130_fd_pr__res_high_po_0p35 |
| .subckt sky130_fd_pr__res_high_po_0p69 r0 r1 b |
| + |
| .param w = 0.690 l = 5 mult = 1.0 |
| + |
| + body_pelgrom = 0.0317 |
| + rend_mm = 0.064 |
| + rcon = 389.90 |
| + rsheet = 491.36 |
| + tc1_voltco = -4.27e-3 |
| + vc1_body = 1.92e-4 |
| + vc2_body = 2.86e-4 |
| + vc3_body = 3.48e-5 |
| + vc1_raw_end = -3.90e-4 |
| + vc2_raw_end = 1.37e-1 |
| + vc3_raw_end = 4.52e-2 |
| + r0_var = 28.13 |
| + r1_var = 15.71 |
| + vc1_end = {vc1_raw_end/l*(1+tc1_voltco*(temp-30))} |
| + vc2_end = {vc2_raw_end/l*(1+tc1_voltco*(temp-30))} |
| + vc3_end = {vc3_raw_end/l*(1+tc1_voltco*(temp-30))} |
| + rtot_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2*pow(r0_var,2)+pow((r1_var*l),2))} |
| + rend_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2)*r0_var} |
| + rbody_var = {rtot_var-rend_var} |
| + res_match = {(body_pelgrom/sqrt(w*l*mult))*sky130_fd_pr__res_high_po__slope_spectre} |
| + rend = {(rcon+rend_var)*(1+rend_mm/sqrt(mult)*sky130_fd_pr__res_high_po__con_slope_spectre)} |
| + rbody = {(l*rsheet+rbody_var)*(1+res_match)} |
| rend r0 ra r = {rend*(1+min((abs(v(r0,r1))-1.7),0.3)*vc1_end+pow(min(abs(v(r0,r1))-1.7,0.3),2)*vc2_end+pow(min(abs(v(r0,r1))-1.7,0.3),3)*vc3_end)} |
| rhrpoly_0p69 ra r1 resbody r = {rbody*(1+abs(v(r0,r1))*vc1_body+pow(abs(v(r0,r1)),2)*vc2_body+pow(abs(v(r0,r1)),3)*vc3_body)} |
| c1 r0 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_2_1*1e-6)/2} |
| c2 r1 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_2_1*1e-6)/2} |
| .model resbody r tc1 = {tc1rpolybody} tc2 = {tc2rpolybody} tnom = 30.0 |
| .ends sky130_fd_pr__res_high_po_0p69 |
| .subckt sky130_fd_pr__res_high_po_1p41 r0 r1 b |
| + |
| .param w = 1.410 l = 5 mult = 1.0 |
| + |
| + body_pelgrom = 0.0354 |
| + rend_mm = 0.033 |
| + rcon = 254.77 |
| + rsheet = 230.05 |
| + tc1_voltco = -4.68e-3 |
| + vc1_body = -1.24e-4 |
| + vc2_body = 2.41e-4 |
| + vc1_raw_end = -7.62e-2 |
| + vc2_raw_end = 0.198 |
| + vc3_raw_end = 8.81e-2 |
| + r0_var = 15.43 |
| + r1_var = 6.96 |
| + vc1_end = {vc1_raw_end*0.705/l*(1+tc1_voltco*(temp-30))} |
| + vc2_end = {vc2_raw_end*0.705/l*(1+tc1_voltco*(temp-30))} |
| + vc3_end = {vc3_raw_end*0.705/l*(1+tc1_voltco*(temp-30))} |
| + rtot_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2*pow(r0_var,2)+pow((r1_var*l),2))/m} |
| + rend_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2)*r0_var/m} |
| + rbody_var = {rtot_var-rend_var} |
| + res_match = {(body_pelgrom/sqrt(w*l*mult))*sky130_fd_pr__res_high_po__slope_spectre} |
| + rend = {(rcon+rend_var)*(1+rend_mm/sqrt(mult)*sky130_fd_pr__res_high_po__con_slope_spectre)} |
| + rbody = {(l*rsheet+rbody_var)*(1+res_match)} |
| rend r0 ra r = {rend*(1+min((abs(v(r0,r1))-1.4),0.6)*vc1_end+pow(min(abs(v(r0,r1))-1.4,0.6),2)*vc2_end+pow(min(abs(v(r0,r1))-1.4,0.6),3)*vc3_end)} |
| rhrpoly_1p41 ra r1 resbody r = {rbody*(1+abs(v(r0,r1))*vc1_body+pow(abs(v(r0,r1)),2)*vc2_body)} |
| c1 r0 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_4_1*1e-6)/2} |
| c2 r1 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_4_1*1e-6)/2} |
| .model resbody r tc1 = {tc1rpolybody} tc2 = {tc2rpolybody} tnom = 30.0 |
| .ends sky130_fd_pr__res_high_po_1p41 |
| .subckt sky130_fd_pr__res_high_po_2p85 r0 r1 b |
| + |
| .param w = 2.850 l = 5 mult = 1.0 |
| + |
| + body_pelgrom = 0.0388 |
| + rend_mm = 0.015 |
| + rcon = 130.36 |
| + rsheet = 113.56 |
| + tc1_voltco = -9.36e-3 |
| + vc1_body = 3.21e-4 |
| + vc2_body = 4.95e-5 |
| + vc1_raw_end = 1.47e-2 |
| + vc2_raw_end = 0.136 |
| + vc3_raw_end = 5.29e-2 |
| + r0_var = 8.23 |
| + r1_var = 3.29 |
| + vc1_end = {vc1_raw_end*1.425/l*(1+tc1_voltco*min((temp-30),0))} |
| + vc2_end = {vc2_raw_end*1.425/l*(1+tc1_voltco*min((temp-30),0))} |
| + vc3_end = {vc3_raw_end*1.425/l*(1+tc1_voltco*min((temp-30),0))} |
| + rtot_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2*pow(r0_var,2)+pow((r1_var*l),2))/m} |
| + rend_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2)*r0_var/m} |
| + rbody_var = {rtot_var-rend_var} |
| + res_match = {(body_pelgrom/sqrt(w*l*mult))*sky130_fd_pr__res_high_po__slope_spectre} |
| + rend = {(rcon+rend_var)*(1+rend_mm/sqrt(mult)*sky130_fd_pr__res_high_po__con_slope_spectre)} |
| + rbody = {(l*rsheet+rbody_var)*(1+res_match)} |
| rend r0 ra r = {rend*(1+min((abs(v(r0,r1))-1.6),0.4)*vc1_end+pow(min(abs(v(r0,r1))-1.6,0.4),2)*vc2_end+pow(min(abs(v(r0,r1))-1.6,0.4),3)*vc3_end)} |
| rhrpoly_2p85 ra r1 resbody r = {rbody*(1+abs(v(r0,r1))*vc1_body+pow(abs(v(r0,r1)),2)*vc2_body)} |
| c1 r0 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_8_2*1e-6)/2} |
| c2 r1 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_8_2*1e-6)/2} |
| .model resbody r tc1 = {tc1rpolybody} tc2 = {tc2rpolybody} tnom = 30.0 |
| .ends sky130_fd_pr__res_high_po_2p85 |
| .subckt sky130_fd_pr__res_high_po_5p73 r0 r1 b |
| + |
| .param w = 5.730 l = 5 mult = 1.0 |
| + |
| + body_pelgrom = 0.037 |
| + rend_mm = 0.01 |
| + rcon = 68.05 |
| + rsheet = 56.46 |
| + tc1_voltco = 2.35e-2 |
| + vc1_body = -2.62e-5 |
| + vc2_body = 2.25e-5 |
| + vc1_raw_end = 8.74e-4 |
| + vc2_raw_end = -1.34e-2 |
| + vc3_raw_end = 1.72e-2 |
| + r0_var = 4.29 |
| + r1_var = 1.6 |
| + vc1_end = {vc1_raw_end*2.865/l*(1+(tc1_voltco*min((temp-30),0)))} |
| + vc2_end = {vc2_raw_end*2.865/l*(1+(tc1_voltco*min((temp-30),0)))} |
| + vc3_end = {vc3_raw_end*2.865/l*(1+(tc1_voltco*min((temp-30),0)))} |
| + rtot_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2*pow(r0_var,2)+pow((r1_var*l),2))/m} |
| + rend_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2)*r0_var/m} |
| + rbody_var = {rtot_var-rend_var} |
| + res_match = {(body_pelgrom/sqrt(w*l*mult))*sky130_fd_pr__res_high_po__slope_spectre} |
| + rend = {(rcon+rend_var)*(1+rend_mm/sqrt(mult)*sky130_fd_pr__res_high_po__con_slope_spectre)} |
| + rbody = {(l*rsheet+rbody_var)*(1+res_match)} |
| rend r0 ra r = {rend*(1+min(abs(v(r0,r1)),2.0)*vc1_end+pow(min(abs(v(r0,r1)),2.0),2)*vc2_end+pow(min(abs(v(r0,r1)),2.0),3)*vc3_end)} |
| rhrpoly_5p73 ra r1 resbody r = {rbody*(1+abs(v(r0,r1))*vc1_body+pow(abs(v(r0,r1)),2)*vc2_body)} |
| c1 r0 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_16_2*1e-6)/2} |
| c2 r1 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_16_2*1e-6)/2} |
| .model resbody r tc1 = {tc1rpolybody} tc2 = {tc2rpolybody} tnom = 30.0 |
| .ends sky130_fd_pr__res_high_po_5p73 |