auxiliary define (ANALYSIS*) ckt->CKTcurJob --> `job'

This commit is contained in:
rlar 2011-12-11 11:34:38 +00:00
parent 56d000f77b
commit f8f4e32875
37 changed files with 277 additions and 214 deletions

View File

@ -1,3 +1,7 @@
2011-12-11 Robert Larice
* src/spicelib/**/*.c :
auxiliary define (ANALYSIS*) ckt->CKTcurJob --> `job'
2011-12-11 Robert Larice
* src/spicelib/analysis/cktdisto.c ,
* src/spicelib/analysis/cktpzld.c ,

View File

@ -25,6 +25,7 @@ void SetAnalyse( char * Analyse, int Percent);
int
ACan(CKTcircuit *ckt, int restart)
{
#define job ((ACAN *) ckt->CKTcurJob)
double freq;
double freqTol; /* tolerence parameter for finding final frequency */
@ -56,31 +57,31 @@ ACan(CKTcircuit *ckt, int restart)
#endif
/* start at beginning */
if(((ACAN*)ckt->CKTcurJob)->ACsaveFreq == 0 || restart) {
if (((ACAN*)ckt->CKTcurJob)->ACnumberSteps < 1)
((ACAN*)ckt->CKTcurJob)->ACnumberSteps = 1;
if (job->ACsaveFreq == 0 || restart) {
if (job->ACnumberSteps < 1)
job->ACnumberSteps = 1;
switch(((ACAN*)ckt->CKTcurJob)->ACstepType) {
switch (job->ACstepType) {
case DECADE:
((ACAN*)ckt->CKTcurJob)->ACfreqDelta =
exp(log(10.0)/((ACAN*)ckt->CKTcurJob)->ACnumberSteps);
job->ACfreqDelta =
exp(log(10.0)/job->ACnumberSteps);
break;
case OCTAVE:
((ACAN*)ckt->CKTcurJob)->ACfreqDelta =
exp(log(2.0)/((ACAN*)ckt->CKTcurJob)->ACnumberSteps);
job->ACfreqDelta =
exp(log(2.0)/job->ACnumberSteps);
break;
case LINEAR:
if (((ACAN*)ckt->CKTcurJob)->ACnumberSteps-1 > 1)
((ACAN*)ckt->CKTcurJob)->ACfreqDelta =
(((ACAN*)ckt->CKTcurJob)->ACstopFreq -
((ACAN*)ckt->CKTcurJob)->ACstartFreq)/
(((ACAN*)ckt->CKTcurJob)->ACnumberSteps-1);
if (job->ACnumberSteps-1 > 1)
job->ACfreqDelta =
(job->ACstopFreq -
job->ACstartFreq) /
(job->ACnumberSteps - 1);
else
/* Patch from: Richard McRoberts
* This patch is for a rather pathological case:
* a linear step with only one point */
((ACAN*)ckt->CKTcurJob)->ACfreqDelta = 0;
job->ACfreqDelta = 0;
break;
default:
return(E_BADPARM);
@ -170,29 +171,29 @@ ACan(CKTcircuit *ckt, int restart)
tfree(nameList);
if(error) return(error);
if (((ACAN*)ckt->CKTcurJob)->ACstepType != LINEAR) {
if (job->ACstepType != LINEAR) {
SPfrontEnd->OUTattributes (acPlot, NULL,
OUT_SCALE_LOG, NULL);
}
freq = ((ACAN*)ckt->CKTcurJob)->ACstartFreq;
freq = job->ACstartFreq;
} else { /* continue previous analysis */
freq = ((ACAN*)ckt->CKTcurJob)->ACsaveFreq;
((ACAN*)ckt->CKTcurJob)->ACsaveFreq = 0; /* clear the 'old' frequency */
freq = job->ACsaveFreq;
job->ACsaveFreq = 0; /* clear the 'old' frequency */
/* fix resume? saj, indeed !*/
error = SPfrontEnd->OUTpBeginPlot
(NULL, NULL, NULL, NULL, 0, 666, NULL, 666, &acPlot);
/* saj*/
}
switch(((ACAN*)ckt->CKTcurJob)->ACstepType) {
switch (job->ACstepType) {
case DECADE:
case OCTAVE:
freqTol = ((ACAN*)ckt->CKTcurJob)->ACfreqDelta *
((ACAN*)ckt->CKTcurJob)->ACstopFreq * ckt->CKTreltol;
freqTol = job->ACfreqDelta *
job->ACstopFreq * ckt->CKTreltol;
break;
case LINEAR:
freqTol = ((ACAN*)ckt->CKTcurJob)->ACfreqDelta * ckt->CKTreltol;
freqTol = job->ACfreqDelta * ckt->CKTreltol;
break;
default:
return(E_BADPARM);
@ -219,10 +220,10 @@ ACan(CKTcircuit *ckt, int restart)
startkTime = ckt->CKTstat->STATsyncTime;
/* main loop through all scheduled frequencies */
while(freq <= ((ACAN*)ckt->CKTcurJob)->ACstopFreq+freqTol) {
while (freq <= job->ACstopFreq + freqTol) {
if(SPfrontEnd->IFpauseTest()) {
/* user asked us to pause via an interrupt */
((ACAN*)ckt->CKTcurJob)->ACsaveFreq = freq;
job->ACsaveFreq = freq;
return(E_PAUSE);
}
ckt->CKTomega = 2.0 * M_PI *freq;
@ -284,7 +285,7 @@ ACan(CKTcircuit *ckt, int restart)
ckt->CKTmode=(ckt->CKTmode&MODEUIC)|MODEDCOP|MODEINITSMSIG;
save1 = ckt->CKTsenInfo->SENmode;
ckt->CKTsenInfo->SENmode = ACSEN;
if(freq == ((ACAN*)ckt->CKTcurJob)->ACstartFreq){
if (freq == job->ACstartFreq) {
ckt->CKTsenInfo->SENacpertflag = 1;
}
else{
@ -329,15 +330,15 @@ ACan(CKTcircuit *ckt, int restart)
/* increment frequency */
switch(((ACAN*)ckt->CKTcurJob)->ACstepType) {
switch (job->ACstepType) {
case DECADE:
case OCTAVE:
/* inserted again 14.12.2001 */
#ifdef HAS_WINDOWS
{
double endfreq = ((ACAN*)ckt->CKTcurJob)->ACstopFreq;
double startfreq = ((ACAN*)ckt->CKTcurJob)->ACstartFreq;
double endfreq = job->ACstopFreq;
double startfreq = job->ACstartFreq;
endfreq = log(endfreq);
if (startfreq == 0.0)
startfreq = 1e-12;
@ -348,21 +349,21 @@ ACan(CKTcircuit *ckt, int restart)
}
#endif
freq *= ((ACAN*)ckt->CKTcurJob)->ACfreqDelta;
if(((ACAN*)ckt->CKTcurJob)->ACfreqDelta==1) goto endsweep;
freq *= job->ACfreqDelta;
if (job->ACfreqDelta == 1) goto endsweep;
break;
case LINEAR:
#ifdef HAS_WINDOWS
{
double endfreq = ((ACAN*)ckt->CKTcurJob)->ACstopFreq;
double startfreq = ((ACAN*)ckt->CKTcurJob)->ACstartFreq;
double endfreq = job->ACstopFreq;
double startfreq = job->ACstartFreq;
SetAnalyse( "ac", (int)((freq - startfreq)* 1000.0 / (endfreq-startfreq)));
}
#endif
freq += ((ACAN*)ckt->CKTcurJob)->ACfreqDelta;
if(((ACAN*)ckt->CKTcurJob)->ACfreqDelta==0) goto endsweep;
freq += job->ACfreqDelta;
if (job->ACfreqDelta == 0) goto endsweep;
break;
default:
return(E_INTERN);

View File

@ -23,6 +23,8 @@ Author: 1987 Gary W. Ng
int
CKTnoise (CKTcircuit *ckt, int mode, int operation, Ndata *data)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
double outNdens;
int i;
IFvalue outData; /* output variable (points to list of outputs)*/
@ -93,7 +95,7 @@ CKTnoise (CKTcircuit *ckt, int mode, int operation, Ndata *data)
switch (mode) {
case N_DENS:
if ((((NOISEAN*)ckt->CKTcurJob)->NStpsSm == 0)
if ((job->NStpsSm == 0)
|| data->prtSummary)
{
data->outpVector[data->outNumber++] = outNdens;

View File

@ -518,6 +518,8 @@ int CKTpzStrat(PZtrial **set)
int
CKTpzRunTrial(CKTcircuit *ckt, PZtrial **new_trialp, PZtrial **set)
{
#define job ((PZAN *) ckt->CKTcurJob)
PZtrial *match, *base, *new_trial;
PZtrial *p, *prev;
SPcomplex def_frac, diff_frac;
@ -688,7 +690,7 @@ CKTpzRunTrial(CKTcircuit *ckt, PZtrial **new_trialp, PZtrial **set)
CKTpzLoad(ckt, &new_trial->s);
error = SMPcReorder(ckt->CKTmatrix, 1.0e-30,
0.0 /* 0.1 Piv. Rel. */,
&(((PZAN *) ckt->CKTcurJob)->PZnumswaps));
&(job->PZnumswaps));
}
if (error != E_SINGULAR) {
@ -719,8 +721,8 @@ CKTpzRunTrial(CKTcircuit *ckt, PZtrial **new_trialp, PZtrial **set)
else {
/* PZnumswaps is either 0 or 1 */
new_trial->f_raw.real *= ((PZAN *) ckt->CKTcurJob)->PZnumswaps;
new_trial->f_raw.imag *= ((PZAN *) ckt->CKTcurJob)->PZnumswaps;
new_trial->f_raw.real *= job->PZnumswaps;
new_trial->f_raw.imag *= job->PZnumswaps;
#ifdef PZDEBUG
printf("SMP Det: (%g,%g)^%d\n", new_trial->f_raw.real,

View File

@ -51,6 +51,8 @@ CKTfour(int, int, double *, double *, double *, double, double *, double *, doub
int
DCpss(CKTcircuit *ckt, int restart)
{
#define job ((PSSan *) ckt->CKTcurJob)
int oscnNode;
int i;
double olddelta;
@ -113,7 +115,7 @@ DCpss(CKTcircuit *ckt, int restart)
printf("Periodic Steady State analysis started.\n");
oscnNode = ((PSSan*)ckt->CKTcurJob)->PSSoscNode->number;
oscnNode = job->PSSoscNode->number;
printf("PSS guessed frequency %g.\n", ckt->CKTguessedFreq);
printf("PSS points %ld.\n", ckt->CKTpsspoints);
printf("PSS harmonics number %d.\n", ckt->CKTharms);
@ -184,7 +186,7 @@ DCpss(CKTcircuit *ckt, int restart)
error = SPfrontEnd->OUTpBeginPlot (ckt,
ckt->CKTcurJob,
"Time Domain Periodic Steady State",timeUid,IF_REAL,numNames,nameList,
IF_REAL,&(((PSSan*)ckt->CKTcurJob)->PSSplot_td));
IF_REAL, &(job->PSSplot_td));
tfree(nameList);
if(error) return(error);
@ -249,7 +251,7 @@ DCpss(CKTcircuit *ckt, int restart)
/* Send the operating point results for Mspice compatibility */
if(g_ipc.enabled) {
ipc_send_dcop_prefix();
CKTdump(ckt, 0.0, ((PSSan*)ckt->CKTcurJob)->PSSplot_td);
CKTdump(ckt, 0.0, job->PSSplot_td);
ipc_send_dcop_suffix();
}
@ -341,7 +343,7 @@ DCpss(CKTcircuit *ckt, int restart)
/* To get rawfile working saj*/
error = SPfrontEnd->OUTpBeginPlot
(NULL, NULL, NULL, NULL, 0, 666, NULL, 666,
&(((PSSan*)ckt->CKTcurJob)->PSSplot_td));
&(job->PSSplot_td));
if(error) {
fprintf(stderr, "Couldn't relink rawfile\n");
return error;
@ -450,7 +452,7 @@ nextTime:
ipc_firsttime || ipc_secondtime || ipc_delta_cut ) {
ipc_send_data_prefix(ckt->CKTtime);
CKTdump(ckt, ckt->CKTtime, ((PSSan*)ckt->CKTcurJob)->PSSplot_td);
CKTdump(ckt, ckt->CKTtime, job->PSSplot_td);
ipc_send_data_suffix();
if(ipc_firsttime) {
@ -472,7 +474,7 @@ nextTime:
#endif
if ( in_pss && pss_cycle_counter==1 ) {
if(ckt->CKTtime >= ckt->CKTinitTime)
CKTdump(ckt, ckt->CKTtime, ((PSSan*)ckt->CKTcurJob)->PSSplot_td);
CKTdump(ckt, ckt->CKTtime, job->PSSplot_td);
psstimes[pss_points_cycle] = ckt->CKTtime;
for(count_1=1; count_1<msize+1; count_1++)
pssvalues[count_1-1 + pss_points_cycle*msize] = ckt->CKTrhsOld[count_1];
@ -775,7 +777,7 @@ nextTime:
pss_cycle_counter++;
if (pss_cycle_counter>1) {
/* End plot in time domain */
SPfrontEnd->OUTendPlot (((PSSan*)ckt->CKTcurJob)->PSSplot_td);
SPfrontEnd->OUTendPlot (job->PSSplot_td);
/* The following line must be placed just before a new OUTpBeginPlot is called */
error = CKTnames(ckt,&numNames,&nameList);
if (error) return (error);
@ -784,7 +786,7 @@ nextTime:
error = SPfrontEnd->OUTpBeginPlot (ckt,
ckt->CKTcurJob,
"Frequency Domain Periodic Steady State",freqUid,IF_REAL,numNames,nameList,
IF_REAL,&(((PSSan*)ckt->CKTcurJob)->PSSplot_fd));
IF_REAL, &(job->PSSplot_fd));
tfree(nameList);
/* ************************* */
/* Fourier transform on data */
@ -804,10 +806,10 @@ nextTime:
for(i4 = 1; i4 <= msize; i4++) {
ckt->CKTrhsOld[i4] =pssResults[(k1-1)+(i4-1)*msize] ;
}
CKTdump(ckt, pssfreqs[k1-1], ((PSSan*)ckt->CKTcurJob)->PSSplot_fd);
CKTdump(ckt, pssfreqs[k1-1], job->PSSplot_fd);
}
/* End plot in freq domain */
SPfrontEnd->OUTendPlot (((PSSan*)ckt->CKTcurJob)->PSSplot_fd);
SPfrontEnd->OUTendPlot (job->PSSplot_fd);
FREE(RHS_copy_se);
FREE(RHS_max);
FREE(RHS_min);

View File

@ -47,6 +47,8 @@ int
DCtran(CKTcircuit *ckt,
int restart) /* forced restart flag */
{
#define job ((TRANan *) ckt->CKTcurJob)
int i;
double olddelta;
double delta;
@ -148,7 +150,7 @@ DCtran(CKTcircuit *ckt,
error = SPfrontEnd->OUTpBeginPlot (ckt,
ckt->CKTcurJob,
ckt->CKTcurJob->JOBname,timeUid,IF_REAL,numNames,nameList,
IF_REAL,&(((TRANan*)ckt->CKTcurJob)->TRANplot));
IF_REAL, &(job->TRANplot));
tfree(nameList);
if(error) return(error);
@ -257,7 +259,7 @@ DCtran(CKTcircuit *ckt,
/* Send the operating point results for Mspice compatibility */
if(g_ipc.enabled) {
ipc_send_dcop_prefix();
CKTdump(ckt, 0.0, ((TRANan*)ckt->CKTcurJob)->TRANplot);
CKTdump(ckt, 0.0, job->TRANplot);
ipc_send_dcop_suffix();
}
@ -349,7 +351,7 @@ DCtran(CKTcircuit *ckt,
/* To get rawfile working saj*/
error = SPfrontEnd->OUTpBeginPlot
(NULL, NULL, NULL, NULL, 0, 666, NULL, 666,
&(((TRANan*)ckt->CKTcurJob)->TRANplot));
&(job->TRANplot));
if(error) {
fprintf(stderr, "Couldn't relink rawfile\n");
return error;
@ -447,7 +449,7 @@ DCtran(CKTcircuit *ckt,
ipc_firsttime || ipc_secondtime || ipc_delta_cut ) {
ipc_send_data_prefix(ckt->CKTtime);
CKTdump(ckt, ckt->CKTtime, ((TRANan*)ckt->CKTcurJob)->TRANplot);
CKTdump(ckt, ckt->CKTtime, job->TRANplot);
ipc_send_data_suffix();
if(ipc_firsttime) {
@ -466,7 +468,7 @@ DCtran(CKTcircuit *ckt,
CLUoutput(ckt);
#endif
if(ckt->CKTtime >= ckt->CKTinitTime)
CKTdump(ckt, ckt->CKTtime, ((TRANan*)ckt->CKTcurJob)->TRANplot);
CKTdump(ckt, ckt->CKTtime, job->TRANplot);
#ifdef XSPICE
/* gtri - begin - wbk - Update event queues/data for accepted timepoint */
/* Note: this must be done AFTER sending results to SI so it can't */
@ -483,7 +485,7 @@ DCtran(CKTcircuit *ckt,
printf(" done: time is %g, final time is %g, and tol is %g\n",
ckt->CKTtime, ckt->CKTfinalTime, ckt->CKTminBreak);
#endif
SPfrontEnd->OUTendPlot (((TRANan*)ckt->CKTcurJob)->TRANplot);
SPfrontEnd->OUTendPlot (job->TRANplot);
ckt->CKTcurrentAnalysis = 0;
ckt->CKTstat->STATtranTime += SPfrontEnd->IFseconds() - startTime;
ckt->CKTstat->STATtranIter += ckt->CKTstat->STATnumIter - startIters;

View File

@ -19,6 +19,8 @@ TFanal(CKTcircuit *ckt, int restart)
/* forced restart flag */
{
#define job ((TFan *) ckt->CKTcurJob)
int size;
int insrc = 0, outsrc = 0;
double outputs[3];
@ -50,10 +52,10 @@ TFanal(CKTcircuit *ckt, int restart)
Vtype = CKTtypelook("Vsource");
if(Itype != -1) {
error = CKTfndDev(ckt,&Itype,&ptr,
((TFan*)ckt->CKTcurJob)->TFinSrc, NULL, NULL);
job->TFinSrc, NULL, NULL);
if(error ==0) {
((TFan*)ckt->CKTcurJob)->TFinIsI = 1;
((TFan*)ckt->CKTcurJob)->TFinIsV = 0;
job->TFinIsI = 1;
job->TFinIsV = 0;
} else {
ptr = NULL;
}
@ -61,15 +63,15 @@ TFanal(CKTcircuit *ckt, int restart)
if( (Vtype != -1) && (ptr==NULL) ) {
error = CKTfndDev(ckt,&Vtype,&ptr,
((TFan*)ckt->CKTcurJob)->TFinSrc, NULL,
job->TFinSrc, NULL,
NULL);
((TFan*)ckt->CKTcurJob)->TFinIsV = 1;
((TFan*)ckt->CKTcurJob)->TFinIsI = 0;
job->TFinIsV = 1;
job->TFinIsI = 0;
if(error !=0) {
SPfrontEnd->IFerror (ERR_WARNING,
"Transfer function source %s not in circuit",
&(((TFan*)ckt->CKTcurJob)->TFinSrc));
((TFan*)ckt->CKTcurJob)->TFinIsV = 0;
&(job->TFinSrc));
job->TFinIsV = 0;
return(E_NOTFOUND);
}
}
@ -79,11 +81,11 @@ TFanal(CKTcircuit *ckt, int restart)
ckt->CKTrhs[i] = 0;
}
if(((TFan*)ckt->CKTcurJob)->TFinIsI) {
if (job->TFinIsI) {
ckt->CKTrhs[ptr->GENnode1] -= 1;
ckt->CKTrhs[ptr->GENnode2] += 1;
} else {
insrc = CKTfndBranch(ckt,((TFan*)ckt->CKTcurJob)->TFinSrc);
insrc = CKTfndBranch(ckt, job->TFinSrc);
ckt->CKTrhs[insrc] += 1;
}
@ -96,37 +98,37 @@ TFanal(CKTcircuit *ckt, int restart)
UID_OTHER, NULL);
/* make a UID for the input impedance */
SPfrontEnd->IFnewUid (ckt, &inuid, ((TFan*)ckt->CKTcurJob)->TFinSrc,
SPfrontEnd->IFnewUid (ckt, &inuid, job->TFinSrc,
"Input_impedance", UID_OTHER, NULL);
/* make a UID for the output impedance */
if(((TFan*)ckt->CKTcurJob)->TFoutIsI) {
SPfrontEnd->IFnewUid (ckt, &outuid, ((TFan*)ckt->CKTcurJob)->TFoutSrc
if (job->TFoutIsI) {
SPfrontEnd->IFnewUid (ckt, &outuid, job->TFoutSrc
,"Output_impedance", UID_OTHER, NULL);
} else {
name = TMALLOC(char, strlen(((TFan*)ckt->CKTcurJob)->TFoutName) + 22);
name = TMALLOC(char, strlen(job->TFoutName) + 22);
(void)sprintf(name,"output_impedance_at_%s",
((TFan*)ckt->CKTcurJob)->TFoutName);
job->TFoutName);
SPfrontEnd->IFnewUid (ckt, &outuid, NULL,
name, UID_OTHER, NULL);
}
error = SPfrontEnd->OUTpBeginPlot (ckt, ckt->CKTcurJob,
((TFan*)(ckt->CKTcurJob))->JOBname, NULL, 0, 3,
job->JOBname, NULL, 0, 3,
uids,IF_REAL,&plotptr);
if(error) return(error);
/*find transfer function */
if(((TFan*)ckt->CKTcurJob)->TFoutIsV) {
outputs[0] = ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutPos->number] -
ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutNeg->number] ;
if (job->TFoutIsV) {
outputs[0] = ckt->CKTrhs[job->TFoutPos->number] -
ckt->CKTrhs[job->TFoutNeg->number];
} else {
outsrc = CKTfndBranch(ckt,((TFan*)ckt->CKTcurJob)->TFoutSrc);
outsrc = CKTfndBranch(ckt, job->TFoutSrc);
outputs[0] = ckt->CKTrhs[outsrc];
}
/* now for input resistance */
if(((TFan*)ckt->CKTcurJob)->TFinIsI) {
if (job->TFinIsI) {
outputs[1] = ckt->CKTrhs[ptr->GENnode2] -
ckt->CKTrhs[ptr->GENnode1];
} else {
@ -137,9 +139,9 @@ TFanal(CKTcircuit *ckt, int restart)
}
}
if(((TFan*)ckt->CKTcurJob)->TFoutIsI &&
(((TFan*)ckt->CKTcurJob)->TFoutSrc ==
((TFan*)ckt->CKTcurJob)->TFinSrc)) {
if (job->TFoutIsI &&
(job->TFoutSrc ==
job->TFinSrc)) {
outputs[2]=outputs[1];
goto done;
/* no need to compute output resistance when it is the same as
@ -149,17 +151,17 @@ TFanal(CKTcircuit *ckt, int restart)
for(i=0;i<=size;i++) {
ckt->CKTrhs[i] = 0;
}
if(((TFan*)ckt->CKTcurJob)->TFoutIsV) {
ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutPos->number] -= 1;
ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutNeg->number] += 1;
if (job->TFoutIsV) {
ckt->CKTrhs[job->TFoutPos->number] -= 1;
ckt->CKTrhs[job->TFoutNeg->number] += 1;
} else {
ckt->CKTrhs[outsrc] += 1;
}
SMPsolve(ckt->CKTmatrix,ckt->CKTrhs,ckt->CKTrhsSpare);
ckt->CKTrhs[0]=0;
if(((TFan*)ckt->CKTcurJob)->TFoutIsV) {
outputs[2]= ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutNeg->number] -
ckt->CKTrhs[((TFan*)ckt->CKTcurJob)->TFoutPos->number];
if (job->TFoutIsV) {
outputs[2] = ckt->CKTrhs[job->TFoutNeg->number] -
ckt->CKTrhs[job->TFoutPos->number];
} else {
outputs[2] = 1/MAX(1e-20,ckt->CKTrhs[outsrc]);
}

View File

@ -25,6 +25,8 @@ int
BJTnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
BJTmodel *firstModel = (BJTmodel *) genmodel;
BJTmodel *model;
BJTinstance *inst;
@ -61,7 +63,7 @@ for (model=firstModel; model != NULL; model=model->BJTnextModel) {
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -162,7 +164,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < BJTNSRCS; i++) {
inst->BJTnVar[OUTNOIZ][i] = 0.0;
inst->BJTnVar[INNOIZ][i] = 0.0;
@ -183,7 +185,7 @@ if (!data->namelist) return(E_NOMEM);
inst->BJTnVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->BJTnVar[OUTNOIZ][i] += tempOnoise;
inst->BJTnVar[OUTNOIZ][BJTTOTNOIZ] += tempOnoise;
inst->BJTnVar[INNOIZ][i] += tempInoise;
@ -200,7 +202,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < BJTNSRCS; i++) {
data->outpVector[data->outNumber++] = inst->BJTnVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->BJTnVar[INNOIZ][i];

View File

@ -24,6 +24,8 @@ int
B1noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
B1model *firstModel = (B1model *) genmodel;
B1model *model;
B1instance *inst;
@ -55,7 +57,7 @@ B1noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -154,7 +156,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < B1NSRCS; i++) {
inst->B1nVar[OUTNOIZ][i] = 0.0;
inst->B1nVar[INNOIZ][i] = 0.0;
@ -172,7 +174,7 @@ if (!data->namelist) return(E_NOMEM);
inst->B1nVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->B1nVar[OUTNOIZ][i] += tempOnoise;
inst->B1nVar[OUTNOIZ][B1TOTNOIZ] += tempOnoise;
inst->B1nVar[INNOIZ][i] += tempInoise;
@ -189,7 +191,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < B1NSRCS; i++) {
data->outpVector[data->outNumber++] = inst->B1nVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->B1nVar[INNOIZ][i];

View File

@ -24,6 +24,8 @@ int
B2noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
B2model *firstModel = (B2model *) genmodel;
B2model *model;
B2instance *inst;
@ -55,7 +57,7 @@ B2noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -154,7 +156,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < B2NSRCS; i++) {
inst->B2nVar[OUTNOIZ][i] = 0.0;
inst->B2nVar[INNOIZ][i] = 0.0;
@ -172,7 +174,7 @@ if (!data->namelist) return(E_NOMEM);
inst->B2nVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->B2nVar[OUTNOIZ][i] += tempOnoise;
inst->B2nVar[OUTNOIZ][B2TOTNOIZ] += tempOnoise;
inst->B2nVar[INNOIZ][i] += tempInoise;
@ -189,7 +191,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < B2NSRCS; i++) {
data->outpVector[data->outNumber++] = inst->B2nVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->B2nVar[INNOIZ][i];

View File

@ -108,6 +108,8 @@ CKTcircuit *ckt,
Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
BSIM3model *model = (BSIM3model *)inModel;
BSIM3instance *here;
struct bsim3SizeDependParam *pParam;
@ -147,7 +149,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < BSIM3NSRCS; i++)
@ -315,7 +317,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < BSIM3NSRCS; i++)
{ here->BSIM3nVar[OUTNOIZ][i] = 0.0;
here->BSIM3nVar[INNOIZ][i] = 0.0;
@ -341,8 +343,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->BSIM3nVar[OUTNOIZ][i]
+= tempOnoise;
here->BSIM3nVar[OUTNOIZ][BSIM3TOTNOIZ]
@ -365,7 +366,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < BSIM3NSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->BSIM3nVar[OUTNOIZ][i];

View File

@ -104,6 +104,8 @@ CKTcircuit *ckt,
Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
register B4SOImodel *model = (B4SOImodel *)inModel;
register B4SOIinstance *here;
struct b4soiSizeDependParam *pParam;
@ -156,7 +158,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < B4SOINSRCS; i++)
@ -554,7 +556,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < B4SOINSRCS; i++)
{ here->B4SOInVar[OUTNOIZ][i] = 0.0;
here->B4SOInVar[INNOIZ][i] = 0.0;
@ -580,8 +582,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->B4SOInVar[OUTNOIZ][i]
+= tempOnoise;
here->B4SOInVar[OUTNOIZ][B4SOITOTNOIZ]
@ -604,7 +605,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < B4SOINSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->B4SOInVar[OUTNOIZ][i];

View File

@ -98,6 +98,8 @@ int
B3SOIDDnoise (int mode, int operation, GENmodel *inModel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
B3SOIDDmodel *model = (B3SOIDDmodel *)inModel;
B3SOIDDinstance *here;
struct b3soiddSizeDependParam *pParam;
@ -140,7 +142,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < B3SOIDDNSRCS; i++)
@ -311,7 +313,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < B3SOIDDNSRCS; i++)
{ here->B3SOIDDnVar[OUTNOIZ][i] = 0.0;
here->B3SOIDDnVar[INNOIZ][i] = 0.0;
@ -337,8 +339,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->B3SOIDDnVar[OUTNOIZ][i]
+= tempOnoise;
here->B3SOIDDnVar[OUTNOIZ][B3SOIDDTOTNOIZ]
@ -361,7 +362,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < B3SOIDDNSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->B3SOIDDnVar[OUTNOIZ][i];

View File

@ -98,6 +98,8 @@ int
B3SOIFDnoise (int mode, int operation, GENmodel *inModel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
B3SOIFDmodel *model = (B3SOIFDmodel *)inModel;
B3SOIFDinstance *here;
struct b3soifdSizeDependParam *pParam;
@ -140,7 +142,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < B3SOIFDNSRCS; i++)
@ -308,7 +310,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < B3SOIFDNSRCS; i++)
{ here->B3SOIFDnVar[OUTNOIZ][i] = 0.0;
here->B3SOIFDnVar[INNOIZ][i] = 0.0;
@ -334,8 +336,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->B3SOIFDnVar[OUTNOIZ][i]
+= tempOnoise;
here->B3SOIFDnVar[OUTNOIZ][B3SOIFDTOTNOIZ]
@ -358,7 +359,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < B3SOIFDNSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->B3SOIFDnVar[OUTNOIZ][i];

View File

@ -102,6 +102,8 @@ int
B3SOIPDnoise (int mode, int operation, GENmodel *inModel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
B3SOIPDmodel *model = (B3SOIPDmodel *)inModel;
B3SOIPDinstance *here;
struct b3soipdSizeDependParam *pParam;
@ -144,7 +146,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < B3SOIPDNSRCS; i++)
@ -320,7 +322,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < B3SOIPDNSRCS; i++)
{ here->B3SOIPDnVar[OUTNOIZ][i] = 0.0;
here->B3SOIPDnVar[INNOIZ][i] = 0.0;
@ -346,8 +348,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->B3SOIPDnVar[OUTNOIZ][i]
+= tempOnoise;
here->B3SOIPDnVar[OUTNOIZ][B3SOIPDTOTNOIZ]
@ -370,7 +371,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < B3SOIPDNSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->B3SOIPDnVar[OUTNOIZ][i];

View File

@ -72,6 +72,8 @@ int
BSIM3v0noise (int mode, int operation, GENmodel *inModel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
BSIM3v0model *model = (BSIM3v0model *)inModel;
BSIM3v0instance *here;
struct bsim3v0SizeDependParam *pParam;
@ -113,7 +115,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < BSIM3v0NSRCS; i++)
@ -267,7 +269,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < BSIM3v0NSRCS; i++)
{ here->BSIM3v0nVar[OUTNOIZ][i] = 0.0;
here->BSIM3v0nVar[INNOIZ][i] = 0.0;
@ -293,8 +295,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->BSIM3v0nVar[OUTNOIZ][i]
+= tempOnoise;
here->BSIM3v0nVar[OUTNOIZ][BSIM3v0TOTNOIZ]
@ -317,7 +318,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < BSIM3v0NSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->BSIM3v0nVar[OUTNOIZ][i];

View File

@ -95,6 +95,8 @@ int
BSIM3v1noise (int mode, int operation, GENmodel *inModel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
BSIM3v1model *model = (BSIM3v1model *)inModel;
BSIM3v1instance *here;
struct bsim3v1SizeDependParam *pParam;
@ -136,7 +138,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < BSIM3v1NSRCS; i++)
@ -305,7 +307,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < BSIM3v1NSRCS; i++)
{ here->BSIM3v1nVar[OUTNOIZ][i] = 0.0;
here->BSIM3v1nVar[INNOIZ][i] = 0.0;
@ -331,8 +333,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->BSIM3v1nVar[OUTNOIZ][i]
+= tempOnoise;
here->BSIM3v1nVar[OUTNOIZ][BSIM3v1TOTNOIZ]
@ -355,7 +356,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < BSIM3v1NSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->BSIM3v1nVar[OUTNOIZ][i];

View File

@ -178,6 +178,8 @@ int
BSIM3v32noise (int mode, int operation, GENmodel *inModel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
BSIM3v32model *model = (BSIM3v32model *)inModel;
BSIM3v32instance *here;
struct bsim3SizeDependParam *pParam;
@ -216,7 +218,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < BSIM3v32NSRCS; i++)
@ -418,7 +420,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < BSIM3v32NSRCS; i++)
{ here->BSIM3v32nVar[OUTNOIZ][i] = 0.0;
here->BSIM3v32nVar[INNOIZ][i] = 0.0;
@ -444,8 +446,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->BSIM3v32nVar[OUTNOIZ][i]
+= tempOnoise;
here->BSIM3v32nVar[OUTNOIZ][BSIM3v32TOTNOIZ]
@ -468,7 +469,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < BSIM3v32NSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->BSIM3v32nVar[OUTNOIZ][i];

View File

@ -87,6 +87,8 @@ CKTcircuit *ckt,
Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
BSIM4model *model = (BSIM4model *)inModel;
BSIM4instance *here;
struct bsim4SizeDependParam *pParam;
@ -142,7 +144,7 @@ double m;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < BSIM4NSRCS; i++)
@ -574,7 +576,7 @@ double m;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < BSIM4NSRCS; i++)
{ here->BSIM4nVar[OUTNOIZ][i] = 0.0;
here->BSIM4nVar[INNOIZ][i] = 0.0;
@ -600,8 +602,7 @@ double m;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->BSIM4nVar[OUTNOIZ][i]
+= tempOnoise;
here->BSIM4nVar[OUTNOIZ][BSIM4TOTNOIZ]
@ -624,7 +625,7 @@ double m;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < BSIM4NSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->BSIM4nVar[OUTNOIZ][i];

View File

@ -112,6 +112,8 @@ CKTcircuit *ckt,
Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
BSIM4v4model *model = (BSIM4v4model *)inModel;
BSIM4v4instance *here;
struct bsim4SizeDependParam *pParam;
@ -158,7 +160,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < BSIM4v4NSRCS; i++)
@ -476,7 +478,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < BSIM4v4NSRCS; i++)
{ here->BSIM4v4nVar[OUTNOIZ][i] = 0.0;
here->BSIM4v4nVar[INNOIZ][i] = 0.0;
@ -502,8 +504,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->BSIM4v4nVar[OUTNOIZ][i]
+= tempOnoise;
here->BSIM4v4nVar[OUTNOIZ][BSIM4v4TOTNOIZ]
@ -526,7 +527,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < BSIM4v4NSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->BSIM4v4nVar[OUTNOIZ][i];

View File

@ -82,6 +82,8 @@ CKTcircuit *ckt,
Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
BSIM4v5model *model = (BSIM4v5model *)inModel;
BSIM4v5instance *here;
struct bsim4v5SizeDependParam *pParam;
@ -127,7 +129,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < BSIM4v5NSRCS; i++)
@ -457,7 +459,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < BSIM4v5NSRCS; i++)
{ here->BSIM4v5nVar[OUTNOIZ][i] = 0.0;
here->BSIM4v5nVar[INNOIZ][i] = 0.0;
@ -483,8 +485,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->BSIM4v5nVar[OUTNOIZ][i]
+= tempOnoise;
here->BSIM4v5nVar[OUTNOIZ][BSIM4v5TOTNOIZ]
@ -507,7 +508,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < BSIM4v5NSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->BSIM4v5nVar[OUTNOIZ][i];

View File

@ -83,6 +83,8 @@ CKTcircuit *ckt,
Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
BSIM4v6model *model = (BSIM4v6model *)inModel;
BSIM4v6instance *here;
struct bsim4v6SizeDependParam *pParam;
@ -128,7 +130,7 @@ int i;
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ switch (mode)
{ case N_DENS:
for (i = 0; i < BSIM4v6NSRCS; i++)
@ -471,7 +473,7 @@ int i;
if it's the first pass
*/
if (data->freq ==
((NOISEAN*) ckt->CKTcurJob)->NstartFreq)
job->NstartFreq)
{ for (i = 0; i < BSIM4v6NSRCS; i++)
{ here->BSIM4v6nVar[OUTNOIZ][i] = 0.0;
here->BSIM4v6nVar[INNOIZ][i] = 0.0;
@ -497,8 +499,7 @@ int i;
lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)
ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ here->BSIM4v6nVar[OUTNOIZ][i]
+= tempOnoise;
here->BSIM4v6nVar[OUTNOIZ][BSIM4v6TOTNOIZ]
@ -521,7 +522,7 @@ int i;
break;
case INT_NOIZ:
/* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0)
if (job->NStpsSm != 0)
{ for (i = 0; i < BSIM4v6NSRCS; i++)
{ data->outpVector[data->outNumber++]
= here->BSIM4v6nVar[OUTNOIZ][i];

View File

@ -24,6 +24,8 @@ Author: 1987 Gary W. Ng
int
CSWnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
CSWmodel *firstModel = (CSWmodel *) genmodel;
CSWmodel *model;
CSWinstance *inst;
@ -46,7 +48,7 @@ CSWnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *d
/* see if we have to to produce a summary report */
/* if so, name the noise generator */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -107,7 +109,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variable if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
inst->CSWnVar[OUTNOIZ] = 0.0;
}
} else { /* data->delFreq != 0.0 (we have to integrate) */
@ -129,7 +131,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
data->outpVector[data->outNumber++] = inst->CSWnVar[OUTNOIZ];
data->outpVector[data->outNumber++] = inst->CSWnVar[INNOIZ];
} /* if */

View File

@ -26,6 +26,8 @@ int
DIOnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
DIOmodel *firstModel = (DIOmodel *) genmodel;
DIOmodel *model;
DIOinstance *inst;
@ -56,7 +58,7 @@ DIOnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -136,7 +138,7 @@ DIOnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < DIONSRCS; i++) {
inst->DIOnVar[OUTNOIZ][i] = 0.0;
inst->DIOnVar[INNOIZ][i] = 0.0;
@ -157,7 +159,7 @@ DIOnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
inst->DIOnVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->DIOnVar[OUTNOIZ][i] += tempOnoise;
inst->DIOnVar[OUTNOIZ][DIOTOTNOIZ] += tempOnoise;
inst->DIOnVar[INNOIZ][i] += tempInoise;
@ -174,7 +176,7 @@ DIOnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < DIONSRCS; i++) {
data->outpVector[data->outNumber++] = inst->DIOnVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->DIOnVar[INNOIZ][i];

View File

@ -39,6 +39,8 @@ int HSM2noise (
register Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
register HSM2model *model = (HSM2model *)inModel;
register HSM2instance *here;
char name[N_MXVLNTH];
@ -74,7 +76,7 @@ int HSM2noise (
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
for ( i = 0; i < HSM2NSRCS; i++ ) {
@ -245,7 +247,7 @@ int HSM2noise (
/* clear out our integration variables
if it's the first pass
*/
if (data->freq == ((NOISEAN*) ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i = 0; i < HSM2NSRCS; i++) {
here->HSM2nVar[OUTNOIZ][i] = 0.0;
here->HSM2nVar[INNOIZ][i] = 0.0;
@ -269,7 +271,7 @@ int HSM2noise (
here->HSM2nVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if ( ((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0 ) {
if ( job->NStpsSm != 0 ) {
here->HSM2nVar[OUTNOIZ][i] += tempOnoise;
here->HSM2nVar[OUTNOIZ][HSM2TOTNOIZ] += tempOnoise;
here->HSM2nVar[INNOIZ][i] += tempInoise;
@ -287,7 +289,7 @@ int HSM2noise (
break;
case INT_NOIZ:
/* already calculated, just output */
if ( ((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0 ) {
if ( job->NStpsSm != 0 ) {
for ( i = 0; i < HSM2NSRCS; i++ ) {
data->outpVector[data->outNumber++] = here->HSM2nVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = here->HSM2nVar[INNOIZ][i];

View File

@ -42,6 +42,8 @@ int HSMHVnoise (
register Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
register HSMHVmodel *model = (HSMHVmodel *)inModel;
register HSMHVinstance *here;
char name[N_MXVLNTH];
@ -74,7 +76,7 @@ int HSMHVnoise (
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
for ( i = 0; i < HSMHVNSRCS; i++ ) {
@ -202,7 +204,7 @@ int HSMHVnoise (
/* clear out our integration variables
if it's the first pass
*/
if (data->freq == ((NOISEAN*) ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i = 0; i < HSMHVNSRCS; i++) {
here->HSMHVnVar[OUTNOIZ][i] = 0.0;
here->HSMHVnVar[INNOIZ][i] = 0.0;
@ -226,7 +228,7 @@ int HSMHVnoise (
here->HSMHVnVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if ( ((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0 ) {
if ( job->NStpsSm != 0 ) {
here->HSMHVnVar[OUTNOIZ][i] += tempOnoise;
here->HSMHVnVar[OUTNOIZ][HSMHVTOTNOIZ] += tempOnoise;
here->HSMHVnVar[INNOIZ][i] += tempInoise;
@ -244,7 +246,7 @@ int HSMHVnoise (
break;
case INT_NOIZ:
/* already calculated, just output */
if ( ((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0 ) {
if ( job->NStpsSm != 0 ) {
for ( i = 0; i < HSMHVNSRCS; i++ ) {
data->outpVector[data->outNumber++] = here->HSMHVnVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = here->HSMHVnVar[INNOIZ][i];

View File

@ -24,6 +24,8 @@ int
JFETnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
JFETmodel *firstModel = (JFETmodel *) genmodel;
JFETmodel *model;
JFETinstance *inst;
@ -55,7 +57,7 @@ JFETnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -151,7 +153,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < JFETNSRCS; i++) {
inst->JFETnVar[OUTNOIZ][i] = 0.0;
inst->JFETnVar[INNOIZ][i] = 0.0;
@ -169,7 +171,7 @@ if (!data->namelist) return(E_NOMEM);
inst->JFETnVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->JFETnVar[OUTNOIZ][i] += tempOnoise;
inst->JFETnVar[OUTNOIZ][JFETTOTNOIZ] += tempOnoise;
inst->JFETnVar[INNOIZ][i] += tempInoise;
@ -186,7 +188,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
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];

View File

@ -27,6 +27,8 @@ Modified to jfet2 for PS model definition ( Anthony E. Parker )
int
JFET2noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
JFET2model *firstModel = (JFET2model *) genmodel;
JFET2model *model;
JFET2instance *inst;
@ -60,7 +62,7 @@ JFET2noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -156,7 +158,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < JFET2NSRCS; i++) {
inst->JFET2nVar[OUTNOIZ][i] = 0.0;
inst->JFET2nVar[INNOIZ][i] = 0.0;
@ -174,7 +176,7 @@ if (!data->namelist) return(E_NOMEM);
inst->JFET2nVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->JFET2nVar[OUTNOIZ][i] += tempOnoise;
inst->JFET2nVar[OUTNOIZ][JFET2TOTNOIZ] += tempOnoise;
inst->JFET2nVar[INNOIZ][i] += tempInoise;
@ -191,7 +193,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < JFET2NSRCS; i++) {
data->outpVector[data->outNumber++] = inst->JFET2nVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->JFET2nVar[INNOIZ][i];

View File

@ -24,6 +24,8 @@ int
MESnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *data,
double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
MESmodel *firstModel = (MESmodel *) genmodel;
MESmodel *model;
MESinstance *inst;
@ -55,7 +57,7 @@ MESnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *d
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -155,7 +157,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < MESNSRCS; i++) {
inst->MESnVar[OUTNOIZ][i] = 0.0;
inst->MESnVar[INNOIZ][i] = 0.0;
@ -173,7 +175,7 @@ if (!data->namelist) return(E_NOMEM);
inst->MESnVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->MESnVar[OUTNOIZ][i] += tempOnoise;
inst->MESnVar[OUTNOIZ][MESTOTNOIZ] += tempOnoise;
inst->MESnVar[INNOIZ][i] += tempInoise;
@ -190,7 +192,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < MESNSRCS; i++) {
data->outpVector[data->outNumber++] = inst->MESnVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->MESnVar[INNOIZ][i];

View File

@ -25,6 +25,8 @@ int
MOS1noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
MOS1model *firstModel = (MOS1model *) genmodel;
MOS1model *model;
MOS1instance *inst;
@ -67,7 +69,7 @@ MOS1noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -163,7 +165,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < MOS1NSRCS; i++) {
inst->MOS1nVar[OUTNOIZ][i] = 0.0;
inst->MOS1nVar[INNOIZ][i] = 0.0;
@ -181,7 +183,7 @@ if (!data->namelist) return(E_NOMEM);
inst->MOS1nVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->MOS1nVar[OUTNOIZ][i] += tempOnoise;
inst->MOS1nVar[OUTNOIZ][MOS1TOTNOIZ] += tempOnoise;
inst->MOS1nVar[INNOIZ][i] += tempInoise;
@ -198,7 +200,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < MOS1NSRCS; i++) {
data->outpVector[data->outNumber++] = inst->MOS1nVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->MOS1nVar[INNOIZ][i];

View File

@ -25,6 +25,8 @@ int
MOS2noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
MOS2model *firstModel = (MOS2model *) genmodel;
MOS2model *model;
MOS2instance *inst;
@ -56,7 +58,7 @@ MOS2noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -154,7 +156,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < MOS2NSRCS; i++) {
inst->MOS2nVar[OUTNOIZ][i] = 0.0;
inst->MOS2nVar[INNOIZ][i] = 0.0;
@ -172,7 +174,7 @@ if (!data->namelist) return(E_NOMEM);
inst->MOS2nVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->MOS2nVar[OUTNOIZ][i] += tempOnoise;
inst->MOS2nVar[OUTNOIZ][MOS2TOTNOIZ] += tempOnoise;
inst->MOS2nVar[INNOIZ][i] += tempInoise;
@ -189,7 +191,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < MOS2NSRCS; i++) {
data->outpVector[data->outNumber++] = inst->MOS2nVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->MOS2nVar[INNOIZ][i];

View File

@ -25,6 +25,8 @@ int
MOS3noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
MOS3model *firstModel = (MOS3model *) genmodel;
MOS3model *model;
MOS3instance *inst;
@ -56,7 +58,7 @@ MOS3noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -155,7 +157,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < MOS3NSRCS; i++) {
inst->MOS3nVar[OUTNOIZ][i] = 0.0;
inst->MOS3nVar[INNOIZ][i] = 0.0;
@ -173,7 +175,7 @@ if (!data->namelist) return(E_NOMEM);
inst->MOS3nVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->MOS3nVar[OUTNOIZ][i] += tempOnoise;
inst->MOS3nVar[OUTNOIZ][MOS3TOTNOIZ] += tempOnoise;
inst->MOS3nVar[INNOIZ][i] += tempInoise;
@ -190,7 +192,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < MOS3NSRCS; i++) {
data->outpVector[data->outNumber++] = inst->MOS3nVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->MOS3nVar[INNOIZ][i];

View File

@ -25,6 +25,8 @@ int
MOS9noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
MOS9model *firstModel = (MOS9model *) genmodel;
MOS9model *model;
MOS9instance *inst;
@ -56,7 +58,7 @@ MOS9noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -156,7 +158,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < MOS9NSRCS; i++) {
inst->MOS9nVar[OUTNOIZ][i] = 0.0;
inst->MOS9nVar[INNOIZ][i] = 0.0;
@ -174,7 +176,7 @@ if (!data->namelist) return(E_NOMEM);
inst->MOS9nVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->MOS9nVar[OUTNOIZ][i] += tempOnoise;
inst->MOS9nVar[OUTNOIZ][MOS9TOTNOIZ] += tempOnoise;
inst->MOS9nVar[INNOIZ][i] += tempInoise;
@ -191,7 +193,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < MOS9NSRCS; i++) {
data->outpVector[data->outNumber++] = inst->MOS9nVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->MOS9nVar[INNOIZ][i];

View File

@ -30,6 +30,8 @@ int
RESnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
RESmodel *firstModel = (RESmodel *) genmodel;
RESmodel *model;
RESinstance *inst;
@ -68,7 +70,7 @@ RESnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
* if so, name the noise generator
*/
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -154,7 +156,7 @@ RESnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* clear out our integration variable if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < RESNSRCS; i++) {
inst->RESnVar[OUTNOIZ][i] = 0.0; /* Clear output noise */
inst->RESnVar[INNOIZ][i] = 0.0; /* Clear input noise */
@ -177,7 +179,7 @@ RESnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
inst->RESnVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOutNoise;
data->inNoise += tempInNoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->RESnVar[OUTNOIZ][i] += tempOutNoise;
inst->RESnVar[OUTNOIZ][RESTOTNOIZ] += tempOutNoise;
inst->RESnVar[INNOIZ][i] += tempInNoise;
@ -195,7 +197,7 @@ RESnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < RESNSRCS; i++) {
data->outpVector[data->outNumber++] = inst->RESnVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->RESnVar[INNOIZ][i];

View File

@ -44,6 +44,8 @@ SOI3noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
SOI3model *firstModel = (SOI3model *) genmodel;
SOI3model *model;
SOI3instance *inst;
@ -81,7 +83,7 @@ SOI3noise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt,
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -223,7 +225,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < SOI3NSRCS; i++) {
inst->SOI3nVar[OUTNOIZ][i] = 0.0;
inst->SOI3nVar[INNOIZ][i] = 0.0;
@ -241,7 +243,7 @@ if (!data->namelist) return(E_NOMEM);
inst->SOI3nVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->SOI3nVar[OUTNOIZ][i] += tempOnoise;
inst->SOI3nVar[OUTNOIZ][SOI3TOTNOIZ] += tempOnoise;
inst->SOI3nVar[INNOIZ][i] += tempInoise;
@ -258,7 +260,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < SOI3NSRCS; i++) {
data->outpVector[data->outNumber++] = inst->SOI3nVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->SOI3nVar[INNOIZ][i];

View File

@ -24,6 +24,8 @@ Author: 1987 Gary W. Ng
int
SWnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
SWmodel *firstModel = (SWmodel *) genmodel;
SWmodel *model;
SWinstance *inst;
@ -46,7 +48,7 @@ SWnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *da
/* see if we have to to produce a summary report */
/* if so, name the noise generator */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -111,7 +113,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variable if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
inst->SWnVar[OUTNOIZ] = 0.0;
}
} else { /* data->delFreq != 0.0 (we have to integrate) */
@ -133,7 +135,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
data->outpVector[data->outNumber++] = inst->SWnVar[OUTNOIZ];
data->outpVector[data->outNumber++] = inst->SWnVar[INNOIZ];
} /* if */

View File

@ -26,6 +26,8 @@ Spice3 Implementation: 2003 Dietmar Warning DAnalyse GmbH
int
VBICnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *data, double *OnDens)
{
#define job ((NOISEAN*)ckt->CKTcurJob)
VBICmodel *firstModel = (VBICmodel *) genmodel;
VBICmodel *model;
VBICinstance *inst;
@ -70,7 +72,7 @@ VBICnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *
/* see if we have to to produce a summary report */
/* if so, name all the noise generators */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
switch (mode) {
case N_DENS:
@ -214,7 +216,7 @@ if (!data->namelist) return(E_NOMEM);
/* clear out our integration variables if it's the first pass */
if (data->freq == ((NOISEAN*)ckt->CKTcurJob)->NstartFreq) {
if (data->freq == job->NstartFreq) {
for (i=0; i < VBICNSRCS; i++) {
inst->VBICnVar[OUTNOIZ][i] = 0.0;
inst->VBICnVar[INNOIZ][i] = 0.0;
@ -235,7 +237,7 @@ if (!data->namelist) return(E_NOMEM);
inst->VBICnVar[LNLSTDENS][i] = lnNdens[i];
data->outNoiz += tempOnoise;
data->inNoise += tempInoise;
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
inst->VBICnVar[OUTNOIZ][i] += tempOnoise;
inst->VBICnVar[OUTNOIZ][VBICTOTNOIZ] += tempOnoise;
inst->VBICnVar[INNOIZ][i] += tempInoise;
@ -252,7 +254,7 @@ if (!data->namelist) return(E_NOMEM);
break;
case INT_NOIZ: /* already calculated, just output */
if (((NOISEAN*)ckt->CKTcurJob)->NStpsSm != 0) {
if (job->NStpsSm != 0) {
for (i=0; i < VBICNSRCS; i++) {
data->outpVector[data->outNumber++] = inst->VBICnVar[OUTNOIZ][i];
data->outpVector[data->outNumber++] = inst->VBICnVar[INNOIZ][i];