Skip to content

Commit

Permalink
Sim QA: Test all diode parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
mikwielgus committed Nov 28, 2022
1 parent 20ea191 commit 2664495
Show file tree
Hide file tree
Showing 2 changed files with 161 additions and 1 deletion.
79 changes: 79 additions & 0 deletions qa/data/eeschema/spice_netlists/libraries/diodes.lib.spice
Original file line number Diff line number Diff line change
Expand Up @@ -144,3 +144,82 @@

* AKO model, LTspice parameters.
.model D24 ako: D22 D(n=1.1 mfg=KiCad type=Silicon)

* Model with all parameters set (except for a few ones like `level` that are not actually parameters) in the original order.
.model D25 D
*level
+is=000.000E+07
*js
+jsw=100.001E+07
+tnom=200.002E+07
*tref
+rs=300.003E+07
+trs=400.004E+07
*trs1
+trs2=500.005E+07
+n=600.006E+07
+ns=700.007E+07
+tt=800.008E+07
+ttt1=900.009E+07
+ttt2=000.000E+07
+cjo=100.001E+07
*cj0
*cj
+vj=200.002E+07
*pb
+m=300.003E+07
*mj
+tm1=400.004E+07
+tm2=500.005E+07
+cjp=600.006E+07
*cjsw
+php=700.007E+07
+mjsw=800.008E+07
+ikf=900.009E+07
*ik
+ikr=000.000E+07
+nbv=100.001E+07
+area=200.002E+07
+pj=300.003E+07
+tlev=4 ;400.004E+07
+tlevc=5 ;500.005E+07
+eg=600.006E+07
+xti=700.007E+07
+cta=800.008E+07
*ctc
+ctp=900.009E+07
+tpb=000.000E+07
*tvj
+tphp=100.001E+07
+jtun=200.002E+07
+jtunsw=300.003E+07
+ntun=400.004E+07
+xtitun=500.005E+07
+keg=600.006E+07
+kf=700.007E+07
+af=800.008E+07
+fc=900.009E+07
+fcs=000.000E+07
+bv=100.001E+07
+ibv=200.002E+07
*ib
+tcv=300.003E+07
+cond=400.004E+07
+isr=500.005E+07
+nr=600.006E+07
+fv_max=700.007E+07
+bv_max=800.008E+07
+id_max=900.009E+07
+te_max=000.000E+07
+pd_max=100.001E+07
+rth0=200.002E+07
+cth0=300.003E+07
+lm=400.004E+07
+lp=500.005E+07
+wm=600.006E+07
+wp=700.007E+07
+xom=800.008E+07
+xoi=900.009E+07
+xm=000.000E+07
+xp=100.001E+07
*d
83 changes: 82 additions & 1 deletion qa/unittests/eeschema/sim/test_library_spice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ BOOST_AUTO_TEST_CASE( Diodes )

const std::vector<SIM_LIBRARY::MODEL> models = m_library->GetModels();

BOOST_CHECK_EQUAL( models.size(), 25 );
BOOST_CHECK_EQUAL( models.size(), 26 );

for( int i = 0; i < models.size(); ++i )
{
Expand Down Expand Up @@ -347,6 +347,87 @@ BOOST_AUTO_TEST_CASE( Diodes )
BOOST_CHECK_EQUAL( model.FindParam( "eg" )->value->ToString(), "1.1" );
break;

case 25:
BOOST_CHECK( model.GetType() == SIM_MODEL::TYPE::D );
BOOST_CHECK_EQUAL( modelName, "D25" );
//level
BOOST_CHECK_EQUAL( model.FindParam( "is" )->value->ToString(), "0" );
//js
BOOST_CHECK_EQUAL( model.FindParam( "jsw" )->value->ToString(), "1.00001G" );
BOOST_CHECK_EQUAL( model.FindParam( "tnom" )->value->ToString(), "2.00002G" );
//tref
BOOST_CHECK_EQUAL( model.FindParam( "rs" )->value->ToString(), "3.00003G" );
BOOST_CHECK_EQUAL( model.FindParam( "trs" )->value->ToString(), "4.00004G" );
//trs1
BOOST_CHECK_EQUAL( model.FindParam( "trs2" )->value->ToString(), "5.00005G" );
BOOST_CHECK_EQUAL( model.FindParam( "n" )->value->ToString(), "6.00006G" );
BOOST_CHECK_EQUAL( model.FindParam( "ns" )->value->ToString(), "7.00007G" );
BOOST_CHECK_EQUAL( model.FindParam( "tt" )->value->ToString(), "8.00008G" );
BOOST_CHECK_EQUAL( model.FindParam( "ttt1" )->value->ToString(), "9.00009G" );
BOOST_CHECK_EQUAL( model.FindParam( "ttt2" )->value->ToString(), "0" );
BOOST_CHECK_EQUAL( model.FindParam( "cjo" )->value->ToString(), "1.00001G" );
//cj0
//cj
BOOST_CHECK_EQUAL( model.FindParam( "vj" )->value->ToString(), "2.00002G" );
//pb
BOOST_CHECK_EQUAL( model.FindParam( "m_" )->value->ToString(), "3.00003G" );
//mj
BOOST_CHECK_EQUAL( model.FindParam( "tm1" )->value->ToString(), "4.00004G" );
BOOST_CHECK_EQUAL( model.FindParam( "tm2" )->value->ToString(), "5.00005G" );
BOOST_CHECK_EQUAL( model.FindParam( "cjp" )->value->ToString(), "6.00006G" );
//cjsw
BOOST_CHECK_EQUAL( model.FindParam( "php" )->value->ToString(), "7.00007G" );
BOOST_CHECK_EQUAL( model.FindParam( "mjsw" )->value->ToString(), "8.00008G" );
BOOST_CHECK_EQUAL( model.FindParam( "ikf" )->value->ToString(), "9.00009G" );
//ik
BOOST_CHECK_EQUAL( model.FindParam( "ikr" )->value->ToString(), "0" );
BOOST_CHECK_EQUAL( model.FindParam( "nbv" )->value->ToString(), "1.00001G" );
BOOST_CHECK_EQUAL( model.FindParam( "area_" )->value->ToString(), "2.00002G" );
BOOST_CHECK_EQUAL( model.FindParam( "pj_" )->value->ToString(), "3.00003G" );
BOOST_CHECK_EQUAL( model.FindParam( "tlev" )->value->ToString(), "4" ); //"4.00004G" );
BOOST_CHECK_EQUAL( model.FindParam( "tlevc" )->value->ToString(), "5" ); //"5.00005G" );
BOOST_CHECK_EQUAL( model.FindParam( "eg" )->value->ToString(), "6.00006G" );
BOOST_CHECK_EQUAL( model.FindParam( "xti" )->value->ToString(), "7.00007G" );
BOOST_CHECK_EQUAL( model.FindParam( "cta" )->value->ToString(), "8.00008G" );
//ctc
BOOST_CHECK_EQUAL( model.FindParam( "ctp" )->value->ToString(), "9.00009G" );
BOOST_CHECK_EQUAL( model.FindParam( "tpb" )->value->ToString(), "0" );
//tvj
BOOST_CHECK_EQUAL( model.FindParam( "tphp" )->value->ToString(), "1.00001G" );
BOOST_CHECK_EQUAL( model.FindParam( "jtun" )->value->ToString(), "2.00002G" );
BOOST_CHECK_EQUAL( model.FindParam( "jtunsw" )->value->ToString(), "3.00003G" );
BOOST_CHECK_EQUAL( model.FindParam( "ntun" )->value->ToString(), "4.00004G" );
BOOST_CHECK_EQUAL( model.FindParam( "xtitun" )->value->ToString(), "5.00005G" );
BOOST_CHECK_EQUAL( model.FindParam( "keg" )->value->ToString(), "6.00006G" );
BOOST_CHECK_EQUAL( model.FindParam( "kf" )->value->ToString(), "7.00007G" );
BOOST_CHECK_EQUAL( model.FindParam( "af" )->value->ToString(), "8.00008G" );
BOOST_CHECK_EQUAL( model.FindParam( "fc" )->value->ToString(), "9.00009G" );
BOOST_CHECK_EQUAL( model.FindParam( "fcs" )->value->ToString(), "0" );
BOOST_CHECK_EQUAL( model.FindParam( "bv" )->value->ToString(), "1.00001G" );
BOOST_CHECK_EQUAL( model.FindParam( "ibv" )->value->ToString(), "2.00002G" );
//ib
BOOST_CHECK_EQUAL( model.FindParam( "tcv" )->value->ToString(), "3.00003G" );
BOOST_CHECK_EQUAL( model.FindParam( "cond" )->value->ToString(), "4.00004G" );
BOOST_CHECK_EQUAL( model.FindParam( "isr" )->value->ToString(), "5.00005G" );
BOOST_CHECK_EQUAL( model.FindParam( "nr" )->value->ToString(), "6.00006G" );
BOOST_CHECK_EQUAL( model.FindParam( "fv_max" )->value->ToString(), "7.00007G" );
BOOST_CHECK_EQUAL( model.FindParam( "bv_max" )->value->ToString(), "8.00008G" );
BOOST_CHECK_EQUAL( model.FindParam( "id_max" )->value->ToString(), "9.00009G" );
BOOST_CHECK_EQUAL( model.FindParam( "te_max" )->value->ToString(), "0" );
BOOST_CHECK_EQUAL( model.FindParam( "pd_max" )->value->ToString(), "1.00001G" );
BOOST_CHECK_EQUAL( model.FindParam( "rth0" )->value->ToString(), "2.00002G" );
BOOST_CHECK_EQUAL( model.FindParam( "cth0" )->value->ToString(), "3.00003G" );
BOOST_CHECK_EQUAL( model.FindParam( "lm_" )->value->ToString(), "4.00004G" );
BOOST_CHECK_EQUAL( model.FindParam( "lp_" )->value->ToString(), "5.00005G" );
BOOST_CHECK_EQUAL( model.FindParam( "wm_" )->value->ToString(), "6.00006G" );
BOOST_CHECK_EQUAL( model.FindParam( "wp_" )->value->ToString(), "7.00007G" );
BOOST_CHECK_EQUAL( model.FindParam( "xom" )->value->ToString(), "8.00008G" );
BOOST_CHECK_EQUAL( model.FindParam( "xoi" )->value->ToString(), "9.00009G" );
BOOST_CHECK_EQUAL( model.FindParam( "xm" )->value->ToString(), "0" );
BOOST_CHECK_EQUAL( model.FindParam( "xp" )->value->ToString(), "1.00001G" );
//d
break;

default:
BOOST_FAIL( "Unknown parameter index" );
break;
Expand Down

0 comments on commit 2664495

Please sign in to comment.