dctrcurv.c, #7/7, cleanup
This commit is contained in:
parent
1cdd68f787
commit
3715947529
|
|
@ -91,10 +91,8 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
RESinstance *here;
|
RESinstance *here;
|
||||||
RESmodel *model;
|
RESmodel *model;
|
||||||
|
|
||||||
for (model = (RESmodel *)ckt->CKThead[rcode]; model != NULL;
|
for (model = (RESmodel *)ckt->CKThead[rcode]; model; model = model->RESnextModel)
|
||||||
model = model->RESnextModel) {
|
for (here = model->RESinstances; here; here = here->RESnextInstance)
|
||||||
for (here = model->RESinstances; here != NULL;
|
|
||||||
here = here->RESnextInstance) {
|
|
||||||
if (here->RESname == job->TRCVvName[i]) {
|
if (here->RESname == job->TRCVvName[i]) {
|
||||||
job->TRCVvElt[i] = (GENinstance *)here;
|
job->TRCVvElt[i] = (GENinstance *)here;
|
||||||
job->TRCVvSave[i] = here->RESresist;
|
job->TRCVvSave[i] = here->RESresist;
|
||||||
|
|
@ -105,8 +103,6 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
CKTtemp(ckt);
|
CKTtemp(ckt);
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vcode >= 0) {
|
if (vcode >= 0) {
|
||||||
|
|
@ -114,10 +110,8 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
VSRCinstance *here;
|
VSRCinstance *here;
|
||||||
VSRCmodel *model;
|
VSRCmodel *model;
|
||||||
|
|
||||||
for (model = (VSRCmodel *)ckt->CKThead[vcode]; model != NULL;
|
for (model = (VSRCmodel *)ckt->CKThead[vcode]; model; model = model->VSRCnextModel)
|
||||||
model = model->VSRCnextModel) {
|
for (here = model->VSRCinstances; here; here = here->VSRCnextInstance)
|
||||||
for (here = model->VSRCinstances; here != NULL;
|
|
||||||
here = here->VSRCnextInstance) {
|
|
||||||
if (here->VSRCname == job->TRCVvName[i]) {
|
if (here->VSRCname == job->TRCVvName[i]) {
|
||||||
job->TRCVvElt[i] = (GENinstance *)here;
|
job->TRCVvElt[i] = (GENinstance *)here;
|
||||||
job->TRCVvSave[i] = here->VSRCdcValue;
|
job->TRCVvSave[i] = here->VSRCdcValue;
|
||||||
|
|
@ -127,8 +121,6 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
here->VSRCdcGiven = 1;
|
here->VSRCdcGiven = 1;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (icode >= 0) {
|
if (icode >= 0) {
|
||||||
|
|
@ -136,10 +128,8 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
ISRCinstance *here;
|
ISRCinstance *here;
|
||||||
ISRCmodel *model;
|
ISRCmodel *model;
|
||||||
|
|
||||||
for (model = (ISRCmodel *)ckt->CKThead[icode]; model != NULL;
|
for (model = (ISRCmodel *)ckt->CKThead[icode]; model; model = model->ISRCnextModel)
|
||||||
model = model->ISRCnextModel) {
|
for (here = model->ISRCinstances; here; here = here->ISRCnextInstance)
|
||||||
for (here = model->ISRCinstances; here != NULL;
|
|
||||||
here = here->ISRCnextInstance) {
|
|
||||||
if (here->ISRCname == job->TRCVvName[i]) {
|
if (here->ISRCname == job->TRCVvName[i]) {
|
||||||
job->TRCVvElt[i] = (GENinstance *)here;
|
job->TRCVvElt[i] = (GENinstance *)here;
|
||||||
job->TRCVvSave[i] = here->ISRCdcValue;
|
job->TRCVvSave[i] = here->ISRCdcValue;
|
||||||
|
|
@ -149,12 +139,9 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
here->ISRCdcGiven = 1;
|
here->ISRCdcGiven = 1;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(job->TRCVvName[i], "temp"))
|
if (!strcmp(job->TRCVvName[i], "temp")) {
|
||||||
{
|
|
||||||
job->TRCVvSave[i] = ckt->CKTtemp; /* Saves the old circuit temperature */
|
job->TRCVvSave[i] = ckt->CKTtemp; /* Saves the old circuit temperature */
|
||||||
job->TRCVvType[i] = TEMP_CODE; /* Set the sweep type code */
|
job->TRCVvType[i] = TEMP_CODE; /* Set the sweep type code */
|
||||||
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK; /* Set the new circuit temp */
|
ckt->CKTtemp = job->TRCVvStart[i] + CONSTCtoK; /* Set the new circuit temp */
|
||||||
|
|
@ -191,26 +178,21 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
error = CKTnames(ckt, &numNames, &nameList);
|
error = CKTnames(ckt, &numNames, &nameList);
|
||||||
if (error) return(error);
|
if (error)
|
||||||
|
return(error);
|
||||||
|
|
||||||
i = job->TRCVnestLevel;
|
i = job->TRCVnestLevel;
|
||||||
|
|
||||||
if (job->TRCVvType[i] == vcode)
|
if (job->TRCVvType[i] == vcode)
|
||||||
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "v-sweep", UID_OTHER, NULL);
|
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "v-sweep", UID_OTHER, NULL);
|
||||||
else {
|
else if (job->TRCVvType[i] == icode)
|
||||||
if (job->TRCVvType[i] == icode)
|
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "i-sweep", UID_OTHER, NULL);
|
||||||
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "i-sweep", UID_OTHER, NULL);
|
else if (job->TRCVvType[i] == TEMP_CODE)
|
||||||
else {
|
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "temp-sweep", UID_OTHER, NULL);
|
||||||
if (job->TRCVvType[i] == TEMP_CODE)
|
else if (job->TRCVvType[i] == rcode)
|
||||||
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "temp-sweep", UID_OTHER, NULL);
|
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "res-sweep", UID_OTHER, NULL);
|
||||||
else {
|
else
|
||||||
if (job->TRCVvType[i] == rcode)
|
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "?-sweep", UID_OTHER, NULL);
|
||||||
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "res-sweep", UID_OTHER, NULL);
|
|
||||||
else
|
|
||||||
SPfrontEnd->IFnewUid (ckt, &varUid, NULL, "?-sweep", UID_OTHER, NULL);
|
|
||||||
} /* icode */
|
|
||||||
} /* TEMP_CODE */
|
|
||||||
} /* rcode*/
|
|
||||||
|
|
||||||
error = SPfrontEnd->OUTpBeginPlot (ckt, ckt->CKTcurJob,
|
error = SPfrontEnd->OUTpBeginPlot (ckt, ckt->CKTcurJob,
|
||||||
ckt->CKTcurJob->JOBname,
|
ckt->CKTcurJob->JOBname,
|
||||||
|
|
@ -219,7 +201,8 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
&plot);
|
&plot);
|
||||||
tfree(nameList);
|
tfree(nameList);
|
||||||
|
|
||||||
if (error) return(error);
|
if (error)
|
||||||
|
return(error);
|
||||||
|
|
||||||
/* initialize CKTsoaCheck `warn' counters */
|
/* initialize CKTsoaCheck `warn' counters */
|
||||||
if (ckt->CKTsoaCheck)
|
if (ckt->CKTsoaCheck)
|
||||||
|
|
@ -241,9 +224,9 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
firstTime = 1;
|
firstTime = 1;
|
||||||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT;
|
||||||
MODEDCTRANCURVE | MODEINITJCT;
|
if (i > job->TRCVnestLevel)
|
||||||
if (i > job->TRCVnestLevel) break;
|
break;
|
||||||
goto nextstep;
|
goto nextstep;
|
||||||
}
|
}
|
||||||
} else if (job->TRCVvType[i] == icode) { /* current source */
|
} else if (job->TRCVvType[i] == icode) { /* current source */
|
||||||
|
|
@ -254,22 +237,22 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
firstTime = 1;
|
firstTime = 1;
|
||||||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT;
|
||||||
MODEDCTRANCURVE | MODEINITJCT;
|
if (i > job->TRCVnestLevel)
|
||||||
if (i > job->TRCVnestLevel) break;
|
break;
|
||||||
goto nextstep;
|
goto nextstep;
|
||||||
}
|
}
|
||||||
} else if (job->TRCVvType[i] == rcode) { /* resistance */
|
} else if (job->TRCVvType[i] == rcode) { /* resistance */
|
||||||
if ((((RESinstance*)(job->TRCVvElt[i]))->RESresist) *
|
if ((((RESinstance*)(job->TRCVvElt[i]))->RESresist) *
|
||||||
SIGN(1.0, job->TRCVvStep[i]) -
|
SIGN(1.0, job->TRCVvStep[i]) -
|
||||||
SIGN(1.0, job->TRCVvStep[i]) * job->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 > job->TRCVnestLevel)
|
||||||
if (i > job->TRCVnestLevel) break;
|
break;
|
||||||
goto nextstep;
|
goto nextstep;
|
||||||
}
|
}
|
||||||
} else if (job->TRCVvType[i] == TEMP_CODE) { /* temp sweep */
|
} else if (job->TRCVvType[i] == TEMP_CODE) { /* temp sweep */
|
||||||
|
|
@ -279,9 +262,9 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
firstTime = 1;
|
firstTime = 1;
|
||||||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) |
|
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT;
|
||||||
MODEDCTRANCURVE | MODEINITJCT;
|
if (i > job->TRCVnestLevel)
|
||||||
if (i > job->TRCVnestLevel) break;
|
break;
|
||||||
goto nextstep;
|
goto nextstep;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -325,9 +308,8 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
(ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT,
|
(ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITJCT,
|
||||||
(ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITFLOAT,
|
(ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITFLOAT,
|
||||||
ckt->CKTdcMaxIter);
|
ckt->CKTdcMaxIter);
|
||||||
if (converged != 0) {
|
if (converged != 0)
|
||||||
return(converged);
|
return(converged);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#ifdef XSPICE
|
#ifdef XSPICE
|
||||||
}
|
}
|
||||||
|
|
@ -384,17 +366,14 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITPRED;
|
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCTRANCURVE | MODEINITPRED;
|
||||||
if (job->TRCVvType[0] == vcode) {
|
if (job->TRCVvType[0] == vcode)
|
||||||
ckt->CKTtime = ((VSRCinstance *)(job->TRCVvElt[0]))->VSRCdcValue;
|
ckt->CKTtime = ((VSRCinstance *)(job->TRCVvElt[0]))->VSRCdcValue;
|
||||||
} else if (job->TRCVvType[0] == icode) {
|
else if (job->TRCVvType[0] == icode)
|
||||||
ckt->CKTtime = ((ISRCinstance *)(job->TRCVvElt[0]))->ISRCdcValue;
|
ckt->CKTtime = ((ISRCinstance *)(job->TRCVvElt[0]))->ISRCdcValue;
|
||||||
} else if (job->TRCVvType[0] == rcode) {
|
else if (job->TRCVvType[0] == rcode)
|
||||||
ckt->CKTtime = ((RESinstance *)(job->TRCVvElt[0]))->RESresist;
|
ckt->CKTtime = ((RESinstance *)(job->TRCVvElt[0]))->RESresist;
|
||||||
}
|
else if (job->TRCVvType[0] == TEMP_CODE)
|
||||||
else
|
|
||||||
{
|
|
||||||
ckt->CKTtime = ckt->CKTtemp - CONSTCtoK;
|
ckt->CKTtime = ckt->CKTtemp - CONSTCtoK;
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef XSPICE
|
#ifdef XSPICE
|
||||||
/* gtri - add - wbk - 12/19/90 - Add IPC stuff */
|
/* gtri - add - wbk - 12/19/90 - Add IPC stuff */
|
||||||
|
|
@ -491,9 +470,7 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
((RESinstance*)(job->TRCVvElt[i]))->RESconduct =
|
((RESinstance*)(job->TRCVvElt[i]))->RESconduct =
|
||||||
1 / (((RESinstance*)(job->TRCVvElt[i]))->RESresist);
|
1 / (((RESinstance*)(job->TRCVvElt[i]))->RESresist);
|
||||||
DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
||||||
}
|
} else if (job->TRCVvType[i] == TEMP_CODE) { /* temperature */
|
||||||
else if (job->TRCVvType[i] == TEMP_CODE)
|
|
||||||
{
|
|
||||||
ckt->CKTtemp += job->TRCVvStep[i];
|
ckt->CKTtemp += job->TRCVvStep[i];
|
||||||
if (expr_w_temper)
|
if (expr_w_temper)
|
||||||
inp_evaluate_temper();
|
inp_evaluate_temper();
|
||||||
|
|
@ -517,31 +494,26 @@ DCtrCurv(CKTcircuit *ckt, int restart)
|
||||||
|
|
||||||
/* all done, lets put everything back */
|
/* all done, lets put everything back */
|
||||||
|
|
||||||
for (i = 0; i <= job->TRCVnestLevel; i++) {
|
for (i = 0; i <= job->TRCVnestLevel; i++)
|
||||||
if (job->TRCVvType[i] == vcode) { /* voltage source */
|
if (job->TRCVvType[i] == vcode) { /* voltage source */
|
||||||
((VSRCinstance*)(job->TRCVvElt[i]))->VSRCdcValue =
|
((VSRCinstance*)(job->TRCVvElt[i]))->VSRCdcValue = job->TRCVvSave[i];
|
||||||
job->TRCVvSave[i];
|
|
||||||
((VSRCinstance*)(job->TRCVvElt[i]))->VSRCdcGiven = (job->TRCVgSave[i] != 0);
|
((VSRCinstance*)(job->TRCVvElt[i]))->VSRCdcGiven = (job->TRCVgSave[i] != 0);
|
||||||
} else if (job->TRCVvType[i] == icode) /*current source */ {
|
} else if (job->TRCVvType[i] == icode) { /*current source */
|
||||||
((ISRCinstance*)(job->TRCVvElt[i]))->ISRCdcValue =
|
((ISRCinstance*)(job->TRCVvElt[i]))->ISRCdcValue = job->TRCVvSave[i];
|
||||||
job->TRCVvSave[i];
|
|
||||||
((ISRCinstance*)(job->TRCVvElt[i]))->ISRCdcGiven = (job->TRCVgSave[i] != 0);
|
((ISRCinstance*)(job->TRCVvElt[i]))->ISRCdcGiven = (job->TRCVgSave[i] != 0);
|
||||||
} else if (job->TRCVvType[i] == rcode) /* Resistance */ {
|
} else if (job->TRCVvType[i] == rcode) { /* Resistance */
|
||||||
((RESinstance*)(job->TRCVvElt[i]))->RESresist =
|
((RESinstance*)(job->TRCVvElt[i]))->RESresist = job->TRCVvSave[i];
|
||||||
job->TRCVvSave[i];
|
|
||||||
/* RESload() needs conductance as well */
|
/* RESload() needs conductance as well */
|
||||||
((RESinstance*)(job->TRCVvElt[i]))->RESconduct =
|
((RESinstance*)(job->TRCVvElt[i]))->RESconduct =
|
||||||
1 / (((RESinstance*)(job->TRCVvElt[i]))->RESresist);
|
1 / (((RESinstance*)(job->TRCVvElt[i]))->RESresist);
|
||||||
((RESinstance*)(job->TRCVvElt[i]))->RESresGiven = (job->TRCVgSave[i] != 0);
|
((RESinstance*)(job->TRCVvElt[i]))->RESresGiven = (job->TRCVgSave[i] != 0);
|
||||||
DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
DEVices[rcode]->DEVload(job->TRCVvElt[i]->GENmodPtr, ckt);
|
||||||
}
|
} else if (job->TRCVvType[i] == TEMP_CODE) {
|
||||||
else if (job->TRCVvType[i] == TEMP_CODE) {
|
|
||||||
ckt->CKTtemp = job->TRCVvSave[i];
|
ckt->CKTtemp = job->TRCVvSave[i];
|
||||||
if (expr_w_temper)
|
if (expr_w_temper)
|
||||||
inp_evaluate_temper();
|
inp_evaluate_temper();
|
||||||
CKTtemp(ckt);
|
CKTtemp(ckt);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
SPfrontEnd->OUTendPlot (plot);
|
SPfrontEnd->OUTendPlot (plot);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue