variable rename `sen_info' `cv' `pzan' `sen_info' --> `job'
This commit is contained in:
parent
a463c761d8
commit
56d000f77b
|
|
@ -1,3 +1,10 @@
|
||||||
|
2011-12-11 Robert Larice
|
||||||
|
* src/spicelib/analysis/cktdisto.c ,
|
||||||
|
* src/spicelib/analysis/cktpzld.c ,
|
||||||
|
* src/spicelib/analysis/cktsens.c ,
|
||||||
|
* src/spicelib/analysis/dctrcurv.c :
|
||||||
|
variable rename `sen_info' `cv' `pzan' `sen_info' --> `job'
|
||||||
|
|
||||||
2011-12-11 Robert Larice
|
2011-12-11 Robert Larice
|
||||||
* src/spicelib/analysis/dcpss.c :
|
* src/spicelib/analysis/dcpss.c :
|
||||||
similiarity dctran.c versus dcpss.c
|
similiarity dctran.c versus dcpss.c
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ Author: 1988 Jaijeet S Roychowdhury
|
||||||
int
|
int
|
||||||
CKTdisto (CKTcircuit *ckt, int mode)
|
CKTdisto (CKTcircuit *ckt, int mode)
|
||||||
{
|
{
|
||||||
DISTOAN* cv = (DISTOAN*) (ckt->CKTcurJob);
|
DISTOAN* job = (DISTOAN*) (ckt->CKTcurJob);
|
||||||
int i;
|
int i;
|
||||||
int error=0;
|
int error=0;
|
||||||
int size;
|
int size;
|
||||||
|
|
@ -61,7 +61,7 @@ CKTdisto (CKTcircuit *ckt, int mode)
|
||||||
|
|
||||||
case D_RHSF1:
|
case D_RHSF1:
|
||||||
|
|
||||||
cv->Df2given = 0; /* will change if any F2 source is found */
|
job->Df2given = 0; /* will change if any F2 source is found */
|
||||||
|
|
||||||
case D_RHSF2:
|
case D_RHSF2:
|
||||||
|
|
||||||
|
|
@ -96,7 +96,7 @@ CKTdisto (CKTcircuit *ckt, int mode)
|
||||||
/* check if the source has a distortion input*/
|
/* check if the source has a distortion input*/
|
||||||
|
|
||||||
if (here->VSRCdGiven) {
|
if (here->VSRCdGiven) {
|
||||||
if (here->VSRCdF2given) cv->Df2given = 1;
|
if (here->VSRCdF2given) job->Df2given = 1;
|
||||||
if ((here->VSRCdF1given) && (mode == D_RHSF1)) {
|
if ((here->VSRCdF1given) && (mode == D_RHSF1)) {
|
||||||
|
|
||||||
mag = here->VSRCdF1mag;
|
mag = here->VSRCdF1mag;
|
||||||
|
|
@ -132,7 +132,7 @@ if (((here->VSRCdF1given) && (mode == D_RHSF1)) ||
|
||||||
/* check if the source has a distortion input*/
|
/* check if the source has a distortion input*/
|
||||||
|
|
||||||
if (here->ISRCdGiven) {
|
if (here->ISRCdGiven) {
|
||||||
if (here->ISRCdF2given) cv->Df2given = 1;
|
if (here->ISRCdF2given) job->Df2given = 1;
|
||||||
if ((here->ISRCdF1given) && (mode == D_RHSF1)) {
|
if ((here->ISRCdF1given) && (mode == D_RHSF1)) {
|
||||||
|
|
||||||
mag = here->ISRCdF1mag;
|
mag = here->ISRCdF1mag;
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ Copyright 1990 Regents of the University of California. All rights reserved.
|
||||||
int
|
int
|
||||||
CKTpzLoad(CKTcircuit *ckt, SPcomplex *s)
|
CKTpzLoad(CKTcircuit *ckt, SPcomplex *s)
|
||||||
{
|
{
|
||||||
PZAN *pzan = (PZAN *) (ckt->CKTcurJob);
|
PZAN *job = (PZAN *) (ckt->CKTcurJob);
|
||||||
int error;
|
int error;
|
||||||
int i;
|
int i;
|
||||||
#ifdef PARALLEL_ARCH
|
#ifdef PARALLEL_ARCH
|
||||||
|
|
@ -49,20 +49,20 @@ combine:
|
||||||
}
|
}
|
||||||
#endif /* PARALLEL_ARCH */
|
#endif /* PARALLEL_ARCH */
|
||||||
|
|
||||||
if (pzan->PZbalance_col && pzan->PZsolution_col) {
|
if (job->PZbalance_col && job->PZsolution_col) {
|
||||||
SMPcAddCol(ckt->CKTmatrix, pzan->PZbalance_col, pzan->PZsolution_col);
|
SMPcAddCol(ckt->CKTmatrix, job->PZbalance_col, job->PZsolution_col);
|
||||||
/* AC sources ?? XXX */
|
/* AC sources ?? XXX */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pzan->PZsolution_col) {
|
if (job->PZsolution_col) {
|
||||||
SMPcZeroCol(ckt->CKTmatrix, pzan->PZsolution_col);
|
SMPcZeroCol(ckt->CKTmatrix, job->PZsolution_col);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Driving function (current source) */
|
/* Driving function (current source) */
|
||||||
if (pzan->PZdrive_pptr)
|
if (job->PZdrive_pptr)
|
||||||
*pzan->PZdrive_pptr = 1.0;
|
*job->PZdrive_pptr = 1.0;
|
||||||
if (pzan->PZdrive_nptr)
|
if (job->PZdrive_nptr)
|
||||||
*pzan->PZdrive_nptr = -1.0;
|
*job->PZdrive_nptr = -1.0;
|
||||||
|
|
||||||
return(OK);
|
return(OK);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ static double inc_freq(double freq, int type, double step_size);
|
||||||
static int error;
|
static int error;
|
||||||
int sens_sens(CKTcircuit *ckt, int restart)
|
int sens_sens(CKTcircuit *ckt, int restart)
|
||||||
{
|
{
|
||||||
SENS_AN *sen_info = ((SENS_AN *) ckt->CKTcurJob);
|
SENS_AN *job = ((SENS_AN *) ckt->CKTcurJob);
|
||||||
static int size;
|
static int size;
|
||||||
static double *delta_I, *delta_iI,
|
static double *delta_I, *delta_iI,
|
||||||
*delta_I_delta_Y, *delta_iI_delta_Y;
|
*delta_I_delta_Y, *delta_iI_delta_Y;
|
||||||
|
|
@ -117,13 +117,13 @@ int sens_sens(CKTcircuit *ckt, int restart)
|
||||||
if (restart) {
|
if (restart) {
|
||||||
|
|
||||||
freq = 0.0;
|
freq = 0.0;
|
||||||
is_dc = (sen_info->step_type == SENS_DC);
|
is_dc = (job->step_type == SENS_DC);
|
||||||
nfreqs = count_steps(sen_info->step_type, sen_info->start_freq,
|
nfreqs = count_steps(job->step_type, job->start_freq,
|
||||||
sen_info->stop_freq, sen_info->n_freq_steps,
|
job->stop_freq, job->n_freq_steps,
|
||||||
&step_size);
|
&step_size);
|
||||||
|
|
||||||
if (!is_dc)
|
if (!is_dc)
|
||||||
freq = sen_info->start_freq;
|
freq = job->start_freq;
|
||||||
|
|
||||||
error = CKTop(ckt,
|
error = CKTop(ckt,
|
||||||
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT,
|
(ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITJCT,
|
||||||
|
|
@ -209,7 +209,7 @@ int sens_sens(CKTcircuit *ckt, int restart)
|
||||||
} else {
|
} else {
|
||||||
output_values = NULL;
|
output_values = NULL;
|
||||||
output_cvalues = NEWN(IFcomplex, num_vars);
|
output_cvalues = NEWN(IFcomplex, num_vars);
|
||||||
if (sen_info->step_type != SENS_LINEAR)
|
if (job->step_type != SENS_LINEAR)
|
||||||
SPfrontEnd->OUTattributes (sen_data,
|
SPfrontEnd->OUTattributes (sen_data,
|
||||||
NULL, OUT_SCALE_LOG, NULL);
|
NULL, OUT_SCALE_LOG, NULL);
|
||||||
|
|
||||||
|
|
@ -228,8 +228,8 @@ int sens_sens(CKTcircuit *ckt, int restart)
|
||||||
printf("start: %f, num: %d, dc: %d\n", freq, nfreqs, is_dc);
|
printf("start: %f, num: %d, dc: %d\n", freq, nfreqs, is_dc);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!sen_info->output_volt)
|
if (!job->output_volt)
|
||||||
branch_eq = CKTfndBranch(ckt, sen_info->output_src);
|
branch_eq = CKTfndBranch(ckt, job->output_src);
|
||||||
bypass = ckt->CKTbypass;
|
bypass = ckt->CKTbypass;
|
||||||
ckt->CKTbypass = 0;
|
ckt->CKTbypass = 0;
|
||||||
|
|
||||||
|
|
@ -327,7 +327,7 @@ int sens_sens(CKTcircuit *ckt, int restart)
|
||||||
ckt->CKTmatrix = delta_Y;
|
ckt->CKTmatrix = delta_Y;
|
||||||
|
|
||||||
/* calc. effect of each param */
|
/* calc. effect of each param */
|
||||||
for (sg = sgen_init(ckt, is_dc /* sen_info->plist */);
|
for (sg = sgen_init(ckt, is_dc /* job->plist */);
|
||||||
sg; sgen_next(&sg))
|
sg; sgen_next(&sg))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -539,25 +539,25 @@ int sens_sens(CKTcircuit *ckt, int restart)
|
||||||
/* delta_I is now equal to delta_E */
|
/* delta_I is now equal to delta_E */
|
||||||
|
|
||||||
if (is_dc) {
|
if (is_dc) {
|
||||||
if (sen_info->output_volt)
|
if (job->output_volt)
|
||||||
output_values[n] = delta_I
|
output_values[n] = delta_I
|
||||||
[sen_info->output_pos->number]
|
[job->output_pos->number]
|
||||||
- delta_I
|
- delta_I
|
||||||
[sen_info->output_neg->number];
|
[job->output_neg->number];
|
||||||
else {
|
else {
|
||||||
output_values[n] = delta_I[branch_eq];
|
output_values[n] = delta_I[branch_eq];
|
||||||
}
|
}
|
||||||
output_values[n] /= delta_var;
|
output_values[n] /= delta_var;
|
||||||
} else {
|
} else {
|
||||||
if (sen_info->output_volt) {
|
if (job->output_volt) {
|
||||||
output_cvalues[n].real = delta_I
|
output_cvalues[n].real = delta_I
|
||||||
[sen_info->output_pos->number]
|
[job->output_pos->number]
|
||||||
- delta_I
|
- delta_I
|
||||||
[sen_info->output_neg->number];
|
[job->output_neg->number];
|
||||||
output_cvalues[n].imag = delta_iI
|
output_cvalues[n].imag = delta_iI
|
||||||
[sen_info->output_pos->number]
|
[job->output_pos->number]
|
||||||
- delta_iI
|
- delta_iI
|
||||||
[sen_info->output_neg->number];
|
[job->output_neg->number];
|
||||||
} else {
|
} else {
|
||||||
output_cvalues[n].real =
|
output_cvalues[n].real =
|
||||||
delta_I[branch_eq];
|
delta_I[branch_eq];
|
||||||
|
|
@ -585,7 +585,7 @@ int sens_sens(CKTcircuit *ckt, int restart)
|
||||||
|
|
||||||
SPfrontEnd->OUTpData (sen_data, &value, &nvalue);
|
SPfrontEnd->OUTpData (sen_data, &value, &nvalue);
|
||||||
|
|
||||||
freq = inc_freq(freq, sen_info->step_type, step_size);
|
freq = inc_freq(freq, job->step_type, step_size);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
|
|
||||||
/* forced restart flag */
|
/* forced restart flag */
|
||||||
{
|
{
|
||||||
TRCV* cv = (TRCV*)ckt->CKTcurJob; /* Where we get the job to do */
|
TRCV* job = (TRCV*)ckt->CKTcurJob; /* Where we get the job to do */
|
||||||
int i;
|
int i;
|
||||||
double *temp;
|
double *temp;
|
||||||
int converged;
|
int converged;
|
||||||
|
|
@ -62,16 +62,16 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
rcode = CKTtypelook("Resistor");
|
rcode = CKTtypelook("Resistor");
|
||||||
vcode = CKTtypelook("Vsource");
|
vcode = CKTtypelook("Vsource");
|
||||||
icode = CKTtypelook("Isource");
|
icode = CKTtypelook("Isource");
|
||||||
if(!restart && cv->TRCVnestState >= 0) {
|
if (!restart && job->TRCVnestState >= 0) {
|
||||||
/* continuing */
|
/* continuing */
|
||||||
i = cv->TRCVnestState;
|
i = job->TRCVnestState;
|
||||||
/* resume to work? saj*/
|
/* resume to work? saj*/
|
||||||
error = SPfrontEnd->OUTpBeginPlot
|
error = SPfrontEnd->OUTpBeginPlot
|
||||||
(NULL, NULL, NULL, NULL, 0, 666, NULL, 666, &plot);
|
(NULL, NULL, NULL, NULL, 0, 666, NULL, 666, &plot);
|
||||||
goto resume;
|
goto resume;
|
||||||
}
|
}
|
||||||
ckt->CKTtime = 0;
|
ckt->CKTtime = 0;
|
||||||
ckt->CKTdelta = cv->TRCVvStep[0];
|
ckt->CKTdelta = job->TRCVvStep[0];
|
||||||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT ;
|
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT ;
|
||||||
ckt->CKTorder=1;
|
ckt->CKTorder=1;
|
||||||
|
|
||||||
|
|
@ -81,7 +81,7 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
ckt->CKTdeltaOld[i]=ckt->CKTdelta;
|
ckt->CKTdeltaOld[i]=ckt->CKTdelta;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i=0;i<=cv->TRCVnestLevel;i++) {
|
for (i = 0; i <= job->TRCVnestLevel; i++) {
|
||||||
if(rcode >= 0) {
|
if(rcode >= 0) {
|
||||||
/* resistances are in this version, so use them */
|
/* resistances are in this version, so use them */
|
||||||
RESinstance *here;
|
RESinstance *here;
|
||||||
|
|
@ -91,12 +91,12 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
model=model->RESnextModel){
|
model=model->RESnextModel){
|
||||||
for(here=model->RESinstances;here!=NULL;
|
for(here=model->RESinstances;here!=NULL;
|
||||||
here=here->RESnextInstance) {
|
here=here->RESnextInstance) {
|
||||||
if(here->RESname == cv->TRCVvName[i]) {
|
if (here->RESname == job->TRCVvName[i]) {
|
||||||
cv->TRCVvElt[i] = (GENinstance *)here;
|
job->TRCVvElt[i] = (GENinstance *)here;
|
||||||
cv->TRCVvSave[i] = here->RESresist;
|
job->TRCVvSave[i] = here->RESresist;
|
||||||
cv->TRCVgSave[i] = here->RESresGiven;
|
job->TRCVgSave[i] = here->RESresGiven;
|
||||||
cv->TRCVvType[i] = rcode;
|
job->TRCVvType[i] = rcode;
|
||||||
here->RESresist = cv->TRCVvStart[i];
|
here->RESresist = job->TRCVvStart[i];
|
||||||
here->RESresGiven = 1;
|
here->RESresGiven = 1;
|
||||||
CKTtemp(ckt);
|
CKTtemp(ckt);
|
||||||
goto found;
|
goto found;
|
||||||
|
|
@ -113,12 +113,12 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
model=model->VSRCnextModel){
|
model=model->VSRCnextModel){
|
||||||
for(here=model->VSRCinstances;here!=NULL;
|
for(here=model->VSRCinstances;here!=NULL;
|
||||||
here=here->VSRCnextInstance) {
|
here=here->VSRCnextInstance) {
|
||||||
if(here->VSRCname == cv->TRCVvName[i]) {
|
if (here->VSRCname == job->TRCVvName[i]) {
|
||||||
cv->TRCVvElt[i] = (GENinstance *)here;
|
job->TRCVvElt[i] = (GENinstance *)here;
|
||||||
cv->TRCVvSave[i] = here->VSRCdcValue;
|
job->TRCVvSave[i] = here->VSRCdcValue;
|
||||||
cv->TRCVgSave[i] = here->VSRCdcGiven;
|
job->TRCVgSave[i] = here->VSRCdcGiven;
|
||||||
cv->TRCVvType[i] = vcode;
|
job->TRCVvType[i] = vcode;
|
||||||
here->VSRCdcValue = cv->TRCVvStart[i];
|
here->VSRCdcValue = job->TRCVvStart[i];
|
||||||
here->VSRCdcGiven = 1;
|
here->VSRCdcGiven = 1;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
|
|
@ -134,12 +134,12 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
model=model->ISRCnextModel){
|
model=model->ISRCnextModel){
|
||||||
for(here=model->ISRCinstances;here!=NULL;
|
for(here=model->ISRCinstances;here!=NULL;
|
||||||
here=here->ISRCnextInstance) {
|
here=here->ISRCnextInstance) {
|
||||||
if(here->ISRCname == cv->TRCVvName[i]) {
|
if(here->ISRCname == job->TRCVvName[i]) {
|
||||||
cv->TRCVvElt[i] = (GENinstance *)here;
|
job->TRCVvElt[i] = (GENinstance *)here;
|
||||||
cv->TRCVvSave[i] = here->ISRCdcValue;
|
job->TRCVvSave[i] = here->ISRCdcValue;
|
||||||
cv->TRCVgSave[i] = here->ISRCdcGiven;
|
job->TRCVgSave[i] = here->ISRCdcGiven;
|
||||||
cv->TRCVvType[i] = icode;
|
job->TRCVvType[i] = icode;
|
||||||
here->ISRCdcValue = cv->TRCVvStart[i];
|
here->ISRCdcValue = job->TRCVvStart[i];
|
||||||
here->ISRCdcGiven = 1;
|
here->ISRCdcGiven = 1;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
|
|
@ -147,25 +147,25 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!strcmp(cv->TRCVvName[i], "temp"))
|
if (!strcmp(job->TRCVvName[i], "temp"))
|
||||||
{
|
{
|
||||||
cv->TRCVvSave[i]=ckt->CKTtemp; /* Saves the old circuit temperature */
|
job->TRCVvSave[i] = ckt->CKTtemp; /* Saves the old circuit temperature */
|
||||||
cv->TRCVvType[i]=TEMP_CODE; /* Set the sweep type code */
|
job->TRCVvType[i] = TEMP_CODE; /* Set the sweep type code */
|
||||||
ckt->CKTtemp = cv->TRCVvStart[i] + CONSTCtoK; /* Set the new circuit temp */
|
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK; /* Set the new circuit temp */
|
||||||
CKTtemp(ckt);
|
CKTtemp(ckt);
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
|
|
||||||
SPfrontEnd->IFerror (ERR_FATAL,
|
SPfrontEnd->IFerror (ERR_FATAL,
|
||||||
"DCtrCurv: source / resistor %s not in circuit", &(cv->TRCVvName[i]));
|
"DCtrCurv: source / resistor %s not in circuit", &(job->TRCVvName[i]));
|
||||||
return(E_NODEV);
|
return(E_NODEV);
|
||||||
|
|
||||||
found:;
|
found:;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAS_WINDOWS
|
#ifdef HAS_WINDOWS
|
||||||
actval = cv->TRCVvStart[cv->TRCVnestLevel];
|
actval = job->TRCVvStart[job->TRCVnestLevel];
|
||||||
actdiff = cv->TRCVvStart[cv->TRCVnestLevel] - cv->TRCVvStop[cv->TRCVnestLevel];
|
actdiff = job->TRCVvStart[job->TRCVnestLevel] - job->TRCVvStop[job->TRCVnestLevel];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XSPICE
|
#ifdef XSPICE
|
||||||
|
|
@ -188,22 +188,22 @@ found:;
|
||||||
if(error) return(error);
|
if(error) return(error);
|
||||||
|
|
||||||
|
|
||||||
if (cv->TRCVvType[i]==vcode)
|
if (job->TRCVvType[i] == vcode)
|
||||||
SPfrontEnd->IFnewUid (ckt, &varUid, NULL,
|
SPfrontEnd->IFnewUid (ckt, &varUid, NULL,
|
||||||
"v-sweep", UID_OTHER, NULL);
|
"v-sweep", UID_OTHER, NULL);
|
||||||
|
|
||||||
else {
|
else {
|
||||||
if (cv->TRCVvType[i]==icode)
|
if (job->TRCVvType[i] == icode)
|
||||||
SPfrontEnd->IFnewUid (ckt, &varUid, NULL,
|
SPfrontEnd->IFnewUid (ckt, &varUid, NULL,
|
||||||
"i-sweep", UID_OTHER, NULL);
|
"i-sweep", UID_OTHER, NULL);
|
||||||
|
|
||||||
else {
|
else {
|
||||||
if (cv->TRCVvType[i]==TEMP_CODE)
|
if (job->TRCVvType[i] == TEMP_CODE)
|
||||||
SPfrontEnd->IFnewUid (ckt, &varUid, NULL,
|
SPfrontEnd->IFnewUid (ckt, &varUid, NULL,
|
||||||
"temp-sweep", UID_OTHER, NULL);
|
"temp-sweep", UID_OTHER, NULL);
|
||||||
|
|
||||||
else {
|
else {
|
||||||
if (cv->TRCVvType[i]==rcode)
|
if (job->TRCVvType[i] == rcode)
|
||||||
SPfrontEnd->IFnewUid (ckt, &varUid, NULL,
|
SPfrontEnd->IFnewUid (ckt, &varUid, NULL,
|
||||||
"res-sweep", UID_OTHER, NULL);
|
"res-sweep", UID_OTHER, NULL);
|
||||||
|
|
||||||
|
|
@ -227,56 +227,56 @@ resume:
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
|
|
||||||
if(cv->TRCVvType[i]==vcode) { /* voltage source */
|
if (job->TRCVvType[i] == vcode) { /* voltage source */
|
||||||
if((((VSRCinstance*)(cv->TRCVvElt[i]))->VSRCdcValue)*
|
if((((VSRCinstance*)(job->TRCVvElt[i]))->VSRCdcValue) *
|
||||||
SIGN(1.,cv->TRCVvStep[i]) -
|
SIGN(1.0, job->TRCVvStep[i]) -
|
||||||
SIGN(1.,cv->TRCVvStep[i]) * cv->TRCVvStop[i] >
|
SIGN(1.0, job->TRCVvStep[i]) * job->TRCVvStop[i] >
|
||||||
DBL_EPSILON*1e+03)
|
DBL_EPSILON*1e+03)
|
||||||
{
|
{
|
||||||
i++ ;
|
i++ ;
|
||||||
firstTime=1;
|
firstTime=1;
|
||||||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
||||||
MODEDCTRANCURVE | MODEINITJCT ;
|
MODEDCTRANCURVE | MODEINITJCT ;
|
||||||
if (i > cv->TRCVnestLevel ) break ;
|
if (i > job->TRCVnestLevel) break;
|
||||||
goto nextstep;
|
goto nextstep;
|
||||||
}
|
}
|
||||||
} else if(cv->TRCVvType[i]==icode) { /* current source */
|
} else if (job->TRCVvType[i] == icode) { /* current source */
|
||||||
if((((ISRCinstance*)(cv->TRCVvElt[i]))->ISRCdcValue)*
|
if((((ISRCinstance*)(job->TRCVvElt[i]))->ISRCdcValue) *
|
||||||
SIGN(1.,cv->TRCVvStep[i]) -
|
SIGN(1.0, job->TRCVvStep[i]) -
|
||||||
SIGN(1.,cv->TRCVvStep[i]) * cv->TRCVvStop[i] >
|
SIGN(1.0, job->TRCVvStep[i]) * job->TRCVvStop[i] >
|
||||||
DBL_EPSILON*1e+03)
|
DBL_EPSILON*1e+03)
|
||||||
{
|
{
|
||||||
i++ ;
|
i++ ;
|
||||||
firstTime=1;
|
firstTime=1;
|
||||||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
||||||
MODEDCTRANCURVE | MODEINITJCT ;
|
MODEDCTRANCURVE | MODEINITJCT ;
|
||||||
if (i > cv->TRCVnestLevel ) break ;
|
if (i > job->TRCVnestLevel) break;
|
||||||
goto nextstep;
|
goto nextstep;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if(cv->TRCVvType[i]==rcode) { /* resistance */
|
} else if (job->TRCVvType[i] == rcode) { /* resistance */
|
||||||
if((((RESinstance*)(cv->TRCVvElt[i]))->RESresist)*
|
if((((RESinstance*)(job->TRCVvElt[i]))->RESresist) *
|
||||||
SIGN(1.,cv->TRCVvStep[i]) -
|
SIGN(1.0, job->TRCVvStep[i]) -
|
||||||
SIGN(1.,cv->TRCVvStep[i]) * cv->TRCVvStop[i]
|
SIGN(1.0, job->TRCVvStep[i]) * job->TRCVvStop[i]
|
||||||
> DBL_EPSILON*1e+03)
|
> DBL_EPSILON*1e+03)
|
||||||
{
|
{
|
||||||
i++ ;
|
i++ ;
|
||||||
firstTime=1;
|
firstTime=1;
|
||||||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
||||||
MODEDCTRANCURVE | MODEINITJCT ;
|
MODEDCTRANCURVE | MODEINITJCT ;
|
||||||
if (i > cv->TRCVnestLevel ) break ;
|
if (i > job->TRCVnestLevel) break;
|
||||||
goto nextstep;
|
goto nextstep;
|
||||||
}
|
}
|
||||||
} else if(cv->TRCVvType[i]==TEMP_CODE) { /* temp sweep */
|
} else if (job->TRCVvType[i] == TEMP_CODE) { /* temp sweep */
|
||||||
if(((ckt->CKTtemp) - CONSTCtoK) * SIGN(1.,cv->TRCVvStep[i]) -
|
if(((ckt->CKTtemp) - CONSTCtoK) * SIGN(1.0, job->TRCVvStep[i]) -
|
||||||
SIGN(1.,cv->TRCVvStep[i]) * cv->TRCVvStop[i] >
|
SIGN(1.0, job->TRCVvStep[i]) * job->TRCVvStop[i] >
|
||||||
DBL_EPSILON*1e+03)
|
DBL_EPSILON*1e+03)
|
||||||
{
|
{
|
||||||
i++ ;
|
i++ ;
|
||||||
firstTime=1;
|
firstTime=1;
|
||||||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
||||||
MODEDCTRANCURVE | MODEINITJCT ;
|
MODEDCTRANCURVE | MODEINITJCT ;
|
||||||
if (i > cv->TRCVnestLevel ) break ;
|
if (i > job->TRCVnestLevel) break;
|
||||||
goto nextstep;
|
goto nextstep;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -285,29 +285,29 @@ resume:
|
||||||
while (i > 0) {
|
while (i > 0) {
|
||||||
/* init(i); */
|
/* init(i); */
|
||||||
i--;
|
i--;
|
||||||
if(cv->TRCVvType[i]==vcode) { /* voltage source */
|
if (job->TRCVvType[i] == vcode) { /* voltage source */
|
||||||
((VSRCinstance *)(cv->TRCVvElt[i]))->VSRCdcValue =
|
((VSRCinstance *)(job->TRCVvElt[i]))->VSRCdcValue =
|
||||||
cv->TRCVvStart[i];
|
job->TRCVvStart[i];
|
||||||
|
|
||||||
} else if(cv->TRCVvType[i]==icode) { /* current source */
|
} else if (job->TRCVvType[i] == icode) { /* current source */
|
||||||
((ISRCinstance *)(cv->TRCVvElt[i]))->ISRCdcValue =
|
((ISRCinstance *)(job->TRCVvElt[i]))->ISRCdcValue =
|
||||||
cv->TRCVvStart[i];
|
job->TRCVvStart[i];
|
||||||
|
|
||||||
} else if(cv->TRCVvType[i]==TEMP_CODE) {
|
} else if (job->TRCVvType[i] == TEMP_CODE) {
|
||||||
ckt->CKTtemp = cv->TRCVvStart[i] + CONSTCtoK;
|
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK;
|
||||||
CKTtemp(ckt);
|
CKTtemp(ckt);
|
||||||
|
|
||||||
} else if(cv->TRCVvType[i]==rcode) {
|
} else if (job->TRCVvType[i] == rcode) {
|
||||||
((RESinstance *)(cv->TRCVvElt[i]))->RESresist =
|
((RESinstance *)(job->TRCVvElt[i]))->RESresist =
|
||||||
cv->TRCVvStart[i];
|
job->TRCVvStart[i];
|
||||||
((RESinstance *)(cv->TRCVvElt[i]))->RESconduct =
|
((RESinstance *)(job->TRCVvElt[i]))->RESconduct =
|
||||||
1/(((RESinstance *)(cv->TRCVvElt[i]))->RESresist);
|
1/(((RESinstance *)(job->TRCVvElt[i]))->RESresist);
|
||||||
/* Note: changing the resistance does nothing */
|
/* Note: changing the resistance does nothing */
|
||||||
/* changing the conductance 1/r instead */
|
/* changing the conductance 1/r instead */
|
||||||
DEVices[rcode]->DEVload(cv->TRCVvElt[i]->GENmodPtr, ckt);
|
DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* RESload(cv->TRCVvElt[i]->GENmodPtr, ckt);
|
* RESload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -343,16 +343,16 @@ resume:
|
||||||
/* else do new algorithm */
|
/* else do new algorithm */
|
||||||
|
|
||||||
/* first get the current step in the analysis */
|
/* first get the current step in the analysis */
|
||||||
if(cv->TRCVvType[0] == vcode) {
|
if (job->TRCVvType[0] == vcode) {
|
||||||
g_mif_info.circuit.evt_step = ((VSRCinstance *)(cv->TRCVvElt[i]))
|
g_mif_info.circuit.evt_step = ((VSRCinstance *)(job->TRCVvElt[i]))
|
||||||
->VSRCdcValue ;
|
->VSRCdcValue ;
|
||||||
} else if(cv->TRCVvType[0] == icode) {
|
} else if (job->TRCVvType[0] == icode) {
|
||||||
g_mif_info.circuit.evt_step = ((ISRCinstance *)(cv->TRCVvElt[i]))
|
g_mif_info.circuit.evt_step = ((ISRCinstance *)(job->TRCVvElt[i]))
|
||||||
->ISRCdcValue ;
|
->ISRCdcValue ;
|
||||||
} else if(cv->TRCVvType[0] == rcode) {
|
} else if (job->TRCVvType[0] == rcode) {
|
||||||
g_mif_info.circuit.evt_step = ((RESinstance*)(cv->TRCVvElt[i]->GENmodPtr))
|
g_mif_info.circuit.evt_step = ((RESinstance*)(job->TRCVvElt[i]->GENmodPtr))
|
||||||
->RESresist;
|
->RESresist;
|
||||||
} else if(cv->TRCVvType[0] == TEMP_CODE) {
|
} else if (job->TRCVvType[0] == TEMP_CODE) {
|
||||||
g_mif_info.circuit.evt_step = ckt->CKTtemp - CONSTCtoK;
|
g_mif_info.circuit.evt_step = ckt->CKTtemp - CONSTCtoK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -391,14 +391,14 @@ resume:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODEDCTRANCURVE | MODEINITPRED ;
|
ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODEDCTRANCURVE | MODEINITPRED ;
|
||||||
if(cv->TRCVvType[0] == vcode) {
|
if (job->TRCVvType[0] == vcode) {
|
||||||
ckt->CKTtime = ((VSRCinstance *)(cv->TRCVvElt[i]))
|
ckt->CKTtime = ((VSRCinstance *)(job->TRCVvElt[i]))
|
||||||
->VSRCdcValue ;
|
->VSRCdcValue ;
|
||||||
} else if(cv->TRCVvType[0] == icode) {
|
} else if (job->TRCVvType[0] == icode) {
|
||||||
ckt->CKTtime = ((ISRCinstance *)(cv->TRCVvElt[i]))
|
ckt->CKTtime = ((ISRCinstance *)(job->TRCVvElt[i]))
|
||||||
->ISRCdcValue ;
|
->ISRCdcValue ;
|
||||||
} else if(cv->TRCVvType[0] == rcode) {
|
} else if (job->TRCVvType[0] == rcode) {
|
||||||
ckt->CKTtime = ((RESinstance *)(cv->TRCVvElt[i]))
|
ckt->CKTtime = ((RESinstance *)(job->TRCVvElt[i]))
|
||||||
->RESresist;
|
->RESresist;
|
||||||
}
|
}
|
||||||
/* PN Temp sweep */
|
/* PN Temp sweep */
|
||||||
|
|
@ -430,19 +430,19 @@ resume:
|
||||||
int senmode;
|
int senmode;
|
||||||
|
|
||||||
#ifdef SENSDEBUG
|
#ifdef SENSDEBUG
|
||||||
if(cv->TRCVvType[i]==vcode) { /* voltage source */
|
if (job->TRCVvType[i] == vcode) { /* voltage source */
|
||||||
printf("Voltage Source Value : %.5e V\n",
|
printf("Voltage Source Value : %.5e V\n",
|
||||||
((VSRCinstance*) (cv->TRCVvElt[i]))->VSRCdcValue);
|
((VSRCinstance*) (job->TRCVvElt[i]))->VSRCdcValue);
|
||||||
}
|
}
|
||||||
if(cv->TRCVvType[i]==icode) { /* current source */
|
if (job->TRCVvType[i] == icode) { /* current source */
|
||||||
printf("Current Source Value : %.5e A\n",
|
printf("Current Source Value : %.5e A\n",
|
||||||
((ISRCinstance*)(cv->TRCVvElt[i]))->ISRCdcValue);
|
((ISRCinstance*)(job->TRCVvElt[i]))->ISRCdcValue);
|
||||||
}
|
}
|
||||||
if(cv->TRCVvType[i]==rcode) { /* resistance */
|
if (job->TRCVvType[i] == rcode) { /* resistance */
|
||||||
printf("Current Resistance Value : %.5e Ohm\n",
|
printf("Current Resistance Value : %.5e Ohm\n",
|
||||||
((RESinstance*)(cv->TRCVvElt[i]->GENmodPtr))->RESresist);
|
((RESinstance*)(job->TRCVvElt[i]->GENmodPtr))->RESresist);
|
||||||
}
|
}
|
||||||
if(cv->TRCVvType[i]==TEMP_CODE) { /* Temperature */
|
if (job->TRCVvType[i] == TEMP_CODE) { /* Temperature */
|
||||||
printf("Current Circuit Temperature : %.5e C\n",
|
printf("Current Circuit Temperature : %.5e C\n",
|
||||||
ckt-CKTtemp - CONSTCtoK);
|
ckt-CKTtemp - CONSTCtoK);
|
||||||
}
|
}
|
||||||
|
|
@ -483,38 +483,38 @@ resume:
|
||||||
|
|
||||||
nextstep:;
|
nextstep:;
|
||||||
|
|
||||||
if(cv->TRCVvType[i]==vcode) { /* voltage source */
|
if (job->TRCVvType[i] == vcode) { /* voltage source */
|
||||||
((VSRCinstance*)(cv->TRCVvElt[i]))->VSRCdcValue +=
|
((VSRCinstance*)(job->TRCVvElt[i]))->VSRCdcValue +=
|
||||||
cv->TRCVvStep[i];
|
job->TRCVvStep[i];
|
||||||
} else if(cv->TRCVvType[i]==icode) { /* current source */
|
} else if (job->TRCVvType[i] == icode) { /* current source */
|
||||||
((ISRCinstance*)(cv->TRCVvElt[i]))->ISRCdcValue +=
|
((ISRCinstance*)(job->TRCVvElt[i]))->ISRCdcValue +=
|
||||||
cv->TRCVvStep[i];
|
job->TRCVvStep[i];
|
||||||
} else if(cv->TRCVvType[i]==rcode) { /* resistance */
|
} else if (job->TRCVvType[i] == rcode) { /* resistance */
|
||||||
((RESinstance*)(cv->TRCVvElt[i]))->RESresist +=
|
((RESinstance*)(job->TRCVvElt[i]))->RESresist +=
|
||||||
cv->TRCVvStep[i];
|
job->TRCVvStep[i];
|
||||||
/* This code should update resistance and conductance */
|
/* This code should update resistance and conductance */
|
||||||
((RESinstance*)(cv->TRCVvElt[i]))->RESconduct =
|
((RESinstance*)(job->TRCVvElt[i]))->RESconduct =
|
||||||
1/(((RESinstance*)(cv->TRCVvElt[i]))->RESresist);
|
1/(((RESinstance*)(job->TRCVvElt[i]))->RESresist);
|
||||||
DEVices[rcode]->DEVload(cv->TRCVvElt[i]->GENmodPtr, ckt);
|
DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
||||||
/*
|
/*
|
||||||
* RESload(cv->TRCVvElt[i]->GENmodPtr, ckt);
|
* RESload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
/* PN Temp Sweep - serban */
|
/* PN Temp Sweep - serban */
|
||||||
else if (cv->TRCVvType[i]==TEMP_CODE)
|
else if (job->TRCVvType[i] == TEMP_CODE)
|
||||||
{
|
{
|
||||||
ckt->CKTtemp += cv->TRCVvStep[i];
|
ckt->CKTtemp += job->TRCVvStep[i];
|
||||||
CKTtemp(ckt);
|
CKTtemp(ckt);
|
||||||
} /* else not possible */
|
} /* else not possible */
|
||||||
|
|
||||||
if(SPfrontEnd->IFpauseTest()) {
|
if(SPfrontEnd->IFpauseTest()) {
|
||||||
/* user asked us to pause, so save state */
|
/* user asked us to pause, so save state */
|
||||||
cv->TRCVnestState = i;
|
job->TRCVnestState = i;
|
||||||
return(E_PAUSE);
|
return(E_PAUSE);
|
||||||
}
|
}
|
||||||
#ifdef HAS_WINDOWS
|
#ifdef HAS_WINDOWS
|
||||||
if (i == cv->TRCVnestLevel) {
|
if (i == job->TRCVnestLevel) {
|
||||||
actval += cv->TRCVvStep[cv->TRCVnestLevel];
|
actval += job->TRCVvStep[job->TRCVnestLevel];
|
||||||
SetAnalyse( "dc", abs((int)(actval * 1000. / actdiff)));
|
SetAnalyse( "dc", abs((int)(actval * 1000. / actdiff)));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -522,31 +522,31 @@ nextstep:;
|
||||||
|
|
||||||
/* all done, lets put everything back */
|
/* all done, lets put everything back */
|
||||||
|
|
||||||
for(i=0;i<=cv->TRCVnestLevel;i++) {
|
for (i = 0; i <= job->TRCVnestLevel; i++) {
|
||||||
if(cv->TRCVvType[i] == vcode) { /* voltage source */
|
if (job->TRCVvType[i] == vcode) { /* voltage source */
|
||||||
((VSRCinstance*)(cv->TRCVvElt[i]))->VSRCdcValue =
|
((VSRCinstance*)(job->TRCVvElt[i]))->VSRCdcValue =
|
||||||
cv->TRCVvSave[i];
|
job->TRCVvSave[i];
|
||||||
((VSRCinstance*)(cv->TRCVvElt[i]))->VSRCdcGiven = (cv->TRCVgSave[i] != 0);
|
((VSRCinstance*)(job->TRCVvElt[i]))->VSRCdcGiven = (job->TRCVgSave[i] != 0);
|
||||||
} else if(cv->TRCVvType[i] == icode) /*current source */ {
|
} else if (job->TRCVvType[i] == icode) /*current source */ {
|
||||||
((ISRCinstance*)(cv->TRCVvElt[i]))->ISRCdcValue =
|
((ISRCinstance*)(job->TRCVvElt[i]))->ISRCdcValue =
|
||||||
cv->TRCVvSave[i];
|
job->TRCVvSave[i];
|
||||||
((ISRCinstance*)(cv->TRCVvElt[i]))->ISRCdcGiven = (cv->TRCVgSave[i] != 0);
|
((ISRCinstance*)(job->TRCVvElt[i]))->ISRCdcGiven = (job->TRCVgSave[i] != 0);
|
||||||
} else if(cv->TRCVvType[i] == rcode) /* Resistance */ {
|
} else if (job->TRCVvType[i] == rcode) /* Resistance */ {
|
||||||
((RESinstance*)(cv->TRCVvElt[i]))->RESresist =
|
((RESinstance*)(job->TRCVvElt[i]))->RESresist =
|
||||||
cv->TRCVvSave[i];
|
job->TRCVvSave[i];
|
||||||
/* We restore both resistance and conductance */
|
/* We restore both resistance and conductance */
|
||||||
((RESinstance*)(cv->TRCVvElt[i]))->RESconduct =
|
((RESinstance*)(job->TRCVvElt[i]))->RESconduct =
|
||||||
1/(((RESinstance*)(cv->TRCVvElt[i]))->RESresist);
|
1/(((RESinstance*)(job->TRCVvElt[i]))->RESresist);
|
||||||
|
|
||||||
((RESinstance*)(cv->TRCVvElt[i]))->RESresGiven = (cv->TRCVgSave[i] != 0);
|
((RESinstance*)(job->TRCVvElt[i]))->RESresGiven = (job->TRCVgSave[i] != 0);
|
||||||
DEVices[rcode]->DEVload(cv->TRCVvElt[i]->GENmodPtr, ckt);
|
DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* RESload(cv->TRCVvElt[i]->GENmodPtr, ckt);
|
* RESload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
else if(cv->TRCVvType[i] == TEMP_CODE) {
|
else if (job->TRCVvType[i] == TEMP_CODE) {
|
||||||
ckt->CKTtemp = cv->TRCVvSave[i];
|
ckt->CKTtemp = job->TRCVvSave[i];
|
||||||
CKTtemp(ckt);
|
CKTtemp(ckt);
|
||||||
} /* else not possible */
|
} /* else not possible */
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue