diff --git a/src/spicelib/devices/hicum2/hicum2acld.c b/src/spicelib/devices/hicum2/hicum2acld.c index 01ed588d1..e8aa361b6 100644 --- a/src/spicelib/devices/hicum2/hicum2acld.c +++ b/src/spicelib/devices/hicum2/hicum2acld.c @@ -2,7 +2,7 @@ Copyright 1990 Regents of the University of California. All rights reserved. Author: 1985 Thomas L. Quarles Model Author: 1990 Michael Schröter TU Dresden -Spice3 Implementation: 2019 Dietmar Warning +Spice3 Implementation: 2019 Dietmar Warning and Markus Müller **********/ /* @@ -218,6 +218,16 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) *(here->HICUMbaseBPEmitEIPtr) += -Ibpei_Vbpei; *(here->HICUMemitEIBaseBPPtr) += -Ibpei_Vbpei;; +// Stamp element: Ibici + *(here->HICUMbaseBIBaseBIPtr) += Ibici_Vbici; + *(here->HICUMcollCICollCIPtr) += Ibici_Vbici; + *(here->HICUMcollCIBaseBIPtr) += -Ibici_Vbici; + *(here->HICUMbaseBICollCIPtr) += -Ibici_Vbici; + *(here->HICUMbaseBIBaseBIPtr) += Ibici_Vbiei; + *(here->HICUMcollCIEmitEIPtr) += Ibici_Vbiei; + *(here->HICUMcollCIBaseBIPtr) += -Ibici_Vbiei; + *(here->HICUMbaseBIEmitEIPtr) += -Ibici_Vbiei; + // Stamp element: Iciei *(here->HICUMcollCIBaseBIPtr) += Iciei_Vbiei; *(here->HICUMemitEIEmitEIPtr) += Iciei_Vbiei; @@ -232,15 +242,6 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) *(here->HICUMemitEIXf2Ptr) += -Iciei_Vxf2; } -// Stamp element: Ibici - *(here->HICUMbaseBIBaseBIPtr) += Ibici_Vbici; - *(here->HICUMcollCICollCIPtr) += Ibici_Vbici; - *(here->HICUMcollCIBaseBIPtr) += -Ibici_Vbici; - *(here->HICUMbaseBICollCIPtr) += -Ibici_Vbici; - *(here->HICUMbaseBIBaseBIPtr) += Ibici_Vbiei; - *(here->HICUMcollCIEmitEIPtr) += Ibici_Vbiei; - *(here->HICUMcollCIBaseBIPtr) += -Ibici_Vbiei; - *(here->HICUMbaseBIEmitEIPtr) += -Ibici_Vbiei; // Stamp element: Ibpci *(here->HICUMbaseBPBaseBPPtr) += Ibpci_Vbpci; @@ -260,6 +261,12 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) *(here->HICUMbaseBPBasePtr) += -Ibbp_Vbbp; *(here->HICUMbaseBaseBPPtr) += -Ibbp_Vbbp; +// Stamp element: Re + *(here->HICUMemitEmitPtr) += Ieie_Veie; + *(here->HICUMemitEIEmitEIPtr) += Ieie_Veie; + *(here->HICUMemitEIEmitPtr) += -Ieie_Veie; + *(here->HICUMemitEmitEIPtr) += -Ieie_Veie; + // Stamp element: Ibpbi *(here->HICUMbaseBPBaseBPPtr) += Ibpbi_Vbpbi; *(here->HICUMbaseBIBaseBIPtr) += Ibpbi_Vbpbi; @@ -274,12 +281,6 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) *(here->HICUMbaseBPCollCIPtr) += -Ibpbi_Vbici; *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbici; -// Stamp element: Re - *(here->HICUMemitEmitPtr) += Ieie_Veie; - *(here->HICUMemitEIEmitEIPtr) += Ieie_Veie; - *(here->HICUMemitEIEmitPtr) += -Ieie_Veie; - *(here->HICUMemitEmitEIPtr) += -Ieie_Veie; - // Stamp element: Isici *(here->HICUMsubsSISubsSIPtr) += Isici_Vsici; *(here->HICUMcollCICollCIPtr) += Isici_Vsici; diff --git a/src/spicelib/devices/hicum2/hicumL2.cpp b/src/spicelib/devices/hicum2/hicumL2.cpp index 51abeb94f..a269021fc 100644 --- a/src/spicelib/devices/hicum2/hicumL2.cpp +++ b/src/spicelib/devices/hicum2/hicumL2.cpp @@ -3372,6 +3372,30 @@ load: // ############### STAMPS NO SH ############################## // ############################################################# +// first branches that are not relevant in DC HICUM, e.g. only in the transient case + +// Branch: sc, Stamp element: Cscp + rhs_current = model->HICUMtype * (Isc - Isc_Vsc*Vsc); + *(ckt->CKTrhs + here->HICUMsubsNode) += -rhs_current; + *(ckt->CKTrhs + here->HICUMcollNode) += rhs_current; + // with respect to Vsc + *(here->HICUMsubsSubsPtr) += Isc_Vsc; + *(here->HICUMsubsCollPtr) += Isc_Vsc; + *(here->HICUMcollSubsPtr) += -Isc_Vsc; + *(here->HICUMcollCollPtr) += -Isc_Vsc; +// finish + +// Branch: bci, Stamp element: Qbcx + rhs_current = model->HICUMtype * (Ibci - Ibci_Vbci*Vbci); + *(ckt->CKTrhs + here->HICUMbaseNode) += -rhs_current; + *(ckt->CKTrhs + here->HICUMcollCINode) += rhs_current; + //with respect to Vbci + *(here->HICUMbaseBasePtr) += Ibci_Vbci; + *(here->HICUMcollCICollCIPtr) += Ibci_Vbci; + *(here->HICUMbaseCollCIPtr) += -Ibci_Vbci; + *(here->HICUMcollCIBasePtr) += -Ibci_Vbci; +// finish + // Branch: be, Stamp element: Cbepar1 rhs_current = model->HICUMtype * (*(ckt->CKTstate0 + here->HICUMcqbepar1) - Vbe * gqbepar1); *(ckt->CKTrhs + here->HICUMbaseNode) += -rhs_current; @@ -3492,17 +3516,6 @@ load: } // finish -// Branch: bci, Stamp element: Qbcx - rhs_current = model->HICUMtype * (Ibci - Ibci_Vbci*Vbci); - *(ckt->CKTrhs + here->HICUMbaseNode) += -rhs_current; - *(ckt->CKTrhs + here->HICUMcollCINode) += rhs_current; - //with respect to Vbci - *(here->HICUMbaseBasePtr) += Ibci_Vbci; - *(here->HICUMcollCICollCIPtr) += Ibci_Vbci; - *(here->HICUMbaseCollCIPtr) += -Ibci_Vbci; - *(here->HICUMcollCIBasePtr) += -Ibci_Vbci; -// finish - // Branch: bpci, Stamp element: Ibpci ( was Ijbcx ) rhs_current = model->HICUMtype * (Ibpci - Ibpci_Vbpci*Vbpci); *(ckt->CKTrhs + here->HICUMbaseBPNode) += -rhs_current; @@ -3560,17 +3573,6 @@ load: *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbici; // finish -// Branch: sc, Stamp element: Cscp - rhs_current = model->HICUMtype * (Isc - Isc_Vsc*Vsc); - *(ckt->CKTrhs + here->HICUMsubsNode) += -rhs_current; - *(ckt->CKTrhs + here->HICUMcollNode) += rhs_current; - // with respect to Vsc - *(here->HICUMsubsSubsPtr) += Isc_Vsc; - *(here->HICUMsubsCollPtr) += Isc_Vsc; - *(here->HICUMcollSubsPtr) += -Isc_Vsc; - *(here->HICUMcollCollPtr) += -Isc_Vsc; -// finish - // Branch: sici, Stamp element: Ijsc rhs_current = model->HICUMtype * (Isici - Isici_Vsici*Vsici); *(ckt->CKTrhs + here->HICUMsubsSINode) += -rhs_current;