fixing vbic
This commit is contained in:
parent
c318d2b9fa
commit
a8f478ab89
|
|
@ -28,7 +28,13 @@ VBICacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
,Irci_Vbci,Irci_Vbcx,Irbx_Vrbx,Irbi_Vrbi,Irbi_Vbei
|
||||
,Irbi_Vbci,Ire_Vre,Irbp_Vrbp,Irbp_Vbep,Irbp_Vbci
|
||||
,Ibcp_Vbcp,Iccp_Vbep,Irs_Vrs,Iccp_Vbci,Iccp_Vbcp;
|
||||
double XQbe_Vbei, XQbe_Vbci, XQbex_Vbex, XQbc_Vbci,
|
||||
double Ibe_Vrth, Ibex_Vrth, Itzf_Vrth, Itzr_Vrth, Ibc_Vrth
|
||||
,Ibep_Vrth, Ircx_Vrth, Irci_Vrth, Irbx_Vrth, Irbi_Vrth, Ire_Vrth
|
||||
,Irbp_Vrth, Ibcp_Vrth, Iccp_Vrth, Irs_Vrth, Irth_Vrth, Ith_Vrth, Ith_Vbei
|
||||
,Ith_Vbci, Ith_Vcei, Ith_Vbex, Ith_Vbep, Ith_Vbcp, Ith_Vcep, Ith_Vrci, Ith_Vbcx
|
||||
,Ith_Vrbi, Ith_Vrbp, Ith_Vrcx, Ith_Vrbx, Ith_Vre, Ith_Vrs;
|
||||
double XQcth_Vrth, XQbe_Vrth, XQbex_Vrth, XQbc_Vrth, XQbcx_Vrth, XQbep_Vrth, XQbcp_Vrth;
|
||||
double XQbe_Vbei,XQbco_Vbc,XQbeo_Vbe, XQbe_Vbci, XQbex_Vbex, XQbc_Vbci,
|
||||
XQbcx_Vbcx, XQbep_Vbep, XQbep_Vbci,
|
||||
XQbcp_Vbcp;
|
||||
|
||||
|
|
@ -65,6 +71,39 @@ VBICacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Irbx_Vrbx = *(ckt->CKTstate0 + here->VBICirbx_Vrbx);
|
||||
Irs_Vrs = *(ckt->CKTstate0 + here->VBICirs_Vrs);
|
||||
Ire_Vre = *(ckt->CKTstate0 + here->VBICire_Vre);
|
||||
// new self-heating related entries
|
||||
Ibe_Vrth = *(ckt->CKTstate0 + here->VBICibe_Vrth);
|
||||
Ibex_Vrth = *(ckt->CKTstate0 + here->VBICibex_Vrth);
|
||||
Itzf_Vrth = *(ckt->CKTstate0 + here->VBICitzf_Vrth);
|
||||
Itzr_Vrth = *(ckt->CKTstate0 + here->VBICitzr_Vrth);
|
||||
Ibc_Vrth = *(ckt->CKTstate0 + here->VBICibc_Vrth);
|
||||
Ibep_Vrth = *(ckt->CKTstate0 + here->VBICibep_Vrth);
|
||||
Ircx_Vrth = *(ckt->CKTstate0 + here->VBICircx_Vrth);
|
||||
Irci_Vrth = *(ckt->CKTstate0 + here->VBICirci_Vrth);
|
||||
Irbx_Vrth = *(ckt->CKTstate0 + here->VBICirbx_Vrth);
|
||||
Irbi_Vrth = *(ckt->CKTstate0 + here->VBICirbi_Vrth);
|
||||
Ire_Vrth = *(ckt->CKTstate0 + here->VBICire_Vrth);
|
||||
Irbp_Vrth = *(ckt->CKTstate0 + here->VBICirbp_Vrth);
|
||||
Ibcp_Vrth = *(ckt->CKTstate0 + here->VBICibcp_Vrth);
|
||||
Iccp_Vrth = *(ckt->CKTstate0 + here->VBICiccp_Vrth);
|
||||
Irs_Vrth = *(ckt->CKTstate0 + here->VBICirs_Vrth);
|
||||
Irth_Vrth = *(ckt->CKTstate0 + here->VBICirth_Vrth);
|
||||
Ith_Vrth = *(ckt->CKTstate0 + here->VBICith_Vrth);
|
||||
Ith_Vbei = *(ckt->CKTstate0 + here->VBICith_Vbei);
|
||||
Ith_Vbci = *(ckt->CKTstate0 + here->VBICith_Vbci);
|
||||
Ith_Vcei = *(ckt->CKTstate0 + here->VBICith_Vcei);
|
||||
Ith_Vbex = *(ckt->CKTstate0 + here->VBICith_Vbex);
|
||||
Ith_Vbep = *(ckt->CKTstate0 + here->VBICith_Vbep);
|
||||
Ith_Vbcp = *(ckt->CKTstate0 + here->VBICith_Vbcp);
|
||||
Ith_Vcep = *(ckt->CKTstate0 + here->VBICith_Vcep);
|
||||
Ith_Vrci = *(ckt->CKTstate0 + here->VBICith_Vrci);
|
||||
Ith_Vbcx = *(ckt->CKTstate0 + here->VBICith_Vbcx);
|
||||
Ith_Vrbi = *(ckt->CKTstate0 + here->VBICith_Vrbi);
|
||||
Ith_Vrbp = *(ckt->CKTstate0 + here->VBICith_Vrbp);
|
||||
Ith_Vrcx = *(ckt->CKTstate0 + here->VBICith_Vrcx);
|
||||
Ith_Vrbx = *(ckt->CKTstate0 + here->VBICith_Vrbx);
|
||||
Ith_Vre = *(ckt->CKTstate0 + here->VBICith_Vre);
|
||||
Ith_Vrs = *(ckt->CKTstate0 + here->VBICith_Vrs);
|
||||
|
||||
/*
|
||||
c The real part
|
||||
|
|
@ -229,15 +268,43 @@ c The complex part
|
|||
XQbep_Vbep = *(ckt->CKTstate0 + here->VBICcqbep) * ckt->CKTomega;
|
||||
XQbep_Vbci = *(ckt->CKTstate0 + here->VBICcqbepci) * ckt->CKTomega;
|
||||
XQbcp_Vbcp = *(ckt->CKTstate0 + here->VBICcqbcp) * ckt->CKTomega;
|
||||
XQbeo_Vbe = *(ckt->CKTstate0 + here->VBICcqbeo) * ckt->CKTomega;
|
||||
XQbco_Vbc = *(ckt->CKTstate0 + here->VBICcqbco) * ckt->CKTomega;
|
||||
|
||||
// self heating related charge changes
|
||||
XQcth_Vrth = *(ckt->CKTstate0 + here->VBICcqcth) * ckt->CKTomega;
|
||||
XQbe_Vrth = *(ckt->CKTstate0 + here->VBICcqbeth) * ckt->CKTomega;
|
||||
XQbex_Vrth = *(ckt->CKTstate0 + here->VBICcqbexth) * ckt->CKTomega;
|
||||
XQbc_Vrth = *(ckt->CKTstate0 + here->VBICcqbcth) * ckt->CKTomega;
|
||||
XQbcx_Vrth = *(ckt->CKTstate0 + here->VBICcqbcxth) * ckt->CKTomega;
|
||||
XQbep_Vrth = *(ckt->CKTstate0 + here->VBICcqbepth) * ckt->CKTomega;
|
||||
XQbcp_Vrth = *(ckt->CKTstate0 + here->VBICcqbcpth) * ckt->CKTomega;
|
||||
|
||||
/*
|
||||
c Stamp element: Qbeo
|
||||
*/
|
||||
*(here->VBICbaseBasePtr + 1) += XQbeo_Vbe;
|
||||
*(here->VBICbaseEmitPtr + 1) += -XQbeo_Vbe;
|
||||
*(here->VBICemitBasePtr + 1) += -XQbeo_Vbe;
|
||||
*(here->VBICemitEmitPtr + 1) += XQbeo_Vbe;
|
||||
|
||||
/*
|
||||
c Stamp element: Qbco
|
||||
*/
|
||||
*(here->VBICbaseBasePtr + 1) += XQbco_Vbc;
|
||||
*(here->VBICbaseCollPtr + 1) += -XQbco_Vbc;
|
||||
*(here->VBICcollBasePtr + 1) += -XQbco_Vbc;
|
||||
*(here->VBICcollCollPtr + 1) += XQbco_Vbc;
|
||||
|
||||
/*
|
||||
c Stamp element: Qbe
|
||||
*/
|
||||
*(here->VBICbaseBIBaseBIPtr + 1) += XQbe_Vbei;
|
||||
*(here->VBICbaseBIEmitEIPtr + 1) += -XQbe_Vbei;
|
||||
*(here->VBICbaseBIBaseBIPtr + 1) += XQbe_Vbci;
|
||||
*(here->VBICbaseBICollCIPtr + 1) += -XQbe_Vbci;
|
||||
*(here->VBICemitEIBaseBIPtr + 1) += -XQbe_Vbei;
|
||||
*(here->VBICemitEIEmitEIPtr + 1) += XQbe_Vbei;
|
||||
*(here->VBICbaseBIBaseBIPtr + 1) += XQbe_Vbci;
|
||||
*(here->VBICbaseBICollCIPtr + 1) += -XQbe_Vbci;
|
||||
*(here->VBICemitEIBaseBIPtr + 1) += -XQbe_Vbci;
|
||||
*(here->VBICemitEICollCIPtr + 1) += XQbe_Vbci;
|
||||
/*
|
||||
|
|
@ -280,6 +347,145 @@ c Stamp element: Qbcp
|
|||
*(here->VBICbaseBPSubsSIPtr + 1) += -XQbcp_Vbcp;
|
||||
*(here->VBICbaseBPBaseBPPtr + 1) += XQbcp_Vbcp;
|
||||
|
||||
if (here->VBIC_selfheat) {
|
||||
/*
|
||||
c Stamp element: Ibe
|
||||
*/
|
||||
*(here->VBICbaseBItempPtr) += Ibe_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Ibe_Vrth;
|
||||
/*
|
||||
c Stamp element: Ibex
|
||||
*/
|
||||
*(here->VBICbaseBXtempPtr) += Ibex_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Ibex_Vrth;
|
||||
/*
|
||||
c Stamp element: Itzf
|
||||
*/
|
||||
*(here->VBICcollCItempPtr) += Itzf_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Itzf_Vrth;
|
||||
/*
|
||||
c Stamp element: Itzr
|
||||
*/
|
||||
*(here->VBICemitEItempPtr) += Itzr_Vrth;
|
||||
*(here->VBICcollCItempPtr) += -Itzr_Vrth;
|
||||
/*
|
||||
c Stamp element: Ibc
|
||||
*/
|
||||
*(here->VBICbaseBItempPtr) += Ibc_Vrth;
|
||||
*(here->VBICcollCItempPtr) += -Ibc_Vrth;
|
||||
/*
|
||||
c Stamp element: Ibep
|
||||
*/
|
||||
*(here->VBICbaseBXtempPtr) += Ibep_Vrth;
|
||||
*(here->VBICbaseBPtempPtr) += -Ibep_Vrth;
|
||||
/*
|
||||
c Stamp element: Rcx
|
||||
*/
|
||||
*(here->VBICcollTempPtr) += Ircx_Vrth;
|
||||
*(here->VBICcollCXtempPtr) += -Ircx_Vrth;
|
||||
/*
|
||||
c Stamp element: Irci
|
||||
*/
|
||||
*(here->VBICcollCXtempPtr) += Irci_Vrth;
|
||||
*(here->VBICcollCItempPtr) += -Irci_Vrth;
|
||||
/*
|
||||
c Stamp element: Rbx
|
||||
*/
|
||||
*(here->VBICbaseTempPtr) += Irbx_Vrth;
|
||||
*(here->VBICbaseBXtempPtr) += -Irbx_Vrth;
|
||||
/*
|
||||
c Stamp element: Irbi
|
||||
*/
|
||||
*(here->VBICbaseBXtempPtr) += Irbi_Vrth;
|
||||
*(here->VBICbaseBItempPtr) += -Irbi_Vrth;
|
||||
/*
|
||||
c Stamp element: Re
|
||||
*/
|
||||
*(here->VBICemitTempPtr) += Ire_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Ire_Vrth;
|
||||
/*
|
||||
c Stamp element: Irbp
|
||||
*/
|
||||
*(here->VBICbaseBPtempPtr) += Irbp_Vrth;
|
||||
*(here->VBICcollCXtempPtr) += -Irbp_Vrth;
|
||||
/*
|
||||
c Stamp element: Ibcp
|
||||
*/
|
||||
*(here->VBICsubsSItempPtr) += Ibcp_Vrth;
|
||||
*(here->VBICbaseBPtempPtr) += -Ibcp_Vrth;
|
||||
/*
|
||||
c Stamp element: Iccp
|
||||
*/
|
||||
*(here->VBICbaseBXtempPtr) += Iccp_Vrth;
|
||||
*(here->VBICsubsSItempPtr) += -Iccp_Vrth;
|
||||
/*
|
||||
c Stamp element: Rs
|
||||
*/
|
||||
*(here->VBICsubsTempPtr) += Irs_Vrth;
|
||||
*(here->VBICsubsSItempPtr) += -Irs_Vrth;
|
||||
/*
|
||||
c Stamp element: Rth
|
||||
*/
|
||||
*(here->VBICtempTempPtr) += Irth_Vrth;
|
||||
/*
|
||||
c Stamp element: Ith
|
||||
*/
|
||||
*(here->VBICtempTempPtr) += -Ith_Vrth;
|
||||
|
||||
*(here->VBICtempBaseBIPtr) += -Ith_Vbei;
|
||||
*(here->VBICtempEmitEIPtr) += +Ith_Vbei;
|
||||
*(here->VBICtempBaseBIPtr) += -Ith_Vbci;
|
||||
*(here->VBICtempCollCIPtr) += +Ith_Vbci;
|
||||
*(here->VBICtempCollCIPtr) += -Ith_Vcei;
|
||||
*(here->VBICtempEmitEIPtr) += +Ith_Vcei;
|
||||
*(here->VBICtempBaseBXPtr) += -Ith_Vbex;
|
||||
*(here->VBICtempEmitEIPtr) += +Ith_Vbex;
|
||||
*(here->VBICtempBaseBXPtr) += -Ith_Vbep;
|
||||
*(here->VBICtempBaseBPPtr) += +Ith_Vbep;
|
||||
*(here->VBICtempSubsPtr) += -Ith_Vbcp;
|
||||
*(here->VBICtempBaseBPPtr) += +Ith_Vbcp;
|
||||
*(here->VBICtempBaseBXPtr) += -Ith_Vcep;
|
||||
*(here->VBICtempSubsPtr) += +Ith_Vcep;
|
||||
*(here->VBICtempCollCXPtr) += -Ith_Vrci;
|
||||
*(here->VBICtempCollCIPtr) += +Ith_Vrci;
|
||||
*(here->VBICtempBaseBIPtr) += -Ith_Vbcx;
|
||||
*(here->VBICtempCollCXPtr) += +Ith_Vbcx;
|
||||
*(here->VBICtempBaseBXPtr) += -Ith_Vrbi;
|
||||
*(here->VBICtempBaseBIPtr) += +Ith_Vrbi;
|
||||
*(here->VBICtempBaseBPPtr) += -Ith_Vrbp;
|
||||
*(here->VBICtempCollCXPtr) += +Ith_Vrbp;
|
||||
*(here->VBICtempCollPtr) += -Ith_Vrcx;
|
||||
*(here->VBICtempCollCXPtr) += +Ith_Vrcx;
|
||||
*(here->VBICtempBasePtr) += -Ith_Vrbx;
|
||||
*(here->VBICtempBaseBXPtr) += +Ith_Vrbx;
|
||||
*(here->VBICtempEmitPtr) += -Ith_Vre;
|
||||
*(here->VBICtempEmitEIPtr) += +Ith_Vre;
|
||||
*(here->VBICtempSubsPtr) += -Ith_Vrs;
|
||||
*(here->VBICtempSubsSIPtr) += +Ith_Vrs;
|
||||
|
||||
// //the charges
|
||||
*(here->VBICbaseBItempPtr + 1) += +XQbe_Vrth;
|
||||
*(here->VBICemitEItempPtr + 1) += -XQbe_Vrth;
|
||||
|
||||
*(here->VBICbaseBXtempPtr + 1) += +XQbex_Vrth;
|
||||
*(here->VBICemitEItempPtr + 1) += -XQbex_Vrth;
|
||||
|
||||
*(here->VBICbaseBItempPtr + 1) += +XQbc_Vrth;
|
||||
*(here->VBICcollCItempPtr + 1) += -XQbc_Vrth;
|
||||
|
||||
*(here->VBICbaseBItempPtr + 1) += +XQbcx_Vrth;
|
||||
*(here->VBICcollCXtempPtr + 1) += -XQbcx_Vrth;
|
||||
|
||||
*(here->VBICbaseBXtempPtr + 1) += +XQbep_Vrth;
|
||||
*(here->VBICbaseBPtempPtr + 1) += -XQbep_Vrth;
|
||||
|
||||
*(here->VBICsubsSItempPtr + 1) += +XQbcp_Vrth;
|
||||
*(here->VBICbaseBPtempPtr + 1) += -XQbcp_Vrth;
|
||||
|
||||
*(here->VBICtempTempPtr + 1) += -XQcth_Vrth;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -274,89 +274,129 @@ typedef struct sVBICinstance {
|
|||
|
||||
#define VBICibe VBICstate+9
|
||||
#define VBICibe_Vbei VBICstate+10
|
||||
#define VBICibe_Vrth VBICstate+11
|
||||
|
||||
#define VBICibex VBICstate+11
|
||||
#define VBICibex_Vbex VBICstate+12
|
||||
#define VBICibex VBICstate+12
|
||||
#define VBICibex_Vbex VBICstate+13
|
||||
#define VBICibex_Vrth VBICstate+14
|
||||
|
||||
#define VBICitzf VBICstate+13
|
||||
#define VBICitzf_Vbei VBICstate+14
|
||||
#define VBICitzf_Vbci VBICstate+15
|
||||
#define VBICitzf VBICstate+15
|
||||
#define VBICitzf_Vbei VBICstate+16
|
||||
#define VBICitzf_Vbci VBICstate+17
|
||||
#define VBICitzf_Vrth VBICstate+18
|
||||
|
||||
#define VBICitzr VBICstate+16
|
||||
#define VBICitzr_Vbci VBICstate+17
|
||||
#define VBICitzr_Vbei VBICstate+18
|
||||
#define VBICitzr VBICstate+19
|
||||
#define VBICitzr_Vbci VBICstate+20
|
||||
#define VBICitzr_Vbei VBICstate+21
|
||||
#define VBICitzr_Vrth VBICstate+22
|
||||
|
||||
#define VBICibc VBICstate+19
|
||||
#define VBICibc_Vbci VBICstate+20
|
||||
#define VBICibc_Vbei VBICstate+21
|
||||
#define VBICibc VBICstate+23
|
||||
#define VBICibc_Vbci VBICstate+24
|
||||
#define VBICibc_Vbei VBICstate+25
|
||||
#define VBICibc_Vrth VBICstate+26
|
||||
|
||||
#define VBICibep VBICstate+22
|
||||
#define VBICibep_Vbep VBICstate+23
|
||||
#define VBICibep VBICstate+27
|
||||
#define VBICibep_Vbep VBICstate+28
|
||||
#define VBICibep_Vrth VBICstate+29
|
||||
|
||||
#define VBICirci VBICstate+24
|
||||
#define VBICirci_Vrci VBICstate+25
|
||||
#define VBICirci_Vbci VBICstate+26
|
||||
#define VBICirci_Vbcx VBICstate+27
|
||||
#define VBICirci VBICstate+30
|
||||
#define VBICirci_Vrci VBICstate+31
|
||||
#define VBICirci_Vbci VBICstate+32
|
||||
#define VBICirci_Vbcx VBICstate+33
|
||||
#define VBICirci_Vrth VBICstate+34
|
||||
|
||||
#define VBICirbi VBICstate+28
|
||||
#define VBICirbi_Vrbi VBICstate+29
|
||||
#define VBICirbi_Vbei VBICstate+30
|
||||
#define VBICirbi_Vbci VBICstate+31
|
||||
#define VBICirbi VBICstate+35
|
||||
#define VBICirbi_Vrbi VBICstate+36
|
||||
#define VBICirbi_Vbei VBICstate+37
|
||||
#define VBICirbi_Vbci VBICstate+38
|
||||
#define VBICirbi_Vrth VBICstate+39
|
||||
|
||||
#define VBICirbp VBICstate+32
|
||||
#define VBICirbp_Vrbp VBICstate+33
|
||||
#define VBICirbp_Vbep VBICstate+34
|
||||
#define VBICirbp_Vbci VBICstate+35
|
||||
#define VBICirbp VBICstate+40
|
||||
#define VBICirbp_Vrbp VBICstate+41
|
||||
#define VBICirbp_Vbep VBICstate+42
|
||||
#define VBICirbp_Vbci VBICstate+43
|
||||
#define VBICirbp_Vrth VBICstate+44
|
||||
|
||||
|
||||
#define VBICqbe VBICstate+36
|
||||
#define VBICcqbe VBICstate+37
|
||||
#define VBICcqbeci VBICstate+38
|
||||
#define VBICqbe VBICstate+45
|
||||
#define VBICcqbe VBICstate+46
|
||||
#define VBICcqbeci VBICstate+47
|
||||
#define VBICcqbeth VBICstate+48
|
||||
|
||||
#define VBICqbex VBICstate+39
|
||||
#define VBICcqbex VBICstate+40
|
||||
#define VBICqbex VBICstate+49
|
||||
#define VBICcqbex VBICstate+50
|
||||
#define VBICcqbexth VBICstate+51
|
||||
|
||||
#define VBICqbc VBICstate+41
|
||||
#define VBICcqbc VBICstate+42
|
||||
#define VBICqbc VBICstate+52
|
||||
#define VBICcqbc VBICstate+53
|
||||
#define VBICcqbcth VBICstate+54
|
||||
|
||||
#define VBICqbcx VBICstate+43
|
||||
#define VBICcqbcx VBICstate+44
|
||||
#define VBICqbcx VBICstate+55
|
||||
#define VBICcqbcx VBICstate+56
|
||||
#define VBICcqbcxth VBICstate+57
|
||||
|
||||
#define VBICqbep VBICstate+45
|
||||
#define VBICcqbep VBICstate+46
|
||||
#define VBICcqbepci VBICstate+47
|
||||
#define VBICqbep VBICstate+58
|
||||
#define VBICcqbep VBICstate+59
|
||||
#define VBICcqbepci VBICstate+60
|
||||
#define VBICcqbepth VBICstate+61
|
||||
|
||||
#define VBICqbeo VBICstate+48
|
||||
#define VBICcqbeo VBICstate+49
|
||||
#define VBICgqbeo VBICstate+50
|
||||
#define VBICqbeo VBICstate+62
|
||||
#define VBICcqbeo VBICstate+63
|
||||
#define VBICgqbeo VBICstate+64
|
||||
|
||||
#define VBICqbco VBICstate+51
|
||||
#define VBICcqbco VBICstate+52
|
||||
#define VBICgqbco VBICstate+53
|
||||
#define VBICqbco VBICstate+65
|
||||
#define VBICcqbco VBICstate+66
|
||||
#define VBICgqbco VBICstate+67
|
||||
|
||||
#define VBICibcp VBICstate+54
|
||||
#define VBICibcp_Vbcp VBICstate+55
|
||||
#define VBICibcp VBICstate+68
|
||||
#define VBICibcp_Vrth VBICstate+69
|
||||
#define VBICibcp_Vbcp VBICstate+70
|
||||
|
||||
#define VBICiccp VBICstate+56
|
||||
#define VBICiccp_Vbep VBICstate+57
|
||||
#define VBICiccp_Vbci VBICstate+58
|
||||
#define VBICiccp_Vbcp VBICstate+59
|
||||
#define VBICiccp VBICstate+71
|
||||
#define VBICiccp_Vbep VBICstate+72
|
||||
#define VBICiccp_Vbci VBICstate+73
|
||||
#define VBICiccp_Vbcp VBICstate+74
|
||||
#define VBICiccp_Vrth VBICstate+75
|
||||
|
||||
#define VBICqbcp VBICstate+60
|
||||
#define VBICcqbcp VBICstate+61
|
||||
#define VBICqbcp VBICstate+76
|
||||
#define VBICcqbcp VBICstate+77
|
||||
#define VBICcqbcpth VBICstate+78
|
||||
|
||||
#define VBICircx_Vrcx VBICstate+62
|
||||
#define VBICirbx_Vrbx VBICstate+63
|
||||
#define VBICirs_Vrs VBICstate+64
|
||||
#define VBICire_Vre VBICstate+65
|
||||
#define VBICircx_Vrcx VBICstate+79
|
||||
#define VBICircx_Vrth VBICstate+80
|
||||
#define VBICirbx_Vrbx VBICstate+81
|
||||
#define VBICirbx_Vrth VBICstate+82
|
||||
#define VBICirs_Vrs VBICstate+83
|
||||
#define VBICirs_Vrth VBICstate+84
|
||||
#define VBICire_Vre VBICstate+85
|
||||
#define VBICire_Vrth VBICstate+86
|
||||
|
||||
#define VBICqcth VBICstate+66 /* thermal capacitor charge */
|
||||
#define VBICcqcth VBICstate+67 /* thermal capacitor current */
|
||||
#define VBICqcth VBICstate+87 /* thermal capacitor charge */
|
||||
#define VBICcqcth VBICstate+88 /* thermal capacitor current */
|
||||
|
||||
#define VBICvrth VBICstate+68
|
||||
#define VBICicth_Vrth VBICstate+69
|
||||
#define VBICvrth VBICstate+89
|
||||
#define VBICicth_Vrth VBICstate+90
|
||||
|
||||
#define VBICnumStates 70
|
||||
#define VBICirth_Vrth VBICstate+91
|
||||
|
||||
#define VBICith_Vrth VBICstate+92
|
||||
#define VBICith_Vrs VBICstate+93
|
||||
#define VBICith_Vbei VBICstate+94
|
||||
#define VBICith_Vbci VBICstate+95
|
||||
#define VBICith_Vcei VBICstate+96
|
||||
#define VBICith_Vbex VBICstate+97
|
||||
#define VBICith_Vbep VBICstate+98
|
||||
#define VBICith_Vbcp VBICstate+99
|
||||
#define VBICith_Vcep VBICstate+100
|
||||
#define VBICith_Vrci VBICstate+101
|
||||
#define VBICith_Vbcx VBICstate+102
|
||||
#define VBICith_Vrbi VBICstate+103
|
||||
#define VBICith_Vrbp VBICstate+104
|
||||
#define VBICith_Vrcx VBICstate+105
|
||||
#define VBICith_Vrbx VBICstate+106
|
||||
#define VBICith_Vre VBICstate+107
|
||||
|
||||
#define VBICnumStates 108
|
||||
|
||||
/* per model data */
|
||||
typedef struct sVBICmodel { /* model structure for a vbic */
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ Spice3 Implementation: 2003 Dietmar Warning DAnalyse GmbH
|
|||
#include "ngspice/sperror.h"
|
||||
#include "ngspice/devdefs.h"
|
||||
|
||||
int vbic_4T_et_cf_fj(double *,
|
||||
int vbic_4T_et_cf_fj(double *, double *,
|
||||
double *,double *,double *,double *,double *,double *,
|
||||
double *,double *,double *,double *,double *,double *, double *,
|
||||
double *,double *,double *,double *,double *,double *, double *,
|
||||
|
|
@ -118,59 +118,59 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
* model parameters
|
||||
*/
|
||||
p[0] = model->VBICtnom;
|
||||
p[1] = here->VBICtextCollResist;
|
||||
p[2] = here->VBICtintCollResist;
|
||||
p[3] = here->VBICtepiSatVoltage;
|
||||
p[4] = here->VBICtepiDoping;
|
||||
p[1] = model->VBICextCollResist;
|
||||
p[2] = model->VBICintCollResist;
|
||||
p[3] = model->VBICepiSatVoltage;
|
||||
p[4] = model->VBICepiDoping;
|
||||
p[5] = model->VBIChighCurFac;
|
||||
p[6] = here->VBICtextBaseResist;
|
||||
p[7] = here->VBICtintBaseResist;
|
||||
p[8] = here->VBICtemitterResist;
|
||||
p[9] = here->VBICtsubstrateResist;
|
||||
p[10] = here->VBICtparBaseResist;
|
||||
p[11] = here->VBICtsatCur;
|
||||
p[12] = here->VBICtemissionCoeffF;
|
||||
p[13] = here->VBICtemissionCoeffR;
|
||||
p[6] = model->VBICextBaseResist;
|
||||
p[7] = model->VBICintBaseResist;
|
||||
p[8] = model->VBICemitterResist;
|
||||
p[9] = model->VBICsubstrateResist;
|
||||
p[10] = model->VBICparBaseResist;
|
||||
p[11] = model->VBICsatCur;
|
||||
p[12] = model->VBICemissionCoeffF;
|
||||
p[13] = model->VBICemissionCoeffR;
|
||||
p[14] = model->VBICdeplCapLimitF;
|
||||
p[15] = model->VBICextOverlapCapBE;
|
||||
p[16] = here->VBICtdepletionCapBE;
|
||||
p[17] = here->VBICtpotentialBE;
|
||||
p[16] = model->VBICdepletionCapBE;
|
||||
p[17] = model->VBICpotentialBE;
|
||||
p[18] = model->VBICjunctionExpBE;
|
||||
p[19] = model->VBICsmoothCapBE;
|
||||
p[20] = model->VBICextOverlapCapBC;
|
||||
p[21] = here->VBICtdepletionCapBC;
|
||||
p[21] = model->VBICdepletionCapBC;
|
||||
p[22] = model->VBICepiCharge;
|
||||
p[23] = here->VBICtextCapBC;
|
||||
p[24] = here->VBICtpotentialBC;
|
||||
p[23] = model->VBICextCapBC;
|
||||
p[24] = model->VBICpotentialBC;
|
||||
p[25] = model->VBICjunctionExpBC;
|
||||
p[26] = model->VBICsmoothCapBC;
|
||||
p[27] = here->VBICtextCapSC;
|
||||
p[28] = here->VBICtpotentialSC;
|
||||
p[27] = model->VBICextCapSC;
|
||||
p[28] = model->VBICpotentialSC;
|
||||
p[29] = model->VBICjunctionExpSC;
|
||||
p[30] = model->VBICsmoothCapSC;
|
||||
p[31] = here->VBICtidealSatCurBE;
|
||||
p[31] = model->VBICidealSatCurBE;
|
||||
p[32] = model->VBICportionIBEI;
|
||||
p[33] = model->VBICidealEmissCoeffBE;
|
||||
p[34] = here->VBICtnidealSatCurBE;
|
||||
p[34] = model->VBICnidealSatCurBE;
|
||||
p[35] = model->VBICnidealEmissCoeffBE;
|
||||
p[36] = here->VBICtidealSatCurBC;
|
||||
p[36] = model->VBICidealSatCurBC;
|
||||
p[37] = model->VBICidealEmissCoeffBC;
|
||||
p[38] = here->VBICtnidealSatCurBC;
|
||||
p[38] = model->VBICnidealSatCurBC;
|
||||
p[39] = model->VBICnidealEmissCoeffBC;
|
||||
p[40] = model->VBICavalanchePar1BC;
|
||||
p[41] = here->VBICtavalanchePar2BC;
|
||||
p[42] = here->VBICtparasitSatCur;
|
||||
p[41] = model->VBICavalanchePar2BC;
|
||||
p[42] = model->VBICparasitSatCur;
|
||||
p[43] = model->VBICportionICCP;
|
||||
p[44] = model->VBICparasitFwdEmissCoeff;
|
||||
p[45] = here->VBICtidealParasitSatCurBE;
|
||||
p[46] = here->VBICtnidealParasitSatCurBE;
|
||||
p[47] = here->VBICtidealParasitSatCurBC;
|
||||
p[45] = model->VBICidealParasitSatCurBE;
|
||||
p[46] = model->VBICnidealParasitSatCurBE;
|
||||
p[47] = model->VBICidealParasitSatCurBC;
|
||||
p[48] = model->VBICidealParasitEmissCoeffBC;
|
||||
p[49] = here->VBICtnidealParasitSatCurBC;
|
||||
p[49] = model->VBICnidealParasitSatCurBC;
|
||||
p[50] = model->VBICnidealParasitEmissCoeffBC;
|
||||
p[51] = model->VBICearlyVoltF;
|
||||
p[52] = model->VBICearlyVoltR;
|
||||
p[53] = here->VBICtrollOffF;
|
||||
p[53] = model->VBICrollOffF;
|
||||
p[54] = model->VBICrollOffR;
|
||||
p[55] = model->VBICparRollOff;
|
||||
p[56] = model->VBICtransitTimeF;
|
||||
|
|
@ -211,12 +211,12 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
p[91] = model->VBICtempExpRCX;
|
||||
p[92] = model->VBICtempExpRBX;
|
||||
p[93] = model->VBICtempExpRBP;
|
||||
p[94] = here->VBICtsepISRR;
|
||||
p[94] = model->VBICsepISRR;
|
||||
p[95] = model->VBICtempExpXISR;
|
||||
p[96] = model->VBICdear;
|
||||
p[97] = model->VBICeap;
|
||||
p[98] = here->VBICtvbbe;
|
||||
p[99] = here->VBICtnbbe;
|
||||
p[98] = model->VBICvbbe;
|
||||
p[99] = model->VBICnbbe;
|
||||
p[100] = model->VBICibbe;
|
||||
p[101] = model->VBICtvbbe1;
|
||||
p[102] = model->VBICtvbbe2;
|
||||
|
|
@ -306,6 +306,7 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
} else if((ckt->CKTmode & MODEINITJCT) && (here->VBICoff==0)) {
|
||||
Vbe=Vbei=Vbex=model->VBICtype*here->VBICtVcrit;
|
||||
Vbc=Vbci=Vbcx=Vbep=0.0;
|
||||
Vbc=Vbci=Vbcx=-model->VBICtype*here->VBICtVcrit;
|
||||
Vbcp=Vbc-Vbe;
|
||||
Vrci=Vrbi=Vrbp=0.0;
|
||||
Vrcx=Vrbx=Vre=Vrs=0.0;
|
||||
|
|
@ -444,6 +445,70 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate1 + here->VBICirs_Vrs);
|
||||
*(ckt->CKTstate0 + here->VBICire_Vre) =
|
||||
*(ckt->CKTstate1 + here->VBICire_Vre);
|
||||
*(ckt->CKTstate0 + here->VBICibe_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICibe_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICibex_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICibex_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICitzf_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICitzf_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICitzr_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICitzr_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICibc_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICibc_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICibep_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICibep_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICircx_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICircx_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICirci_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICirci_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICirbx_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICirbx_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICirbi_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICirbi_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICire_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICire_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICirbp_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICirbp_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICibcp_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICibcp_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICiccp_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICiccp_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICirs_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICirs_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICirth_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICirth_Vrth);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbei)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vbei);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbci)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vbci);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vcei)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vcei);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbex)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vbex);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbep)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vbep);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbcp)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vbcp);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vcep)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vcep);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrci)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vrci);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbcx)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vbcx);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrbi)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vrbi);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrbp)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vrbp);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrcx)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vrcx);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrbx)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vrbx);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vre)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vre);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrs)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vrs);
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrth)=
|
||||
*(ckt->CKTstate1 + here->VBICith_Vrth);
|
||||
if (here->VBIC_selfheat)
|
||||
*(ckt->CKTstate0 + here->VBICqcth) =
|
||||
*(ckt->CKTstate1 + here->VBICqcth);
|
||||
|
|
@ -668,6 +733,38 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Irbx_Vrbx = *(ckt->CKTstate0 + here->VBICirbx_Vrbx);
|
||||
Irs_Vrs = *(ckt->CKTstate0 + here->VBICirs_Vrs);
|
||||
Ire_Vre = *(ckt->CKTstate0 + here->VBICire_Vre);
|
||||
Ibe_Vrth = *(ckt->CKTstate0 + here->VBICibe_Vrth);
|
||||
Ibex_Vrth = *(ckt->CKTstate0 + here->VBICibex_Vrth);
|
||||
Itzf_Vrth = *(ckt->CKTstate0 + here->VBICitzf_Vrth);
|
||||
Itzr_Vrth = *(ckt->CKTstate0 + here->VBICitzr_Vrth);
|
||||
Ibc_Vrth = *(ckt->CKTstate0 + here->VBICibc_Vrth);
|
||||
Ibep_Vrth = *(ckt->CKTstate0 + here->VBICibep_Vrth);
|
||||
Ircx_Vrth = *(ckt->CKTstate0 + here->VBICircx_Vrth);
|
||||
Irci_Vrth = *(ckt->CKTstate0 + here->VBICirci_Vrth);
|
||||
Irbx_Vrth = *(ckt->CKTstate0 + here->VBICirbx_Vrth);
|
||||
Irbi_Vrth = *(ckt->CKTstate0 + here->VBICirbi_Vrth);
|
||||
Ire_Vrth = *(ckt->CKTstate0 + here->VBICire_Vrth);
|
||||
Irbp_Vrth = *(ckt->CKTstate0 + here->VBICirbp_Vrth);
|
||||
Ibcp_Vrth = *(ckt->CKTstate0 + here->VBICibcp_Vrth);
|
||||
Iccp_Vrth = *(ckt->CKTstate0 + here->VBICiccp_Vrth);
|
||||
Irs_Vrth = *(ckt->CKTstate0 + here->VBICirs_Vrth);
|
||||
Irth_Vrth = *(ckt->CKTstate0 + here->VBICirth_Vrth);
|
||||
Ith_Vrth = *(ckt->CKTstate0 + here->VBICith_Vrth);
|
||||
Ith_Vbei = *(ckt->CKTstate0 + here->VBICith_Vbei);
|
||||
Ith_Vbci = *(ckt->CKTstate0 + here->VBICith_Vbci);
|
||||
Ith_Vcei = *(ckt->CKTstate0 + here->VBICith_Vcei);
|
||||
Ith_Vbex = *(ckt->CKTstate0 + here->VBICith_Vbex);
|
||||
Ith_Vbep = *(ckt->CKTstate0 + here->VBICith_Vbep);
|
||||
Ith_Vbcp = *(ckt->CKTstate0 + here->VBICith_Vbcp);
|
||||
Ith_Vcep = *(ckt->CKTstate0 + here->VBICith_Vcep);
|
||||
Ith_Vrci = *(ckt->CKTstate0 + here->VBICith_Vrci);
|
||||
Ith_Vbcx = *(ckt->CKTstate0 + here->VBICith_Vbcx);
|
||||
Ith_Vrbi = *(ckt->CKTstate0 + here->VBICith_Vrbi);
|
||||
Ith_Vrbp = *(ckt->CKTstate0 + here->VBICith_Vrbp);
|
||||
Ith_Vrcx = *(ckt->CKTstate0 + here->VBICith_Vrcx);
|
||||
Ith_Vrbx = *(ckt->CKTstate0 + here->VBICith_Vrbx);
|
||||
Ith_Vre = *(ckt->CKTstate0 + here->VBICith_Vre);
|
||||
Ith_Vrs = *(ckt->CKTstate0 + here->VBICith_Vrs);
|
||||
goto load;
|
||||
}
|
||||
/*
|
||||
|
|
@ -696,9 +793,28 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/*
|
||||
* determine dc current and derivatives
|
||||
*/
|
||||
// define some voltages for debugging
|
||||
// Vrth = 50;
|
||||
// Vbei = 0.9;
|
||||
// Vbe = 0.9;
|
||||
// Vbc = 0.2;
|
||||
// Vbci = 0.2;
|
||||
// Vbex = 0.9;
|
||||
// Vbcx = 0.2;
|
||||
// Vrbp = 0.05;
|
||||
// Vrs = 0.05;
|
||||
// Vrcx = 0.05;
|
||||
// Vrci = 0.1;
|
||||
// Vrbi = 0.1;
|
||||
// Vre = 0.05;
|
||||
// Vcei = 0.7;
|
||||
// Vbcp = -0.9;
|
||||
// Vbep = 0.1;
|
||||
// Vrbx = 0.01;
|
||||
// end debugging
|
||||
Vcei = Vbei - Vbci;
|
||||
Vcep = Vbep - Vbcp;
|
||||
iret = vbic_4T_et_cf_fj(p
|
||||
iret = vbic_4T_et_cf_fj(p, &here->VBICtemp
|
||||
,&Vrth, &Vbei, &Vbex, &Vbci, &Vbep, &Vbcp
|
||||
,&Vrcx, &Vbcx, &Vrci, &Vrbx, &Vrbi, &Vre, &Vrbp
|
||||
,&Vrs, &Vbe, &Vbc, &Vcei, &Vcep, &Ibe, &Ibe_Vrth
|
||||
|
|
@ -777,6 +893,12 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->VBICcqbeo) = Qbeo_Vbe;
|
||||
*(ckt->CKTstate0 + here->VBICcqbco) = Qbco_Vbc;
|
||||
*(ckt->CKTstate0 + here->VBICcqbcp) = Qbcp_Vbcp;
|
||||
*(ckt->CKTstate0 + here->VBICcqbeth) = Qbe_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICcqbexth) = Qbex_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICcqbcth) = Qbc_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICcqbcxth) = Qbcx_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICcqbepth) = Qbep_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICcqbcpth) = Qbcp_Vrth;
|
||||
if (here->VBIC_selfheat)
|
||||
*(ckt->CKTstate0 + here->VBICcqcth) = Qcth_Vrth;
|
||||
continue; /* go to 1000 */
|
||||
|
|
@ -857,6 +979,19 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->VBICcqbep);
|
||||
*(ckt->CKTstate1 + here->VBICcqbcp) =
|
||||
*(ckt->CKTstate0 + here->VBICcqbcp);
|
||||
*(ckt->CKTstate1 + here->VBICcqbeth) =
|
||||
*(ckt->CKTstate0 + here->VBICcqbeth);
|
||||
*(ckt->CKTstate1 + here->VBICcqbexth) =
|
||||
*(ckt->CKTstate0 + here->VBICcqbexth);
|
||||
*(ckt->CKTstate1 + here->VBICcqbcth) =
|
||||
*(ckt->CKTstate0 + here->VBICcqbcth);
|
||||
*(ckt->CKTstate1 + here->VBICcqbcxth) =
|
||||
*(ckt->CKTstate0 + here->VBICcqbcxth);
|
||||
*(ckt->CKTstate1 + here->VBICcqbepth) =
|
||||
*(ckt->CKTstate0 + here->VBICcqbepth);
|
||||
*(ckt->CKTstate1 + here->VBICcqbcpth) =
|
||||
*(ckt->CKTstate0 + here->VBICcqbepth);
|
||||
|
||||
if (here->VBIC_selfheat)
|
||||
*(ckt->CKTstate1 + here->VBICcqcth) =
|
||||
*(ckt->CKTstate0 + here->VBICcqcth);
|
||||
|
|
@ -941,6 +1076,38 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->VBICire_Vre) = Ire_Vre;
|
||||
*(ckt->CKTstate0 + here->VBICcqcth) = Icth;
|
||||
*(ckt->CKTstate0 + here->VBICicth_Vrth) = Icth_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICibe_Vrth)=Ibe_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICibex_Vrth)=Ibex_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICitzf_Vrth)=Itzf_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICitzr_Vrth)=Itzr_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICibc_Vrth)=Ibc_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICibep_Vrth)=Ibep_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICircx_Vrth)=Ircx_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICirci_Vrth)=Irci_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICirbx_Vrth)=Irbx_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICirbi_Vrth)=Irbi_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICire_Vrth)=Ire_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICirbp_Vrth)=Irbp_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICibcp_Vrth)=Ibcp_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICiccp_Vrth)=Iccp_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICirs_Vrth)=Irs_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICirth_Vrth)=Irth_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrth)=Ith_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbei)=Ith_Vbei;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbci)=Ith_Vbci;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vcei)=Ith_Vcei;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbex)=Ith_Vbex;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbep)=Ith_Vbep;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbcp)=Ith_Vbcp;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vcep)=Ith_Vcep;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrci)=Ith_Vrci;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vbcx)=Ith_Vbcx;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrbi)=Ith_Vrbi;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrbp)=Ith_Vrbp;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrcx)=Ith_Vrcx;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrbx)=Ith_Vrbx;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vre)=Ith_Vre;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrs)=Ith_Vrs;
|
||||
|
||||
load:
|
||||
/*
|
||||
|
|
@ -1338,7 +1505,7 @@ c Stamp element: Ith
|
|||
return(OK);
|
||||
}
|
||||
|
||||
int vbic_4T_et_cf_fj(double *p
|
||||
int vbic_4T_et_cf_fj(double *p, double *Tamb
|
||||
,double *Vrth, double *Vbei, double *Vbex, double *Vbci, double *Vbep, double *Vbcp
|
||||
,double *Vrcx, double *Vbcx, double *Vrci, double *Vrbx, double *Vrbi, double *Vre, double *Vrbp
|
||||
,double *Vrs, double *Vbe, double *Vbc, double *Vcei, double *Vcep, double *Ibe, double *Ibe_Vrth
|
||||
|
|
@ -1451,7 +1618,7 @@ double Ith_Iccp,Ith_Ircx,Ith_Irci,Ith_Irbx,Ith_Irbi,Ith_Ire,Ith_Irbp;
|
|||
/* Function and derivative code */
|
||||
|
||||
Tini=2.731500e+02+p[0];
|
||||
Tdev=(2.731500e+02+p[0])+(*Vrth);
|
||||
Tdev=(*Tamb)+(*Vrth);
|
||||
Tdev_Vrth=1.0;
|
||||
Vtv=1.380662e-23*Tdev/1.602189e-19;
|
||||
Vtv_Tdev=8.617347e-5;
|
||||
|
|
|
|||
|
|
@ -477,10 +477,6 @@ VBICsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
else
|
||||
here->VBIC_selfheat = 0;
|
||||
|
||||
if((model->VBICthermalResistGiven) && (model->VBICthermalCapacitance < 1e-12))
|
||||
model->VBICthermalCapacitance = 1e-12;
|
||||
|
||||
|
||||
if(here->VBICcollCINode == 0) {
|
||||
error = CKTmkVolt(ckt, &tmp, here->VBICname, "collCI");
|
||||
if(error) return(error);
|
||||
|
|
|
|||
Loading…
Reference in New Issue