162 LoadLibrary(
"subckts" );
164 const std::vector<SIM_LIBRARY::MODEL> models = m_library->GetModels();
168 for(
int i = 0; i < models.size(); ++i )
170 const auto& [modelName,
model] = models.at( i );
177 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
182 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
184 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 1 );
187 BOOST_REQUIRE_EQUAL(
model.GetPinCount(), 2 );
193 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
195 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 1 );
203 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
205 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 2 );
210 BOOST_REQUIRE_EQUAL(
model.GetPinCount(), 2 );
216 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
218 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 2 );
223 BOOST_REQUIRE_EQUAL(
model.GetPinCount(), 2 );
229 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
236 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
1129 LoadLibrary(
"fets" );
1131 const std::vector<SIM_LIBRARY::MODEL> models = m_library->GetModels();
1135 for(
int i = 0; i < models.size(); ++i )
1137 const auto& [modelName,
model] = models.at( i );
1144 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NJFET_SHICHMANHODGES,
1145 {
"vt0",
"beta",
"lambda",
"rd",
"rs",
"cgs",
"cgd",
"pb",
"is_",
1150 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PJFET_SHICHMANHODGES,
1151 {
"vt0",
"beta",
"lambda",
"rd",
"rs",
"cgs",
"cgd",
"pb",
"is_",
1156 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NJFET_PARKERSKELLERN,
1157 {
"vbi",
"af",
"beta",
"cds",
"cgd",
"cgs",
"delta",
"hfeta",
"mvst",
1162 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PJFET_PARKERSKELLERN,
1163 {
"vbi",
"af",
"beta",
"cds",
"cgd",
"cgs",
"delta",
"hfeta",
"mvst",
1168 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_STATZ,
1169 {
"vt0",
"alpha",
"beta",
"lambda",
"b",
"rd",
"rs",
"cgs",
"cgd_",
1174 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_STATZ,
1175 {
"vt0",
"alpha",
"beta",
"lambda",
"b",
"rd",
"rs",
"cgs",
"cgd_",
1180 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_YTTERDAL,
1181 {
"vto",
"lambda",
"lambdahf",
"beta",
"vs",
"rd",
"rs",
"rg",
"ri",
1186 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_YTTERDAL,
1187 {
"vto",
"lambda",
"lambdahf",
"beta",
"vs",
"rd",
"rs",
"rg",
"ri",
1192 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_HFET1,
1193 {
"vt0",
"lambda",
"rd",
"rs",
"rg",
"rdi",
"rsi",
"rgs",
"rgd",
1198 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_HFET1,
1199 {
"vt0",
"lambda",
"rd",
"rs",
"rg",
"rdi",
"rsi",
"rgs",
"rgd",
1204 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_HFET2,
1205 {
"vs",
"ggr",
"js",
"del",
"delta",
"deltad",
"di",
"epsi",
"eta",
1210 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_HFET2,
1211 {
"vs",
"ggr",
"js",
"del",
"delta",
"deltad",
"di",
"epsi",
"eta",
1216 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_VDMOS,
1291 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_VDMOS,
1366 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS1,
1367 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1372 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS1,
1373 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1378 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS2,
1379 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1384 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS2,
1385 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1390 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS3,
1391 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1396 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS3,
1397 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1402 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM1,
1403 {
"vfb",
"lvfb",
"wvfb",
"phi",
"lphi",
"wphi",
"k1",
"lk1",
"wk1",
1408 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM1,
1409 {
"vfb",
"lvfb",
"wvfb",
"phi",
"lphi",
"wphi",
"k1",
"lk1",
"wk1",
1414 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM2,
1415 {
"bib",
"lbib",
"wbib",
"vghigh",
"lvghigh",
"wvghigh",
1416 "waib",
"bi0",
"lbi0",
"wbi0" } );
1420 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM2,
1421 {
"bib",
"lbib",
"wbib",
"vghigh",
"lvghigh",
"wvghigh",
1422 "waib",
"bi0",
"lbi0",
"wbi0" } );
1426 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS6,
1427 {
"vto",
"nvth",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1432 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS6,
1433 {
"vto",
"nvth",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1438 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM3,
1439 {
"tox",
"toxm",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"xj",
1444 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM3,
1445 {
"tox",
"toxm",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"xj",
1450 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS9,
1451 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1456 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS9,
1457 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1462 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B4SOI,
1463 {
"tox",
"toxp",
"toxm",
"dtoxcv",
"cdsc",
"cdscb",
"cdscd",
"cit",
1464 "nfactor",
"vsat" } );
1468 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B4SOI,
1469 {
"tox",
"toxp",
"toxm",
"dtoxcv",
"cdsc",
"cdscb",
"cdscd",
"cit",
1470 "nfactor",
"vsat" } );
1474 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM4,
1475 {
"rbps0",
"rbpsl",
"rbpsw",
"rbpsnf",
"rbpd0",
"rbpdl",
"rbpdw",
"rbpdnf",
1476 "rbpbx0",
"rbpbxl" } );
1480 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM4,
1481 {
"rbps0",
"rbpsl",
"rbpsw",
"rbpsnf",
"rbpd0",
"rbpdl",
"rbpdw",
"rbpdnf",
1482 "rbpbx0",
"rbpbxl" } );
1486 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B3SOIFD,
1487 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1492 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B3SOIFD,
1493 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1498 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B3SOIDD,
1499 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1504 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B3SOIDD,
1505 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1510 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B3SOIPD,
1511 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1516 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B3SOIPD,
1517 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1522 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_HISIM2,
1523 {
"depmue0",
"depmue0l",
"depmue0lp",
"depmue1",
"depmue1l",
1524 "depmue1lp",
"depmueback0",
"depmueback0l",
"depmueback0lp",
1529 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_HISIM2,
1530 {
"depmue0",
"depmue0l",
"depmue0lp",
"depmue1",
"depmue1l",
"depmue1lp",
1531 "depmueback0",
"depmueback0l",
"depmueback0lp",
"depmueback1" } );
1535 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_HISIMHV1,
1536 {
"prd",
"prd22",
"prd23",
"prd24",
"prdict1",
"prdov13",
"prdslp1",
1537 "prdvb",
"prdvd",
"prdvg11" } );
1541 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_HISIMHV1,
1542 {
"prd",
"prd22",
"prd23",
"prd24",
"prdict1",
"prdov13",
"prdslp1",
1543 "prdvb",
"prdvd",
"prdvg11" } );
1547 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_HISIMHV2,
1548 {
"pjs0d",
"pjs0swd",
"pnjd",
"pcisbkd",
"pvdiffjd",
"pjs0s",
"pjs0sws",
1549 "prs",
"prth0",
"pvover" } );
1553 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_HISIMHV2,
1554 {
"pjs0d",
"pjs0swd",
"pnjd",
"pcisbkd",
"pvdiffjd",
"pjs0s",
"pjs0sws",
1555 "prs",
"prth0",
"pvover" } );