src/spicelib/devices/*/*set.c, XXXunsetup(), reset local node variables unconditionally

and use a more robust test for local node numbers.

That is, transform this pattern :
  if (here->Node && ...) {
     CKTdltNNum(ckt, here->Node);
     here->Node = 0;
  }
into this :
  if (here->Node > 0 && ...)
     CKTdltNNum(ckt, here->Node);
  here->Node = 0;

The change of "!= 0" ==> "> 0" accounts for rare cases where "Node"
   might have been set to -1, (meaning "unconnected")
The unconditional execution of the zero assignment is for those cases
  where "Node" might have been assigned to some external or other local Node.
If so, the variable would not be set to zero, confusing the "guarding" if's
  in the corresponding XXXsetup() routine.

The Pattern to follow is:
  1) unset and delete *all* local Nodes in XXXunsetup()
  2) allocate all of them again in a re-invocation of XXXsetup(),
       exactly the same way as in the very first invocation.
This commit is contained in:
rlar 2017-01-29 11:33:58 +01:00
parent 00c743c37d
commit 2f1219811e
38 changed files with 887 additions and 1186 deletions

View File

@ -128,10 +128,10 @@ ASRCunsetup(GENmodel *inModel, CKTcircuit *ckt)
for (; model; model = model->ASRCnextModel)
for (here = model->ASRCinstances; here; here = here->ASRCnextInstance) {
if (here->ASRCbranch) {
if (here->ASRCbranch > 0)
CKTdltNNum(ckt, here->ASRCbranch);
here->ASRCbranch = 0;
}
here->ASRCbranch = 0;
FREE(here->ASRCposPtr);
FREE(here->ASRCvars);
FREE(here->ASRCacValues);

View File

@ -481,24 +481,20 @@ BJTunsetup(
for (here = model->BJTinstances; here != NULL;
here=here->BJTnextInstance)
{
if (here->BJTemitPrimeNode
if (here->BJTemitPrimeNode > 0
&& here->BJTemitPrimeNode != here->BJTemitNode)
{
CKTdltNNum(ckt, here->BJTemitPrimeNode);
here->BJTemitPrimeNode = 0;
}
if (here->BJTbasePrimeNode
CKTdltNNum(ckt, here->BJTemitPrimeNode);
here->BJTemitPrimeNode = 0;
if (here->BJTbasePrimeNode > 0
&& here->BJTbasePrimeNode != here->BJTbaseNode)
{
CKTdltNNum(ckt, here->BJTbasePrimeNode);
here->BJTbasePrimeNode = 0;
}
if (here->BJTcolPrimeNode
CKTdltNNum(ckt, here->BJTbasePrimeNode);
here->BJTbasePrimeNode = 0;
if (here->BJTcolPrimeNode > 0
&& here->BJTcolPrimeNode != here->BJTcolNode)
{
CKTdltNNum(ckt, here->BJTcolPrimeNode);
here->BJTcolPrimeNode = 0;
}
here->BJTcolPrimeNode = 0;
}
}
return OK;

View File

@ -412,18 +412,15 @@ B1unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->B1instances; here != NULL;
here=here->B1nextInstance)
{
if (here->B1sNodePrime
if (here->B1sNodePrime > 0
&& here->B1sNodePrime != here->B1sNode)
{
CKTdltNNum(ckt, here->B1sNodePrime);
here->B1sNodePrime = 0;
}
if (here->B1dNodePrime
here->B1sNodePrime = 0;
if (here->B1dNodePrime > 0
&& here->B1dNodePrime != here->B1dNode)
{
CKTdltNNum(ckt, here->B1dNodePrime);
here->B1dNodePrime = 0;
}
here->B1dNodePrime = 0;
}
}
return OK;

View File

@ -581,18 +581,15 @@ B2unsetup(
for (here = model->B2instances; here != NULL;
here=here->B2nextInstance)
{
if (here->B2sNodePrime
if (here->B2sNodePrime > 0
&& here->B2sNodePrime != here->B2sNode)
{
CKTdltNNum(ckt, here->B2sNodePrime);
here->B2sNodePrime = 0;
}
if (here->B2dNodePrime
here->B2sNodePrime = 0;
if (here->B2dNodePrime > 0
&& here->B2dNodePrime != here->B2dNode)
{
CKTdltNNum(ckt, here->B2dNodePrime);
here->B2dNodePrime = 0;
}
here->B2dNodePrime = 0;
}
}
return OK;

View File

@ -1144,23 +1144,19 @@ BSIM3unsetup(
for (here = model->BSIM3instances; here != NULL;
here=here->BSIM3nextInstance)
{
if (here->BSIM3qNode)
{
if (here->BSIM3qNode > 0)
CKTdltNNum(ckt, here->BSIM3qNode);
here->BSIM3qNode = 0;
}
if (here->BSIM3sNodePrime
here->BSIM3qNode = 0;
if (here->BSIM3sNodePrime > 0
&& here->BSIM3sNodePrime != here->BSIM3sNode)
{
CKTdltNNum(ckt, here->BSIM3sNodePrime);
here->BSIM3sNodePrime = 0;
}
if (here->BSIM3dNodePrime
here->BSIM3sNodePrime = 0;
if (here->BSIM3dNodePrime > 0
&& here->BSIM3dNodePrime != here->BSIM3dNode)
{
CKTdltNNum(ckt, here->BSIM3dNodePrime);
here->BSIM3dNodePrime = 0;
}
here->BSIM3dNodePrime = 0;
}
}
return OK;

View File

@ -1363,251 +1363,203 @@ B3SOIDDunsetup(GENmodel *inModel, CKTcircuit *ckt)
here=here->B3SOIDDnextInstance)
{
/* here for debugging purpose only */
if (here->B3SOIDDdum5Node)
{
if (here->B3SOIDDdum5Node > 0)
CKTdltNNum(ckt, here->B3SOIDDdum5Node);
here->B3SOIDDdum5Node = 0;
}
if (here->B3SOIDDdum4Node)
{
CKTdltNNum(ckt, here->B3SOIDDdum4Node);
here->B3SOIDDdum4Node = 0;
}
if (here->B3SOIDDdum3Node)
{
CKTdltNNum(ckt, here->B3SOIDDdum3Node);
here->B3SOIDDdum3Node = 0;
}
if (here->B3SOIDDdum2Node)
{
CKTdltNNum(ckt, here->B3SOIDDdum2Node);
here->B3SOIDDdum2Node = 0;
}
if (here->B3SOIDDdum1Node)
{
CKTdltNNum(ckt, here->B3SOIDDdum1Node);
here->B3SOIDDdum1Node = 0;
}
if (here->B3SOIDDcbeNode)
{
CKTdltNNum(ckt, here->B3SOIDDcbeNode);
here->B3SOIDDcbeNode = 0;
}
if (here->B3SOIDDvcscvNode)
{
CKTdltNNum(ckt, here->B3SOIDDvcscvNode);
here->B3SOIDDvcscvNode = 0;
}
if (here->B3SOIDDvdscvNode)
{
CKTdltNNum(ckt, here->B3SOIDDvdscvNode);
here->B3SOIDDvdscvNode = 0;
}
if (here->B3SOIDDqgNode)
{
CKTdltNNum(ckt, here->B3SOIDDqgNode);
here->B3SOIDDqgNode = 0;
}
if (here->B3SOIDDqdNode)
{
CKTdltNNum(ckt, here->B3SOIDDqdNode);
here->B3SOIDDqdNode = 0;
}
if (here->B3SOIDDqeNode)
{
CKTdltNNum(ckt, here->B3SOIDDqeNode);
here->B3SOIDDqeNode = 0;
}
if (here->B3SOIDDqsubs2Node)
{
CKTdltNNum(ckt, here->B3SOIDDqsubs2Node);
here->B3SOIDDqsubs2Node = 0;
}
if (here->B3SOIDDqsubs1Node)
{
CKTdltNNum(ckt, here->B3SOIDDqsubs1Node);
here->B3SOIDDqsubs1Node = 0;
}
if (here->B3SOIDDqsub0Node)
{
CKTdltNNum(ckt, here->B3SOIDDqsub0Node);
here->B3SOIDDqsub0Node = 0;
}
if (here->B3SOIDDqaccNode)
{
CKTdltNNum(ckt, here->B3SOIDDqaccNode);
here->B3SOIDDqaccNode = 0;
}
if (here->B3SOIDDxcsatNode)
{
CKTdltNNum(ckt, here->B3SOIDDxcsatNode);
here->B3SOIDDxcsatNode = 0;
}
if (here->B3SOIDDvgsteffNode)
{
CKTdltNNum(ckt, here->B3SOIDDvgsteffNode);
here->B3SOIDDvgsteffNode = 0;
}
if (here->B3SOIDDvthNode)
{
CKTdltNNum(ckt, here->B3SOIDDvthNode);
here->B3SOIDDvthNode = 0;
}
if (here->B3SOIDDvbs0teffNode)
{
CKTdltNNum(ckt, here->B3SOIDDvbs0teffNode);
here->B3SOIDDvbs0teffNode = 0;
}
if (here->B3SOIDDgmeNode)
{
CKTdltNNum(ckt, here->B3SOIDDgmeNode);
here->B3SOIDDgmeNode = 0;
}
if (here->B3SOIDDgdsNode)
{
CKTdltNNum(ckt, here->B3SOIDDgdsNode);
here->B3SOIDDgdsNode = 0;
}
if (here->B3SOIDDgmbsNode)
{
CKTdltNNum(ckt, here->B3SOIDDgmbsNode);
here->B3SOIDDgmbsNode = 0;
}
if (here->B3SOIDDgmNode)
{
CKTdltNNum(ckt, here->B3SOIDDgmNode);
here->B3SOIDDgmNode = 0;
}
if (here->B3SOIDDqjdNode)
{
CKTdltNNum(ckt, here->B3SOIDDqjdNode);
here->B3SOIDDqjdNode = 0;
}
if (here->B3SOIDDqjsNode)
{
CKTdltNNum(ckt, here->B3SOIDDqjsNode);
here->B3SOIDDqjsNode = 0;
}
if (here->B3SOIDDqbfNode)
{
CKTdltNNum(ckt, here->B3SOIDDqbfNode);
here->B3SOIDDqbfNode = 0;
}
if (here->B3SOIDDqbNode)
{
CKTdltNNum(ckt, here->B3SOIDDqbNode);
here->B3SOIDDqbNode = 0;
}
if (here->B3SOIDDcbgNode)
{
CKTdltNNum(ckt, here->B3SOIDDcbgNode);
here->B3SOIDDcbgNode = 0;
}
if (here->B3SOIDDcbdNode)
{
CKTdltNNum(ckt, here->B3SOIDDcbdNode);
here->B3SOIDDcbdNode = 0;
}
if (here->B3SOIDDcbbNode)
{
CKTdltNNum(ckt, here->B3SOIDDcbbNode);
here->B3SOIDDcbbNode = 0;
}
if (here->B3SOIDDxcNode)
{
CKTdltNNum(ckt, here->B3SOIDDxcNode);
here->B3SOIDDxcNode = 0;
}
if (here->B3SOIDDvbseffNode)
{
CKTdltNNum(ckt, here->B3SOIDDvbseffNode);
here->B3SOIDDvbseffNode = 0;
}
if (here->B3SOIDDvbs0effNode)
{
CKTdltNNum(ckt, here->B3SOIDDvbs0effNode);
here->B3SOIDDvbs0effNode = 0;
}
if (here->B3SOIDDabeffNode)
{
CKTdltNNum(ckt, here->B3SOIDDabeffNode);
here->B3SOIDDabeffNode = 0;
}
if (here->B3SOIDDibpNode)
{
CKTdltNNum(ckt, here->B3SOIDDibpNode);
here->B3SOIDDibpNode = 0;
}
if (here->B3SOIDDitunNode)
{
CKTdltNNum(ckt, here->B3SOIDDitunNode);
here->B3SOIDDitunNode = 0;
}
if (here->B3SOIDDigidlNode)
{
CKTdltNNum(ckt, here->B3SOIDDigidlNode);
here->B3SOIDDigidlNode = 0;
}
if (here->B3SOIDDiiiNode)
{
CKTdltNNum(ckt, here->B3SOIDDiiiNode);
here->B3SOIDDiiiNode = 0;
}
if (here->B3SOIDDibdNode)
{
CKTdltNNum(ckt, here->B3SOIDDibdNode);
here->B3SOIDDibdNode = 0;
}
if (here->B3SOIDDibsNode)
{
CKTdltNNum(ckt, here->B3SOIDDibsNode);
here->B3SOIDDibsNode = 0;
}
if (here->B3SOIDDicNode)
{
CKTdltNNum(ckt, here->B3SOIDDicNode);
here->B3SOIDDicNode = 0;
}
if (here->B3SOIDDidsNode)
{
CKTdltNNum(ckt, here->B3SOIDDidsNode);
here->B3SOIDDidsNode = 0;
}
if (here->B3SOIDDvbsNode)
{
CKTdltNNum(ckt, here->B3SOIDDvbsNode);
here->B3SOIDDvbsNode = 0;
}
here->B3SOIDDdum5Node = 0;
if (here->B3SOIDDtempNode &&
if (here->B3SOIDDdum4Node > 0)
CKTdltNNum(ckt, here->B3SOIDDdum4Node);
here->B3SOIDDdum4Node = 0;
if (here->B3SOIDDdum3Node > 0)
CKTdltNNum(ckt, here->B3SOIDDdum3Node);
here->B3SOIDDdum3Node = 0;
if (here->B3SOIDDdum2Node > 0)
CKTdltNNum(ckt, here->B3SOIDDdum2Node);
here->B3SOIDDdum2Node = 0;
if (here->B3SOIDDdum1Node > 0)
CKTdltNNum(ckt, here->B3SOIDDdum1Node);
here->B3SOIDDdum1Node = 0;
if (here->B3SOIDDcbeNode > 0)
CKTdltNNum(ckt, here->B3SOIDDcbeNode);
here->B3SOIDDcbeNode = 0;
if (here->B3SOIDDvcscvNode > 0)
CKTdltNNum(ckt, here->B3SOIDDvcscvNode);
here->B3SOIDDvcscvNode = 0;
if (here->B3SOIDDvdscvNode > 0)
CKTdltNNum(ckt, here->B3SOIDDvdscvNode);
here->B3SOIDDvdscvNode = 0;
if (here->B3SOIDDqgNode > 0)
CKTdltNNum(ckt, here->B3SOIDDqgNode);
here->B3SOIDDqgNode = 0;
if (here->B3SOIDDqdNode > 0)
CKTdltNNum(ckt, here->B3SOIDDqdNode);
here->B3SOIDDqdNode = 0;
if (here->B3SOIDDqeNode > 0)
CKTdltNNum(ckt, here->B3SOIDDqeNode);
here->B3SOIDDqeNode = 0;
if (here->B3SOIDDqsubs2Node > 0)
CKTdltNNum(ckt, here->B3SOIDDqsubs2Node);
here->B3SOIDDqsubs2Node = 0;
if (here->B3SOIDDqsubs1Node > 0)
CKTdltNNum(ckt, here->B3SOIDDqsubs1Node);
here->B3SOIDDqsubs1Node = 0;
if (here->B3SOIDDqsub0Node > 0)
CKTdltNNum(ckt, here->B3SOIDDqsub0Node);
here->B3SOIDDqsub0Node = 0;
if (here->B3SOIDDqaccNode > 0)
CKTdltNNum(ckt, here->B3SOIDDqaccNode);
here->B3SOIDDqaccNode = 0;
if (here->B3SOIDDxcsatNode > 0)
CKTdltNNum(ckt, here->B3SOIDDxcsatNode);
here->B3SOIDDxcsatNode = 0;
if (here->B3SOIDDvgsteffNode > 0)
CKTdltNNum(ckt, here->B3SOIDDvgsteffNode);
here->B3SOIDDvgsteffNode = 0;
if (here->B3SOIDDvthNode > 0)
CKTdltNNum(ckt, here->B3SOIDDvthNode);
here->B3SOIDDvthNode = 0;
if (here->B3SOIDDvbs0teffNode > 0)
CKTdltNNum(ckt, here->B3SOIDDvbs0teffNode);
here->B3SOIDDvbs0teffNode = 0;
if (here->B3SOIDDgmeNode > 0)
CKTdltNNum(ckt, here->B3SOIDDgmeNode);
here->B3SOIDDgmeNode = 0;
if (here->B3SOIDDgdsNode > 0)
CKTdltNNum(ckt, here->B3SOIDDgdsNode);
here->B3SOIDDgdsNode = 0;
if (here->B3SOIDDgmbsNode > 0)
CKTdltNNum(ckt, here->B3SOIDDgmbsNode);
here->B3SOIDDgmbsNode = 0;
if (here->B3SOIDDgmNode > 0)
CKTdltNNum(ckt, here->B3SOIDDgmNode);
here->B3SOIDDgmNode = 0;
if (here->B3SOIDDqjdNode > 0)
CKTdltNNum(ckt, here->B3SOIDDqjdNode);
here->B3SOIDDqjdNode = 0;
if (here->B3SOIDDqjsNode > 0)
CKTdltNNum(ckt, here->B3SOIDDqjsNode);
here->B3SOIDDqjsNode = 0;
if (here->B3SOIDDqbfNode > 0)
CKTdltNNum(ckt, here->B3SOIDDqbfNode);
here->B3SOIDDqbfNode = 0;
if (here->B3SOIDDqbNode > 0)
CKTdltNNum(ckt, here->B3SOIDDqbNode);
here->B3SOIDDqbNode = 0;
if (here->B3SOIDDcbgNode > 0)
CKTdltNNum(ckt, here->B3SOIDDcbgNode);
here->B3SOIDDcbgNode = 0;
if (here->B3SOIDDcbdNode > 0)
CKTdltNNum(ckt, here->B3SOIDDcbdNode);
here->B3SOIDDcbdNode = 0;
if (here->B3SOIDDcbbNode > 0)
CKTdltNNum(ckt, here->B3SOIDDcbbNode);
here->B3SOIDDcbbNode = 0;
if (here->B3SOIDDxcNode > 0)
CKTdltNNum(ckt, here->B3SOIDDxcNode);
here->B3SOIDDxcNode = 0;
if (here->B3SOIDDvbseffNode > 0)
CKTdltNNum(ckt, here->B3SOIDDvbseffNode);
here->B3SOIDDvbseffNode = 0;
if (here->B3SOIDDvbs0effNode > 0)
CKTdltNNum(ckt, here->B3SOIDDvbs0effNode);
here->B3SOIDDvbs0effNode = 0;
if (here->B3SOIDDabeffNode > 0)
CKTdltNNum(ckt, here->B3SOIDDabeffNode);
here->B3SOIDDabeffNode = 0;
if (here->B3SOIDDibpNode > 0)
CKTdltNNum(ckt, here->B3SOIDDibpNode);
here->B3SOIDDibpNode = 0;
if (here->B3SOIDDitunNode > 0)
CKTdltNNum(ckt, here->B3SOIDDitunNode);
here->B3SOIDDitunNode = 0;
if (here->B3SOIDDigidlNode > 0)
CKTdltNNum(ckt, here->B3SOIDDigidlNode);
here->B3SOIDDigidlNode = 0;
if (here->B3SOIDDiiiNode > 0)
CKTdltNNum(ckt, here->B3SOIDDiiiNode);
here->B3SOIDDiiiNode = 0;
if (here->B3SOIDDibdNode > 0)
CKTdltNNum(ckt, here->B3SOIDDibdNode);
here->B3SOIDDibdNode = 0;
if (here->B3SOIDDibsNode > 0)
CKTdltNNum(ckt, here->B3SOIDDibsNode);
here->B3SOIDDibsNode = 0;
if (here->B3SOIDDicNode > 0)
CKTdltNNum(ckt, here->B3SOIDDicNode);
here->B3SOIDDicNode = 0;
if (here->B3SOIDDidsNode > 0)
CKTdltNNum(ckt, here->B3SOIDDidsNode);
here->B3SOIDDidsNode = 0;
if (here->B3SOIDDvbsNode > 0)
CKTdltNNum(ckt, here->B3SOIDDvbsNode);
here->B3SOIDDvbsNode = 0;
if (here->B3SOIDDtempNode > 0 &&
here->B3SOIDDtempNode != here->B3SOIDDtempNodeExt &&
here->B3SOIDDtempNode != here->B3SOIDDbNodeExt &&
here->B3SOIDDtempNode != here->B3SOIDDpNodeExt)
{
CKTdltNNum(ckt, here->B3SOIDDtempNode);
here->B3SOIDDtempNode = 0;
}
if (here->B3SOIDDbNode &&
here->B3SOIDDtempNode = 0;
if (here->B3SOIDDbNode > 0 &&
here->B3SOIDDbNode != here->B3SOIDDbNodeExt &&
here->B3SOIDDbNode != here->B3SOIDDpNodeExt)
{
CKTdltNNum(ckt, here->B3SOIDDbNode);
here->B3SOIDDbNode = 0;
}
here->B3SOIDDbNode = 0;
here->B3SOIDDpNode = 0;
if (here->B3SOIDDsNodePrime
if (here->B3SOIDDsNodePrime > 0
&& here->B3SOIDDsNodePrime != here->B3SOIDDsNode)
{
CKTdltNNum(ckt, here->B3SOIDDsNodePrime);
here->B3SOIDDsNodePrime = 0;
}
if (here->B3SOIDDdNodePrime
here->B3SOIDDsNodePrime = 0;
if (here->B3SOIDDdNodePrime > 0
&& here->B3SOIDDdNodePrime != here->B3SOIDDdNode)
{
CKTdltNNum(ckt, here->B3SOIDDdNodePrime);
here->B3SOIDDdNodePrime = 0;
}
here->B3SOIDDdNodePrime = 0;
}
}
return OK;

View File

@ -1352,251 +1352,203 @@ B3SOIFDunsetup(GENmodel *inModel, CKTcircuit *ckt)
here=here->B3SOIFDnextInstance)
{
/* here for debugging purpose only */
if (here->B3SOIFDdum5Node)
{
if (here->B3SOIFDdum5Node > 0)
CKTdltNNum(ckt, here->B3SOIFDdum5Node);
here->B3SOIFDdum5Node = 0;
}
if (here->B3SOIFDdum4Node)
{
CKTdltNNum(ckt, here->B3SOIFDdum4Node);
here->B3SOIFDdum4Node = 0;
}
if (here->B3SOIFDdum3Node)
{
CKTdltNNum(ckt, here->B3SOIFDdum3Node);
here->B3SOIFDdum3Node = 0;
}
if (here->B3SOIFDdum2Node)
{
CKTdltNNum(ckt, here->B3SOIFDdum2Node);
here->B3SOIFDdum2Node = 0;
}
if (here->B3SOIFDdum1Node)
{
CKTdltNNum(ckt, here->B3SOIFDdum1Node);
here->B3SOIFDdum1Node = 0;
}
if (here->B3SOIFDcbeNode)
{
CKTdltNNum(ckt, here->B3SOIFDcbeNode);
here->B3SOIFDcbeNode = 0;
}
if (here->B3SOIFDvcscvNode)
{
CKTdltNNum(ckt, here->B3SOIFDvcscvNode);
here->B3SOIFDvcscvNode = 0;
}
if (here->B3SOIFDvdscvNode)
{
CKTdltNNum(ckt, here->B3SOIFDvdscvNode);
here->B3SOIFDvdscvNode = 0;
}
if (here->B3SOIFDqgNode)
{
CKTdltNNum(ckt, here->B3SOIFDqgNode);
here->B3SOIFDqgNode = 0;
}
if (here->B3SOIFDqdNode)
{
CKTdltNNum(ckt, here->B3SOIFDqdNode);
here->B3SOIFDqdNode = 0;
}
if (here->B3SOIFDqeNode)
{
CKTdltNNum(ckt, here->B3SOIFDqeNode);
here->B3SOIFDqeNode = 0;
}
if (here->B3SOIFDqsubs2Node)
{
CKTdltNNum(ckt, here->B3SOIFDqsubs2Node);
here->B3SOIFDqsubs2Node = 0;
}
if (here->B3SOIFDqsubs1Node)
{
CKTdltNNum(ckt, here->B3SOIFDqsubs1Node);
here->B3SOIFDqsubs1Node = 0;
}
if (here->B3SOIFDqsub0Node)
{
CKTdltNNum(ckt, here->B3SOIFDqsub0Node);
here->B3SOIFDqsub0Node = 0;
}
if (here->B3SOIFDqaccNode)
{
CKTdltNNum(ckt, here->B3SOIFDqaccNode);
here->B3SOIFDqaccNode = 0;
}
if (here->B3SOIFDxcsatNode)
{
CKTdltNNum(ckt, here->B3SOIFDxcsatNode);
here->B3SOIFDxcsatNode = 0;
}
if (here->B3SOIFDvgsteffNode)
{
CKTdltNNum(ckt, here->B3SOIFDvgsteffNode);
here->B3SOIFDvgsteffNode = 0;
}
if (here->B3SOIFDvthNode)
{
CKTdltNNum(ckt, here->B3SOIFDvthNode);
here->B3SOIFDvthNode = 0;
}
if (here->B3SOIFDvbs0teffNode)
{
CKTdltNNum(ckt, here->B3SOIFDvbs0teffNode);
here->B3SOIFDvbs0teffNode = 0;
}
if (here->B3SOIFDgmeNode)
{
CKTdltNNum(ckt, here->B3SOIFDgmeNode);
here->B3SOIFDgmeNode = 0;
}
if (here->B3SOIFDgdsNode)
{
CKTdltNNum(ckt, here->B3SOIFDgdsNode);
here->B3SOIFDgdsNode = 0;
}
if (here->B3SOIFDgmbsNode)
{
CKTdltNNum(ckt, here->B3SOIFDgmbsNode);
here->B3SOIFDgmbsNode = 0;
}
if (here->B3SOIFDgmNode)
{
CKTdltNNum(ckt, here->B3SOIFDgmNode);
here->B3SOIFDgmNode = 0;
}
if (here->B3SOIFDqjdNode)
{
CKTdltNNum(ckt, here->B3SOIFDqjdNode);
here->B3SOIFDqjdNode = 0;
}
if (here->B3SOIFDqjsNode)
{
CKTdltNNum(ckt, here->B3SOIFDqjsNode);
here->B3SOIFDqjsNode = 0;
}
if (here->B3SOIFDqbfNode)
{
CKTdltNNum(ckt, here->B3SOIFDqbfNode);
here->B3SOIFDqbfNode = 0;
}
if (here->B3SOIFDqbNode)
{
CKTdltNNum(ckt, here->B3SOIFDqbNode);
here->B3SOIFDqbNode = 0;
}
if (here->B3SOIFDcbgNode)
{
CKTdltNNum(ckt, here->B3SOIFDcbgNode);
here->B3SOIFDcbgNode = 0;
}
if (here->B3SOIFDcbdNode)
{
CKTdltNNum(ckt, here->B3SOIFDcbdNode);
here->B3SOIFDcbdNode = 0;
}
if (here->B3SOIFDcbbNode)
{
CKTdltNNum(ckt, here->B3SOIFDcbbNode);
here->B3SOIFDcbbNode = 0;
}
if (here->B3SOIFDxcNode)
{
CKTdltNNum(ckt, here->B3SOIFDxcNode);
here->B3SOIFDxcNode = 0;
}
if (here->B3SOIFDvbseffNode)
{
CKTdltNNum(ckt, here->B3SOIFDvbseffNode);
here->B3SOIFDvbseffNode = 0;
}
if (here->B3SOIFDvbs0effNode)
{
CKTdltNNum(ckt, here->B3SOIFDvbs0effNode);
here->B3SOIFDvbs0effNode = 0;
}
if (here->B3SOIFDabeffNode)
{
CKTdltNNum(ckt, here->B3SOIFDabeffNode);
here->B3SOIFDabeffNode = 0;
}
if (here->B3SOIFDibpNode)
{
CKTdltNNum(ckt, here->B3SOIFDibpNode);
here->B3SOIFDibpNode = 0;
}
if (here->B3SOIFDitunNode)
{
CKTdltNNum(ckt, here->B3SOIFDitunNode);
here->B3SOIFDitunNode = 0;
}
if (here->B3SOIFDigidlNode)
{
CKTdltNNum(ckt, here->B3SOIFDigidlNode);
here->B3SOIFDigidlNode = 0;
}
if (here->B3SOIFDiiiNode)
{
CKTdltNNum(ckt, here->B3SOIFDiiiNode);
here->B3SOIFDiiiNode = 0;
}
if (here->B3SOIFDibdNode)
{
CKTdltNNum(ckt, here->B3SOIFDibdNode);
here->B3SOIFDibdNode = 0;
}
if (here->B3SOIFDibsNode)
{
CKTdltNNum(ckt, here->B3SOIFDibsNode);
here->B3SOIFDibsNode = 0;
}
if (here->B3SOIFDicNode)
{
CKTdltNNum(ckt, here->B3SOIFDicNode);
here->B3SOIFDicNode = 0;
}
if (here->B3SOIFDidsNode)
{
CKTdltNNum(ckt, here->B3SOIFDidsNode);
here->B3SOIFDidsNode = 0;
}
if (here->B3SOIFDvbsNode)
{
CKTdltNNum(ckt, here->B3SOIFDvbsNode);
here->B3SOIFDvbsNode = 0;
}
here->B3SOIFDdum5Node = 0;
if (here->B3SOIFDtempNode &&
if (here->B3SOIFDdum4Node > 0)
CKTdltNNum(ckt, here->B3SOIFDdum4Node);
here->B3SOIFDdum4Node = 0;
if (here->B3SOIFDdum3Node > 0)
CKTdltNNum(ckt, here->B3SOIFDdum3Node);
here->B3SOIFDdum3Node = 0;
if (here->B3SOIFDdum2Node > 0)
CKTdltNNum(ckt, here->B3SOIFDdum2Node);
here->B3SOIFDdum2Node = 0;
if (here->B3SOIFDdum1Node > 0)
CKTdltNNum(ckt, here->B3SOIFDdum1Node);
here->B3SOIFDdum1Node = 0;
if (here->B3SOIFDcbeNode > 0)
CKTdltNNum(ckt, here->B3SOIFDcbeNode);
here->B3SOIFDcbeNode = 0;
if (here->B3SOIFDvcscvNode > 0)
CKTdltNNum(ckt, here->B3SOIFDvcscvNode);
here->B3SOIFDvcscvNode = 0;
if (here->B3SOIFDvdscvNode > 0)
CKTdltNNum(ckt, here->B3SOIFDvdscvNode);
here->B3SOIFDvdscvNode = 0;
if (here->B3SOIFDqgNode > 0)
CKTdltNNum(ckt, here->B3SOIFDqgNode);
here->B3SOIFDqgNode = 0;
if (here->B3SOIFDqdNode > 0)
CKTdltNNum(ckt, here->B3SOIFDqdNode);
here->B3SOIFDqdNode = 0;
if (here->B3SOIFDqeNode > 0)
CKTdltNNum(ckt, here->B3SOIFDqeNode);
here->B3SOIFDqeNode = 0;
if (here->B3SOIFDqsubs2Node > 0)
CKTdltNNum(ckt, here->B3SOIFDqsubs2Node);
here->B3SOIFDqsubs2Node = 0;
if (here->B3SOIFDqsubs1Node > 0)
CKTdltNNum(ckt, here->B3SOIFDqsubs1Node);
here->B3SOIFDqsubs1Node = 0;
if (here->B3SOIFDqsub0Node > 0)
CKTdltNNum(ckt, here->B3SOIFDqsub0Node);
here->B3SOIFDqsub0Node = 0;
if (here->B3SOIFDqaccNode > 0)
CKTdltNNum(ckt, here->B3SOIFDqaccNode);
here->B3SOIFDqaccNode = 0;
if (here->B3SOIFDxcsatNode > 0)
CKTdltNNum(ckt, here->B3SOIFDxcsatNode);
here->B3SOIFDxcsatNode = 0;
if (here->B3SOIFDvgsteffNode > 0)
CKTdltNNum(ckt, here->B3SOIFDvgsteffNode);
here->B3SOIFDvgsteffNode = 0;
if (here->B3SOIFDvthNode > 0)
CKTdltNNum(ckt, here->B3SOIFDvthNode);
here->B3SOIFDvthNode = 0;
if (here->B3SOIFDvbs0teffNode > 0)
CKTdltNNum(ckt, here->B3SOIFDvbs0teffNode);
here->B3SOIFDvbs0teffNode = 0;
if (here->B3SOIFDgmeNode > 0)
CKTdltNNum(ckt, here->B3SOIFDgmeNode);
here->B3SOIFDgmeNode = 0;
if (here->B3SOIFDgdsNode > 0)
CKTdltNNum(ckt, here->B3SOIFDgdsNode);
here->B3SOIFDgdsNode = 0;
if (here->B3SOIFDgmbsNode > 0)
CKTdltNNum(ckt, here->B3SOIFDgmbsNode);
here->B3SOIFDgmbsNode = 0;
if (here->B3SOIFDgmNode > 0)
CKTdltNNum(ckt, here->B3SOIFDgmNode);
here->B3SOIFDgmNode = 0;
if (here->B3SOIFDqjdNode > 0)
CKTdltNNum(ckt, here->B3SOIFDqjdNode);
here->B3SOIFDqjdNode = 0;
if (here->B3SOIFDqjsNode > 0)
CKTdltNNum(ckt, here->B3SOIFDqjsNode);
here->B3SOIFDqjsNode = 0;
if (here->B3SOIFDqbfNode > 0)
CKTdltNNum(ckt, here->B3SOIFDqbfNode);
here->B3SOIFDqbfNode = 0;
if (here->B3SOIFDqbNode > 0)
CKTdltNNum(ckt, here->B3SOIFDqbNode);
here->B3SOIFDqbNode = 0;
if (here->B3SOIFDcbgNode > 0)
CKTdltNNum(ckt, here->B3SOIFDcbgNode);
here->B3SOIFDcbgNode = 0;
if (here->B3SOIFDcbdNode > 0)
CKTdltNNum(ckt, here->B3SOIFDcbdNode);
here->B3SOIFDcbdNode = 0;
if (here->B3SOIFDcbbNode > 0)
CKTdltNNum(ckt, here->B3SOIFDcbbNode);
here->B3SOIFDcbbNode = 0;
if (here->B3SOIFDxcNode > 0)
CKTdltNNum(ckt, here->B3SOIFDxcNode);
here->B3SOIFDxcNode = 0;
if (here->B3SOIFDvbseffNode > 0)
CKTdltNNum(ckt, here->B3SOIFDvbseffNode);
here->B3SOIFDvbseffNode = 0;
if (here->B3SOIFDvbs0effNode > 0)
CKTdltNNum(ckt, here->B3SOIFDvbs0effNode);
here->B3SOIFDvbs0effNode = 0;
if (here->B3SOIFDabeffNode > 0)
CKTdltNNum(ckt, here->B3SOIFDabeffNode);
here->B3SOIFDabeffNode = 0;
if (here->B3SOIFDibpNode > 0)
CKTdltNNum(ckt, here->B3SOIFDibpNode);
here->B3SOIFDibpNode = 0;
if (here->B3SOIFDitunNode > 0)
CKTdltNNum(ckt, here->B3SOIFDitunNode);
here->B3SOIFDitunNode = 0;
if (here->B3SOIFDigidlNode > 0)
CKTdltNNum(ckt, here->B3SOIFDigidlNode);
here->B3SOIFDigidlNode = 0;
if (here->B3SOIFDiiiNode > 0)
CKTdltNNum(ckt, here->B3SOIFDiiiNode);
here->B3SOIFDiiiNode = 0;
if (here->B3SOIFDibdNode > 0)
CKTdltNNum(ckt, here->B3SOIFDibdNode);
here->B3SOIFDibdNode = 0;
if (here->B3SOIFDibsNode > 0)
CKTdltNNum(ckt, here->B3SOIFDibsNode);
here->B3SOIFDibsNode = 0;
if (here->B3SOIFDicNode > 0)
CKTdltNNum(ckt, here->B3SOIFDicNode);
here->B3SOIFDicNode = 0;
if (here->B3SOIFDidsNode > 0)
CKTdltNNum(ckt, here->B3SOIFDidsNode);
here->B3SOIFDidsNode = 0;
if (here->B3SOIFDvbsNode > 0)
CKTdltNNum(ckt, here->B3SOIFDvbsNode);
here->B3SOIFDvbsNode = 0;
if (here->B3SOIFDtempNode > 0 &&
here->B3SOIFDtempNode != here->B3SOIFDtempNodeExt &&
here->B3SOIFDtempNode != here->B3SOIFDbNodeExt &&
here->B3SOIFDtempNode != here->B3SOIFDpNodeExt)
{
CKTdltNNum(ckt, here->B3SOIFDtempNode);
here->B3SOIFDtempNode = 0;
}
if (here->B3SOIFDbNode &&
here->B3SOIFDtempNode = 0;
if (here->B3SOIFDbNode > 0 &&
here->B3SOIFDbNode != here->B3SOIFDbNodeExt &&
here->B3SOIFDbNode != here->B3SOIFDpNodeExt)
{
CKTdltNNum(ckt, here->B3SOIFDbNode);
here->B3SOIFDbNode = 0;
}
here->B3SOIFDbNode = 0;
here->B3SOIFDpNode = 0;
if (here->B3SOIFDsNodePrime
if (here->B3SOIFDsNodePrime > 0
&& here->B3SOIFDsNodePrime != here->B3SOIFDsNode)
{
CKTdltNNum(ckt, here->B3SOIFDsNodePrime);
here->B3SOIFDsNodePrime = 0;
}
if (here->B3SOIFDdNodePrime
here->B3SOIFDsNodePrime = 0;
if (here->B3SOIFDdNodePrime > 0
&& here->B3SOIFDdNodePrime != here->B3SOIFDdNode)
{
CKTdltNNum(ckt, here->B3SOIFDdNodePrime);
here->B3SOIFDdNodePrime = 0;
}
here->B3SOIFDdNodePrime = 0;
}
}
return OK;

View File

@ -1467,131 +1467,107 @@ B3SOIPDunsetup(
here=here->B3SOIPDnextInstance)
{
/* here for debugging purpose only */
if (here->B3SOIPDqjdNode)
{
if (here->B3SOIPDqjdNode > 0)
CKTdltNNum(ckt, here->B3SOIPDqjdNode);
here->B3SOIPDqjdNode = 0;
}
if (here->B3SOIPDqjsNode)
{
CKTdltNNum(ckt, here->B3SOIPDqjsNode);
here->B3SOIPDqjsNode = 0;
}
if (here->B3SOIPDqbfNode)
{
CKTdltNNum(ckt, here->B3SOIPDqbfNode);
here->B3SOIPDqbfNode = 0;
}
if (here->B3SOIPDcbgNode)
{
CKTdltNNum(ckt, here->B3SOIPDcbgNode);
here->B3SOIPDcbgNode = 0;
}
if (here->B3SOIPDcbdNode)
{
CKTdltNNum(ckt, here->B3SOIPDcbdNode);
here->B3SOIPDcbdNode = 0;
}
if (here->B3SOIPDcbbNode)
{
CKTdltNNum(ckt, here->B3SOIPDcbbNode);
here->B3SOIPDcbbNode = 0;
}
if (here->B3SOIPDibpNode)
{
CKTdltNNum(ckt, here->B3SOIPDibpNode);
here->B3SOIPDibpNode = 0;
}
if (here->B3SOIPDitunNode)
{
CKTdltNNum(ckt, here->B3SOIPDitunNode);
here->B3SOIPDitunNode = 0;
}
if (here->B3SOIPDigidlNode)
{
CKTdltNNum(ckt, here->B3SOIPDigidlNode);
here->B3SOIPDigidlNode = 0;
}
if (here->B3SOIPDgigbNode)
{
CKTdltNNum(ckt, here->B3SOIPDgigbNode);
here->B3SOIPDgigbNode = 0;
}
if (here->B3SOIPDgigdNode)
{
CKTdltNNum(ckt, here->B3SOIPDgigdNode);
here->B3SOIPDgigdNode = 0;
}
if (here->B3SOIPDgiggNode)
{
CKTdltNNum(ckt, here->B3SOIPDgiggNode);
here->B3SOIPDgiggNode = 0;
}
if (here->B3SOIPDigNode)
{
CKTdltNNum(ckt, here->B3SOIPDigNode);
here->B3SOIPDigNode = 0;
}
if (here->B3SOIPDiiiNode)
{
CKTdltNNum(ckt, here->B3SOIPDiiiNode);
here->B3SOIPDiiiNode = 0;
}
if (here->B3SOIPDibdNode)
{
CKTdltNNum(ckt, here->B3SOIPDibdNode);
here->B3SOIPDibdNode = 0;
}
if (here->B3SOIPDibsNode)
{
CKTdltNNum(ckt, here->B3SOIPDibsNode);
here->B3SOIPDibsNode = 0;
}
if (here->B3SOIPDicNode)
{
CKTdltNNum(ckt, here->B3SOIPDicNode);
here->B3SOIPDicNode = 0;
}
if (here->B3SOIPDidsNode)
{
CKTdltNNum(ckt, here->B3SOIPDidsNode);
here->B3SOIPDidsNode = 0;
}
if (here->B3SOIPDvbsNode)
{
CKTdltNNum(ckt, here->B3SOIPDvbsNode);
here->B3SOIPDvbsNode = 0;
}
here->B3SOIPDqjdNode = 0;
if (here->B3SOIPDtempNode &&
if (here->B3SOIPDqjsNode > 0)
CKTdltNNum(ckt, here->B3SOIPDqjsNode);
here->B3SOIPDqjsNode = 0;
if (here->B3SOIPDqbfNode > 0)
CKTdltNNum(ckt, here->B3SOIPDqbfNode);
here->B3SOIPDqbfNode = 0;
if (here->B3SOIPDcbgNode > 0)
CKTdltNNum(ckt, here->B3SOIPDcbgNode);
here->B3SOIPDcbgNode = 0;
if (here->B3SOIPDcbdNode > 0)
CKTdltNNum(ckt, here->B3SOIPDcbdNode);
here->B3SOIPDcbdNode = 0;
if (here->B3SOIPDcbbNode > 0)
CKTdltNNum(ckt, here->B3SOIPDcbbNode);
here->B3SOIPDcbbNode = 0;
if (here->B3SOIPDibpNode > 0)
CKTdltNNum(ckt, here->B3SOIPDibpNode);
here->B3SOIPDibpNode = 0;
if (here->B3SOIPDitunNode > 0)
CKTdltNNum(ckt, here->B3SOIPDitunNode);
here->B3SOIPDitunNode = 0;
if (here->B3SOIPDigidlNode > 0)
CKTdltNNum(ckt, here->B3SOIPDigidlNode);
here->B3SOIPDigidlNode = 0;
if (here->B3SOIPDgigbNode > 0)
CKTdltNNum(ckt, here->B3SOIPDgigbNode);
here->B3SOIPDgigbNode = 0;
if (here->B3SOIPDgigdNode > 0)
CKTdltNNum(ckt, here->B3SOIPDgigdNode);
here->B3SOIPDgigdNode = 0;
if (here->B3SOIPDgiggNode > 0)
CKTdltNNum(ckt, here->B3SOIPDgiggNode);
here->B3SOIPDgiggNode = 0;
if (here->B3SOIPDigNode > 0)
CKTdltNNum(ckt, here->B3SOIPDigNode);
here->B3SOIPDigNode = 0;
if (here->B3SOIPDiiiNode > 0)
CKTdltNNum(ckt, here->B3SOIPDiiiNode);
here->B3SOIPDiiiNode = 0;
if (here->B3SOIPDibdNode > 0)
CKTdltNNum(ckt, here->B3SOIPDibdNode);
here->B3SOIPDibdNode = 0;
if (here->B3SOIPDibsNode > 0)
CKTdltNNum(ckt, here->B3SOIPDibsNode);
here->B3SOIPDibsNode = 0;
if (here->B3SOIPDicNode > 0)
CKTdltNNum(ckt, here->B3SOIPDicNode);
here->B3SOIPDicNode = 0;
if (here->B3SOIPDidsNode > 0)
CKTdltNNum(ckt, here->B3SOIPDidsNode);
here->B3SOIPDidsNode = 0;
if (here->B3SOIPDvbsNode > 0)
CKTdltNNum(ckt, here->B3SOIPDvbsNode);
here->B3SOIPDvbsNode = 0;
if (here->B3SOIPDtempNode > 0 &&
here->B3SOIPDtempNode != here->B3SOIPDtempNodeExt &&
here->B3SOIPDtempNode != here->B3SOIPDbNodeExt &&
here->B3SOIPDtempNode != here->B3SOIPDpNodeExt)
{
CKTdltNNum(ckt, here->B3SOIPDtempNode);
here->B3SOIPDtempNode = 0;
}
if (here->B3SOIPDbNode &&
here->B3SOIPDtempNode = 0;
if (here->B3SOIPDbNode > 0 &&
here->B3SOIPDbNode != here->B3SOIPDbNodeExt &&
here->B3SOIPDbNode != here->B3SOIPDpNodeExt)
{
CKTdltNNum(ckt, here->B3SOIPDbNode);
here->B3SOIPDbNode = 0;
}
here->B3SOIPDbNode = 0;
here->B3SOIPDpNode = 0;
if (here->B3SOIPDsNodePrime
if (here->B3SOIPDsNodePrime > 0
&& here->B3SOIPDsNodePrime != here->B3SOIPDsNode)
{
CKTdltNNum(ckt, here->B3SOIPDsNodePrime);
here->B3SOIPDsNodePrime = 0;
}
if (here->B3SOIPDdNodePrime
here->B3SOIPDsNodePrime = 0;
if (here->B3SOIPDdNodePrime > 0
&& here->B3SOIPDdNodePrime != here->B3SOIPDdNode)
{
CKTdltNNum(ckt, here->B3SOIPDdNodePrime);
here->B3SOIPDdNodePrime = 0;
}
here->B3SOIPDdNodePrime = 0;
}
}
return OK;

View File

@ -904,23 +904,19 @@ BSIM3v0unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->BSIM3v0instances; here != NULL;
here=here->BSIM3v0nextInstance)
{
if (here->BSIM3v0qNode)
{
if (here->BSIM3v0qNode > 0)
CKTdltNNum(ckt, here->BSIM3v0qNode);
here->BSIM3v0qNode = 0;
}
if (here->BSIM3v0sNodePrime
here->BSIM3v0qNode = 0;
if (here->BSIM3v0sNodePrime > 0
&& here->BSIM3v0sNodePrime != here->BSIM3v0sNode)
{
CKTdltNNum(ckt, here->BSIM3v0sNodePrime);
here->BSIM3v0sNodePrime = 0;
}
if (here->BSIM3v0dNodePrime
here->BSIM3v0sNodePrime = 0;
if (here->BSIM3v0dNodePrime > 0
&& here->BSIM3v0dNodePrime != here->BSIM3v0dNode)
{
CKTdltNNum(ckt, here->BSIM3v0dNodePrime);
here->BSIM3v0dNodePrime = 0;
}
here->BSIM3v0dNodePrime = 0;
}
}
return OK;

View File

@ -964,23 +964,19 @@ BSIM3v1unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->BSIM3v1instances; here != NULL;
here=here->BSIM3v1nextInstance)
{
if (here->BSIM3v1qNode)
{
if (here->BSIM3v1qNode > 0)
CKTdltNNum(ckt, here->BSIM3v1qNode);
here->BSIM3v1qNode = 0;
}
if (here->BSIM3v1sNodePrime
here->BSIM3v1qNode = 0;
if (here->BSIM3v1sNodePrime > 0
&& here->BSIM3v1sNodePrime != here->BSIM3v1sNode)
{
CKTdltNNum(ckt, here->BSIM3v1sNodePrime);
here->BSIM3v1sNodePrime = 0;
}
if (here->BSIM3v1dNodePrime
here->BSIM3v1sNodePrime = 0;
if (here->BSIM3v1dNodePrime > 0
&& here->BSIM3v1dNodePrime != here->BSIM3v1dNode)
{
CKTdltNNum(ckt, here->BSIM3v1dNodePrime);
here->BSIM3v1dNodePrime = 0;
}
here->BSIM3v1dNodePrime = 0;
}
}
return OK;

View File

@ -1156,23 +1156,19 @@ BSIM3v32unsetup(
for (here = model->BSIM3v32instances; here != NULL;
here=here->BSIM3v32nextInstance)
{
if (here->BSIM3v32qNode)
{
if (here->BSIM3v32qNode > 0)
CKTdltNNum(ckt, here->BSIM3v32qNode);
here->BSIM3v32qNode = 0;
}
if (here->BSIM3v32sNodePrime
here->BSIM3v32qNode = 0;
if (here->BSIM3v32sNodePrime > 0
&& here->BSIM3v32sNodePrime != here->BSIM3v32sNode)
{
CKTdltNNum(ckt, here->BSIM3v32sNodePrime);
here->BSIM3v32sNodePrime = 0;
}
if (here->BSIM3v32dNodePrime
here->BSIM3v32sNodePrime = 0;
if (here->BSIM3v32dNodePrime > 0
&& here->BSIM3v32dNodePrime != here->BSIM3v32dNode)
{
CKTdltNNum(ckt, here->BSIM3v32dNodePrime);
here->BSIM3v32dNodePrime = 0;
}
here->BSIM3v32dNodePrime = 0;
}
}
return OK;

View File

@ -2765,53 +2765,44 @@ CKTcircuit *ckt)
for (here = model->BSIM4instances; here != NULL;
here=here->BSIM4nextInstance)
{
if (here->BSIM4qNode)
{
if (here->BSIM4qNode > 0)
CKTdltNNum(ckt, here->BSIM4qNode);
here->BSIM4qNode = 0;
}
if (here->BSIM4sbNode &&
here->BSIM4qNode = 0;
if (here->BSIM4sbNode > 0 &&
here->BSIM4sbNode != here->BSIM4bNode)
{
CKTdltNNum(ckt, here->BSIM4sbNode);
here->BSIM4sbNode = 0;
}
if (here->BSIM4bNodePrime &&
here->BSIM4sbNode = 0;
if (here->BSIM4bNodePrime > 0 &&
here->BSIM4bNodePrime != here->BSIM4bNode)
{
CKTdltNNum(ckt, here->BSIM4bNodePrime);
here->BSIM4bNodePrime = 0;
}
if (here->BSIM4dbNode &&
here->BSIM4bNodePrime = 0;
if (here->BSIM4dbNode > 0 &&
here->BSIM4dbNode != here->BSIM4bNode)
{
CKTdltNNum(ckt, here->BSIM4dbNode);
here->BSIM4dbNode = 0;
}
if (here->BSIM4gNodeMid &&
here->BSIM4dbNode = 0;
if (here->BSIM4gNodeMid > 0 &&
here->BSIM4gNodeMid != here->BSIM4gNodeExt)
{
CKTdltNNum(ckt, here->BSIM4gNodeMid);
here->BSIM4gNodeMid = 0;
}
if (here->BSIM4gNodePrime &&
here->BSIM4gNodeMid = 0;
if (here->BSIM4gNodePrime > 0 &&
here->BSIM4gNodePrime != here->BSIM4gNodeExt)
{
CKTdltNNum(ckt, here->BSIM4gNodePrime);
here->BSIM4gNodePrime = 0;
}
if (here->BSIM4sNodePrime
here->BSIM4gNodePrime = 0;
if (here->BSIM4sNodePrime > 0
&& here->BSIM4sNodePrime != here->BSIM4sNode)
{
CKTdltNNum(ckt, here->BSIM4sNodePrime);
here->BSIM4sNodePrime = 0;
}
if (here->BSIM4dNodePrime
here->BSIM4sNodePrime = 0;
if (here->BSIM4dNodePrime > 0
&& here->BSIM4dNodePrime != here->BSIM4dNode)
{
CKTdltNNum(ckt, here->BSIM4dNodePrime);
here->BSIM4dNodePrime = 0;
}
here->BSIM4dNodePrime = 0;
}
}
#endif

View File

@ -2143,53 +2143,44 @@ BSIM4v5unsetup(
for (here = model->BSIM4v5instances; here != NULL;
here=here->BSIM4v5nextInstance)
{
if (here->BSIM4v5qNode)
{
if (here->BSIM4v5qNode > 0)
CKTdltNNum(ckt, here->BSIM4v5qNode);
here->BSIM4v5qNode = 0;
}
if (here->BSIM4v5sbNode &&
here->BSIM4v5qNode = 0;
if (here->BSIM4v5sbNode > 0 &&
here->BSIM4v5sbNode != here->BSIM4v5bNode)
{
CKTdltNNum(ckt, here->BSIM4v5sbNode);
here->BSIM4v5sbNode = 0;
}
if (here->BSIM4v5bNodePrime &&
here->BSIM4v5sbNode = 0;
if (here->BSIM4v5bNodePrime > 0 &&
here->BSIM4v5bNodePrime != here->BSIM4v5bNode)
{
CKTdltNNum(ckt, here->BSIM4v5bNodePrime);
here->BSIM4v5bNodePrime = 0;
}
if (here->BSIM4v5dbNode &&
here->BSIM4v5bNodePrime = 0;
if (here->BSIM4v5dbNode > 0 &&
here->BSIM4v5dbNode != here->BSIM4v5bNode)
{
CKTdltNNum(ckt, here->BSIM4v5dbNode);
here->BSIM4v5dbNode = 0;
}
if (here->BSIM4v5gNodeMid &&
here->BSIM4v5dbNode = 0;
if (here->BSIM4v5gNodeMid > 0 &&
here->BSIM4v5gNodeMid != here->BSIM4v5gNodeExt)
{
CKTdltNNum(ckt, here->BSIM4v5gNodeMid);
here->BSIM4v5gNodeMid = 0;
}
if (here->BSIM4v5gNodePrime &&
here->BSIM4v5gNodeMid = 0;
if (here->BSIM4v5gNodePrime > 0 &&
here->BSIM4v5gNodePrime != here->BSIM4v5gNodeExt)
{
CKTdltNNum(ckt, here->BSIM4v5gNodePrime);
here->BSIM4v5gNodePrime = 0;
}
if (here->BSIM4v5sNodePrime
here->BSIM4v5gNodePrime = 0;
if (here->BSIM4v5sNodePrime > 0
&& here->BSIM4v5sNodePrime != here->BSIM4v5sNode)
{
CKTdltNNum(ckt, here->BSIM4v5sNodePrime);
here->BSIM4v5sNodePrime = 0;
}
if (here->BSIM4v5dNodePrime
here->BSIM4v5sNodePrime = 0;
if (here->BSIM4v5dNodePrime > 0
&& here->BSIM4v5dNodePrime != here->BSIM4v5dNode)
{
CKTdltNNum(ckt, here->BSIM4v5dNodePrime);
here->BSIM4v5dNodePrime = 0;
}
here->BSIM4v5dNodePrime = 0;
}
}
#endif

View File

@ -2476,53 +2476,44 @@ BSIM4v6unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->BSIM4v6instances; here != NULL;
here=here->BSIM4v6nextInstance)
{
if (here->BSIM4v6qNode)
{
if (here->BSIM4v6qNode > 0)
CKTdltNNum(ckt, here->BSIM4v6qNode);
here->BSIM4v6qNode = 0;
}
if (here->BSIM4v6sbNode &&
here->BSIM4v6qNode = 0;
if (here->BSIM4v6sbNode > 0 &&
here->BSIM4v6sbNode != here->BSIM4v6bNode)
{
CKTdltNNum(ckt, here->BSIM4v6sbNode);
here->BSIM4v6sbNode = 0;
}
if (here->BSIM4v6bNodePrime &&
here->BSIM4v6sbNode = 0;
if (here->BSIM4v6bNodePrime > 0 &&
here->BSIM4v6bNodePrime != here->BSIM4v6bNode)
{
CKTdltNNum(ckt, here->BSIM4v6bNodePrime);
here->BSIM4v6bNodePrime = 0;
}
if (here->BSIM4v6dbNode &&
here->BSIM4v6bNodePrime = 0;
if (here->BSIM4v6dbNode > 0 &&
here->BSIM4v6dbNode != here->BSIM4v6bNode)
{
CKTdltNNum(ckt, here->BSIM4v6dbNode);
here->BSIM4v6dbNode = 0;
}
if (here->BSIM4v6gNodeMid &&
here->BSIM4v6dbNode = 0;
if (here->BSIM4v6gNodeMid > 0 &&
here->BSIM4v6gNodeMid != here->BSIM4v6gNodeExt)
{
CKTdltNNum(ckt, here->BSIM4v6gNodeMid);
here->BSIM4v6gNodeMid = 0;
}
if (here->BSIM4v6gNodePrime &&
here->BSIM4v6gNodeMid = 0;
if (here->BSIM4v6gNodePrime > 0 &&
here->BSIM4v6gNodePrime != here->BSIM4v6gNodeExt)
{
CKTdltNNum(ckt, here->BSIM4v6gNodePrime);
here->BSIM4v6gNodePrime = 0;
}
if (here->BSIM4v6sNodePrime
here->BSIM4v6gNodePrime = 0;
if (here->BSIM4v6sNodePrime > 0
&& here->BSIM4v6sNodePrime != here->BSIM4v6sNode)
{
CKTdltNNum(ckt, here->BSIM4v6sNodePrime);
here->BSIM4v6sNodePrime = 0;
}
if (here->BSIM4v6dNodePrime
here->BSIM4v6sNodePrime = 0;
if (here->BSIM4v6dNodePrime > 0
&& here->BSIM4v6dNodePrime != here->BSIM4v6dNode)
{
CKTdltNNum(ckt, here->BSIM4v6dNodePrime);
here->BSIM4v6dNodePrime = 0;
}
here->BSIM4v6dNodePrime = 0;
}
}
#endif

View File

@ -2633,53 +2633,45 @@ CKTcircuit *ckt)
for (here = model->BSIM4v7instances; here != NULL;
here=here->BSIM4v7nextInstance)
{
if (here->BSIM4v7qNode)
{
if (here->BSIM4v7qNode > 0)
CKTdltNNum(ckt, here->BSIM4v7qNode);
here->BSIM4v7qNode = 0;
}
if (here->BSIM4v7sbNode &&
here->BSIM4v7qNode = 0;
if (here->BSIM4v7sbNode > 0 &&
here->BSIM4v7sbNode != here->BSIM4v7bNode)
{
CKTdltNNum(ckt, here->BSIM4v7sbNode);
here->BSIM4v7sbNode = 0;
}
if (here->BSIM4v7bNodePrime &&
here->BSIM4v7sbNode = 0;
if (here->BSIM4v7bNodePrime > 0 &&
here->BSIM4v7bNodePrime != here->BSIM4v7bNode)
{
CKTdltNNum(ckt, here->BSIM4v7bNodePrime);
here->BSIM4v7bNodePrime = 0;
}
if (here->BSIM4v7dbNode &&
here->BSIM4v7bNodePrime = 0;
if (here->BSIM4v7dbNode > 0 &&
here->BSIM4v7dbNode != here->BSIM4v7bNode)
{
CKTdltNNum(ckt, here->BSIM4v7dbNode);
here->BSIM4v7dbNode = 0;
}
if (here->BSIM4v7gNodeMid &&
here->BSIM4v7dbNode = 0;
if (here->BSIM4v7gNodeMid > 0 &&
here->BSIM4v7gNodeMid != here->BSIM4v7gNodeExt)
{
CKTdltNNum(ckt, here->BSIM4v7gNodeMid);
here->BSIM4v7gNodeMid = 0;
}
if (here->BSIM4v7gNodePrime &&
here->BSIM4v7gNodeMid = 0;
if (here->BSIM4v7gNodePrime > 0 &&
here->BSIM4v7gNodePrime != here->BSIM4v7gNodeExt)
{
CKTdltNNum(ckt, here->BSIM4v7gNodePrime);
here->BSIM4v7gNodePrime = 0;
}
if (here->BSIM4v7sNodePrime
here->BSIM4v7gNodePrime = 0;
if (here->BSIM4v7sNodePrime > 0
&& here->BSIM4v7sNodePrime != here->BSIM4v7sNode)
{
CKTdltNNum(ckt, here->BSIM4v7sNodePrime);
here->BSIM4v7sNodePrime = 0;
}
if (here->BSIM4v7dNodePrime
here->BSIM4v7sNodePrime = 0;
if (here->BSIM4v7dNodePrime > 0
&& here->BSIM4v7dNodePrime != here->BSIM4v7dNode)
{
CKTdltNNum(ckt, here->BSIM4v7dNodePrime);
here->BSIM4v7dNodePrime = 0;
}
here->BSIM4v7dNodePrime = 0;
}
}
#endif

View File

@ -2771,156 +2771,126 @@ B4SOIunsetup(
here=here->B4SOInextInstance)
{
/* here for debugging purpose only */
if (here->B4SOIqjdNode)
{
if (here->B4SOIqjdNode > 0)
CKTdltNNum(ckt, here->B4SOIqjdNode);
here->B4SOIqjdNode = 0;
}
if (here->B4SOIqjsNode)
{
here->B4SOIqjdNode = 0;
if (here->B4SOIqjsNode > 0)
CKTdltNNum(ckt, here->B4SOIqjsNode);
here->B4SOIqjsNode = 0;
}
if (here->B4SOIqbfNode)
{
here->B4SOIqjsNode = 0;
if (here->B4SOIqbfNode > 0)
CKTdltNNum(ckt, here->B4SOIqbfNode);
here->B4SOIqbfNode = 0;
}
if (here->B4SOIcbgNode)
{
here->B4SOIqbfNode = 0;
if (here->B4SOIcbgNode > 0)
CKTdltNNum(ckt, here->B4SOIcbgNode);
here->B4SOIcbgNode = 0;
}
if (here->B4SOIcbdNode)
{
here->B4SOIcbgNode = 0;
if (here->B4SOIcbdNode > 0)
CKTdltNNum(ckt, here->B4SOIcbdNode);
here->B4SOIcbdNode = 0;
}
if (here->B4SOIcbbNode)
{
here->B4SOIcbdNode = 0;
if (here->B4SOIcbbNode > 0)
CKTdltNNum(ckt, here->B4SOIcbbNode);
here->B4SOIcbbNode = 0;
}
if (here->B4SOIibpNode)
{
here->B4SOIcbbNode = 0;
if (here->B4SOIibpNode > 0)
CKTdltNNum(ckt, here->B4SOIibpNode);
here->B4SOIibpNode = 0;
}
if (here->B4SOIitunNode)
{
here->B4SOIibpNode = 0;
if (here->B4SOIitunNode > 0)
CKTdltNNum(ckt, here->B4SOIitunNode);
here->B4SOIitunNode = 0;
}
if (here->B4SOIigidlNode)
{
here->B4SOIitunNode = 0;
if (here->B4SOIigidlNode > 0)
CKTdltNNum(ckt, here->B4SOIigidlNode);
here->B4SOIigidlNode = 0;
}
if (here->B4SOIgigbNode)
{
here->B4SOIigidlNode = 0;
if (here->B4SOIgigbNode > 0)
CKTdltNNum(ckt, here->B4SOIgigbNode);
here->B4SOIgigbNode = 0;
}
if (here->B4SOIgigdNode)
{
here->B4SOIgigbNode = 0;
if (here->B4SOIgigdNode > 0)
CKTdltNNum(ckt, here->B4SOIgigdNode);
here->B4SOIgigdNode = 0;
}
if (here->B4SOIgiggNode)
{
here->B4SOIgigdNode = 0;
if (here->B4SOIgiggNode > 0)
CKTdltNNum(ckt, here->B4SOIgiggNode);
here->B4SOIgiggNode = 0;
}
if (here->B4SOIigNode)
{
here->B4SOIgiggNode = 0;
if (here->B4SOIigNode > 0)
CKTdltNNum(ckt, here->B4SOIigNode);
here->B4SOIigNode = 0;
}
if (here->B4SOIiiiNode)
{
here->B4SOIigNode = 0;
if (here->B4SOIiiiNode > 0)
CKTdltNNum(ckt, here->B4SOIiiiNode);
here->B4SOIiiiNode = 0;
}
if (here->B4SOIibdNode)
{
here->B4SOIiiiNode = 0;
if (here->B4SOIibdNode > 0)
CKTdltNNum(ckt, here->B4SOIibdNode);
here->B4SOIibdNode = 0;
}
if (here->B4SOIibsNode)
{
here->B4SOIibdNode = 0;
if (here->B4SOIibsNode > 0)
CKTdltNNum(ckt, here->B4SOIibsNode);
here->B4SOIibsNode = 0;
}
if (here->B4SOIicNode)
{
here->B4SOIibsNode = 0;
if (here->B4SOIicNode > 0)
CKTdltNNum(ckt, here->B4SOIicNode);
here->B4SOIicNode = 0;
}
if (here->B4SOIidsNode)
{
here->B4SOIicNode = 0;
if (here->B4SOIidsNode > 0)
CKTdltNNum(ckt, here->B4SOIidsNode);
here->B4SOIidsNode = 0;
}
if (here->B4SOIvbsNode)
{
here->B4SOIidsNode = 0;
if (here->B4SOIvbsNode > 0)
CKTdltNNum(ckt, here->B4SOIvbsNode);
here->B4SOIvbsNode = 0;
}
here->B4SOIvbsNode = 0;
if (here->B4SOIsbNode &&
if (here->B4SOIsbNode > 0 &&
here->B4SOIsbNode != here->B4SOIbNode)
{
CKTdltNNum(ckt, here->B4SOIsbNode);
here->B4SOIsbNode = 0;
}
if (here->B4SOIdbNode &&
here->B4SOIdbNode != here->B4SOIbNode)
{
CKTdltNNum(ckt, here->B4SOIdbNode);
here->B4SOIdbNode = 0;
}
if (here->B4SOIgNodeMid &&
here->B4SOIgNodeMid != here->B4SOIgNodeExt)
{
CKTdltNNum(ckt, here->B4SOIgNodeMid);
here->B4SOIgNodeMid = 0;
}
if (here->B4SOIgNode &&
here->B4SOIgNode != here->B4SOIgNodeExt)
{
CKTdltNNum(ckt, here->B4SOIgNode);
here->B4SOIgNode = 0;
}
here->B4SOIsbNode = 0;
if (here->B4SOItempNode &&
if (here->B4SOIdbNode > 0 &&
here->B4SOIdbNode != here->B4SOIbNode)
CKTdltNNum(ckt, here->B4SOIdbNode);
here->B4SOIdbNode = 0;
if (here->B4SOIgNodeMid > 0 &&
here->B4SOIgNodeMid != here->B4SOIgNodeExt)
CKTdltNNum(ckt, here->B4SOIgNodeMid);
here->B4SOIgNodeMid = 0;
if (here->B4SOIgNode > 0 &&
here->B4SOIgNode != here->B4SOIgNodeExt)
CKTdltNNum(ckt, here->B4SOIgNode);
here->B4SOIgNode = 0;
if (here->B4SOItempNode > 0 &&
here->B4SOItempNode != here->B4SOItempNodeExt &&
here->B4SOItempNode != here->B4SOIbNodeExt &&
here->B4SOItempNode != here->B4SOIpNodeExt)
{
CKTdltNNum(ckt, here->B4SOItempNode);
here->B4SOItempNode = 0;
}
if (here->B4SOIbNode &&
here->B4SOItempNode = 0;
if (here->B4SOIbNode > 0 &&
here->B4SOIbNode != here->B4SOIbNodeExt &&
here->B4SOIbNode != here->B4SOIpNodeExt)
{
CKTdltNNum(ckt, here->B4SOIbNode);
here->B4SOIbNode = 0;
}
here->B4SOIbNode = 0;
here->B4SOIpNode = 0;
if (here->B4SOIsNodePrime
if (here->B4SOIsNodePrime > 0
&& here->B4SOIsNodePrime != here->B4SOIsNode)
{
CKTdltNNum(ckt, here->B4SOIsNodePrime);
here->B4SOIsNodePrime = 0;
}
if (here->B4SOIdNodePrime
here->B4SOIsNodePrime = 0;
if (here->B4SOIdNodePrime > 0
&& here->B4SOIdNodePrime != here->B4SOIdNode)
{
CKTdltNNum(ckt, here->B4SOIdNodePrime);
here->B4SOIdNodePrime = 0;
}
here->B4SOIdNodePrime = 0;
}
}
#endif

View File

@ -256,12 +256,10 @@ DIOunsetup(
here=here->DIOnextInstance)
{
if (here->DIOposPrimeNode
if (here->DIOposPrimeNode > 0
&& here->DIOposPrimeNode != here->DIOposNode)
{
CKTdltNNum(ckt, here->DIOposPrimeNode);
here->DIOposPrimeNode = 0;
}
here->DIOposPrimeNode = 0;
}
}
return OK;

View File

@ -412,37 +412,30 @@ HFETAunsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->HFETAinstances; here != NULL;
here=here->HFETAnextInstance)
{
if (here->HFETAsourcePrmPrmNode
if (here->HFETAsourcePrmPrmNode > 0
&& here->HFETAsourcePrmPrmNode != here->HFETAsourcePrimeNode)
{
CKTdltNNum(ckt, here->HFETAsourcePrmPrmNode);
here->HFETAsourcePrmPrmNode = 0;
}
if (here->HFETAdrainPrmPrmNode
here->HFETAsourcePrmPrmNode = 0;
if (here->HFETAdrainPrmPrmNode > 0
&& here->HFETAdrainPrmPrmNode != here->HFETAdrainPrimeNode)
{
CKTdltNNum(ckt, here->HFETAdrainPrmPrmNode);
here->HFETAdrainPrmPrmNode = 0;
}
if (here->HFETAgatePrimeNode
here->HFETAdrainPrmPrmNode = 0;
if (here->HFETAgatePrimeNode > 0
&& here->HFETAgatePrimeNode != here->HFETAgateNode)
{
CKTdltNNum(ckt, here->HFETAgatePrimeNode);
here->HFETAgatePrimeNode = 0;
}
here->HFETAgatePrimeNode = 0;
if (here->HFETAdrainPrimeNode
if (here->HFETAdrainPrimeNode > 0
&& here->HFETAdrainPrimeNode != here->HFETAdrainNode)
{
CKTdltNNum(ckt, here->HFETAdrainPrimeNode);
here->HFETAdrainPrimeNode = 0;
}
if (here->HFETAsourcePrimeNode
here->HFETAdrainPrimeNode = 0;
if (here->HFETAsourcePrimeNode > 0
&& here->HFETAsourcePrimeNode != here->HFETAsourceNode)
{
CKTdltNNum(ckt, here->HFETAsourcePrimeNode);
here->HFETAsourcePrimeNode = 0;
}
here->HFETAsourcePrimeNode = 0;
}
}

View File

@ -216,18 +216,15 @@ HFET2unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->HFET2instances; here != NULL;
here=here->HFET2nextInstance)
{
if (here->HFET2drainPrimeNode
if (here->HFET2drainPrimeNode > 0
&& here->HFET2drainPrimeNode != here->HFET2drainNode)
{
CKTdltNNum(ckt, here->HFET2drainPrimeNode);
here->HFET2drainPrimeNode = 0;
}
if (here->HFET2sourcePrimeNode
here->HFET2drainPrimeNode = 0;
if (here->HFET2sourcePrimeNode > 0
&& here->HFET2sourcePrimeNode != here->HFET2sourceNode)
{
CKTdltNNum(ckt, here->HFET2sourcePrimeNode);
here->HFET2sourcePrimeNode = 0;
}
here->HFET2sourcePrimeNode = 0;
}
}

View File

@ -1312,42 +1312,35 @@ HSM2unsetup(
for (here = model->HSM2instances; here != NULL;
here=here->HSM2nextInstance)
{
if (here->HSM2sbNode
if (here->HSM2sbNode > 0
&& here->HSM2sbNode != here->HSM2bNode)
{
CKTdltNNum(ckt, here->HSM2sbNode);
here->HSM2sbNode = 0;
}
if (here->HSM2bNodePrime
here->HSM2sbNode = 0;
if (here->HSM2bNodePrime > 0
&& here->HSM2bNodePrime != here->HSM2bNode)
{
CKTdltNNum(ckt, here->HSM2bNodePrime);
here->HSM2bNodePrime = 0;
}
if (here->HSM2dbNode
here->HSM2bNodePrime = 0;
if (here->HSM2dbNode > 0
&& here->HSM2dbNode != here->HSM2bNode)
{
CKTdltNNum(ckt, here->HSM2dbNode);
here->HSM2dbNode = 0;
}
if (here->HSM2gNodePrime
here->HSM2dbNode = 0;
if (here->HSM2gNodePrime > 0
&& here->HSM2gNodePrime != here->HSM2gNode)
{
CKTdltNNum(ckt, here->HSM2gNodePrime);
here->HSM2gNodePrime = 0;
}
if (here->HSM2sNodePrime
here->HSM2gNodePrime = 0;
if (here->HSM2sNodePrime > 0
&& here->HSM2sNodePrime != here->HSM2sNode)
{
CKTdltNNum(ckt, here->HSM2sNodePrime);
here->HSM2sNodePrime = 0;
}
if (here->HSM2dNodePrime
here->HSM2sNodePrime = 0;
if (here->HSM2dNodePrime > 0
&& here->HSM2dNodePrime != here->HSM2dNode)
{
CKTdltNNum(ckt, here->HSM2dNodePrime);
here->HSM2dNodePrime = 0;
}
here->HSM2dNodePrime = 0;
}
}
#endif

View File

@ -1476,62 +1476,52 @@ HSMHVunsetup(
for (here = model->HSMHVinstances; here != NULL;
here=here->HSMHVnextInstance)
{
if (here->HSMHVqbNode)
{
if (here->HSMHVqbNode > 0)
CKTdltNNum(ckt, here->HSMHVqbNode);
here->HSMHVqbNode = 0;
}
if (here->HSMHVqiNode)
{
here->HSMHVqbNode = 0;
if (here->HSMHVqiNode > 0)
CKTdltNNum(ckt, here->HSMHVqiNode);
here->HSMHVqiNode = 0;
}
here->HSMHVqiNode = 0;
if (here->HSMHVtempNode > 0 &&
here->HSMHVtempNode != here->HSMHVtempNodeExt &&
here->HSMHVtempNode != here->HSMHVsubNodeExt)
{
CKTdltNNum(ckt, here->HSMHVtempNode);
here->HSMHVtempNode = 0;
}
here->HSMHVtempNode = 0;
here->HSMHVsubNode = 0;
if (here->HSMHVsbNode
if (here->HSMHVsbNode > 0
&& here->HSMHVsbNode != here->HSMHVbNode)
{
CKTdltNNum(ckt, here->HSMHVsbNode);
here->HSMHVsbNode = 0;
}
if (here->HSMHVbNodePrime
here->HSMHVsbNode = 0;
if (here->HSMHVbNodePrime > 0
&& here->HSMHVbNodePrime != here->HSMHVbNode)
{
CKTdltNNum(ckt, here->HSMHVbNodePrime);
here->HSMHVbNodePrime = 0;
}
if (here->HSMHVdbNode
here->HSMHVbNodePrime = 0;
if (here->HSMHVdbNode > 0
&& here->HSMHVdbNode != here->HSMHVbNode)
{
CKTdltNNum(ckt, here->HSMHVdbNode);
here->HSMHVdbNode = 0;
}
if (here->HSMHVgNodePrime
here->HSMHVdbNode = 0;
if (here->HSMHVgNodePrime > 0
&& here->HSMHVgNodePrime != here->HSMHVgNode)
{
CKTdltNNum(ckt, here->HSMHVgNodePrime);
here->HSMHVgNodePrime = 0;
}
if (here->HSMHVsNodePrime
here->HSMHVgNodePrime = 0;
if (here->HSMHVsNodePrime > 0
&& here->HSMHVsNodePrime != here->HSMHVsNode)
{
CKTdltNNum(ckt, here->HSMHVsNodePrime);
here->HSMHVsNodePrime = 0;
}
if (here->HSMHVdNodePrime
here->HSMHVsNodePrime = 0;
if (here->HSMHVdNodePrime > 0
&& here->HSMHVdNodePrime != here->HSMHVdNode)
{
CKTdltNNum(ckt, here->HSMHVdNodePrime);
here->HSMHVdNodePrime = 0;
}
here->HSMHVdNodePrime = 0;
}
}
#endif

View File

@ -1747,58 +1747,48 @@ HSMHV2unsetup(
if (here->HSMHV2tempNode > 0 &&
here->HSMHV2tempNode != here->HSMHV2tempNodeExt &&
here->HSMHV2tempNode != here->HSMHV2subNodeExt)
{
CKTdltNNum(ckt, here->HSMHV2tempNode);
here->HSMHV2tempNode = 0;
}
here->HSMHV2tempNode = 0;
here->HSMHV2subNode = 0;
if (here->HSMHV2qbNode)
{
if (here->HSMHV2qbNode > 0)
CKTdltNNum(ckt, here->HSMHV2qbNode);
here->HSMHV2qbNode = 0;
}
if (here->HSMHV2qiNode)
{
here->HSMHV2qbNode = 0;
if (here->HSMHV2qiNode > 0)
CKTdltNNum(ckt, here->HSMHV2qiNode);
here->HSMHV2qiNode = 0;
}
if (here->HSMHV2sbNode
here->HSMHV2qiNode = 0;
if (here->HSMHV2sbNode > 0
&& here->HSMHV2sbNode != here->HSMHV2bNode)
{
CKTdltNNum(ckt, here->HSMHV2sbNode);
here->HSMHV2sbNode = 0;
}
if (here->HSMHV2bNodePrime
here->HSMHV2sbNode = 0;
if (here->HSMHV2bNodePrime > 0
&& here->HSMHV2bNodePrime != here->HSMHV2bNode)
{
CKTdltNNum(ckt, here->HSMHV2bNodePrime);
here->HSMHV2bNodePrime = 0;
}
if (here->HSMHV2dbNode
here->HSMHV2bNodePrime = 0;
if (here->HSMHV2dbNode > 0
&& here->HSMHV2dbNode != here->HSMHV2bNode)
{
CKTdltNNum(ckt, here->HSMHV2dbNode);
here->HSMHV2dbNode = 0;
}
if (here->HSMHV2gNodePrime
here->HSMHV2dbNode = 0;
if (here->HSMHV2gNodePrime > 0
&& here->HSMHV2gNodePrime != here->HSMHV2gNode)
{
CKTdltNNum(ckt, here->HSMHV2gNodePrime);
here->HSMHV2gNodePrime = 0;
}
if (here->HSMHV2sNodePrime
here->HSMHV2gNodePrime = 0;
if (here->HSMHV2sNodePrime > 0
&& here->HSMHV2sNodePrime != here->HSMHV2sNode)
{
CKTdltNNum(ckt, here->HSMHV2sNodePrime);
here->HSMHV2sNodePrime = 0;
}
if (here->HSMHV2dNodePrime
here->HSMHV2sNodePrime = 0;
if (here->HSMHV2dNodePrime > 0
&& here->HSMHV2dNodePrime != here->HSMHV2dNode)
{
CKTdltNNum(ckt, here->HSMHV2dNodePrime);
here->HSMHV2dNodePrime = 0;
}
here->HSMHV2dNodePrime = 0;
}
}
#endif

View File

@ -118,10 +118,9 @@ INDunsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->INDinstances; here != NULL;
here=here->INDnextInstance)
{
if (here->INDbrEq) {
if (here->INDbrEq > 0)
CKTdltNNum(ckt, here->INDbrEq);
here->INDbrEq = 0;
}
here->INDbrEq = 0;
}
}
return OK;

View File

@ -195,18 +195,15 @@ JFETunsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->JFETinstances; here != NULL;
here=here->JFETnextInstance)
{
if (here->JFETdrainPrimeNode
if (here->JFETdrainPrimeNode > 0
&& here->JFETdrainPrimeNode != here->JFETdrainNode)
{
CKTdltNNum(ckt, here->JFETdrainPrimeNode);
here->JFETdrainPrimeNode = 0;
}
if (here->JFETsourcePrimeNode
here->JFETdrainPrimeNode = 0;
if (here->JFETsourcePrimeNode > 0
&& here->JFETsourcePrimeNode != here->JFETsourceNode)
{
CKTdltNNum(ckt, here->JFETsourcePrimeNode);
here->JFETsourcePrimeNode = 0;
}
here->JFETsourcePrimeNode = 0;
}
}
return OK;

View File

@ -135,18 +135,15 @@ JFET2unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->JFET2instances; here != NULL;
here=here->JFET2nextInstance)
{
if (here->JFET2drainPrimeNode
if (here->JFET2drainPrimeNode > 0
&& here->JFET2drainPrimeNode != here->JFET2drainNode)
{
CKTdltNNum(ckt, here->JFET2drainPrimeNode);
here->JFET2drainPrimeNode = 0;
}
if (here->JFET2sourcePrimeNode
here->JFET2drainPrimeNode = 0;
if (here->JFET2sourcePrimeNode > 0
&& here->JFET2sourcePrimeNode != here->JFET2sourceNode)
{
CKTdltNNum(ckt, here->JFET2sourcePrimeNode);
here->JFET2sourcePrimeNode = 0;
}
here->JFET2sourcePrimeNode = 0;
}
}
return OK;

View File

@ -229,14 +229,13 @@ LTRAunsetup(GENmodel *inModel, CKTcircuit *ckt)
model = model->LTRAnextModel) {
for (here = model->LTRAinstances; here != NULL;
here = here->LTRAnextInstance) {
if (here->LTRAbrEq2) {
if (here->LTRAbrEq2 > 0)
CKTdltNNum(ckt, here->LTRAbrEq2);
here->LTRAbrEq2 = 0;
}
if (here->LTRAbrEq1) {
here->LTRAbrEq2 = 0;
if (here->LTRAbrEq1 > 0)
CKTdltNNum(ckt, here->LTRAbrEq1);
here->LTRAbrEq1 = 0;
}
here->LTRAbrEq1 = 0;
}
}
return OK;

View File

@ -168,18 +168,15 @@ MESunsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->MESinstances; here != NULL;
here=here->MESnextInstance)
{
if (here->MESdrainPrimeNode
if (here->MESdrainPrimeNode > 0
&& here->MESdrainPrimeNode != here->MESdrainNode)
{
CKTdltNNum(ckt, here->MESdrainPrimeNode);
here->MESdrainPrimeNode = 0;
}
if (here->MESsourcePrimeNode
here->MESdrainPrimeNode = 0;
if (here->MESsourcePrimeNode > 0
&& here->MESsourcePrimeNode != here->MESsourceNode)
{
CKTdltNNum(ckt, here->MESsourcePrimeNode);
here->MESsourcePrimeNode = 0;
}
here->MESsourcePrimeNode = 0;
}
}
return OK;

View File

@ -419,36 +419,31 @@ MESAunsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->MESAinstances; here != NULL;
here=here->MESAnextInstance)
{
if (here->MESAdrainPrmPrmNode
if (here->MESAdrainPrmPrmNode > 0
&& here->MESAdrainPrmPrmNode != here->MESAdrainPrimeNode)
{
CKTdltNNum(ckt, here->MESAdrainPrmPrmNode);
here->MESAdrainPrmPrmNode = 0;
}
if (here->MESAsourcePrmPrmNode
here->MESAdrainPrmPrmNode = 0;
if (here->MESAsourcePrmPrmNode > 0
&& here->MESAsourcePrmPrmNode != here->MESAsourcePrimeNode)
{
CKTdltNNum(ckt, here->MESAsourcePrmPrmNode);
here->MESAsourcePrmPrmNode = 0;
}
if (here->MESAgatePrimeNode
here->MESAsourcePrmPrmNode = 0;
if (here->MESAgatePrimeNode > 0
&& here->MESAgatePrimeNode != here->MESAgateNode)
{
CKTdltNNum(ckt, here->MESAgatePrimeNode);
here->MESAgatePrimeNode = 0;
}
if (here->MESAdrainPrimeNode
here->MESAgatePrimeNode = 0;
if (here->MESAdrainPrimeNode > 0
&& here->MESAdrainPrimeNode != here->MESAdrainNode)
{
CKTdltNNum(ckt, here->MESAdrainPrimeNode);
here->MESAdrainPrimeNode = 0;
}
if (here->MESAsourcePrimeNode
here->MESAdrainPrimeNode = 0;
if (here->MESAsourcePrimeNode > 0
&& here->MESAsourcePrimeNode != here->MESAsourceNode)
{
CKTdltNNum(ckt, here->MESAsourcePrimeNode);
here->MESAsourcePrimeNode = 0;
}
here->MESAsourcePrimeNode = 0;
}
}

View File

@ -223,18 +223,15 @@ MOS1unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->MOS1instances; here != NULL;
here=here->MOS1nextInstance)
{
if (here->MOS1sNodePrime
if (here->MOS1sNodePrime > 0
&& here->MOS1sNodePrime != here->MOS1sNode)
{
CKTdltNNum(ckt, here->MOS1sNodePrime);
here->MOS1sNodePrime= 0;
}
if (here->MOS1dNodePrime
here->MOS1sNodePrime= 0;
if (here->MOS1dNodePrime > 0
&& here->MOS1dNodePrime != here->MOS1dNode)
{
CKTdltNNum(ckt, here->MOS1dNodePrime);
here->MOS1dNodePrime= 0;
}
here->MOS1dNodePrime= 0;
}
}
return OK;

View File

@ -246,18 +246,15 @@ MOS2unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->MOS2instances; here != NULL;
here=here->MOS2nextInstance)
{
if (here->MOS2sNodePrime
if (here->MOS2sNodePrime > 0
&& here->MOS2sNodePrime != here->MOS2sNode)
{
CKTdltNNum(ckt, here->MOS2sNodePrime);
here->MOS2sNodePrime = 0;
}
if (here->MOS2dNodePrime
here->MOS2sNodePrime = 0;
if (here->MOS2dNodePrime > 0
&& here->MOS2dNodePrime != here->MOS2dNode)
{
CKTdltNNum(ckt, here->MOS2dNodePrime);
here->MOS2dNodePrime = 0;
}
here->MOS2dNodePrime = 0;
}
}
return OK;

View File

@ -271,18 +271,15 @@ MOS3unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->MOS3instances; here != NULL;
here=here->MOS3nextInstance)
{
if (here->MOS3sNodePrime
if (here->MOS3sNodePrime > 0
&& here->MOS3sNodePrime != here->MOS3sNode)
{
CKTdltNNum(ckt, here->MOS3sNodePrime);
here->MOS3sNodePrime= 0;
}
if (here->MOS3dNodePrime
here->MOS3sNodePrime= 0;
if (here->MOS3dNodePrime > 0
&& here->MOS3dNodePrime != here->MOS3dNode)
{
CKTdltNNum(ckt, here->MOS3dNodePrime);
here->MOS3dNodePrime= 0;
}
here->MOS3dNodePrime= 0;
}
}
return OK;

View File

@ -233,18 +233,15 @@ MOS6unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->MOS6instances; here != NULL;
here=here->MOS6nextInstance)
{
if (here->MOS6sNodePrime
if (here->MOS6sNodePrime > 0
&& here->MOS6sNodePrime != here->MOS6sNode)
{
CKTdltNNum(ckt, here->MOS6sNodePrime);
here->MOS6sNodePrime= 0;
}
if (here->MOS6dNodePrime
here->MOS6sNodePrime= 0;
if (here->MOS6dNodePrime > 0
&& here->MOS6dNodePrime != here->MOS6dNode)
{
CKTdltNNum(ckt, here->MOS6dNodePrime);
here->MOS6dNodePrime= 0;
}
here->MOS6dNodePrime= 0;
}
}
return OK;

View File

@ -271,18 +271,15 @@ MOS9unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->MOS9instances; here != NULL;
here=here->MOS9nextInstance)
{
if (here->MOS9sNodePrime
if (here->MOS9sNodePrime > 0
&& here->MOS9sNodePrime != here->MOS9sNode)
{
CKTdltNNum(ckt, here->MOS9sNodePrime);
here->MOS9sNodePrime= 0;
}
if (here->MOS9dNodePrime
here->MOS9sNodePrime= 0;
if (here->MOS9dNodePrime > 0
&& here->MOS9dNodePrime != here->MOS9dNode)
{
CKTdltNNum(ckt, here->MOS9dNodePrime);
here->MOS9dNodePrime= 0;
}
here->MOS9dNodePrime= 0;
}
}
return OK;

View File

@ -674,43 +674,36 @@ SOI3unsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->SOI3instances; here != NULL;
here=here->SOI3nextInstance)
{
if (here->SOI3tout4Node)
{
if (here->SOI3tout4Node > 0)
CKTdltNNum(ckt, here->SOI3tout4Node);
here->SOI3tout4Node = 0;
}
if (here->SOI3tout3Node)
{
here->SOI3tout4Node = 0;
if (here->SOI3tout3Node > 0)
CKTdltNNum(ckt, here->SOI3tout3Node);
here->SOI3tout3Node = 0;
}
if (here->SOI3tout2Node)
{
here->SOI3tout3Node = 0;
if (here->SOI3tout2Node > 0)
CKTdltNNum(ckt, here->SOI3tout2Node);
here->SOI3tout2Node = 0;
}
if (here->SOI3tout1Node)
{
here->SOI3tout2Node = 0;
if (here->SOI3tout1Node > 0)
CKTdltNNum(ckt, here->SOI3tout1Node);
here->SOI3tout1Node = 0;
}
if (here->SOI3branch)
{
here->SOI3tout1Node = 0;
if (here->SOI3branch > 0)
CKTdltNNum(ckt, here->SOI3branch);
here->SOI3branch=0;
}
if (here->SOI3sNodePrime
here->SOI3branch=0;
if (here->SOI3sNodePrime > 0
&& here->SOI3sNodePrime != here->SOI3sNode)
{
CKTdltNNum(ckt, here->SOI3sNodePrime);
here->SOI3sNodePrime= 0;
}
if (here->SOI3dNodePrime
here->SOI3sNodePrime= 0;
if (here->SOI3dNodePrime > 0
&& here->SOI3dNodePrime != here->SOI3dNode)
{
CKTdltNNum(ckt, here->SOI3dNodePrime);
here->SOI3dNodePrime= 0;
}
here->SOI3dNodePrime= 0;
}
}
return OK;

View File

@ -126,22 +126,21 @@ TRAunsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->TRAinstances; here != NULL;
here=here->TRAnextInstance)
{
if (here->TRAintNode2) {
if (here->TRAintNode2 > 0)
CKTdltNNum(ckt, here->TRAintNode2);
here->TRAintNode2= 0;
}
if (here->TRAintNode1) {
here->TRAintNode2= 0;
if (here->TRAintNode1 > 0)
CKTdltNNum(ckt, here->TRAintNode1);
here->TRAintNode1= 0;
}
if (here->TRAbrEq2) {
here->TRAintNode1= 0;
if (here->TRAbrEq2 > 0)
CKTdltNNum(ckt, here->TRAbrEq2);
here->TRAbrEq2= 0;
}
if (here->TRAbrEq1) {
here->TRAbrEq2= 0;
if (here->TRAbrEq1 > 0)
CKTdltNNum(ckt, here->TRAbrEq1);
here->TRAbrEq1= 0;
}
here->TRAbrEq1= 0;
}
}
return OK;

View File

@ -558,45 +558,37 @@ VBICunsetup(
for (here = model->VBICinstances; here != NULL;
here=here->VBICnextInstance)
{
if (here->VBICbaseBINode)
{
if (here->VBICbaseBINode > 0)
CKTdltNNum(ckt, here->VBICbaseBINode);
here->VBICbaseBINode = 0;
}
if (here->VBICbaseBPNode)
{
here->VBICbaseBINode = 0;
if (here->VBICbaseBPNode > 0)
CKTdltNNum(ckt, here->VBICbaseBPNode);
here->VBICbaseBPNode = 0;
}
if (here->VBICcollCINode)
{
here->VBICbaseBPNode = 0;
if (here->VBICcollCINode > 0)
CKTdltNNum(ckt, here->VBICcollCINode);
here->VBICcollCINode = 0;
}
if (here->VBICsubsSINode
here->VBICcollCINode = 0;
if (here->VBICsubsSINode > 0
&& here->VBICsubsSINode != here->VBICsubsNode)
{
CKTdltNNum(ckt, here->VBICsubsSINode);
here->VBICsubsSINode = 0;
}
if (here->VBICemitEINode
here->VBICsubsSINode = 0;
if (here->VBICemitEINode > 0
&& here->VBICemitEINode != here->VBICemitNode)
{
CKTdltNNum(ckt, here->VBICemitEINode);
here->VBICemitEINode = 0;
}
if (here->VBICbaseBXNode
here->VBICemitEINode = 0;
if (here->VBICbaseBXNode > 0
&& here->VBICbaseBXNode != here->VBICbaseNode)
{
CKTdltNNum(ckt, here->VBICbaseBXNode);
here->VBICbaseBXNode = 0;
}
if (here->VBICcollCXNode
here->VBICbaseBXNode = 0;
if (here->VBICcollCXNode > 0
&& here->VBICcollCXNode != here->VBICcollNode)
{
CKTdltNNum(ckt, here->VBICcollCXNode);
here->VBICcollCXNode = 0;
}
here->VBICcollCXNode = 0;
}
}
return OK;

View File

@ -73,10 +73,9 @@ VCVSunsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->VCVSinstances; here != NULL;
here=here->VCVSnextInstance)
{
if (here->VCVSbranch) {
if (here->VCVSbranch > 0)
CKTdltNNum(ckt, here->VCVSbranch);
here->VCVSbranch = 0;
}
here->VCVSbranch = 0;
}
}
return OK;

View File

@ -70,10 +70,9 @@ VSRCunsetup(GENmodel *inModel, CKTcircuit *ckt)
for (here = model->VSRCinstances; here != NULL;
here=here->VSRCnextInstance)
{
if (here->VSRCbranch) {
if (here->VSRCbranch > 0)
CKTdltNNum(ckt, here->VSRCbranch);
here->VSRCbranch = 0;
}
here->VSRCbranch = 0;
}
}
return OK;