| **************************************************** |
| *** Jul 03, 2019 UZMN |
| *** Why: The charge did not conserve. |
| *** No process Monte Carlo |
| *** What: |
| *** Replace the voltage dependent model by a constant capacitance to |
| *** conserve charge. Besides, the voltage coefficient only changes |
| *** the capacitance by 0.09% at 3.3V. |
| |
| |
| .subckt cm3m4 c0 c1 w=1 l=1 mf=1 |
| *****via_spacing from TDR Rules = via3.1 + via3.2 + capm.4 |
| .param wc = 'w+m3_dw*1e6+tol_m3*1e6' |
| .param lc = 'l+m3_dw*1e6+tol_m3*1e6' |
| .param via3_spacing = '(0.17+0.25+0.140)*(0.17+0.25+0.140)' $area of a single via3 with spacing (physical) |
| .param num_contacts = '(wc*lc/via3_spacing)' |
| .param r1 = 'rm3_rsh*(lc)/(wc)' |
| .param r2 = 'rcvia3/num_contacts' |
| * .param vc1 = -25e-6 $$ Parts per million/Volts |
| * .param vc2 = 90e-6 $$ Parts per million/Volts^2 |
| .param carea = 'camimc*(wc)*(lc)' |
| .param cperim = 'cpmimc*((wc)+(lc))*2' |
| .param czero = 'carea + cperim' dev/gauss='0.01*2.8*(carea + cperim)/sqrt(wc*lc*mf)' |
| .param cpar_area = 'mcm3f_ca_w_7_680_s_1_240*(wc)*(lc)*m*1e-12' |
| .param cpar_perim = 'mcm3f_cf_w_7_680_s_1_240*((wc)+(lc))*m*2*1e-6' |
| |
| *c1 c0 a 'czero*(1+vc1*(v(c0)-v(c1))+vc2*(v(c0)-v(c1))*(v(c0)-v(c1)))' tc1=0 tc2=0 |
| c1 c0 a czero tc1=0 tc2=0 |
| |
| rs1 a b1 'r1' tc1=tc1rm3 tc2=tc2rm3 $$use M3 tco's |
| rs2 b1 c1 'r2' tc1=tc1rvia3 tc2=tc2rvia3 $$use rvia3 tco's |
| |
| .ends cm3m4 |
| |
| .subckt cm4m5 c0 c1 w=1 l=1 mf=1 |
| *****via_spacing from TDR Rules = via4.1 + via4.2 + cap2m.4 |
| .param wc = 'w+m4_dw*1e6+tol_m4*1e6' |
| .param lc = 'l+m4_dw*1e6+tol_m4*1e6' |
| .param via4_spacing = '(0.28+0.31+0.140)*(0.28+0.31+0.140)' $area of a single via4 with spacing (physical) |
| .param num_contacts = '(wc*lc/via4_spacing)' |
| .param r1 = 'rm4_rsh*(lc)/(wc)' |
| .param r2 = 'rcvia4/num_contacts' |
| * .param vc1 = -25e-6 $$ Parts per million/Volts |
| * .param vc2 = 90e-6 $$ Parts per million/Volts^2 |
| .param carea = 'camimc*(wc)*(lc)' |
| .param cperim = 'cpmimc*((wc)+(lc))*2' |
| .param czero = 'carea + cperim' dev/gauss='0.01*2.8*(carea + cperim)/sqrt(wc*lc*mf)' |
| .param cpar_area = 'mcm4f_ca_w_7_680_s_1_240*(wc)*(lc)*m*1e-12' |
| .param cpar_perim = 'mcm4f_cf_w_7_680_s_1_240*((wc)+(lc))*m*2*1e-6' |
| |
| |
| * c1 c0 a 'czero*(1+vc1*(v(c0)-v(c1))+vc2*(v(c0)-v(c1))*(v(c0)-v(c1)))' tc1=0 tc2=0 |
| c1 c0 a czero tc1=0 tc2=0 |
| |
| rs1 a b1 'r1' tc1=tc1rm4 tc2=tc2rm4 $$use M4 tco's |
| rs2 b1 c1 'r2' tc1=tc1rvia4 tc2=tc2rvia4 $$use rvia4 tco's |
| |
| .ends cm4m5 |
| |