devices/cap: whitespace cleanup

This commit is contained in:
h_vogt 2013-05-08 22:36:26 +02:00 committed by rlar
parent 4a1cdf0ada
commit b63cae8798
9 changed files with 281 additions and 282 deletions

View File

@ -10,49 +10,49 @@ Modified: September 2003 - Paolo Nenzi
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
IFparm CAPpTable[] = { /* parameters */ IFparm CAPpTable[] = { /* parameters */
IOPAP("capacitance", CAP_CAP, IF_REAL, "Device capacitance"), IOPAP("capacitance", CAP_CAP, IF_REAL, "Device capacitance"),
IOPAP("cap", CAP_CAP, IF_REAL, "Device capacitance"), IOPAP("cap", CAP_CAP, IF_REAL, "Device capacitance"),
IOPAP("c", CAP_CAP, IF_REAL, "Device capacitance"), IOPAP("c", CAP_CAP, IF_REAL, "Device capacitance"),
IOPAU("ic", CAP_IC, IF_REAL, "Initial capacitor voltage"), IOPAU("ic", CAP_IC, IF_REAL, "Initial capacitor voltage"),
IOPZU("temp", CAP_TEMP, IF_REAL, "Instance operating temperature"), IOPZU("temp", CAP_TEMP, IF_REAL, "Instance operating temperature"),
IOPZ( "dtemp", CAP_DTEMP, IF_REAL, IOPZ( "dtemp", CAP_DTEMP, IF_REAL,
"Instance temperature difference from the rest of the circuit"), "Instance temperature difference from the rest of the circuit"),
IOPAU("w", CAP_WIDTH, IF_REAL, "Device width"), IOPAU("w", CAP_WIDTH, IF_REAL, "Device width"),
IOPAU("l", CAP_LENGTH, IF_REAL, "Device length"), IOPAU("l", CAP_LENGTH, IF_REAL, "Device length"),
IOPU( "m", CAP_M, IF_REAL, "Parallel multiplier"), IOPU( "m", CAP_M, IF_REAL, "Parallel multiplier"),
IOPU( "tc1", CAP_TC1, IF_REAL, "First order temp. coefficient"), IOPU( "tc1", CAP_TC1, IF_REAL, "First order temp. coefficient"),
IOPU( "tc2", CAP_TC2, IF_REAL, "Second order temp. coefficient"), IOPU( "tc2", CAP_TC2, IF_REAL, "Second order temp. coefficient"),
IOPU( "scale", CAP_SCALE, IF_REAL, "Scale factor"), IOPU( "scale", CAP_SCALE, IF_REAL, "Scale factor"),
IP( "sens_cap", CAP_CAP_SENS, IF_FLAG, "flag to request sens. WRT cap."), IP( "sens_cap", CAP_CAP_SENS, IF_FLAG, "flag to request sens. WRT cap."),
OP( "i", CAP_CURRENT, IF_REAL, "Device current"), OP( "i", CAP_CURRENT, IF_REAL, "Device current"),
OP( "p", CAP_POWER, IF_REAL, "Instantaneous device power"), OP( "p", CAP_POWER, IF_REAL, "Instantaneous device power"),
OPU( "sens_dc", CAP_QUEST_SENS_DC, IF_REAL, "dc sensitivity "), OPU( "sens_dc", CAP_QUEST_SENS_DC, IF_REAL, "dc sensitivity "),
OPU( "sens_real", CAP_QUEST_SENS_REAL, IF_REAL, "real part of ac sensitivity"), OPU( "sens_real", CAP_QUEST_SENS_REAL, IF_REAL, "real part of ac sensitivity"),
OPU( "sens_imag", CAP_QUEST_SENS_IMAG, IF_REAL, OPU( "sens_imag", CAP_QUEST_SENS_IMAG, IF_REAL,
"dc sens. & imag part of ac sens."), "dc sens. & imag part of ac sens."),
OPU( "sens_mag", CAP_QUEST_SENS_MAG, IF_REAL, "sensitivity of ac magnitude"), OPU( "sens_mag", CAP_QUEST_SENS_MAG, IF_REAL, "sensitivity of ac magnitude"),
OPU( "sens_ph", CAP_QUEST_SENS_PH, IF_REAL, "sensitivity of ac phase"), OPU( "sens_ph", CAP_QUEST_SENS_PH, IF_REAL, "sensitivity of ac phase"),
OPU( "sens_cplx", CAP_QUEST_SENS_CPLX, IF_COMPLEX, "ac sensitivity") OPU( "sens_cplx", CAP_QUEST_SENS_CPLX, IF_COMPLEX, "ac sensitivity")
}; };
IFparm CAPmPTable[] = { /* names of model parameters */ IFparm CAPmPTable[] = { /* names of model parameters */
IOPA( "cap", CAP_MOD_CAP, IF_REAL, "Model capacitance"), IOPA( "cap", CAP_MOD_CAP, IF_REAL, "Model capacitance"),
IOPA( "cj", CAP_MOD_CJ, IF_REAL, "Bottom Capacitance per area"), IOPA( "cj", CAP_MOD_CJ, IF_REAL, "Bottom Capacitance per area"),
IOPR( "cox", CAP_MOD_CJ, IF_REAL, "Bottom Capacitance per area"), IOPR( "cox", CAP_MOD_CJ, IF_REAL, "Bottom Capacitance per area"),
IOPA( "cjsw", CAP_MOD_CJSW, IF_REAL, "Sidewall capacitance per meter"), IOPA( "cjsw", CAP_MOD_CJSW, IF_REAL, "Sidewall capacitance per meter"),
IOPR( "capsw", CAP_MOD_CJSW, IF_REAL, "Sidewall capacitance per meter"), IOPR( "capsw", CAP_MOD_CJSW, IF_REAL, "Sidewall capacitance per meter"),
IOPX( "defw", CAP_MOD_DEFWIDTH, IF_REAL, "Default width"), IOPX( "defw", CAP_MOD_DEFWIDTH, IF_REAL, "Default width"),
IOPR( "w", CAP_MOD_DEFWIDTH, IF_REAL, "Default width"), IOPR( "w", CAP_MOD_DEFWIDTH, IF_REAL, "Default width"),
IOPX( "defl", CAP_MOD_DEFLENGTH,IF_REAL, "Default length"), IOPX( "defl", CAP_MOD_DEFLENGTH,IF_REAL, "Default length"),
IOPR( "l", CAP_MOD_DEFLENGTH,IF_REAL, "Default length"), IOPR( "l", CAP_MOD_DEFLENGTH,IF_REAL, "Default length"),
IOPA( "narrow", CAP_MOD_NARROW, IF_REAL, "width correction factor"), IOPA( "narrow", CAP_MOD_NARROW, IF_REAL, "width correction factor"),
IOPA( "short", CAP_MOD_SHORT, IF_REAL, "length correction factor"), IOPA( "short", CAP_MOD_SHORT, IF_REAL, "length correction factor"),
IOPA( "tc1", CAP_MOD_TC1, IF_REAL, "First order temp. coefficient"), IOPA( "tc1", CAP_MOD_TC1, IF_REAL, "First order temp. coefficient"),
IOPA( "tc2", CAP_MOD_TC2, IF_REAL, "Second order temp. coefficient"), IOPA( "tc2", CAP_MOD_TC2, IF_REAL, "Second order temp. coefficient"),
IOPXU("tnom", CAP_MOD_TNOM, IF_REAL, "Parameter measurement temperature"), IOPXU("tnom", CAP_MOD_TNOM, IF_REAL, "Parameter measurement temperature"),
IOPA( "di", CAP_MOD_DI, IF_REAL, "Relative dielectric constant"), IOPA( "di", CAP_MOD_DI, IF_REAL, "Relative dielectric constant"),
IOPA( "thick", CAP_MOD_THICK, IF_REAL, "Insulator thickness"), IOPA( "thick", CAP_MOD_THICK, IF_REAL, "Insulator thickness"),
IP( "c", CAP_MOD_C, IF_FLAG, "Capacitor model") IP( "c", CAP_MOD_C, IF_FLAG, "Capacitor model")
}; };
char *CAPnames[] = { char *CAPnames[] = {

View File

@ -22,10 +22,10 @@ CAPacLoad(GENmodel *inModel, CKTcircuit *ckt)
CAPinstance *here; CAPinstance *here;
for( ; model != NULL; model = model->CAPnextModel) { for( ; model != NULL; model = model->CAPnextModel) {
for( here = model->CAPinstances;here != NULL; for( here = model->CAPinstances; here != NULL;
here = here->CAPnextInstance) { here = here->CAPnextInstance) {
m = here -> CAPm; m = here->CAPm;
val = ckt->CKTomega * here->CAPcapac; val = ckt->CKTomega * here->CAPcapac;

View File

@ -13,7 +13,7 @@ Modified: September 2003 Paolo Nenzi
#include "ngspice/gendefs.h" #include "ngspice/gendefs.h"
#include "ngspice/cktdefs.h" #include "ngspice/cktdefs.h"
/* structures used to describe capacitors */ /* structures used to describe capacitors */
/* information to describe each instance */ /* information to describe each instance */
@ -54,8 +54,8 @@ typedef struct sCAPinstance {
unsigned CAPdtempGiven : 1; /* flag to indicate delta temp given */ unsigned CAPdtempGiven : 1; /* flag to indicate delta temp given */
unsigned CAPscaleGiven : 1; /* flag to indicate scale factor given */ unsigned CAPscaleGiven : 1; /* flag to indicate scale factor given */
unsigned CAPmGiven : 1; /* flag to indicate parallel multiplier given */ unsigned CAPmGiven : 1; /* flag to indicate parallel multiplier given */
unsigned CAPtc1Given : 1; /* flag indicates tc1 was specified */ unsigned CAPtc1Given : 1; /* flag indicates tc1 was specified */
unsigned CAPtc2Given : 1; /* flag indicates tc2 was specified */ unsigned CAPtc2Given : 1; /* flag indicates tc2 was specified */
int CAPsenParmNo; /* parameter # for sensitivity use; int CAPsenParmNo; /* parameter # for sensitivity use;
set equal to 0 if not a design parameter*/ set equal to 0 if not a design parameter*/
@ -64,8 +64,8 @@ typedef struct sCAPinstance {
#define CAPqcap CAPstate /* charge on the capacitor */ #define CAPqcap CAPstate /* charge on the capacitor */
#define CAPccap CAPstate+1 /* current through the capacitor */ #define CAPccap CAPstate+1 /* current through the capacitor */
#define CAPsensxp CAPstate+2 /* charge sensitivities and their derivatives. #define CAPsensxp CAPstate+2 /* charge sensitivities and their derivatives.
+3 for the derivatives - pointer to the +3 for the derivatives - pointer to the
beginning of the array */ beginning of the array */
/* data per model */ /* data per model */

View File

@ -13,9 +13,9 @@ Modified: September 2003 Paolo Nenzi
int int
CAPload(GENmodel *inModel, CKTcircuit *ckt) CAPload(GENmodel *inModel, CKTcircuit *ckt)
/* actually load the current capacitance value into the /* actually load the current capacitance value into the
* sparse matrix previously provided * sparse matrix previously provided
*/ */
{ {
CAPmodel *model = (CAPmodel*)inModel; CAPmodel *model = (CAPmodel*)inModel;
CAPinstance *here; CAPinstance *here;
@ -32,8 +32,8 @@ CAPload(GENmodel *inModel, CKTcircuit *ckt)
cond1= cond1=
( ( (ckt->CKTmode & MODEDC) && ( ( (ckt->CKTmode & MODEDC) &&
(ckt->CKTmode & MODEINITJCT) ) (ckt->CKTmode & MODEINITJCT) )
|| ( ( ckt->CKTmode & MODEUIC) && || ( ( ckt->CKTmode & MODEUIC) &&
( ckt->CKTmode & MODEINITTRAN) ) ) ; ( ckt->CKTmode & MODEINITTRAN) ) ) ;
/* loop through all the capacitor models */ /* loop through all the capacitor models */
for( ; model != NULL; model = model->CAPnextModel ) { for( ; model != NULL; model = model->CAPnextModel ) {
@ -41,13 +41,13 @@ CAPload(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->CAPinstances; here != NULL ; for (here = model->CAPinstances; here != NULL ;
here=here->CAPnextInstance) { here=here->CAPnextInstance) {
m = here->CAPm; m = here->CAPm;
if(cond1) { if(cond1) {
vcap = here->CAPinitCond; vcap = here->CAPinitCond;
} else { } else {
vcap = *(ckt->CKTrhsOld+here->CAPposNode) - vcap = *(ckt->CKTrhsOld+here->CAPposNode) -
*(ckt->CKTrhsOld+here->CAPnegNode) ; *(ckt->CKTrhsOld+here->CAPnegNode) ;
} }
if(ckt->CKTmode & (MODETRAN | MODEAC)) { if(ckt->CKTmode & (MODETRAN | MODEAC)) {
#ifndef PREDICTOR #ifndef PREDICTOR
@ -65,7 +65,7 @@ CAPload(GENmodel *inModel, CKTcircuit *ckt)
} }
#endif /* PREDICTOR */ #endif /* PREDICTOR */
error = NIintegrate(ckt,&geq,&ceq,here->CAPcapac, error = NIintegrate(ckt,&geq,&ceq,here->CAPcapac,
here->CAPqcap); here->CAPqcap);
if(error) return(error); if(error) return(error);
if(ckt->CKTmode & MODEINITTRAN) { if(ckt->CKTmode & MODEINITTRAN) {
*(ckt->CKTstate1+here->CAPccap) = *(ckt->CKTstate1+here->CAPccap) =
@ -78,7 +78,7 @@ CAPload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTrhs+here->CAPposNode) -= m * ceq; *(ckt->CKTrhs+here->CAPposNode) -= m * ceq;
*(ckt->CKTrhs+here->CAPnegNode) += m * ceq; *(ckt->CKTrhs+here->CAPnegNode) += m * ceq;
} else } else
*(ckt->CKTstate0+here->CAPqcap) = here->CAPcapac * vcap; *(ckt->CKTstate0+here->CAPqcap) = here->CAPcapac * vcap;
} }
} }
} }

View File

@ -24,43 +24,43 @@ CAPmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value)
NG_IGNORE(ckt); NG_IGNORE(ckt);
switch(which) { switch(which) {
case CAP_MOD_TNOM: case CAP_MOD_TNOM:
value->rValue = here->CAPtnom-CONSTCtoK; value->rValue = here->CAPtnom-CONSTCtoK;
return(OK); return(OK);
case CAP_MOD_TC1: case CAP_MOD_TC1:
value->rValue = here->CAPtempCoeff1; value->rValue = here->CAPtempCoeff1;
return(OK); return(OK);
case CAP_MOD_TC2: case CAP_MOD_TC2:
value->rValue = here->CAPtempCoeff2; value->rValue = here->CAPtempCoeff2;
return(OK); return(OK);
case CAP_MOD_CAP: case CAP_MOD_CAP:
value->rValue = here->CAPmCap; value->rValue = here->CAPmCap;
return(OK); return(OK);
case CAP_MOD_CJ: case CAP_MOD_CJ:
value->rValue = here->CAPcj; value->rValue = here->CAPcj;
return(OK); return(OK);
case CAP_MOD_CJSW: case CAP_MOD_CJSW:
value->rValue = here->CAPcjsw; value->rValue = here->CAPcjsw;
return(OK); return(OK);
case CAP_MOD_DEFWIDTH: case CAP_MOD_DEFWIDTH:
value->rValue = here->CAPdefWidth; value->rValue = here->CAPdefWidth;
return(OK); return(OK);
case CAP_MOD_DEFLENGTH: case CAP_MOD_DEFLENGTH:
value->rValue = here->CAPdefLength; value->rValue = here->CAPdefLength;
return(OK); return(OK);
case CAP_MOD_NARROW: case CAP_MOD_NARROW:
value->rValue = here->CAPnarrow; value->rValue = here->CAPnarrow;
return(OK); return(OK);
case CAP_MOD_SHORT: case CAP_MOD_SHORT:
value->rValue = here->CAPshort; value->rValue = here->CAPshort;
return(OK); return(OK);
case CAP_MOD_DI: case CAP_MOD_DI:
value->rValue = here->CAPdi; value->rValue = here->CAPdi;
return(OK); return(OK);
case CAP_MOD_THICK: case CAP_MOD_THICK:
value->rValue = here->CAPthick; value->rValue = here->CAPthick;
return(OK); return(OK);
default: default:
return(E_BADPARM); return(E_BADPARM);
} }
} }

View File

@ -18,60 +18,60 @@ CAPmParam(int param, IFvalue *value, GENmodel *inModel)
{ {
CAPmodel *mod = (CAPmodel*)inModel; CAPmodel *mod = (CAPmodel*)inModel;
switch(param) { switch(param) {
case CAP_MOD_TNOM: case CAP_MOD_TNOM:
mod->CAPtnom = value->rValue+CONSTCtoK; mod->CAPtnom = value->rValue+CONSTCtoK;
mod->CAPtnomGiven = TRUE; mod->CAPtnomGiven = TRUE;
break; break;
case CAP_MOD_TC1: case CAP_MOD_TC1:
mod->CAPtempCoeff1 = value->rValue; mod->CAPtempCoeff1 = value->rValue;
mod->CAPtc1Given = TRUE; mod->CAPtc1Given = TRUE;
break; break;
case CAP_MOD_TC2: case CAP_MOD_TC2:
mod->CAPtempCoeff2 = value->rValue; mod->CAPtempCoeff2 = value->rValue;
mod->CAPtc2Given = TRUE; mod->CAPtc2Given = TRUE;
break; break;
case CAP_MOD_CAP: case CAP_MOD_CAP:
mod->CAPmCap = value->rValue; mod->CAPmCap = value->rValue;
mod->CAPmCapGiven = TRUE; mod->CAPmCapGiven = TRUE;
break; break;
case CAP_MOD_CJ : case CAP_MOD_CJ :
mod->CAPcj = value->rValue; mod->CAPcj = value->rValue;
mod->CAPcjGiven = TRUE; mod->CAPcjGiven = TRUE;
break; break;
case CAP_MOD_CJSW : case CAP_MOD_CJSW :
mod->CAPcjsw = value->rValue; mod->CAPcjsw = value->rValue;
mod->CAPcjswGiven = TRUE; mod->CAPcjswGiven = TRUE;
break; break;
case CAP_MOD_DEFWIDTH: case CAP_MOD_DEFWIDTH:
mod->CAPdefWidth = value->rValue; mod->CAPdefWidth = value->rValue;
mod->CAPdefWidthGiven = TRUE; mod->CAPdefWidthGiven = TRUE;
break; break;
case CAP_MOD_DEFLENGTH: case CAP_MOD_DEFLENGTH:
mod->CAPdefLength = value->rValue; mod->CAPdefLength = value->rValue;
mod->CAPdefLengthGiven = TRUE; mod->CAPdefLengthGiven = TRUE;
break; break;
case CAP_MOD_NARROW: case CAP_MOD_NARROW:
mod->CAPnarrow = value->rValue; mod->CAPnarrow = value->rValue;
mod->CAPnarrowGiven = TRUE; mod->CAPnarrowGiven = TRUE;
break; break;
case CAP_MOD_SHORT: case CAP_MOD_SHORT:
mod->CAPshort = value->rValue; mod->CAPshort = value->rValue;
mod->CAPshortGiven = TRUE; mod->CAPshortGiven = TRUE;
break; break;
case CAP_MOD_DI: case CAP_MOD_DI:
mod->CAPdi = value->rValue; mod->CAPdi = value->rValue;
mod->CAPdiGiven = TRUE; mod->CAPdiGiven = TRUE;
break; break;
case CAP_MOD_THICK: case CAP_MOD_THICK:
mod->CAPthick = value->rValue; mod->CAPthick = value->rValue;
mod->CAPthickGiven = TRUE; mod->CAPthickGiven = TRUE;
break; break;
case CAP_MOD_C: case CAP_MOD_C:
/* just being reassured by the user that we are a capacitor */ /* just being reassured by the user that we are a capacitor */
/* no-op */ /* no-op */
break; break;
default: default:
return(E_BADPARM); return(E_BADPARM);
} }
return(OK); return(OK);
} }

View File

@ -22,53 +22,53 @@ CAPparam(int param, IFvalue *value, GENinstance *inst, IFvalue *select)
NG_IGNORE(select); NG_IGNORE(select);
switch(param) { switch(param) {
case CAP_CAP: case CAP_CAP:
here->CAPcapac = value->rValue; here->CAPcapac = value->rValue;
if (!here->CAPmGiven) if (!here->CAPmGiven)
here->CAPm = 1.0; here->CAPm = 1.0;
here->CAPcapGiven = TRUE; here->CAPcapGiven = TRUE;
break; break;
case CAP_IC: case CAP_IC:
here->CAPinitCond = value->rValue; here->CAPinitCond = value->rValue;
here->CAPicGiven = TRUE; here->CAPicGiven = TRUE;
break; break;
case CAP_TEMP: case CAP_TEMP:
here->CAPtemp = value->rValue + CONSTCtoK; here->CAPtemp = value->rValue + CONSTCtoK;
here->CAPtempGiven = TRUE; here->CAPtempGiven = TRUE;
break; break;
case CAP_DTEMP: case CAP_DTEMP:
here->CAPdtemp = value->rValue; here->CAPdtemp = value->rValue;
here->CAPdtempGiven = TRUE; here->CAPdtempGiven = TRUE;
break; break;
case CAP_WIDTH: case CAP_WIDTH:
here->CAPwidth = value->rValue; here->CAPwidth = value->rValue;
here->CAPwidthGiven = TRUE; here->CAPwidthGiven = TRUE;
break; break;
case CAP_LENGTH: case CAP_LENGTH:
here->CAPlength = value->rValue; here->CAPlength = value->rValue;
here->CAPlengthGiven = TRUE; here->CAPlengthGiven = TRUE;
break; break;
case CAP_M: case CAP_M:
here->CAPm = value->rValue; here->CAPm = value->rValue;
here->CAPmGiven = TRUE; here->CAPmGiven = TRUE;
break; break;
case CAP_SCALE: case CAP_SCALE:
here->CAPscale = value->rValue; here->CAPscale = value->rValue;
here->CAPscaleGiven = TRUE; here->CAPscaleGiven = TRUE;
break; break;
case CAP_CAP_SENS: case CAP_CAP_SENS:
here->CAPsenParmNo = value->iValue; here->CAPsenParmNo = value->iValue;
break; break;
case CAP_TC1: case CAP_TC1:
here->CAPtc1 = value->rValue; here->CAPtc1 = value->rValue;
here->CAPtc1Given = TRUE; here->CAPtc1Given = TRUE;
break; break;
case CAP_TC2: case CAP_TC2:
here->CAPtc2 = value->rValue; here->CAPtc2 = value->rValue;
here->CAPtc2Given = TRUE; here->CAPtc2Given = TRUE;
break; break;
default: default:
return(E_BADPARM); return(E_BADPARM);
} }
return(OK); return(OK);
} }

View File

@ -28,7 +28,7 @@ CAPsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
for( ; model != NULL; model = model->CAPnextModel ) { for( ; model != NULL; model = model->CAPnextModel ) {
/*Default Value Processing for Model Parameters */ /*Default Value Processing for Model Parameters */
if (!model->CAPmCapGiven) { if (!model->CAPmCapGiven) {
model->CAPmCap = 0.0; model->CAPmCap = 0.0;
} }
if (!model->CAPcjswGiven){ if (!model->CAPcjswGiven){
@ -37,7 +37,7 @@ CAPsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
if (!model->CAPdefWidthGiven) { if (!model->CAPdefWidthGiven) {
model->CAPdefWidth = 10.e-6; model->CAPdefWidth = 10.e-6;
} }
if (!model->CAPdefLengthGiven) { if (!model->CAPdefLengthGiven) {
model->CAPdefLength = 0.0; model->CAPdefLength = 0.0;
} }
if (!model->CAPnarrowGiven) { if (!model->CAPnarrowGiven) {
@ -52,27 +52,26 @@ CAPsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
if (!model->CAPtc2Given) { if (!model->CAPtc2Given) {
model->CAPtempCoeff2 = 0.0; model->CAPtempCoeff2 = 0.0;
} }
if (!model->CAPtnomGiven) { if (!model->CAPtnomGiven) {
model->CAPtnom = ckt->CKTnomTemp; model->CAPtnom = ckt->CKTnomTemp;
} }
if (!model->CAPdiGiven) { if (!model->CAPdiGiven) {
model->CAPdi = 0.0; model->CAPdi = 0.0;
} }
if (!model->CAPthickGiven) { if (!model->CAPthickGiven) {
model->CAPthick = 0.0; model->CAPthick = 0.0;
} }
if (!model->CAPcjGiven) { if (!model->CAPcjGiven) {
if((model->CAPthickGiven) if((model->CAPthickGiven)
&& (model->CAPthick > 0.0)) { && (model->CAPthick > 0.0)) {
if (model->CAPdiGiven)
if (model->CAPdiGiven) model->CAPcj = (model->CAPdi * CONSTepsZero) / model->CAPthick;
model->CAPcj = (model->CAPdi * CONSTepsZero) / model->CAPthick; else
else model->CAPcj = CONSTepsSiO2 / model->CAPthick;
model->CAPcj = CONSTepsSiO2 / model->CAPthick; } else {
} else { model->CAPcj = 0.0;
model->CAPcj = 0.0; }
}
} }
/* loop through all the instances of the model */ /* loop through all the instances of the model */

View File

@ -6,9 +6,9 @@ Modified: September 2003 Paolo Nenzi
/* /*
*/ */
/* load the capacitor structure with those pointers needed later /* load the capacitor structure with those pointers needed later
* for fast matrix loading * for fast matrix loading
*/ */
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "ngspice/cktdefs.h" #include "ngspice/cktdefs.h"
@ -36,56 +36,56 @@ CAPtemp(GENmodel *inModel, CKTcircuit *ckt)
here=here->CAPnextInstance) { here=here->CAPnextInstance) {
/* Default Value Processing for Capacitor Instance */ /* Default Value Processing for Capacitor Instance */
if(!here->CAPtempGiven) { if(!here->CAPtempGiven) {
here->CAPtemp = ckt->CKTtemp; here->CAPtemp = ckt->CKTtemp;
if(!here->CAPdtempGiven) here->CAPdtemp = 0.0; if(!here->CAPdtempGiven) here->CAPdtemp = 0.0;
} else { /* CAPtempGiven */ } else { /* CAPtempGiven */
here->CAPdtemp = 0.0; here->CAPdtemp = 0.0;
if (here->CAPdtempGiven) if (here->CAPdtempGiven)
printf("%s: Instance temperature specified, dtemp ignored\n", printf("%s: Instance temperature specified, dtemp ignored\n",
here->CAPname); here->CAPname);
} }
if (!here->CAPwidthGiven) { if (!here->CAPwidthGiven) {
here->CAPwidth = model->CAPdefWidth; here->CAPwidth = model->CAPdefWidth;
} }
if (!here->CAPscaleGiven) here->CAPscale = 1.0; if (!here->CAPscaleGiven) here->CAPscale = 1.0;
if (!here->CAPmGiven) here->CAPm = 1.0; if (!here->CAPmGiven) here->CAPm = 1.0;
if (!here->CAPcapGiven) { /* No instance capacitance given */ if (!here->CAPcapGiven) { /* No instance capacitance given */
if (!model->CAPmCapGiven){ /* No model capacitange given */ if (!model->CAPmCapGiven) { /* No model capacitange given */
here->CAPcapac = here->CAPcapac =
model->CAPcj * model->CAPcj *
(here->CAPwidth - model->CAPnarrow) * (here->CAPwidth - model->CAPnarrow) *
(here->CAPlength - model->CAPshort) + (here->CAPlength - model->CAPshort) +
model->CAPcjsw * 2 * ( model->CAPcjsw * 2 * (
(here->CAPlength - model->CAPshort) + (here->CAPlength - model->CAPshort) +
(here->CAPwidth - model->CAPnarrow) ); (here->CAPwidth - model->CAPnarrow) );
} else { } else {
here->CAPcapac = model->CAPmCap; here->CAPcapac = model->CAPmCap;
} }
} }
difference = (here->CAPtemp + here->CAPdtemp) - model->CAPtnom; difference = (here->CAPtemp + here->CAPdtemp) - model->CAPtnom;
/* instance parameters tc1 and tc2 will override /* instance parameters tc1 and tc2 will override
model parameters tc1 and tc2 */ model parameters tc1 and tc2 */
if (here->CAPtc1Given) if (here->CAPtc1Given)
tc1 = here->CAPtc1; /* instance */ tc1 = here->CAPtc1; /* instance */
else else
tc1 = model->CAPtempCoeff1; /* model */ tc1 = model->CAPtempCoeff1; /* model */
if (here->CAPtc2Given) if (here->CAPtc2Given)
tc2 = here->CAPtc2; tc2 = here->CAPtc2;
else else
tc2 = model->CAPtempCoeff2; tc2 = model->CAPtempCoeff2;
factor = 1.0 + tc1*difference + factor = 1.0 + tc1*difference +
tc2*difference*difference; tc2*difference*difference;
here->CAPcapac = here->CAPcapac * factor * here->CAPscale; here->CAPcapac = here->CAPcapac * factor * here->CAPscale;
} }
} }
return(OK); return(OK);
} }