16 #include "component.h"
21 #define CIR_EKV26MOS -1
34 #define NP(node) real (getV (node))
35 #define BP(pnode,nnode) (NP(pnode) - NP(nnode))
36 #define _load_static_residual2(pnode,nnode,current)\
37 _rhs[pnode] -= current;\
38 _rhs[nnode] += current;
39 #define _load_static_augmented_residual2(pnode,nnode,current)\
40 _rhs[pnode] -= current;\
41 _rhs[nnode] += current;
42 #define _load_static_residual1(node,current)\
43 _rhs[node] -= current;
44 #define _load_static_augmented_residual1(node,current)\
45 _rhs[node] -= current;
46 #define _load_static_jacobian4(pnode,nnode,vpnode,vnnode,conductance)\
47 _jstat[pnode][vpnode] += conductance;\
48 _jstat[nnode][vnnode] += conductance;\
49 _jstat[pnode][vnnode] -= conductance;\
50 _jstat[nnode][vpnode] -= conductance;\
52 _ghs[pnode] += conductance * BP(vpnode,vnnode);\
53 _ghs[nnode] -= conductance * BP(vpnode,vnnode);\
55 _rhs[pnode] += conductance * BP(vpnode,vnnode);\
56 _rhs[nnode] -= conductance * BP(vpnode,vnnode);\
58 #define _load_static_jacobian2p(node,vpnode,vnnode,conductance)\
59 _jstat[node][vpnode] += conductance;\
60 _jstat[node][vnnode] -= conductance;\
62 _ghs[node] += conductance * BP(vpnode,vnnode);\
64 _rhs[node] += conductance * BP(vpnode,vnnode);\
66 #define _load_static_jacobian2s(pnode,nnode,node,conductance)\
67 _jstat[pnode][node] += conductance;\
68 _jstat[nnode][node] -= conductance;\
70 _ghs[pnode] += conductance * NP(node);\
71 _ghs[nnode] -= conductance * NP(node);\
73 _rhs[pnode] += conductance * NP(node);\
74 _rhs[nnode] -= conductance * NP(node);\
76 #define _load_static_jacobian1(node,vnode,conductance)\
77 _jstat[node][vnode] += conductance;\
79 _ghs[node] += conductance * NP(vnode);\
81 _rhs[node] += conductance * NP(vnode);\
83 #define _load_dynamic_residual2(pnode,nnode,charge)\
84 if (doTR) _charges[pnode][nnode] += charge;\
86 _qhs[pnode] -= charge;\
87 _qhs[nnode] += charge;\
89 #define _load_dynamic_residual1(node,charge)\
90 if (doTR) _charges[node][node] += charge;\
92 _qhs[node] -= charge;\
94 #define _load_dynamic_jacobian4(pnode,nnode,vpnode,vnnode,capacitance)\
96 _jdyna[pnode][vpnode] += capacitance;\
97 _jdyna[nnode][vnnode] += capacitance;\
98 _jdyna[pnode][vnnode] -= capacitance;\
99 _jdyna[nnode][vpnode] -= capacitance;\
102 _caps[pnode][nnode][vpnode][vnnode] += capacitance;\
105 _chs[pnode] += capacitance * BP(vpnode,vnnode);\
106 _chs[nnode] -= capacitance * BP(vpnode,vnnode);\
108 #define _load_dynamic_jacobian2s(pnode,nnode,vnode,capacitance)\
110 _jdyna[pnode][vnode] += capacitance;\
111 _jdyna[nnode][vnode] -= capacitance;\
114 _caps[pnode][nnode][vnode][vnode] += capacitance;\
117 _chs[pnode] += capacitance * NP(vnode);\
118 _chs[nnode] -= capacitance * NP(vnode);\
120 #define _load_dynamic_jacobian2p(node,vpnode,vnnode,capacitance)\
122 _jdyna[node][vpnode] += capacitance;\
123 _jdyna[node][vnnode] -= capacitance;\
126 _caps[node][node][vpnode][vnnode] += capacitance;\
129 _chs[node] += capacitance * BP(vpnode,vnnode);\
131 #define _load_dynamic_jacobian1(node,vnode,capacitance)\
133 _jdyna[node][vnode] += capacitance;\
136 _caps[node][node][vnode][vnode] += capacitance;\
139 _chs[node] += capacitance * NP(vnode);\
142 #define _save_whitenoise1(n1,pwr,type)\
143 _white_pwr[n1][n1] += pwr;
144 #define _save_whitenoise2(n1,n2,pwr,type)\
145 _white_pwr[n1][n2] += pwr;
146 #define _save_flickernoise1(n1,pwr,exp,type)\
147 _flicker_pwr[n1][n1] += pwr;\
148 _flicker_exp[n1][n1] += exp;
149 #define _save_flickernoise2(n1,n2,pwr,exp,type)\
150 _flicker_pwr[n1][n2] += pwr;\
151 _flicker_exp[n1][n2] += exp;
152 #define _load_whitenoise2(n1,n2,pwr)\
153 cy (n1,n2) -= pwr/kB/T0; cy (n2,n1) -= pwr/kB/T0;\
154 cy (n1,n1) += pwr/kB/T0; cy (n2,n2) += pwr/kB/T0;
155 #define _load_whitenoise1(n1,pwr)\
156 cy (n1,n1) += pwr/kB/T0;
157 #define _load_flickernoise2(n1,n2,pwr,exp)\
158 cy (n1,n2) -= pwr*pow(_freq,-exp)/kB/T0;\
159 cy (n2,n1) -= pwr*pow(_freq,-exp)/kB/T0;\
160 cy (n1,n1) += pwr*pow(_freq,-exp)/kB/T0;\
161 cy (n2,n2) += pwr*pow(_freq,-exp)/kB/T0;
162 #define _load_flickernoise1(n1,pwr,exp)\
163 cy (n1,n1) += pwr*pow(_freq,-exp)/kB/T0;
166 #define m00_hypot(v00,x,y) v00 = xhypot(x,y);
167 #define m10_hypot(v10,v00,x,y) v10 = (x)/(v00);
168 #define m11_hypot(v11,v00,x,y) v11 = (y)/(v00);
169 #define m00_max(v00,x,y) v00 = ((x)>(y))?(x):(y);
170 #define m10_max(v10,v00,x,y) v10 = ((x)>(y))?1.0:0.0;
171 #define m11_max(v11,v00,x,y) v11 = ((x)>(y))?0.0:1.0;
172 #define m00_min(v00,x,y) v00 = ((x)<(y))?(x):(y);
173 #define m10_min(v10,v00,x,y) v10 = ((x)<(y))?1.0:0.0;
174 #define m11_min(v11,v00,x,y) v11 = ((x)<(y))?0.0:1.0;
175 #define m00_pow(v00,x,y) v00 = pow(x,y);
176 #define m10_pow(v10,v00,x,y) v10 = (x==0.0)?0.0:(v00)*(y)/(x);
177 #define m11_pow(v11,v00,x,y) v11 = (x==0.0)?0.0:(log(x)*(v00));
179 #define m00_div(v00,v10,x,y) double v10=1/(y); double v00=(x)*v10;
180 #define m10_div(v10,v00,vv,x,y)
181 #define m11_div(v11,v00,vv,x,y) double v11 = -v00*vv;
183 #define m00_mult(v00,v10,v11,x,y) double v10=(x); double v11=(y); double v00=v10*v11;
184 #define m00_add(v00,x,y) double v00=(x)+(y);
186 #define m00_cos(v00,x) v00 = cos(x);
187 #define m10_cos(v10,v00,x) v10 = (-sin(x));
188 #define m00_sin(v00,x) v00 = sin(x);
189 #define m10_sin(v10,v00,x) v10 = (cos(x));
190 #define m00_tan(v00,x) v00 = tan(x);
191 #define m10_tan(v10,v00,x) v10 = (1.0/cos(x)/cos(x));
192 #define m00_cosh(v00,x) v00 = cosh(x);
193 #define m10_cosh(v10,v00,x) v10 = (sinh(x));
194 #define m00_sinh(v00,x) v00 = sinh(x);
195 #define m10_sinh(v10,v00,x) v10 = (cosh(x));
196 #define m00_tanh(v00,x) v00 = tanh(x);
197 #define m10_tanh(v10,v00,x) v10 = (1.0/cosh(x)/cosh(x));
198 #define m00_acos(v00,x) v00 = acos(x);
199 #define m10_acos(v10,v00,x) v10 = (-1.0/sqrt(1-x*x));
200 #define m00_asin(v00,x) v00 = asin(x);
201 #define m10_asin(v10,v00,x) v10 = (+1.0/sqrt(1-x*x));
202 #define m00_atan(v00,x) v00 = atan(x);
203 #define m10_atan(v10,v00,x) v10 = (+1.0/(1+x*x));
204 #define m00_atanh(v00,x) v00 = atanh(x);
205 #define m10_atanh(v10,v00,x) v10 = (+1.0/(1-x*x));
206 #define m00_logE(v00,x) v00 = log(x);
207 #define m10_logE(v10,v00,x) v10 = (1.0/x);
208 #define m00_log10(v00,x) v00 = log10(x);
209 #define m10_log10(v10,v00,x) v10 = (1.0/x/M_LN10);
210 #define m00_sqrt(v00,x) v00 = sqrt(x);
211 #define m10_sqrt(v10,v00,x) v10 = (0.5/v00);
212 #define m00_fabs(v00,x) v00 = fabs(x);
213 #define m10_fabs(v10,v00,x) v10 = (((x)>=0)?(+1.0):(-1.0));
215 #define m00_exp(v00,x) v00 = exp(x);
216 #define m10_exp(v10,v00,x) v10 = v00;
218 #define m00_abs(v00) ((v00)<(0)?(-(v00)):(v00))
219 #define m00_floor(v00,x) v00 = floor(x);
220 #define m00_limexp(v00,x) v00 = ((x)<80.0?exp(x):exp(80.0)*(x-79.0));
221 #define m10_limexp(v10,v00,x) v10 = ((x)<80.0?(v00):exp(80.0));
223 #define m20_logE(v00) (-1.0/v00/v00)
224 #define m20_exp(v00) exp(v00)
225 #define m20_limexp(v00) ((v00)<80.0?exp(v00):0.0)
226 #define m20_sqrt(v00) (-0.25/(v00)/sqrt(v00))
227 #define m20_fabs(v00) 0.0
228 #define m20_pow(x,y) ((y)*((y)-1.0)*pow(x,y)/(x)/(x))
229 #define m00_vt(x) (kBoverQ*(x))
230 #define m10_vt(x) (kBoverQ)
233 #define _modelname "EKV26MOS"
234 #define _instancename getName()
235 #define _circuit_temp (getPropertyDouble("Temp")+273.15)
236 #define _param_given(p) (isPropertyGiven(p)?1:0)
240 #define _vt_nom (kBoverQ*_circuit_temp)
242 using namespace device;
251 void EKV26MOS::initModel (
void)
264 initializeInstance ();
285 void EKV26MOS::initVerilog (
void)
302 for (i1 = 0; i1 < 6; i1++) {
303 for (i2 = 0; i2 < 6; i2++) {
304 _charges[i1][i2] = 0.0;
308 for (i1 = 0; i1 < 6; i1++) {
309 for (i2 = 0; i2 < 6; i2++) {
310 for (i3 = 0; i3 < 6; i3++) {
311 for (i4 = 0; i4 < 6; i4++) {
312 _caps[i1][i2][i3][i4] = 0.0;
316 for (i1 = 0; i1 < 6; i1++) {
321 for (i2 = 0; i2 < 6; i2++) {
322 _jstat[i1][i2] = 0.0;
323 _jdyna[i1][i2] = 0.0;
329 void EKV26MOS::loadVariables (
void)
394 #define _DERIVATEFORDDX
397 void EKV26MOS::initializeModel (
void)
406 #if defined(_DYNAMIC)
408 #if defined(_DYNAMIC)
410 #if defined(_DYNAMIC)
412 #if defined(_DYNAMIC)
414 #if defined(_DYNAMIC)
416 #if defined(_DYNAMIC)
418 #if defined(_DYNAMIC)
420 #if defined(_DYNAMIC)
422 #if defined(_DYNAMIC)
424 #if defined(_DYNAMIC)
426 #if defined(_DYNAMIC)
428 #if defined(_DYNAMIC)
432 #if defined(_DYNAMIC)
434 #if defined(_DYNAMIC)
437 #if defined(_DYNAMIC)
440 #if defined(_DYNAMIC)
443 #if defined(_DYNAMIC)
445 #if defined(_DYNAMIC)
482 epsilonsi=1.0359e-10;
483 #if defined(_DYNAMIC)
484 epsilonox=3.453143e-11;
489 Vto_T=(p_n_MOS*(Vto-(Tcv*(T2-Tnomk))));
490 Egnom=(1.16-(((0.000702*Tnomk)*Tnomk)/(Tnomk+1108)));
491 Eg=(1.16-(((0.000702*T2)*T2)/(T2+1108)));
494 Phi_T=((((Phi*Tratio)-((3.0*
_vt_nom)*d00_logE0))-(Egnom*Tratio))+Eg);
496 Ibb_T=(Ibb*(1.0+(Ibbt*(T2-Tnomk))));
499 RDeff=(((((Hdif*Rsh)/Weff)/Np)+Rdc)+1
e-9);
500 RSeff=(((((Hdif*Rsh)/Weff)/Np)+Rsc)+1
e-9);
502 double m00_sqrt(d00_sqrt0,(((Np*Weff)*Ns)*Leff))
505 Vt_T2=((1.3806503e-23*T2)/1.602176462
e-19);
506 Eg_T1=(Eg-(((A*Tnomk)*Tnomk)/(B+Tnomk)));
507 #if defined(_DYNAMIC)
508 Eg_T2=(Eg-(((A*T2)*T2)/(B+T2)));
510 #if defined(_DYNAMIC)
512 double m00_pow(d00_pow0,(T2/Tnomk),1.5)
514 Vj_T2=((((T2/Tnomk)*Vj)-((2*Vt_T2)*d00_logE1))-(((T2/Tnomk)*Eg_T1)-Eg_T2));
517 #if defined(_DYNAMIC)
518 Cj0_T2=(Cj0*(1+(M*((400
e-6*(T2-Tnomk))-((Vj_T2-Vj)/Vj)))));
520 #if defined(_DYNAMIC)
522 double m00_pow(d00_pow0,(1-Fc),(1-M))
523 F1=((Vj/(1-M))*(1-d00_pow0));
526 #if defined(_DYNAMIC)
528 double m00_pow(d00_pow0,(1-Fc),(1+M))
532 #if defined(_DYNAMIC)
536 double m00_pow(d00_pow0,(T2/Tnomk),(Xti/N))
537 double m00_limexp(d00_limexp1,(((-Eg_T1)/Vt_T2)*(1-(T2/Tnomk))))
538 Is_T2=((Is*d00_pow0)*d00_limexp1);
541 con2=((((Cox*Ns)*Np)*Weff)*Leff);
542 fourkt=((4.0*1.3806503e-23)*T2);
543 #if defined(_DYNAMIC)
544 Area1=(
Area*((Cj0_T2*Vj_T2)/(1-M)));
547 #if defined(_DYNAMIC)
550 #if defined(_DYNAMIC)
551 DP1=(((Fc*Fc)*Vj_T2)*Vj_T2);
553 #if defined(_DYNAMIC)
556 #if defined(_DYNAMIC)
559 #if defined(_DYNAMIC)
562 con4=((-Vto_T)+Phi_T);
566 con10=(epsilonsi/Cox);
569 con22=(Kp*(Weff/Leff));
571 #if defined(_DYNAMIC)
574 #if defined(_DYNAMIC)
577 con25=(fourkt/RDeff);
578 con26=(fourkt/RSeff);
579 #if defined(_DYNAMIC)
580 con27=((Cgso*Weff)*Np);
582 #if defined(_DYNAMIC)
583 con28=((Cgdo*Weff)*Np);
585 #if defined(_DYNAMIC)
586 con29=((Cgbo*Leff)*Np);
589 con31=(1.0/(N*Vt_T2));
591 #if defined(_DYNAMIC)
598 double m00_pow(d00_pow0,Tratio,Ucex)
599 Ucrit_T=(Ucrit*d00_pow0);
601 #if defined(_DYNAMIC)
602 Vtoa=((p_n_MOS*Vto)+(Avto/con1));
604 Kpa=(Kp*(1.0+(Akp/con1)));
606 double m00_pow(d00_pow0,Tratio,Bex)
607 Kpa_T=(Kpa*d00_pow0);
609 Gammaa=(Gamma+(Agamma/con1));
612 C_epsilon=(4.0*d00_pow0);
614 xi=(0.028*((10.0*(Leff/Lk))-1.0));
617 double m00_sqrt(d00_sqrt1,(d00_pow0+C_epsilon))
618 nnn=(1.0+(0.5*(xi+d00_sqrt1)));
622 deltaV_RSCE=(((2.0*Q0)/Cox)*(1.0/d00_pow0));
624 con3=(((-Vto_T)-deltaV_RSCE)+Phi_T);
628 con13=((3.0*Weta)/Weff);
629 Vc=((Ucrit_T*Ns)*Leff);
632 con15=(
_vt_nom*(d00_logE0-0.6));
636 double m00_sqrt(d00_sqrt0,((epsilonsi/Cox)*Xj))
639 Lmin=((Ns*Leff)/10.0);
640 eta=((p_n_MOS==(+1))?0.5:(1/3));
643 Qb0=(Gammaa*d00_sqrt0);
645 con17=(1.0+((Cox/(EO*epsilonsi))*Qb0));
647 con19=(1.0/(Lc*Ucrit_T));
649 con21=((Cox/(EO*epsilonsi))*
_vt_nom);
655 void EKV26MOS::initializeInstance (
void)
660 void EKV26MOS::initialStep (
void)
665 void EKV26MOS::finalStep (
void)
670 void EKV26MOS::calcVerilog (
void)
674 #if defined(_DYNAMIC)
676 #if defined(_DERIVATE)
677 double Qs2_VBulk_Drain_int;
678 double Qs2_VBulk_Source_int;
682 #if defined(_DERIVATE)
683 double Is2_VBulk_Drain_int;
684 double Is2_VBulk_Source_int;
686 #if defined(_DYNAMIC)
688 #if defined(_DERIVATE)
689 double Qs1_VBulk_Drain_int;
690 double Qs1_VBulk_Source_int;
694 #if defined(_DERIVATE)
695 double Is1_VBulk_Drain_int;
696 double Is1_VBulk_Source_int;
698 #if defined(_DYNAMIC)
700 #if defined(_DERIVATE)
701 double Qd2_VBulk_Source_int;
702 double Qd2_VBulk_Drain_int;
706 #if defined(_DERIVATE)
707 double Id2_VBulk_Source_int;
708 double Id2_VBulk_Drain_int;
710 #if defined(_DYNAMIC)
712 #if defined(_DERIVATE)
713 double Qd1_VBulk_Source_int;
714 double Qd1_VBulk_Drain_int;
718 #if defined(_DERIVATE)
719 double Id1_VBulk_Source_int;
720 double Id1_VBulk_Drain_int;
723 #if defined(_DERIVATE)
724 double V2_VBulk_Drain_int;
725 double V2_VBulk_Source_int;
728 #if defined(_DERIVATE)
729 double V1_VBulk_Source_int;
730 double V1_VBulk_Drain_int;
732 #if defined(_DYNAMIC)
734 #if defined(_DERIVATE)
735 double qgbo_VGate_Bulk;
738 #if defined(_DYNAMIC)
740 #if defined(_DERIVATE)
741 double qgdo_VGate_Bulk;
742 double qgdo_VSource_int_Bulk;
743 double qgdo_VDrain_int_Bulk;
746 #if defined(_DYNAMIC)
748 #if defined(_DERIVATE)
749 double qgso_VGate_Bulk;
750 double qgso_VDrain_int_Bulk;
751 double qgso_VSource_int_Bulk;
754 #if defined(_DYNAMIC)
756 #if defined(_DERIVATE)
757 double qg_VGate_Bulk;
758 double qg_VDrain_int_Bulk;
759 double qg_VSource_int_Bulk;
762 #if defined(_DYNAMIC)
764 #if defined(_DERIVATE)
765 double qb_VGate_Bulk;
766 double qb_VDrain_int_Bulk;
767 double qb_VSource_int_Bulk;
771 #if defined(_DERIVATE)
772 double Sflicker_VSource_int_Bulk;
773 double Sflicker_VDrain_int_Bulk;
774 double Sflicker_VGate_Bulk;
777 #if defined(_DERIVATE)
778 double gm_VSource_int_Bulk;
779 double gm_VDrain_int_Bulk;
780 double gm_VGate_Bulk;
783 #if defined(_DERIVATE)
784 double Sthermal_VSource_int_Bulk;
785 double Sthermal_VDrain_int_Bulk;
786 double Sthermal_VGate_Bulk;
789 #if defined(_DERIVATE)
790 double Idb_VGate_Bulk;
791 double Idb_VDrain_int_Bulk;
792 double Idb_VSource_int_Bulk;
795 #if defined(_DERIVATE)
796 double Vib_VSource_int_Bulk;
797 double Vib_VDrain_int_Bulk;
798 double Vib_VGate_Bulk;
801 #if defined(_DERIVATE)
802 double Ids_VGate_Bulk;
803 double Ids_VDrain_int_Bulk;
804 double Ids_VSource_int_Bulk;
807 #if defined(_DERIVATE)
808 double Ispecific_VGate_Bulk;
809 double Ispecific_VDrain_int_Bulk;
810 double Ispecific_VSource_int_Bulk;
813 #if defined(_DERIVATE)
814 double Beta_VSource_int_Bulk;
815 double Beta_VDrain_int_Bulk;
816 double Beta_VGate_Bulk;
819 #if defined(_DERIVATE)
820 double qB_VGate_Bulk;
821 double qB_VDrain_int_Bulk;
822 double qB_VSource_int_Bulk;
825 #if defined(_DERIVATE)
826 double qI_VGate_Bulk;
827 double qI_VDrain_int_Bulk;
828 double qI_VSource_int_Bulk;
831 #if defined(_DERIVATE)
832 double Xr_VGate_Bulk;
833 double Xr_VDrain_int_Bulk;
834 double Xr_VSource_int_Bulk;
837 #if defined(_DERIVATE)
838 double Xf_VGate_Bulk;
839 double Xf_VDrain_int_Bulk;
840 double Xf_VSource_int_Bulk;
843 #if defined(_DERIVATE)
844 double nq_VGate_Bulk;
845 double nq_VDrain_int_Bulk;
846 double nq_VSource_int_Bulk;
849 #if defined(_DERIVATE)
850 double Beta0prime_VSource_int_Bulk;
851 double Beta0prime_VDrain_int_Bulk;
852 double Beta0prime_VGate_Bulk;
855 #if defined(_DERIVATE)
856 double Beta0_VSource_int_Bulk;
857 double Beta0_VDrain_int_Bulk;
858 double Beta0_VGate_Bulk;
861 #if defined(_DERIVATE)
862 double irprime_VGate_Bulk;
863 double irprime_VDrain_int_Bulk;
864 double irprime_VSource_int_Bulk;
867 #if defined(_DERIVATE)
868 double X3_VGate_Bulk;
869 double X3_VDrain_int_Bulk;
870 double X3_VSource_int_Bulk;
873 #if defined(_DERIVATE)
874 double Leq_VSource_int_Bulk;
875 double Leq_VDrain_int_Bulk;
876 double Leq_VGate_Bulk;
879 #if defined(_DERIVATE)
880 double Lprime_VSource_int_Bulk;
881 double Lprime_VDrain_int_Bulk;
882 double Lprime_VGate_Bulk;
885 #if defined(_DERIVATE)
886 double DeltaL_VSource_int_Bulk;
887 double DeltaL_VDrain_int_Bulk;
888 double DeltaL_VGate_Bulk;
891 #if defined(_DERIVATE)
892 double Vip_VGate_Bulk;
893 double Vip_VDrain_int_Bulk;
894 double Vip_VSource_int_Bulk;
897 #if defined(_DERIVATE)
898 double Vdso2_VSource_int_Bulk;
899 double Vdso2_VDrain_int_Bulk;
902 #if defined(_DERIVATE)
903 double deltaV_VGate_Bulk;
904 double deltaV_VDrain_int_Bulk;
905 double deltaV_VSource_int_Bulk;
908 #if defined(_DERIVATE)
909 double Vdssprime_VGate_Bulk;
910 double Vdssprime_VDrain_int_Bulk;
911 double Vdssprime_VSource_int_Bulk;
914 #if defined(_DERIVATE)
915 double Vdss_VGate_Bulk;
916 double Vdss_VDrain_int_Bulk;
917 double Vdss_VSource_int_Bulk;
920 #if defined(_DERIVATE)
921 double ir_VGate_Bulk;
922 double ir_VDrain_int_Bulk;
923 double ir_VSource_int_Bulk;
926 #if defined(_DERIVATE)
927 double X2_VGate_Bulk;
928 double X2_VDrain_int_Bulk;
929 double X2_VSource_int_Bulk;
932 #if defined(_DERIVATE)
933 double iff_VGate_Bulk;
934 double iff_VDrain_int_Bulk;
935 double iff_VSource_int_Bulk;
938 #if defined(_DERIVATE)
939 double T_1_VGate_Bulk;
940 double T_1_VDrain_int_Bulk;
941 double T_1_VSource_int_Bulk;
944 #if defined(_DERIVATE)
945 double X1_VGate_Bulk;
946 double X1_VDrain_int_Bulk;
947 double X1_VSource_int_Bulk;
950 #if defined(_DERIVATE)
952 double n_VDrain_int_Bulk;
953 double n_VSource_int_Bulk;
956 #if defined(_DERIVATE)
957 double Vp_VGate_Bulk;
958 double Vp_VDrain_int_Bulk;
959 double Vp_VSource_int_Bulk;
962 #if defined(_DERIVATE)
963 double Gammaprime_VDrain_int_Bulk;
964 double Gammaprime_VSource_int_Bulk;
965 double Gammaprime_VGate_Bulk;
968 #if defined(_DERIVATE)
969 double Gamma0_VDrain_int_Bulk;
970 double Gamma0_VSource_int_Bulk;
971 double Gamma0_VGate_Bulk;
974 #if defined(_DERIVATE)
975 double VDprime_VSource_int_Bulk;
976 double VDprime_VDrain_int_Bulk;
979 #if defined(_DERIVATE)
980 double VSprime_VDrain_int_Bulk;
981 double VSprime_VSource_int_Bulk;
984 #if defined(_DERIVATE)
985 double VP0_VGate_Bulk;
988 #if defined(_DERIVATE)
989 double VGprime_VGate_Bulk;
992 #if defined(_DERIVATE)
993 double VD_VSource_int_Bulk;
994 double VD_VDrain_int_Bulk;
997 #if defined(_DERIVATE)
998 double VS_VDrain_int_Bulk;
999 double VS_VSource_int_Bulk;
1003 #if defined(_DERIVATE)
1004 double VG_VGate_Bulk;
1007 #if defined(_DERIVATE)
1008 double Vd_VDrain_int_Bulk;
1011 #if defined(_DERIVATE)
1012 double Vs_VSource_int_Bulk;
1015 #if defined(_DERIVATE)
1016 double Vg_VGate_Bulk;
1018 #if defined(_DERIVATE)
1019 Vg_VGate_Bulk=(p_n_MOS);
1022 #if defined(_DERIVATE)
1023 Vs_VSource_int_Bulk=(p_n_MOS);
1026 #if defined(_DERIVATE)
1027 Vd_VDrain_int_Bulk=(p_n_MOS);
1030 #if defined(_DERIVATE)
1031 VG_VGate_Bulk=Vg_VGate_Bulk;
1038 #if defined(_DERIVATE)
1039 VS_VDrain_int_Bulk=0.0;
1040 VS_VSource_int_Bulk=Vs_VSource_int_Bulk;
1043 #if defined(_DERIVATE)
1044 VD_VSource_int_Bulk=0.0;
1045 VD_VDrain_int_Bulk=Vd_VDrain_int_Bulk;
1052 #if defined(_DERIVATE)
1053 VD_VSource_int_Bulk=Vs_VSource_int_Bulk;
1054 VD_VDrain_int_Bulk=0.0;
1057 #if defined(_DERIVATE)
1058 VS_VDrain_int_Bulk=Vd_VDrain_int_Bulk;
1059 VS_VSource_int_Bulk=0.0;
1068 #if defined(_DERIVATE)
1069 VGprime_VGate_Bulk=VG_VGate_Bulk;
1071 VGprime=((VG+con3)+(Gammaa*d00_sqrt0));
1078 #if defined(_DERIVATE)
1079 VGprime_VGate_Bulk=VG_VGate_Bulk;
1081 VGprime=((VG+con4)+(Gamma*d00_sqrt0));
1091 double m00_sqrt(d00_sqrt0,(VGprime+con6))
1092 #if defined(_DERIVATE)
1093 double m10_sqrt(d10_sqrt0,d00_sqrt0,(VGprime+con6))
1095 #if defined(_DERIVATE)
1096 VP0_VGate_Bulk=(VGprime_VGate_Bulk-(Gammaa*VGprime_VGate_Bulk*d10_sqrt0));
1098 VP0=((VGprime-Phi_T)-(Gammaa*(d00_sqrt0-con5)));
1103 #if defined(_DERIVATE)
1109 double m00_sqrt(d00_sqrt0,(((VS+Phi_T)*(VS+Phi_T))+con9))
1110 #if defined(_DERIVATE)
1111 double m10_sqrt(d10_sqrt0,d00_sqrt0,(((VS+Phi_T)*(VS+Phi_T))+con9))
1113 #if defined(_DERIVATE)
1114 VSprime_VDrain_int_Bulk=(0.5*(VS_VDrain_int_Bulk+((VS_VDrain_int_Bulk*(VS+Phi_T))+((VS+Phi_T)*VS_VDrain_int_Bulk))*d10_sqrt0));
1115 VSprime_VSource_int_Bulk=(0.5*(VS_VSource_int_Bulk+((VS_VSource_int_Bulk*(VS+Phi_T))+((VS+Phi_T)*VS_VSource_int_Bulk))*d10_sqrt0));
1117 VSprime=(0.5*((VS+Phi_T)+d00_sqrt0));
1120 double m00_sqrt(d00_sqrt0,(((VD+Phi_T)*(VD+Phi_T))+con9))
1121 #if defined(_DERIVATE)
1122 double m10_sqrt(d10_sqrt0,d00_sqrt0,(((VD+Phi_T)*(VD+Phi_T))+con9))
1124 #if defined(_DERIVATE)
1125 VDprime_VSource_int_Bulk=(0.5*(VD_VSource_int_Bulk+((VD_VSource_int_Bulk*(VD+Phi_T))+((VD+Phi_T)*VD_VSource_int_Bulk))*d10_sqrt0));
1126 VDprime_VDrain_int_Bulk=(0.5*(VD_VDrain_int_Bulk+((VD_VDrain_int_Bulk*(VD+Phi_T))+((VD+Phi_T)*VD_VDrain_int_Bulk))*d10_sqrt0));
1128 VDprime=(0.5*((VD+Phi_T)+d00_sqrt0));
1133 double m00_sqrt(d00_sqrt2,(VP0+Phi_T))
1134 #if defined(_DERIVATE)
1135 double m10_sqrt(d10_sqrt0,d00_sqrt0,VSprime)
1136 double
m10_sqrt(d10_sqrt1,d00_sqrt1,VDprime)
1137 double m10_sqrt(d10_sqrt2,d00_sqrt2,(VP0+Phi_T))
1139 #if defined(_DERIVATE)
1140 Gamma0_VDrain_int_Bulk=(-(con10*(con11*(VSprime_VDrain_int_Bulk*d10_sqrt0+VDprime_VDrain_int_Bulk*d10_sqrt1))));
1141 Gamma0_VSource_int_Bulk=(-(con10*(con11*(VSprime_VSource_int_Bulk*d10_sqrt0+VDprime_VSource_int_Bulk*d10_sqrt1))));
1142 Gamma0_VGate_Bulk=(-(con10*(-(con13*VP0_VGate_Bulk*d10_sqrt2))));
1144 Gamma0=(Gammaa-(con10*((con11*(d00_sqrt0+d00_sqrt1))-(con13*d00_sqrt2))));
1147 double m00_sqrt(d00_sqrt0,((Gamma0*Gamma0)+con12))
1148 #if defined(_DERIVATE)
1149 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Gamma0*Gamma0)+con12))
1151 #if defined(_DERIVATE)
1152 Gammaprime_VDrain_int_Bulk=(0.5*(Gamma0_VDrain_int_Bulk+((Gamma0_VDrain_int_Bulk*Gamma0)+(Gamma0*Gamma0_VDrain_int_Bulk))*d10_sqrt0));
1153 Gammaprime_VSource_int_Bulk=(0.5*(Gamma0_VSource_int_Bulk+((Gamma0_VSource_int_Bulk*Gamma0)+(Gamma0*Gamma0_VSource_int_Bulk))*d10_sqrt0));
1154 Gammaprime_VGate_Bulk=(0.5*(Gamma0_VGate_Bulk+((Gamma0_VGate_Bulk*Gamma0)+(Gamma0*Gamma0_VGate_Bulk))*d10_sqrt0));
1156 Gammaprime=(0.5*(Gamma0+d00_sqrt0));
1162 double m00_sqrt(d00_sqrt0,(VGprime+((0.25*Gammaprime)*Gammaprime)))
1163 #if defined(_DERIVATE)
1164 double m10_sqrt(d10_sqrt0,d00_sqrt0,(VGprime+((0.25*Gammaprime)*Gammaprime)))
1166 #if defined(_DERIVATE)
1167 Vp_VGate_Bulk=(VGprime_VGate_Bulk-((Gammaprime_VGate_Bulk*(d00_sqrt0-(0.5*Gammaprime)))+(Gammaprime*((VGprime_VGate_Bulk+(((0.25*Gammaprime_VGate_Bulk)*Gammaprime)+((0.25*Gammaprime)*Gammaprime_VGate_Bulk)))*d10_sqrt0-(0.5*Gammaprime_VGate_Bulk)))));
1168 Vp_VDrain_int_Bulk=(-((Gammaprime_VDrain_int_Bulk*(d00_sqrt0-(0.5*Gammaprime)))+(Gammaprime*((((0.25*Gammaprime_VDrain_int_Bulk)*Gammaprime)+((0.25*Gammaprime)*Gammaprime_VDrain_int_Bulk))*d10_sqrt0-(0.5*Gammaprime_VDrain_int_Bulk)))));
1169 Vp_VSource_int_Bulk=(-((Gammaprime_VSource_int_Bulk*(d00_sqrt0-(0.5*Gammaprime)))+(Gammaprime*((((0.25*Gammaprime_VSource_int_Bulk)*Gammaprime)+((0.25*Gammaprime)*Gammaprime_VSource_int_Bulk))*d10_sqrt0-(0.5*Gammaprime_VSource_int_Bulk)))));
1171 Vp=((VGprime-Phi_T)-(Gammaprime*(d00_sqrt0-(0.5*Gammaprime))));
1176 #if defined(_DERIVATE)
1178 Vp_VDrain_int_Bulk=0.0;
1179 Vp_VSource_int_Bulk=0.0;
1184 double m00_sqrt(d00_sqrt0,((Vp+Phi_T)+con14))
1185 #if defined(_DERIVATE)
1186 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Vp+Phi_T)+con14))
1188 #if defined(_DERIVATE)
1189 n_VGate_Bulk=(-Gammaa*(2.0*Vp_VGate_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1190 n_VDrain_int_Bulk=(-Gammaa*(2.0*Vp_VDrain_int_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1191 n_VSource_int_Bulk=(-Gammaa*(2.0*Vp_VSource_int_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1193 n=(1.0+(Gammaa/(2.0*d00_sqrt0)));
1202 double m00_sqrt(d00_sqrt0,(VGprime+con8))
1203 #if defined(_DERIVATE)
1204 double m10_sqrt(d10_sqrt0,d00_sqrt0,(VGprime+con8))
1206 #if defined(_DERIVATE)
1207 Vp_VGate_Bulk=(VGprime_VGate_Bulk-(Gamma*VGprime_VGate_Bulk*d10_sqrt0));
1208 Vp_VDrain_int_Bulk=0.0;
1209 Vp_VSource_int_Bulk=0.0;
1211 Vp=((VGprime-Phi_T)-(Gamma*(d00_sqrt0-con7)));
1216 #if defined(_DERIVATE)
1218 Vp_VDrain_int_Bulk=0.0;
1219 Vp_VSource_int_Bulk=0.0;
1224 double m00_sqrt(d00_sqrt0,((Vp+Phi_T)+con14))
1225 #if defined(_DERIVATE)
1226 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Vp+Phi_T)+con14))
1228 #if defined(_DERIVATE)
1229 n_VGate_Bulk=(-Gamma*(2.0*Vp_VGate_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1230 n_VDrain_int_Bulk=(-Gamma*(2.0*Vp_VDrain_int_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1231 n_VSource_int_Bulk=(-Gamma*(2.0*Vp_VSource_int_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1233 n=(1.0+(Gamma/(2.0*d00_sqrt0)));
1236 #if defined(_DERIVATE)
1237 X1_VGate_Bulk=(Vp_VGate_Bulk/
_vt_nom);
1238 X1_VDrain_int_Bulk=((Vp_VDrain_int_Bulk-VS_VDrain_int_Bulk)/
_vt_nom);
1239 X1_VSource_int_Bulk=((Vp_VSource_int_Bulk-VS_VSource_int_Bulk)/
_vt_nom);
1244 double
m00_logE(d00_logE1,(1.0+d00_limexp0))
1245 #if defined(_DERIVATE)
1246 double m10_limexp(d10_limexp0,d00_limexp0,(X1/2.0))
1247 double
m10_logE(d10_logE1,d00_logE1,(1.0+d00_limexp0))
1249 #if defined(_DERIVATE)
1250 T_1_VGate_Bulk=(X1_VGate_Bulk/2.0)*d10_limexp0*d10_logE1;
1251 T_1_VDrain_int_Bulk=(X1_VDrain_int_Bulk/2.0)*d10_limexp0*d10_logE1;
1252 T_1_VSource_int_Bulk=(X1_VSource_int_Bulk/2.0)*d10_limexp0*d10_logE1;
1256 #if defined(_DERIVATE)
1257 iff_VGate_Bulk=((T_1_VGate_Bulk*T_1)+(T_1*T_1_VGate_Bulk));
1258 iff_VDrain_int_Bulk=((T_1_VDrain_int_Bulk*T_1)+(T_1*T_1_VDrain_int_Bulk));
1259 iff_VSource_int_Bulk=((T_1_VSource_int_Bulk*T_1)+(T_1*T_1_VSource_int_Bulk));
1262 #if defined(_DERIVATE)
1263 X2_VGate_Bulk=(Vp_VGate_Bulk/
_vt_nom);
1264 X2_VDrain_int_Bulk=((Vp_VDrain_int_Bulk-VD_VDrain_int_Bulk)/
_vt_nom);
1265 X2_VSource_int_Bulk=((Vp_VSource_int_Bulk-VD_VSource_int_Bulk)/
_vt_nom);
1270 double
m00_logE(d00_logE1,(1.0+d00_limexp0))
1271 #if defined(_DERIVATE)
1272 double m10_limexp(d10_limexp0,d00_limexp0,(X2/2.0))
1273 double
m10_logE(d10_logE1,d00_logE1,(1.0+d00_limexp0))
1275 #if defined(_DERIVATE)
1276 T_1_VGate_Bulk=(X2_VGate_Bulk/2.0)*d10_limexp0*d10_logE1;
1277 T_1_VDrain_int_Bulk=(X2_VDrain_int_Bulk/2.0)*d10_limexp0*d10_logE1;
1278 T_1_VSource_int_Bulk=(X2_VSource_int_Bulk/2.0)*d10_limexp0*d10_logE1;
1282 #if defined(_DERIVATE)
1283 ir_VGate_Bulk=((T_1_VGate_Bulk*T_1)+(T_1*T_1_VGate_Bulk));
1284 ir_VDrain_int_Bulk=((T_1_VDrain_int_Bulk*T_1)+(T_1*T_1_VDrain_int_Bulk));
1285 ir_VSource_int_Bulk=((T_1_VSource_int_Bulk*T_1)+(T_1*T_1_VSource_int_Bulk));
1294 #if defined(_DERIVATE)
1295 double m10_sqrt(d10_sqrt0,d00_sqrt0,iff)
1298 #if defined(_DERIVATE)
1299 Vdss_VGate_Bulk=(Vc*((
_vt_nom/Vc)*iff_VGate_Bulk*d10_sqrt0)*d10_sqrt1);
1300 Vdss_VDrain_int_Bulk=(Vc*((
_vt_nom/Vc)*iff_VDrain_int_Bulk*d10_sqrt0)*d10_sqrt1);
1301 Vdss_VSource_int_Bulk=(Vc*((
_vt_nom/Vc)*iff_VSource_int_Bulk*d10_sqrt0)*d10_sqrt1);
1303 Vdss=(Vc*(d00_sqrt1-0.5));
1308 double m00_sqrt(d00_sqrt2,(0.25+((
_vt_nom/Vc)*(d00_sqrt0-(0.75*d00_logE1)))))
1309 #if defined(_DERIVATE)
1310 double m10_sqrt(d10_sqrt0,d00_sqrt0,iff)
1311 double
m10_logE(d10_logE1,d00_logE1,iff)
1312 double m10_sqrt(d10_sqrt2,d00_sqrt2,(0.25+((
_vt_nom/Vc)*(d00_sqrt0-(0.75*d00_logE1)))))
1314 #if defined(_DERIVATE)
1315 Vdssprime_VGate_Bulk=(Vc*((
_vt_nom/Vc)*(iff_VGate_Bulk*d10_sqrt0-(0.75*iff_VGate_Bulk*d10_logE1)))*d10_sqrt2);
1316 Vdssprime_VDrain_int_Bulk=(Vc*((
_vt_nom/Vc)*(iff_VDrain_int_Bulk*d10_sqrt0-(0.75*iff_VDrain_int_Bulk*d10_logE1)))*d10_sqrt2);
1317 Vdssprime_VSource_int_Bulk=(Vc*((
_vt_nom/Vc)*(iff_VSource_int_Bulk*d10_sqrt0-(0.75*iff_VSource_int_Bulk*d10_logE1)))*d10_sqrt2);
1319 Vdssprime=((Vc*(d00_sqrt2-0.5))+con15);
1324 ((Lambda*(d00_sqrt0>(Vdss/
_vt_nom))))
1328 double
m00_sqrt(d00_sqrt1,((Lambda*(d00_sqrt0-(Vdss/_vt_nom)))+con16))
1329 #if defined(_DERIVATE)
1330 double m10_sqrt(d10_sqrt0,d00_sqrt0,iff)
1331 double
m10_sqrt(d10_sqrt1,d00_sqrt1,((Lambda*(d00_sqrt0-(Vdss/_vt_nom)))+con16))
1333 #if defined(_DERIVATE)
1334 deltaV_VGate_Bulk=(con14*(Lambda*(iff_VGate_Bulk*d10_sqrt0-(Vdss_VGate_Bulk/
_vt_nom)))*d10_sqrt1);
1335 deltaV_VDrain_int_Bulk=(con14*(Lambda*(iff_VDrain_int_Bulk*d10_sqrt0-(Vdss_VDrain_int_Bulk/
_vt_nom)))*d10_sqrt1);
1336 deltaV_VSource_int_Bulk=(con14*(Lambda*(iff_VSource_int_Bulk*d10_sqrt0-(Vdss_VSource_int_Bulk/
_vt_nom)))*d10_sqrt1);
1338 deltaV=(con14*d00_sqrt1);
1343 #if defined(_DERIVATE)
1344 deltaV_VGate_Bulk=0.0;
1345 deltaV_VDrain_int_Bulk=0.0;
1346 deltaV_VSource_int_Bulk=0.0;
1351 #if defined(_DERIVATE)
1352 Vdso2_VSource_int_Bulk=(0.5*(VD_VSource_int_Bulk-VS_VSource_int_Bulk));
1353 Vdso2_VDrain_int_Bulk=(0.5*(VD_VDrain_int_Bulk-VS_VDrain_int_Bulk));
1355 Vdso2=(0.5*(VD-VS));
1357 double m00_sqrt(d00_sqrt0,((Vdss*Vdss)+(deltaV*deltaV)))
1358 double m00_sqrt(d00_sqrt1,(((Vdso2-Vdss)*(Vdso2-Vdss))+(deltaV*deltaV)))
1359 #if defined(_DERIVATE)
1360 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Vdss*Vdss)+(deltaV*deltaV)))
1361 double m10_sqrt(d10_sqrt1,d00_sqrt1,(((Vdso2-Vdss)*(Vdso2-Vdss))+(deltaV*deltaV)))
1363 #if defined(_DERIVATE)
1364 Vip_VGate_Bulk=((((Vdss_VGate_Bulk*Vdss)+(Vdss*Vdss_VGate_Bulk))+((deltaV_VGate_Bulk*deltaV)+(deltaV*deltaV_VGate_Bulk)))*d10_sqrt0-((((-Vdss_VGate_Bulk)*(Vdso2-Vdss))+((Vdso2-Vdss)*(-Vdss_VGate_Bulk)))+((deltaV_VGate_Bulk*deltaV)+(deltaV*deltaV_VGate_Bulk)))*d10_sqrt1);
1365 Vip_VDrain_int_Bulk=((((Vdss_VDrain_int_Bulk*Vdss)+(Vdss*Vdss_VDrain_int_Bulk))+((deltaV_VDrain_int_Bulk*deltaV)+(deltaV*deltaV_VDrain_int_Bulk)))*d10_sqrt0-((((Vdso2_VDrain_int_Bulk-Vdss_VDrain_int_Bulk)*(Vdso2-Vdss))+((Vdso2-Vdss)*(Vdso2_VDrain_int_Bulk-Vdss_VDrain_int_Bulk)))+((deltaV_VDrain_int_Bulk*deltaV)+(deltaV*deltaV_VDrain_int_Bulk)))*d10_sqrt1);
1366 Vip_VSource_int_Bulk=((((Vdss_VSource_int_Bulk*Vdss)+(Vdss*Vdss_VSource_int_Bulk))+((deltaV_VSource_int_Bulk*deltaV)+(deltaV*deltaV_VSource_int_Bulk)))*d10_sqrt0-((((Vdso2_VSource_int_Bulk-Vdss_VSource_int_Bulk)*(Vdso2-Vdss))+((Vdso2-Vdss)*(Vdso2_VSource_int_Bulk-Vdss_VSource_int_Bulk)))+((deltaV_VSource_int_Bulk*deltaV)+(deltaV*deltaV_VSource_int_Bulk)))*d10_sqrt1);
1368 Vip=(d00_sqrt0-d00_sqrt1);
1371 double m00_logE(d00_logE0,(1.0+((Vdso2-Vip)*con19)))
1372 #if defined(_DERIVATE)
1373 double m10_logE(d10_logE0,d00_logE0,(1.0+((Vdso2-Vip)*con19)))
1375 #if defined(_DERIVATE)
1376 DeltaL_VSource_int_Bulk=(con18*(Vdso2_VSource_int_Bulk-Vip_VSource_int_Bulk)*con19*d10_logE0);
1377 DeltaL_VDrain_int_Bulk=(con18*(Vdso2_VDrain_int_Bulk-Vip_VDrain_int_Bulk)*con19*d10_logE0);
1378 DeltaL_VGate_Bulk=(con18*(-Vip_VGate_Bulk)*con19*d10_logE0);
1380 DeltaL=(con18*d00_logE0);
1382 #if defined(_DERIVATE)
1383 Lprime_VSource_int_Bulk=((-DeltaL_VSource_int_Bulk)+((Vdso2_VSource_int_Bulk+Vip_VSource_int_Bulk)/Ucrit_T));
1384 Lprime_VDrain_int_Bulk=((-DeltaL_VDrain_int_Bulk)+((Vdso2_VDrain_int_Bulk+Vip_VDrain_int_Bulk)/Ucrit_T));
1385 Lprime_VGate_Bulk=((-DeltaL_VGate_Bulk)+(Vip_VGate_Bulk/Ucrit_T));
1387 Lprime=((con20-DeltaL)+((Vdso2+Vip)/Ucrit_T));
1389 double m00_sqrt(d00_sqrt0,((Lprime*Lprime)+(Lmin*Lmin)))
1390 #if defined(_DERIVATE)
1391 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Lprime*Lprime)+(Lmin*Lmin)))
1393 #if defined(_DERIVATE)
1394 Leq_VSource_int_Bulk=(0.5*(Lprime_VSource_int_Bulk+((Lprime_VSource_int_Bulk*Lprime)+(Lprime*Lprime_VSource_int_Bulk))*d10_sqrt0));
1395 Leq_VDrain_int_Bulk=(0.5*(Lprime_VDrain_int_Bulk+((Lprime_VDrain_int_Bulk*Lprime)+(Lprime*Lprime_VDrain_int_Bulk))*d10_sqrt0));
1396 Leq_VGate_Bulk=(0.5*(Lprime_VGate_Bulk+((Lprime_VGate_Bulk*Lprime)+(Lprime*Lprime_VGate_Bulk))*d10_sqrt0));
1398 Leq=(0.5*(Lprime+d00_sqrt0));
1401 double m00_sqrt(d00_sqrt0,((Vdssprime*Vdssprime)+(deltaV*deltaV)))
1402 double m00_sqrt(d00_sqrt1,(((Vdso2-Vdssprime)*(Vdso2-Vdssprime))+(deltaV*deltaV)))
1403 #if defined(_DERIVATE)
1404 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Vdssprime*Vdssprime)+(deltaV*deltaV)))
1405 double m10_sqrt(d10_sqrt1,d00_sqrt1,(((Vdso2-Vdssprime)*(Vdso2-Vdssprime))+(deltaV*deltaV)))
1407 #if defined(_DERIVATE)
1408 X3_VGate_Bulk=(((Vp_VGate_Bulk-(((Vdssprime_VGate_Bulk*Vdssprime)+(Vdssprime*Vdssprime_VGate_Bulk))+((deltaV_VGate_Bulk*deltaV)+(deltaV*deltaV_VGate_Bulk)))*d10_sqrt0)+((((-Vdssprime_VGate_Bulk)*(Vdso2-Vdssprime))+((Vdso2-Vdssprime)*(-Vdssprime_VGate_Bulk)))+((deltaV_VGate_Bulk*deltaV)+(deltaV*deltaV_VGate_Bulk)))*d10_sqrt1)/
_vt_nom);
1409 X3_VDrain_int_Bulk=(((((Vp_VDrain_int_Bulk-Vdso2_VDrain_int_Bulk)-VS_VDrain_int_Bulk)-(((Vdssprime_VDrain_int_Bulk*Vdssprime)+(Vdssprime*Vdssprime_VDrain_int_Bulk))+((deltaV_VDrain_int_Bulk*deltaV)+(deltaV*deltaV_VDrain_int_Bulk)))*d10_sqrt0)+((((Vdso2_VDrain_int_Bulk-Vdssprime_VDrain_int_Bulk)*(Vdso2-Vdssprime))+((Vdso2-Vdssprime)*(Vdso2_VDrain_int_Bulk-Vdssprime_VDrain_int_Bulk)))+((deltaV_VDrain_int_Bulk*deltaV)+(deltaV*deltaV_VDrain_int_Bulk)))*d10_sqrt1)/
_vt_nom);
1410 X3_VSource_int_Bulk=(((((Vp_VSource_int_Bulk-Vdso2_VSource_int_Bulk)-VS_VSource_int_Bulk)-(((Vdssprime_VSource_int_Bulk*Vdssprime)+(Vdssprime*Vdssprime_VSource_int_Bulk))+((deltaV_VSource_int_Bulk*deltaV)+(deltaV*deltaV_VSource_int_Bulk)))*d10_sqrt0)+((((Vdso2_VSource_int_Bulk-Vdssprime_VSource_int_Bulk)*(Vdso2-Vdssprime))+((Vdso2-Vdssprime)*(Vdso2_VSource_int_Bulk-Vdssprime_VSource_int_Bulk)))+((deltaV_VSource_int_Bulk*deltaV)+(deltaV*deltaV_VSource_int_Bulk)))*d10_sqrt1)/
_vt_nom);
1412 X3=(((((Vp-Vdso2)-VS)-d00_sqrt0)+d00_sqrt1)/
_vt_nom);
1416 double
m00_logE(d00_logE1,(1.0+d00_limexp0))
1417 #if defined(_DERIVATE)
1418 double m10_limexp(d10_limexp0,d00_limexp0,(X3/2.0))
1419 double
m10_logE(d10_logE1,d00_logE1,(1.0+d00_limexp0))
1421 #if defined(_DERIVATE)
1422 T_1_VGate_Bulk=(X3_VGate_Bulk/2.0)*d10_limexp0*d10_logE1;
1423 T_1_VDrain_int_Bulk=(X3_VDrain_int_Bulk/2.0)*d10_limexp0*d10_logE1;
1424 T_1_VSource_int_Bulk=(X3_VSource_int_Bulk/2.0)*d10_limexp0*d10_logE1;
1428 #if defined(_DERIVATE)
1429 irprime_VGate_Bulk=((T_1_VGate_Bulk*T_1)+(T_1*T_1_VGate_Bulk));
1430 irprime_VDrain_int_Bulk=((T_1_VDrain_int_Bulk*T_1)+(T_1*T_1_VDrain_int_Bulk));
1431 irprime_VSource_int_Bulk=((T_1_VSource_int_Bulk*T_1)+(T_1*T_1_VSource_int_Bulk));
1434 #if defined(_DERIVATE)
1435 Beta0_VSource_int_Bulk=(Kpa_T*(-(Np*Weff)*Leq_VSource_int_Bulk/Leq/Leq));
1436 Beta0_VDrain_int_Bulk=(Kpa_T*(-(Np*Weff)*Leq_VDrain_int_Bulk/Leq/Leq));
1437 Beta0_VGate_Bulk=(Kpa_T*(-(Np*Weff)*Leq_VGate_Bulk/Leq/Leq));
1439 Beta0=(Kpa_T*((Np*Weff)/Leq));
1440 #if defined(_DERIVATE)
1441 Beta0prime_VSource_int_Bulk=Beta0_VSource_int_Bulk*con17;
1442 Beta0prime_VDrain_int_Bulk=Beta0_VDrain_int_Bulk*con17;
1443 Beta0prime_VGate_Bulk=Beta0_VGate_Bulk*con17;
1445 Beta0prime=(Beta0*con17);
1447 double m00_sqrt(d00_sqrt0,((Vp+Phi_T)+1
e-6))
1448 #if defined(_DERIVATE)
1449 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Vp+Phi_T)+1
e-6))
1451 #if defined(_DERIVATE)
1452 nq_VGate_Bulk=(-Gammaa*(2.0*Vp_VGate_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1453 nq_VDrain_int_Bulk=(-Gammaa*(2.0*Vp_VDrain_int_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1454 nq_VSource_int_Bulk=(-Gammaa*(2.0*Vp_VSource_int_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1456 nq=(1.0+(Gammaa/(2.0*d00_sqrt0)));
1462 double m00_sqrt(d00_sqrt0,((Vp+Phi_T)+1
e-6))
1463 #if defined(_DERIVATE)
1464 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Vp+Phi_T)+1
e-6))
1466 #if defined(_DERIVATE)
1467 nq_VGate_Bulk=(-Gamma*(2.0*Vp_VGate_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1468 nq_VDrain_int_Bulk=(-Gamma*(2.0*Vp_VDrain_int_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1469 nq_VSource_int_Bulk=(-Gamma*(2.0*Vp_VSource_int_Bulk*d10_sqrt0)/(2.0*d00_sqrt0)/(2.0*d00_sqrt0));
1471 nq=(1.0+(Gamma/(2.0*d00_sqrt0)));
1475 double m00_sqrt(d00_sqrt0,(0.25+iff))
1476 #if defined(_DERIVATE)
1477 double m10_sqrt(d10_sqrt0,d00_sqrt0,(0.25+iff))
1479 #if defined(_DERIVATE)
1480 Xf_VGate_Bulk=iff_VGate_Bulk*d10_sqrt0;
1481 Xf_VDrain_int_Bulk=iff_VDrain_int_Bulk*d10_sqrt0;
1482 Xf_VSource_int_Bulk=iff_VSource_int_Bulk*d10_sqrt0;
1487 double m00_sqrt(d00_sqrt0,(0.25+ir))
1488 #if defined(_DERIVATE)
1489 double m10_sqrt(d10_sqrt0,d00_sqrt0,(0.25+ir))
1491 #if defined(_DERIVATE)
1492 Xr_VGate_Bulk=ir_VGate_Bulk*d10_sqrt0;
1493 Xr_VDrain_int_Bulk=ir_VDrain_int_Bulk*d10_sqrt0;
1494 Xr_VSource_int_Bulk=ir_VSource_int_Bulk*d10_sqrt0;
1498 #if defined(_DERIVATE)
1499 qI_VGate_Bulk=(((-nq_VGate_Bulk)*(((con30*(((Xf*Xf)+(Xf*Xr))+(Xr*Xr)))/(Xf+Xr))-1.0))+((-nq)*(((con30*((((Xf_VGate_Bulk*Xf)+(Xf*Xf_VGate_Bulk))+((Xf_VGate_Bulk*Xr)+(Xf*Xr_VGate_Bulk)))+((Xr_VGate_Bulk*Xr)+(Xr*Xr_VGate_Bulk))))*(Xf+Xr)-(con30*(((Xf*Xf)+(Xf*Xr))+(Xr*Xr)))*(Xf_VGate_Bulk+Xr_VGate_Bulk))/(Xf+Xr)/(Xf+Xr))));
1500 qI_VDrain_int_Bulk=(((-nq_VDrain_int_Bulk)*(((con30*(((Xf*Xf)+(Xf*Xr))+(Xr*Xr)))/(Xf+Xr))-1.0))+((-nq)*(((con30*((((Xf_VDrain_int_Bulk*Xf)+(Xf*Xf_VDrain_int_Bulk))+((Xf_VDrain_int_Bulk*Xr)+(Xf*Xr_VDrain_int_Bulk)))+((Xr_VDrain_int_Bulk*Xr)+(Xr*Xr_VDrain_int_Bulk))))*(Xf+Xr)-(con30*(((Xf*Xf)+(Xf*Xr))+(Xr*Xr)))*(Xf_VDrain_int_Bulk+Xr_VDrain_int_Bulk))/(Xf+Xr)/(Xf+Xr))));
1501 qI_VSource_int_Bulk=(((-nq_VSource_int_Bulk)*(((con30*(((Xf*Xf)+(Xf*Xr))+(Xr*Xr)))/(Xf+Xr))-1.0))+((-nq)*(((con30*((((Xf_VSource_int_Bulk*Xf)+(Xf*Xf_VSource_int_Bulk))+((Xf_VSource_int_Bulk*Xr)+(Xf*Xr_VSource_int_Bulk)))+((Xr_VSource_int_Bulk*Xr)+(Xr*Xr_VSource_int_Bulk))))*(Xf+Xr)-(con30*(((Xf*Xf)+(Xf*Xr))+(Xr*Xr)))*(Xf_VSource_int_Bulk+Xr_VSource_int_Bulk))/(Xf+Xr)/(Xf+Xr))));
1503 qI=((-nq)*(((con30*(((Xf*Xf)+(Xf*Xr))+(Xr*Xr)))/(Xf+Xr))-1.0));
1511 double m00_sqrt(d00_sqrt0,((Vp+Phi_T)+1
e-6))
1512 #if defined(_DERIVATE)
1513 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Vp+Phi_T)+1
e-6))
1515 #if defined(_DERIVATE)
1516 qB_VGate_Bulk=((((-Gammaa)*Vp_VGate_Bulk*d10_sqrt0)/
_vt_nom)-((((qI_VGate_Bulk*(nq-1.0))+(qI*nq_VGate_Bulk))*nq-(qI*(nq-1.0))*nq_VGate_Bulk)/nq/nq));
1517 qB_VDrain_int_Bulk=((((-Gammaa)*Vp_VDrain_int_Bulk*d10_sqrt0)/
_vt_nom)-((((qI_VDrain_int_Bulk*(nq-1.0))+(qI*nq_VDrain_int_Bulk))*nq-(qI*(nq-1.0))*nq_VDrain_int_Bulk)/nq/nq));
1518 qB_VSource_int_Bulk=((((-Gammaa)*Vp_VSource_int_Bulk*d10_sqrt0)/
_vt_nom)-((((qI_VSource_int_Bulk*(nq-1.0))+(qI*nq_VSource_int_Bulk))*nq-(qI*(nq-1.0))*nq_VSource_int_Bulk)/nq/nq));
1520 qB=((((-Gammaa)*d00_sqrt0)/
_vt_nom)-((qI*(nq-1.0))/nq));
1525 #if defined(_DERIVATE)
1526 qB_VGate_Bulk=((-VGprime_VGate_Bulk)/
_vt_nom);
1527 qB_VDrain_int_Bulk=0.0;
1528 qB_VSource_int_Bulk=0.0;
1539 double m00_sqrt(d00_sqrt0,((Vp+Phi_T)+1
e-6))
1540 #if defined(_DERIVATE)
1541 double m10_sqrt(d10_sqrt0,d00_sqrt0,((Vp+Phi_T)+1
e-6))
1543 #if defined(_DERIVATE)
1544 qB_VGate_Bulk=((((-Gamma)*Vp_VGate_Bulk*d10_sqrt0)/
_vt_nom)-((((qI_VGate_Bulk*(nq-1.0))+(qI*nq_VGate_Bulk))*nq-(qI*(nq-1.0))*nq_VGate_Bulk)/nq/nq));
1545 qB_VDrain_int_Bulk=((((-Gamma)*Vp_VDrain_int_Bulk*d10_sqrt0)/
_vt_nom)-((((qI_VDrain_int_Bulk*(nq-1.0))+(qI*nq_VDrain_int_Bulk))*nq-(qI*(nq-1.0))*nq_VDrain_int_Bulk)/nq/nq));
1546 qB_VSource_int_Bulk=((((-Gamma)*Vp_VSource_int_Bulk*d10_sqrt0)/
_vt_nom)-((((qI_VSource_int_Bulk*(nq-1.0))+(qI*nq_VSource_int_Bulk))*nq-(qI*(nq-1.0))*nq_VSource_int_Bulk)/nq/nq));
1548 qB=((((-Gamma)*d00_sqrt0)/
_vt_nom)-((qI*(nq-1.0))/nq));
1553 #if defined(_DERIVATE)
1554 qB_VGate_Bulk=((-VGprime_VGate_Bulk)/
_vt_nom);
1555 qB_VDrain_int_Bulk=0.0;
1556 qB_VSource_int_Bulk=0.0;
1565 double m00_fabs(d00_fabs0,(qB+(eta*qI)))
1566 #if defined(_DERIVATE)
1567 double m10_fabs(d10_fabs0,d00_fabs0,(qB+(eta*qI)))
1569 #if defined(_DERIVATE)
1570 Beta_VSource_int_Bulk=((Beta0prime_VSource_int_Bulk*(1.0+(con21*d00_fabs0))-Beta0prime*(con21*(qB_VSource_int_Bulk+(eta*qI_VSource_int_Bulk))*d10_fabs0))/(1.0+(con21*d00_fabs0))/(1.0+(con21*d00_fabs0)));
1571 Beta_VDrain_int_Bulk=((Beta0prime_VDrain_int_Bulk*(1.0+(con21*d00_fabs0))-Beta0prime*(con21*(qB_VDrain_int_Bulk+(eta*qI_VDrain_int_Bulk))*d10_fabs0))/(1.0+(con21*d00_fabs0))/(1.0+(con21*d00_fabs0)));
1572 Beta_VGate_Bulk=((Beta0prime_VGate_Bulk*(1.0+(con21*d00_fabs0))-Beta0prime*(con21*(qB_VGate_Bulk+(eta*qI_VGate_Bulk))*d10_fabs0))/(1.0+(con21*d00_fabs0))/(1.0+(con21*d00_fabs0)));
1574 Beta=(Beta0prime/(1.0+(con21*d00_fabs0)));
1579 #if defined(_DERIVATE)
1580 Beta_VSource_int_Bulk=(-con22*(Theta*Vp_VSource_int_Bulk)/(1+(Theta*Vp))/(1+(Theta*Vp)));
1581 Beta_VDrain_int_Bulk=(-con22*(Theta*Vp_VDrain_int_Bulk)/(1+(Theta*Vp))/(1+(Theta*Vp)));
1582 Beta_VGate_Bulk=(-con22*(Theta*Vp_VGate_Bulk)/(1+(Theta*Vp))/(1+(Theta*Vp)));
1584 Beta=(con22/(1+(Theta*Vp)));
1586 #if defined(_DERIVATE)
1587 Ispecific_VGate_Bulk=(((2.0*n_VGate_Bulk)*Beta)+((2.0*
n)*Beta_VGate_Bulk))*
_vt_nom*
_vt_nom;
1588 Ispecific_VDrain_int_Bulk=(((2.0*n_VDrain_int_Bulk)*Beta)+((2.0*
n)*Beta_VDrain_int_Bulk))*
_vt_nom*
_vt_nom;
1589 Ispecific_VSource_int_Bulk=(((2.0*n_VSource_int_Bulk)*Beta)+((2.0*
n)*Beta_VSource_int_Bulk))*
_vt_nom*
_vt_nom;
1595 #if defined(_DERIVATE)
1596 Ids_VGate_Bulk=((Ispecific_VGate_Bulk*(iff-irprime))+(Ispecific*(iff_VGate_Bulk-irprime_VGate_Bulk)));
1597 Ids_VDrain_int_Bulk=((Ispecific_VDrain_int_Bulk*(iff-irprime))+(Ispecific*(iff_VDrain_int_Bulk-irprime_VDrain_int_Bulk)));
1598 Ids_VSource_int_Bulk=((Ispecific_VSource_int_Bulk*(iff-irprime))+(Ispecific*(iff_VSource_int_Bulk-irprime_VSource_int_Bulk)));
1600 Ids=(Ispecific*(iff-irprime));
1601 #if defined(_DERIVATE)
1602 Vib_VSource_int_Bulk=((VD_VSource_int_Bulk-VS_VSource_int_Bulk)-((Ibn*2.0)*Vdss_VSource_int_Bulk));
1603 Vib_VDrain_int_Bulk=((VD_VDrain_int_Bulk-VS_VDrain_int_Bulk)-((Ibn*2.0)*Vdss_VDrain_int_Bulk));
1604 Vib_VGate_Bulk=(-((Ibn*2.0)*Vdss_VGate_Bulk));
1606 Vib=((VD-VS)-((Ibn*2.0)*Vdss));
1611 double m00_exp(d00_exp0,(((-Ibb_T)*Lc)/Vib))
1612 #if defined(_DERIVATE)
1613 #define d10_exp0 d00_exp0
1615 #if defined(_DERIVATE)
1616 Idb_VGate_Bulk=((((Ids_VGate_Bulk*(Iba/Ibb_T)*Vib)+((Ids*(Iba/Ibb_T))*Vib_VGate_Bulk))*d00_exp0)+(((Ids*(Iba/Ibb_T))*Vib)*(-((-Ibb_T)*Lc)*Vib_VGate_Bulk/Vib/Vib)*d10_exp0));
1617 Idb_VDrain_int_Bulk=((((Ids_VDrain_int_Bulk*(Iba/Ibb_T)*Vib)+((Ids*(Iba/Ibb_T))*Vib_VDrain_int_Bulk))*d00_exp0)+(((Ids*(Iba/Ibb_T))*Vib)*(-((-Ibb_T)*Lc)*Vib_VDrain_int_Bulk/Vib/Vib)*d10_exp0));
1618 Idb_VSource_int_Bulk=((((Ids_VSource_int_Bulk*(Iba/Ibb_T)*Vib)+((Ids*(Iba/Ibb_T))*Vib_VSource_int_Bulk))*d00_exp0)+(((Ids*(Iba/Ibb_T))*Vib)*(-((-Ibb_T)*Lc)*Vib_VSource_int_Bulk/Vib/Vib)*d10_exp0));
1620 Idb=(((Ids*(Iba/Ibb_T))*Vib)*d00_exp0);
1625 #if defined(_DERIVATE)
1627 Idb_VDrain_int_Bulk=0.0;
1628 Idb_VSource_int_Bulk=0.0;
1635 #if defined(_DERIVATE)
1636 Ids_VGate_Bulk=((Ispecific_VGate_Bulk*(iff-ir))+(Ispecific*(iff_VGate_Bulk-ir_VGate_Bulk)));
1637 Ids_VDrain_int_Bulk=((Ispecific_VDrain_int_Bulk*(iff-ir))+(Ispecific*(iff_VDrain_int_Bulk-ir_VDrain_int_Bulk)));
1638 Ids_VSource_int_Bulk=((Ispecific_VSource_int_Bulk*(iff-ir))+(Ispecific*(iff_VSource_int_Bulk-ir_VSource_int_Bulk)));
1640 Ids=(Ispecific*(iff-ir));
1644 #if defined(_DERIVATE)
1645 double m10_fabs(d10_fabs0,d00_fabs0,qI)
1647 #if defined(_DERIVATE)
1648 Sthermal_VSource_int_Bulk=(((fourkt*Beta_VSource_int_Bulk)*d00_fabs0)+((fourkt*Beta)*qI_VSource_int_Bulk*d10_fabs0));
1649 Sthermal_VDrain_int_Bulk=(((fourkt*Beta_VDrain_int_Bulk)*d00_fabs0)+((fourkt*Beta)*qI_VDrain_int_Bulk*d10_fabs0));
1650 Sthermal_VGate_Bulk=(((fourkt*Beta_VGate_Bulk)*d00_fabs0)+((fourkt*Beta)*qI_VGate_Bulk*d10_fabs0));
1652 Sthermal=((fourkt*Beta)*d00_fabs0);
1654 #if defined(_DERIVATE)
1655 T_1_VGate_Bulk=(-4.0*Ispecific_VGate_Bulk/Ispecific/Ispecific);
1656 T_1_VDrain_int_Bulk=(-4.0*Ispecific_VDrain_int_Bulk/Ispecific/Ispecific);
1657 T_1_VSource_int_Bulk=(-4.0*Ispecific_VSource_int_Bulk/Ispecific/Ispecific);
1659 T_1=(4.0/Ispecific);
1661 double m00_sqrt(d00_sqrt0,((T_1*iff)+1.0))
1662 double
m00_sqrt(d00_sqrt1,((T_1*ir)+1.0))
1663 #if defined(_DERIVATE)
1664 double m10_sqrt(d10_sqrt0,d00_sqrt0,((T_1*iff)+1.0))
1665 double
m10_sqrt(d10_sqrt1,d00_sqrt1,((T_1*ir)+1.0))
1667 #if defined(_DERIVATE)
1668 gm_VSource_int_Bulk=((Beta_VSource_int_Bulk*_vt_nom*(d00_sqrt0-d00_sqrt1))+((Beta*
_vt_nom)*(((T_1_VSource_int_Bulk*iff)+(T_1*iff_VSource_int_Bulk))*d10_sqrt0-((T_1_VSource_int_Bulk*ir)+(T_1*ir_VSource_int_Bulk))*d10_sqrt1)));
1669 gm_VDrain_int_Bulk=((Beta_VDrain_int_Bulk*_vt_nom*(d00_sqrt0-d00_sqrt1))+((Beta*
_vt_nom)*(((T_1_VDrain_int_Bulk*iff)+(T_1*iff_VDrain_int_Bulk))*d10_sqrt0-((T_1_VDrain_int_Bulk*ir)+(T_1*ir_VDrain_int_Bulk))*d10_sqrt1)));
1670 gm_VGate_Bulk=((Beta_VGate_Bulk*_vt_nom*(d00_sqrt0-d00_sqrt1))+((Beta*
_vt_nom)*(((T_1_VGate_Bulk*iff)+(T_1*iff_VGate_Bulk))*d10_sqrt0-((T_1_VGate_Bulk*ir)+(T_1*ir_VGate_Bulk))*d10_sqrt1)));
1672 gm=((Beta*
_vt_nom)*(d00_sqrt0-d00_sqrt1));
1674 #if defined(_DERIVATE)
1675 Sflicker_VSource_int_Bulk=(((con23*gm_VSource_int_Bulk)*gm)+((con23*gm)*gm_VSource_int_Bulk));
1676 Sflicker_VDrain_int_Bulk=(((con23*gm_VDrain_int_Bulk)*gm)+((con23*gm)*gm_VDrain_int_Bulk));
1677 Sflicker_VGate_Bulk=(((con23*gm_VGate_Bulk)*gm)+((con23*gm)*gm_VGate_Bulk));
1679 Sflicker=((con23*gm)*gm);
1680 #if defined(_DYNAMIC)
1681 #if defined(_DERIVATE)
1682 qb_VGate_Bulk=(con24*qB_VGate_Bulk);
1683 qb_VDrain_int_Bulk=(con24*qB_VDrain_int_Bulk);
1684 qb_VSource_int_Bulk=(con24*qB_VSource_int_Bulk);
1688 #if defined(_DYNAMIC)
1689 #if defined(_DERIVATE)
1690 qg_VGate_Bulk=(con24*((-qI_VGate_Bulk)-qB_VGate_Bulk));
1691 qg_VDrain_int_Bulk=(con24*((-qI_VDrain_int_Bulk)-qB_VDrain_int_Bulk));
1692 qg_VSource_int_Bulk=(con24*((-qI_VSource_int_Bulk)-qB_VSource_int_Bulk));
1694 qg=(con24*((-qI)-qB));
1696 #if defined(_DYNAMIC)
1697 #if defined(_DERIVATE)
1698 qgso_VGate_Bulk=(con27*VG_VGate_Bulk);
1699 qgso_VDrain_int_Bulk=(con27*(-VS_VDrain_int_Bulk));
1700 qgso_VSource_int_Bulk=(con27*(-VS_VSource_int_Bulk));
1702 qgso=(con27*(VG-VS));
1704 #if defined(_DYNAMIC)
1705 #if defined(_DERIVATE)
1706 qgdo_VGate_Bulk=(con28*VG_VGate_Bulk);
1707 qgdo_VSource_int_Bulk=(con28*(-VD_VSource_int_Bulk));
1708 qgdo_VDrain_int_Bulk=(con28*(-VD_VDrain_int_Bulk));
1710 qgdo=(con28*(VG-VD));
1712 #if defined(_DYNAMIC)
1713 #if defined(_DERIVATE)
1714 qgbo_VGate_Bulk=(con29*VG_VGate_Bulk);
1721 #if defined(_DERIVATE)
1722 V1_VBulk_Source_int=0.0;
1723 V1_VBulk_Drain_int=(p_n_MOS);
1726 #if defined(_DERIVATE)
1727 V2_VBulk_Drain_int=0.0;
1728 V2_VBulk_Source_int=(p_n_MOS);
1734 #if defined(_DERIVATE)
1735 V2_VBulk_Drain_int=(p_n_MOS);
1736 V2_VBulk_Source_int=0.0;
1739 #if defined(_DERIVATE)
1740 V1_VBulk_Source_int=(p_n_MOS);
1741 V1_VBulk_Drain_int=0.0;
1747 #if defined(_DERIVATE)
1748 double m10_limexp(d10_limexp0,d00_limexp0,(V1*con31))
1750 #if defined(_DERIVATE)
1751 Id1_VBulk_Source_int=((V1>(-con32))?((Area2*V1_VBulk_Source_int*con31*d10_limexp0)+(GMIN*V1_VBulk_Source_int)):0.0);
1752 Id1_VBulk_Drain_int=((V1>(-con32))?((Area2*V1_VBulk_Drain_int*con31*d10_limexp0)+(GMIN*V1_VBulk_Drain_int)):0.0);
1754 Id1=((V1>(-con32))?((Area2*(d00_limexp0-1.0))+(GMIN*V1)):0);
1756 #if defined(_DYNAMIC)
1758 double m00_pow(d00_pow0,(1-(V1/Vj_T2)),(1-M))
1759 #if defined(_DERIVATE)
1760 double m10_pow(d10_pow0,d00_pow0,(1-(V1/Vj_T2)),(1-M))
1762 #if defined(_DERIVATE)
1763 Qd1_VBulk_Source_int=((V1<con33)?((Tt*Id1_VBulk_Source_int)+(Area1*(-(d10_pow0*(-(V1_VBulk_Source_int/Vj_T2)))))):0.0);
1764 Qd1_VBulk_Drain_int=((V1<con33)?((Tt*Id1_VBulk_Drain_int)+(Area1*(-(d10_pow0*(-(V1_VBulk_Drain_int/Vj_T2)))))):0.0);
1766 Qd1=((V1<con33)?((Tt*Id1)+(Area1*(1-d00_pow0))):0);
1769 #if defined(_DERIVATE)
1770 Id2_VBulk_Source_int=((V1<=(-con32))?(GMIN*V1_VBulk_Source_int):0.0);
1771 Id2_VBulk_Drain_int=((V1<=(-con32))?(GMIN*V1_VBulk_Drain_int):0.0);
1773 Id2=((V1<=(-con32))?((-Area2)+(GMIN*V1)):0);
1774 #if defined(_DYNAMIC)
1775 #if defined(_DERIVATE)
1776 Qd2_VBulk_Source_int=((V1>=con33)?((Tt*Id1_VBulk_Source_int)+(Area3*(DP4*((F3*V1_VBulk_Source_int)+(DP2*((V1_VBulk_Source_int*V1)+(V1*V1_VBulk_Source_int))))))):0.0);
1777 Qd2_VBulk_Drain_int=((V1>=con33)?((Tt*Id1_VBulk_Drain_int)+(Area3*(DP4*((F3*V1_VBulk_Drain_int)+(DP2*((V1_VBulk_Drain_int*V1)+(V1*V1_VBulk_Drain_int))))))):0.0);
1779 Qd2=((V1>=con33)?((Tt*Id1)+(Area3*(DP4*((F3*(V1-DP3))+(DP2*((V1*V1)-DP1)))))):0);
1783 #if defined(_DERIVATE)
1784 double m10_limexp(d10_limexp0,d00_limexp0,(V2*con31))
1786 #if defined(_DERIVATE)
1787 Is1_VBulk_Drain_int=((V2>(-con32))?((Area2*V2_VBulk_Drain_int*con31*d10_limexp0)+(GMIN*V2_VBulk_Drain_int)):0.0);
1788 Is1_VBulk_Source_int=((V2>(-con32))?((Area2*V2_VBulk_Source_int*con31*d10_limexp0)+(GMIN*V2_VBulk_Source_int)):0.0);
1790 Is1=((V2>(-con32))?((Area2*(d00_limexp0-1.0))+(GMIN*V2)):0);
1792 #if defined(_DYNAMIC)
1794 double m00_pow(d00_pow0,(1-(V2/Vj_T2)),(1-M))
1795 #if defined(_DERIVATE)
1796 double m10_pow(d10_pow0,d00_pow0,(1-(V2/Vj_T2)),(1-M))
1798 #if defined(_DERIVATE)
1799 Qs1_VBulk_Drain_int=((V2<con33)?((Tt*Is1_VBulk_Drain_int)+(Area1*(-(d10_pow0*(-(V2_VBulk_Drain_int/Vj_T2)))))):0.0);
1800 Qs1_VBulk_Source_int=((V2<con33)?((Tt*Is1_VBulk_Source_int)+(Area1*(-(d10_pow0*(-(V2_VBulk_Source_int/Vj_T2)))))):0.0);
1802 Qs1=((V2<con33)?((Tt*Is1)+(Area1*(1-d00_pow0))):0);
1805 #if defined(_DERIVATE)
1806 Is2_VBulk_Drain_int=((V2<=(-con32))?(GMIN*V2_VBulk_Drain_int):0.0);
1807 Is2_VBulk_Source_int=((V2<=(-con32))?(GMIN*V2_VBulk_Source_int):0.0);
1809 Is2=((V2<=(-con32))?((-Area2)+(GMIN*V2)):0);
1810 #if defined(_DYNAMIC)
1811 #if defined(_DERIVATE)
1812 Qs2_VBulk_Drain_int=((V2>=con33)?((Tt*Is1_VBulk_Drain_int)+(Area3*(DP4*((F3*V2_VBulk_Drain_int)+(DP2*((V2_VBulk_Drain_int*V2)+(V2*V2_VBulk_Drain_int))))))):0.0);
1813 Qs2_VBulk_Source_int=((V2>=con33)?((Tt*Is1_VBulk_Source_int)+(Area3*(DP4*((F3*V2_VBulk_Source_int)+(DP2*((V2_VBulk_Source_int*V2)+(V2*V2_VBulk_Source_int))))))):0.0);
1815 Qs2=((V2>=con33)?((Tt*Is1)+(Area3*(DP4*((F3*(V2-DP3))+(DP2*((V2*V2)-DP1)))))):0);
1821 #if defined(_DERIVATE)
1825 #if defined(_DERIVATE)
1829 #if defined(_DERIVATE)
1838 #if defined(_DERIVATE)
1844 #if defined(_DYNAMIC)
1846 #if defined(_DERIVATE)
1852 #if defined(_DYNAMIC)
1854 #if defined(_DERIVATE)
1860 #if defined(_DYNAMIC)
1862 #if defined(_DERIVATE)
1868 #if defined(_DYNAMIC)
1870 #if defined(_DERIVATE)
1876 #if defined(_DYNAMIC)
1878 #if defined(_DERIVATE)
1884 #if defined(_DYNAMIC)
1886 #if defined(_DERIVATE)
1892 #if defined(_DYNAMIC)
1894 #if defined(_DERIVATE)
1899 #if defined(_DERIVATE)
1903 #if defined(_DYNAMIC)
1905 #if defined(_DERIVATE)
1911 #if defined(_DERIVATE)
1915 #if defined(_DYNAMIC)
1917 #if defined(_DERIVATE)
1930 #if defined(_DERIVATE)
1934 #if defined(_DERIVATE)
1938 #if defined(_DERIVATE)
1947 #if defined(_DERIVATE)
1953 #if defined(_DYNAMIC)
1955 #if defined(_DERIVATE)
1961 #if defined(_DYNAMIC)
1963 #if defined(_DERIVATE)
1969 #if defined(_DYNAMIC)
1971 #if defined(_DERIVATE)
1977 #if defined(_DYNAMIC)
1979 #if defined(_DERIVATE)
1985 #if defined(_DYNAMIC)
1987 #if defined(_DERIVATE)
1993 #if defined(_DYNAMIC)
1995 #if defined(_DERIVATE)
2001 #if defined(_DYNAMIC)
2003 #if defined(_DERIVATE)
2008 #if defined(_DERIVATE)
2012 #if defined(_DYNAMIC)
2014 #if defined(_DERIVATE)
2020 #if defined(_DERIVATE)
2024 #if defined(_DYNAMIC)
2026 #if defined(_DERIVATE)
2052 for (
int i1 = 0; i1 < 6; i1++) {
2053 setI (i1, _rhs[i1]);
2054 for (
int i2 = 0; i2 < 6; i2++) {
2055 setY (i1, i2, _jstat[i1][i2]);
2089 matrix EKV26MOS::calcMatrixY (nr_double_t frequency)
2095 for (
int i1 = 0; i1 < 6; i1++) {
2096 for (
int i2 = 0; i2 < 6; i2++) {
2097 y (i1,i2) =
rect (_jstat[i1][i2], _jdyna[i1][i2] * 2 *
M_PI * _freq);
2131 int i1, i2, i3, i4, state;
2134 for (i1 = 0; i1 < 6; i1++) {
2135 for (i2 = 0; i2 < 6; i2++) {
2136 state = 2 * (i2 + 6 * i1);
2138 if (_charges[i1][i2] != 0.0)
2143 for (i1 = 0; i1 < 6; i1++) {
2144 state = 2 * (i1 + 6 * i1);
2145 if (_charges[i1][i1] != 0.0)
2150 for (i1 = 0; i1 < 6; i1++) {
2151 for (i2 = 0; i2 < 6; i2++) {
2153 for (i3 = 0; i3 < 6; i3++) {
2154 for (i4 = 0; i4 < 6; i4++) {
2156 if (_caps[i1][i2][i3][i4] != 0.0)
2161 for (i1 = 0; i1 < 6; i1++) {
2162 for (i2 = 0; i2 < 6; i2++) {
2164 for (i3 = 0; i3 < 6; i3++) {
2165 if (_caps[i1][i2][i3][i3] != 0.0)
2170 for (i1 = 0; i1 < 6; i1++) {
2171 for (i3 = 0; i3 < 6; i3++) {
2172 for (i4 = 0; i4 < 6; i4++) {
2174 if (_caps[i1][i1][i3][i4] != 0.0)
2179 for (i1 = 0; i1 < 6; i1++) {
2180 for (i3 = 0; i3 < 6; i3++) {
2181 if (_caps[i1][i1][i3][i3] != 0.0)
2187 matrix EKV26MOS::calcMatrixCy (nr_double_t frequency)
2235 for (
int i1 = 0; i1 < 6; i1++) {
2236 setQ (i1, _qhs[i1]);
2237 setCV (i1, _chs[i1]);
2238 setGV (i1, _ghs[i1]);
2239 for (
int i2 = 0; i2 < 6; i2++) {
2240 setQV (i1, i2, _jdyna[i1][i2]);