From 1fd14fa2eecbd1e4cf2c6fa3cb108fbb68ffcec0 Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 21 Jan 2017 22:17:33 +0100 Subject: [PATCH] src/spicelib/devices/*/*set.c, missing CKTdltNNum() invocations, simple cases All locally created nodes (CKTmk..() invocations in XXXsetup()) must be deleted in XXXunsetup() Otherwise CKTmk..() invocations during a following CKTsetup() will re-emit still used node numbers, thus accidentally shorting nodes. This patch fixes the simple cases, which are local node variables which will start with value 0 and eventually be set with the result of a CKTmk..() invocation. More complex cases evolve, if such a local variable might receive a node number which origins from another node, or the netlist itself. --- src/spicelib/devices/bsim3/b3set.c | 5 + src/spicelib/devices/bsim3soi_dd/b3soiddset.c | 217 ++++++++++++++++++ src/spicelib/devices/bsim3soi_fd/b3soifdset.c | 217 ++++++++++++++++++ src/spicelib/devices/bsim3soi_pd/b3soipdset.c | 97 ++++++++ src/spicelib/devices/bsim3v0/b3v0set.c | 5 + src/spicelib/devices/bsim3v1/b3v1set.c | 5 + src/spicelib/devices/bsim3v32/b3v32set.c | 5 + src/spicelib/devices/bsim4/b4set.c | 5 + src/spicelib/devices/bsim4v5/b4v5set.c | 5 + src/spicelib/devices/bsim4v6/b4v6set.c | 5 + src/spicelib/devices/bsim4v7/b4v7set.c | 5 + src/spicelib/devices/bsimsoi/b4soiset.c | 97 ++++++++ src/spicelib/devices/hisimhv1/hsmhvset.c | 10 + src/spicelib/devices/hisimhv2/hsmhv2set.c | 10 + 14 files changed, 688 insertions(+) diff --git a/src/spicelib/devices/bsim3/b3set.c b/src/spicelib/devices/bsim3/b3set.c index 659dc3819..a4fbd8587 100644 --- a/src/spicelib/devices/bsim3/b3set.c +++ b/src/spicelib/devices/bsim3/b3set.c @@ -1144,6 +1144,11 @@ BSIM3unsetup( for (here = model->BSIM3instances; here != NULL; here=here->BSIM3nextInstance) { + if (here->BSIM3qNode) + { + CKTdltNNum(ckt, here->BSIM3qNode); + here->BSIM3qNode = 0; + } if (here->BSIM3sNodePrime && here->BSIM3sNodePrime != here->BSIM3sNode) { diff --git a/src/spicelib/devices/bsim3soi_dd/b3soiddset.c b/src/spicelib/devices/bsim3soi_dd/b3soiddset.c index f324c0489..e5fff2bc4 100644 --- a/src/spicelib/devices/bsim3soi_dd/b3soiddset.c +++ b/src/spicelib/devices/bsim3soi_dd/b3soiddset.c @@ -1357,6 +1357,223 @@ B3SOIDDunsetup(GENmodel *inModel, CKTcircuit *ckt) for (here = model->B3SOIDDinstances; here != NULL; here=here->B3SOIDDnextInstance) { + /* here for debugging purpose only */ + if (here->B3SOIDDdum5Node) + { + 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; + } + if (here->B3SOIDDsNodePrime && here->B3SOIDDsNodePrime != here->B3SOIDDsNode) { diff --git a/src/spicelib/devices/bsim3soi_fd/b3soifdset.c b/src/spicelib/devices/bsim3soi_fd/b3soifdset.c index ec16f1b6d..3072fade9 100644 --- a/src/spicelib/devices/bsim3soi_fd/b3soifdset.c +++ b/src/spicelib/devices/bsim3soi_fd/b3soifdset.c @@ -1346,6 +1346,223 @@ B3SOIFDunsetup(GENmodel *inModel, CKTcircuit *ckt) for (here = model->B3SOIFDinstances; here != NULL; here=here->B3SOIFDnextInstance) { + /* here for debugging purpose only */ + if (here->B3SOIFDdum5Node) + { + 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; + } + if (here->B3SOIFDsNodePrime && here->B3SOIFDsNodePrime != here->B3SOIFDsNode) { diff --git a/src/spicelib/devices/bsim3soi_pd/b3soipdset.c b/src/spicelib/devices/bsim3soi_pd/b3soipdset.c index 1ed1df006..50de3f358 100644 --- a/src/spicelib/devices/bsim3soi_pd/b3soipdset.c +++ b/src/spicelib/devices/bsim3soi_pd/b3soipdset.c @@ -1461,6 +1461,103 @@ B3SOIPDunsetup( for (here = model->B3SOIPDinstances; here != NULL; here=here->B3SOIPDnextInstance) { + /* here for debugging purpose only */ + if (here->B3SOIPDqjdNode) + { + 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; + } + if (here->B3SOIPDsNodePrime && here->B3SOIPDsNodePrime != here->B3SOIPDsNode) { diff --git a/src/spicelib/devices/bsim3v0/b3v0set.c b/src/spicelib/devices/bsim3v0/b3v0set.c index e67f4aa8b..45f6e0051 100644 --- a/src/spicelib/devices/bsim3v0/b3v0set.c +++ b/src/spicelib/devices/bsim3v0/b3v0set.c @@ -904,6 +904,11 @@ BSIM3v0unsetup(GENmodel *inModel, CKTcircuit *ckt) for (here = model->BSIM3v0instances; here != NULL; here=here->BSIM3v0nextInstance) { + if (here->BSIM3v0qNode) + { + CKTdltNNum(ckt, here->BSIM3v0qNode); + here->BSIM3v0qNode = 0; + } if (here->BSIM3v0sNodePrime && here->BSIM3v0sNodePrime != here->BSIM3v0sNode) { diff --git a/src/spicelib/devices/bsim3v1/b3v1set.c b/src/spicelib/devices/bsim3v1/b3v1set.c index 11881b8a3..a62924027 100644 --- a/src/spicelib/devices/bsim3v1/b3v1set.c +++ b/src/spicelib/devices/bsim3v1/b3v1set.c @@ -964,6 +964,11 @@ BSIM3v1unsetup(GENmodel *inModel, CKTcircuit *ckt) for (here = model->BSIM3v1instances; here != NULL; here=here->BSIM3v1nextInstance) { + if (here->BSIM3v1qNode) + { + CKTdltNNum(ckt, here->BSIM3v1qNode); + here->BSIM3v1qNode = 0; + } if (here->BSIM3v1sNodePrime && here->BSIM3v1sNodePrime != here->BSIM3v1sNode) { diff --git a/src/spicelib/devices/bsim3v32/b3v32set.c b/src/spicelib/devices/bsim3v32/b3v32set.c index ab7addd45..ca3353e40 100644 --- a/src/spicelib/devices/bsim3v32/b3v32set.c +++ b/src/spicelib/devices/bsim3v32/b3v32set.c @@ -1156,6 +1156,11 @@ BSIM3v32unsetup( for (here = model->BSIM3v32instances; here != NULL; here=here->BSIM3v32nextInstance) { + if (here->BSIM3v32qNode) + { + CKTdltNNum(ckt, here->BSIM3v32qNode); + here->BSIM3v32qNode = 0; + } if (here->BSIM3v32sNodePrime && here->BSIM3v32sNodePrime != here->BSIM3v32sNode) { diff --git a/src/spicelib/devices/bsim4/b4set.c b/src/spicelib/devices/bsim4/b4set.c index fe0301d5c..a5b3d5dc9 100644 --- a/src/spicelib/devices/bsim4/b4set.c +++ b/src/spicelib/devices/bsim4/b4set.c @@ -2765,6 +2765,11 @@ CKTcircuit *ckt) for (here = model->BSIM4instances; here != NULL; here=here->BSIM4nextInstance) { + if (here->BSIM4qNode) + { + CKTdltNNum(ckt, here->BSIM4qNode); + here->BSIM4qNode = 0; + } if (here->BSIM4sNodePrime && here->BSIM4sNodePrime != here->BSIM4sNode) { diff --git a/src/spicelib/devices/bsim4v5/b4v5set.c b/src/spicelib/devices/bsim4v5/b4v5set.c index 2b39c22e7..ed745d04e 100644 --- a/src/spicelib/devices/bsim4v5/b4v5set.c +++ b/src/spicelib/devices/bsim4v5/b4v5set.c @@ -2143,6 +2143,11 @@ BSIM4v5unsetup( for (here = model->BSIM4v5instances; here != NULL; here=here->BSIM4v5nextInstance) { + if (here->BSIM4v5qNode) + { + CKTdltNNum(ckt, here->BSIM4v5qNode); + here->BSIM4v5qNode = 0; + } if (here->BSIM4v5sNodePrime && here->BSIM4v5sNodePrime != here->BSIM4v5sNode) { diff --git a/src/spicelib/devices/bsim4v6/b4v6set.c b/src/spicelib/devices/bsim4v6/b4v6set.c index 031ef2e9f..404c01b6e 100644 --- a/src/spicelib/devices/bsim4v6/b4v6set.c +++ b/src/spicelib/devices/bsim4v6/b4v6set.c @@ -2476,6 +2476,11 @@ BSIM4v6unsetup(GENmodel *inModel, CKTcircuit *ckt) for (here = model->BSIM4v6instances; here != NULL; here=here->BSIM4v6nextInstance) { + if (here->BSIM4v6qNode) + { + CKTdltNNum(ckt, here->BSIM4v6qNode); + here->BSIM4v6qNode = 0; + } if (here->BSIM4v6sNodePrime && here->BSIM4v6sNodePrime != here->BSIM4v6sNode) { diff --git a/src/spicelib/devices/bsim4v7/b4v7set.c b/src/spicelib/devices/bsim4v7/b4v7set.c index 47c5a9cd1..6137d2e46 100644 --- a/src/spicelib/devices/bsim4v7/b4v7set.c +++ b/src/spicelib/devices/bsim4v7/b4v7set.c @@ -2633,6 +2633,11 @@ CKTcircuit *ckt) for (here = model->BSIM4v7instances; here != NULL; here=here->BSIM4v7nextInstance) { + if (here->BSIM4v7qNode) + { + CKTdltNNum(ckt, here->BSIM4v7qNode); + here->BSIM4v7qNode = 0; + } if (here->BSIM4v7sNodePrime && here->BSIM4v7sNodePrime != here->BSIM4v7sNode) { diff --git a/src/spicelib/devices/bsimsoi/b4soiset.c b/src/spicelib/devices/bsimsoi/b4soiset.c index c03359b2f..806851043 100644 --- a/src/spicelib/devices/bsimsoi/b4soiset.c +++ b/src/spicelib/devices/bsimsoi/b4soiset.c @@ -2766,6 +2766,103 @@ B4SOIunsetup( for (here = model->B4SOIinstances; here != NULL; here=here->B4SOInextInstance) { + /* here for debugging purpose only */ + if (here->B4SOIqjdNode) + { + CKTdltNNum(ckt, here->B4SOIqjdNode); + here->B4SOIqjdNode = 0; + } + if (here->B4SOIqjsNode) + { + CKTdltNNum(ckt, here->B4SOIqjsNode); + here->B4SOIqjsNode = 0; + } + if (here->B4SOIqbfNode) + { + CKTdltNNum(ckt, here->B4SOIqbfNode); + here->B4SOIqbfNode = 0; + } + if (here->B4SOIcbgNode) + { + CKTdltNNum(ckt, here->B4SOIcbgNode); + here->B4SOIcbgNode = 0; + } + if (here->B4SOIcbdNode) + { + CKTdltNNum(ckt, here->B4SOIcbdNode); + here->B4SOIcbdNode = 0; + } + if (here->B4SOIcbbNode) + { + CKTdltNNum(ckt, here->B4SOIcbbNode); + here->B4SOIcbbNode = 0; + } + if (here->B4SOIibpNode) + { + CKTdltNNum(ckt, here->B4SOIibpNode); + here->B4SOIibpNode = 0; + } + if (here->B4SOIitunNode) + { + CKTdltNNum(ckt, here->B4SOIitunNode); + here->B4SOIitunNode = 0; + } + if (here->B4SOIigidlNode) + { + CKTdltNNum(ckt, here->B4SOIigidlNode); + here->B4SOIigidlNode = 0; + } + if (here->B4SOIgigbNode) + { + CKTdltNNum(ckt, here->B4SOIgigbNode); + here->B4SOIgigbNode = 0; + } + if (here->B4SOIgigdNode) + { + CKTdltNNum(ckt, here->B4SOIgigdNode); + here->B4SOIgigdNode = 0; + } + if (here->B4SOIgiggNode) + { + CKTdltNNum(ckt, here->B4SOIgiggNode); + here->B4SOIgiggNode = 0; + } + if (here->B4SOIigNode) + { + CKTdltNNum(ckt, here->B4SOIigNode); + here->B4SOIigNode = 0; + } + if (here->B4SOIiiiNode) + { + CKTdltNNum(ckt, here->B4SOIiiiNode); + here->B4SOIiiiNode = 0; + } + if (here->B4SOIibdNode) + { + CKTdltNNum(ckt, here->B4SOIibdNode); + here->B4SOIibdNode = 0; + } + if (here->B4SOIibsNode) + { + CKTdltNNum(ckt, here->B4SOIibsNode); + here->B4SOIibsNode = 0; + } + if (here->B4SOIicNode) + { + CKTdltNNum(ckt, here->B4SOIicNode); + here->B4SOIicNode = 0; + } + if (here->B4SOIidsNode) + { + CKTdltNNum(ckt, here->B4SOIidsNode); + here->B4SOIidsNode = 0; + } + if (here->B4SOIvbsNode) + { + CKTdltNNum(ckt, here->B4SOIvbsNode); + here->B4SOIvbsNode = 0; + } + if (here->B4SOIsNodePrime && here->B4SOIsNodePrime != here->B4SOIsNode) { diff --git a/src/spicelib/devices/hisimhv1/hsmhvset.c b/src/spicelib/devices/hisimhv1/hsmhvset.c index eb38c82d5..1533415f0 100644 --- a/src/spicelib/devices/hisimhv1/hsmhvset.c +++ b/src/spicelib/devices/hisimhv1/hsmhvset.c @@ -1473,6 +1473,16 @@ HSMHVunsetup( for (here = model->HSMHVinstances; here != NULL; here=here->HSMHVnextInstance) { + if (here->HSMHVqbNode) + { + CKTdltNNum(ckt, here->HSMHVqbNode); + here->HSMHVqbNode = 0; + } + if (here->HSMHVqiNode) + { + CKTdltNNum(ckt, here->HSMHVqiNode); + here->HSMHVqiNode = 0; + } if (here->HSMHVsbNode && here->HSMHVsbNode != here->HSMHVbNode) { diff --git a/src/spicelib/devices/hisimhv2/hsmhv2set.c b/src/spicelib/devices/hisimhv2/hsmhv2set.c index 6ea613f51..7e5a1e083 100644 --- a/src/spicelib/devices/hisimhv2/hsmhv2set.c +++ b/src/spicelib/devices/hisimhv2/hsmhv2set.c @@ -1741,6 +1741,16 @@ HSMHV2unsetup( for (here = model->HSMHV2instances; here != NULL; here=here->HSMHV2nextInstance) { + if (here->HSMHV2qbNode) + { + CKTdltNNum(ckt, here->HSMHV2qbNode); + here->HSMHV2qbNode = 0; + } + if (here->HSMHV2qiNode) + { + CKTdltNNum(ckt, here->HSMHV2qiNode); + here->HSMHV2qiNode = 0; + } if (here->HSMHV2sbNode && here->HSMHV2sbNode != here->HSMHV2bNode) {