diff --git a/src/spicelib/devices/dio/diodefs.h b/src/spicelib/devices/dio/diodefs.h index 648767bb5..c0afdd88a 100644 --- a/src/spicelib/devices/dio/diodefs.h +++ b/src/spicelib/devices/dio/diodefs.h @@ -41,19 +41,19 @@ typedef struct sDIOinstance { const int DIOtempNode; /* number of the temperature node of the diode */ int DIOposPrimeNode; /* number of positive prime node of diode */ - double *DIOposPosPrimePtr; /* pointer to sparse matrix at + double *DIOposPosPrimePtr; /* pointer to sparse matrix at * (positive,positive prime) */ - double *DIOnegPosPrimePtr; /* pointer to sparse matrix at + double *DIOnegPosPrimePtr; /* pointer to sparse matrix at * (negative,positive prime) */ - double *DIOposPrimePosPtr; /* pointer to sparse matrix at + double *DIOposPrimePosPtr; /* pointer to sparse matrix at * (positive prime,positive) */ - double *DIOposPrimeNegPtr; /* pointer to sparse matrix at + double *DIOposPrimeNegPtr; /* pointer to sparse matrix at * (positive prime,negative) */ - double *DIOposPosPtr; /* pointer to sparse matrix at + double *DIOposPosPtr; /* pointer to sparse matrix at * (positive,positive) */ - double *DIOnegNegPtr; /* pointer to sparse matrix at + double *DIOnegNegPtr; /* pointer to sparse matrix at * (negative,negative) */ - double *DIOposPrimePosPrimePtr; /* pointer to sparse matrix at + double *DIOposPrimePosPrimePtr; /* pointer to sparse matrix at * (positive prime,positive prime) */ /* self heating */ @@ -131,7 +131,7 @@ typedef struct sDIOinstance { double DIOtVcrit; /* temperature adjusted V crit */ double DIOtF1; /* temperature adjusted f1 */ double DIOtBrkdwnV; /* temperature adjusted breakdown voltage */ - + double DIOtF2; /* coeff. for capacitance equation precomputation */ double DIOtF3; /* coeff. for capacitance equation precomputation */ double DIOtF2SW; /* coeff. for capacitance equation precomputation */ @@ -190,7 +190,7 @@ typedef struct sDIOinstance { #define DIOsenGeq DIOsens /* stores the perturbed values of geq */ #define DIOsenCeq DIOsens + 3 /* stores the perturbed values of ceq */ -#define DIOdphidp DIOsens + 6 +#define DIOdphidp DIOsens + 6 #define DIOvoltage DIOstate @@ -297,7 +297,7 @@ typedef struct sDIOmodel { /* model structure for a diode */ double DIOsatCur; /* saturation current */ double DIOsatSWCur; /* Sidewall saturation current */ - double DIOresist; /* ohmic series resistance */ + double DIOresist; /* ohmic series resistance */ double DIOresistTemp1; /* series resistance 1st order temp. coeff. */ double DIOresistTemp2; /* series resistance 2nd order temp. coeff. */ double DIOconductance; /* conductance corresponding to ohmic R */ diff --git a/src/spicelib/devices/dio/dioload.c b/src/spicelib/devices/dio/dioload.c index 586ca724e..65a88b82a 100644 --- a/src/spicelib/devices/dio/dioload.c +++ b/src/spicelib/devices/dio/dioload.c @@ -237,7 +237,7 @@ DIOload(GENmodel *inModel, CKTcircuit *ckt) /* * compute dc current and derivitives */ -next1: +next1: if (selfheat) { Temp = here->DIOtemp + delTemp; DIOtempUpdate(model, here, Temp, ckt); @@ -313,11 +313,11 @@ next1: evd_rec = exp(vd/(vterec)); cdb_rec = here->DIOtRecSatCur*(evd_rec-1); gdb_rec = here->DIOtRecSatCur*evd_rec/vterec; - cdb_rec_dT = here->DIOtRecSatCur_dT * (evd_rec - 1) + cdb_rec_dT = here->DIOtRecSatCur_dT * (evd_rec - 1) -here->DIOtRecSatCur * vd * evd_rec / (vterec*Temp); t1 = pow((1-vd/here->DIOtJctPot), 2) + 0.005; gen_fac = pow(t1, here->DIOtGradingCoeff/2); - gen_fac_vd = -here->DIOtGradingCoeff * (1-vd/here->DIOtJctPot) + gen_fac_vd = -here->DIOtGradingCoeff * (1-vd/here->DIOtJctPot) * pow(t1, (here->DIOtGradingCoeff/2-1)); cdb_rec = cdb_rec * gen_fac; gdb_rec = gdb_rec * gen_fac + cdb_rec * gen_fac_vd; @@ -333,7 +333,7 @@ next1: arg = 3*vte/(vd*CONSTe); arg = arg * arg * arg; - darg_dT = 3 * arg / Temp; + darg_dT = 3 * arg / Temp; cdb = -csat*(1+arg); gdb = csat*3*arg/vd; cdb_dT = -csat_dT - (csat_dT*arg + csat*darg_dT); @@ -356,7 +356,7 @@ next1: cdsw = cdsw - here->DIOtTunSatSWCur * (evd - 1); gdsw = gdsw + here->DIOtTunSatSWCur * evd / vtetun; - cdsw_dT = cdsw_dT - here->DIOtTunSatSWCur_dT * (evd - 1) + cdsw_dT = cdsw_dT - here->DIOtTunSatSWCur_dT * (evd - 1) - here->DIOtTunSatSWCur * vd * evd / (vtetun * Temp); } @@ -385,8 +385,8 @@ next1: gd = ((1+sqrt_ikf)*gd - cd*gd/(2*sqrt_ikf*ikf_area_m))/(1+2*sqrt_ikf + cd/ikf_area_m) + ckt->CKTgmin; cd = cd/(1+sqrt_ikf) + ckt->CKTgmin*vd; } else { - gd = gd + ckt->CKTgmin; - cd = cd + ckt->CKTgmin*vd; + gd = gd + ckt->CKTgmin; + cd = cd + ckt->CKTgmin*vd; } } else { /* limit reverse */ diff --git a/src/spicelib/devices/dio/diosetup.c b/src/spicelib/devices/dio/diosetup.c index a657a1f15..70873b16d 100644 --- a/src/spicelib/devices/dio/diosetup.c +++ b/src/spicelib/devices/dio/diosetup.c @@ -250,8 +250,8 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states) here->DIOarea = here->DIOarea * here->DIOm; here->DIOpj = here->DIOpj * here->DIOm; - here->DIOcmetal = 0.0; - here->DIOcpoly = 0.0; + here->DIOcmetal = 0.0; + here->DIOcpoly = 0.0; if (model->DIOlevel == 3) { double wm, lm, wp, lp; if((here->DIOwGiven) && (here->DIOlGiven)) { @@ -260,27 +260,27 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states) } here->DIOarea = here->DIOarea * scale * scale; here->DIOpj = here->DIOpj * scale; - if (here->DIOwidthMetalGiven) + if (here->DIOwidthMetalGiven) wm = here->DIOwidthMetal; else wm = model->DIOwidthMetal; - if (here->DIOlengthMetalGiven) + if (here->DIOlengthMetalGiven) lm = here->DIOlengthMetal; else lm = model->DIOlengthMetal; - if (here->DIOwidthPolyGiven) + if (here->DIOwidthPolyGiven) wp = here->DIOwidthPoly; else wp = model->DIOwidthPoly; - if (here->DIOlengthPolyGiven) + if (here->DIOlengthPolyGiven) lp = here->DIOlengthPoly; else lp = model->DIOlengthPoly; here->DIOcmetal = CONSTepsSiO2 / model->DIOmetalOxideThick * here->DIOm - * (wm * scale + model->DIOmetalMaskOffset) + * (wm * scale + model->DIOmetalMaskOffset) * (lm * scale + model->DIOmetalMaskOffset); here->DIOcpoly = CONSTepsSiO2 / model->DIOpolyOxideThick * here->DIOm - * (wp * scale + model->DIOpolyMaskOffset) + * (wp * scale + model->DIOpolyMaskOffset) * (lp * scale + model->DIOpolyMaskOffset); } here->DIOforwardKneeCurrent = model->DIOforwardKneeCurrent * here->DIOarea;