jfet: indentations as preparation for noise model extension
This commit is contained in:
parent
f081cf8606
commit
243100cc9d
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue