Sim Model Editor: Make the VBIC model the first BJT model to select
This commit is contained in:
parent
484620eeb5
commit
b025b103de
|
@ -116,10 +116,10 @@ SIM_MODEL::INFO SIM_MODEL::TypeInfo( TYPE aType )
|
||||||
|
|
||||||
case TYPE::D: return { DEVICE_TYPE_::D, "", "" };
|
case TYPE::D: return { DEVICE_TYPE_::D, "", "" };
|
||||||
|
|
||||||
case TYPE::NPN_GUMMELPOON: return { DEVICE_TYPE_::NPN, "GUMMELPOON", "Gummel-Poon" };
|
|
||||||
case TYPE::PNP_GUMMELPOON: return { DEVICE_TYPE_::PNP, "GUMMELPOON", "Gummel-Poon" };
|
|
||||||
case TYPE::NPN_VBIC: return { DEVICE_TYPE_::NPN, "VBIC", "VBIC" };
|
case TYPE::NPN_VBIC: return { DEVICE_TYPE_::NPN, "VBIC", "VBIC" };
|
||||||
case TYPE::PNP_VBIC: return { DEVICE_TYPE_::PNP, "VBIC", "VBIC" };
|
case TYPE::PNP_VBIC: return { DEVICE_TYPE_::PNP, "VBIC", "VBIC" };
|
||||||
|
case TYPE::NPN_GUMMELPOON: return { DEVICE_TYPE_::NPN, "GUMMELPOON", "Gummel-Poon" };
|
||||||
|
case TYPE::PNP_GUMMELPOON: return { DEVICE_TYPE_::PNP, "GUMMELPOON", "Gummel-Poon" };
|
||||||
//case TYPE::BJT_MEXTRAM: return {};
|
//case TYPE::BJT_MEXTRAM: return {};
|
||||||
case TYPE::NPN_HICUM2: return { DEVICE_TYPE_::NPN, "HICUML2", "HICUM level 2" };
|
case TYPE::NPN_HICUM2: return { DEVICE_TYPE_::NPN, "HICUML2", "HICUM level 2" };
|
||||||
case TYPE::PNP_HICUM2: return { DEVICE_TYPE_::PNP, "HICUML2", "HICUM level 2" };
|
case TYPE::PNP_HICUM2: return { DEVICE_TYPE_::PNP, "HICUML2", "HICUM level 2" };
|
||||||
|
@ -254,12 +254,10 @@ SIM_MODEL::SPICE_INFO SIM_MODEL::SpiceInfo( TYPE aType )
|
||||||
|
|
||||||
case TYPE::D: return { "D", "D" };
|
case TYPE::D: return { "D", "D" };
|
||||||
|
|
||||||
case TYPE::NPN_GUMMELPOON: return { "Q", "NPN", "", "1", true };
|
|
||||||
case TYPE::PNP_GUMMELPOON: return { "Q", "PNP", "", "1", true };
|
|
||||||
|
|
||||||
case TYPE::NPN_VBIC: return { "Q", "NPN", "", "4" };
|
case TYPE::NPN_VBIC: return { "Q", "NPN", "", "4" };
|
||||||
case TYPE::PNP_VBIC: return { "Q", "PNP", "", "4" };
|
case TYPE::PNP_VBIC: return { "Q", "PNP", "", "4" };
|
||||||
|
case TYPE::NPN_GUMMELPOON: return { "Q", "NPN", "", "1", true };
|
||||||
|
case TYPE::PNP_GUMMELPOON: return { "Q", "PNP", "", "1", true };
|
||||||
case TYPE::NPN_HICUM2: return { "Q", "NPN", "", "8" };
|
case TYPE::NPN_HICUM2: return { "Q", "NPN", "", "8" };
|
||||||
case TYPE::PNP_HICUM2: return { "Q", "PNP", "", "8" };
|
case TYPE::PNP_HICUM2: return { "Q", "PNP", "", "8" };
|
||||||
|
|
||||||
|
|
|
@ -125,10 +125,10 @@ public:
|
||||||
|
|
||||||
D,
|
D,
|
||||||
|
|
||||||
NPN_GUMMELPOON,
|
|
||||||
PNP_GUMMELPOON,
|
|
||||||
NPN_VBIC,
|
NPN_VBIC,
|
||||||
PNP_VBIC,
|
PNP_VBIC,
|
||||||
|
NPN_GUMMELPOON,
|
||||||
|
PNP_GUMMELPOON,
|
||||||
//NPN_MEXTRAM,
|
//NPN_MEXTRAM,
|
||||||
//PNP_MEXTRAM,
|
//PNP_MEXTRAM,
|
||||||
NPN_HICUM2,
|
NPN_HICUM2,
|
||||||
|
|
|
@ -221,10 +221,10 @@ SIM_MODEL_NGSPICE::MODEL_TYPE SIM_MODEL_NGSPICE::getModelType() const
|
||||||
case TYPE::NONE: return MODEL_TYPE::NONE;
|
case TYPE::NONE: return MODEL_TYPE::NONE;
|
||||||
case TYPE::D: return MODEL_TYPE::DIODE;
|
case TYPE::D: return MODEL_TYPE::DIODE;
|
||||||
|
|
||||||
case TYPE::NPN_GUMMELPOON:
|
|
||||||
case TYPE::PNP_GUMMELPOON: return MODEL_TYPE::BJT;
|
|
||||||
case TYPE::NPN_VBIC:
|
case TYPE::NPN_VBIC:
|
||||||
case TYPE::PNP_VBIC: return MODEL_TYPE::VBIC;
|
case TYPE::PNP_VBIC: return MODEL_TYPE::VBIC;
|
||||||
|
case TYPE::NPN_GUMMELPOON:
|
||||||
|
case TYPE::PNP_GUMMELPOON: return MODEL_TYPE::BJT;
|
||||||
case TYPE::NPN_HICUM2:
|
case TYPE::NPN_HICUM2:
|
||||||
case TYPE::PNP_HICUM2: return MODEL_TYPE::HICUM2;
|
case TYPE::PNP_HICUM2: return MODEL_TYPE::HICUM2;
|
||||||
|
|
||||||
|
|
|
@ -5,96 +5,10 @@
|
||||||
* All parameter values are made up and physically nonsensical.
|
* All parameter values are made up and physically nonsensical.
|
||||||
* Commented out some parameters to avoid making test code overly long.
|
* Commented out some parameters to avoid making test code overly long.
|
||||||
|
|
||||||
* First, Gummel-Poon.
|
|
||||||
|
|
||||||
*
|
|
||||||
.MODEL _0_NPN_GUMMELPOON NPN(
|
|
||||||
+ IS = 000.000E+07
|
|
||||||
+ NF = 100.001E+07
|
|
||||||
+ ISE = 200.002E+07
|
|
||||||
+ NE = 300.003E+07
|
|
||||||
+ BF = 400.004E+07
|
|
||||||
+ IKF = 500.005E+07
|
|
||||||
+ VAF = 600.006E+07
|
|
||||||
+ NR = 700.007E+07
|
|
||||||
+ ISC = 800.008E+07
|
|
||||||
+ NC = 900.009E+07
|
|
||||||
+ BR = 000.000E+07
|
|
||||||
+ IKR = 100.001E+07
|
|
||||||
+ VAR = 200.002E+07
|
|
||||||
+ RB = 300.003E+07
|
|
||||||
+ IRB = 400.004E+07
|
|
||||||
+ RBM = 500.005E+07
|
|
||||||
+ RE = 600.006E+07
|
|
||||||
+ RC = 700.007E+07
|
|
||||||
+ XTB = 800.008E+07
|
|
||||||
+ EG = 900.009E+07
|
|
||||||
+ XTI = 000.000E+07
|
|
||||||
+ CJE = 100.001E+07
|
|
||||||
+ VJE = 200.002E+07
|
|
||||||
+ MJE = 300.003E+07
|
|
||||||
+ TF = 400.004E+07
|
|
||||||
+ XTF = 500.005E+07
|
|
||||||
+ VTF = 600.006E+07
|
|
||||||
+ ITF = 700.007E+07
|
|
||||||
+ PTF = 800.008E+07
|
|
||||||
+ CJC = 900.009E+07
|
|
||||||
+ VJC = 000.000E+07
|
|
||||||
+ MJC = 100.001E+07
|
|
||||||
+ XCJC = 200.002E+07
|
|
||||||
+ TR = 300.003E+07
|
|
||||||
+ CJS = 400.004E+07
|
|
||||||
+ VJS = 500.005E+07
|
|
||||||
+ MJS = 600.006E+07
|
|
||||||
+ FC = 700.007E+07
|
|
||||||
+)
|
|
||||||
|
|
||||||
*
|
|
||||||
.MODEL _1_PNP_GUMMELPOON PNP( level = 1. ; Decimal separator must be accepted too.
|
|
||||||
+ IS = 000.000E+07
|
|
||||||
+ NF = 100.001E+07
|
|
||||||
+ ISE = 200.002E+07
|
|
||||||
+ NE = 300.003E+07
|
|
||||||
+ BF = 400.004E+07
|
|
||||||
+ IKF = 500.005E+07
|
|
||||||
+ VAF = 600.006E+07
|
|
||||||
+ NR = 700.007E+07
|
|
||||||
+ ISC = 800.008E+07
|
|
||||||
+ NC = 900.009E+07
|
|
||||||
+ BR = 000.000E+07
|
|
||||||
+ IKR = 100.001E+07
|
|
||||||
+ VAR = 200.002E+07
|
|
||||||
+ RB = 300.003E+07
|
|
||||||
+ IRB = 400.004E+07
|
|
||||||
+ RBM = 500.005E+07
|
|
||||||
+ RE = 600.006E+07
|
|
||||||
+ RC = 700.007E+07
|
|
||||||
+ XTB = 800.008E+07
|
|
||||||
+ EG = 900.009E+07
|
|
||||||
+ XTI = 000.000E+07
|
|
||||||
+ CJE = 100.001E+07
|
|
||||||
+ VJE = 200.002E+07
|
|
||||||
+ MJE = 300.003E+07
|
|
||||||
+ TF = 400.004E+07
|
|
||||||
+ XTF = 500.005E+07
|
|
||||||
+ VTF = 600.006E+07
|
|
||||||
+ ITF = 700.007E+07
|
|
||||||
+ PTF = 800.008E+07
|
|
||||||
+ CJC = 900.009E+07
|
|
||||||
+ VJC = 000.000E+07
|
|
||||||
+ MJC = 100.001E+07
|
|
||||||
+ XCJC = 200.002E+07
|
|
||||||
+ TR = 300.003E+07
|
|
||||||
+ CJS = 400.004E+07
|
|
||||||
+ VJS = 500.005E+07
|
|
||||||
+ MJS = 600.006E+07
|
|
||||||
+ FC = 700.007E+07
|
|
||||||
+)
|
|
||||||
|
|
||||||
|
|
||||||
* VBIC.
|
* VBIC.
|
||||||
|
|
||||||
.model _2_NPN_VBIC NPN( level=4
|
.model _0_NPN_VBIC NPN( level=4
|
||||||
+ rcx = 000.000E+07
|
+ rcx = 000.000E+07
|
||||||
+ rci = 100.001E+07
|
+ rci = 100.001E+07
|
||||||
+ vo = 200.002E+07
|
+ vo = 200.002E+07
|
||||||
|
@ -209,7 +123,7 @@
|
||||||
+ vce_max = 100.001E+07
|
+ vce_max = 100.001E+07
|
||||||
+)
|
+)
|
||||||
|
|
||||||
.model _3_PNP_VBIC PNP( level=4.0
|
.model _1_PNP_VBIC PNP( level=4.0
|
||||||
+ rcx = 000.000E+07
|
+ rcx = 000.000E+07
|
||||||
+ rci = 100.001E+07
|
+ rci = 100.001E+07
|
||||||
+ vo = 200.002E+07
|
+ vo = 200.002E+07
|
||||||
|
@ -325,7 +239,95 @@
|
||||||
+)
|
+)
|
||||||
|
|
||||||
|
|
||||||
* HICUM/L2
|
* SPICE Gummel-Poon.
|
||||||
|
|
||||||
|
*
|
||||||
|
.MODEL _2_NPN_GUMMELPOON NPN(
|
||||||
|
+ IS = 000.000E+07
|
||||||
|
+ NF = 100.001E+07
|
||||||
|
+ ISE = 200.002E+07
|
||||||
|
+ NE = 300.003E+07
|
||||||
|
+ BF = 400.004E+07
|
||||||
|
+ IKF = 500.005E+07
|
||||||
|
+ VAF = 600.006E+07
|
||||||
|
+ NR = 700.007E+07
|
||||||
|
+ ISC = 800.008E+07
|
||||||
|
+ NC = 900.009E+07
|
||||||
|
+ BR = 000.000E+07
|
||||||
|
+ IKR = 100.001E+07
|
||||||
|
+ VAR = 200.002E+07
|
||||||
|
+ RB = 300.003E+07
|
||||||
|
+ IRB = 400.004E+07
|
||||||
|
+ RBM = 500.005E+07
|
||||||
|
+ RE = 600.006E+07
|
||||||
|
+ RC = 700.007E+07
|
||||||
|
+ XTB = 800.008E+07
|
||||||
|
+ EG = 900.009E+07
|
||||||
|
+ XTI = 000.000E+07
|
||||||
|
+ CJE = 100.001E+07
|
||||||
|
+ VJE = 200.002E+07
|
||||||
|
+ MJE = 300.003E+07
|
||||||
|
+ TF = 400.004E+07
|
||||||
|
+ XTF = 500.005E+07
|
||||||
|
+ VTF = 600.006E+07
|
||||||
|
+ ITF = 700.007E+07
|
||||||
|
+ PTF = 800.008E+07
|
||||||
|
+ CJC = 900.009E+07
|
||||||
|
+ VJC = 000.000E+07
|
||||||
|
+ MJC = 100.001E+07
|
||||||
|
+ XCJC = 200.002E+07
|
||||||
|
+ TR = 300.003E+07
|
||||||
|
+ CJS = 400.004E+07
|
||||||
|
+ VJS = 500.005E+07
|
||||||
|
+ MJS = 600.006E+07
|
||||||
|
+ FC = 700.007E+07
|
||||||
|
+)
|
||||||
|
|
||||||
|
|
||||||
|
*
|
||||||
|
.MODEL _3_PNP_GUMMELPOON PNP( level = 1. ; Decimal separator must be accepted too.
|
||||||
|
+ IS = 000.000E+07
|
||||||
|
+ NF = 100.001E+07
|
||||||
|
+ ISE = 200.002E+07
|
||||||
|
+ NE = 300.003E+07
|
||||||
|
+ BF = 400.004E+07
|
||||||
|
+ IKF = 500.005E+07
|
||||||
|
+ VAF = 600.006E+07
|
||||||
|
+ NR = 700.007E+07
|
||||||
|
+ ISC = 800.008E+07
|
||||||
|
+ NC = 900.009E+07
|
||||||
|
+ BR = 000.000E+07
|
||||||
|
+ IKR = 100.001E+07
|
||||||
|
+ VAR = 200.002E+07
|
||||||
|
+ RB = 300.003E+07
|
||||||
|
+ IRB = 400.004E+07
|
||||||
|
+ RBM = 500.005E+07
|
||||||
|
+ RE = 600.006E+07
|
||||||
|
+ RC = 700.007E+07
|
||||||
|
+ XTB = 800.008E+07
|
||||||
|
+ EG = 900.009E+07
|
||||||
|
+ XTI = 000.000E+07
|
||||||
|
+ CJE = 100.001E+07
|
||||||
|
+ VJE = 200.002E+07
|
||||||
|
+ MJE = 300.003E+07
|
||||||
|
+ TF = 400.004E+07
|
||||||
|
+ XTF = 500.005E+07
|
||||||
|
+ VTF = 600.006E+07
|
||||||
|
+ ITF = 700.007E+07
|
||||||
|
+ PTF = 800.008E+07
|
||||||
|
+ CJC = 900.009E+07
|
||||||
|
+ VJC = 000.000E+07
|
||||||
|
+ MJC = 100.001E+07
|
||||||
|
+ XCJC = 200.002E+07
|
||||||
|
+ TR = 300.003E+07
|
||||||
|
+ CJS = 400.004E+07
|
||||||
|
+ VJS = 500.005E+07
|
||||||
|
+ MJS = 600.006E+07
|
||||||
|
+ FC = 700.007E+07
|
||||||
|
+)
|
||||||
|
|
||||||
|
|
||||||
|
* HICUM/L2.
|
||||||
|
|
||||||
.model _4_NPN_HICUML2 NPN( level=8.00
|
.model _4_NPN_HICUML2 NPN( level=8.00
|
||||||
+ c10 = 000.000E+07
|
+ c10 = 000.000E+07
|
||||||
|
|
|
@ -475,95 +475,8 @@ BOOST_AUTO_TEST_CASE( Bjts )
|
||||||
|
|
||||||
switch( i )
|
switch( i )
|
||||||
{
|
{
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::NPN_GUMMELPOON,
|
|
||||||
{
|
|
||||||
"is",
|
|
||||||
"nf",
|
|
||||||
"ise",
|
|
||||||
"ne",
|
|
||||||
"bf",
|
|
||||||
"ikf",
|
|
||||||
"vaf",
|
|
||||||
"nr",
|
|
||||||
"isc",
|
|
||||||
"nc",
|
|
||||||
"br",
|
|
||||||
"ikr",
|
|
||||||
"var",
|
|
||||||
"rb",
|
|
||||||
"irb",
|
|
||||||
"rbm",
|
|
||||||
"re",
|
|
||||||
"rc",
|
|
||||||
"xtb",
|
|
||||||
"eg",
|
|
||||||
"xti",
|
|
||||||
"cje",
|
|
||||||
"vje",
|
|
||||||
"mje",
|
|
||||||
"tf",
|
|
||||||
"xtf",
|
|
||||||
"vtf",
|
|
||||||
"itf",
|
|
||||||
"ptf",
|
|
||||||
"cjc",
|
|
||||||
"vjc",
|
|
||||||
"mjc",
|
|
||||||
"xcjc",
|
|
||||||
"tr",
|
|
||||||
"cjs",
|
|
||||||
"vjs",
|
|
||||||
"mjs",
|
|
||||||
"fc"
|
|
||||||
} );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::PNP_GUMMELPOON,
|
|
||||||
{
|
|
||||||
"is",
|
|
||||||
"nf",
|
|
||||||
"ise",
|
|
||||||
"ne",
|
|
||||||
"bf",
|
|
||||||
"ikf",
|
|
||||||
"vaf",
|
|
||||||
"nr",
|
|
||||||
"isc",
|
|
||||||
"nc",
|
|
||||||
"br",
|
|
||||||
"ikr",
|
|
||||||
"var",
|
|
||||||
"rb",
|
|
||||||
"irb",
|
|
||||||
"rbm",
|
|
||||||
"re",
|
|
||||||
"rc",
|
|
||||||
"xtb",
|
|
||||||
"eg",
|
|
||||||
"xti",
|
|
||||||
"cje",
|
|
||||||
"vje",
|
|
||||||
"mje",
|
|
||||||
"tf",
|
|
||||||
"xtf",
|
|
||||||
"vtf",
|
|
||||||
"itf",
|
|
||||||
"ptf",
|
|
||||||
"cjc",
|
|
||||||
"vjc",
|
|
||||||
"mjc",
|
|
||||||
"xcjc",
|
|
||||||
"tr",
|
|
||||||
"cjs",
|
|
||||||
"vjs",
|
|
||||||
"mjs",
|
|
||||||
"fc"
|
|
||||||
} );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::NPN_VBIC,
|
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::NPN_VBIC,
|
||||||
{
|
{
|
||||||
"rcx",
|
"rcx",
|
||||||
|
@ -681,7 +594,7 @@ BOOST_AUTO_TEST_CASE( Bjts )
|
||||||
} );
|
} );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 1:
|
||||||
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::PNP_VBIC,
|
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::PNP_VBIC,
|
||||||
{
|
{
|
||||||
"rcx",
|
"rcx",
|
||||||
|
@ -799,6 +712,94 @@ BOOST_AUTO_TEST_CASE( Bjts )
|
||||||
} );
|
} );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::NPN_GUMMELPOON,
|
||||||
|
{
|
||||||
|
"is",
|
||||||
|
"nf",
|
||||||
|
"ise",
|
||||||
|
"ne",
|
||||||
|
"bf",
|
||||||
|
"ikf",
|
||||||
|
"vaf",
|
||||||
|
"nr",
|
||||||
|
"isc",
|
||||||
|
"nc",
|
||||||
|
"br",
|
||||||
|
"ikr",
|
||||||
|
"var",
|
||||||
|
"rb",
|
||||||
|
"irb",
|
||||||
|
"rbm",
|
||||||
|
"re",
|
||||||
|
"rc",
|
||||||
|
"xtb",
|
||||||
|
"eg",
|
||||||
|
"xti",
|
||||||
|
"cje",
|
||||||
|
"vje",
|
||||||
|
"mje",
|
||||||
|
"tf",
|
||||||
|
"xtf",
|
||||||
|
"vtf",
|
||||||
|
"itf",
|
||||||
|
"ptf",
|
||||||
|
"cjc",
|
||||||
|
"vjc",
|
||||||
|
"mjc",
|
||||||
|
"xcjc",
|
||||||
|
"tr",
|
||||||
|
"cjs",
|
||||||
|
"vjs",
|
||||||
|
"mjs",
|
||||||
|
"fc"
|
||||||
|
} );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::PNP_GUMMELPOON,
|
||||||
|
{
|
||||||
|
"is",
|
||||||
|
"nf",
|
||||||
|
"ise",
|
||||||
|
"ne",
|
||||||
|
"bf",
|
||||||
|
"ikf",
|
||||||
|
"vaf",
|
||||||
|
"nr",
|
||||||
|
"isc",
|
||||||
|
"nc",
|
||||||
|
"br",
|
||||||
|
"ikr",
|
||||||
|
"var",
|
||||||
|
"rb",
|
||||||
|
"irb",
|
||||||
|
"rbm",
|
||||||
|
"re",
|
||||||
|
"rc",
|
||||||
|
"xtb",
|
||||||
|
"eg",
|
||||||
|
"xti",
|
||||||
|
"cje",
|
||||||
|
"vje",
|
||||||
|
"mje",
|
||||||
|
"tf",
|
||||||
|
"xtf",
|
||||||
|
"vtf",
|
||||||
|
"itf",
|
||||||
|
"ptf",
|
||||||
|
"cjc",
|
||||||
|
"vjc",
|
||||||
|
"mjc",
|
||||||
|
"xcjc",
|
||||||
|
"tr",
|
||||||
|
"cjs",
|
||||||
|
"vjs",
|
||||||
|
"mjs",
|
||||||
|
"fc"
|
||||||
|
} );
|
||||||
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::NPN_HICUM2,
|
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::NPN_HICUM2,
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue