diff --git a/src/spicelib/devices/mos2/mos2load.c b/src/spicelib/devices/mos2/mos2load.c index e5b1ee724..161a1641a 100644 --- a/src/spicelib/devices/mos2/mos2load.c +++ b/src/spicelib/devices/mos2/mos2load.c @@ -431,8 +431,8 @@ next1: if(vbs <= -3*vt) { * */ - double arg; - double sarg; + double arg1; + double sarg1; double a4[4],b4[4],x4[8],poly4[8]; double beta1; double dsrgdb; @@ -569,15 +569,15 @@ next1: if(vbs <= -3*vt) { */ if (lvbs <= 0.0) { - sarg = sqrt(phiMinVbs); - dsrgdb = -0.5/sarg; + sarg1 = sqrt(phiMinVbs); + dsrgdb = -0.5/sarg1; d2sdb2 = 0.5*dsrgdb/phiMinVbs; } else { sphi = sqrt(here->MOS2tPhi); sphi3 = here->MOS2tPhi*sphi; - sarg = sphi/(1.0+0.5*lvbs/here->MOS2tPhi); - tmp = sarg/sphi3; - dsrgdb = -0.5*sarg*tmp; + sarg1 = sphi/(1.0+0.5*lvbs/here->MOS2tPhi); + tmp = sarg1/sphi3; + dsrgdb = -0.5*sarg1*tmp; d2sdb2 = -dsrgdb*tmp; } if ((lvbs-lvds) <= 0) { @@ -606,7 +606,7 @@ next1: if(vbs <= -3*vt) { if ((model->MOS2gamma > 0.0) || (model->MOS2substrateDoping > 0.0)) { xwd = model->MOS2xd*barg; - xws = model->MOS2xd*sarg; + xws = model->MOS2xd*sarg1; /* * short-channel effect with vds .ne. 0.0 @@ -655,14 +655,14 @@ next1: if(vbs <= -3*vt) { dgdvds = 0.0; dgddb2 = 0.0; } - von = vbin+gamasd*sarg; + von = vbin+gamasd*sarg1; vth = von; vdsat = 0.0; if (model->MOS2fastSurfaceStateDensity != 0.0 && OxideCap != 0.0) { /* XXX constant per model */ cfs = CHARGE*model->MOS2fastSurfaceStateDensity* 1e4 /*(cm**2/m**2)*/; - cdonco = -(gamasd*dsrgdb+dgddvb*sarg)+factor; + cdonco = -(gamasd*dsrgdb+dgddvb*sarg1)+factor; xn = 1.0+cfs/OxideCap*here->MOS2m* here->MOS2w*EffectiveLength+cdonco; @@ -686,20 +686,20 @@ next1: if(vbs <= -3*vt) { * compute some more useful quantities */ - sarg3 = sarg*sarg*sarg; + sarg3 = sarg1*sarg1*sarg1; /* XXX constant per model */ sbiarg = sqrt(here->MOS2tBulkPot); gammad = gamasd; dgdvbs = dgddvb; body = barg*barg*barg-sarg3; - gdbdv = 2.0*gammad*(barg*barg*dbrgdb-sarg*sarg*dsrgdb); - dodvbs = -factor+dgdvbs*sarg+gammad*dsrgdb; + gdbdv = 2.0*gammad*(barg*barg*dbrgdb-sarg1*sarg1*dsrgdb); + dodvbs = -factor+dgdvbs*sarg1+gammad*dsrgdb; if (model->MOS2fastSurfaceStateDensity == 0.0) goto line400; if (OxideCap == 0.0) goto line410; - dxndvb = 2.0*dgdvbs*dsrgdb+gammad*d2sdb2+dgddb2*sarg; + dxndvb = 2.0*dgdvbs*dsrgdb+gammad*d2sdb2+dgddb2*sarg1; dodvbs = dodvbs+vt*dxndvb; dxndvd = dgdvds*dsrgdb; - dodvds = dgdvds*sarg+vt*dxndvd; + dodvds = dgdvds*sarg1+vt*dxndvd; /* * evaluate effective mobility and its derivatives */ @@ -740,12 +740,12 @@ line500: dsdvgs = 0.0; dsdvbs = 0.0; } else { - arg = sqrt(1.0+4.0*argv/gammd2); - vdsat = (vgsx-vbin)/eta+gammd2*(1.0-arg)/2.0; + arg1 = sqrt(1.0+4.0*argv/gammd2); + vdsat = (vgsx-vbin)/eta+gammd2*(1.0-arg1)/2.0; vdsat = MAX(vdsat,0.0); - dsdvgs = (1.0-1.0/arg)/eta; - dsdvbs = (gammad*(1.0-arg)+2.0*argv/(gammad*arg))/ - eta*dgdvbs+1.0/arg+factor*dsdvgs; + dsdvgs = (1.0-1.0/arg1)/eta; + dsdvbs = (gammad*(1.0-arg1)+2.0*argv/(gammad*arg1))/ + eta*dgdvbs+1.0/arg1+factor*dsdvgs; } } else { vdsat = (vgsx-vbin)/eta; @@ -838,15 +838,15 @@ line500: dbsrdb = -0.5*bsarg*bsarg/sphi3; } bodys = bsarg*bsarg*bsarg-sarg3; - gdbdvs = 2.0*gammad*(bsarg*bsarg*dbsrdb-sarg*sarg*dsrgdb); + gdbdvs = 2.0*gammad*(bsarg*bsarg*dbsrdb-sarg1*sarg1*dsrgdb); if (model->MOS2maxDriftVel <= 0) { if (model->MOS2substrateDoping == 0.0) goto line610; if (xlamda > 0.0) goto line610; argv = (lvds-vdsat)/4.0; sargv = sqrt(1.0+argv*argv); - arg = sqrt(argv+sargv); + arg1 = sqrt(argv+sargv); xlfact = model->MOS2xd/(EffectiveLength*lvds); - xlamda = xlfact*arg; + xlamda = xlfact*arg1; dldsat = lvds*xlamda/(8.0*sargv); } else { argv = (vgsx-vbin)/eta-vdsat; @@ -915,13 +915,13 @@ line610: goto line1050; } - here->MOS2gds = beta1*(von-vbin-gammad*sarg)*exp(argg* + here->MOS2gds = beta1*(von-vbin-gammad*sarg1)*exp(argg* (lvgs-von)); goto line1050; } - here->MOS2gds = beta1*(lvgs-vbin-gammad*sarg); + here->MOS2gds = beta1*(lvgs-vbin-gammad*sarg1); goto line1050; } @@ -971,25 +971,25 @@ line900: * linear region */ cdrain = beta1*((lvgs-vbin-eta*lvds/2.0)*lvds-gammad*body/1.5); - arg = cdrain*(dudvgs/ufact-dldvgs/clfact); - here->MOS2gm = arg+beta1*lvds; - arg = cdrain*(dudvds/ufact-dldvds/clfact); - here->MOS2gds = arg+beta1*(lvgs-vbin-eta* + arg1 = cdrain*(dudvgs/ufact-dldvgs/clfact); + here->MOS2gm = arg1+beta1*lvds; + arg1 = cdrain*(dudvds/ufact-dldvds/clfact); + here->MOS2gds = arg1+beta1*(lvgs-vbin-eta* lvds-gammad*barg-dgdvds*body/1.5); - arg = cdrain*(dudvbs/ufact-dldvbs/clfact); - here->MOS2gmbs = arg-beta1*(gdbdv+dgdvbs*body/1.5-factor*lvds); + arg1 = cdrain*(dudvbs/ufact-dldvbs/clfact); + here->MOS2gmbs = arg1-beta1*(gdbdv+dgdvbs*body/1.5-factor*lvds); } else { /* * saturation region */ cdrain = beta1*((lvgs-vbin-eta* vdsat/2.0)*vdsat-gammad*bodys/1.5); - arg = cdrain*(dudvgs/ufact-dldvgs/clfact); - here->MOS2gm = arg+beta1*vdsat+beta1*(lvgs- + arg1 = cdrain*(dudvgs/ufact-dldvgs/clfact); + here->MOS2gm = arg1+beta1*vdsat+beta1*(lvgs- vbin-eta*vdsat-gammad*bsarg)*dsdvgs; here->MOS2gds = -cdrain*dldvds/clfact-beta1*dgdvds*bodys/1.5; - arg = cdrain*(dudvbs/ufact-dldvbs/clfact); - here->MOS2gmbs = arg-beta1*(gdbdvs+dgdvbs*bodys/1.5-factor* + arg1 = cdrain*(dudvbs/ufact-dldvbs/clfact); + here->MOS2gmbs = arg1-beta1*(gdbdvs+dgdvbs*bodys/1.5-factor* vdsat)+beta1* (lvgs-vbin-eta*vdsat-gammad*bsarg)*dsdvbs; } /* diff --git a/src/spicelib/devices/mos6/mos6load.c b/src/spicelib/devices/mos6/mos6load.c index a334393ea..8ab2d0281 100644 --- a/src/spicelib/devices/mos6/mos6load.c +++ b/src/spicelib/devices/mos6/mos6load.c @@ -464,8 +464,8 @@ next1: if(vbs <= -3*vt) { /* the following 14 variables are local to this code block until * it is obvious that they can be made global */ - double arg; - double sarg; + double arg1; + double sarg1; double vgon; double vdshere, vbsvbd; double idsat, lambda, vonbm = 0.0; @@ -473,14 +473,14 @@ next1: if(vbs <= -3*vt) { vbsvbd = (here->MOS6mode==1?vbs:vbd); if (vbsvbd <= 0 ) { - sarg = sqrt(here->MOS6tPhi - vbsvbd); + sarg1 = sqrt(here->MOS6tPhi - vbsvbd); } else { - sarg = sqrt(here->MOS6tPhi); - sarg = sarg - vbsvbd / (sarg+sarg); - sarg = MAX(0,sarg); + sarg1 = sqrt(here->MOS6tPhi); + sarg1 = sarg1 - vbsvbd / (sarg1+sarg1); + sarg1 = MAX(0,sarg1); } vdshere = vds * here->MOS6mode; - von=(here->MOS6tVbi*model->MOS6type)+model->MOS6gamma*sarg + von=(here->MOS6tVbi*model->MOS6type)+model->MOS6gamma*sarg1 - model->MOS6gamma1 * vbsvbd - model->MOS6sigma * vdshere; vgon = (here->MOS6mode==1?vgs:vgd) - von; @@ -496,20 +496,20 @@ next1: if(vbs <= -3*vt) { here->MOS6gmbs=0; } else { - if (sarg <= 0) { - arg=0; + if (sarg1 <= 0) { + arg1=0; } else { if ((here->MOS6mode==1?vbs:vbd) <= 0 ) { vonbm = model->MOS6gamma1 - + model->MOS6gamma / (sarg + sarg); + + model->MOS6gamma / (sarg1 + sarg1); } else { vonbm = model->MOS6gamma1 + model->MOS6gamma / 2 / sqrt(here->MOS6tPhi); } } - sarg = log(vgon); - vdsat = model->MOS6kv * exp(sarg * model->MOS6nv); - idsat = betac * exp(sarg * model->MOS6nc); + sarg1 = log(vgon); + vdsat = model->MOS6kv * exp(sarg1 * model->MOS6nv); + idsat = betac * exp(sarg1 * model->MOS6nc); lambda = model->MOS6lamda0 - model->MOS6lamda1 * vbsvbd; /* * saturation region diff --git a/src/spicelib/devices/txl/txlsetup.c b/src/spicelib/devices/txl/txlsetup.c index bd2a5ef2a..55b2dbf39 100644 --- a/src/spicelib/devices/txl/txlsetup.c +++ b/src/spicelib/devices/txl/txlsetup.c @@ -571,24 +571,24 @@ Gaussian_Elimination1(int dims) return(1); } -static double -root3(double a1, double a2, double a3, double x) +static double root3(double a1_in, double a2_in, double a3_in, double x) { double t1, t2; - t1 = x*x*x + a1*x*x + a2*x + a3; - t2 = 3.0*x*x + 2.0*a1*x + a2; + t1 = x*x*x + a1_in*x*x + a2_in*x + a3_in; + t2 = 3.0*x*x + 2.0*a1_in*x + a2_in; return(x - t1 / t2); } static int -div3(double a1, double a2, double a3, double x, double *p1, double *p2) +div3(double a1_in, double a2_in, double a3_in, + double x, double *p1_in, double *p2_in) { - NG_IGNORE(a2); + NG_IGNORE(a2_in); - *p1 = a1 + x; - *p2 = - a3 / x; + *p1_in = a1_in + x; + *p2_in = -a3_in / x; return(1); } @@ -656,8 +656,8 @@ static double f2(a, b, z) } ***/ -static int -mac(double at, double bt, double *b1, double *b2, double *b3, double *b4, double *b5) +static int mac(double at, double bt, double *b1_in, double *b2_in, + double *b3_in, double *b4_in, double *b5_in) /* float at, bt; */ { double a, b; @@ -666,7 +666,7 @@ mac(double at, double bt, double *b1, double *b2, double *b3, double *b4, double a = at; b = bt; - y1 = *b1 = 0.5 * (a - b); + y1 = *b1_in = 0.5 * (a - b); y2 = 0.5 * (3.0 * b * b - 2.0 * a * b - a * a) * y1 / (a - b); y3 = ((3.0 * b * b + a * a) * y1 * y1 + 0.5 * (3.0 * b * b - 2.0 * a * b - a * a) * y2) / (a - b); @@ -678,12 +678,12 @@ mac(double at, double bt, double *b1, double *b2, double *b3, double *b4, double (y2 * y2 + y1 * y3) + (3.0 * b * b + a * a) * y1 * y3 + 0.5 * (3.0 * b * b - 2.0 * a * b - a * a) * y4) / (a - b); - *b2 = y2 / 2.0; - *b3 = y3 / 6.0; - *b4 = y4 / 24.0; - *b5 = y5 / 120.0; + *b2_in = y2 / 2.0; + *b3_in = y3 / 6.0; + *b4_in = y4 / 24.0; + *b5_in = y5 / 120.0; - return(1); + return 1; } @@ -705,19 +705,18 @@ static double exp_approx1(double st) } ***/ -static int -get_c(double eq1, double eq2, double eq3, double ep1, double ep2, double a, double b, - double *cr, double *ci) +static int get_c(double eq1_in, double eq2_in, double eq3_in, + double ep1_in, double ep2_in, double a, double b, double *cr, double *ci) { double d, n; - d = (3.0*(a*a-b*b)+2.0*ep1*a+ep2)*(3.0*(a*a-b*b)+2.0*ep1*a+ep2); - d += (6.0*a*b+2.0*ep1*b)*(6.0*a*b+2.0*ep1*b); - n = -(eq1*(a*a-b*b)+eq2*a+eq3)*(6.0*a*b+2.0*ep1*b); - n += (2.0*eq1*a*b+eq2*b)*(3.0*(a*a-b*b)+2.0*ep1*a+ep2); + d = (3.0*(a*a-b*b)+2.0*ep1_in*a+ep2_in)*(3.0*(a*a-b*b)+2.0*ep1_in*a+ep2_in); + d += (6.0*a*b+2.0*ep1_in*b)*(6.0*a*b+2.0*ep1_in*b); + n = -(eq1_in*(a*a-b*b)+eq2_in*a+eq3_in)*(6.0*a*b+2.0*ep1_in*b); + n += (2.0*eq1_in*a*b+eq2_in*b)*(3.0*(a*a-b*b)+2.0*ep1_in*a+ep2_in); *ci = n/d; - n = (3.0*(a*a-b*b)+2.0*ep1*a+ep2)*(eq1*(a*a-b*b)+eq2*a+eq3); - n += (6.0*a*b+2.0*ep1*b)*(2.0*eq1*a*b+eq2*b); + n = (3.0*(a*a-b*b)+2.0*ep1_in*a+ep2_in)*(eq1_in*(a*a-b*b)+eq2_in*a+eq3_in); + n += (6.0*a*b+2.0*ep1_in*b)*(2.0*eq1_in*a*b+eq2_in*b); *cr = n/d; return(1); @@ -947,41 +946,44 @@ exp_div3(double a1, double a2, double a3, double x, /*** ***/ -static int -exp_find_roots(double a1, double a2, double a3, double *ex1, double *ex2, double *ex3) +static int exp_find_roots(double a1_in, double a2_in, double a3_in, + double *ex1_in, double *ex2_in, double *ex3_in) { double x, t; double p, q; - q = (a1*a1-3.0*a2) / 9.0; - p = (2.0*a1*a1*a1-9.0*a1*a2+27.0*a3) / 54.0; + q = (a1_in*a1_in-3.0*a2_in) / 9.0; + p = (2.0*a1_in*a1_in*a1_in-9.0*a1_in*a2_in+27.0*a3_in) / 54.0; t = q*q*q - p*p; if (t >= 0.0) { t = acos(p /(q * sqrt(q))); - x = -2.0*sqrt(q)*cos(t / 3.0) - a1/3.0; + x = -2.0*sqrt(q)*cos(t / 3.0) - a1_in/3.0; } else { if (p > 0.0) { t = pow(sqrt(-t)+p, 1.0 / 3.0); - x = -(t + q / t) - a1/3.0; + x = -(t + q / t) - a1_in/3.0; } else if (p == 0.0) { - x = -a1/3.0; + x = -a1_in/3.0; } else { t = pow(sqrt(-t)-p, 1.0 / 3.0); - x = (t + q / t) - a1/3.0; + x = (t + q / t) - a1_in/3.0; } } - { - double ex1; - int i = 0; - ex1 = x; - for (t = root3(a1, a2, a3, x); ABS(t-x) > 5.0e-4; - t = root3(a1, a2, a3, x)) - if (++i == 32) { - x = ex1; - break; - } else - x = t; - } + { + double ex1a; + int i = 0; + ex1a = x; + for (t = root3(a1_in, a2_in, a3_in, x); ABS(t-x) > 5.0e-4; + t = root3(a1_in, a2_in, a3_in, x)) { + if (++i == 32) { + x = ex1a; + break; + } + else { + x = t; + } + } + } /*** x = a1; for (t = root3(a1, a2, a3, x); ABS(t-x) > epsi2; @@ -997,24 +999,24 @@ exp_find_roots(double a1, double a2, double a3, double *ex1, double *ex2, double } } ***/ - *ex1 = x; - div3(a1, a2, a3, x, &a1, &a2); + *ex1_in = x; + div3(a1_in, a2_in, a3_in, x, &a1_in, &a2_in); - t = a1 * a1 - 4.0 * a2; + t = a1_in * a1_in - 4.0 * a2_in; if (t < 0) { ifImg = 1; printf("***** Two Imaginary Roots.\n"); - *ex3 = 0.5 * sqrt(-t); - *ex2 = -0.5 * a1; + *ex3_in = 0.5 * sqrt(-t); + *ex2_in = -0.5 * a1_in; } else { ifImg = 0; t *= 1.0e-16; t = sqrt(t)*1.0e8; - if (a1 >= 0.0) - *ex2 = t = -0.5 * (a1 + t); + if (a1_in >= 0.0) + *ex2_in = t = -0.5 * (a1_in + t); else - *ex2 = t = -0.5 * (a1 - t); - *ex3 = a2 / t; + *ex2_in = t = -0.5 * (a1_in - t); + *ex3_in = a2_in / t; /* *ex2 = 0.5 * (-a1 + t); *ex3 = 0.5 * (-a1 - t); @@ -1095,34 +1097,34 @@ static NODE return(n); } -static int -find_roots(double a1, double a2, double a3, double *x1, double *x2, double *x3) +static int find_roots(double a1_in, double a2_in, double a3_in, + double *x1r, double *x2r, double *x3r) { double x, t; double p, q; - q = (a1*a1-3.0*a2) / 9.0; - p = (2.0*a1*a1*a1-9.0*a1*a2+27.0*a3) / 54.0; + q = (a1_in*a1_in-3.0*a2_in) / 9.0; + p = (2.0*a1_in*a1_in*a1_in-9.0*a1_in*a2_in+27.0*a3_in) / 54.0; t = q*q*q - p*p; if (t >= 0.0) { t = acos(p /(q * sqrt(q))); - x = -2.0*sqrt(q)*cos(t / 3.0) - a1/3.0; + x = -2.0*sqrt(q)*cos(t / 3.0) - a1_in/3.0; } else { if (p > 0.0) { t = pow(sqrt(-t)+p, 1.0 / 3.0); - x = -(t + q / t) - a1/3.0; + x = -(t + q / t) - a1_in/3.0; } else if (p == 0.0) { - x = -a1/3.0; + x = -a1_in/3.0; } else { t = pow(sqrt(-t)-p, 1.0 / 3.0); - x = (t + q / t) - a1/3.0; + x = (t + q / t) - a1_in/3.0; } } { double x_backup = x; int i = 0; - for (t = root3(a1, a2, a3, x); ABS(t-x) > 5.0e-4; - t = root3(a1, a2, a3, x)) + for (t = root3(a1_in, a2_in, a3_in, x); ABS(t-x) > 5.0e-4; + t = root3(a1_in, a2_in, a3_in, x)) if (++i == 32) { x = x_backup; break; @@ -1147,10 +1149,10 @@ find_roots(double a1, double a2, double a3, double *x1, double *x2, double *x3) } */ - *x1 = x; - div3(a1, a2, a3, x, &a1, &a2); + *x1r = x; + div3(a1_in, a2_in, a3_in, x, &a1_in, &a2_in); - t = a1 * a1 - 4.0 * a2; + t = a1_in * a1_in - 4.0 * a2_in; if (t < 0) { printf("***** Two Imaginary Roots in Characteristic Admittance.\n"); controlled_exit(EXIT_FAILURE); @@ -1158,11 +1160,11 @@ find_roots(double a1, double a2, double a3, double *x1, double *x2, double *x3) t *= 1.0e-18; t = sqrt(t) * 1.0e9; - if (a1 >= 0.0) - *x2 = t = -0.5 * (a1 + t); + if (a1_in >= 0.0) + *x2r = t = -0.5 * (a1_in + t); else - *x2 = t = -0.5 * (a1 - t); - *x3 = a2 / t; + *x2r = t = -0.5 * (a1_in - t); + *x3r = a2_in / t; /* *x2 = 0.5 * (-a1 + t); *x3 = 0.5 * (-a1 - t);