Merge remote-tracking branch 'origin/markus_dev' into hicum2-mario
This commit is contained in:
commit
1302e6ac75
|
|
@ -0,0 +1,4 @@
|
|||
n_c @q_q_h[area] @q_q_h[betaac] @q_q_h[betadc] @q_q_h[ccs] @q_q_h[cmui] @q_q_h[cmux] @q_q_h[cpii] @q_q_h[cpix] @q_q_h[crbi] @q_q_h[dtsh] @q_q_h[ft] @q_q_h[gmi] @q_q_h[gms] @q_q_h[iavl] @q_q_h[ib] @q_q_h[ibci] @q_q_h[ibei] @q_q_h[ic] @q_q_h[ick] @q_q_h[icvb] @q_q_h[icvc] @q_q_h[ie] @q_q_h[is] @q_q_h[it] @q_q_h[m] @q_q_h[p] @q_q_h[rb] @q_q_h[rbi] @q_q_h[rcx_t] @q_q_h[re_t] @q_q_h[rmui] @q_q_h[rmux] @q_q_h[roi] @q_q_h[rpii] @q_q_h[rpix] @q_q_h[temp] @q_q_h[tf] @q_q_h[tk] @q_q_h[vbbp] @q_q_h[vbc] @q_q_h[vbe] @q_q_h[vbici] @q_q_h[vbiei] @q_q_h[vbpbi] @q_q_h[vce] @q_q_h[vciei] @q_q_h[vsc] n_b n_b_forced n_bx n_c n_c_forced n_cx n_e n_e_forced n_ex n_s n_sx n_t q_q_h#collCI q_q_h#emitEI q_q_h#subsSI v_v_b#branch v_v_c#branch v_v_e#branch v_v_s#branch
|
||||
2.00000000e+00 1.00000000e+00 2.01746671e+05 -8.04244503e+01 0.00000000e+00 3.50311244e-15 2.70336374e-15 6.72516281e-15 4.93507402e-15 0.00000000e+00 3.95610869e-08 2.13703336e+12 2.76080200e-10 1.00000000e-18 1.29187266e-13 -9.07852493e-14 -1.29257913e-13 3.84900492e-14 7.30135377e-12 3.19625139e-02 3.00000000e-01 2.00000000e+00 -7.21060090e-12 -2.00000000e-18 7.17207647e-12 1.00000000e+00 1.46522842e-11 1.81743808e+01 3.17438082e+00 1.00000000e+01 1.99941623e+00 3.45139302e+12 1.00000000e+18 3.62213587e+09 7.55020036e+11 7.29998838e+14 2.68500000e+01 4.79428371e-13 3.00000000e+02 -1.44169925e-11 0.00000000e+00 0.00000000e+00 -1.70000000e+00 3.00000000e-01 -2.88158386e-13 0.00000000e+00 2.00000000e+00 0.00000000e+00 3.00000000e-01 3.00000000e-01 3.00000000e-01 2.00000000e+00 2.00000000e+00 2.00000000e+00 1.44212018e-14 7.21060090e-15 0.00000000e+00 2.00000000e-21 0.00000000e+00 3.95610606e-08 2.00000000e+00 1.44314137e-11 4.00000000e-21 5.68434189e-14 -7.27595761e-12 7.21060090e-12 2.00000000e-18
|
||||
n_c @q_q_h[area] @q_q_h[betaac] @q_q_h[betadc] @q_q_h[ccs] @q_q_h[cmui] @q_q_h[cmux] @q_q_h[cpii] @q_q_h[cpix] @q_q_h[crbi] @q_q_h[dtsh] @q_q_h[ft] @q_q_h[gmi] @q_q_h[gms] @q_q_h[iavl] @q_q_h[ib] @q_q_h[ibci] @q_q_h[ibei] @q_q_h[ic] @q_q_h[ick] @q_q_h[icvb] @q_q_h[icvc] @q_q_h[ie] @q_q_h[is] @q_q_h[it] @q_q_h[m] @q_q_h[p] @q_q_h[rb] @q_q_h[rbi] @q_q_h[rcx_t] @q_q_h[re_t] @q_q_h[rmui] @q_q_h[rmux] @q_q_h[roi] @q_q_h[rpii] @q_q_h[rpix] @q_q_h[temp] @q_q_h[tf] @q_q_h[tk] @q_q_h[vbbp] @q_q_h[vbc] @q_q_h[vbe] @q_q_h[vbici] @q_q_h[vbiei] @q_q_h[vbpbi] @q_q_h[vce] @q_q_h[vciei] @q_q_h[vsc] n_b n_b_forced n_bx n_c n_c_forced n_cx n_e n_e_forced n_ex n_s n_sx n_t q_q_h#collCI q_q_h#emitEI q_q_h#subsSI v_v_b#branch v_v_c#branch v_v_e#branch v_v_s#branch
|
||||
2.00000000e+00 1.00000000e+00 2.01746671e+05 -8.04244503e+01 0.00000000e+00 3.50311244e-15 2.70336374e-15 6.72516281e-15 4.93507402e-15 0.00000000e+00 3.95610869e-08 2.13703336e+12 2.76080200e-10 1.00000000e-18 1.29187266e-13 -9.07852493e-14 -1.29257913e-13 3.84900492e-14 7.30135377e-12 3.19625139e-02 3.00000000e-01 2.00000000e+00 -7.21060090e-12 -2.00000000e-18 7.17207647e-12 1.00000000e+00 1.46522842e-11 1.81743808e+01 3.17438082e+00 1.00000000e+01 1.99941623e+00 3.45139302e+12 1.00000000e+18 3.62213587e+09 7.55020036e+11 7.29998838e+14 2.68500000e+01 4.79428371e-13 3.00000000e+02 -1.44169925e-11 0.00000000e+00 0.00000000e+00 -1.70000000e+00 3.00000000e-01 -2.88158386e-13 0.00000000e+00 2.00000000e+00 0.00000000e+00 3.00000000e-01 3.00000000e-01 3.00000000e-01 2.00000000e+00 2.00000000e+00 2.00000000e+00 1.44212018e-14 7.21060090e-15 0.00000000e+00 2.00000000e-21 0.00000000e+00 3.95610606e-08 2.00000000e+00 1.44314137e-11 4.00000000e-21 5.68434189e-14 -7.27595761e-12 7.21060090e-12 2.00000000e-18
|
||||
|
|
@ -97,6 +97,8 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
/* loop through all the models */
|
||||
for( ; model != NULL; model = HICUMnextModel(model)) {
|
||||
|
||||
int selfheat = ((model->HICUMflsh > 0) && (model->HICUMrthGiven) && (model->HICUMrth > 0.0));
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for( here = HICUMinstances(model); here!= NULL;
|
||||
here = HICUMnextInstance(here)) {
|
||||
|
|
@ -403,7 +405,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(here->HICUMsubsSubsSIPtr + 1) += -XQsu_Vsis;
|
||||
|
||||
// Stamps with SH
|
||||
if (model->HICUMflsh && model->HICUMrth >= 0.001) { //dirty: hardcoded MIN_R
|
||||
if (selfheat) {
|
||||
// Stamp element: Ibiei f_Bi = + f_Ei = -
|
||||
*(here->HICUMbaseBItempPtr) += Ibiei_Vrth;
|
||||
*(here->HICUMemitEItempPtr) += -Ibiei_Vrth;
|
||||
|
|
@ -512,9 +514,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
//Qcth from 0 to T f_0=- f_T=+
|
||||
*(here->HICUMtempTempPtr + 1) += -XQcth_Vrth;
|
||||
|
||||
} else {
|
||||
*(here->HICUMtempTempPtr) += ckt->CKTgmin;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ typedef struct sHICUMinstance {
|
|||
const int HICUMbaseNode; /* number of base node of hicum */
|
||||
const int HICUMemitNode; /* number of emitter node of hicum */
|
||||
const int HICUMsubsNode; /* number of substrate node of hicum */
|
||||
const int HICUMtempNode; /* number of the temperature node of the hicum */
|
||||
int HICUMtempNode; /* number of the temperature node of the hicum */
|
||||
int HICUMcollCINode; /* number of internal collector node of hicum */
|
||||
int HICUMbaseBINode; /* number of internal base node of hicum */
|
||||
int HICUMemitEINode; /* number of internal emitter node of hicum */
|
||||
|
|
@ -235,8 +235,27 @@ typedef struct sHICUMinstance {
|
|||
|
||||
/* excess phase */
|
||||
double *HICUMxfXfPtr;
|
||||
double *HICUMxfBaseBIPtr;
|
||||
double *HICUMxfEmitEIPtr;
|
||||
double *HICUMxfCollCIPtr;
|
||||
double *HICUMxfTempPtr;
|
||||
|
||||
double *HICUMxf1Xf1Ptr;
|
||||
double *HICUMxf1TempPtr;
|
||||
double *HICUMxf1BaseBIPtr;
|
||||
double *HICUMxf1EmitEIPtr;
|
||||
double *HICUMxf1CollCIPtr;
|
||||
double *HICUMxf1Xf2Ptr;
|
||||
|
||||
double *HICUMxf2Xf1Ptr;
|
||||
double *HICUMxf2TempPtr;
|
||||
double *HICUMxf2BaseBIPtr;
|
||||
double *HICUMxf2EmitEIPtr;
|
||||
double *HICUMxf2CollCIPtr;
|
||||
double *HICUMxf2Xf2Ptr;
|
||||
double *HICUMemitXf2Ptr;
|
||||
double *HICUMemitEIXf2Ptr;
|
||||
double *HICUMcollCIXf2Ptr;
|
||||
|
||||
/* self heating */
|
||||
double *HICUMcollTempPtr;
|
||||
|
|
@ -326,149 +345,162 @@ typedef struct sHICUMinstance {
|
|||
#define HICUMiciei HICUMstate+16
|
||||
#define HICUMiciei_Vbiei HICUMstate+17
|
||||
#define HICUMiciei_Vbici HICUMstate+18
|
||||
#define HICUMiciei_Vrth HICUMstate+19
|
||||
#define HICUMiciei_Vxf2 HICUMstate+19
|
||||
#define HICUMiciei_Vrth HICUMstate+20
|
||||
|
||||
#define HICUMibici HICUMstate+20
|
||||
#define HICUMibici_Vbici HICUMstate+21
|
||||
#define HICUMibici_Vbiei HICUMstate+22
|
||||
#define HICUMibici_Vrth HICUMstate+23
|
||||
#define HICUMibici HICUMstate+21
|
||||
#define HICUMibici_Vbici HICUMstate+22
|
||||
#define HICUMibici_Vbiei HICUMstate+23
|
||||
#define HICUMibici_Vrth HICUMstate+24
|
||||
|
||||
#define HICUMibpbi HICUMstate+24
|
||||
#define HICUMibpbi_Vbpbi HICUMstate+25
|
||||
#define HICUMibpbi_Vbiei HICUMstate+26
|
||||
#define HICUMibpbi_Vbici HICUMstate+27
|
||||
#define HICUMibpbi_Vrth HICUMstate+28
|
||||
#define HICUMibpbi HICUMstate+25
|
||||
#define HICUMibpbi_Vbpbi HICUMstate+26
|
||||
#define HICUMibpbi_Vbiei HICUMstate+27
|
||||
#define HICUMibpbi_Vbici HICUMstate+28
|
||||
#define HICUMibpbi_Vrth HICUMstate+29
|
||||
|
||||
#define HICUMibpci HICUMstate+29
|
||||
#define HICUMibpci_Vbpci HICUMstate+30
|
||||
#define HICUMibpci_Vrth HICUMstate+31
|
||||
#define HICUMibpci HICUMstate+30
|
||||
#define HICUMibpci_Vbpci HICUMstate+31
|
||||
#define HICUMibpci_Vrth HICUMstate+32
|
||||
|
||||
#define HICUMisici HICUMstate+32
|
||||
#define HICUMisici_Vsici HICUMstate+33
|
||||
#define HICUMisici_Vrth HICUMstate+34
|
||||
#define HICUMisici HICUMstate+33
|
||||
#define HICUMisici_Vsici HICUMstate+34
|
||||
#define HICUMisici_Vrth HICUMstate+35
|
||||
|
||||
#define HICUMibpsi HICUMstate+35
|
||||
#define HICUMibpsi_Vbpci HICUMstate+36
|
||||
#define HICUMibpsi_Vsici HICUMstate+37
|
||||
#define HICUMibpsi_Vrth HICUMstate+38
|
||||
#define HICUMibpsi HICUMstate+36
|
||||
#define HICUMibpsi_Vbpci HICUMstate+37
|
||||
#define HICUMibpsi_Vsici HICUMstate+38
|
||||
#define HICUMibpsi_Vrth HICUMstate+39
|
||||
|
||||
#define HICUMisis_Vsis HICUMstate+39
|
||||
#define HICUMisis_Vsis HICUMstate+40
|
||||
|
||||
#define HICUMieie HICUMstate+40 // needed for re-flicker noise
|
||||
#define HICUMieie_Vrth HICUMstate+41
|
||||
#define HICUMieie HICUMstate+41 // needed for re-flicker noise
|
||||
#define HICUMieie_Vrth HICUMstate+42
|
||||
|
||||
#define HICUMqrbi HICUMstate+42
|
||||
#define HICUMcqrbi HICUMstate+43
|
||||
#define HICUMqrbi_Vbiei HICUMstate+44
|
||||
#define HICUMqrbi_Vbici HICUMstate+45
|
||||
#define HICUMqrbi_Vrth HICUMstate+46
|
||||
#define HICUMqrbi HICUMstate+43
|
||||
#define HICUMcqrbi HICUMstate+44
|
||||
#define HICUMqrbi_Vbiei HICUMstate+45
|
||||
#define HICUMqrbi_Vbici HICUMstate+46
|
||||
#define HICUMqrbi_Vrth HICUMstate+47
|
||||
|
||||
#define HICUMqjei HICUMstate+47
|
||||
#define HICUMcqjei HICUMstate+48
|
||||
#define HICUMqjei_Vrth HICUMstate+49
|
||||
#define HICUMqjei HICUMstate+48
|
||||
#define HICUMcqjei HICUMstate+49
|
||||
#define HICUMqjei_Vrth HICUMstate+50
|
||||
|
||||
#define HICUMqf HICUMstate+50
|
||||
#define HICUMcqf HICUMstate+51
|
||||
#define HICUMqf_Vbici HICUMstate+52
|
||||
#define HICUMqf_Vrth HICUMstate+53
|
||||
#define HICUMqf HICUMstate+51
|
||||
#define HICUMcqf HICUMstate+52
|
||||
#define HICUMqf_Vbici HICUMstate+53
|
||||
#define HICUMqf_Vxf HICUMstate+54
|
||||
#define HICUMqf_Vrth HICUMstate+55
|
||||
|
||||
#define HICUMqr HICUMstate+54
|
||||
#define HICUMcqr HICUMstate+55
|
||||
#define HICUMqr_Vbiei HICUMstate+56
|
||||
#define HICUMqr_Vrth HICUMstate+57
|
||||
#define HICUMqr HICUMstate+56
|
||||
#define HICUMcqr HICUMstate+57
|
||||
#define HICUMqr_Vbiei HICUMstate+58
|
||||
#define HICUMqr_Vrth HICUMstate+59
|
||||
|
||||
#define HICUMqjci HICUMstate+58
|
||||
#define HICUMcqjci HICUMstate+59
|
||||
#define HICUMqjci_Vrth HICUMstate+59
|
||||
#define HICUMqjci HICUMstate+60
|
||||
#define HICUMcqjci HICUMstate+61
|
||||
#define HICUMqjci_Vrth HICUMstate+62
|
||||
|
||||
#define HICUMqjep HICUMstate+60
|
||||
#define HICUMcqjep HICUMstate+61
|
||||
#define HICUMqjep_Vrth HICUMstate+62
|
||||
#define HICUMqjep HICUMstate+63
|
||||
#define HICUMcqjep HICUMstate+64
|
||||
#define HICUMqjep_Vrth HICUMstate+65
|
||||
|
||||
#define HICUMqjcx0_i HICUMstate+63
|
||||
#define HICUMcqcx0_t_i HICUMstate+64
|
||||
#define HICUMqjcx0_i_Vrth HICUMstate+65
|
||||
#define HICUMqjcx0_i HICUMstate+66
|
||||
#define HICUMcqcx0_t_i HICUMstate+67
|
||||
#define HICUMqjcx0_i_Vrth HICUMstate+68
|
||||
|
||||
#define HICUMqjcx0_ii HICUMstate+66
|
||||
#define HICUMcqcx0_t_ii HICUMstate+67
|
||||
#define HICUMqjcx0_ii_Vrth HICUMstate+68
|
||||
#define HICUMqjcx0_ii HICUMstate+69
|
||||
#define HICUMcqcx0_t_ii HICUMstate+70
|
||||
#define HICUMqjcx0_ii_Vrth HICUMstate+71
|
||||
|
||||
#define HICUMqdsu HICUMstate+70
|
||||
#define HICUMcqdsu HICUMstate+71
|
||||
#define HICUMqdsu_Vrth HICUMstate+72
|
||||
#define HICUMqdsu_Vsici HICUMstate+73
|
||||
#define HICUMqdsu HICUMstate+72
|
||||
#define HICUMcqdsu HICUMstate+73
|
||||
#define HICUMqdsu_Vrth HICUMstate+74
|
||||
#define HICUMqdsu_Vsici HICUMstate+75
|
||||
|
||||
#define HICUMqjs HICUMstate+74
|
||||
#define HICUMcqjs HICUMstate+75
|
||||
#define HICUMqjs_Vrth HICUMstate+76
|
||||
#define HICUMqjs HICUMstate+76
|
||||
#define HICUMcqjs HICUMstate+77
|
||||
#define HICUMqjs_Vrth HICUMstate+78
|
||||
|
||||
#define HICUMqscp HICUMstate+77
|
||||
#define HICUMcqscp HICUMstate+78
|
||||
#define HICUMqscp_Vrth HICUMstate+79
|
||||
#define HICUMqscp HICUMstate+79
|
||||
#define HICUMcqscp HICUMstate+80
|
||||
#define HICUMqscp_Vrth HICUMstate+81
|
||||
|
||||
#define HICUMqbepar1 HICUMstate+80
|
||||
#define HICUMcqbepar1 HICUMstate+81
|
||||
#define HICUMgqbepar1 HICUMstate+82
|
||||
#define HICUMqbepar1 HICUMstate+82
|
||||
#define HICUMcqbepar1 HICUMstate+83
|
||||
#define HICUMgqbepar1 HICUMstate+84
|
||||
|
||||
#define HICUMqbepar2 HICUMstate+83
|
||||
#define HICUMcqbepar2 HICUMstate+84
|
||||
#define HICUMgqbepar2 HICUMstate+85
|
||||
#define HICUMqbepar2 HICUMstate+85
|
||||
#define HICUMcqbepar2 HICUMstate+86
|
||||
#define HICUMgqbepar2 HICUMstate+87
|
||||
|
||||
#define HICUMqbcpar1 HICUMstate+86
|
||||
#define HICUMcqbcpar1 HICUMstate+87
|
||||
#define HICUMgqbcpar1 HICUMstate+88
|
||||
#define HICUMqbcpar1 HICUMstate+88
|
||||
#define HICUMcqbcpar1 HICUMstate+89
|
||||
#define HICUMgqbcpar1 HICUMstate+90
|
||||
|
||||
#define HICUMqbcpar2 HICUMstate+89
|
||||
#define HICUMcqbcpar2 HICUMstate+90
|
||||
#define HICUMgqbcpar2 HICUMstate+91
|
||||
#define HICUMqbcpar2 HICUMstate+91
|
||||
#define HICUMcqbcpar2 HICUMstate+92
|
||||
#define HICUMgqbcpar2 HICUMstate+93
|
||||
|
||||
#define HICUMqsu HICUMstate+92
|
||||
#define HICUMcqsu HICUMstate+93
|
||||
#define HICUMgqsu HICUMstate+94
|
||||
#define HICUMqsu HICUMstate+94
|
||||
#define HICUMcqsu HICUMstate+95
|
||||
#define HICUMgqsu HICUMstate+96
|
||||
|
||||
#define HICUMqcth HICUMstate+95
|
||||
#define HICUMcqcth HICUMstate+96
|
||||
#define HICUMqcth HICUMstate+97
|
||||
#define HICUMcqcth HICUMstate+98
|
||||
|
||||
#define HICUMvrth HICUMstate+97
|
||||
#define HICUMicth_dT HICUMstate+98
|
||||
#define HICUMvrth HICUMstate+99
|
||||
#define HICUMicth_dT HICUMstate+100
|
||||
|
||||
#define HICUMvxf HICUMstate+99
|
||||
#define HICUMqxf HICUMstate+100
|
||||
#define HICUMcqxf HICUMstate+101
|
||||
#define HICUMgqxf HICUMstate+102
|
||||
#define HICUMixf_Vbiei HICUMstate+103
|
||||
#define HICUMixf_Vbici HICUMstate+104
|
||||
#define HICUMvxf HICUMstate+101
|
||||
#define HICUMqxf HICUMstate+102
|
||||
#define HICUMqxf_Vxf HICUMstate+103
|
||||
#define HICUMcqxf HICUMstate+104
|
||||
#define HICUMgqxf HICUMstate+105
|
||||
#define HICUMixf HICUMstate+106
|
||||
#define HICUMixf_Vbiei HICUMstate+107
|
||||
#define HICUMixf_Vbici HICUMstate+108
|
||||
#define HICUMixf_Vxf HICUMstate+109
|
||||
#define HICUMixf_Vrth HICUMstate+110
|
||||
|
||||
#define HICUMvxf1 HICUMstate+105
|
||||
#define HICUMqxf1 HICUMstate+106
|
||||
#define HICUMcqxf1 HICUMstate+107
|
||||
#define HICUMgqxf1 HICUMstate+108
|
||||
#define HICUMixf1_Vbiei HICUMstate+109
|
||||
#define HICUMixf1_Vbici HICUMstate+110
|
||||
#define HICUMixf1_Vfx2 HICUMstate+111
|
||||
#define HICUMvxf1 HICUMstate+111
|
||||
#define HICUMqxf1 HICUMstate+112
|
||||
#define HICUMqxf1_Vxf1 HICUMstate+113
|
||||
#define HICUMcqxf1 HICUMstate+114
|
||||
#define HICUMgqxf1 HICUMstate+115
|
||||
#define HICUMixf1 HICUMstate+116
|
||||
#define HICUMixf1_Vbiei HICUMstate+117
|
||||
#define HICUMixf1_Vbici HICUMstate+118
|
||||
#define HICUMixf1_Vxf2 HICUMstate+119
|
||||
#define HICUMixf1_Vrth HICUMstate+120
|
||||
|
||||
#define HICUMvxf2 HICUMstate+112
|
||||
#define HICUMqxf2 HICUMstate+113
|
||||
#define HICUMcqxf2 HICUMstate+114
|
||||
#define HICUMgqxf2 HICUMstate+115
|
||||
#define HICUMixf2_Vbiei HICUMstate+116
|
||||
#define HICUMixf2_Vbici HICUMstate+117
|
||||
#define HICUMixf2_Vfx1 HICUMstate+118
|
||||
#define HICUMvxf2 HICUMstate+121
|
||||
#define HICUMqxf2 HICUMstate+122
|
||||
#define HICUMqxf2_Vxf2 HICUMstate+123
|
||||
#define HICUMcqxf2 HICUMstate+124
|
||||
#define HICUMgqxf2 HICUMstate+125
|
||||
#define HICUMixf2 HICUMstate+126
|
||||
#define HICUMixf2_Vbiei HICUMstate+127
|
||||
#define HICUMixf2_Vbici HICUMstate+128
|
||||
#define HICUMixf2_Vxf1 HICUMstate+129
|
||||
#define HICUMixf2_Vxf2 HICUMstate+130
|
||||
#define HICUMixf2_Vrth HICUMstate+131
|
||||
|
||||
#define HICUMith HICUMstate+119
|
||||
#define HICUMith_Vrth HICUMstate+120
|
||||
#define HICUMith_Vbiei HICUMstate+121
|
||||
#define HICUMith_Vbici HICUMstate+122
|
||||
#define HICUMith_Vbpbi HICUMstate+123
|
||||
#define HICUMith_Vbpci HICUMstate+124
|
||||
#define HICUMith_Vbpei HICUMstate+125
|
||||
#define HICUMith_Vciei HICUMstate+126
|
||||
#define HICUMith_Vsici HICUMstate+127
|
||||
#define HICUMith_Vcic HICUMstate+128
|
||||
#define HICUMith_Vbbp HICUMstate+129
|
||||
#define HICUMith_Veie HICUMstate+130
|
||||
#define HICUMith HICUMstate+132
|
||||
#define HICUMith_Vrth HICUMstate+133
|
||||
#define HICUMith_Vbiei HICUMstate+134
|
||||
#define HICUMith_Vbici HICUMstate+135
|
||||
#define HICUMith_Vbpbi HICUMstate+136
|
||||
#define HICUMith_Vbpci HICUMstate+137
|
||||
#define HICUMith_Vbpei HICUMstate+138
|
||||
#define HICUMith_Vciei HICUMstate+139
|
||||
#define HICUMith_Vsici HICUMstate+140
|
||||
#define HICUMith_Vcic HICUMstate+141
|
||||
#define HICUMith_Vbbp HICUMstate+142
|
||||
#define HICUMith_Veie HICUMstate+143
|
||||
|
||||
#define HICUMnumStates 132
|
||||
#define HICUMnumStates 144
|
||||
|
||||
/* per model data */
|
||||
typedef struct sHICUMmodel { /* model structure for a hicum */
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@ HICUMsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
/* loop through all the transistor models */
|
||||
for( ; model != NULL; model = HICUMnextModel(model)) {
|
||||
|
||||
int selfheat = (((model->HICUMflsh == 1) || (model->HICUMflsh == 2)) && (model->HICUMrthGiven) && (model->HICUMrth > 0.0));
|
||||
|
||||
//Circuit simulator specific parameters
|
||||
if(model->HICUMtype != NPN && model->HICUMtype != PNP)
|
||||
model->HICUMtype = NPN;
|
||||
|
|
@ -565,23 +567,31 @@ HICUMsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
here->HICUMbaseBINode = tmp->number;
|
||||
}
|
||||
|
||||
// if(here->HICUMxfNode == 0) {
|
||||
// error = CKTmkVolt(ckt, &tmp, here->HICUMname, "xf");
|
||||
// if(error) return(error);
|
||||
// here->HICUMxfNode = tmp->number;
|
||||
// }
|
||||
//
|
||||
// if(here->HICUMxf1Node == 0) {
|
||||
// error = CKTmkVolt(ckt, &tmp, here->HICUMname, "xf1");
|
||||
// if(error) return(error);
|
||||
// here->HICUMxf1Node = tmp->number;
|
||||
// }
|
||||
//
|
||||
// if(here->HICUMxf2Node == 0) {
|
||||
// error = CKTmkVolt(ckt, &tmp, here->HICUMname, "xf2");
|
||||
// if(error) return(error);
|
||||
// here->HICUMxf2Node = tmp->number;
|
||||
// }
|
||||
if (selfheat) {
|
||||
if (here->HICUMtempNode == 0) { // no external node for temperature
|
||||
error = CKTmkVolt(ckt,&tmp,here->HICUMname,"dT"); // create internal node
|
||||
if (error) return(error);
|
||||
here->HICUMtempNode = tmp->number;
|
||||
}
|
||||
}
|
||||
|
||||
if(here->HICUMxfNode == 0) {
|
||||
error = CKTmkVolt(ckt, &tmp, here->HICUMname, "xf");
|
||||
if(error) return(error);
|
||||
here->HICUMxfNode = tmp->number;
|
||||
}
|
||||
|
||||
if(here->HICUMxf1Node == 0) {
|
||||
error = CKTmkVolt(ckt, &tmp, here->HICUMname, "xf1");
|
||||
if(error) return(error);
|
||||
here->HICUMxf1Node = tmp->number;
|
||||
}
|
||||
|
||||
if(here->HICUMxf2Node == 0) {
|
||||
error = CKTmkVolt(ckt, &tmp, here->HICUMname, "xf2");
|
||||
if(error) return(error);
|
||||
here->HICUMxf2Node = tmp->number;
|
||||
}
|
||||
|
||||
/* macro to make elements with built in test for out of memory */
|
||||
#define TSTALLOC(ptr,first,second) \
|
||||
|
|
@ -646,12 +656,30 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
TSTALLOC(HICUMsubsCollPtr,HICUMsubsNode,HICUMcollNode); //s-c
|
||||
TSTALLOC(HICUMcollSubsPtr,HICUMcollNode,HICUMsubsNode); //c-s
|
||||
|
||||
// TSTALLOC(HICUMxfXfPtr,HICUMxfNode,HICUMxfNode);
|
||||
// TSTALLOC(HICUMxf1Xf1Ptr,HICUMxf1Node,HICUMxf1Node);
|
||||
// TSTALLOC(HICUMxf2Xf2Ptr,HICUMxf2Node,HICUMxf2Node);
|
||||
TSTALLOC(HICUMxf1Xf1Ptr ,HICUMxf1Node ,HICUMxf1Node);
|
||||
TSTALLOC(HICUMxf1TempPtr ,HICUMxf1Node ,HICUMtempNode);
|
||||
TSTALLOC(HICUMxf1BaseBIPtr,HICUMxf1Node ,HICUMbaseBINode);
|
||||
TSTALLOC(HICUMxf1EmitEIPtr,HICUMxf1Node ,HICUMemitEINode);
|
||||
TSTALLOC(HICUMxf1CollCIPtr,HICUMxf1Node ,HICUMcollCINode);
|
||||
TSTALLOC(HICUMxf1Xf2Ptr ,HICUMxf1Node ,HICUMxf2Node);
|
||||
|
||||
if (model->HICUMflsh && model->HICUMrth>0.001) {
|
||||
TSTALLOC(HICUMcollTempPtr,HICUMcollNode,HICUMtempNode);
|
||||
TSTALLOC(HICUMxf2Xf1Ptr ,HICUMxf2Node ,HICUMxf1Node);
|
||||
TSTALLOC(HICUMxf2TempPtr ,HICUMxf2Node ,HICUMtempNode);
|
||||
TSTALLOC(HICUMxf2BaseBIPtr,HICUMxf2Node ,HICUMbaseBINode);
|
||||
TSTALLOC(HICUMxf2EmitEIPtr,HICUMxf2Node ,HICUMemitEINode);
|
||||
TSTALLOC(HICUMxf2CollCIPtr,HICUMxf2Node ,HICUMcollCINode);
|
||||
TSTALLOC(HICUMxf2Xf2Ptr ,HICUMxf2Node ,HICUMxf2Node);
|
||||
TSTALLOC(HICUMemitEIXf2Ptr,HICUMemitEINode,HICUMxf2Node);
|
||||
TSTALLOC(HICUMcollCIXf2Ptr,HICUMcollCINode,HICUMxf2Node);
|
||||
|
||||
TSTALLOC(HICUMxfXfPtr ,HICUMxfNode,HICUMxfNode);
|
||||
TSTALLOC(HICUMxfTempPtr ,HICUMxfNode,HICUMtempNode);
|
||||
TSTALLOC(HICUMxfEmitEIPtr ,HICUMxfNode,HICUMemitEINode);
|
||||
TSTALLOC(HICUMxfCollCIPtr ,HICUMxfNode,HICUMcollCINode);
|
||||
TSTALLOC(HICUMxfBaseBIPtr ,HICUMxfNode,HICUMbaseBINode);
|
||||
|
||||
if (selfheat) {
|
||||
TSTALLOC(HICUMcollTempPtr, HICUMcollNode, HICUMtempNode);
|
||||
TSTALLOC(HICUMbaseTempPtr,HICUMbaseNode,HICUMtempNode);
|
||||
TSTALLOC(HICUMemitTempPtr,HICUMemitNode,HICUMtempNode);
|
||||
|
||||
|
|
@ -672,10 +700,7 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
TSTALLOC(HICUMtempSubsSIPtr,HICUMtempNode,HICUMsubsSINode);
|
||||
|
||||
TSTALLOC(HICUMtempTempPtr,HICUMtempNode,HICUMtempNode);
|
||||
} else { //need this element so that one can still use the node, even though it is not connected
|
||||
TSTALLOC(HICUMtempTempPtr,HICUMtempNode,HICUMtempNode);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
@ -692,6 +717,8 @@ HICUMunsetup(
|
|||
for (model = (HICUMmodel *)inModel; model != NULL;
|
||||
model = HICUMnextModel(model))
|
||||
{
|
||||
int selfheat = (((model->HICUMflsh == 1) || (model->HICUMflsh == 2)) && (model->HICUMrthGiven) && (model->HICUMrth > 0.0));
|
||||
|
||||
for (here = HICUMinstances(model); here != NULL;
|
||||
here=HICUMnextInstance(here))
|
||||
{
|
||||
|
|
@ -719,17 +746,24 @@ HICUMunsetup(
|
|||
CKTdltNNum(ckt, here->HICUMcollCINode);
|
||||
here->HICUMcollCINode = 0;
|
||||
|
||||
// if(here->HICUMxfNode > 0)
|
||||
// CKTdltNNum(ckt, here->HICUMxfNode);
|
||||
// here->HICUMxfNode = 0;
|
||||
//
|
||||
// if(here->HICUMxf1Node > 0)
|
||||
// CKTdltNNum(ckt, here->HICUMxf1Node);
|
||||
// here->HICUMxf1Node = 0;
|
||||
//
|
||||
// if(here->HICUMxf2Node > 0)
|
||||
// CKTdltNNum(ckt, here->HICUMxf2Node);
|
||||
// here->HICUMxf2Node = 0;
|
||||
if (selfheat) {
|
||||
if (here->HICUMtempNode > 5) { // it is an internal node
|
||||
CKTdltNNum(ckt, here->HICUMtempNode);
|
||||
here->HICUMtempNode = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(here->HICUMxfNode > 0)
|
||||
CKTdltNNum(ckt, here->HICUMxfNode);
|
||||
here->HICUMxfNode = 0;
|
||||
|
||||
if(here->HICUMxf1Node > 0)
|
||||
CKTdltNNum(ckt, here->HICUMxf1Node);
|
||||
here->HICUMxf1Node = 0;
|
||||
|
||||
if(here->HICUMxf2Node > 0)
|
||||
CKTdltNNum(ckt, here->HICUMxf2Node);
|
||||
here->HICUMxf2Node = 0;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -400,6 +400,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
//Charges, capacitances and currents
|
||||
double Qjci,Qjei,Qjep;
|
||||
double Qdei,Qrbi;
|
||||
double Qdei_Vbiei, Qdei_Vbici, Qdei_dT;
|
||||
double it,ibei,irei,ibci,ibep,irep,ibh_rec;
|
||||
double volatile ibet,iavl,iavl_ditf,iavl_dT,iavl_Vbiei,iavl_dCjci;
|
||||
double ijbcx,ijbcx_dT,ijbcx_Vbpci,ijsc,ijsc_Vsici,ijsc_Vrth,Qjs,Qscp,HSI_Tsu,Qdsu;
|
||||
|
|
@ -442,9 +443,15 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double ick, ick_Vciei, ick_dT;//,cjcx01;//,cjcx02;
|
||||
|
||||
//NQS
|
||||
double Ixf1,Ixf2,Qxf1,Qxf2;
|
||||
double Ixf1=0,Ixf2=0,Qxf1,Qxf2;
|
||||
double Ixf1_Vxf1=0, Ixf1_Vxf2=0, Ixf1_ditf=0, Ixf1_dTf, Ixf1_Vbiei=0, Ixf1_Vbici=0, Ixf1_dT=0;
|
||||
double Ixf2_Vxf1=0, Ixf2_Vbiei=0, Ixf2_Vbici=0, Ixf2_dT=0;
|
||||
double Ixf_Vxf=0, Ixf_Tf,Ixf_Qdei,Ixf_Vbiei=0, Ixf_Vbici=0, Ixf_dT=0;
|
||||
double Ixf2_Vxf2=0, Ixf2_dTf;
|
||||
double Itxf, Qdeix;
|
||||
double Qxf, Ixf, Vxf;
|
||||
double Itxf_Vxf2, Itxf_Vbici, Itxf_Vbiei, Itxf_dT;
|
||||
double Qdeix_Vxf, Qdeix_dT, Qdeix_Vbici, Qdeix_Vbiei;
|
||||
double Qxf, Ixf=0, Vxf;
|
||||
double Vxf1, Vxf2;
|
||||
|
||||
double hjei_vbe;
|
||||
|
|
@ -464,7 +471,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
#ifndef PREDICTOR
|
||||
double xfact;
|
||||
#endif
|
||||
double delvbiei=0.0, delvbici=0.0, delvbpei=0.0, delvbpbi=0.0, delvbpci=0.0, delvsici=0.0, delvbbp=0.0, delveie=0.0, delvciei=0.0, delvcic=0.0;
|
||||
double delvbiei=0.0, delvbici=0.0, delvbpei=0.0, delvbpbi=0.0, delvbpci=0.0, delvsici=0.0, delvbbp=0.0, delveie=0.0, delvciei=0.0, delvcic=0.0, delvxf2=0.0;
|
||||
double ibieihat;
|
||||
double ibpeihat;
|
||||
double icieihat;
|
||||
|
|
@ -477,7 +484,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double ceq, geq=0.0;
|
||||
double volatile rhs_current;
|
||||
int icheck=1;
|
||||
int ichk1, ichk2, ichk3, ichk4, ichk5;
|
||||
int ichk1, ichk2, ichk3, ichk4, ichk5, ichk6, ichk7, ichk8;
|
||||
int error;
|
||||
double Vbe, Vcic, Vbbp, Veie, Vsis, Vbpe;
|
||||
|
||||
|
|
@ -487,7 +494,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double Ibpci=0, Ibpci_Vbpci;
|
||||
double Isici, Isici_Vsici;//
|
||||
double Isc=0, Isc_Vsc=0;
|
||||
double volatile Iciei, Iciei_Vbiei, Iciei_Vbici, Iciei_Vrth;
|
||||
double volatile Iciei, Iciei_Vbiei, Iciei_Vbici, Iciei_Vrth, Iciei_Vxf2;
|
||||
double Ibbp_Vbbp=0;
|
||||
double Isis_Vsis;
|
||||
double Ieie, Ieie_Veie=0;
|
||||
|
|
@ -535,9 +542,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double cqsu, gqsu;
|
||||
|
||||
//NQS
|
||||
double Vbxf, Vbxf1, Vbxf2;
|
||||
double Qxf_Vxf, Qxf1_Vxf1, Qxf2_Vxf2;
|
||||
// double Iqxf, Iqxf_Vxf, Iqxf1, Iqxf1_Vxf1, Iqxf2, Iqxf2_Vxf2; //not needed withouth NQS
|
||||
|
||||
double volatile Ith=0, Vrth=0, Icth, Icth_Vrth, delvrth;
|
||||
|
||||
|
|
@ -1191,6 +1196,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
for (; model != NULL; model = HICUMnextModel(model)) {
|
||||
|
||||
// Model_initialization
|
||||
int selfheat = ((model->HICUMflsh > 0) && (model->HICUMrthGiven) && (model->HICUMrth > 0.0));
|
||||
|
||||
// Depletion capacitance splitting at b-c junction
|
||||
// Capacitances at peripheral and external base node
|
||||
|
|
@ -1292,10 +1298,10 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vsis = model->HICUMtype*(
|
||||
*(ckt->CKTrhsOld+here->HICUMsubsSINode)-
|
||||
*(ckt->CKTrhsOld+here->HICUMsubsNode));
|
||||
Vbxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vbxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vbxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
if (model->HICUMflsh) {
|
||||
Vxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
if (selfheat) {
|
||||
if (model->HICUMrth_de == 1) {
|
||||
Vrth = *(ckt->CKTstate0 + here->HICUMith)*here->HICUMrth_t.rpart;
|
||||
} else {
|
||||
|
|
@ -1335,10 +1341,10 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vsis = model->HICUMtype*(
|
||||
*(ckt->CKTrhsOld+here->HICUMsubsSINode)-
|
||||
*(ckt->CKTrhsOld+here->HICUMsubsNode));
|
||||
Vbxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vbxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vbxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
if (model->HICUMflsh) {
|
||||
Vxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
if (selfheat) {
|
||||
if (model->HICUMrth_de == 1) {
|
||||
Vrth = *(ckt->CKTstate1 + here->HICUMith)*here->HICUMrth_t.rpart;
|
||||
} else {
|
||||
|
|
@ -1363,7 +1369,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vsc=Vsici=0.0;
|
||||
Vsis=0.0;
|
||||
Icth=0.0,Icth_Vrth=0.0;
|
||||
Vbxf=Vbxf1=Vbxf2=0.0;
|
||||
Vxf=Vxf1=Vxf2=0.0;
|
||||
} else if((ckt->CKTmode & MODEINITJCT) && (here->HICUMoff==0)) {
|
||||
Vbe = here->HICUMicVB-here->HICUMicVE;
|
||||
Vbiei = here->HICUMicVBi-here->HICUMicVEi; //here was a hicumtype before, why?
|
||||
|
|
@ -1381,7 +1387,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vsc=Vsici=0.0;
|
||||
Vsis=0.0;
|
||||
Icth=0.0,Icth_Vrth=0.0;
|
||||
Vbxf=Vbxf1=Vbxf2=0.0;
|
||||
Vxf=Vxf1=Vxf2=0.0;
|
||||
} else if((ckt->CKTmode & MODEINITJCT) ||
|
||||
( (ckt->CKTmode & MODEINITFIX) && (here->HICUMoff!=0))) {
|
||||
Vbe=0.0;
|
||||
|
|
@ -1393,7 +1399,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vbpbi=Vbbp=Vbpe=0.0;
|
||||
Vcic=Veie=Vsis=0.0;
|
||||
Vrth=0.0,Icth=0.0,Icth_Vrth=0.0;
|
||||
Vbxf=Vbxf1=Vbxf2=0.0;
|
||||
Vxf=Vxf1=Vxf2=0.0;
|
||||
} else {
|
||||
#ifndef PREDICTOR
|
||||
if(ckt->CKTmode & MODEINITPRED) {
|
||||
|
|
@ -1411,11 +1417,11 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
xfact * *(ckt->CKTstate2 + here->HICUMvsici);
|
||||
Vbpbi = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvbpbi)-
|
||||
xfact * *(ckt->CKTstate2 + here->HICUMvbpbi);
|
||||
Vbxf = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf)-
|
||||
Vxf = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf)-
|
||||
xfact * *(ckt->CKTstate2 + here->HICUMvxf);
|
||||
Vbxf1 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf1)-
|
||||
Vxf1 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf1)-
|
||||
xfact * *(ckt->CKTstate2 + here->HICUMvxf1);
|
||||
Vbxf2 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf2)-
|
||||
Vxf2 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf2)-
|
||||
xfact * *(ckt->CKTstate2 + here->HICUMvxf2);
|
||||
Vrth = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvrth);
|
||||
Veie = (1+xfact) * *(ckt->CKTstate1 + here->HICUMveie)-
|
||||
|
|
@ -1447,6 +1453,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0+here->HICUMiciei)=*(ckt->CKTstate1+here->HICUMiciei);
|
||||
*(ckt->CKTstate0+here->HICUMiciei_Vbiei)=*(ckt->CKTstate1+here->HICUMiciei_Vbiei);
|
||||
*(ckt->CKTstate0+here->HICUMiciei_Vbici)=*(ckt->CKTstate1+here->HICUMiciei_Vbici);
|
||||
*(ckt->CKTstate0+here->HICUMiciei_Vxf2)=*(ckt->CKTstate1+here->HICUMiciei_Vxf2);
|
||||
*(ckt->CKTstate0+here->HICUMiciei_Vrth)=*(ckt->CKTstate1+here->HICUMiciei_Vrth);
|
||||
*(ckt->CKTstate0+here->HICUMibici)=*(ckt->CKTstate1+here->HICUMibici);
|
||||
*(ckt->CKTstate0+here->HICUMibici_Vbici)=*(ckt->CKTstate1+here->HICUMibici_Vbici);
|
||||
|
|
@ -1481,6 +1488,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0+here->HICUMqf)=*(ckt->CKTstate1+here->HICUMqf);
|
||||
*(ckt->CKTstate0+here->HICUMcqf)=*(ckt->CKTstate1+here->HICUMcqf);
|
||||
*(ckt->CKTstate0+here->HICUMqf_Vbici)=*(ckt->CKTstate1+here->HICUMqf_Vbici);
|
||||
*(ckt->CKTstate0+here->HICUMqf_Vxf)=*(ckt->CKTstate1+here->HICUMqf_Vxf);
|
||||
*(ckt->CKTstate0+here->HICUMqf_Vrth)=*(ckt->CKTstate1+here->HICUMqf_Vrth);
|
||||
*(ckt->CKTstate0+here->HICUMqr)=*(ckt->CKTstate1+here->HICUMqr);
|
||||
*(ckt->CKTstate0+here->HICUMcqr)=*(ckt->CKTstate1+here->HICUMcqr);
|
||||
|
|
@ -1529,24 +1537,32 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0+here->HICUMicth_dT)=*(ckt->CKTstate1+here->HICUMicth_dT);
|
||||
*(ckt->CKTstate0+here->HICUMvxf)=*(ckt->CKTstate1+here->HICUMvxf);
|
||||
*(ckt->CKTstate0+here->HICUMqxf)=*(ckt->CKTstate1+here->HICUMqxf);
|
||||
*(ckt->CKTstate0+here->HICUMqxf_Vxf)=*(ckt->CKTstate1+here->HICUMqxf_Vxf);
|
||||
*(ckt->CKTstate0+here->HICUMcqxf)=*(ckt->CKTstate1+here->HICUMcqxf);
|
||||
*(ckt->CKTstate0+here->HICUMgqxf)=*(ckt->CKTstate1+here->HICUMgqxf);
|
||||
*(ckt->CKTstate0+here->HICUMixf_Vbiei)=*(ckt->CKTstate1+here->HICUMixf_Vbiei);
|
||||
*(ckt->CKTstate0+here->HICUMixf_Vbici)=*(ckt->CKTstate1+here->HICUMixf_Vbici);
|
||||
*(ckt->CKTstate0+here->HICUMixf_Vxf)=*(ckt->CKTstate1+here->HICUMixf_Vxf);
|
||||
*(ckt->CKTstate0+here->HICUMixf_Vrth)=*(ckt->CKTstate1+here->HICUMixf_Vrth);
|
||||
*(ckt->CKTstate0+here->HICUMvxf1)=*(ckt->CKTstate1+here->HICUMvxf1);
|
||||
*(ckt->CKTstate0+here->HICUMqxf1)=*(ckt->CKTstate1+here->HICUMqxf1);
|
||||
*(ckt->CKTstate0+here->HICUMqxf1_Vxf1)=*(ckt->CKTstate1+here->HICUMqxf1_Vxf1);
|
||||
*(ckt->CKTstate0+here->HICUMcqxf1)=*(ckt->CKTstate1+here->HICUMcqxf1);
|
||||
*(ckt->CKTstate0+here->HICUMgqxf1)=*(ckt->CKTstate1+here->HICUMgqxf1);
|
||||
*(ckt->CKTstate0+here->HICUMixf1_Vbiei)=*(ckt->CKTstate1+here->HICUMixf1_Vbiei);
|
||||
*(ckt->CKTstate0+here->HICUMixf1_Vbici)=*(ckt->CKTstate1+here->HICUMixf1_Vbici);
|
||||
*(ckt->CKTstate0+here->HICUMixf1_Vfx2)=*(ckt->CKTstate1+here->HICUMixf1_Vfx2);
|
||||
*(ckt->CKTstate0+here->HICUMixf1_Vxf2)=*(ckt->CKTstate1+here->HICUMixf1_Vxf2);
|
||||
*(ckt->CKTstate0+here->HICUMixf1_Vrth)=*(ckt->CKTstate1+here->HICUMixf1_Vrth);
|
||||
*(ckt->CKTstate0+here->HICUMvxf2)=*(ckt->CKTstate1+here->HICUMvxf2);
|
||||
*(ckt->CKTstate0+here->HICUMqxf2)=*(ckt->CKTstate1+here->HICUMqxf2);
|
||||
*(ckt->CKTstate0+here->HICUMqxf2_Vxf2)=*(ckt->CKTstate1+here->HICUMqxf2_Vxf2);
|
||||
*(ckt->CKTstate0+here->HICUMcqxf2)=*(ckt->CKTstate1+here->HICUMcqxf2);
|
||||
*(ckt->CKTstate0+here->HICUMgqxf2)=*(ckt->CKTstate1+here->HICUMgqxf2);
|
||||
*(ckt->CKTstate0+here->HICUMixf2_Vbiei)=*(ckt->CKTstate1+here->HICUMixf2_Vbiei);
|
||||
*(ckt->CKTstate0+here->HICUMixf2_Vbici)=*(ckt->CKTstate1+here->HICUMixf2_Vbici);
|
||||
*(ckt->CKTstate0+here->HICUMixf2_Vfx1)=*(ckt->CKTstate1+here->HICUMixf2_Vfx1);
|
||||
*(ckt->CKTstate0+here->HICUMixf2_Vxf1)=*(ckt->CKTstate1+here->HICUMixf2_Vxf1);
|
||||
*(ckt->CKTstate0+here->HICUMixf2_Vxf2)=*(ckt->CKTstate1+here->HICUMixf2_Vxf2);
|
||||
*(ckt->CKTstate0+here->HICUMixf2_Vrth)=*(ckt->CKTstate1+here->HICUMixf2_Vrth);
|
||||
*(ckt->CKTstate0+here->HICUMith)=*(ckt->CKTstate1+here->HICUMith);
|
||||
*(ckt->CKTstate0+here->HICUMith_Vrth)=*(ckt->CKTstate1+here->HICUMith_Vrth);
|
||||
*(ckt->CKTstate0+here->HICUMith_Vbiei)=*(ckt->CKTstate1+here->HICUMith_Vbiei);
|
||||
|
|
@ -1559,7 +1575,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0+here->HICUMith_Vcic)=*(ckt->CKTstate1+here->HICUMith_Vcic);
|
||||
*(ckt->CKTstate0+here->HICUMith_Vbbp)=*(ckt->CKTstate1+here->HICUMith_Vbbp);
|
||||
*(ckt->CKTstate0+here->HICUMith_Veie)=*(ckt->CKTstate1+here->HICUMith_Veie);
|
||||
|
||||
/////////////////////////
|
||||
// end copy state vector
|
||||
/////////////////////////
|
||||
|
|
@ -1598,11 +1613,11 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vsici = model->HICUMtype*(
|
||||
*(ckt->CKTrhsOld+here->HICUMsubsSINode)-
|
||||
*(ckt->CKTrhsOld+here->HICUMcollCINode));
|
||||
Vbxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vbxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vbxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
Vxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
Vciei = Vbiei - Vbici;
|
||||
if (model->HICUMflsh) {
|
||||
if (selfheat) {
|
||||
if (model->HICUMrth_de==1) {
|
||||
Vrth = *(ckt->CKTstate0 + here->HICUMith)*here->HICUMrth_t.rpart;
|
||||
} else {
|
||||
|
|
@ -1622,8 +1637,9 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
delvcic = Vcic - *(ckt->CKTstate0 + here->HICUMvcic);
|
||||
delvbbp = Vbbp - *(ckt->CKTstate0 + here->HICUMvbbp);
|
||||
delveie = Veie - *(ckt->CKTstate0 + here->HICUMveie);
|
||||
delvxf2 = Vxf2 - *(ckt->CKTstate0 + here->HICUMvxf2);
|
||||
delvciei = delvbiei-delvbici;
|
||||
if (model->HICUMflsh) {
|
||||
if (selfheat) {
|
||||
delvrth = Vrth - *(ckt->CKTstate0 + here->HICUMvrth);
|
||||
} else {
|
||||
delvrth = 0;
|
||||
|
|
@ -1655,10 +1671,10 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vsis = model->HICUMtype*(
|
||||
*(ckt->CKTrhsOld+here->HICUMsubsSINode)-
|
||||
*(ckt->CKTrhsOld+here->HICUMsubsNode));
|
||||
Vbxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vbxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vbxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
if (model->HICUMflsh) {
|
||||
Vxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
|
||||
Vxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
|
||||
Vxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
|
||||
if (selfheat) {
|
||||
if (model->HICUMrth_de==1) {
|
||||
Vrth = *(ckt->CKTstate0 + here->HICUMith)*here->HICUMrth_t.rpart;
|
||||
} else {
|
||||
|
|
@ -1682,6 +1698,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
icieihat = *(ckt->CKTstate0 + here->HICUMiciei) +
|
||||
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei)*delvbiei +
|
||||
*(ckt->CKTstate0 + here->HICUMiciei_Vrth)*delvrth +
|
||||
*(ckt->CKTstate0 + here->HICUMiciei_Vxf2)*delvxf2 +
|
||||
*(ckt->CKTstate0 + here->HICUMiciei_Vbici)*delvbici;
|
||||
ibpbihat = *(ckt->CKTstate0 + here->HICUMibpbi) +
|
||||
*(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi)*delvbpbi +
|
||||
|
|
@ -1715,7 +1732,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
* find the expression too complicated, thus the split.
|
||||
* ... no bypass in case of selfheating
|
||||
*/
|
||||
if( (ckt->CKTbypass) && (!(ckt->CKTmode & MODEINITPRED)) && !model->HICUMflsh &&
|
||||
if( (ckt->CKTbypass) && (!(ckt->CKTmode & MODEINITPRED)) && !selfheat &&
|
||||
(fabs(delvbiei) < (ckt->CKTreltol*MAX(fabs(Vbiei),
|
||||
fabs(*(ckt->CKTstate0 + here->HICUMvbiei)))+
|
||||
ckt->CKTvoltTol)) )
|
||||
|
|
@ -1789,6 +1806,9 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vbbp = *(ckt->CKTstate0 + here->HICUMvbbp);
|
||||
Veie = *(ckt->CKTstate0 + here->HICUMveie);
|
||||
Vrth = *(ckt->CKTstate0 + here->HICUMvrth);
|
||||
Vxf = *(ckt->CKTstate0 + here->HICUMvxf);
|
||||
Vxf1 = *(ckt->CKTstate0 + here->HICUMvxf1);
|
||||
Vxf2 = *(ckt->CKTstate0 + here->HICUMvxf2);
|
||||
|
||||
Ibiei = *(ckt->CKTstate0 + here->HICUMibiei);
|
||||
Ibiei_Vbiei = *(ckt->CKTstate0 + here->HICUMibiei_Vbiei);
|
||||
|
|
@ -1802,7 +1822,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Iciei = *(ckt->CKTstate0 + here->HICUMiciei);
|
||||
Iciei_Vbiei = *(ckt->CKTstate0 + here->HICUMiciei_Vbiei);
|
||||
Iciei_Vbici = *(ckt->CKTstate0 + here->HICUMiciei_Vbici);
|
||||
Iciei_Vrth = *(ckt->CKTstate0 + here->HICUMiciei_Vrth);
|
||||
Iciei_Vrth = *(ckt->CKTstate0 + here->HICUMiciei_Vrth);
|
||||
Iciei_Vxf2 = *(ckt->CKTstate0 + here->HICUMiciei_Vxf2);
|
||||
|
||||
Ibici = *(ckt->CKTstate0 + here->HICUMibici);
|
||||
Ibici_Vbici = *(ckt->CKTstate0 + here->HICUMibici_Vbici);
|
||||
|
|
@ -1837,12 +1858,30 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
gqbepar2 = *(ckt->CKTstate0 + here->HICUMgqbepar2);
|
||||
gqbcpar1 = *(ckt->CKTstate0 + here->HICUMgqbcpar1);
|
||||
gqbcpar2 = *(ckt->CKTstate0 + here->HICUMgqbcpar2);
|
||||
|
||||
Ixf = *(ckt->CKTstate0 + here->HICUMixf) ;
|
||||
Ixf_Vbiei = *(ckt->CKTstate0 + here->HICUMixf_Vbiei) ;
|
||||
Ixf_Vbici = *(ckt->CKTstate0 + here->HICUMixf_Vbici) ;
|
||||
Ixf_Vxf = *(ckt->CKTstate0 + here->HICUMixf_Vxf) ;
|
||||
Ixf_dT = *(ckt->CKTstate0 + here->HICUMixf_Vrth) ;
|
||||
Ixf1 = *(ckt->CKTstate0 + here->HICUMixf1) ;
|
||||
Ixf1_Vbiei = *(ckt->CKTstate0 + here->HICUMixf1_Vbiei) ;
|
||||
Ixf1_Vbici = *(ckt->CKTstate0 + here->HICUMixf1_Vbici) ;
|
||||
Ixf1_Vxf2 = *(ckt->CKTstate0 + here->HICUMixf1_Vxf2) ;
|
||||
Ixf1_dT = *(ckt->CKTstate0 + here->HICUMixf1_Vrth) ;
|
||||
Ixf2 = *(ckt->CKTstate0 + here->HICUMixf2) ;
|
||||
Ixf2_Vbiei = *(ckt->CKTstate0 + here->HICUMixf2_Vbiei) ;
|
||||
Ixf2_Vbici = *(ckt->CKTstate0 + here->HICUMixf2_Vbici) ;
|
||||
Ixf2_Vxf1 = *(ckt->CKTstate0 + here->HICUMixf2_Vxf1) ;
|
||||
Ixf2_Vxf2 = *(ckt->CKTstate0 + here->HICUMixf2_Vxf2) ;
|
||||
Ixf2_dT = *(ckt->CKTstate0 + here->HICUMixf2_Vrth) ;
|
||||
|
||||
goto load;
|
||||
}
|
||||
/*
|
||||
* limit nonlinear branch voltages
|
||||
*/
|
||||
ichk1 = 1, ichk2 = 1, ichk3 = 1, ichk4 = 1, ichk5 = 0;
|
||||
ichk1 = 1, ichk2 = 1, ichk3 = 1, ichk4 = 1, ichk5 = 1, ichk6=1, ichk7=1, ichk8=0;
|
||||
Vbiei = DEVpnjlim(Vbiei,*(ckt->CKTstate0 + here->HICUMvbiei),here->HICUMvt.rpart,
|
||||
here->HICUMtVcrit,&icheck);
|
||||
Vbici = DEVpnjlim(Vbici,*(ckt->CKTstate0 + here->HICUMvbici),here->HICUMvt.rpart,
|
||||
|
|
@ -1853,12 +1892,18 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
here->HICUMtVcrit,&ichk3);
|
||||
Vsici = DEVpnjlim(Vsici,*(ckt->CKTstate0 + here->HICUMvsici),here->HICUMvt.rpart,
|
||||
here->HICUMtVcrit,&ichk4);
|
||||
if (model->HICUMflsh) {
|
||||
ichk5 = 1;
|
||||
Vxf = DEVpnjlim(Vxf,*(ckt->CKTstate0 + here->HICUMvxf),here->HICUMvt.rpart,
|
||||
here->HICUMtVcrit,&ichk5);
|
||||
Vxf1 = DEVpnjlim(Vxf1,*(ckt->CKTstate0 + here->HICUMvxf1),here->HICUMvt.rpart,
|
||||
here->HICUMtVcrit,&ichk6);
|
||||
Vxf2 = DEVpnjlim(Vxf2,*(ckt->CKTstate0 + here->HICUMvxf2),here->HICUMvt.rpart,
|
||||
here->HICUMtVcrit,&ichk7);
|
||||
if (selfheat) {
|
||||
ichk8 = 1;
|
||||
Vrth = HICUMlimitlog(Vrth,
|
||||
*(ckt->CKTstate0 + here->HICUMvrth),100,&ichk5);
|
||||
*(ckt->CKTstate0 + here->HICUMvrth),100,&ichk8);
|
||||
}
|
||||
if ((ichk1 == 1) || (ichk2 == 1) || (ichk3 == 1) || (ichk4 == 1) || (ichk5 == 1)) icheck=1;
|
||||
if ((ichk1 == 1) || (ichk2 == 1) || (ichk3 == 1) || (ichk4 == 1) || (ichk5 == 1)|| (ichk6 == 1)|| (ichk7 == 1)|| (ichk8 == 1)) icheck=1;
|
||||
}
|
||||
/*
|
||||
* determine dc current and derivatives
|
||||
|
|
@ -1872,9 +1917,12 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Vbci = model->HICUMtype*Vbci;
|
||||
Vsici = model->HICUMtype*Vsici;
|
||||
Vsc = model->HICUMtype*Vsc;
|
||||
// Vxf = model->HICUMtype*Vxf;
|
||||
// Vxf1 = model->HICUMtype*Vxf1;
|
||||
// Vxf2 = model->HICUMtype*Vxf2;
|
||||
//Vrth not needed
|
||||
|
||||
if (model->HICUMflsh!=0 && model->HICUMrth >= MIN_R) { // Thermal_update_with_self_heating
|
||||
if (selfheat) { // Thermal_update_with_self_heating
|
||||
Temp = here->HICUMtemp+Vrth;
|
||||
_iret = hicum_thermal_update(model, here, Temp);
|
||||
|
||||
|
|
@ -2242,6 +2290,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
itf_Vbici -= itf_Vciei;
|
||||
itr_Vbiei += itr_Vciei;
|
||||
itr_Vbici -= itr_Vciei;
|
||||
Qf_Vbiei += Qf_Vciei;
|
||||
Qf_Vbici -= Qf_Vciei;
|
||||
|
||||
// finally the transfer current
|
||||
it = itf-itr;
|
||||
|
|
@ -2261,7 +2311,10 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
//Once the delay in ITF is considered, IT_NQS is calculated afterwards
|
||||
|
||||
//Diffusion charges for further use (remember derivatives if this will be used somebday)
|
||||
Qdei = Qf;
|
||||
Qdei = Qf;
|
||||
Qdei_Vbici = Qf_Vbici;
|
||||
Qdei_Vbiei = Qf_Vbiei;
|
||||
Qdei_dT = Qf_dT;
|
||||
//Qdci = Qr; //we just use Qr herein
|
||||
|
||||
//High-frequency emitter current crowding (lateral NQS)
|
||||
|
|
@ -2393,8 +2446,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
rbi_dQf = result.dpart();
|
||||
here->HICUMrbi = rbi;
|
||||
|
||||
rbi_Vbiei = rbi_dQjei* Qjei_Vbiei + rbi_dQf *(Qf_Vbiei+Qf_Vciei) ;
|
||||
rbi_Vbici = rbi_dQf * (Qf_Vbici-Qf_Vciei);
|
||||
rbi_Vbiei = rbi_dQjei* Qjei_Vbiei + rbi_dQf *(Qf_Vbiei) ;
|
||||
rbi_Vbici = rbi_dQf * (Qf_Vbici);
|
||||
rbi_dT += rbi_dQjei*Qjei_dT + rbi_dQf*Qf_dT;
|
||||
|
||||
//Base currents across peripheral b-e junction
|
||||
|
|
@ -2500,41 +2553,97 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
here->HICUMpterm = pterm;
|
||||
|
||||
Itxf = itf;
|
||||
Qdeix = Qdei;
|
||||
Itxf = itf;
|
||||
Itxf_Vbici = itf_Vbici;
|
||||
Itxf_Vbiei = itf_Vbiei;
|
||||
Itxf_dT = itf_dT;
|
||||
Itxf_Vxf2 = 0.0;
|
||||
Qdeix = Qdei;
|
||||
Qdeix_Vbiei = Qdei_Vbiei;
|
||||
Qdeix_Vbici = Qdei_Vbici;
|
||||
Qdeix_dT = Qdei_dT;
|
||||
Qdeix_Vxf = 0.0;
|
||||
|
||||
// Excess Phase calculation
|
||||
|
||||
if ((model->HICUMflnqs != 0 || model->HICUMflcomp == 0.0 || model->HICUMflcomp == 2.1) && Tf != 0 && (model->HICUMalit > 0 || model->HICUMalqf > 0)) {
|
||||
Vxf1 = Vbxf1;
|
||||
Vxf2 = Vbxf2;
|
||||
Ixf1 = (Vxf2-itf)/Tf*model->HICUMt0;
|
||||
Ixf1_Vxf2 = 1.0/Tf*model->HICUMt0;
|
||||
Ixf1_ditf = -Ixf1_Vxf2;
|
||||
Ixf1_dTf = -Ixf1/Tf; //Tf(Vbiei,Vciei=Vbiei-Vbici)
|
||||
Ixf1_Vbiei = Ixf1_ditf*itf_Vbiei + Ixf1_dTf*(Tf_Vbiei + Tf_Vciei);
|
||||
Ixf1_Vbici = Ixf1_ditf*itf_Vbici + Ixf1_dTf*(Tf_Vbici - Tf_Vciei);
|
||||
Ixf1_dT = Ixf1_ditf*itf_dT + Ixf1_dTf*Tf_dT;
|
||||
|
||||
Ixf1 = (Vxf2-itf)/Tf*model->HICUMt0;
|
||||
Ixf2 = (Vxf2-Vxf1)/Tf*model->HICUMt0;
|
||||
Qxf1 = model->HICUMalit*model->HICUMt0*Vxf1;
|
||||
Qxf1_Vxf1 = model->HICUMalit*model->HICUMt0;
|
||||
Qxf2 = model->HICUMalit*model->HICUMt0*Vxf2/3;
|
||||
Qxf2_Vxf2 = model->HICUMalit*model->HICUMt0/3;
|
||||
Itxf = Vxf2;
|
||||
Ixf2 = (Vxf2-Vxf1)/Tf*model->HICUMt0;
|
||||
Ixf2_Vxf2 = 1.0/Tf*model->HICUMt0;
|
||||
Ixf2_Vxf1 = -Ixf2_Vxf2;
|
||||
Ixf2_dTf = -Ixf2/Tf;
|
||||
Ixf2_Vbiei = Ixf2_dTf*(Tf_Vbiei+Tf_Vciei);
|
||||
Ixf2_Vbici = Ixf2_dTf*(Tf_Vbici-Tf_Vciei);
|
||||
Ixf2_dT = Ixf2_dTf*Tf_dT;
|
||||
|
||||
// TODO derivatives of Ixf1 and Ixf2
|
||||
Qxf1 = model->HICUMalit*model->HICUMt0*Vxf1;
|
||||
Qxf1_Vxf1 = model->HICUMalit*model->HICUMt0;
|
||||
Qxf2 = model->HICUMalit*model->HICUMt0*Vxf2/3;
|
||||
Qxf2_Vxf2 = model->HICUMalit*model->HICUMt0/3;
|
||||
|
||||
Vxf = Vbxf; //for RC nw
|
||||
Ixf = (Vxf - Qdei)*model->HICUMt0/Tf; //for RC nw
|
||||
Qxf = model->HICUMalqf*model->HICUMt0*Vxf; //for RC nw
|
||||
Qxf_Vxf = model->HICUMalqf*model->HICUMt0; //for RC nw
|
||||
Qdeix = Vxf; //for RC nw
|
||||
Itxf = Vxf2;
|
||||
Itxf_Vbiei = 0;
|
||||
Itxf_Vbici = 0;
|
||||
Itxf_dT = 0;
|
||||
Itxf_Vxf2 = 1.0;
|
||||
|
||||
Ixf = (Vxf - Qdei)*model->HICUMt0/Tf; //for RC nw
|
||||
Ixf_Vxf = 1.0*model->HICUMt0/Tf;
|
||||
Ixf_Qdei = -Ixf_Vxf;
|
||||
Ixf_Tf = -Ixf/Tf;
|
||||
Ixf_Vbiei = Ixf_Tf*(Tf_Vbiei+Tf_Vciei) + Ixf_Vbiei*Qf_Vbiei;
|
||||
Ixf_Vbici = Ixf_Tf*(Tf_Vbici-Tf_Vciei) + Ixf_Qdei *Qf_Vbici;
|
||||
Ixf_dT = Ixf_Tf*Tf_dT + Ixf_Qdei*Qdei_dT;
|
||||
|
||||
Qxf = model->HICUMalqf*model->HICUMt0*Vxf; //for RC nw
|
||||
Qxf_Vxf = model->HICUMalqf*model->HICUMt0; //for RC nw
|
||||
|
||||
Qdeix = Vxf; //for RC nw
|
||||
Qdeix_Vxf = 1.0;
|
||||
Qdeix_Vbiei = 0;
|
||||
Qdeix_Vbici = 0;
|
||||
Qdeix_dT = 0;
|
||||
} else {
|
||||
Ixf1 = Vbxf1;
|
||||
Ixf2 = Vbxf2;
|
||||
Qxf1 = 0;
|
||||
Qxf2 = 0;
|
||||
Qxf1_Vxf1 = 0;
|
||||
Qxf2_Vxf2 = 0;
|
||||
Ixf1 = Vxf1;
|
||||
Ixf1_Vxf1 = 1.0;
|
||||
Ixf1_Vxf2 = 0;
|
||||
Ixf1_ditf = 0;
|
||||
Ixf1_dTf = 0;
|
||||
Ixf1_Vbiei = 0;
|
||||
Ixf1_Vbici = 0;
|
||||
Ixf1_dT = 0;
|
||||
|
||||
Ixf2 = Vxf2;
|
||||
Ixf2_Vxf2 = 1.0;
|
||||
Ixf2_Vxf1 = 0;
|
||||
Ixf2_dTf = 0;
|
||||
Ixf2_Vbiei = 0;
|
||||
Ixf2_Vbici = 0;
|
||||
Ixf2_dT = 0;
|
||||
|
||||
Qxf1 = 0;
|
||||
Qxf1_Vxf1 = 0;
|
||||
|
||||
Qxf2 = 0;
|
||||
Qxf2_Vxf2 = 0;
|
||||
|
||||
Ixf = Vxf;
|
||||
Ixf_Vxf = 1.0;
|
||||
Ixf_Tf = 0;
|
||||
Ixf_Qdei = 0;
|
||||
Ixf_Vbiei = 0;
|
||||
Ixf_Vbici = 0;
|
||||
Ixf_dT = 0;
|
||||
|
||||
Qxf = 0;
|
||||
Qxf_Vxf = 0;
|
||||
|
||||
Ixf = Vbxf;
|
||||
Qxf = 0;
|
||||
Qxf_Vxf = 0;
|
||||
}
|
||||
|
||||
// end of Model_evaluation
|
||||
|
|
@ -2597,10 +2706,11 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Isici_Vsici = model->HICUMtype*ijsc_Vsici;
|
||||
Isici_Vrth = model->HICUMtype*ijsc_Vrth;
|
||||
|
||||
Iciei = model->HICUMtype*it;
|
||||
Iciei_Vbiei = model->HICUMtype*it_Vbiei;
|
||||
Iciei_Vbici = model->HICUMtype*it_Vbici;
|
||||
Iciei_Vrth = model->HICUMtype*it_dT;
|
||||
Iciei = model->HICUMtype*(Itxf - itr);
|
||||
Iciei_Vbiei = model->HICUMtype*(Itxf_Vbiei - itr_Vbiei);
|
||||
Iciei_Vbici = model->HICUMtype*(Itxf_Vbici - itr_Vbici);
|
||||
Iciei_Vrth = model->HICUMtype*(Itxf_dT - itr_dT);
|
||||
Iciei_Vxf2 = model->HICUMtype*Itxf_Vxf2;
|
||||
|
||||
if (rbi >= MIN_R) {
|
||||
Ibpbi = Vbpbi / rbi;
|
||||
|
|
@ -2649,7 +2759,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Ith_Vbbp = 0.0;
|
||||
Ith_Veie = 0.0;
|
||||
Ith_Vrth = 0.0;
|
||||
if(model->HICUMflsh == 0 || model->HICUMrth < MIN_R ) {
|
||||
if(!selfheat) {
|
||||
Ith = 0;
|
||||
} else if (model->HICUMrth_de==1) {
|
||||
Ith = -Vrth/here->HICUMrth_t.rpart+pterm; //Current from gnd to T
|
||||
|
|
@ -2705,7 +2815,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
// ********************************************
|
||||
|
||||
// all nodes (B BP BI C CI E EI S SI) connected to gmin
|
||||
// all nodes (B BP BI C CI E EI S SI,XF1,XF2,XF3) connected to gmin
|
||||
// T node not neede since if rth to small, non existent
|
||||
Ibiei += ckt->CKTgmin*Vbiei; //BI EI -> BI EI
|
||||
Ibici += ckt->CKTgmin*Vbici; //BI CI -> CI
|
||||
|
|
@ -2714,6 +2824,9 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
// Ibpbi += ckt->CKTgmin*Vbpbi; //BP BI -> not needed
|
||||
// Ibpci += ckt->CKTgmin*Vbpci; //BP CI -> not needed
|
||||
Isici += ckt->CKTgmin*Vsici; //SI CI -> SI
|
||||
Ixf1 += ckt->CKTgmin*Vxf1;
|
||||
Ixf2 += ckt->CKTgmin*Vxf2;
|
||||
Ixf += ckt->CKTgmin*Vxf;
|
||||
//C from Icic
|
||||
//E from Ieie
|
||||
//S from Isis
|
||||
|
|
@ -2754,8 +2867,23 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Ibpsi_Vbpci += ckt->CKTgmin;
|
||||
Ibpsi_Vsici += ckt->CKTgmin;
|
||||
|
||||
//Ixf
|
||||
Ixf_Vbiei += ckt->CKTgmin;
|
||||
Ixf_Vbici += ckt->CKTgmin;
|
||||
Ixf_Vxf += ckt->CKTgmin;
|
||||
//Ixf1
|
||||
Ixf1_Vbiei += ckt->CKTgmin;
|
||||
Ixf1_Vbici += ckt->CKTgmin;
|
||||
Ixf1_Vxf2 += ckt->CKTgmin;
|
||||
Ixf1_Vxf1 += ckt->CKTgmin;
|
||||
//Ixf2
|
||||
Ixf2_Vbiei += ckt->CKTgmin;
|
||||
Ixf2_Vbici += ckt->CKTgmin;
|
||||
Ixf2_Vxf2 += ckt->CKTgmin;
|
||||
Ixf2_Vxf1 += ckt->CKTgmin;
|
||||
|
||||
//SHE derivatives
|
||||
if (!(model->HICUMflsh == 0 || model->HICUMrth < MIN_R )) {
|
||||
if (selfheat) {
|
||||
// T node
|
||||
Ith += ckt->CKTgmin*Vrth;
|
||||
Ibbp_Vrth += ckt->CKTgmin;
|
||||
|
|
@ -2789,13 +2917,12 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Ith_Vbbp += ckt->CKTgmin;
|
||||
Ith_Veie += ckt->CKTgmin;
|
||||
Ith_Vrth += ckt->CKTgmin;
|
||||
}
|
||||
|
||||
// NQS effect
|
||||
// Ibxf1 = Ixf1;
|
||||
// Icxf1 += ddt(Qxf1);
|
||||
// Ibxf2 = Ixf2;
|
||||
// Icxf2 += ddt(Qxf2);
|
||||
// //NQS
|
||||
Ixf_dT += ckt->CKTgmin;
|
||||
Ixf1_dT += ckt->CKTgmin;
|
||||
Ixf2_dT += ckt->CKTgmin;
|
||||
}
|
||||
|
||||
// end of Load_sources
|
||||
|
||||
|
|
@ -2816,7 +2943,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Qbcpar1 = cbcpar1*Vbci;
|
||||
Qbcpar2 = cbcpar2*Vbpci;
|
||||
Qsu = model->HICUMcsu*Vsis;
|
||||
if (model->HICUMflsh) {
|
||||
if (selfheat) {
|
||||
Qcth = model->HICUMcth*Vrth;
|
||||
} else {
|
||||
Qcth = 0;
|
||||
|
|
@ -2834,10 +2961,11 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->HICUMcqjei) = Qjei_Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMqjei_Vrth) = Qjei_dT;
|
||||
//Qf
|
||||
*(ckt->CKTstate0 + here->HICUMqf) = Qf;
|
||||
*(ckt->CKTstate0 + here->HICUMcqf) = Qf_Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vbici) = Qf_Vbici;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vrth) = Qf_dT;
|
||||
*(ckt->CKTstate0 + here->HICUMqf) = Qdeix;
|
||||
*(ckt->CKTstate0 + here->HICUMcqf) = Qdeix_Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vbici) = Qdeix_Vbici;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vrth) = Qdeix_dT;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vxf) = Qdeix_Vxf;
|
||||
//Qr
|
||||
*(ckt->CKTstate0 + here->HICUMqr) = Qr;
|
||||
*(ckt->CKTstate0 + here->HICUMcqr) = Qr_Vbici;
|
||||
|
|
@ -2890,9 +3018,12 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
//NQS
|
||||
*(ckt->CKTstate0 + here->HICUMqxf1) = Qxf1;
|
||||
*(ckt->CKTstate0 + here->HICUMcqxf1) = Qxf1_Vxf1;
|
||||
*(ckt->CKTstate0 + here->HICUMqxf2) = Qxf2;
|
||||
*(ckt->CKTstate0 + here->HICUMcqxf2) = Qxf2_Vxf2;
|
||||
*(ckt->CKTstate0 + here->HICUMqxf) = Qxf;
|
||||
if (model->HICUMflsh) {
|
||||
*(ckt->CKTstate0 + here->HICUMcqxf) = Qxf_Vxf;
|
||||
if (selfheat) {
|
||||
//Qth
|
||||
*(ckt->CKTstate0 + here->HICUMqcth) = Qcth;
|
||||
*(ckt->CKTstate0 + here->HICUMcqcth) = Qcth_Vrth;
|
||||
|
|
@ -2919,10 +3050,10 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
(!(ckt->CKTmode & MODEUIC)) ) {
|
||||
if(ckt->CKTmode & MODEINITSMSIG) {
|
||||
|
||||
//TODO (transient not yet implented)
|
||||
*(ckt->CKTstate0 + here->HICUMcqf) = Qf_Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vbici) = Qf_Vbici;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vrth) = Qf_dT;
|
||||
*(ckt->CKTstate0 + here->HICUMcqf) = Qdeix_Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vbici) = Qdeix_Vbici;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vrth) = Qdeix_dT;
|
||||
*(ckt->CKTstate0 + here->HICUMqf_Vxf) = Qdeix_Vxf;
|
||||
|
||||
*(ckt->CKTstate0 + here->HICUMcqjei) = Cjei;
|
||||
*(ckt->CKTstate0 + here->HICUMcqjci) = Cjci;
|
||||
|
|
@ -2941,7 +3072,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->HICUMcqxf1) = Qxf1_Vxf1;
|
||||
*(ckt->CKTstate0 + here->HICUMcqxf2) = Qxf2_Vxf2;
|
||||
*(ckt->CKTstate0 + here->HICUMcqxf) = Qxf_Vxf;
|
||||
if (model->HICUMflsh)
|
||||
if (selfheat)
|
||||
*(ckt->CKTstate0 + here->HICUMcqcth) = model->HICUMcth;
|
||||
continue; /* go to 1000 */
|
||||
}
|
||||
|
|
@ -2988,7 +3119,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->HICUMqxf2) ;
|
||||
*(ckt->CKTstate1 + here->HICUMqxf) =
|
||||
*(ckt->CKTstate0 + here->HICUMqxf) ;
|
||||
if (model->HICUMflsh)
|
||||
|
||||
if (selfheat)
|
||||
*(ckt->CKTstate1 + here->HICUMqcth) =
|
||||
*(ckt->CKTstate0 + here->HICUMqcth) ;
|
||||
//endcopy
|
||||
|
|
@ -3006,8 +3138,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
if(error) return(error);
|
||||
Ibiei_Vbiei += geq;
|
||||
Ibiei += *(ckt->CKTstate0 + here->HICUMcqjei);
|
||||
//Qf
|
||||
error = NIintegrate(ckt,&geq,&ceq,Cdei,here->HICUMqf);
|
||||
//Qdeix
|
||||
error = NIintegrate(ckt,&geq,&ceq,Qdeix_Vbiei,here->HICUMqf);
|
||||
if(error) return(error);
|
||||
Ibiei_Vbiei += geq;
|
||||
Ibiei += *(ckt->CKTstate0 + here->HICUMcqf);
|
||||
|
|
@ -3051,24 +3183,23 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
if(error) return(error);
|
||||
Isc_Vsc = geq;
|
||||
Isc = *(ckt->CKTstate0 + here->HICUMcqscp);
|
||||
//NQS
|
||||
// Iqxf1 <+ ddt(Qxf1);
|
||||
// error = NIintegrate(ckt,&geq,&ceq,Qxf1_Vxf1,here->HICUMqxf);
|
||||
// if(error) return(error);
|
||||
// Iqxf1_Vxf1 = geq;
|
||||
// Iqxf1 = *(ckt->CKTstate0 + here->HICUMcqxf1);
|
||||
// Iqxf2 <+ ddt(Qxf2);
|
||||
// error = NIintegrate(ckt,&geq,&ceq,Qxf2_Vxf2,here->HICUMqxf);
|
||||
// if(error) return(error);
|
||||
// Iqxf2_Vxf2 = geq;
|
||||
// Iqxf2 = *(ckt->CKTstate0 + here->HICUMcqxf2);
|
||||
// Iqxf += ddt(Qxf); //for RC nw
|
||||
// error = NIintegrate(ckt,&geq,&ceq,Qxf_Vxf,here->HICUMqxf);
|
||||
// if(error) return(error);
|
||||
// Iqxf_Vxf = geq;
|
||||
// Iqxf = *(ckt->CKTstate0 + here->HICUMcqxf);
|
||||
//Qxf
|
||||
error = NIintegrate(ckt,&geq,&ceq,Qxf1_Vxf1,here->HICUMqxf);
|
||||
if(error) return(error);
|
||||
Ixf1_Vxf1 += geq;
|
||||
Ixf1 += *(ckt->CKTstate0 + here->HICUMcqxf);
|
||||
//Qxf2
|
||||
error = NIintegrate(ckt,&geq,&ceq,Qxf2_Vxf2,here->HICUMqxf2);
|
||||
if(error) return(error);
|
||||
Ixf2_Vxf2 += geq;
|
||||
Ixf2 += *(ckt->CKTstate0 + here->HICUMcqxf2);
|
||||
//Qxf
|
||||
error = NIintegrate(ckt,&geq,&ceq,Qxf_Vxf,here->HICUMqxf1);
|
||||
if(error) return(error);
|
||||
Ixf_Vxf += geq;
|
||||
Ixf += *(ckt->CKTstate0 + here->HICUMcqxf1);
|
||||
|
||||
if (model->HICUMflsh)
|
||||
if (selfheat)
|
||||
{
|
||||
//Qth
|
||||
error = NIintegrate(ckt,&geq,&ceq,model->HICUMcth,here->HICUMqcth);
|
||||
|
|
@ -3109,7 +3240,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->HICUMcqxf2) ;
|
||||
*(ckt->CKTstate1 + here->HICUMcqxf) =
|
||||
*(ckt->CKTstate0 + here->HICUMcqxf) ;
|
||||
if (model->HICUMflsh)
|
||||
if (selfheat)
|
||||
*(ckt->CKTstate1 + here->HICUMcqcth) =
|
||||
*(ckt->CKTstate0 + here->HICUMcqcth) ;
|
||||
}
|
||||
|
|
@ -3159,7 +3290,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
}
|
||||
|
||||
// Write to state vector
|
||||
// Write branch currents and voltages to state vector
|
||||
*(ckt->CKTstate0 + here->HICUMvbiei) = Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMvbici) = Vbici;
|
||||
*(ckt->CKTstate0 + here->HICUMvbpei) = Vbpei;
|
||||
|
|
@ -3169,6 +3300,9 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->HICUMvcic) = Vcic;
|
||||
*(ckt->CKTstate0 + here->HICUMvbbp) = Vbbp;
|
||||
*(ckt->CKTstate0 + here->HICUMveie) = Veie;
|
||||
*(ckt->CKTstate0 + here->HICUMvxf1) = Vxf1;
|
||||
*(ckt->CKTstate0 + here->HICUMvxf2) = Vxf2;
|
||||
*(ckt->CKTstate0 + here->HICUMvxf) = Vxf;
|
||||
|
||||
*(ckt->CKTstate0 + here->HICUMibiei) = Ibiei;
|
||||
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei) = Ibiei_Vbiei;
|
||||
|
|
@ -3183,6 +3317,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei) = Iciei_Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMiciei_Vbici) = Iciei_Vbici;
|
||||
*(ckt->CKTstate0 + here->HICUMiciei_Vrth) = Iciei_Vrth;
|
||||
*(ckt->CKTstate0 + here->HICUMiciei_Vxf2) = Iciei_Vxf2;
|
||||
|
||||
*(ckt->CKTstate0 + here->HICUMibici) = Ibici;
|
||||
*(ckt->CKTstate0 + here->HICUMibici_Vbici) = Ibici_Vbici;
|
||||
|
|
@ -3238,7 +3373,24 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->HICUMith_Vbbp) = Ith_Vbbp;
|
||||
*(ckt->CKTstate0 + here->HICUMith_Veie) = Ith_Veie;
|
||||
|
||||
*(ckt->CKTstate0 + here->HICUMixf) = Ixf;
|
||||
*(ckt->CKTstate0 + here->HICUMixf_Vbiei) = Ixf_Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMixf_Vbici) = Ixf_Vbici;
|
||||
*(ckt->CKTstate0 + here->HICUMixf_Vxf) = Ixf_Vxf;
|
||||
*(ckt->CKTstate0 + here->HICUMixf_Vrth) = Ixf_dT;
|
||||
|
||||
*(ckt->CKTstate0 + here->HICUMixf1) = Ixf1;
|
||||
*(ckt->CKTstate0 + here->HICUMixf1_Vbiei) = Ixf1_Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMixf1_Vbici) = Ixf1_Vbici;
|
||||
*(ckt->CKTstate0 + here->HICUMixf1_Vxf2) = Ixf1_Vxf2;
|
||||
*(ckt->CKTstate0 + here->HICUMixf1_Vrth) = Ixf1_dT;
|
||||
|
||||
*(ckt->CKTstate0 + here->HICUMixf2) = Ixf2;
|
||||
*(ckt->CKTstate0 + here->HICUMixf2_Vbiei) = Ixf2_Vbiei;
|
||||
*(ckt->CKTstate0 + here->HICUMixf2_Vbici) = Ixf2_Vbici;
|
||||
*(ckt->CKTstate0 + here->HICUMixf2_Vxf1) = Ixf2_Vxf1;
|
||||
*(ckt->CKTstate0 + here->HICUMixf2_Vxf2) = Ixf2_Vxf2;
|
||||
*(ckt->CKTstate0 + here->HICUMixf2_Vrth) = Ixf2_dT;
|
||||
|
||||
load:
|
||||
// #############################################################
|
||||
|
|
@ -3345,7 +3497,7 @@ load:
|
|||
// finish
|
||||
|
||||
// Branch: ciei, Stamp element: It
|
||||
rhs_current = model->HICUMtype * (Iciei - Iciei_Vbiei*Vbiei - Iciei_Vbici*Vbici);
|
||||
rhs_current = model->HICUMtype * (Iciei - Iciei_Vbiei*Vbiei - Iciei_Vbici*Vbici- Iciei_Vxf2*Vxf2);
|
||||
*(ckt->CKTrhs + here->HICUMcollCINode) += -rhs_current;
|
||||
*(ckt->CKTrhs + here->HICUMemitEINode) += rhs_current;
|
||||
// with respect to Vbiei f_CI = + f_EI = -
|
||||
|
|
@ -3358,6 +3510,9 @@ load:
|
|||
*(here->HICUMemitEICollCIPtr) += Iciei_Vbici;
|
||||
*(here->HICUMcollCICollCIPtr) += -Iciei_Vbici;
|
||||
*(here->HICUMemitEIBaseBIPtr) += -Iciei_Vbici;
|
||||
// with respect to Vxf2
|
||||
*(here->HICUMcollCIXf2Ptr) += Iciei_Vxf2;
|
||||
*(here->HICUMemitEIXf2Ptr) += -Iciei_Vxf2;
|
||||
// finish
|
||||
|
||||
// Branch: bci, Stamp element: Qbcx
|
||||
|
|
@ -3475,77 +3630,65 @@ load:
|
|||
*(here->HICUMsubsSubsSIPtr) += -Isis_Vsis;
|
||||
// finish
|
||||
|
||||
//NQS
|
||||
/*
|
||||
c Branch: xf1-ground, Stamp element: Ixf1
|
||||
*/
|
||||
// rhs_current = (Ixf1 - Ixf1_Vxf1*Vxf1 - Ixf1_dT*Vrth - Ixf1_Vbiei*Vbiei - Ixf1_Vbici*Vbici - Ixf1_Vxf2*Vxf2); // TODO
|
||||
// rhs_current = Ixf1;
|
||||
// *(ckt->CKTrhs + here->HICUMxf1Node) += 0; // rhs_current; // into xf1 node
|
||||
// *(here->HICUMxf1TempPtr) += -Ixf1_dT;
|
||||
// *(here->HICUMxf1BaseBIPtr) += -Ixf1_Vbiei;
|
||||
// *(here->HICUMxf1EmitEIPtr) += +Ixf1_Vbiei;
|
||||
// *(here->HICUMxf1BaseBIPtr) += -Ixf1_Vbici;
|
||||
// *(here->HICUMxf1CollCIPtr) += +Ixf1_Vbici;
|
||||
// *(here->HICUMxf1Xf2Ptr) += +Ixf1_Vxf2;
|
||||
/*
|
||||
c Branch: xf1-ground, Stamp element: Qxf1 // TODO Test in AC simulation!
|
||||
*/
|
||||
// rhs_current = Iqxf1 - Iqxf1_Vxf1*Vxf1;
|
||||
// *(ckt->CKTrhs + here->HICUMxf1Node) += rhs_current; // into ground
|
||||
// *(here->HICUMxf1Xf1Ptr) += Iqxf1_Vxf1;
|
||||
// NQS effect
|
||||
// I(br_bxf1) <+ Ixf1;
|
||||
// I(br_cxf1) <+ ddt(Qxf1);
|
||||
// I(br_bxf2) <+ Ixf2;
|
||||
// I(br_cxf2) <+ ddt(Qxf2);
|
||||
|
||||
// I(br_bxf) <+ Ixf; //for RC nw
|
||||
// I(br_cxf) <+ ddt(Qxf); //for RC nw
|
||||
|
||||
// Branch: xf1-ground, Stamp element: Ixf1 f_xf1=+ //Markus has opposite sign than Dietmar. This current flows from xf1 to ground?
|
||||
rhs_current = Ixf1 - Ixf1_Vbici*Vbici - Ixf1_Vbiei*Vbiei -Ixf1_Vxf1*Vxf1 - Ixf1_Vxf2*Vxf2;
|
||||
*(ckt->CKTrhs + here->HICUMxf1Node) += -rhs_current; // rhs_current; // into xf1 node
|
||||
*(here->HICUMxf1BaseBIPtr) += +Ixf1_Vbiei;
|
||||
*(here->HICUMxf1EmitEIPtr) += -Ixf1_Vbiei;
|
||||
*(here->HICUMxf1BaseBIPtr) += +Ixf1_Vbici;
|
||||
*(here->HICUMxf1CollCIPtr) += -Ixf1_Vbici;
|
||||
*(here->HICUMxf1Xf2Ptr) += +Ixf1_Vxf2;
|
||||
*(here->HICUMxf1Xf1Ptr) += +Ixf1_Vxf1;
|
||||
|
||||
// Branch: xf2-ground, Stamp element: Ixf2 f_xf2=+ //Markus has opposite sign than Dietmar. This current flows from xf1 to ground?
|
||||
rhs_current = Ixf2 - Ixf2_Vbici*Vbici - Ixf2_Vbiei*Vbiei - Ixf2_Vxf1*Vxf1 - Ixf2_Vxf2*Vxf2;
|
||||
*(ckt->CKTrhs + here->HICUMxf2Node) += -rhs_current; // rhs_current; // into xf2 node
|
||||
*(here->HICUMxf2BaseBIPtr) += +Ixf2_Vbiei;
|
||||
*(here->HICUMxf2EmitEIPtr) += -Ixf2_Vbiei;
|
||||
*(here->HICUMxf2BaseBIPtr) += +Ixf2_Vbici;
|
||||
*(here->HICUMxf2CollCIPtr) += -Ixf2_Vbici;
|
||||
*(here->HICUMxf2Xf2Ptr) += +Ixf2_Vxf2;
|
||||
*(here->HICUMxf2Xf1Ptr) += +Ixf2_Vxf1;
|
||||
|
||||
// Branch: xf-ground, Stamp element: Ixf f_xf=+ //Markus has opposite sign than Dietmar. This current flows from xf1 to ground?
|
||||
rhs_current = Ixf - Ixf_Vbici*Vbici - Ixf_Vbiei*Vbiei - Ixf_Vxf*Vxf;
|
||||
*(ckt->CKTrhs + here->HICUMxfNode) += -rhs_current; // rhs_current; // into xf2 node
|
||||
*(here->HICUMxfBaseBIPtr) += +Ixf_Vbiei;
|
||||
*(here->HICUMxfEmitEIPtr) += -Ixf_Vbiei;
|
||||
*(here->HICUMxfBaseBIPtr) += +Ixf_Vbici;
|
||||
*(here->HICUMxfCollCIPtr) += -Ixf_Vbici;
|
||||
*(here->HICUMxfXfPtr) += +Ixf_Vxf;
|
||||
|
||||
/*
|
||||
c Branch: xf1-ground, Stamp element: Rxf1 TODO: This is wrong, but needed at the moment for convergence
|
||||
*/
|
||||
// *(here->HICUMxf1Xf1Ptr) += 1; // current Ixf1 is normalized to Tf
|
||||
/*
|
||||
c Branch: xf2-ground, Stamp element: Ixf2
|
||||
*/
|
||||
// rhs_current = (Ixf2 - Ixf2_Vxf1*Vxf1 - Ixf2_dT*Vrth - Ixf2_Vbiei*Vbiei - Ixf2_Vbici*Vbici - Ixf2_Vxf2*Vxf2); // TODO
|
||||
// rhs_current = Ixf2;
|
||||
// *(ckt->CKTrhs + here->HICUMxf2Node) += rhs_current; // into xf2 node
|
||||
// *(here->HICUMxf2TempPtr) += -Ixf2_dT;
|
||||
// *(here->HICUMxf2BaseBIPtr) += -Ixf2_Vbiei;
|
||||
// *(here->HICUMxf2EmitEIPtr) += +Ixf2_Vbiei;
|
||||
// *(here->HICUMxf2BaseBIPtr) += -Ixf2_Vbici;
|
||||
// *(here->HICUMxf2CollCIPtr) += +Ixf2_Vbici;
|
||||
/*
|
||||
c Branch: xf2-ground, Stamp element: Qxf2 // TODO Test in AC simulation!
|
||||
*/
|
||||
// rhs_current = Iqxf2 - Iqxf2_Vxf2*Vxf2;
|
||||
// *(ckt->CKTrhs + here->HICUMxf2Node) += rhs_current; // into ground
|
||||
// *(here->HICUMxf2Xf2Ptr) += Iqxf2_Vxf2;
|
||||
// *(here->HICUMxf1Xf1Ptr) += 1; // current Ixf1 is normalized to Tf
|
||||
/*
|
||||
c Branch: xf2-ground, Stamp element: Rxf2
|
||||
*/
|
||||
// *(here->HICUMxf2Xf2Ptr) += 1; // current Ixf2 is normalized to Tf
|
||||
// *(here->HICUMxf2Xf2Ptr) += 1; // current Ixf2 is normalized to Tf
|
||||
/*
|
||||
c Branch: xf-ground, Stamp element: Ixf
|
||||
*/
|
||||
// rhs_current = model->HICUMtype * (Ixf - Ixf_dT*Vrth - Ixf_Vbiei*Vbiei - Ixf_Vbici*Vbici);
|
||||
// rhs_current = model->HICUMtype * Ixf;
|
||||
// *(ckt->CKTrhs + here->HICUMxfNode) += rhs_current; // into xf node
|
||||
// *(here->HICUMxfTempPtr) += -Ixf_dT;
|
||||
// *(here->HICUMxfBaseBIPtr) += -Ixf_Vbiei;
|
||||
// *(here->HICUMxfEmitEIPtr) += +Ixf_Vbiei;
|
||||
// *(here->HICUMxfBaseBIPtr) += -Ixf_Vbici;
|
||||
// *(here->HICUMxfCollCIPtr) += +Ixf_Vbici;
|
||||
/*
|
||||
c Branch: xf-ground, Stamp element: Qxf // TODO Test in AC simulation!
|
||||
*/
|
||||
// rhs_current = model->HICUMtype * (Iqxf - Iqxf_Vxf*Vxf);
|
||||
// *(ckt->CKTrhs + here->HICUMxfNode) += rhs_current; // into ground
|
||||
// *(here->HICUMxfXfPtr) += Iqxf_Vxf;
|
||||
/*
|
||||
c Branch: xf-ground, Stamp element: Rxf
|
||||
*/
|
||||
// *(here->HICUMxfXfPtr) += 1; // current Ixf is normalized to Tf
|
||||
// *(here->HICUMxfXfPtr) += 1; // current Ixf is normalized to Tf
|
||||
|
||||
// #############################################################
|
||||
// ############### FINISH STAMPS NO SH #########################
|
||||
// #############################################################
|
||||
|
||||
if (model->HICUMflsh && model->HICUMrth >= MIN_R) {
|
||||
if (selfheat) {
|
||||
|
||||
if (model->HICUMrth_de == 1) {
|
||||
*(here->HICUMtempTempPtr) += 1;
|
||||
|
|
@ -3655,6 +3798,27 @@ c Branch: xf-ground, Stamp element: Rxf
|
|||
*(here->HICUMsubsSItempPtr) += -Ibpsi_Vrth;
|
||||
// finish
|
||||
|
||||
// Stamp element: Ixf f_xf = +
|
||||
rhs_current = -Ixf_dT*Vrth;
|
||||
*(ckt->CKTrhs + here->HICUMxfNode) += -rhs_current;
|
||||
// with respect to Potential Vxf
|
||||
*(here->HICUMxfTempPtr) += Ixf_dT;
|
||||
// finish
|
||||
|
||||
// Stamp element: Ixf1 f_xf1 = +
|
||||
rhs_current = -Ixf1_dT*Vrth;
|
||||
*(ckt->CKTrhs + here->HICUMxf1Node) += -rhs_current;
|
||||
// with respect to Potential Vxf1
|
||||
*(here->HICUMxf1TempPtr) += Ixf1_dT;
|
||||
// finish
|
||||
|
||||
// Stamp element: Ixf2 f_xf2 = +
|
||||
rhs_current = -Ixf2_dT*Vrth;
|
||||
*(ckt->CKTrhs + here->HICUMxf2Node) += -rhs_current;
|
||||
// with respect to Potential Vxf2
|
||||
*(here->HICUMxf2TempPtr) += Ixf2_dT;
|
||||
// finish
|
||||
|
||||
// Stamp element: Ith f_T = - Ith
|
||||
rhs_current = Ith + Icth - Icth_Vrth*Vrth
|
||||
- Ith_Vbiei*Vbiei - Ith_Vbici*Vbici - Ith_Vciei*Vciei
|
||||
|
|
@ -3699,11 +3863,6 @@ c Branch: xf-ground, Stamp element: Rxf
|
|||
// finish
|
||||
}
|
||||
}
|
||||
else {
|
||||
// force node to 0 volt
|
||||
*(ckt->CKTrhs + here->HICUMtempNode) += 0;
|
||||
*(here->HICUMtempTempPtr) += 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
#
|
||||
|
||||
package simulate;
|
||||
$simulatorCommand="adssim";
|
||||
$simulatorCommand="hpeesofsim_local";
|
||||
$netlistFile="adsCkt";
|
||||
$mFactorVerilogaName="m"; # for LRM2.1
|
||||
#$mFactorVerilogaName="_M"; # for LRM2.2
|
||||
|
|
|
|||
|
|
@ -0,0 +1,169 @@
|
|||
; Noise simulation for ads
|
||||
Options UseNutmegFormat=yes ASCII_Rawfile=yes
|
||||
Options Temp=27
|
||||
Vsweep = 0 V
|
||||
|
||||
define mysub (coll_x base_x emit_x subs_x therm_x)
|
||||
#uselib "ckt", "VCVS"
|
||||
VCVS:e_coll coll_x 0 coll_v 0 G=1
|
||||
V_Source:v_coll coll_v coll Vdc=0
|
||||
SDD:f_coll coll_x 0 C[1]="v_coll" I[1]=_c1*-1
|
||||
#uselib "ckt", "VCVS"
|
||||
VCVS:e_base base_x 0 base_v 0 G=1
|
||||
V_Source:v_base base_v base Vdc=0
|
||||
SDD:f_base base_x 0 C[1]="v_base" I[1]=_c1*-1
|
||||
#uselib "ckt", "VCVS"
|
||||
VCVS:e_emit emit_x 0 emit_v 0 G=1
|
||||
V_Source:v_emit emit_v emit Vdc=0
|
||||
SDD:f_emit emit_x 0 C[1]="v_emit" I[1]=_c1*-1
|
||||
#uselib "ckt", "VCVS"
|
||||
VCVS:e_subs subs_x 0 subs_v 0 G=1
|
||||
V_Source:v_subs subs_v subs Vdc=0
|
||||
SDD:f_subs subs_x 0 C[1]="v_subs" I[1]=_c1*-1
|
||||
V_Source:v_therm therm therm_x Vdc=0
|
||||
|
||||
mymodel:q1 coll base emit subs therm \
|
||||
|
||||
model mymodel HICUM2_22 \
|
||||
C10= 9.074e-030 \
|
||||
Qp0= 1.008e-013 \
|
||||
Ich= 0 \
|
||||
Hfe= 10.01 \
|
||||
Hfc= 20.04 \
|
||||
Hjei= 3.382 \
|
||||
Hjci= 0.2 \
|
||||
Ibeis= 1.328e-019 \
|
||||
Mbei= 1.027 \
|
||||
Ireis= 1.5e-014 \
|
||||
Mrei= 2 \
|
||||
Ibeps= 1.26e-019 \
|
||||
Mbep= 1.042 \
|
||||
Ireps= 1.8e-014 \
|
||||
Mrep= 1.8 \
|
||||
Mcf= 1 \
|
||||
Tbhrec= 1e-010 \
|
||||
Ibcis= 4.603e-017 \
|
||||
Mbci= 1.15 \
|
||||
Ibcxs= 0 \
|
||||
Mbcx= 1 \
|
||||
Ibets= 0.02035 \
|
||||
Abet= 24 \
|
||||
Tunode= 1 \
|
||||
Favl= 18.96 \
|
||||
Qavl= 5.092e-014 \
|
||||
Alfav= -0.0024 \
|
||||
Alqav= -0.0006284 \
|
||||
Rbi0= 4.444 \
|
||||
Rbx= 2.568 \
|
||||
Fgeo= 0.7409 \
|
||||
Fdqr0= 0 \
|
||||
Fcrbi= 0 \
|
||||
Fqi= 1 \
|
||||
Re= 1.511 \
|
||||
Rcx= 2.483 \
|
||||
Itss= 1.143e-019 \
|
||||
Msf= 1.056 \
|
||||
Iscs= 4.60106e-015 \
|
||||
Msc= 1.018 \
|
||||
Tsf= 0 \
|
||||
Rsu= 500 \
|
||||
Csu= 6.4e-014 \
|
||||
Cjei0= 8.869e-015 \
|
||||
Vdei= 0.714 \
|
||||
Zei= 0.2489 \
|
||||
Ajei= 1.65 \
|
||||
Cjep0= 2.178e-015 \
|
||||
Vdep= 0.8501 \
|
||||
Zep= 0.2632 \
|
||||
Ajep= 1.6 \
|
||||
Cjci0= 3.58e-015 \
|
||||
Vdci= 0.8201 \
|
||||
Zci= 0.2857 \
|
||||
Vptci= 1.79 \
|
||||
Cjcx0= 6.299e-015 \
|
||||
Vdcx= 0.8201 \
|
||||
Zcx= 0.2863 \
|
||||
Vptcx= 1.977 \
|
||||
Fbcpar= 0.3 \
|
||||
Fbepar= 1 \
|
||||
Cjs0= 2.6e-014 \
|
||||
Vds= 0.9997 \
|
||||
Zs= 0.4295 \
|
||||
Vpts= 100 \
|
||||
T0= 2.089e-013 \
|
||||
Dt0h= 8e-014 \
|
||||
Tbvl= 8.25e-014 \
|
||||
Tef0= 3.271e-013 \
|
||||
Gtfe= 3.548 \
|
||||
Thcs= 5.001e-012 \
|
||||
Ahc= 0.05 \
|
||||
Fthc= 0.7 \
|
||||
Rci0= 9.523 \
|
||||
Vlim= 0.6999 \
|
||||
Vces= 0.01 \
|
||||
Vpt= 2 \
|
||||
Tr= 0 \
|
||||
Cbepar= 2.609e-014 \
|
||||
Cbcpar= 1.64512e-014 \
|
||||
Alqf= 0.166667 \
|
||||
Alit= 0.333333 \
|
||||
Flnqs= 0 \
|
||||
Kf= 0 \
|
||||
Af= 2 \
|
||||
Cfbe= -1 \
|
||||
Latb= 0 \
|
||||
Latl= 0 \
|
||||
Vgb= 0.91 \
|
||||
Alt0= 0.004 \
|
||||
Kt0= 6.588e-005 \
|
||||
Zetaci= 0.58 \
|
||||
Alvs= 0.001 \
|
||||
Alces= -0.2286 \
|
||||
Zetarbi= 0.3002 \
|
||||
Zetarbx= 0.06011 \
|
||||
Zetarcx= -0.02768 \
|
||||
Zetare= -0.9605 \
|
||||
Zetacx= 0 \
|
||||
Vge= 1.17 \
|
||||
Vgc= 1.17 \
|
||||
Vgs= 1.049 \
|
||||
F1vg= -0.000102377 \
|
||||
F2vg= 0.00043215 \
|
||||
Zetact= 5 \
|
||||
Zetabet= 4.892 \
|
||||
Alb= 0 \
|
||||
Flsh= 1 \
|
||||
Rth= 1113.4 \
|
||||
Cth= 6.841e-012 \
|
||||
Zetarth= 0 \
|
||||
Alrth= 0.002 \
|
||||
Flcomp= 2.3 \
|
||||
Tnom= 26.85 \
|
||||
Dt= 0 \
|
||||
Acbar= 1.5 \
|
||||
Flcono= 1 \
|
||||
Icbar= 0.01 \
|
||||
Vcbar= 0.04 \
|
||||
Zetavgbe= 0.7 \
|
||||
Hf0= 40 \
|
||||
Ahjei= 3 \
|
||||
Rhjei= 2 \
|
||||
Delck= 2 \
|
||||
Zetahjei= -0.5 \
|
||||
|
||||
end mysub
|
||||
|
||||
V_Source:v_coll coll 0 Vdc=1.000000
|
||||
V_Source:v_base base 0 Vdc=Vsweep
|
||||
V_Source:v_emit emit 0 Vdc=0
|
||||
V_Source:v_subs subs 0 Vdc=0
|
||||
I_Source:i_therm therm 0 Idc=0
|
||||
mysub:x_coll coll base emit subs therm
|
||||
SDD:fn_coll 0 n_coll I[1,0]=_c1 C[1]="v_coll"
|
||||
R:r_coll n_coll 0 R=1 Noise=no
|
||||
OutputPlan:noiseOutput Type="Output"
|
||||
SweepPlan:noisePlan Start=1000 Stop=1e+011 Dec=2
|
||||
SweepPlan:dcPlan Start=0.700000 Stop=1.100000 Step=0.1
|
||||
AC:AC1 CalcNoise=yes OutputPlan="noiseOutput" SweepVar="freq" \
|
||||
SweepPlan="noisePlan" NoiseNode="n_coll"
|
||||
ParamSweep:Vsweep SimInstanceName="AC1" SweepVar="Vsweep" SweepPlan="dcPlan"
|
||||
Binary file not shown.
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
hpeesofsim (*) 512.update2.0 Feb 29 2020, MINT version 5
|
||||
(64-bit linux built: Sat Feb 29, 2020 15:54:36 +0000)
|
||||
|
||||
Parsing the netlist ...
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Zetarth' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Alrth' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Acbar' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Flcono' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Icbar' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Vcbar' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Zetavgbe' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Hf0' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Ahjei' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
|
||||
Warning detected by hpeesofsim during netlist parsing.
|
||||
Model `mysub.mymodel': `Rhjei' is not a valid parameter for HICUM2_22 models. Ignoring it.
|
||||
Flattening the netlist ...
|
||||
|
||||
CT Vsweep[1] <adsCkt> Vsweep=(700e-03->1.1)
|
||||
|
||||
AC Vsweep[1].AC1[1/5] <adsCkt> Vsweep=700e-03 freq=(1 kHz->100 GHz)
|
||||
|
||||
AC Vsweep[1].AC1[2/5] <adsCkt> Vsweep=800e-03 freq=(1 kHz->100 GHz)
|
||||
|
||||
AC Vsweep[1].AC1[3/5] <adsCkt> Vsweep=900e-03 freq=(1 kHz->100 GHz)
|
||||
|
||||
AC Vsweep[1].AC1[4/5] <adsCkt> Vsweep=1 freq=(1 kHz->100 GHz)
|
||||
|
||||
AC Vsweep[1].AC1[5/5] <adsCkt> Vsweep=1.1 freq=(1 kHz->100 GHz)
|
||||
Checking for unresolved variables ...
|
||||
Flushing data (please wait) ...
|
||||
... data flush done.
|
||||
|
||||
|
|
@ -20,9 +20,6 @@
|
|||
nTypeSelectionArguments npn level=8 version=2.34
|
||||
//pTypeSelectionArguments pnp level=8 version=2.34
|
||||
`endif
|
||||
`ifdef ads
|
||||
nTypeSelectionArguments npn HICUM2_34
|
||||
`endif
|
||||
|
||||
//
|
||||
// General test-independent information
|
||||
|
|
@ -838,7 +835,7 @@ modelParameters parameters/npn_full_subtran
|
|||
//outputs I(coll) I(base)
|
||||
//modelParameters parameters/npn_cornoise
|
||||
//
|
||||
test vbe_0_npn_1D
|
||||
test vbe_0_npn_1
|
||||
temperature 27
|
||||
biases V(emit)=0 V(subs)=0 V(base)=0.000000
|
||||
biasSweep V(coll)=-1.000000,1.000000,0.050000
|
||||
|
|
|
|||
|
|
@ -20,6 +20,10 @@
|
|||
nTypeSelectionArguments npn level=8 version=2.34
|
||||
//pTypeSelectionArguments pnp level=8 version=2.34
|
||||
`endif
|
||||
`ifdef ads
|
||||
nTypeSelectionArguments HICUM2_22
|
||||
//nTypeSelectionArguments npn HICUM2_34
|
||||
`endif
|
||||
|
||||
//
|
||||
// General test-independent information
|
||||
|
|
@ -31,13 +35,18 @@ pins coll base emit subs therm
|
|||
float therm
|
||||
checkPolarity n
|
||||
|
||||
test ypara_npn_full_sh_ac
|
||||
test fgum_ac_npn_vert_nqs_dc
|
||||
temperature 27
|
||||
biases V(emit)=0 V(subs)=0 V(coll)=1.000000
|
||||
biasSweep V(base)=0.800000,0.950000,0.050000
|
||||
freq dec 5 1e+008 1e+011
|
||||
outputs G(base,base) G(base,coll) G(coll,base) G(coll,coll) C(base,base) C(base,coll) C(coll,base) C(coll,coll)
|
||||
modelParameters parameters/npn_full_sh
|
||||
biases V(emit)=0 V(subs)=0
|
||||
biasSweep V(base)=0.750000,1.050000,0.010000
|
||||
biasList V(coll)=0.500000,1.000000,1.500000
|
||||
outputs I(coll) I(base)
|
||||
modelParameters parameters/npn_vert_nqs
|
||||
|
||||
//
|
||||
// Specific tests
|
||||
//
|
||||
|
||||
|
||||
`ifdef NOT_USED
|
||||
`endif
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue