Merge remote-tracking branch 'origin/hicum2-thermal' into markus_dev

This commit is contained in:
Markus Mueller 2020-04-27 16:22:32 +02:00
commit 97a0aa856b
12 changed files with 2324 additions and 161 deletions

2
.gitignore vendored
View File

@ -74,3 +74,5 @@ Makefile.in
**/*.vcxproj.user **/*.vcxproj.user
.vscode/ .vscode/
# Visual Studio Code user options files
.vscode/

View File

@ -440,7 +440,6 @@ extern int NIconvTest(CKTcircuit *);
extern void NIdestroy(CKTcircuit *); extern void NIdestroy(CKTcircuit *);
extern int NIinit(CKTcircuit *); extern int NIinit(CKTcircuit *);
extern int NIintegrate(CKTcircuit *, double *, double *, double , int); extern int NIintegrate(CKTcircuit *, double *, double *, double , int);
extern void dummdumm(int dumm);
extern int NIiter(CKTcircuit * , int); extern int NIiter(CKTcircuit * , int);
extern int NIpzMuller(PZtrial **, PZtrial *); extern int NIpzMuller(PZtrial **, PZtrial *);
extern int NIpzComplex(PZtrial **, PZtrial *); extern int NIpzComplex(PZtrial **, PZtrial *);

View File

@ -14,12 +14,6 @@ Author: 1985 Thomas L. Quarles
#define ccap qcap+1 #define ccap qcap+1
void dummdumm(int dumm)
{
double dummy;
dummy=1;
}
int int
NIintegrate(CKTcircuit *ckt, double *geq, double *ceq, double cap, int qcap) NIintegrate(CKTcircuit *ckt, double *geq, double *ceq, double cap, int qcap)
{ {

View File

@ -27,7 +27,7 @@ libhicum2_la_SOURCES = \
AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include -lstdc++ -std=c++11 AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir)/src/include -lstdc++ -std=c++11
AM_CFLAGS = -I/home/markus/Documents/Gitprojects/cppduals -lstdc++ -I$(top_srcdir)/src/include AM_CFLAGS = -lstdc++ -I$(top_srcdir)/src/include
AM_CXXFLAGS = -I/home/markus/Documents/Gitprojects/cppduals -I$(top_srcdir)/src/include -lstdc++ -std=c++11 AM_CXXFLAGS = -I$(top_srcdir)/src/include -lstdc++ -std=c++11
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -379,8 +379,22 @@ typedef struct sHICUMinstance {
#define HICUMixf_Vbici HICUMstate+74 #define HICUMixf_Vbici HICUMstate+74
#define HICUMvxf1 HICUMstate+75 #define HICUMvxf1 HICUMstate+75
#define HICUMvxf2 HICUMstate+76 #define HICUMqxf1 HICUMstate+76
#define HICUMnumStates 77 #define HICUMcqxf1 HICUMstate+77
#define HICUMgqxf1 HICUMstate+78
#define HICUMixf1_Vbiei HICUMstate+79
#define HICUMixf1_Vbici HICUMstate+80
#define HICUMixf1_Vfx2 HICUMstate+81
#define HICUMvxf2 HICUMstate+82
#define HICUMqxf2 HICUMstate+83
#define HICUMcqxf2 HICUMstate+84
#define HICUMgqxf2 HICUMstate+85
#define HICUMixf2_Vbiei HICUMstate+86
#define HICUMixf2_Vbici HICUMstate+87
#define HICUMixf2_Vfx1 HICUMstate+88
#define HICUMnumStates 89
/* per model data */ /* per model data */
typedef struct sHICUMmodel { /* model structure for a hicum */ typedef struct sHICUMmodel { /* model structure for a hicum */

File diff suppressed because it is too large Load Diff

View File

@ -6,12 +6,11 @@ Spice3 Implementation: 2019 Dietmar Warning, Markus Müller, Mario Krattenmacher
**********/ **********/
/* /*
* This file defines the HICUM L2.4.3 model load function * This file defines the HICUM L2.4.0 model load function
* Comments on the Code: * Comments on the Code:
* - We use dual numbers to calculate derivatives, this is readble and error proof. * - We use dual numbers to calculate derivatives, this is readble and error proof.
* - The code is targeted to be readbale and maintainable, speed is sacrificied for this purpose. * - The code is targeted to be readbale and maintainable, speed is sacrificied for this purpose.
* - The verilog a code is available at the website of TU Dresden, Michael Schroeter's chair. * - The verilog a code is available at the website of TU Dresden, Michael Schroeter#s chair.
* - Nobody likes Verilog.
* *
* Checklist of what needs to be done: (@Mario: also look at this, did I get everything?) * Checklist of what needs to be done: (@Mario: also look at this, did I get everything?)
* - ijBEp * - ijBEp
@ -32,12 +31,13 @@ Spice3 Implementation: 2019 Dietmar Warning, Markus Müller, Mario Krattenmacher
* - Qf * - Qf
* - Qr * - Qr
* - iavl * - iavl
* - iBEti (?) * - iBEti
* - itf, itr * - itf, itr
* - NQS derivatives, sources and elements
*/ */
#include "cmath" #include "cmath"
#include "duals/dual" #include <duals/dual>
#include "hicumL2.hpp" #include "hicumL2.hpp"
#include <functional> #include <functional>
@ -111,7 +111,7 @@ duals::duald HICDIO(duals::duald T, double IST, double UM1, duals::duald U)
{ {
duals::duald DIOY, le, vt; duals::duald DIOY, le, vt;
printf("2"); // printf("2");
vt = UM1 * CONSTboltz * T / CHARGE; vt = UM1 * CONSTboltz * T / CHARGE;
DIOY = U/vt; DIOY = U/vt;
if (IST > 0.0) { if (IST > 0.0) {
@ -537,7 +537,7 @@ void hicum_diode(double T, double IS, double UM1, double U, double *Iz, double *
//wrapper for hicum diode equation that also generates derivatives //wrapper for hicum diode equation that also generates derivatives
duals::duald result = 0; duals::duald result = 0;
printf("executed diode"); // printf("executed diode");
result = HICDIO(T, IS, UM1, U+1_e); result = HICDIO(T, IS, UM1, U+1_e);
*Iz = result.rpart(); *Iz = result.rpart();
@ -622,6 +622,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
double Ixf1,Ixf2,Qxf1,Qxf2; double Ixf1,Ixf2,Qxf1,Qxf2;
double Itxf, Qdeix; double Itxf, Qdeix;
double Vxf, Ixf, Qxf; double Vxf, Ixf, Qxf;
double Vxf1, Vxf2;
double hjei_vbe; double hjei_vbe;
@ -712,8 +713,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
//NQS //NQS
double Vbxf, Vbxf1, Vbxf2; double Vbxf, Vbxf1, Vbxf2;
double Qxf_Vxf; double Qxf_Vxf, Qxf1_Vxf1, Qxf2_Vxf2;
double Iqxf, Iqxf_Vxf, Iqxf1, Iqxf2; double Iqxf, Iqxf_Vxf, Iqxf1, Iqxf1_Vxf1, Iqxf2, Iqxf2_Vxf2;
double Ith, Vrth, Icth, Icth_Vrth, delvrth; double Ith, Vrth, Icth, Icth_Vrth, delvrth;
@ -1005,9 +1006,9 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Vsis = model->HICUMtype*( Vsis = model->HICUMtype*(
*(ckt->CKTrhsOld+here->HICUMsubsSINode)- *(ckt->CKTrhsOld+here->HICUMsubsSINode)-
*(ckt->CKTrhsOld+here->HICUMsubsNode)); *(ckt->CKTrhsOld+here->HICUMsubsNode));
Vbxf = *(ckt->CKTstate0 + here->HICUMvxf); Vbxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
Vbxf1 = *(ckt->CKTstate0 + here->HICUMvxf1); Vbxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
Vbxf2 = *(ckt->CKTstate0 + here->HICUMvxf2); Vbxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
if (model->HICUMflsh) if (model->HICUMflsh)
Vrth = *(ckt->CKTstate0 + here->HICUMvrth); Vrth = *(ckt->CKTstate0 + here->HICUMvrth);
} else if(ckt->CKTmode & MODEINITTRAN) { } else if(ckt->CKTmode & MODEINITTRAN) {
@ -1043,9 +1044,9 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Vsis = model->HICUMtype*( Vsis = model->HICUMtype*(
*(ckt->CKTrhsOld+here->HICUMsubsSINode)- *(ckt->CKTrhsOld+here->HICUMsubsSINode)-
*(ckt->CKTrhsOld+here->HICUMsubsNode)); *(ckt->CKTrhsOld+here->HICUMsubsNode));
Vbxf = *(ckt->CKTstate1 + here->HICUMvxf); Vbxf = *(ckt->CKTrhsOld + here->HICUMxfNode);
Vbxf1 = *(ckt->CKTstate1 + here->HICUMvxf1); Vbxf1 = *(ckt->CKTrhsOld + here->HICUMxf1Node);
Vbxf2 = *(ckt->CKTstate1 + here->HICUMvxf2); Vbxf2 = *(ckt->CKTrhsOld + here->HICUMxf2Node);
if (model->HICUMflsh) if (model->HICUMflsh)
Vrth = *(ckt->CKTstate1 + here->HICUMvrth); Vrth = *(ckt->CKTstate1 + here->HICUMvrth);
} else if((ckt->CKTmode & MODEINITJCT) && } else if((ckt->CKTmode & MODEINITJCT) &&
@ -1655,7 +1656,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
//Tunneling current //Tunneling current
//TODO: missing temperature derivatives abet_t vdei_t ibets_t cjei0_t vdep_t ibets_t cjep0_t //TODO: missing temperature derivatives abet_t vdei_t ibets_t cjei0_t vdep_t ibets_t cjep0_t
//@Mario: is there really no direct T dependence here?
result = calc_ibet(Vbiei, Vbpei+1_e); result = calc_ibet(Vbiei, Vbpei+1_e);
ibet = result.rpart(); ibet = result.rpart();
ibet_Vbpei = result.dpart(); ibet_Vbpei = result.dpart();
@ -1752,20 +1752,22 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
// Excess Phase calculation // Excess Phase calculation
if ((model->HICUMflnqs != 0 || model->HICUMflcomp == 0.0 || model->HICUMflcomp == 2.1) && Tf != 0 && (model->HICUMalit > 0 || model->HICUMalqf > 0)) { if ((model->HICUMflnqs != 0 || model->HICUMflcomp == 0.0 || model->HICUMflcomp == 2.1) && Tf != 0 && (model->HICUMalit > 0 || model->HICUMalqf > 0)) {
double Vxf1, Vxf2, fact;
Vxf1 = Vbxf1; Vxf1 = Vbxf1;
Vxf2 = Vbxf2; Vxf2 = Vbxf2;
Ixf1 = (Vxf2-itf)/Tf*model->HICUMt0; Ixf1 = (Vxf2-itf)/Tf*model->HICUMt0;
Ixf2 = (Vxf2-Vxf1)/Tf*model->HICUMt0; Ixf2 = (Vxf2-Vxf1)/Tf*model->HICUMt0;
Qxf1 = model->HICUMalit*Vxf1*model->HICUMt0; Qxf1 = model->HICUMalit*model->HICUMt0*Vxf1;
Qxf2 = model->HICUMalit*Vxf2/3*model->HICUMt0; Qxf1_Vxf1 = model->HICUMalit*model->HICUMt0;
Qxf2 = model->HICUMalit*model->HICUMt0*Vxf2/3;
Qxf2_Vxf2 = model->HICUMalit*model->HICUMt0/3;
Itxf = Vxf2; Itxf = Vxf2;
// TODO derivatives of Ixf1 and Ixf2
Vxf = Vbxf; //for RC nw Vxf = Vbxf; //for RC nw
fact = model->HICUMt0/Tf; //for RC nw Ixf = (Vxf - Qdei)*model->HICUMt0/Tf; //for RC nw
Ixf = (Vxf - Qdei)*fact; //for RC nw Qxf = model->HICUMalqf*model->HICUMt0*Vxf; //for RC nw
Qxf = model->HICUMalqf*Vxf*model->HICUMt0; //for RC nw
Qxf_Vxf = model->HICUMalqf*model->HICUMt0; //for RC nw Qxf_Vxf = model->HICUMalqf*model->HICUMt0; //for RC nw
Qdeix = Vxf; //for RC nw Qdeix = Vxf; //for RC nw
} else { } else {
@ -1773,6 +1775,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ixf2 = Vbxf2; Ixf2 = Vbxf2;
Qxf1 = 0; Qxf1 = 0;
Qxf2 = 0; Qxf2 = 0;
Qxf1_Vxf1 = 0;
Qxf2_Vxf2 = 0;
Ixf = Vbxf; Ixf = Vbxf;
Qxf = 0; Qxf = 0;
@ -1971,6 +1975,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMqbcpar2) = Qbcpar2; *(ckt->CKTstate0 + here->HICUMqbcpar2) = Qbcpar2;
*(ckt->CKTstate0 + here->HICUMqsu) = Qsu; *(ckt->CKTstate0 + here->HICUMqsu) = Qsu;
//NQS //NQS
*(ckt->CKTstate0 + here->HICUMqxf1) = Qxf1;
*(ckt->CKTstate0 + here->HICUMqxf2) = Qxf2;
*(ckt->CKTstate0 + here->HICUMqxf) = Qxf; *(ckt->CKTstate0 + here->HICUMqxf) = Qxf;
if (model->HICUMflsh) if (model->HICUMflsh)
*(ckt->CKTstate0 + here->HICUMqcth) = Qcth; *(ckt->CKTstate0 + here->HICUMqcth) = Qcth;
@ -2013,6 +2019,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMcqbcpar2) = Qbcpar2_Vbpci; *(ckt->CKTstate0 + here->HICUMcqbcpar2) = Qbcpar2_Vbpci;
*(ckt->CKTstate0 + here->HICUMcqsu) = Qsu_Vsis; *(ckt->CKTstate0 + here->HICUMcqsu) = Qsu_Vsis;
//NQS //NQS
*(ckt->CKTstate0 + here->HICUMcqxf1) = Qxf1_Vxf1;
*(ckt->CKTstate0 + here->HICUMcqxf2) = Qxf2_Vxf2;
*(ckt->CKTstate0 + here->HICUMcqxf) = Qxf_Vxf; *(ckt->CKTstate0 + here->HICUMcqxf) = Qxf_Vxf;
if (model->HICUMflsh) if (model->HICUMflsh)
*(ckt->CKTstate0 + here->HICUMcqcth) = model->HICUMcth; *(ckt->CKTstate0 + here->HICUMcqcth) = model->HICUMcth;
@ -2063,7 +2071,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
} }
// Ibpbi += ddt(Qrbi); // Ibpbi += ddt(Qrbi);
dummdumm(int(0));
error = NIintegrate(ckt,&geq,&ceq,Qrbi_Vbpbi,here->HICUMqrbi); error = NIintegrate(ckt,&geq,&ceq,Qrbi_Vbpbi,here->HICUMqrbi);
if(error) return(error); if(error) return(error);
Ibpbi_Vbpbi += geq; Ibpbi_Vbpbi += geq;
@ -2126,7 +2133,17 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Isc_Vsc = geq; Isc_Vsc = geq;
Isc = *(ckt->CKTstate0 + here->HICUMcqscp); Isc = *(ckt->CKTstate0 + here->HICUMcqscp);
//NQS //NQS
// Icxf += ddt(Qxf); //for RC nw // 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); error = NIintegrate(ckt,&geq,&ceq,Qxf_Vxf,here->HICUMqxf);
if(error) return(error); if(error) return(error);
Iqxf_Vxf = geq; Iqxf_Vxf = geq;
@ -2469,6 +2486,49 @@ c Branch: sis, Stamp element: Rsu
*(here->HICUMsubsSubsSIPtr) += -Isis_Vsis; *(here->HICUMsubsSubsSIPtr) += -Isis_Vsis;
//NQS //NQS
/* /*
c Branch: xf1-ground, Stamp element: Ixf1
*/
// rhs_current = (Ixf1 - Ixf1_Vxf1*Vxf1 - Ixf1_Vrth*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_Vrth;
// *(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;
/*
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_Vrth*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_Vrth;
// *(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;
/*
c Branch: xf2-ground, Stamp element: Rxf2
*/
*(here->HICUMxf2Xf2Ptr) += 1; // current Ixf2 is normalized to Tf
/*
c Branch: xf-ground, Stamp element: Ixf c Branch: xf-ground, Stamp element: Ixf
*/ */
// rhs_current = model->HICUMtype * (Ixf - Ixf_Vrth*Vrth - Ixf_Vbiei*Vbiei - Ixf_Vbici*Vbici); // rhs_current = model->HICUMtype * (Ixf - Ixf_Vrth*Vrth - Ixf_Vbiei*Vbiei - Ixf_Vbici*Vbici);
@ -2480,15 +2540,15 @@ c Branch: xf-ground, Stamp element: Ixf
// *(here->HICUMxfBaseBIPtr) += -Ixf_Vbici; // *(here->HICUMxfBaseBIPtr) += -Ixf_Vbici;
// *(here->HICUMxfCollCIPtr) += +Ixf_Vbici; // *(here->HICUMxfCollCIPtr) += +Ixf_Vbici;
/* /*
c Branch: xf-ground, Stamp element: Qxf c Branch: xf-ground, Stamp element: Qxf // TODO Test in AC simulation!
*/ */
rhs_current = model->HICUMtype * (Iqxf - Iqxf_Vxf*Vxf); // rhs_current = model->HICUMtype * (Iqxf - Iqxf_Vxf*Vxf);
*(ckt->CKTrhs + here->HICUMxfNode) += rhs_current; // into ground // *(ckt->CKTrhs + here->HICUMxfNode) += rhs_current; // into ground
*(here->HICUMxfXfPtr) += Iqxf_Vxf; // *(here->HICUMxfXfPtr) += Iqxf_Vxf;
/* /*
c Branch: xf-ground, Stamp element: Rxf c Branch: xf-ground, Stamp element: Rxf
*/ */
*(here->HICUMxfXfPtr) += Tf; // current Ixf is normalized to Tf *(here->HICUMxfXfPtr) += 1; // current Ixf is normalized to Tf
if (model->HICUMflsh) { if (model->HICUMflsh) {
/* /*

View File

@ -23,4 +23,8 @@ This file gives an overview of the files needed for the ngspice HiCUM version, e
# hicum2setup.c # hicum2setup.c
# hicum2soachk.c # hicum2soachk.c
# hicum2temp.c # hicum2temp.c
* Temperature scaling of all parameters
* Models are implemented, missing are the derivatives
* As most models are easy and just temperature dependent -> no dual numbers
* Assignee: Mario
# hicum2trunc.c # hicum2trunc.c

View File

@ -1,10 +1,9 @@
HICUML2 v2.4.0 Gummel Test HICUML2 v2.4.0 Gummel Test
VE Q1_E 0 1.0 VE Q1_E 0 1.0
VS Q1_S 0 0.0
VC Q1_C 0 0.0 VC Q1_C 0 0.0
VB Q1_B 0 0.0 VB Q1_B 0 0.0
RT Q1_T 0 1M RT Q1_T 0 1M
Q1 Q1_C Q1_B Q1_E Q1_S Q1_T P1 Q1 Q1_C Q1_B Q1_E Q1_E Q1_T P1
.DC VE -0.2 -1.2 -10m .DC VE -0.2 -1.2 -10m
.OPTIONS GMIN=1e-13 NOACCT .OPTIONS GMIN=1e-13 NOACCT
@ -23,12 +22,12 @@ Q1 Q1_C Q1_B Q1_E Q1_S Q1_T P1
+ fbcpar=0.3 fbepar=1 cjs0=2.6e-014 vds=0.9997 zs=0.4295 vpts=100 + 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 + 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 + 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=1 kf=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 + 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 + 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.17 f1vg=-0.000102377 f2vg=0.00043215 + zetare=-0.9605 zetacx=0 vge=1.17 vgc=1.17 vgs=1.17 f1vg=-0.000102377 f2vg=0.00043215
+ zetact=5 zetabet=4.892 flsh=1 rth=1113.4 cth=6.841e-012 zetarth=0 + zetact=5 zetabet=4.892 flsh=0 rth=1113.4 cth=6.841e-012 zetarth=0
+ alrth=0.002 flcomp=0.0 tnom=26.85 acbar=1.5 flcono=0 icbar=0.01 + alrth=0.002 flcomp=2.4 tnom=26.85 acbar=1.5 flcono=0 icbar=0.01
+ vcbar=0.04 zetavgbe=0.7 hf0=40 ahjei=3 rhjei=2 delck=2 zetahjei=-0.5 + vcbar=0.04 zetavgbe=0.7 hf0=40 ahjei=3 rhjei=2 delck=2 zetahjei=-0.5

203
tests/hicum2/FG.out Normal file → Executable file
View File

@ -1,5 +1,4 @@
No. of Data Rows : 101 No. of Data Rows : 101
Circuit: HICUML2 v2.4.0 Gummel Test Circuit: HICUML2 v2.4.0 Gummel Test
@ -9,105 +8,105 @@ Doing analysis at TEMP = 300.150000 and TNOM = 300.150000
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
Index v-sweep abs(i(vc)) abs(i(vb)) Index v-sweep abs(i(vc)) abs(i(vb))
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
0 2.000000e-01 4.049351e-13 2.225580e-12 0 2.000000e-01 4.049275e-13 2.228959e-12
1 2.100000e-01 5.113450e-13 2.709949e-12 1 2.100000e-01 5.113338e-13 2.714122e-12
2 2.200000e-01 6.630802e-13 3.303959e-12 2 2.200000e-01 6.630638e-13 3.309110e-12
3 2.300000e-01 8.814445e-13 4.033035e-12 3 2.300000e-01 8.814204e-13 4.039392e-12
4 2.400000e-01 1.197752e-12 4.928519e-12 4 2.400000e-01 1.197716e-12 4.936361e-12
5 2.500000e-01 1.658029e-12 6.029049e-12 5 2.500000e-01 1.657977e-12 6.038721e-12
6 2.600000e-01 2.329925e-12 7.382271e-12 6 2.600000e-01 2.329849e-12 7.394200e-12
7 2.700000e-01 3.312868e-12 9.046943e-12 7 2.700000e-01 3.312756e-12 9.061656e-12
8 2.800000e-01 4.752984e-12 1.109555e-11 8 2.800000e-01 4.752819e-12 1.111369e-11
9 2.900000e-01 6.865025e-12 1.361750e-11 9 2.900000e-01 6.864784e-12 1.363988e-11
10 3.000000e-01 9.964585e-12 1.672315e-11 10 3.000000e-01 9.964231e-12 1.675076e-11
11 3.100000e-01 1.451543e-11 2.054869e-11 11 3.100000e-01 1.451491e-11 2.058275e-11
12 3.200000e-01 2.119904e-11 2.526227e-11 12 3.200000e-01 2.119828e-11 2.530429e-11
13 3.300000e-01 3.101675e-11 3.107153e-11 13 3.300000e-01 3.101563e-11 3.112340e-11
14 3.400000e-01 4.543985e-11 3.823301e-11 14 3.400000e-01 4.543821e-11 3.829703e-11
15 3.500000e-01 6.662994e-11 4.706370e-11 15 3.500000e-01 6.662754e-11 4.714276e-11
16 3.600000e-01 9.776277e-11 5.795551e-11 16 3.600000e-01 9.775923e-11 5.805316e-11
17 3.700000e-01 1.435036e-10 7.139318e-11 17 3.700000e-01 1.434984e-10 7.151385e-11
18 3.800000e-01 2.107056e-10 8.797657e-11 18 3.800000e-01 2.106980e-10 8.812576e-11
19 3.900000e-01 3.094351e-10 1.084485e-10 19 3.900000e-01 3.094239e-10 1.086330e-10
20 4.000000e-01 4.544769e-10 1.337292e-10 20 4.000000e-01 4.544605e-10 1.339576e-10
21 4.100000e-01 6.675448e-10 1.649602e-10 21 4.100000e-01 6.675208e-10 1.652431e-10
22 4.200000e-01 9.805260e-10 2.035581e-10 22 4.200000e-01 9.804908e-10 2.039088e-10
23 4.300000e-01 1.440243e-09 2.512831e-10 23 4.300000e-01 1.440191e-09 2.517182e-10
24 4.400000e-01 2.115444e-09 3.103247e-10 24 4.400000e-01 2.115368e-09 3.108651e-10
25 4.500000e-01 3.107058e-09 3.834107e-10 25 4.500000e-01 3.106946e-09 3.840828e-10
26 4.600000e-01 4.563242e-09 4.739441e-10 26 4.600000e-01 4.563079e-09 4.747811e-10
27 4.700000e-01 6.701457e-09 5.861787e-10 27 4.700000e-01 6.701218e-09 5.872227e-10
28 4.800000e-01 9.840846e-09 7.254419e-10 28 4.800000e-01 9.840494e-09 7.267467e-10
29 4.900000e-01 1.444971e-08 8.984222e-10 29 4.900000e-01 1.444919e-08 9.000562e-10
30 5.000000e-01 2.121510e-08 1.113538e-09 30 5.000000e-01 2.121433e-08 1.115590e-09
31 5.100000e-01 3.114486e-08 1.381420e-09 31 5.100000e-01 3.114373e-08 1.384002e-09
32 5.200000e-01 4.571712e-08 1.715539e-09 32 5.200000e-01 4.571544e-08 1.718799e-09
33 5.300000e-01 6.709928e-08 2.133002e-09 33 5.300000e-01 6.709676e-08 2.137132e-09
34 5.400000e-01 9.846869e-08 2.655677e-09 34 5.400000e-01 9.846489e-08 2.660929e-09
35 5.500000e-01 1.444821e-07 3.311602e-09 35 5.500000e-01 1.444763e-07 3.318308e-09
36 5.600000e-01 2.119626e-07 4.136919e-09 36 5.600000e-01 2.119536e-07 4.145522e-09
37 5.700000e-01 3.109041e-07 5.178468e-09 37 5.700000e-01 3.108897e-07 5.189556e-09
38 5.800000e-01 4.559399e-07 6.497298e-09 38 5.800000e-01 4.559164e-07 6.511663e-09
39 5.900000e-01 6.684879e-07 8.173459e-09 39 5.900000e-01 6.684482e-07 8.192167e-09
40 6.000000e-01 9.798838e-07 1.031258e-08 40 6.000000e-01 9.798144e-07 1.033707e-08
41 6.100000e-01 1.435954e-06 1.305493e-08 41 6.100000e-01 1.435828e-06 1.308719e-08
42 6.200000e-01 2.103689e-06 1.658806e-08 42 6.200000e-01 2.103455e-06 1.663074e-08
43 6.300000e-01 3.080976e-06 2.116430e-08 43 6.300000e-01 3.080525e-06 2.122105e-08
44 6.400000e-01 4.510769e-06 2.712546e-08 44 6.400000e-01 4.509880e-06 2.720120e-08
45 6.500000e-01 6.598624e-06 3.493740e-08 45 6.500000e-01 6.596844e-06 3.503877e-08
46 6.600000e-01 9.651558e-06 4.523897e-08 46 6.600000e-01 9.647940e-06 4.537475e-08
47 6.700000e-01 1.410969e-05 5.891122e-08 47 6.700000e-01 1.410226e-05 5.909275e-08
48 6.800000e-01 2.061503e-05 7.717565e-08 48 6.800000e-01 2.059972e-05 7.741690e-08
49 6.900000e-01 3.009990e-05 1.017337e-07 49 6.900000e-01 3.006819e-05 1.020505e-07
50 7.000000e-01 4.391594e-05 1.349652e-07 50 7.000000e-01 4.385020e-05 1.353718e-07
51 7.100000e-01 6.401850e-05 1.802097e-07 51 7.100000e-01 6.388229e-05 1.807107e-07
52 7.200000e-01 9.322680e-05 2.421649e-07 52 7.200000e-01 9.294511e-05 2.427359e-07
53 7.300000e-01 1.355843e-04 3.274474e-07 53 7.300000e-01 1.350039e-04 3.279924e-07
54 7.400000e-01 1.968435e-04 4.453752e-07 54 7.400000e-01 1.956548e-04 4.456394e-07
55 7.500000e-01 2.850922e-04 6.090441e-07 55 7.500000e-01 2.826782e-04 6.084386e-07
56 7.600000e-01 4.115088e-04 8.367799e-07 56 7.600000e-01 4.066653e-04 8.340431e-07
57 7.700000e-01 5.911811e-04 1.154039e-06 57 7.700000e-01 5.816221e-04 1.146610e-06
58 7.800000e-01 8.438251e-04 1.595796e-06 58 7.800000e-01 8.253658e-04 1.578709e-06
59 7.900000e-01 1.194123e-03 2.209384e-06 59 7.900000e-01 1.159449e-03 2.173417e-06
60 8.000000e-01 1.671327e-03 3.057614e-06 60 8.000000e-01 1.608349e-03 2.986417e-06
61 8.100000e-01 2.307843e-03 4.221915e-06 61 8.100000e-01 2.197834e-03 4.087850e-06
62 8.200000e-01 3.136856e-03 5.805096e-06 62 8.200000e-01 2.952755e-03 5.563725e-06
63 8.300000e-01 4.189465e-03 7.933416e-06 63 8.300000e-01 3.894822e-03 7.516722e-06
64 8.400000e-01 5.492130e-03 1.075774e-05 64 8.400000e-01 5.040995e-03 1.006634e-05
65 8.500000e-01 7.065050e-03 1.445376e-05 65 8.500000e-01 6.402781e-03 1.334838e-05
66 8.600000e-01 8.921662e-03 1.922145e-05 66 8.600000e-01 7.986391e-03 1.751363e-05
67 8.700000e-01 1.106902e-02 2.528408e-05 67 8.700000e-01 9.793400e-03 2.272603e-05
68 8.800000e-01 1.350859e-02 3.288743e-05 68 8.800000e-01 1.182159e-02 2.916016e-05
69 8.900000e-01 1.623721e-02 4.229989e-05 69 8.900000e-01 1.406575e-02 3.699861e-05
70 9.000000e-01 1.924788e-02 5.381443e-05 70 9.000000e-01 1.651838e-02 4.642947e-05
71 9.100000e-01 2.253041e-02 6.775416e-05 71 9.100000e-01 1.917019e-02 5.764474e-05
72 9.200000e-01 2.607182e-02 8.448562e-05 72 9.200000e-01 2.201052e-02 7.084062e-05
73 9.300000e-01 2.985650e-02 1.044530e-04 73 9.300000e-01 2.502762e-02 8.622214e-05
74 9.400000e-01 3.386575e-02 1.282787e-04 74 9.400000e-01 2.820878e-02 1.040182e-04
75 9.500000e-01 3.807605e-02 1.570841e-04 75 9.500000e-01 3.154025e-02 1.245245e-04
76 9.600000e-01 4.245317e-02 1.935144e-04 76 9.600000e-01 3.500674e-02 1.482245e-04
77 9.700000e-01 4.693613e-02 2.446155e-04 77 9.700000e-01 3.858976e-02 1.761297e-04
78 9.800000e-01 5.140989e-02 3.270976e-04 78 9.800000e-01 4.226323e-02 2.106934e-04
79 9.900000e-01 5.571579e-02 4.668657e-04 79 9.900000e-01 4.598348e-02 2.579408e-04
80 1.000000e+00 5.977060e-02 6.784053e-04 80 1.000000e+00 4.967483e-02 3.308659e-04
81 1.010000e+00 6.363845e-02 9.483720e-04 81 1.010000e+00 5.323301e-02 4.499557e-04
82 1.020000e+00 6.743270e-02 1.251993e-03 82 1.020000e+00 5.657993e-02 6.330012e-04
83 1.030000e+00 7.123467e-02 1.571674e-03 83 1.030000e+00 5.972028e-02 8.813991e-04
84 1.040000e+00 7.508885e-02 1.899848e-03 84 1.040000e+00 6.271680e-02 1.181850e-03
85 1.050000e+00 7.901772e-02 2.235275e-03 85 1.050000e+00 6.563508e-02 1.518125e-03
86 1.060000e+00 8.303174e-02 2.579678e-03 86 1.060000e+00 6.852092e-02 1.878222e-03
87 1.070000e+00 8.713429e-02 2.935896e-03 87 1.070000e+00 7.140176e-02 2.255370e-03
88 1.080000e+00 9.132395e-02 3.307053e-03 88 1.080000e+00 7.429288e-02 2.646645e-03
89 1.090000e+00 9.559576e-02 3.696236e-03 89 1.090000e+00 7.720226e-02 3.051443e-03
90 1.100000e+00 9.994202e-02 4.106396e-03 90 1.100000e+00 8.013339e-02 3.470405e-03
91 1.110000e+00 1.043530e-01 4.540339e-03 91 1.110000e+00 8.308694e-02 3.904762e-03
92 1.120000e+00 1.088174e-01 5.000748e-03 92 1.120000e+00 8.606171e-02 4.355986e-03
93 1.130000e+00 1.133230e-01 5.490201e-03 93 1.130000e+00 8.905522e-02 4.825594e-03
94 1.140000e+00 1.178571e-01 6.011191e-03 94 1.140000e+00 9.206412e-02 5.315066e-03
95 1.150000e+00 1.224071e-01 6.566120e-03 95 1.150000e+00 9.508446e-02 5.825795e-03
96 1.160000e+00 1.269605e-01 7.157300e-03 96 1.160000e+00 9.811193e-02 6.359080e-03
97 1.170000e+00 1.315057e-01 7.786926e-03 97 1.170000e+00 1.011420e-01 6.916117e-03
98 1.180000e+00 1.360319e-01 8.457060e-03 98 1.180000e+00 1.041701e-01 7.498008e-03
99 1.190000e+00 1.405293e-01 9.169599e-03 99 1.190000e+00 1.071917e-01 8.105763e-03
100 1.200000e+00 1.449897e-01 9.926253e-03 100 1.200000e+00 1.102022e-01 8.740302e-03

34
tests/hicum2/FG_sh.cir Normal file
View File

@ -0,0 +1,34 @@
HICUML2 v2.4.0 Gummel Test
VE Q1_E 0 1.0
VC Q1_C 0 0.0
VB Q1_B 0 0.0
RT Q1_T 0 1M
Q1 Q1_C Q1_B Q1_E Q1_E Q1_T P1
.DC VE -0.2 -1.2 -10m
.OPTIONS GMIN=1e-13 NOACCT
.print dc abs(i(vc)) abs(i(vb))
.MODEL P1 NPN LEVEL=8
+ c10=9.074e-030 qp0=1.008e-013 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=0 msf=1 iscs=0 msc=1
+ tsf=0 rsu=0 csu=0 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=1 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.17 f1vg=-0.000102377 f2vg=0.00043215
+ zetact=5 zetabet=4.892 flsh=1 rth=1113.4 cth=6.841e-012 zetarth=0
+ alrth=0.002 flcomp=2.4 tnom=26.85 acbar=1.5 flcono=0 icbar=0.01
+ vcbar=0.04 zetavgbe=0.7 hf0=40 ahjei=3 rhjei=2 delck=2 zetahjei=-0.5
.END

View File

@ -2,7 +2,8 @@
TESTS = FG.cir TESTS = FG.cir \
FG_sh.cir
TESTS_ENVIRONMENT = $(SHELL) $(top_srcdir)/tests/bin/check.sh $(top_builddir)/src/ngspice TESTS_ENVIRONMENT = $(SHELL) $(top_srcdir)/tests/bin/check.sh $(top_builddir)/src/ngspice