rewrite, useing IFerrorf()

OUTerror() and IFerror() are no more used,
  but kept for compatibility
This commit is contained in:
rlar 2014-04-04 19:46:41 +02:00
parent f26c1b71f9
commit ea7372efe7
60 changed files with 479 additions and 674 deletions

View File

@ -38,35 +38,35 @@ BDRYcheck(BDRYcard *cardList, DOMNdomain *domnList)
sprintf( ebuf,
"boundary card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->BDRYxLowGiven = FALSE;
}
if (card->BDRYxHighGiven && card->BDRYixHighGiven) {
sprintf( ebuf,
"boundary card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->BDRYxHighGiven = FALSE;
}
if (card->BDRYyLowGiven && card->BDRYiyLowGiven) {
sprintf( ebuf,
"boundary card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->BDRYyLowGiven = FALSE;
}
if (card->BDRYyHighGiven && card->BDRYiyHighGiven) {
sprintf( ebuf,
"boundary card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->BDRYyHighGiven = FALSE;
}
if (!card->BDRYdomainGiven) {
sprintf( ebuf,
"boundary card %d is missing a domain index",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
} else {
/* Make sure the domain exists */
@ -79,7 +79,7 @@ BDRYcheck(BDRYcard *cardList, DOMNdomain *domnList)
sprintf( ebuf,
"boundary card %d specifies a non-existent domain",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
}
@ -97,7 +97,7 @@ BDRYcheck(BDRYcard *cardList, DOMNdomain *domnList)
sprintf( ebuf,
"interface card %d specifies a non-existent domain",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
}
@ -175,7 +175,7 @@ BDRYsetup(BDRYcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList,DOMNdom
sprintf( ebuf,
"boundary card %d has low x index (%d) > high x index (%d)",
cardNum, card->BDRYixHigh, card->BDRYixLow );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
if (card->BDRYiyLowGiven) {
@ -200,7 +200,7 @@ BDRYsetup(BDRYcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList,DOMNdom
sprintf( ebuf,
"boundary card %d has low y index (%d) > high y index (%d)",
cardNum, card->BDRYiyHigh, card->BDRYiyLow );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
}

View File

@ -38,7 +38,7 @@ CONTcheck(CONTcard *cardList)
sprintf( ebuf,
"contact card %d is missing an electrode index",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}

View File

@ -43,35 +43,35 @@ DOMNcheck(DOMNcard *cardList, MaterialInfo *matlList)
sprintf( ebuf,
"domain card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->DOMNxLowGiven = FALSE;
}
if (card->DOMNxHighGiven && card->DOMNixHighGiven) {
sprintf( ebuf,
"domain card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->DOMNxHighGiven = FALSE;
}
if (card->DOMNyLowGiven && card->DOMNiyLowGiven) {
sprintf( ebuf,
"domain card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->DOMNyLowGiven = FALSE;
}
if (card->DOMNyHighGiven && card->DOMNiyHighGiven) {
sprintf( ebuf,
"domain card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->DOMNyHighGiven = FALSE;
}
if (!card->DOMNmaterialGiven) {
sprintf( ebuf,
"domain card %d is missing a material index",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
} else {
/* Make sure the material exists */
@ -84,7 +84,7 @@ DOMNcheck(DOMNcard *cardList, MaterialInfo *matlList)
sprintf( ebuf,
"domain card %d specifies a non-existent material",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
}
@ -92,7 +92,7 @@ DOMNcheck(DOMNcard *cardList, MaterialInfo *matlList)
sprintf( ebuf,
"domain card %d is missing an ID number",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
@ -174,7 +174,7 @@ DOMNsetup(DOMNcard *cardList, DOMNdomain **domainList, MESHcoord *xMeshList,
sprintf( ebuf,
"domain card %d has low x index (%d) > high x index (%d)",
cardNum, newDomain->ixLo, newDomain->ixHi );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
if (card->DOMNiyLowGiven) {
@ -199,7 +199,7 @@ DOMNsetup(DOMNcard *cardList, DOMNdomain **domainList, MESHcoord *xMeshList,
sprintf( ebuf,
"domain card %d has low y index (%d) > high y index (%d)",
cardNum, newDomain->iyLo, newDomain->iyHi );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
}

View File

@ -44,7 +44,7 @@ DOPcheck(DOPcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList)
sprintf( ebuf,
"doping card %d does not specify profile type",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
} else switch (card->DOPprofileType) {
case DOP_UNIF:
@ -52,7 +52,7 @@ DOPcheck(DOPcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList)
sprintf( ebuf,
"doping card %d needs conc of uniform distribution",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
break;
@ -61,7 +61,7 @@ DOPcheck(DOPcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList)
sprintf( ebuf,
"doping card %d needs peak conc of linear distribution",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
break;
@ -70,7 +70,7 @@ DOPcheck(DOPcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList)
sprintf( ebuf,
"doping card %d needs peak conc of gaussian distribution",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
break;
@ -79,7 +79,7 @@ DOPcheck(DOPcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList)
sprintf( ebuf,
"doping card %d needs peak conc of error-function distribution",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
break;
@ -88,7 +88,7 @@ DOPcheck(DOPcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList)
sprintf( ebuf,
"doping card %d needs peak conc of exponential distribution",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
break;
@ -98,7 +98,7 @@ DOPcheck(DOPcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList)
sprintf( ebuf,
"doping card %d needs input-file name of suprem3 data",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
break;
@ -107,7 +107,7 @@ DOPcheck(DOPcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList)
sprintf( ebuf,
"doping card %d needs input-file name of ascii data",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
break;
@ -115,7 +115,7 @@ DOPcheck(DOPcard *cardList, MESHcoord *xMeshList, MESHcoord *yMeshList)
sprintf( ebuf,
"doping card %d has unrecognized profile type",
cardNum );
SPfrontEnd->IFerror( ERR_FATAL, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, ebuf );
error = E_NOTFOUND;
break;
}

View File

@ -40,28 +40,28 @@ ELCTcheck(ELCTcard *cardList)
sprintf( ebuf,
"electrode card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->ELCTxLowGiven = FALSE;
}
if (card->ELCTxHighGiven && card->ELCTixHighGiven) {
sprintf( ebuf,
"electrode card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->ELCTxHighGiven = FALSE;
}
if (card->ELCTyLowGiven && card->ELCTiyLowGiven) {
sprintf( ebuf,
"electrode card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->ELCTyLowGiven = FALSE;
}
if (card->ELCTyHighGiven && card->ELCTiyHighGiven) {
sprintf( ebuf,
"electrode card %d uses both location and index - location ignored",
cardNum );
SPfrontEnd->IFerror( ERR_INFO, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, ebuf );
card->ELCTyHighGiven = FALSE;
}
if (!card->ELCTnumberGiven) {
@ -144,7 +144,7 @@ ELCTsetup(ELCTcard *cardList, ELCTelectrode **electrodeList,
sprintf( ebuf,
"electrode card %d has low x index (%d) > high x index (%d)",
cardNum, newElectrode->ixLo, newElectrode->ixHi );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
if (card->ELCTiyLowGiven) {
@ -169,7 +169,7 @@ ELCTsetup(ELCTcard *cardList, ELCTelectrode **electrodeList,
sprintf( ebuf,
"electrode card %d has low y index (%d) > high y index (%d)",
cardNum, newElectrode->iyLo, newElectrode->iyHi );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
}

View File

@ -43,7 +43,7 @@ int
sprintf( ebuf,
"material card %d is missing an id number",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
@ -58,7 +58,7 @@ int
sprintf( ebuf,
"material cards %d and %d use same id %d",
cardNum2, cardNum, card->MATLnumber );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
}

View File

@ -195,7 +195,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card list is empty",
dim );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
locEnd = locStart;
return( E_PRIVATE );
}
@ -208,7 +208,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d uses both number and ratio - number ignored",
dim, cardNum );
SPfrontEnd->IFerror( ERR_INFO, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, errBuf );
card->MESHnumberGiven = FALSE;
}
@ -218,7 +218,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d has no distances",
dim, cardNum );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
locEnd = locStart;
error = E_PRIVATE;
}
@ -226,7 +226,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d uses both location and width - location ignored",
dim, cardNum );
SPfrontEnd->IFerror( ERR_INFO, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, errBuf );
card->MESHlocationGiven = FALSE;
locEnd = locStart + card->MESHwidth;
@ -244,7 +244,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d uses negative width",
dim, cardNum );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
error = E_PRIVATE;
}
@ -254,7 +254,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d has negligible width - ignored",
dim, cardNum );
SPfrontEnd->IFerror( ERR_INFO, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, errBuf );
locStart = locEnd;
}
}
@ -270,7 +270,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d has ratio out of range - reset to 1.0",
dim, cardNum );
SPfrontEnd->IFerror( ERR_INFO, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_INFO, errBuf );
ratio = 1.0;
}
@ -281,7 +281,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d wants to use a non-positive spacing",
dim, cardNum );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
error = E_PRIVATE;
}
@ -292,7 +292,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d needs to use one of h.start or h.end with h.max",
dim, cardNum );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
error = E_PRIVATE;
}
else if (card->MESHhMaxGiven && card->MESHhStartGiven) {
@ -300,7 +300,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d wants h.start > h.max",
dim, cardNum );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
error = E_PRIVATE;
}
else {
@ -312,7 +312,7 @@ MESHcheck(char dim, MESHcard *cardList)
sprintf( errBuf,
"%c.mesh card %d wants h.end > h.max",
dim, cardNum );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
error = E_PRIVATE;
}
else {
@ -463,7 +463,7 @@ MESHsetup(char dim, MESHcard *cardList, MESHcoord **coordList, int *numCoords)
sprintf( errBuf,
"%c.mesh card %d has out-of-order node numbers ( %d > %d )",
dim, cardNum, numStart, numEnd );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
error = E_PRIVATE;
}
}
@ -495,7 +495,7 @@ MESHsetup(char dim, MESHcard *cardList, MESHcoord **coordList, int *numCoords)
sprintf( errBuf,
"%c.mesh card %d can't be spaced automatically",
dim, cardNum );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
return( error );
}
else {
@ -507,7 +507,7 @@ MESHsetup(char dim, MESHcard *cardList, MESHcoord **coordList, int *numCoords)
sprintf( errBuf,
"%c.mesh card %d results in out-of-order node numbers ( %d > %d )",
dim, cardNum, numStart, numEnd );
SPfrontEnd->IFerror( ERR_FATAL, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_FATAL, errBuf );
error = E_PRIVATE;
}
else {
@ -722,7 +722,7 @@ oneSideSpacing(double width, double spacing, double rWanted, double *rFound,
if ( width < spacing ) {
sprintf( errBuf,
"one-sided spacing can't find an acceptable solution\n");
SPfrontEnd->IFerror( ERR_WARNING, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, errBuf );
*rFound = 0.0;
*nFound = 0;
return(E_PRIVATE);
@ -749,7 +749,7 @@ oneSideSpacing(double width, double spacing, double rWanted, double *rFound,
if ( (rTemp1 == 0.0) && (rTemp2 == 0.0) ) {
sprintf( errBuf,
"one-sided spacing can't find an acceptable solution\n");
SPfrontEnd->IFerror( ERR_WARNING, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, errBuf );
*rFound = 0.0;
*nFound = 0;
return(E_PRIVATE);
@ -927,7 +927,7 @@ twoSideSpacing(double width, double hStart, double hEnd, double rWanted,
if (remaining < 0.0) {
sprintf( errBuf,
"two-sided spacing can't find an acceptable solution\n");
SPfrontEnd->IFerror( ERR_WARNING, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, errBuf );
*rSfound = *rEfound = 0.0;
*nSfound = *nEfound = 0;
return(E_PRIVATE);
@ -1067,7 +1067,7 @@ twoSideSpacing(double width, double hStart, double hEnd, double rWanted,
if (rSaveS == 0.0) {
sprintf( errBuf,
"two-sided spacing can't find an acceptable solution\n");
SPfrontEnd->IFerror( ERR_WARNING, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, errBuf );
*rSfound = *rEfound = 0.0;
*nSfound = *nEfound = 0;
return(E_PRIVATE);
@ -1290,7 +1290,7 @@ maxLimSpacing(double width, double hStart, double hMax, double rWanted,
if (rSaveS == 0.0) {
sprintf( errBuf,
"max-limited spacing can't find an acceptable solution\n");
SPfrontEnd->IFerror( ERR_WARNING, errBuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, errBuf );
*rFound = 0.0;
*nSfound = *nMfound = 0;
return(E_PRIVATE);

View File

@ -40,7 +40,7 @@ MOBcheck(MOBcard *cardList, MaterialInfo *matlList)
sprintf( ebuf,
"mobility card %d is missing a material index",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
} else {
/* Make sure the material exists */
@ -53,7 +53,7 @@ MOBcheck(MOBcard *cardList, MaterialInfo *matlList)
sprintf( ebuf,
"mobility card %d specifies a non-existent material",
cardNum );
SPfrontEnd->IFerror( ERR_WARNING, ebuf, NULL );
SPfrontEnd->IFerrorf( ERR_WARNING, ebuf );
error = E_PRIVATE;
}
}

View File

@ -52,7 +52,7 @@ void *hrealloc(void *ptr, size_t num);
#define XALLOC(ptr, type, number) \
do { \
if ((number) && (ptr = (type *)calloc((size_t)(number), sizeof(type))) == NULL) { \
SPfrontEnd->IFerror(E_PANIC, "Out of Memory", NULL); \
SPfrontEnd->IFerrorf(E_PANIC, "Out of Memory"); \
exit(1); \
} \
} while(0)

View File

@ -125,7 +125,7 @@ NIiter(CKTcircuit *ckt, int maxIter)
(void)sprintf(message,
"singular matrix: check nodes %s and %s\n",
NODENAME(ckt,i),NODENAME(ckt,j));
SPfrontEnd->IFerror (ERR_WARNING, message, NULL);
SPfrontEnd->IFerrorf (ERR_WARNING, message);
FREE(message);
ckt->CKTstat->STATnumIter += iterno;
#ifdef STEPDEBUG

View File

@ -135,8 +135,8 @@ dynamic_gmin (CKTcircuit * ckt, long int firstmode,
CKTnode *n;
ckt->CKTmode = firstmode;
SPfrontEnd->IFerror (ERR_INFO,
"Starting dynamic gmin stepping", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"Starting dynamic gmin stepping");
NumNodes = 0;
for (n = ckt->CKTnodes; n; n = n->next)
@ -168,8 +168,8 @@ dynamic_gmin (CKTcircuit * ckt, long int firstmode,
if (converged == 0) {
ckt->CKTmode = continuemode;
SPfrontEnd->IFerror (ERR_INFO,
"One successful gmin step", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"One successful gmin step");
if (ckt->CKTdiagGmin <= gtarget) {
success = 1;
@ -205,13 +205,11 @@ dynamic_gmin (CKTcircuit * ckt, long int firstmode,
} else {
if (factor < 1.00005) {
failed = 1;
SPfrontEnd->IFerror (ERR_WARNING,
"Last gmin step failed",
NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"Last gmin step failed");
} else {
SPfrontEnd->IFerror (ERR_WARNING,
"Further gmin increment",
NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"Further gmin increment");
factor = sqrt (sqrt (factor));
ckt->CKTdiagGmin = OldGmin / factor;
@ -244,13 +242,11 @@ dynamic_gmin (CKTcircuit * ckt, long int firstmode,
converged = NIiter (ckt, iterlim);
if (converged != 0) {
SPfrontEnd->IFerror (ERR_WARNING,
"Dynamic gmin stepping failed",
NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"Dynamic gmin stepping failed");
} else {
SPfrontEnd->IFerror (ERR_INFO,
"Dynamic gmin stepping completed",
NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"Dynamic gmin stepping completed");
#ifdef XSPICE
/* gtri - begin - wbk - add convergence problem reporting flags */
ckt->enh->conv_debug.last_NIiter_call = MIF_FALSE;
@ -282,8 +278,8 @@ spice3_gmin (CKTcircuit * ckt, long int firstmode,
int converged, i;
ckt->CKTmode = firstmode;
SPfrontEnd->IFerror (ERR_INFO,
"Starting gmin stepping", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"Starting gmin stepping");
if (ckt->CKTgshunt == 0)
ckt->CKTdiagGmin = ckt->CKTgmin;
@ -301,16 +297,16 @@ spice3_gmin (CKTcircuit * ckt, long int firstmode,
if (converged != 0) {
ckt->CKTdiagGmin = ckt->CKTgshunt;
SPfrontEnd->IFerror (ERR_WARNING,
"gmin step failed", NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"gmin step failed");
break;
}
ckt->CKTdiagGmin /= ckt->CKTgminFactor;
ckt->CKTmode = continuemode;
SPfrontEnd->IFerror (ERR_INFO,
"One successful gmin step", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"One successful gmin step");
}
ckt->CKTdiagGmin = ckt->CKTgshunt;
@ -327,8 +323,8 @@ spice3_gmin (CKTcircuit * ckt, long int firstmode,
converged = NIiter (ckt, iterlim);
if (converged == 0) {
SPfrontEnd->IFerror (ERR_INFO,
"gmin stepping completed", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"gmin stepping completed");
#ifdef XSPICE
/* gtri - begin - wbk - add convergence problem reporting flags */
@ -337,8 +333,8 @@ spice3_gmin (CKTcircuit * ckt, long int firstmode,
#endif
} else {
SPfrontEnd->IFerror (ERR_WARNING,
"gmin stepping failed", NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"gmin stepping failed");
}
return (converged);
@ -368,8 +364,8 @@ gillespie_src (CKTcircuit * ckt, long int firstmode,
NG_IGNORE(iterlim);
ckt->CKTmode = firstmode;
SPfrontEnd->IFerror (ERR_INFO,
"Starting source stepping", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"Starting source stepping");
ckt->CKTsrcFact = 0;
raise = 0.001;
@ -422,8 +418,8 @@ gillespie_src (CKTcircuit * ckt, long int firstmode,
if (converged != 0) {
ckt->CKTdiagGmin = ckt->CKTgshunt;
SPfrontEnd->IFerror (ERR_WARNING,
"gmin step failed", NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"gmin step failed");
#ifdef XSPICE
/* gtri - begin - wbk - add convergence problem reporting flags */
ckt->enh->conv_debug.last_NIiter_call = MIF_FALSE;
@ -434,9 +430,8 @@ gillespie_src (CKTcircuit * ckt, long int firstmode,
ckt->CKTdiagGmin /= 10;
ckt->CKTmode = continuemode;
SPfrontEnd->IFerror (ERR_INFO,
"One successful gmin step",
NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"One successful gmin step");
}
ckt->CKTdiagGmin = ckt->CKTgshunt;
}
@ -454,8 +449,8 @@ gillespie_src (CKTcircuit * ckt, long int firstmode,
OldCKTstate0[i] = ckt->CKTstate0[i];
SPfrontEnd->IFerror (ERR_INFO,
"One successful source step", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"One successful source step");
ckt->CKTsrcFact = ConvFact + raise;
}
@ -490,9 +485,8 @@ gillespie_src (CKTcircuit * ckt, long int firstmode,
for (i = 0; i < ckt->CKTnumStates; i++)
OldCKTstate0[i] = ckt->CKTstate0[i];
SPfrontEnd->IFerror (ERR_INFO,
"One successful source step",
NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"One successful source step");
ckt->CKTsrcFact = ConvFact + raise;
@ -541,12 +535,12 @@ gillespie_src (CKTcircuit * ckt, long int firstmode,
if (ConvFact != 1) {
ckt->CKTsrcFact = 1;
ckt->CKTcurrentAnalysis = DOING_TRAN;
SPfrontEnd->IFerror (ERR_WARNING,
"source stepping failed", NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"source stepping failed");
return (E_ITERLIM);
} else {
SPfrontEnd->IFerror (ERR_INFO,
"Source stepping completed", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"Source stepping completed");
return (0);
}
}
@ -572,8 +566,8 @@ spice3_src (CKTcircuit * ckt, long int firstmode,
NG_IGNORE(iterlim);
ckt->CKTmode = firstmode;
SPfrontEnd->IFerror (ERR_INFO,
"Starting source stepping", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"Starting source stepping");
for (i = 0; i <= ckt->CKTnumSrcSteps; i++) {
ckt->CKTsrcFact = ((double) i) / ((double) ckt->CKTnumSrcSteps);
@ -587,8 +581,8 @@ spice3_src (CKTcircuit * ckt, long int firstmode,
if (converged != 0) {
ckt->CKTsrcFact = 1;
ckt->CKTcurrentAnalysis = DOING_TRAN;
SPfrontEnd->IFerror (ERR_WARNING,
"source stepping failed", NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"source stepping failed");
#ifdef XSPICE
/* gtri - begin - wbk - add convergence problem reporting flags */
ckt->enh->conv_debug.last_NIiter_call = MIF_FALSE;
@ -596,11 +590,11 @@ spice3_src (CKTcircuit * ckt, long int firstmode,
#endif
return (converged);
}
SPfrontEnd->IFerror (ERR_INFO,
"One successful source step", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"One successful source step");
}
SPfrontEnd->IFerror (ERR_INFO,
"Source stepping completed", NULL);
SPfrontEnd->IFerrorf (ERR_INFO,
"Source stepping completed");
ckt->CKTsrcFact = 1;
#ifdef XSPICE
/* gtri - begin - wbk - add convergence problem reporting flags */

View File

@ -187,7 +187,7 @@ CKTpzFindZeros(CKTcircuit *ckt, PZtrial **rootinfo, int *rootcount)
sprintf(ebuf,
"Pole-Zero analysis interrupted; %d trials, %d roots\n",
Seq_Num, NZeros);
SPfrontEnd->IFerror (ERR_WARNING, ebuf, 0);
SPfrontEnd->IFerrorf (ERR_WARNING, ebuf);
error = E_PAUSE;
break;
}
@ -221,14 +221,14 @@ CKTpzFindZeros(CKTcircuit *ckt, PZtrial **rootinfo, int *rootcount)
sprintf(ebuf,
"Pole-zero converging to numerical aberrations; giving up after %d trials",
Seq_Num);
SPfrontEnd->IFerror (ERR_WARNING, ebuf, 0);
SPfrontEnd->IFerrorf (ERR_WARNING, ebuf);
}
if (NIter >= NITER_LIM) {
sprintf(ebuf,
"Pole-zero iteration limit reached; giving up after %d trials",
Seq_Num);
SPfrontEnd->IFerror (ERR_WARNING, ebuf, 0);
SPfrontEnd->IFerrorf (ERR_WARNING, ebuf);
}
return error;

View File

@ -28,8 +28,7 @@ CKTsetBreak(CKTcircuit *ckt, double time)
#endif
if(ckt->CKTtime > time) {
SPfrontEnd->IFerror (ERR_PANIC, "breakpoint in the past - HELP!",
NULL);
SPfrontEnd->IFerrorf (ERR_PANIC, "breakpoint in the past - HELP!");
return(E_INTERN);
}
for(i=0;i<ckt->CKTbreakSize;i++) {

View File

@ -164,8 +164,8 @@ DCtrCurv(CKTcircuit *ckt, int restart)
goto found;
}
SPfrontEnd->IFerror (ERR_FATAL,
"DCtrCurv: source / resistor %s not in circuit", &(job->TRCVvName[i]));
SPfrontEnd->IFerrorf (ERR_FATAL,
"DCtrCurv: source / resistor %s not in circuit", job->TRCVvName[i]);
return(E_NODEV);
found:;

View File

@ -47,9 +47,9 @@ NOISEan (CKTcircuit *ckt, int restart)
bool ac_given = FALSE;
if (!inst || inst->GENmodPtr->GENmodType < 0) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"Noise input source %s not in circuit",
&job->input);
job->input);
return E_NOTFOUND;
}
@ -58,16 +58,16 @@ NOISEan (CKTcircuit *ckt, int restart)
} else if(inst->GENmodPtr->GENmodType == CKTtypelook("Isource")) {
ac_given = ((ISRCinstance *)inst) -> ISRCacGiven;
} else {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"Noise input source %s is not of proper type",
&job->input);
job->input);
return E_NOTFOUND;
}
if (!ac_given) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"Noise input source %s has no AC value",
&job->input);
job->input);
return E_NOACINPUT;
}
}

View File

@ -49,9 +49,9 @@ TFanal(CKTcircuit *ckt, int restart)
ptr = CKTfndDev(ckt, job->TFinSrc);
if (!ptr || ptr->GENmodPtr->GENmodType < 0) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"Transfer function source %s not in circuit",
&job->TFinSrc);
job->TFinSrc);
job->TFinIsV = 0;
job->TFinIsI = 0;
return E_NOTFOUND;
@ -64,9 +64,9 @@ TFanal(CKTcircuit *ckt, int restart)
job->TFinIsV = 0;
job->TFinIsI = 1;
} else {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"Transfer function source %s not of proper type",
&job->TFinSrc);
job->TFinSrc);
return E_NOTFOUND;
}

View File

@ -71,8 +71,8 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, (second)->number)) == NULL)
if( here->ASRCtype == ASRC_VOLTAGE) {
if(here->ASRCposNode == here->ASRCnegNode) {
SPfrontEnd->IFerror (ERR_FATAL,
"instance %s is a shorted ASRC", &here->ASRCname);
SPfrontEnd->IFerrorf (ERR_FATAL,
"instance %s is a shorted ASRC", here->ASRCname);
return(E_UNSUPP);
}
@ -89,11 +89,8 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, (second)->number)) == NULL)
here->ASRCcont_br = CKTfndBranch(ckt,
here->ASRCtree->vars[i].uValue);
if(here->ASRCcont_br == 0) {
IFuid namarray[2];
namarray[0] = here->ASRCname;
namarray[1] = here->ASRCtree->vars[i].uValue;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: unknown controlling source %s",namarray);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: unknown controlling source %s", here->ASRCname, here->ASRCtree->vars[i].uValue);
return(E_BADPARM);
}
if( here->ASRCtype == ASRC_VOLTAGE){

View File

@ -82,9 +82,9 @@ BJTtemp(GENmodel *inModel, CKTcircuit *ckt)
if(model->BJTdepletionCapCoeffGiven) {
if(model->BJTdepletionCapCoeff>.9999) {
model->BJTdepletionCapCoeff=.9999;
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"BJT model %s, parameter fc limited to 0.9999",
&(model->BJTmodName));
model->BJTmodName);
}
} else {
model->BJTdepletionCapCoeff=.5;

View File

@ -49,21 +49,15 @@ B1temp(GENmodel *inModel, CKTcircuit *ckt)
here=here->B1nextInstance) {
if( (EffChanLength = here->B1l - model->B1deltaL *1e-6 )<=0) {
IFuid namarray[2];
namarray[0] = model->B1modName;
namarray[1] = here->B1name;
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"B1: mosfet %s, model %s: Effective channel length <=0",
namarray);
model->B1modName, here->B1name);
return(E_BADPARM);
}
if( (EffChanWidth = here->B1w - model->B1deltaW *1e-6 ) <= 0 ) {
IFuid namarray[2];
namarray[0] = model->B1modName;
namarray[1] = here->B1name;
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"B1: mosfet %s, model %s: Effective channel width <=0",
namarray);
model->B1modName, here->B1name);
return(E_BADPARM);
}
here->B1GDoverlapCap=EffChanWidth *model->B1gateDrainOverlapCap;

View File

@ -80,22 +80,18 @@ B2temp(GENmodel *inModel, CKTcircuit *ckt)
EffectiveWidth = here->B2w - model->B2deltaW * 1.0e-6;
if(EffectiveLength<=0)
{ IFuid namarray[2];
namarray[0] = model->B2modName;
namarray[1] = here->B2name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B2: mosfet %s, model %s: Effective channel length <=0",
namarray);
model->B2modName, here->B2name);
return(E_BADPARM);
}
if(EffectiveWidth <= 0)
{ IFuid namarray[2];
namarray[0] = model->B2modName;
namarray[1] = here->B2name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B2: mosfet %s, model %s: Effective channel width <=0",
namarray);
model->B2modName, here->B2name);
return(E_BADPARM);
}

View File

@ -195,45 +195,37 @@ int Size_Not_Found, error;
pParam->BSIM3leff = here->BSIM3l + model->BSIM3xl - 2.0 * pParam->BSIM3dl;
if (pParam->BSIM3leff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3modName;
namarray[1] = here->BSIM3name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->BSIM3modName, here->BSIM3name);
return(E_BADPARM);
}
pParam->BSIM3weff = here->BSIM3w + model->BSIM3xw - 2.0 * pParam->BSIM3dw;
if (pParam->BSIM3weff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3modName;
namarray[1] = here->BSIM3name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->BSIM3modName, here->BSIM3name);
return(E_BADPARM);
}
pParam->BSIM3leffCV = here->BSIM3l + model->BSIM3xl - 2.0 * pParam->BSIM3dlc;
if (pParam->BSIM3leffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3modName;
namarray[1] = here->BSIM3name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->BSIM3modName, here->BSIM3name);
return(E_BADPARM);
}
pParam->BSIM3weffCV = here->BSIM3w + model->BSIM3xw - 2.0 * pParam->BSIM3dwc;
if (pParam->BSIM3weffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3modName;
namarray[1] = here->BSIM3name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->BSIM3modName, here->BSIM3name);
return(E_BADPARM);
}
@ -607,10 +599,8 @@ int Size_Not_Found, error;
/ pow(pParam->BSIM3weff * 1E6, pParam->BSIM3wr);
if (BSIM3checkModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->BSIM3modName;
namarray[1] = here->BSIM3name;
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during BSIM3V3.3 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during BSIM3V3.3 parameter checking for %s in model %s", model->BSIM3modName, here->BSIM3name);
return(E_BADPARM);
}

View File

@ -125,45 +125,37 @@ int Size_Not_Found;
pParam->B3SOIDDleff = here->B3SOIDDl - 2.0 * pParam->B3SOIDDdl;
if (pParam->B3SOIDDleff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIDDmodName;
namarray[1] = here->B3SOIDDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIDD: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->B3SOIDDmodName, here->B3SOIDDname);
return(E_BADPARM);
}
pParam->B3SOIDDweff = here->B3SOIDDw - 2.0 * pParam->B3SOIDDdw;
if (pParam->B3SOIDDweff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIDDmodName;
namarray[1] = here->B3SOIDDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIDD: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->B3SOIDDmodName, here->B3SOIDDname);
return(E_BADPARM);
}
pParam->B3SOIDDleffCV = here->B3SOIDDl - 2.0 * pParam->B3SOIDDdlc;
if (pParam->B3SOIDDleffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIDDmodName;
namarray[1] = here->B3SOIDDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIDD: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->B3SOIDDmodName, here->B3SOIDDname);
return(E_BADPARM);
}
pParam->B3SOIDDweffCV = here->B3SOIDDw - 2.0 * pParam->B3SOIDDdwc;
if (pParam->B3SOIDDweffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIDDmodName;
namarray[1] = here->B3SOIDDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIDD: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->B3SOIDDmodName, here->B3SOIDDname);
return(E_BADPARM);
}
@ -553,10 +545,8 @@ int Size_Not_Found;
/ pow(pParam->B3SOIDDweff * 1E6, pParam->B3SOIDDwr);
if (B3SOIDDcheckModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->B3SOIDDmodName;
namarray[1] = here->B3SOIDDname;
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during B3SOIDDV3 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during B3SOIDDV3 parameter checking for %s in model %s", model->B3SOIDDmodName, here->B3SOIDDname);
return(E_BADPARM);
}

View File

@ -124,45 +124,37 @@ int Size_Not_Found;
pParam->B3SOIFDleff = here->B3SOIFDl - 2.0 * pParam->B3SOIFDdl;
if (pParam->B3SOIFDleff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIFDmodName;
namarray[1] = here->B3SOIFDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIFD: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->B3SOIFDmodName, here->B3SOIFDname);
return(E_BADPARM);
}
pParam->B3SOIFDweff = here->B3SOIFDw - 2.0 * pParam->B3SOIFDdw;
if (pParam->B3SOIFDweff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIFDmodName;
namarray[1] = here->B3SOIFDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIFD: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->B3SOIFDmodName, here->B3SOIFDname);
return(E_BADPARM);
}
pParam->B3SOIFDleffCV = here->B3SOIFDl - 2.0 * pParam->B3SOIFDdlc;
if (pParam->B3SOIFDleffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIFDmodName;
namarray[1] = here->B3SOIFDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIFD: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->B3SOIFDmodName, here->B3SOIFDname);
return(E_BADPARM);
}
pParam->B3SOIFDweffCV = here->B3SOIFDw - 2.0 * pParam->B3SOIFDdwc;
if (pParam->B3SOIFDweffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIFDmodName;
namarray[1] = here->B3SOIFDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIFD: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->B3SOIFDmodName, here->B3SOIFDname);
return(E_BADPARM);
}
@ -552,10 +544,8 @@ int Size_Not_Found;
/ pow(pParam->B3SOIFDweff * 1E6, pParam->B3SOIFDwr);
if (B3SOIFDcheckModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->B3SOIFDmodName;
namarray[1] = here->B3SOIFDname;
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during B3SOIFDV3 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during B3SOIFDV3 parameter checking for %s in model %s", model->B3SOIFDmodName, here->B3SOIFDname);
return(E_BADPARM);
}

View File

@ -154,24 +154,20 @@ double tmp3, T7;
pParam->B3SOIPDleff = here->B3SOIPDl - 2.0 * pParam->B3SOIPDdl;
if (pParam->B3SOIPDleff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIPDmodName;
namarray[1] = here->B3SOIPDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIPD: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->B3SOIPDmodName, here->B3SOIPDname);
return(E_BADPARM);
}
pParam->B3SOIPDweff = here->B3SOIPDw - here->B3SOIPDnbc * model->B3SOIPDdwbc
- (2.0 - here->B3SOIPDnbc) * pParam->B3SOIPDdw;
if (pParam->B3SOIPDweff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIPDmodName;
namarray[1] = here->B3SOIPDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIPD: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->B3SOIPDmodName, here->B3SOIPDname);
return(E_BADPARM);
}
@ -180,24 +176,20 @@ double tmp3, T7;
pParam->B3SOIPDleffCV = here->B3SOIPDl - 2.0 * pParam->B3SOIPDdlc;
if (pParam->B3SOIPDleffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIPDmodName;
namarray[1] = here->B3SOIPDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIPD: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->B3SOIPDmodName, here->B3SOIPDname);
return(E_BADPARM);
}
pParam->B3SOIPDweffCV = here->B3SOIPDw - here->B3SOIPDnbc * model->B3SOIPDdwbc
- (2.0 - here->B3SOIPDnbc) * pParam->B3SOIPDdwc;
if (pParam->B3SOIPDweffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B3SOIPDmodName;
namarray[1] = here->B3SOIPDname;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIPD: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->B3SOIPDmodName, here->B3SOIPDname);
return(E_BADPARM);
}
@ -207,24 +199,18 @@ double tmp3, T7;
pParam->B3SOIPDleffCVb = here->B3SOIPDl - 2.0 * pParam->B3SOIPDdlc - model->B3SOIPDdlcb;
if (pParam->B3SOIPDleffCVb <= 0.0)
{
IFuid namarray[2];
namarray[0] = model->B3SOIPDmodName;
namarray[1] = here->B3SOIPDname;
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIPD: mosfet %s, model %s: Effective channel length for C-V (body) <= 0",
namarray);
model->B3SOIPDmodName, here->B3SOIPDname);
return(E_BADPARM);
}
pParam->B3SOIPDleffCVbg = pParam->B3SOIPDleffCVb + 2 * model->B3SOIPDdlbg;
if (pParam->B3SOIPDleffCVbg <= 0.0)
{
IFuid namarray[2];
namarray[0] = model->B3SOIPDmodName;
namarray[1] = here->B3SOIPDname;
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"B3SOIPD: mosfet %s, model %s: Effective channel length for C-V (backgate) <= 0",
namarray);
model->B3SOIPDmodName, here->B3SOIPDname);
return(E_BADPARM);
}
@ -666,10 +652,8 @@ double tmp3, T7;
/ pow(pParam->B3SOIPDweff * 1E6, pParam->B3SOIPDwr);
if (B3SOIPDcheckModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->B3SOIPDmodName;
namarray[1] = here->B3SOIPDname;
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during B3SOIPDV3 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during B3SOIPDV3 parameter checking for %s in model %s", model->B3SOIPDmodName, here->B3SOIPDname);
return(E_BADPARM);
}

View File

@ -94,45 +94,37 @@ int Size_Not_Found;
pParam->BSIM3v0leff = here->BSIM3v0l - 2.0 * pParam->BSIM3v0dl;
if (pParam->BSIM3v0leff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v0modName;
namarray[1] = here->BSIM3v0name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v0: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->BSIM3v0modName, here->BSIM3v0name);
return(E_BADPARM);
}
pParam->BSIM3v0weff = here->BSIM3v0w - 2.0 * pParam->BSIM3v0dw;
if (pParam->BSIM3v0weff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v0modName;
namarray[1] = here->BSIM3v0name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v0: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->BSIM3v0modName, here->BSIM3v0name);
return(E_BADPARM);
}
pParam->BSIM3v0leffCV = here->BSIM3v0l - 2.0 * pParam->BSIM3v0dlc;
if (pParam->BSIM3v0leffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v0modName;
namarray[1] = here->BSIM3v0name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v0: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->BSIM3v0modName, here->BSIM3v0name);
return(E_BADPARM);
}
pParam->BSIM3v0weffCV = here->BSIM3v0w - 2.0 * pParam->BSIM3v0dwc;
if (pParam->BSIM3v0weffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v0modName;
namarray[1] = here->BSIM3v0name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v0: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->BSIM3v0modName, here->BSIM3v0name);
return(E_BADPARM);
}

View File

@ -136,45 +136,37 @@ int Size_Not_Found;
pParam->BSIM3v1leff = here->BSIM3v1l - 2.0 * pParam->BSIM3v1dl;
if (pParam->BSIM3v1leff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v1modName;
namarray[1] = here->BSIM3v1name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v1: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->BSIM3v1modName, here->BSIM3v1name);
return(E_BADPARM);
}
pParam->BSIM3v1weff = here->BSIM3v1w - 2.0 * pParam->BSIM3v1dw;
if (pParam->BSIM3v1weff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v1modName;
namarray[1] = here->BSIM3v1name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v1: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->BSIM3v1modName, here->BSIM3v1name);
return(E_BADPARM);
}
pParam->BSIM3v1leffCV = here->BSIM3v1l - 2.0 * pParam->BSIM3v1dlc;
if (pParam->BSIM3v1leffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v1modName;
namarray[1] = here->BSIM3v1name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v1: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->BSIM3v1modName, here->BSIM3v1name);
return(E_BADPARM);
}
pParam->BSIM3v1weffCV = here->BSIM3v1w - 2.0 * pParam->BSIM3v1dwc;
if (pParam->BSIM3v1weffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v1modName;
namarray[1] = here->BSIM3v1name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v1: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->BSIM3v1modName, here->BSIM3v1name);
return(E_BADPARM);
}
@ -523,10 +515,8 @@ int Size_Not_Found;
/ pow(pParam->BSIM3v1weff * 1E6, pParam->BSIM3v1wr);
if (BSIM3v1checkModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->BSIM3v1modName;
namarray[1] = here->BSIM3v1name;
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during BSIM3V3.1 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during BSIM3V3.1 parameter checking for %s in model %s", model->BSIM3v1modName, here->BSIM3v1name);
return(E_BADPARM);
}

View File

@ -264,45 +264,37 @@ int Size_Not_Found, error;
pParam->BSIM3v32leff = here->BSIM3v32l + model->BSIM3v32xl - 2.0 * pParam->BSIM3v32dl;
if (pParam->BSIM3v32leff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v32modName;
namarray[1] = here->BSIM3v32name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v32: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->BSIM3v32modName, here->BSIM3v32name);
return(E_BADPARM);
}
pParam->BSIM3v32weff = here->BSIM3v32w + model->BSIM3v32xw - 2.0 * pParam->BSIM3v32dw;
if (pParam->BSIM3v32weff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v32modName;
namarray[1] = here->BSIM3v32name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v32: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->BSIM3v32modName, here->BSIM3v32name);
return(E_BADPARM);
}
pParam->BSIM3v32leffCV = here->BSIM3v32l + model->BSIM3v32xl - 2.0 * pParam->BSIM3v32dlc;
if (pParam->BSIM3v32leffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v32modName;
namarray[1] = here->BSIM3v32name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v32: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->BSIM3v32modName, here->BSIM3v32name);
return(E_BADPARM);
}
pParam->BSIM3v32weffCV = here->BSIM3v32w + model->BSIM3v32xw - 2.0 * pParam->BSIM3v32dwc;
if (pParam->BSIM3v32weffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM3v32modName;
namarray[1] = here->BSIM3v32name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM3v32: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->BSIM3v32modName, here->BSIM3v32name);
return(E_BADPARM);
}
@ -676,10 +668,8 @@ int Size_Not_Found, error;
/ pow(pParam->BSIM3v32weff * 1E6, pParam->BSIM3v32wr);
if (BSIM3v32checkModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->BSIM3v32modName;
namarray[1] = here->BSIM3v32name;
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during BSIM3v32V3.2 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during BSIM3v32V3.2 parameter checking for %s in model %s", model->BSIM3v32modName, here->BSIM3v32name);
return(E_BADPARM);
}

View File

@ -465,56 +465,46 @@ int Size_Not_Found, i;
pParam->BSIM4leff = Lnew - 2.0 * pParam->BSIM4dl;
if (pParam->BSIM4leff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4modName;
namarray[1] = here->BSIM4name;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
{
SPfrontEnd->IFerrorf(ERR_FATAL,
"BSIM4: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->BSIM4modName, here->BSIM4name);
return(E_BADPARM);
}
pParam->BSIM4weff = Wnew - 2.0 * pParam->BSIM4dw;
if (pParam->BSIM4weff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4modName;
namarray[1] = here->BSIM4name;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
{
SPfrontEnd->IFerrorf(ERR_FATAL,
"BSIM4: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->BSIM4modName, here->BSIM4name);
return(E_BADPARM);
}
pParam->BSIM4leffCV = Lnew - 2.0 * pParam->BSIM4dlc;
if (pParam->BSIM4leffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4modName;
namarray[1] = here->BSIM4name;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
{
SPfrontEnd->IFerrorf(ERR_FATAL,
"BSIM4: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->BSIM4modName, here->BSIM4name);
return(E_BADPARM);
}
pParam->BSIM4weffCV = Wnew - 2.0 * pParam->BSIM4dwc;
if (pParam->BSIM4weffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4modName;
namarray[1] = here->BSIM4name;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
{
SPfrontEnd->IFerrorf(ERR_FATAL,
"BSIM4: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->BSIM4modName, here->BSIM4name);
return(E_BADPARM);
}
pParam->BSIM4weffCJ = Wnew - 2.0 * pParam->BSIM4dwj;
if (pParam->BSIM4weffCJ <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4modName;
namarray[1] = here->BSIM4name;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
{
SPfrontEnd->IFerrorf(ERR_FATAL,
"BSIM4: mosfet %s, model %s: Effective channel width for S/D junctions <= 0",
namarray);
model->BSIM4modName, here->BSIM4name);
return(E_BADPARM);
}
@ -2312,10 +2302,8 @@ int Size_Not_Found, i;
}
if (BSIM4checkModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->BSIM4modName;
namarray[1] = here->BSIM4name;
(*(SPfrontEnd->IFerror)) (ERR_FATAL, "Fatal error(s) detected during BSIM4.6.0 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during BSIM4.6.0 parameter checking for %s in model %s", model->BSIM4modName, here->BSIM4name);
return(E_BADPARM);
}
} /* End instance */

View File

@ -408,56 +408,46 @@ int Size_Not_Found, i;
pParam->BSIM4v4leff = Lnew - 2.0 * pParam->BSIM4v4dl;
if (pParam->BSIM4v4leff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v4modName;
namarray[1] = here->BSIM4v4name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v4: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->BSIM4v4modName, here->BSIM4v4name);
return(E_BADPARM);
}
pParam->BSIM4v4weff = Wnew - 2.0 * pParam->BSIM4v4dw;
if (pParam->BSIM4v4weff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v4modName;
namarray[1] = here->BSIM4v4name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v4: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->BSIM4v4modName, here->BSIM4v4name);
return(E_BADPARM);
}
pParam->BSIM4v4leffCV = Lnew - 2.0 * pParam->BSIM4v4dlc;
if (pParam->BSIM4v4leffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v4modName;
namarray[1] = here->BSIM4v4name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v4: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->BSIM4v4modName, here->BSIM4v4name);
return(E_BADPARM);
}
pParam->BSIM4v4weffCV = Wnew - 2.0 * pParam->BSIM4v4dwc;
if (pParam->BSIM4v4weffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v4modName;
namarray[1] = here->BSIM4v4name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v4: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->BSIM4v4modName, here->BSIM4v4name);
return(E_BADPARM);
}
pParam->BSIM4v4weffCJ = Wnew - 2.0 * pParam->BSIM4v4dwj;
if (pParam->BSIM4v4weffCJ <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v4modName;
namarray[1] = here->BSIM4v4name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v4: mosfet %s, model %s: Effective channel width for S/D junctions <= 0",
namarray);
model->BSIM4v4modName, here->BSIM4v4name);
return(E_BADPARM);
}
@ -1815,18 +1805,16 @@ int Size_Not_Found, i;
}
if (BSIM4v4checkModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->BSIM4v4modName;
namarray[1] = here->BSIM4v4name;
{
switch (model->BSIM4v4intVersion) {
case BSIM4vOLD: case BSIM4v21:
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during BSIM4v4.2.1 parameter checking for %s in model %s", namarray);
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during BSIM4v4.2.1 parameter checking for %s in model %s", model->BSIM4v4modName, here->BSIM4v4name);
break;
case BSIM4v30:
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during BSIM4v4.3.0 parameter checking for %s in model %s", namarray);
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during BSIM4v4.3.0 parameter checking for %s in model %s", model->BSIM4v4modName, here->BSIM4v4name);
break;
case BSIM4v40:
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during BSIM4v4.4.0 parameter checking for %s in model %s", namarray);
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during BSIM4v4.4.0 parameter checking for %s in model %s", model->BSIM4v4modName, here->BSIM4v4name);
break;
default: break;
}

View File

@ -396,56 +396,46 @@ int Size_Not_Found, i;
pParam->BSIM4v5leff = Lnew - 2.0 * pParam->BSIM4v5dl;
if (pParam->BSIM4v5leff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v5modName;
namarray[1] = here->BSIM4v5name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v5: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->BSIM4v5modName, here->BSIM4v5name);
return(E_BADPARM);
}
pParam->BSIM4v5weff = Wnew - 2.0 * pParam->BSIM4v5dw;
if (pParam->BSIM4v5weff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v5modName;
namarray[1] = here->BSIM4v5name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v5: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->BSIM4v5modName, here->BSIM4v5name);
return(E_BADPARM);
}
pParam->BSIM4v5leffCV = Lnew - 2.0 * pParam->BSIM4v5dlc;
if (pParam->BSIM4v5leffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v5modName;
namarray[1] = here->BSIM4v5name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v5: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->BSIM4v5modName, here->BSIM4v5name);
return(E_BADPARM);
}
pParam->BSIM4v5weffCV = Wnew - 2.0 * pParam->BSIM4v5dwc;
if (pParam->BSIM4v5weffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v5modName;
namarray[1] = here->BSIM4v5name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v5: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->BSIM4v5modName, here->BSIM4v5name);
return(E_BADPARM);
}
pParam->BSIM4v5weffCJ = Wnew - 2.0 * pParam->BSIM4v5dwj;
if (pParam->BSIM4v5weffCJ <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v5modName;
namarray[1] = here->BSIM4v5name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v5: mosfet %s, model %s: Effective channel width for S/D junctions <= 0",
namarray);
model->BSIM4v5modName, here->BSIM4v5name);
return(E_BADPARM);
}
@ -1823,10 +1813,8 @@ int Size_Not_Found, i;
if (BSIM4v5checkModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->BSIM4v5modName;
namarray[1] = here->BSIM4v5name;
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during BSIM4v5.5.0 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during BSIM4v5.5.0 parameter checking for %s in model %s", model->BSIM4v5modName, here->BSIM4v5name);
return(E_BADPARM);
}
} /* End instance */

View File

@ -444,56 +444,46 @@ int Size_Not_Found, i;
pParam->BSIM4v6leff = Lnew - 2.0 * pParam->BSIM4v6dl;
if (pParam->BSIM4v6leff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v6modName;
namarray[1] = here->BSIM4v6name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v6: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->BSIM4v6modName, here->BSIM4v6name);
return(E_BADPARM);
}
pParam->BSIM4v6weff = Wnew - 2.0 * pParam->BSIM4v6dw;
if (pParam->BSIM4v6weff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v6modName;
namarray[1] = here->BSIM4v6name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v6: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->BSIM4v6modName, here->BSIM4v6name);
return(E_BADPARM);
}
pParam->BSIM4v6leffCV = Lnew - 2.0 * pParam->BSIM4v6dlc;
if (pParam->BSIM4v6leffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v6modName;
namarray[1] = here->BSIM4v6name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v6: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->BSIM4v6modName, here->BSIM4v6name);
return(E_BADPARM);
}
pParam->BSIM4v6weffCV = Wnew - 2.0 * pParam->BSIM4v6dwc;
if (pParam->BSIM4v6weffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v6modName;
namarray[1] = here->BSIM4v6name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v6: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->BSIM4v6modName, here->BSIM4v6name);
return(E_BADPARM);
}
pParam->BSIM4v6weffCJ = Wnew - 2.0 * pParam->BSIM4v6dwj;
if (pParam->BSIM4v6weffCJ <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->BSIM4v6modName;
namarray[1] = here->BSIM4v6name;
SPfrontEnd->IFerror (ERR_FATAL,
{
SPfrontEnd->IFerrorf (ERR_FATAL,
"BSIM4v6: mosfet %s, model %s: Effective channel width for S/D junctions <= 0",
namarray);
model->BSIM4v6modName, here->BSIM4v6name);
return(E_BADPARM);
}
@ -2188,10 +2178,8 @@ int Size_Not_Found, i;
}
if (BSIM4v6checkModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->BSIM4v6modName;
namarray[1] = here->BSIM4v6name;
SPfrontEnd->IFerror (ERR_FATAL, "Fatal error(s) detected during BSIM4.6.4 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during BSIM4.6.4 parameter checking for %s in model %s", model->BSIM4v6modName, here->BSIM4v6name);
return(E_BADPARM);
}
} /* End instance */

View File

@ -231,12 +231,10 @@ B4SOItemp(
pParam->B4SOIleff = here->B4SOIl - 2.0 * pParam->B4SOIdl;
if (pParam->B4SOIleff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B4SOImodName;
namarray[1] = here->B4SOIname;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
{
SPfrontEnd->IFerrorf(ERR_FATAL,
"B4SOI: mosfet %s, model %s: Effective channel length <= 0",
namarray);
model->B4SOImodName, here->B4SOIname);
return(E_BADPARM);
}
@ -244,12 +242,10 @@ B4SOItemp(
- here->B4SOInbc * model->B4SOIdwbc
- (2.0 - here->B4SOInbc) * pParam->B4SOIdw;
if (pParam->B4SOIweff <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B4SOImodName;
namarray[1] = here->B4SOIname;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
{
SPfrontEnd->IFerrorf(ERR_FATAL,
"B4SOI: mosfet %s, model %s: Effective channel width <= 0",
namarray);
model->B4SOImodName, here->B4SOIname);
return(E_BADPARM);
}
@ -260,12 +256,10 @@ B4SOItemp(
pParam->B4SOIleffCV = here->B4SOIl - 2.0 * pParam->B4SOIdlc;
if (pParam->B4SOIleffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B4SOImodName;
namarray[1] = here->B4SOIname;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
{
SPfrontEnd->IFerrorf(ERR_FATAL,
"B4SOI: mosfet %s, model %s: Effective channel length for C-V <= 0",
namarray);
model->B4SOImodName, here->B4SOIname);
return(E_BADPARM);
}
@ -273,12 +267,10 @@ B4SOItemp(
- here->B4SOInbc * model->B4SOIdwbc
- (2.0 - here->B4SOInbc) * pParam->B4SOIdwc;
if (pParam->B4SOIweffCV <= 0.0)
{ IFuid namarray[2];
namarray[0] = model->B4SOImodName;
namarray[1] = here->B4SOIname;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
{
SPfrontEnd->IFerrorf(ERR_FATAL,
"B4SOI: mosfet %s, model %s: Effective channel width for C-V <= 0",
namarray);
model->B4SOImodName, here->B4SOIname);
return(E_BADPARM);
}
@ -291,24 +283,18 @@ B4SOItemp(
- model->B4SOIdlcb;
if (pParam->B4SOIleffCVb <= 0.0)
{
IFuid namarray[2];
namarray[0] = model->B4SOImodName;
namarray[1] = here->B4SOIname;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
SPfrontEnd->IFerrorf(ERR_FATAL,
"B4SOI: mosfet %s, model %s: Effective channel length for C-V (body) <= 0",
namarray);
model->B4SOImodName, here->B4SOIname);
return(E_BADPARM);
}
pParam->B4SOIleffCVbg = pParam->B4SOIleffCVb + 2 * model->B4SOIdlbg;
if (pParam->B4SOIleffCVbg <= 0.0)
{
IFuid namarray[2];
namarray[0] = model->B4SOImodName;
namarray[1] = here->B4SOIname;
(*(SPfrontEnd->IFerror))(ERR_FATAL,
SPfrontEnd->IFerrorf(ERR_FATAL,
"B4SOI: mosfet %s, model %s: Effective channel length for C-V (backgate) <= 0",
namarray);
model->B4SOImodName, here->B4SOIname);
return(E_BADPARM);
}
@ -1188,10 +1174,8 @@ B4SOItemp(
}
if (B4SOIcheckModel(model, here, ckt))
{ IFuid namarray[2];
namarray[0] = model->B4SOImodName;
namarray[1] = here->B4SOIname;
(*(SPfrontEnd->IFerror)) (ERR_FATAL, "Fatal error(s) detected during B4SOIV3 parameter checking for %s in model %s", namarray);
{
SPfrontEnd->IFerrorf (ERR_FATAL, "Fatal error(s) detected during B4SOIV3 parameter checking for %s in model %s", model->B4SOImodName, here->B4SOIname);
return(E_BADPARM);
}

View File

@ -35,11 +35,8 @@ CCCSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
here->CCCScontBranch = CKTfndBranch(ckt,here->CCCScontName);
if(here->CCCScontBranch == 0) {
IFuid namarray[2];
namarray[0] = here->CCCSname;
namarray[1] = here->CCCScontName;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: unknown controlling source %s",namarray);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: unknown controlling source %s", here->CCCSname, here->CCCScontName);
return(E_BADPARM);
}

View File

@ -32,8 +32,8 @@ CCVSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
here=here->CCVSnextInstance) {
if(here->CCVSposNode == here->CCVSnegNode) {
SPfrontEnd->IFerror (ERR_FATAL,
"instance %s is a shorted CCVS", &here->CCVSname);
SPfrontEnd->IFerrorf (ERR_FATAL,
"instance %s is a shorted CCVS", here->CCVSname);
return(E_UNSUPP);
}
@ -44,11 +44,8 @@ CCVSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
}
here->CCVScontBranch = CKTfndBranch(ckt,here->CCVScontName);
if(here->CCVScontBranch == 0) {
IFuid namarray[2];
namarray[0] = here->CCVSname;
namarray[1] = here->CCVScontName;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: unknown controlling source %s",namarray);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: unknown controlling source %s", here->CCVSname, here->CCVScontName);
return(E_BADPARM);
}

View File

@ -151,28 +151,28 @@ CPLsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state)
for( ; model != NULL; model = model->CPLnextModel ) {
if (!model->Rmgiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line series resistance not given", &(model->CPLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line series resistance not given", model->CPLmodName);
return(E_BADPARM);
}
if (!model->Gmgiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line parallel conductance not given", &(model->CPLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line parallel conductance not given", model->CPLmodName);
return(E_BADPARM);
}
if (!model->Lmgiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line series inductance not given", &(model->CPLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line series inductance not given", model->CPLmodName);
return (E_BADPARM);
}
if (!model->Cmgiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line parallel capacitance not given", &(model->CPLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line parallel capacitance not given", model->CPLmodName);
return (E_BADPARM);
}
if (!model->lengthgiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line length must be given", &(model->CPLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line length must be given", model->CPLmodName);
return (E_BADPARM);
}

View File

@ -50,11 +50,8 @@ CSWsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
here->CSWcontBranch = CKTfndBranch(ckt,here->CSWcontName);
if(here->CSWcontBranch == 0) {
IFuid namarray[2];
namarray[0] = here->CSWname;
namarray[1] = here->CSWcontName;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: unknown controlling source %s",namarray);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: unknown controlling source %s", here->CSWname, here->CSWcontName);
return(E_BADPARM);
}

View File

@ -43,30 +43,30 @@ DIOtemp(GENmodel *inModel, CKTcircuit *ckt)
vtnom = CONSTKoverQ * model->DIOnomTemp;
/* limit grading coeff to max of .9 */
if(model->DIOgradingCoeff>.9) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: grading coefficient too large, limited to 0.9",
&(model->DIOmodName));
model->DIOmodName);
model->DIOgradingCoeff=.9;
}
/* limit activation energy to min of .1 */
if(model->DIOactivationEnergy<.1) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: activation energy too small, limited to 0.1",
&(model->DIOmodName));
model->DIOmodName);
model->DIOactivationEnergy=.1;
}
/* limit depletion cap coeff to max of .95 */
if(model->DIOdepletionCapCoeff>.95) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: coefficient Fc too large, limited to 0.95",
&(model->DIOmodName));
model->DIOmodName);
model->DIOdepletionCapCoeff=.95;
}
/* limit sidewall depletion cap coeff to max of .95 */
if(model->DIOdepletionSWcapCoeff>.95) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: coefficient Fcs too large, limited to 0.95",
&(model->DIOmodName));
model->DIOmodName);
model->DIOdepletionSWcapCoeff=.95;
}
if((!model->DIOresistGiven) || (model->DIOresist==0)) {
@ -98,9 +98,9 @@ DIOtemp(GENmodel *inModel, CKTcircuit *ckt)
* to max of .9
*/
if(here->DIOtGradingCoeff>.9) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: temperature adjusted grading coefficient too large, limited to 0.9",
&(here->DIOname));
here->DIOname);
here->DIOtGradingCoeff=.9;
}
@ -208,10 +208,10 @@ DIOtemp(GENmodel *inModel, CKTcircuit *ckt)
(void)sprintf(emsg,
"%%s: breakdown current increased to %g to resolve",
cbv);
SPfrontEnd->IFerror (ERR_WARNING, emsg, &(here->DIOname));
SPfrontEnd->IFerrorf (ERR_WARNING, emsg, here->DIOname);
FREE(emsg);
SPfrontEnd->IFerror (ERR_WARNING,
"incompatibility with specified saturation current", NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"incompatibility with specified saturation current");
#endif
xbv=tBreakdownVoltage;
} else {
@ -232,7 +232,7 @@ DIOtemp(GENmodel *inModel, CKTcircuit *ckt)
(void)sprintf(emsg,
"%%s: unable to match forward and reverse diode regions: bv = %g, ibv = %g",
xbv,xcbv);
SPfrontEnd->IFerror (ERR_WARNING, emsg, &here->DIOname);
SPfrontEnd->IFerrorf (ERR_WARNING, emsg, here->DIOname);
FREE(emsg);
#endif
}

View File

@ -229,15 +229,11 @@ int HSM2temp(
Leff = Lgate - 2.0e0 * dL ;
if ( Leff <= 1.0e-9 ) {
IFuid namarr[2];
namarr[0] = model->HSM2modName;
namarr[1] = here->HSM2name;
(*(SPfrontEnd->IFerror))
SPfrontEnd->IFerrorf
(
ERR_FATAL,
"HiSIM2: MOSFET(%s) MODEL(%s): effective channel length is smaller than 1nm",
namarr
);
model->HSM2modName, here->HSM2name);
return (E_BADPARM);
}
here->HSM2_leff = Leff ;
@ -253,15 +249,11 @@ int HSM2temp(
here->HSM2_weff = Weff = Wgate - 2.0e0 * dW ;
if ( Weff <= 0.0 ) {
IFuid namarr[2];
namarr[0] = model->HSM2modName;
namarr[1] = here->HSM2name;
(*(SPfrontEnd->IFerror))
SPfrontEnd->IFerrorf
(
ERR_FATAL,
"HiSIM2: MOSFET(%s) MODEL(%s): effective channel width is negative or 0",
namarr
);
model->HSM2modName, here->HSM2name);
return (E_BADPARM);
}
here->HSM2_weff_nf = Weff * here->HSM2_nf ;

View File

@ -206,15 +206,11 @@ int HSMHVtemp(
Leff = Lgate - ( dL + dLLD ) ;
if ( Leff <= 0.0 ) {
IFuid namarr[2];
namarr[0] = model->HSMHVmodName;
namarr[1] = here->HSMHVname;
(*(SPfrontEnd->IFerror))
SPfrontEnd->IFerrorf
(
ERR_FATAL,
"HiSIM_HV: MOSFET(%s) MODEL(%s): effective channel length is negative or 0",
namarr
);
model->HSMHVmodName, here->HSMHVname);
return (E_BADPARM);
}
here->HSMHV_leff = Leff ;
@ -232,15 +228,11 @@ int HSMHVtemp(
here->HSMHV_weff_ld = Wgate - 2.0e0 * dWLD ;
here->HSMHV_weff_cv = Wgate - 2.0e0 * dWCV ;
if ( Weff <= 0.0 ) {
IFuid namarr[2];
namarr[0] = model->HSMHVmodName;
namarr[1] = here->HSMHVname;
(*(SPfrontEnd->IFerror))
SPfrontEnd->IFerrorf
(
ERR_FATAL,
"HiSIM_HV: MOSFET(%s) MODEL(%s): effective channel width is negative or 0",
namarr
);
model->HSMHVmodName, here->HSMHVname);
return (E_BADPARM);
}
here->HSMHV_weff_nf = Weff * here->HSMHV_nf ;

View File

@ -36,31 +36,24 @@ MUTsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
ktype = CKTtypelook("Inductor");
if(ktype <= 0) {
SPfrontEnd->IFerror (ERR_PANIC,
"mutual inductor, but inductors not available!",
NULL);
SPfrontEnd->IFerrorf (ERR_PANIC,
"mutual inductor, but inductors not available!");
return(E_INTERN);
}
if (!here->MUTind1)
here->MUTind1 = (INDinstance *) CKTfndDev(ckt, here->MUTindName1);
if (!here->MUTind1) {
IFuid namarray[2];
namarray[0]=here->MUTname;
namarray[1]=here->MUTindName1;
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: coupling to non-existant inductor %s.",
namarray);
here->MUTname, here->MUTindName1);
}
if (!here->MUTind2)
here->MUTind2 = (INDinstance *) CKTfndDev(ckt, here->MUTindName2);
if (!here->MUTind2) {
IFuid namarray[2];
namarray[0]=here->MUTname;
namarray[1]=here->MUTindName2;
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: coupling to non-existant inductor %s.",
namarray);
here->MUTname, here->MUTindName2);
}

View File

@ -38,13 +38,13 @@ ISRCtemp(GENmodel *inModel, CKTcircuit *ckt)
if(!here->ISRCdcGiven) {
/* no DC value - either have a transient value, or none */
if(here->ISRCfuncTGiven) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: no DC value, transient time 0 value used",
&(here->ISRCname));
here->ISRCname);
} else {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: has no value, DC 0 assumed",
&(here->ISRCname));
here->ISRCname);
}
}
if(!here->ISRCmGiven)

View File

@ -62,9 +62,9 @@ JFETtemp(GENmodel *inModel, CKTcircuit *ckt)
model->JFETsourceConduct = 0;
}
if(model->JFETdepletionCapCoeff >.95) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: Depletion cap. coefficient too large, limited to .95",
&(model->JFETmodName));
model->JFETmodName);
model->JFETdepletionCapCoeff = .95;
}

View File

@ -67,9 +67,9 @@ JFET2temp(GENmodel *inModel, CKTcircuit *ckt)
model->JFET2sourceConduct = 0;
}
if(model->JFET2fc >.95) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: Depletion cap. coefficient too large, limited to .95",
&(model->JFET2modName));
model->JFET2modName);
model->JFET2fc = .95;
}

View File

@ -40,9 +40,9 @@ LTRAsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state)
model->LTRAabstol = 1;
}
if (!model->LTRAresistGiven) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: lossy line series resistance not given, assumed zero",
&(model->LTRAmodName));
model->LTRAmodName);
model->LTRAresist = 0.0;
/* return(E_BADPARM); */
}
@ -57,15 +57,15 @@ LTRAsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state)
(model->LTRAhowToInterp != LTRA_MOD_MIXEDINTERP)) {
/*
* SPfrontEnd->IFerror (ERR_FATAL, "%s: have to specify one of
* lininterp, quadinterp or mixedinterp", &(model->LTRAmodName));
* SPfrontEnd->IFerrorf (ERR_FATAL, "%s: have to specify one of
* lininterp, quadinterp or mixedinterp", model->LTRAmodName);
* return(E_BADPARM);
*/
if (ckt->CKTtryToCompact) {
model->LTRAhowToInterp = LTRA_MOD_LININTERP;
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: using linear interpolation because trytocompact option specified",
&(model->LTRAmodName));
model->LTRAmodName);
} else {
model->LTRAhowToInterp = LTRA_MOD_QUADINTERP;
}
@ -78,65 +78,65 @@ LTRAsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state)
if (!model->LTRAconductGiven) {
/*
* SPfrontEnd->IFerror (ERR_WARNING, "%s: lossy line parallel
* conductance not given, assumed zero", &(model->LTRAmodName));
* SPfrontEnd->IFerrorf (ERR_WARNING, "%s: lossy line parallel
* conductance not given, assumed zero", model->LTRAmodName);
*/
model->LTRAconduct = 0.0;
/* return(E_BADPARM); */
}
if (!model->LTRAinductGiven) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: lossy line series inductance not given, assumed zero",
&(model->LTRAmodName));
model->LTRAmodName);
model->LTRAinduct = 0.0;
/* return(E_BADPARM); */
}
if (!model->LTRAcapacGiven) {
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: lossy line parallel capacitance not given, assumed zero",
&(model->LTRAmodName));
model->LTRAmodName);
model->LTRAcapac = 0.0;
/* return(E_BADPARM); */
}
if (!model->LTRAlengthGiven) {
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: lossy line length must be given",
&(model->LTRAmodName));
model->LTRAmodName);
return (E_BADPARM);
}
if ((model->LTRAresist == 0) && (model->LTRAconduct == 0) &&
(model->LTRAcapac != 0) && (model->LTRAinduct != 0)) {
model->LTRAspecialCase = LTRA_MOD_LC;
#ifdef LTRADEBUG
SPfrontEnd->IFerror (ERR_INFO,
SPfrontEnd->IFerrorf (ERR_INFO,
"%s: lossless line",
&(model->LTRAmodName));
model->LTRAmodName);
#endif
}
if ((model->LTRAresist != 0) && (model->LTRAconduct == 0) &&
(model->LTRAcapac != 0) && (model->LTRAinduct != 0)) {
model->LTRAspecialCase = LTRA_MOD_RLC;
#ifdef LTRADEBUG
SPfrontEnd->IFerror (ERR_INFO,
SPfrontEnd->IFerrorf (ERR_INFO,
"%s: RLC line",
&(model->LTRAmodName));
model->LTRAmodName);
#endif
}
if ((model->LTRAresist != 0) && (model->LTRAconduct == 0) &&
(model->LTRAcapac != 0) && (model->LTRAinduct == 0)) {
model->LTRAspecialCase = LTRA_MOD_RC;
#ifdef LTRADEBUG
SPfrontEnd->IFerror (ERR_INFO,
SPfrontEnd->IFerrorf (ERR_INFO,
"%s: RC line",
&(model->LTRAmodName));
model->LTRAmodName);
#endif
}
if ((model->LTRAresist != 0) && (model->LTRAconduct == 0) &&
(model->LTRAcapac == 0) && (model->LTRAinduct != 0)) {
model->LTRAspecialCase = LTRA_MOD_RL;
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: RL line not supported yet",
&(model->LTRAmodName));
model->LTRAmodName);
return (E_BADPARM);
#ifdef LTRADEBUG
#endif
@ -145,17 +145,17 @@ LTRAsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state)
(model->LTRAcapac == 0) && (model->LTRAinduct == 0)) {
model->LTRAspecialCase = LTRA_MOD_RG;
#ifdef LTRADEBUG
SPfrontEnd->IFerror (ERR_INFO,
SPfrontEnd->IFerrorf (ERR_INFO,
"%s: RG line",
&(model->LTRAmodName));
model->LTRAmodName);
#endif
}
if ((model->LTRAconduct != 0) && ((model->LTRAcapac != 0) ||
(model->LTRAinduct != 0))) {
model->LTRAspecialCase = LTRA_MOD_LTRA;
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Nonzero G (except RG) line not supported yet",
&(model->LTRAmodName));
model->LTRAmodName);
return (E_BADPARM);
#ifdef LTRADEBUG
#endif
@ -163,9 +163,9 @@ LTRAsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state)
if ((model->LTRAresist == 0.0 ? 0 : 1) + (model->LTRAconduct
== 0.0 ? 0 : 1) + (model->LTRAinduct == 0.0 ? 0 : 1) +
(model->LTRAcapac == 0.0 ? 0 : 1) <= 1) {
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: At least two of R,L,G,C must be specified and nonzero",
&(model->LTRAmodName));
model->LTRAmodName);
return (E_BADPARM);
}
/* loop through all the instances of the model */

View File

@ -53,8 +53,8 @@ MOS1temp(GENmodel *inModel, CKTcircuit *ckt)
/* now model parameter preprocessing */
if (model->MOS1phi <= 0.0) {
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Phi is not positive.", &model->MOS1modName);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Phi is not positive.", model->MOS1modName);
return(E_BADPARM);
}
@ -105,8 +105,8 @@ MOS1temp(GENmodel *inModel, CKTcircuit *ckt)
}
} else {
model->MOS1substrateDoping = 0;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Nsub < Ni",&model->MOS1modName);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Nsub < Ni", model->MOS1modName);
return(E_BADPARM);
}
}
@ -158,9 +158,9 @@ MOS1temp(GENmodel *inModel, CKTcircuit *ckt)
}
if(here->MOS1l - 2 * model->MOS1latDiff <=0) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: effective channel length less than zero",
&(model->MOS1modName));
model->MOS1modName);
}
ratio4 = ratio * sqrt(ratio);
here->MOS1tTransconductance = model->MOS1transconductance / ratio4;

View File

@ -54,8 +54,8 @@ MOS2temp(GENmodel *inModel, CKTcircuit *ckt)
pbfact1 = -2*vtnom *(1.5*log(fact1)+CHARGE*arg1);
if (model->MOS2phi <= 0.0) {
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Phi is not positive.", &model->MOS2modName);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Phi is not positive.", model->MOS2modName);
return(E_BADPARM);
}
@ -108,8 +108,8 @@ MOS2temp(GENmodel *inModel, CKTcircuit *ckt)
(CHARGE*model->MOS2substrateDoping *1e6 /*(cm**3/m**3)*/));
} else {
model->MOS2substrateDoping = 0;
SPfrontEnd->IFerror (ERR_FATAL, "%s: Nsub < Ni",
&(model->MOS2modName));
SPfrontEnd->IFerrorf (ERR_FATAL, "%s: Nsub < Ni",
model->MOS2modName);
return(E_BADPARM);
}
}
@ -205,9 +205,9 @@ MOS2temp(GENmodel *inModel, CKTcircuit *ckt)
here->MOS2sourceConductance = 0;
}
if(here->MOS2l - 2 * model->MOS2latDiff <=0) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: effective channel length less than zero",
&(here->MOS2name));
here->MOS2name);
}
ratio4 = ratio * sqrt(ratio);

View File

@ -54,8 +54,8 @@ MOS3temp(GENmodel *inModel, CKTcircuit *ckt)
ni_temp=1.45e16*nifact;
if (model->MOS3phi <= 0.0) {
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Phi is not positive.", &model->MOS3modName);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Phi is not positive.", model->MOS3modName);
return(E_BADPARM);
}
@ -104,8 +104,8 @@ MOS3temp(GENmodel *inModel, CKTcircuit *ckt)
model->MOS3coeffDepLayWidth = sqrt(model->MOS3alpha);
} else {
model->MOS3substrateDoping = 0;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Nsub < Ni ",&(model->MOS3modName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Nsub < Ni ", model->MOS3modName);
return(E_BADPARM);
}
}
@ -197,17 +197,17 @@ MOS3temp(GENmodel *inModel, CKTcircuit *ckt)
if(here->MOS3l - 2 * model->MOS3latDiff +
model->MOS3lengthAdjust <= 0) {
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: effective channel length less than zero",
&(here->MOS3name));
here->MOS3name);
return(E_PARMVAL);
}
if(here->MOS3w - 2 * model->MOS3widthNarrow +
model->MOS3widthAdjust <= 0) {
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: effective channel width less than zero",
&(here->MOS3name));
here->MOS3name);
return(E_PARMVAL);
}

View File

@ -52,8 +52,8 @@ MOS6temp(GENmodel *inModel, CKTcircuit *ckt)
/* now model parameter preprocessing */
if (model->MOS6phi <= 0.0) {
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Phi is not positive.", &model->MOS6modName);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Phi is not positive.", model->MOS6modName);
return(E_BADPARM);
}
@ -107,8 +107,8 @@ MOS6temp(GENmodel *inModel, CKTcircuit *ckt)
}
} else {
model->MOS6substrateDoping = 0;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Nsub < Ni",&model->MOS6modName);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Nsub < Ni", model->MOS6modName);
return(E_BADPARM);
}
}
@ -157,9 +157,9 @@ MOS6temp(GENmodel *inModel, CKTcircuit *ckt)
}
if(here->MOS6l - 2 * model->MOS6latDiff <=0) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: effective channel length less than zero",
&(model->MOS6modName));
model->MOS6modName);
}
ratio4 = ratio * sqrt(ratio);
here->MOS6tKv = model->MOS6kv;

View File

@ -55,8 +55,8 @@ MOS9temp(GENmodel *inModel, CKTcircuit *ckt)
ni_temp=1.45e16*nifact;
if (model->MOS9phi <= 0.0) {
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Phi is not positive.", &model->MOS9modName);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Phi is not positive.", model->MOS9modName);
return(E_BADPARM);
}
@ -108,8 +108,8 @@ MOS9temp(GENmodel *inModel, CKTcircuit *ckt)
model->MOS9coeffDepLayWidth = sqrt(model->MOS9alpha);
} else {
model->MOS9substrateDoping = 0;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Nsub < Ni ",&(model->MOS9modName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Nsub < Ni ", model->MOS9modName);
return(E_BADPARM);
}
}
@ -202,17 +202,17 @@ MOS9temp(GENmodel *inModel, CKTcircuit *ckt)
if(here->MOS9l - 2 * model->MOS9latDiff +
model->MOS9lengthAdjust <1e-6) {
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: effective channel length less than zero",
&(here->MOS9name));
here->MOS9name);
return(E_PARMVAL);
}
if(here->MOS9w - 2 * model->MOS9widthNarrow +
model->MOS9widthAdjust <1e-6) {
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: effective channel width less than zero",
&(here->MOS9name));
here->MOS9name);
return(E_PARMVAL);
}

View File

@ -69,8 +69,8 @@ REStemp(GENmodel *inModel, CKTcircuit *ckt)
if(model->RESresGiven) {
here->RESresist = model->RESres;
} else {
SPfrontEnd->IFerror (ERR_WARNING,
"%s: resistance to low, set to 1 mOhm", &(here->RESname));
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: resistance to low, set to 1 mOhm", here->RESname);
here->RESresist = 1e-03;
}
}

View File

@ -265,9 +265,9 @@ SOI3setup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
if((model->SOI3lx != 0) && (model->SOI3lambda != 0))
{
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: Non-zero values for BOTH LAMBDA and LX. \nDefaulting to simple LAMBDA model",
&model->SOI3modName);
model->SOI3modName);
model->SOI3useLAMBDA = TRUE;
}

View File

@ -95,9 +95,9 @@ SOI3temp(GENmodel *inModel, CKTcircuit *ckt)
model->SOI3bodyThickness == 0)
{
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: SOI3 device film thickness must be supplied",
&model->SOI3modName);
model->SOI3modName);
return(E_BADPARM);
}
else /* Oxide and film thicknesses are supplied. */
@ -142,9 +142,9 @@ SOI3temp(GENmodel *inModel, CKTcircuit *ckt)
if(model->SOI3bodyThickness < xd_max)
{
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: Body Film thickness may be too small \nfor this model to be valid",
&model->SOI3modName);
model->SOI3modName);
/* return(E_PAUSE); don't want to stop,
just issue a warning */
}
@ -232,8 +232,8 @@ SOI3temp(GENmodel *inModel, CKTcircuit *ckt)
else /* Substrate doping less than intrinsic silicon, so set to zero. */
{
model->SOI3substrateDoping = 0;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: Nsub < Ni",&model->SOI3modName);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: Nsub < Ni", model->SOI3modName);
return(E_BADPARM);
}
}
@ -243,9 +243,9 @@ SOI3temp(GENmodel *inModel, CKTcircuit *ckt)
(model->SOI3gamma*model->SOI3frontOxideCapFactor);
if(model->SOI3bodyThickness < xd_max)
{
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s :Body Film thickness may be too small \nfor this model to be valid",
&model->SOI3modName);
model->SOI3modName);
/* return(E_PAUSE); */
}
/* End of thick film check - msll 21/2/94
@ -349,10 +349,10 @@ SOI3temp(GENmodel *inModel, CKTcircuit *ckt)
if(here->SOI3l - 2 * model->SOI3latDiff <=0)
{
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: Effective channel length less than zero \nIncreasing \
this instance length by 2*LD to remove effect of LD",
&(here->SOI3name));
here->SOI3name);
here->SOI3l += 2*model->SOI3latDiff;
}
ratio4 = exp(model->SOI3k*log(ratio)); /* ratio4 = (temp/tnom)^k */

View File

@ -104,9 +104,9 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
here->TRAabstol = 1;
}
if(!here->TRAimpedGiven) {
SPfrontEnd->IFerror (ERR_FATAL,
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: transmission line z0 must be given",
&(here->TRAname));
here->TRAname);
return(E_BADPARM);
}
}

View File

@ -89,28 +89,28 @@ TXLsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit*ckt, int *state)
for( ; model != NULL; model = model->TXLnextModel ) {
if (!model->Rgiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line series resistance not given", &(model->TXLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line series resistance not given", model->TXLmodName);
return(E_BADPARM);
}
if (!model->Ggiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line parallel conductance not given", &(model->TXLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line parallel conductance not given", model->TXLmodName);
return(E_BADPARM);
}
if (!model->Lgiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line series inductance not given", &(model->TXLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line series inductance not given", model->TXLmodName);
return (E_BADPARM);
}
if (!model->Cgiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line parallel capacitance not given", &(model->TXLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line parallel capacitance not given", model->TXLmodName);
return (E_BADPARM);
}
if (!model->lengthgiven) {
SPfrontEnd->IFerror (ERR_FATAL,
"model %s: lossy line length must be given", &(model->TXLmodName));
SPfrontEnd->IFerrorf (ERR_FATAL,
"model %s: lossy line length must be given", model->TXLmodName);
return (E_BADPARM);
}

View File

@ -33,8 +33,8 @@ VCVSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
here=here->VCVSnextInstance) {
if(here->VCVSposNode == here->VCVSnegNode) {
SPfrontEnd->IFerror (ERR_FATAL,
"instance %s is a shorted VCVS", &here->VCVSname);
SPfrontEnd->IFerrorf (ERR_FATAL,
"instance %s is a shorted VCVS", here->VCVSname);
return(E_UNSUPP);
}

View File

@ -32,8 +32,8 @@ VSRCsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state)
here=here->VSRCnextInstance) {
if(here->VSRCposNode == here->VSRCnegNode) {
SPfrontEnd->IFerror (ERR_FATAL,
"instance %s is a shorted VSRC", &here->VSRCname);
SPfrontEnd->IFerrorf (ERR_FATAL,
"instance %s is a shorted VSRC", here->VSRCname);
return(E_UNSUPP);
}

View File

@ -38,13 +38,13 @@ VSRCtemp(GENmodel *inModel, CKTcircuit *ckt)
if(!here->VSRCdcGiven) {
/* no DC value - either have a transient value, or none */
if(here->VSRCfuncTGiven) {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: no DC value, transient time 0 value used",
&(here->VSRCname));
here->VSRCname);
} else {
SPfrontEnd->IFerror (ERR_WARNING,
SPfrontEnd->IFerrorf (ERR_WARNING,
"%s: has no value, DC 0 assumed",
&(here->VSRCname));
here->VSRCname);
}
}
radians = here->VSRCacPhase * M_PI / 180.0;

View File

@ -289,9 +289,8 @@ int EVTiter(
}
FREE(err_msg);
SPfrontEnd->IFerror (ERR_WARNING,
"Too many iteration passes in event-driven circuits",
NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"Too many iteration passes in event-driven circuits");
return(E_ITERLIM);
}

View File

@ -173,9 +173,8 @@ int EVTop(
if(ckt->evt->data.statistics->op_alternations >=
ckt->evt->limits.max_op_alternations) {
SPfrontEnd->IFerror (ERR_WARNING,
"Too many analog/event-driven solution alternations",
NULL);
SPfrontEnd->IFerrorf (ERR_WARNING,
"Too many analog/event-driven solution alternations");
err_msg = TMALLOC(char, 10000);
output_queue = &(ckt->evt->queue.output);

View File

@ -351,11 +351,8 @@ MIFsetup(
smp_data_out->ibranch = CKTfndBranch(ckt,
here->conn[i]->port[j]->vsource_str);
if(smp_data_out->ibranch == 0) {
IFuid names[2];
names[0] = here->MIFname;
names[1] = here->conn[i]->port[j]->vsource_str;
SPfrontEnd->IFerror (ERR_FATAL,
"%s: unknown controlling source %s",names);
SPfrontEnd->IFerrorf (ERR_FATAL,
"%s: unknown controlling source %s", here->MIFname, here->conn[i]->port[j]->vsource_str);
return(E_BADPARM);
}
} /* end if vsource current input */