rewrite, useing IFerrorf()
OUTerror() and IFerror() are no more used, but kept for compatibility
This commit is contained in:
parent
f26c1b71f9
commit
ea7372efe7
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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++) {
|
||||
|
|
|
|||
|
|
@ -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:;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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){
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 ;
|
||||
|
|
|
|||
|
|
@ -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 ;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue