jfet: whitespace cleanup

This commit is contained in:
dwarning 2013-01-26 21:27:39 +01:00 committed by rlar
parent 4184aa8c10
commit ef2614d014
4 changed files with 228 additions and 236 deletions

View File

@ -2,8 +2,8 @@
Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1987 Mathew Lew and Thomas L. Quarles
Sydney University mods Copyright(c) 1989 Anthony E. Parker, David J. Skellern
Laboratory for Communication Science Engineering
Sydney University Department of Electrical Engineering, Australia
Laboratory for Communication Science Engineering
Sydney University Department of Electrical Engineering, Australia
**********/
/*
*/
@ -39,11 +39,11 @@ JFETmAsk(CKTcircuit *ckt, GENmodel *inModel, int which, IFvalue *value)
case JFET_MOD_LAMBDA:
value->rValue = model->JFETlModulation;
return(OK);
/* Modification for Sydney University JFET model */
case JFET_MOD_B:
value->rValue = model->JFETb;
return(OK);
/* end Sydney University mod */
/* Modification for Sydney University JFET model */
case JFET_MOD_B:
value->rValue = model->JFETb;
return(OK);
/* end Sydney University mod */
case JFET_MOD_RD:
value->rValue = model->JFETdrainResist;
return(OK);
@ -84,9 +84,9 @@ JFETmAsk(CKTcircuit *ckt, GENmodel *inModel, int which, IFvalue *value)
value->rValue = model->JFETbex;
return(OK);
case JFET_MOD_TYPE:
if (model->JFETtype == NJF)
if (model->JFETtype == NJF)
value->sValue = "njf";
else
else
value->sValue = "pjf";
return(OK);
default:
@ -94,4 +94,3 @@ JFETmAsk(CKTcircuit *ckt, GENmodel *inModel, int which, IFvalue *value)
}
/* NOTREACHED */
}

View File

@ -72,28 +72,28 @@ JFETmParam(int param, IFvalue *value, GENmodel *inModels)
model->JFETtype = PJF;
}
break;
case JFET_MOD_KF:
model->JFETfNcoefGiven = TRUE;
model->JFETfNcoef = value->rValue;
break;
case JFET_MOD_AF:
model->JFETfNexpGiven = TRUE;
model->JFETfNexp = value->rValue;
break;
/* Modification for Sydney University JFET model */
case JFET_MOD_B:
model->JFETbGiven = TRUE;
model->JFETb = value->rValue;
return(OK);
/* end Sydney University mod */
case JFET_MOD_TCV:
model->JFETtcvGiven = TRUE;
model->JFETtcv = value->rValue;
break;
case JFET_MOD_BEX:
model->JFETbexGiven = TRUE;
model->JFETbex = value->rValue;
break;
case JFET_MOD_KF:
model->JFETfNcoefGiven = TRUE;
model->JFETfNcoef = value->rValue;
break;
case JFET_MOD_AF:
model->JFETfNexpGiven = TRUE;
model->JFETfNexp = value->rValue;
break;
/* Modification for Sydney University JFET model */
case JFET_MOD_B:
model->JFETbGiven = TRUE;
model->JFETb = value->rValue;
return(OK);
/* end Sydney University mod */
case JFET_MOD_TCV:
model->JFETtcvGiven = TRUE;
model->JFETtcv = value->rValue;
break;
case JFET_MOD_BEX:
model->JFETbexGiven = TRUE;
model->JFETbex = value->rValue;
break;
default:
return(E_BADPARM);
}

View File

@ -21,7 +21,7 @@ Author: 1987 Gary W. Ng
int
JFETnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *data,
JFETnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *data,
double *OnDens)
{
NOISEAN *job = (NOISEAN *) ckt->CKTcurJob;
@ -39,172 +39,165 @@ JFETnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *
/* define the names of the noise sources */
static char *JFETnNames[JFETNSRCS] = { /* Note that we have to keep the order */
"_rd", /* noise due to rd */ /* consistent with thestrchr definitions */
"_rs", /* noise due to rs */ /* in JFETdefs.h */
"_id", /* noise due to id */
"_1overf", /* flicker (1/f) noise */
"" /* total transistor noise */
"_rd", /* noise due to rd */ /* consistent with thestrchr definitions */
"_rs", /* noise due to rs */ /* in JFETdefs.h */
"_id", /* noise due to id */
"_1overf", /* flicker (1/f) noise */
"" /* total transistor noise */
};
for (model=firstModel; model != NULL; model=model->JFETnextModel) {
for (inst=model->JFETinstances; inst != NULL; inst=inst->JFETnextInstance) {
for (inst=model->JFETinstances; inst != NULL; inst=inst->JFETnextInstance) {
switch (operation) {
switch (operation) {
case N_OPEN:
case N_OPEN:
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (job->NStpsSm != 0) {
switch (mode) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
for (i=0; i < JFETNSRCS; i++) {
(void)sprintf(name,"onoise_%s%s",inst->JFETname,JFETnNames[i]);
case N_DENS:
for (i=0; i < JFETNSRCS; i++) {
(void)sprintf(name,"onoise_%s%s",inst->JFETname,JFETnNames[i]);
data->namelist = TREALLOC(IFuid, data->namelist, data->numPlots + 1);
if (!data->namelist) return(E_NOMEM);
SPfrontEnd->IFnewUid (ckt,
&(data->namelist[data->numPlots++]),
NULL, name, UID_OTHER, NULL);
/* we've added one more plot */
data->namelist = TREALLOC(IFuid, data->namelist, data->numPlots + 1);
if (!data->namelist) return(E_NOMEM);
SPfrontEnd->IFnewUid (ckt,
&(data->namelist[data->numPlots++]),
NULL, name, UID_OTHER, NULL);
/* we've added one more plot */
}
break;
case INT_NOIZ:
for (i=0; i < JFETNSRCS; i++) {
(void)sprintf(name,"onoise_total_%s%s",inst->JFETname,JFETnNames[i]);
}
break;
data->namelist = TREALLOC(IFuid, data->namelist, data->numPlots + 1);
if (!data->namelist) return(E_NOMEM);
SPfrontEnd->IFnewUid (ckt,
&(data->namelist[data->numPlots++]),
NULL, name, UID_OTHER, NULL);
/* we've added one more plot */
case INT_NOIZ:
for (i=0; i < JFETNSRCS; i++) {
(void)sprintf(name,"onoise_total_%s%s",inst->JFETname,JFETnNames[i]);
(void)sprintf(name,"inoise_total_%s%s",inst->JFETname,JFETnNames[i]);
data->namelist = TREALLOC(IFuid, data->namelist, data->numPlots + 1);
if (!data->namelist) return(E_NOMEM);
SPfrontEnd->IFnewUid (ckt,
&(data->namelist[data->numPlots++]),
NULL, name, UID_OTHER, NULL);
/* we've added one more plot */
data->namelist = TREALLOC(IFuid, data->namelist, data->numPlots + 1);
if (!data->namelist) return(E_NOMEM);
SPfrontEnd->IFnewUid (ckt,
&(data->namelist[data->numPlots++]),
NULL, name, UID_OTHER, NULL);
/* we've added one more plot */
}
break;
}
}
break;
case N_CALC:
switch (mode) {
(void)sprintf(name,"inoise_total_%s%s",inst->JFETname,JFETnNames[i]);
case N_DENS:
NevalSrc(&noizDens[JFETRDNOIZ],&lnNdens[JFETRDNOIZ],
ckt,THERMNOISE,inst->JFETdrainPrimeNode,inst->JFETdrainNode,
model->JFETdrainConduct * inst->JFETarea * inst->JFETm);
data->namelist = TREALLOC(IFuid, data->namelist, data->numPlots + 1);
if (!data->namelist) return(E_NOMEM);
SPfrontEnd->IFnewUid (ckt,
&(data->namelist[data->numPlots++]),
NULL, name, UID_OTHER, NULL);
/* we've added one more plot */
}
break;
}
}
break;
case N_CALC:
switch (mode) {
case N_DENS:
NevalSrc(&noizDens[JFETRDNOIZ],&lnNdens[JFETRDNOIZ],
ckt,THERMNOISE,inst->JFETdrainPrimeNode,inst->JFETdrainNode,
model->JFETdrainConduct * inst->JFETarea * inst->JFETm);
NevalSrc(&noizDens[JFETRSNOIZ],&lnNdens[JFETRSNOIZ],
ckt,THERMNOISE,inst->JFETsourcePrimeNode,
inst->JFETsourceNode,model->JFETsourceConduct
NevalSrc(&noizDens[JFETRSNOIZ],&lnNdens[JFETRSNOIZ],
ckt,THERMNOISE,inst->JFETsourcePrimeNode,
inst->JFETsourceNode,model->JFETsourceConduct
* inst->JFETarea * inst->JFETm);
NevalSrc(&noizDens[JFETIDNOIZ],&lnNdens[JFETIDNOIZ],
ckt,THERMNOISE,inst->JFETdrainPrimeNode,
inst->JFETsourcePrimeNode,
(2.0/3.0 * inst->JFETm * fabs(*(ckt->CKTstate0 + inst->JFETgm))));
NevalSrc(&noizDens[JFETIDNOIZ],&lnNdens[JFETIDNOIZ],
ckt,THERMNOISE,inst->JFETdrainPrimeNode,
inst->JFETsourcePrimeNode,
(2.0/3.0 * inst->JFETm * fabs(*(ckt->CKTstate0 + inst->JFETgm))));
NevalSrc(&noizDens[JFETFLNOIZ], NULL, ckt,
N_GAIN,inst->JFETdrainPrimeNode,
inst->JFETsourcePrimeNode, (double)0.0);
noizDens[JFETFLNOIZ] *= inst->JFETm * model->JFETfNcoef *
exp(model->JFETfNexp *
log(MAX(fabs(*(ckt->CKTstate0 + inst->JFETcd)),N_MINLOG))) /
data->freq;
lnNdens[JFETFLNOIZ] =
log(MAX(noizDens[JFETFLNOIZ],N_MINLOG));
NevalSrc(&noizDens[JFETFLNOIZ], NULL, ckt,
N_GAIN,inst->JFETdrainPrimeNode,
inst->JFETsourcePrimeNode, (double)0.0);
noizDens[JFETFLNOIZ] *= inst->JFETm * model->JFETfNcoef *
exp(model->JFETfNexp *
log(MAX(fabs(*(ckt->CKTstate0 + inst->JFETcd)),N_MINLOG))) /
data->freq;
lnNdens[JFETFLNOIZ] =
log(MAX(noizDens[JFETFLNOIZ],N_MINLOG));
noizDens[JFETTOTNOIZ] = noizDens[JFETRDNOIZ] +
noizDens[JFETRSNOIZ] +
noizDens[JFETIDNOIZ] +
noizDens[JFETFLNOIZ];
lnNdens[JFETTOTNOIZ] =
log(MAX(noizDens[JFETTOTNOIZ], N_MINLOG));
noizDens[JFETTOTNOIZ] = noizDens[JFETRDNOIZ] +
noizDens[JFETRSNOIZ] +
noizDens[JFETIDNOIZ] +
noizDens[JFETFLNOIZ];
lnNdens[JFETTOTNOIZ] =
log(MAX(noizDens[JFETTOTNOIZ], N_MINLOG));
*OnDens += noizDens[JFETTOTNOIZ];
*OnDens += noizDens[JFETTOTNOIZ];
if (data->delFreq == 0.0) {
if (data->delFreq == 0.0) {
/* if we haven't done any previous integration, we need to */
/* initialize our "history" variables */
/* if we haven't done any previous integration, we need to */
/* initialize our "history" variables */
for (i=0; i < JFETNSRCS; i++) {
inst->JFETnVar[LNLSTDENS][i] = lnNdens[i];
}
for (i=0; i < JFETNSRCS; i++) {
inst->JFETnVar[LNLSTDENS][i] = lnNdens[i];
}
/* clear out our integration variables if it's the first pass */
/* clear out our integration variables if it's the first pass */
if (data->freq == job->NstartFreq) {
for (i=0; i < JFETNSRCS; i++) {
inst->JFETnVar[OUTNOIZ][i] = 0.0;
inst->JFETnVar[INNOIZ][i] = 0.0;
}
}
} else { /* data->delFreq != 0.0 (we have to integrate) */
for (i=0; i < JFETNSRCS; i++) {
if (i != JFETTOTNOIZ) {
tempOnoise = Nintegrate(noizDens[i], lnNdens[i],
inst->JFETnVar[LNLSTDENS][i], data);
tempInoise = Nintegrate(noizDens[i] * data->GainSqInv ,
lnNdens[i] + data->lnGainInv,
inst->JFETnVar[LNLSTDENS][i] + data->lnGainInv,
data);
inst->JFETnVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (job->NStpsSm != 0) {
inst->JFETnVar[OUTNOIZ][i] += tempOnoise;
inst->JFETnVar[OUTNOIZ][JFETTOTNOIZ] += tempOnoise;
inst->JFETnVar[INNOIZ][i] += tempInoise;
inst->JFETnVar[INNOIZ][JFETTOTNOIZ] += tempInoise;
if (data->freq == job->NstartFreq) {
for (i=0; i < JFETNSRCS; i++) {
inst->JFETnVar[OUTNOIZ][i] = 0.0;
inst->JFETnVar[INNOIZ][i] = 0.0;
}
}
} else { /* data->delFreq != 0.0 (we have to integrate) */
for (i=0; i < JFETNSRCS; i++) {
if (i != JFETTOTNOIZ) {
tempOnoise = Nintegrate(noizDens[i], lnNdens[i],
inst->JFETnVar[LNLSTDENS][i], data);
tempInoise = Nintegrate(noizDens[i] * data->GainSqInv ,
lnNdens[i] + data->lnGainInv,
inst->JFETnVar[LNLSTDENS][i] + data->lnGainInv,
data);
inst->JFETnVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (job->NStpsSm != 0) {
inst->JFETnVar[OUTNOIZ][i] += tempOnoise;
inst->JFETnVar[OUTNOIZ][JFETTOTNOIZ] += tempOnoise;
inst->JFETnVar[INNOIZ][i] += tempInoise;
inst->JFETnVar[INNOIZ][JFETTOTNOIZ] += tempInoise;
}
}
}
}
if (data->prtSummary) {
for (i=0; i < JFETNSRCS; i++) { /* print a summary report */
data->outpVector[data->outNumber++] = noizDens[i];
}
}
break;
}
}
}
if (data->prtSummary) {
for (i=0; i < JFETNSRCS; i++) { /* print a summary report */
data->outpVector[data->outNumber++] = noizDens[i];
}
}
break;
case INT_NOIZ: /* already calculated, just output */
if (job->NStpsSm != 0) {
for (i=0; i < JFETNSRCS; i++) {
data->outpVector[data->outNumber++] = inst->JFETnVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->JFETnVar[INNOIZ][i];
}
} /* if */
break;
} /* switch (mode) */
break;
case INT_NOIZ: /* already calculated, just output */
if (job->NStpsSm != 0) {
for (i=0; i < JFETNSRCS; i++) {
data->outpVector[data->outNumber++] = inst->JFETnVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->JFETnVar[INNOIZ][i];
}
} /* if */
break;
} /* switch (mode) */
break;
case N_CLOSE:
return (OK); /* do nothing, the main calling routine will close */
break; /* the plots */
} /* switch (operation) */
} /* for inst */
case N_CLOSE:
return (OK); /* do nothing, the main calling routine will close */
break; /* the plots */
} /* switch (operation) */
} /* for inst */
} /* for model */
return(OK);
return(OK);
}

View File

@ -3,8 +3,8 @@ Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles
Modified: 2000 AlansFixes
Sydney University mods Copyright(c) 1989 Anthony E. Parker, David J. Skellern
Laboratory for Communication Science Engineering
Sydney University Department of Electrical Engineering, Australia
Laboratory for Communication Science Engineering
Sydney University Department of Electrical Engineering, Australia
**********/
#include "ngspice/ngspice.h"
@ -17,8 +17,8 @@ Sydney University mods Copyright(c) 1989 Anthony E. Parker, David J. Skellern
int
JFETsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
/* load the diode structure with those pointers needed later
* for fast matrix loading
/* load the diode structure with those pointers needed later
* for fast matrix loading
*/
{
JFETmodel *model = (JFETmodel*)inModel;
@ -62,25 +62,25 @@ JFETsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
if(!model->JFETdepletionCapCoeffGiven) {
model->JFETdepletionCapCoeff = .5;
}
if(!model->JFETfNcoefGiven) {
model->JFETfNcoef = 0;
}
if(!model->JFETfNexpGiven) {
model->JFETfNexp = 1;
}
if(!model->JFETfNcoefGiven) {
model->JFETfNcoef = 0;
}
if(!model->JFETfNexpGiven) {
model->JFETfNexp = 1;
}
/* Modification for Sydney University JFET model */
if(!model->JFETbGiven) {
model->JFETb = 1.0;
}
/* end Sydney University mod */
/* Modification for Sydney University JFET model */
if(!model->JFETbGiven) {
model->JFETb = 1.0;
}
/* end Sydney University mod */
if(!model->JFETtcvGiven) {
model->JFETtcv = 0.0;
}
if(!model->JFETbexGiven) {
model->JFETbex = 0.0;
}
if(!model->JFETtcvGiven) {
model->JFETtcv = 0.0;
}
if(!model->JFETbexGiven) {
model->JFETbex = 0.0;
}
if(model->JFETdrainResist != 0) {
model->JFETdrainConduct = 1/model->JFETdrainResist;
@ -96,7 +96,7 @@ JFETsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
/* loop through all the instances of the model */
for (here = model->JFETinstances; here != NULL ;
here=here->JFETnextInstance) {
if(!here->JFETareaGiven) {
here->JFETarea = 1;
}
@ -108,45 +108,45 @@ JFETsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
if(model->JFETsourceResist != 0) {
if(here->JFETsourcePrimeNode == 0) {
error = CKTmkVolt(ckt,&tmp,here->JFETname,"source");
if(error) return(error);
here->JFETsourcePrimeNode = tmp->number;
if (ckt->CKTcopyNodesets) {
CKTnode *tmpNode;
IFuid tmpName;
if (CKTinst2Node(ckt,here,3,&tmpNode,&tmpName)==OK) {
if (tmpNode->nsGiven) {
tmp->nodeset=tmpNode->nodeset;
tmp->nsGiven=tmpNode->nsGiven;
}
}
error = CKTmkVolt(ckt,&tmp,here->JFETname,"source");
if(error) return(error);
here->JFETsourcePrimeNode = tmp->number;
if (ckt->CKTcopyNodesets) {
CKTnode *tmpNode;
IFuid tmpName;
if (CKTinst2Node(ckt,here,3,&tmpNode,&tmpName)==OK) {
if (tmpNode->nsGiven) {
tmp->nodeset=tmpNode->nodeset;
tmp->nsGiven=tmpNode->nsGiven;
}
}
}
}
}
} else {
here->JFETsourcePrimeNode = here->JFETsourceNode;
}
if(model->JFETdrainResist != 0) {
if(here->JFETdrainPrimeNode == 0) {
error = CKTmkVolt(ckt,&tmp,here->JFETname,"drain");
if(error) return(error);
here->JFETdrainPrimeNode = tmp->number;
if (ckt->CKTcopyNodesets) {
CKTnode *tmpNode;
IFuid tmpName;
error = CKTmkVolt(ckt,&tmp,here->JFETname,"drain");
if(error) return(error);
here->JFETdrainPrimeNode = tmp->number;
if (CKTinst2Node(ckt,here,1,&tmpNode,&tmpName)==OK) {
if (tmpNode->nsGiven) {
tmp->nodeset=tmpNode->nodeset;
tmp->nsGiven=tmpNode->nsGiven;
}
}
if (ckt->CKTcopyNodesets) {
CKTnode *tmpNode;
IFuid tmpName;
if (CKTinst2Node(ckt,here,1,&tmpNode,&tmpName)==OK) {
if (tmpNode->nsGiven) {
tmp->nodeset=tmpNode->nodeset;
tmp->nsGiven=tmpNode->nsGiven;
}
}
}
}
}
} else {
here->JFETdrainPrimeNode = here->JFETdrainNode;
}
@ -190,24 +190,24 @@ JFETunsetup(GENmodel *inModel, CKTcircuit *ckt)
JFETinstance *here;
for (model = (JFETmodel *)inModel; model != NULL;
model = model->JFETnextModel)
model = model->JFETnextModel)
{
for (here = model->JFETinstances; here != NULL;
here=here->JFETnextInstance)
{
if (here->JFETsourcePrimeNode
&& here->JFETsourcePrimeNode != here->JFETsourceNode)
{
CKTdltNNum(ckt, here->JFETsourcePrimeNode);
here->JFETsourcePrimeNode = 0;
}
if (here->JFETdrainPrimeNode
&& here->JFETdrainPrimeNode != here->JFETdrainNode)
{
CKTdltNNum(ckt, here->JFETdrainPrimeNode);
here->JFETdrainPrimeNode = 0;
}
}
{
if (here->JFETsourcePrimeNode
&& here->JFETsourcePrimeNode != here->JFETsourceNode)
{
CKTdltNNum(ckt, here->JFETsourcePrimeNode);
here->JFETsourcePrimeNode = 0;
}
if (here->JFETdrainPrimeNode
&& here->JFETdrainPrimeNode != here->JFETdrainNode)
{
CKTdltNNum(ckt, here->JFETdrainPrimeNode);
here->JFETdrainPrimeNode = 0;
}
}
}
return OK;
}