Sim QA: Test all BJT parameters in each model

This commit is contained in:
Mikolaj Wielgus 2022-11-28 09:48:16 +01:00
parent 26644952a4
commit 5fb191e4d6
2 changed files with 1152 additions and 564 deletions

File diff suppressed because it is too large Load Diff

View File

@ -106,12 +106,17 @@ public:
BOOST_TEST_CONTEXT( "Param name: " << paramName )
{
if( i == 0 )
if( i % 10 == 0 )
BOOST_CHECK_EQUAL( aModel.FindParam( paramName )->value->ToString(), "0" );
else if( aModel.FindParam( paramName )->info.type == SIM_VALUE::TYPE_INT )
{
BOOST_CHECK_EQUAL( aModel.FindParam( paramName )->value->ToString(),
fmt::format( "{:d}", i % 10 ) );
}
else
{
BOOST_CHECK_EQUAL( aModel.FindParam( paramName )->value->ToString(),
fmt::format( "{}.0000{}G", i, i ) );
fmt::format( "{}.0000{}G", i % 10, i % 10 ) );
}
}
}
@ -454,36 +459,625 @@ BOOST_AUTO_TEST_CASE( Bjts )
{
case 0:
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::NPN_GUMMELPOON,
{ "is", "nf", "ise", "ne", "bf", "ikf", "vaf", "nr", "isc", "nc" } );
{
"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" } );
{
"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,
{ "rcx", "rci", "vo", "gamm", "hrcf", "rbx", "rbi", "re", "rs",
"rbp" } );
{
"rcx",
"rci",
"vo",
"gamm",
"hrcf",
"rbx",
"rbi",
"re",
"rs",
"rbp",
"is",
"nf",
"nr",
"fc",
"cbeo",
"cje",
"pe",
"me",
"aje",
"cbco",
"cjc",
"qco",
"cjep",
"pc",
"mc",
"ajc",
"cjcp",
"ps",
"ms",
"ajs",
"ibei",
"wbe",
"nei",
"iben",
"nen",
"ibci",
"nci",
"ibcn",
"ncn",
"avc1",
"avc2",
"isp",
"wsp",
"nfp",
"ibeip",
"ibenp",
"ibcip",
"ncip",
"ibcnp",
"ncnp",
"vef",
"ver",
"ikf",
"ikr",
"ikp",
"tf",
"qtf",
"xtf",
"vtf",
"itf",
"tr",
"td",
"kfn",
"afn",
"bfn",
"xre",
"xrb",
"xrbi",
"xrc",
"xrci",
"xrs",
"xvo",
"ea",
"eaie",
"eaic",
"eais",
"eane",
"eanc",
"eans",
"xis",
"xii",
"xin",
"tnf",
"tavc",
"rth",
"cth",
"vrt",
"art",
"ccso",
"qbm",
"nkf",
"xikf",
"xrcx",
"xrbx",
"xrbp",
"isrr",
"xisr",
"dear",
"eap",
"vbbe",
"nbbe",
"ibbe",
"tvbbe1",
"tvbbe2",
"tnbbe",
"ebbe",
"dtemp",
"vers",
"vref",
"vbe_max",
"vbc_max",
"vce_max"
} );
break;
case 3:
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::PNP_VBIC,
{ "rcx", "rci", "vo", "gamm", "hrcf", "rbx", "rbi", "re", "rs",
"rbp" } );
{
"rcx",
"rci",
"vo",
"gamm",
"hrcf",
"rbx",
"rbi",
"re",
"rs",
"rbp",
"is",
"nf",
"nr",
"fc",
"cbeo",
"cje",
"pe",
"me",
"aje",
"cbco",
"cjc",
"qco",
"cjep",
"pc",
"mc",
"ajc",
"cjcp",
"ps",
"ms",
"ajs",
"ibei",
"wbe",
"nei",
"iben",
"nen",
"ibci",
"nci",
"ibcn",
"ncn",
"avc1",
"avc2",
"isp",
"wsp",
"nfp",
"ibeip",
"ibenp",
"ibcip",
"ncip",
"ibcnp",
"ncnp",
"vef",
"ver",
"ikf",
"ikr",
"ikp",
"tf",
"qtf",
"xtf",
"vtf",
"itf",
"tr",
"td",
"kfn",
"afn",
"bfn",
"xre",
"xrb",
"xrbi",
"xrc",
"xrci",
"xrs",
"xvo",
"ea",
"eaie",
"eaic",
"eais",
"eane",
"eanc",
"eans",
"xis",
"xii",
"xin",
"tnf",
"tavc",
"rth",
"cth",
"vrt",
"art",
"ccso",
"qbm",
"nkf",
"xikf",
"xrcx",
"xrbx",
"xrbp",
"isrr",
"xisr",
"dear",
"eap",
"vbbe",
"nbbe",
"ibbe",
"tvbbe1",
"tvbbe2",
"tnbbe",
"ebbe",
"dtemp",
"vers",
"vref",
"vbe_max",
"vbc_max",
"vce_max"
} );
break;
case 4:
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::NPN_HICUM2,
{ "c10", "qp0", "ich", "hf0", "hfe", "hfc", "hjei", "ahjei", "rhjei",
"hjci" } );
{
"c10",
"qp0",
"ich",
"hf0",
"hfe",
"hfc",
"hjei",
"ahjei",
"rhjei",
"hjci",
"ibeis",
"mbei",
"ireis",
"mrei",
"ibeps",
"mbep",
"ireps",
"mrep",
"mcf",
"tbhrec",
"ibcis",
"mbci",
"ibcxs",
"mbcx",
"ibets",
"abet",
"tunode",
"favl",
"qavl",
"kavl",
"alfav",
"alqav",
"alkav",
"rbi0",
"rbx",
"fgeo",
"fdqr0",
"fcrbi",
"fqi",
"re",
"rcx",
"itss",
"msf",
"iscs",
"msc",
"tsf",
"rsu",
"csu",
"cjei0",
"vdei",
"zei",
"ajei",
//"aljei", Alias.
"cjep0",
"vdep",
"zep",
"ajep",
//"aljep", Alias.
"cjci0",
"vdci",
"zci",
"vptci",
"cjcx0",
"vdcx",
"zcx",
"vptcx",
"fbcpar",
//"fbc", Alias.
"fbepar",
//"fbe", Alias.
"cjs0",
"vds",
"zs",
"vpts",
"cscp0",
"vdsp",
"zsp",
"vptsp",
"t0",
"dt0h",
"tbvl",
"tef0",
"gtfe",
"thcs",
"ahc",
//"alhc", Alias.
"fthc",
"rci0",
"vlim",
"vces",
"vpt",
"aick",
"delck",
"tr",
"vcbar",
"icbar",
"acbar",
"cbepar",
//"ceox", Alias.
"cbcpar",
//"ccox", Alias.
"alqf",
"alit",
"flnqs",
"kf",
"af",
"cfbe",
"flcono",
"kfre",
"afre",
"latb",
"latl",
"vgb",
"alt0",
"kt0",
"zetaci",
"alvs",
"alces",
"zetarbi",
"zetarbx",
"zetarcx",
"zetare",
"zetacx",
"vge",
"vgc",
"vgs",
"f1vg",
"f2vg",
"zetact",
"zetabet",
"alb",
"dvgbe",
"zetahjei",
"zetavgbe",
"flsh",
"rth",
"zetarth",
"alrth",
"cth",
"flcomp",
"vbe_max",
"vbc_max",
"vce_max"
} );
break;
case 5:
TestTransistor( model, modelName, i, SIM_MODEL::TYPE::PNP_HICUM2,
{ "c10", "qp0", "ich", "hf0", "hfe", "hfc", "hjei", "ahjei", "rhjei",
"hjci" } );
{
"c10",
"qp0",
"ich",
"hf0",
"hfe",
"hfc",
"hjei",
"ahjei",
"rhjei",
"hjci",
"ibeis",
"mbei",
"ireis",
"mrei",
"ibeps",
"mbep",
"ireps",
"mrep",
"mcf",
"tbhrec",
"ibcis",
"mbci",
"ibcxs",
"mbcx",
"ibets",
"abet",
"tunode",
"favl",
"qavl",
"kavl",
"alfav",
"alqav",
"alkav",
"rbi0",
"rbx",
"fgeo",
"fdqr0",
"fcrbi",
"fqi",
"re",
"rcx",
"itss",
"msf",
"iscs",
"msc",
"tsf",
"rsu",
"csu",
"cjei0",
"vdei",
"zei",
"ajei",
//"aljei", Alias.
"cjep0",
"vdep",
"zep",
"ajep",
//"aljep", Alias.
"cjci0",
"vdci",
"zci",
"vptci",
"cjcx0",
"vdcx",
"zcx",
"vptcx",
"fbcpar",
//"fbc", Alias.
"fbepar",
//"fbe", Alias.
"cjs0",
"vds",
"zs",
"vpts",
"cscp0",
"vdsp",
"zsp",
"vptsp",
"t0",
"dt0h",
"tbvl",
"tef0",
"gtfe",
"thcs",
"ahc",
//"alhc", Alias.
"fthc",
"rci0",
"vlim",
"vces",
"vpt",
"aick",
"delck",
"tr",
"vcbar",
"icbar",
"acbar",
"cbepar",
//"ceox", Alias.
"cbcpar",
//"ccox", Alias.
"alqf",
"alit",
"flnqs",
"kf",
"af",
"cfbe",
"flcono",
"kfre",
"afre",
"latb",
"latl",
"vgb",
"alt0",
"kt0",
"zetaci",
"alvs",
"alces",
"zetarbi",
"zetarbx",
"zetarcx",
"zetare",
"zetacx",
"vge",
"vgc",
"vgs",
"f1vg",
"f2vg",
"zetact",
"zetabet",
"alb",
"dvgbe",
"zetahjei",
"zetavgbe",
"flsh",
"rth",
"zetarth",
"alrth",
"cth",
"flcomp",
"vbe_max",
"vbc_max",
"vce_max"
} );
break;
case 6: