From 243100cc9dee3738b720d34d660591efa491d098 Mon Sep 17 00:00:00 2001 From: dwarning Date: Sat, 26 Jan 2013 21:27:39 +0100 Subject: [PATCH] jfet: indentations as preparation for noise model extension --- src/spicelib/devices/jfet/jfetmask.c | 18 +- src/spicelib/devices/jfet/jfetmpar.c | 44 ++--- src/spicelib/devices/jfet/jfetnoi.c | 259 +++++++++++++-------------- src/spicelib/devices/jfet/jfetset.c | 76 ++++---- 4 files changed, 196 insertions(+), 201 deletions(-) diff --git a/src/spicelib/devices/jfet/jfetmask.c b/src/spicelib/devices/jfet/jfetmask.c index c50d4710a..2b01d0f25 100644 --- a/src/spicelib/devices/jfet/jfetmask.c +++ b/src/spicelib/devices/jfet/jfetmask.c @@ -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: diff --git a/src/spicelib/devices/jfet/jfetmpar.c b/src/spicelib/devices/jfet/jfetmpar.c index 118a51217..8f8a4a83a 100644 --- a/src/spicelib/devices/jfet/jfetmpar.c +++ b/src/spicelib/devices/jfet/jfetmpar.c @@ -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); } diff --git a/src/spicelib/devices/jfet/jfetnoi.c b/src/spicelib/devices/jfet/jfetnoi.c index 1a1eab20e..291a2aa1f 100644 --- a/src/spicelib/devices/jfet/jfetnoi.c +++ b/src/spicelib/devices/jfet/jfetnoi.c @@ -39,169 +39,164 @@ 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); diff --git a/src/spicelib/devices/jfet/jfetset.c b/src/spicelib/devices/jfet/jfetset.c index e76b076a6..f7c6bcb30 100644 --- a/src/spicelib/devices/jfet/jfetset.c +++ b/src/spicelib/devices/jfet/jfetset.c @@ -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" @@ -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; @@ -113,8 +113,8 @@ JFETsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states) here->JFETsourcePrimeNode = tmp->number; if (ckt->CKTcopyNodesets) { - CKTnode *tmpNode; - IFuid tmpName; + CKTnode *tmpNode; + IFuid tmpName; if (CKTinst2Node(ckt,here,3,&tmpNode,&tmpName)==OK) { if (tmpNode->nsGiven) { @@ -135,8 +135,8 @@ JFETsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states) here->JFETdrainPrimeNode = tmp->number; if (ckt->CKTcopyNodesets) { - CKTnode *tmpNode; - IFuid tmpName; + CKTnode *tmpNode; + IFuid tmpName; if (CKTinst2Node(ckt,here,1,&tmpNode,&tmpName)==OK) { if (tmpNode->nsGiven) { @@ -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; }