169 LoadLibrary(
"subckts" );
171 const std::vector<SIM_LIBRARY::MODEL> models = m_library->GetModels();
175 for(
int i = 0; i < models.size(); ++i )
177 const auto& [modelName,
model] = models.at( i );
184 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
189 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
191 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 1 );
194 BOOST_REQUIRE_EQUAL(
model.GetPinCount(), 2 );
200 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
202 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 1 );
210 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
212 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 2 );
217 BOOST_REQUIRE_EQUAL(
model.GetPinCount(), 2 );
223 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
225 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 2 );
230 BOOST_REQUIRE_EQUAL(
model.GetPinCount(), 2 );
236 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
243 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
1136 LoadLibrary(
"fets" );
1138 const std::vector<SIM_LIBRARY::MODEL> models = m_library->GetModels();
1142 for(
int i = 0; i < models.size(); ++i )
1144 const auto& [modelName,
model] = models.at( i );
1151 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NJFET_SHICHMANHODGES,
1152 {
"vt0",
"beta",
"lambda",
"rd",
"rs",
"cgs",
"cgd",
"pb",
"is_",
1157 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PJFET_SHICHMANHODGES,
1158 {
"vt0",
"beta",
"lambda",
"rd",
"rs",
"cgs",
"cgd",
"pb",
"is_",
1163 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NJFET_PARKERSKELLERN,
1164 {
"vbi",
"af",
"beta",
"cds",
"cgd",
"cgs",
"delta",
"hfeta",
"mvst",
1169 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PJFET_PARKERSKELLERN,
1170 {
"vbi",
"af",
"beta",
"cds",
"cgd",
"cgs",
"delta",
"hfeta",
"mvst",
1175 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_STATZ,
1176 {
"vt0",
"alpha",
"beta",
"lambda",
"b",
"rd",
"rs",
"cgs",
"cgd_",
1181 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_STATZ,
1182 {
"vt0",
"alpha",
"beta",
"lambda",
"b",
"rd",
"rs",
"cgs",
"cgd_",
1187 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_YTTERDAL,
1188 {
"vto",
"lambda",
"lambdahf",
"beta",
"vs",
"rd",
"rs",
"rg",
"ri",
1193 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_YTTERDAL,
1194 {
"vto",
"lambda",
"lambdahf",
"beta",
"vs",
"rd",
"rs",
"rg",
"ri",
1199 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_HFET1,
1200 {
"vt0",
"lambda",
"rd",
"rs",
"rg",
"rdi",
"rsi",
"rgs",
"rgd",
1205 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_HFET1,
1206 {
"vt0",
"lambda",
"rd",
"rs",
"rg",
"rdi",
"rsi",
"rgs",
"rgd",
1211 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_HFET2,
1212 {
"vs",
"ggr",
"js",
"del",
"delta",
"deltad",
"di",
"epsi",
"eta",
1217 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_HFET2,
1218 {
"vs",
"ggr",
"js",
"del",
"delta",
"deltad",
"di",
"epsi",
"eta",
1223 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_VDMOS,
1298 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_VDMOS,
1373 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS1,
1374 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1379 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS1,
1380 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1385 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS2,
1386 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1391 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS2,
1392 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1397 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS3,
1398 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1403 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS3,
1404 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1409 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM1,
1410 {
"vfb",
"lvfb",
"wvfb",
"phi",
"lphi",
"wphi",
"k1",
"lk1",
"wk1",
1415 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM1,
1416 {
"vfb",
"lvfb",
"wvfb",
"phi",
"lphi",
"wphi",
"k1",
"lk1",
"wk1",
1421 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM2,
1422 {
"bib",
"lbib",
"wbib",
"vghigh",
"lvghigh",
"wvghigh",
1423 "waib",
"bi0",
"lbi0",
"wbi0" } );
1427 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM2,
1428 {
"bib",
"lbib",
"wbib",
"vghigh",
"lvghigh",
"wvghigh",
1429 "waib",
"bi0",
"lbi0",
"wbi0" } );
1433 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS6,
1434 {
"vto",
"nvth",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1439 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS6,
1440 {
"vto",
"nvth",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1445 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM3,
1446 {
"tox",
"toxm",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"xj",
1451 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM3,
1452 {
"tox",
"toxm",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"xj",
1457 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS9,
1458 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1463 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS9,
1464 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1469 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B4SOI,
1470 {
"tox",
"toxp",
"toxm",
"dtoxcv",
"cdsc",
"cdscb",
"cdscd",
"cit",
1471 "nfactor",
"vsat" } );
1475 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B4SOI,
1476 {
"tox",
"toxp",
"toxm",
"dtoxcv",
"cdsc",
"cdscb",
"cdscd",
"cit",
1477 "nfactor",
"vsat" } );
1481 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM4,
1482 {
"rbps0",
"rbpsl",
"rbpsw",
"rbpsnf",
"rbpd0",
"rbpdl",
"rbpdw",
"rbpdnf",
1483 "rbpbx0",
"rbpbxl" } );
1487 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM4,
1488 {
"rbps0",
"rbpsl",
"rbpsw",
"rbpsnf",
"rbpd0",
"rbpdl",
"rbpdw",
"rbpdnf",
1489 "rbpbx0",
"rbpbxl" } );
1493 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B3SOIFD,
1494 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1499 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B3SOIFD,
1500 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1505 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B3SOIDD,
1506 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1511 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B3SOIDD,
1512 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1517 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B3SOIPD,
1518 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1523 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B3SOIPD,
1524 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1529 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_HISIM2,
1530 {
"depmue0",
"depmue0l",
"depmue0lp",
"depmue1",
"depmue1l",
1531 "depmue1lp",
"depmueback0",
"depmueback0l",
"depmueback0lp",
1536 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_HISIM2,
1537 {
"depmue0",
"depmue0l",
"depmue0lp",
"depmue1",
"depmue1l",
"depmue1lp",
1538 "depmueback0",
"depmueback0l",
"depmueback0lp",
"depmueback1" } );
1542 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_HISIMHV1,
1543 {
"prd",
"prd22",
"prd23",
"prd24",
"prdict1",
"prdov13",
"prdslp1",
1544 "prdvb",
"prdvd",
"prdvg11" } );
1548 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_HISIMHV1,
1549 {
"prd",
"prd22",
"prd23",
"prd24",
"prdict1",
"prdov13",
"prdslp1",
1550 "prdvb",
"prdvd",
"prdvg11" } );
1554 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_HISIMHV2,
1555 {
"pjs0d",
"pjs0swd",
"pnjd",
"pcisbkd",
"pvdiffjd",
"pjs0s",
"pjs0sws",
1556 "prs",
"prth0",
"pvover" } );
1560 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_HISIMHV2,
1561 {
"pjs0d",
"pjs0swd",
"pnjd",
"pcisbkd",
"pvdiffjd",
"pjs0s",
"pjs0sws",
1562 "prs",
"prth0",
"pvover" } );