auxiliary define (ANALYSIS*) ckt->CKTcurJob --> `job'
This commit is contained in:
parent
56d000f77b
commit
f8f4e32875
|
|
@ -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 ,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
Loading…
Reference in New Issue