166 LoadLibrary(
"subckts" );
168 const std::vector<SIM_LIBRARY::MODEL> models = m_library->GetModels();
172 for(
int i = 0; i < models.size(); ++i )
174 const auto& [modelName,
model] = models.at( i );
181 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
186 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
188 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 1 );
191 BOOST_REQUIRE_EQUAL(
model.GetPinCount(), 2 );
197 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
199 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 1 );
207 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
209 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 2 );
214 BOOST_REQUIRE_EQUAL(
model.GetPinCount(), 2 );
220 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
222 BOOST_REQUIRE_EQUAL(
model.GetParamCount(), 2 );
227 BOOST_REQUIRE_EQUAL(
model.GetPinCount(), 2 );
233 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
240 BOOST_CHECK(
model.GetType() == SIM_MODEL::TYPE::SUBCKT );
1133 LoadLibrary(
"fets" );
1135 const std::vector<SIM_LIBRARY::MODEL> models = m_library->GetModels();
1139 for(
int i = 0; i < models.size(); ++i )
1141 const auto& [modelName,
model] = models.at( i );
1148 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NJFET_SHICHMANHODGES,
1149 {
"vt0",
"beta",
"lambda",
"rd",
"rs",
"cgs",
"cgd",
"pb",
"is_",
1154 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PJFET_SHICHMANHODGES,
1155 {
"vt0",
"beta",
"lambda",
"rd",
"rs",
"cgs",
"cgd",
"pb",
"is_",
1160 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NJFET_PARKERSKELLERN,
1161 {
"vbi",
"af",
"beta",
"cds",
"cgd",
"cgs",
"delta",
"hfeta",
"mvst",
1166 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PJFET_PARKERSKELLERN,
1167 {
"vbi",
"af",
"beta",
"cds",
"cgd",
"cgs",
"delta",
"hfeta",
"mvst",
1172 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_STATZ,
1173 {
"vt0",
"alpha",
"beta",
"lambda",
"b",
"rd",
"rs",
"cgs",
"cgd_",
1178 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_STATZ,
1179 {
"vt0",
"alpha",
"beta",
"lambda",
"b",
"rd",
"rs",
"cgs",
"cgd_",
1184 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_YTTERDAL,
1185 {
"vto",
"lambda",
"lambdahf",
"beta",
"vs",
"rd",
"rs",
"rg",
"ri",
1190 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_YTTERDAL,
1191 {
"vto",
"lambda",
"lambdahf",
"beta",
"vs",
"rd",
"rs",
"rg",
"ri",
1196 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_HFET1,
1197 {
"vt0",
"lambda",
"rd",
"rs",
"rg",
"rdi",
"rsi",
"rgs",
"rgd",
1202 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_HFET1,
1203 {
"vt0",
"lambda",
"rd",
"rs",
"rg",
"rdi",
"rsi",
"rgs",
"rgd",
1208 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMES_HFET2,
1209 {
"vs",
"ggr",
"js",
"del",
"delta",
"deltad",
"di",
"epsi",
"eta",
1214 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMES_HFET2,
1215 {
"vs",
"ggr",
"js",
"del",
"delta",
"deltad",
"di",
"epsi",
"eta",
1220 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_VDMOS,
1295 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_VDMOS,
1370 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS1,
1371 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1376 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS1,
1377 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1382 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS2,
1383 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1388 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS2,
1389 {
"vto",
"kp",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1394 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS3,
1395 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1400 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS3,
1401 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1406 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM1,
1407 {
"vfb",
"lvfb",
"wvfb",
"phi",
"lphi",
"wphi",
"k1",
"lk1",
"wk1",
1412 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM1,
1413 {
"vfb",
"lvfb",
"wvfb",
"phi",
"lphi",
"wphi",
"k1",
"lk1",
"wk1",
1418 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM2,
1419 {
"bib",
"lbib",
"wbib",
"vghigh",
"lvghigh",
"wvghigh",
1420 "waib",
"bi0",
"lbi0",
"wbi0" } );
1424 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM2,
1425 {
"bib",
"lbib",
"wbib",
"vghigh",
"lvghigh",
"wvghigh",
1426 "waib",
"bi0",
"lbi0",
"wbi0" } );
1430 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS6,
1431 {
"vto",
"nvth",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1436 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS6,
1437 {
"vto",
"nvth",
"gamma",
"phi",
"lambda",
"rd_",
"rs_",
"cbd_",
"cbs_",
1442 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM3,
1443 {
"tox",
"toxm",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"xj",
1448 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM3,
1449 {
"tox",
"toxm",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"xj",
1454 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_MOS9,
1455 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1460 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_MOS9,
1461 {
"vto",
"theta",
"gamma",
"phi",
"eta",
"rd_",
"rs_",
"cbd_",
"cbs_",
1466 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B4SOI,
1467 {
"tox",
"toxp",
"toxm",
"dtoxcv",
"cdsc",
"cdscb",
"cdscd",
"cit",
1468 "nfactor",
"vsat" } );
1472 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B4SOI,
1473 {
"tox",
"toxp",
"toxm",
"dtoxcv",
"cdsc",
"cdscb",
"cdscd",
"cit",
1474 "nfactor",
"vsat" } );
1478 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_BSIM4,
1479 {
"rbps0",
"rbpsl",
"rbpsw",
"rbpsnf",
"rbpd0",
"rbpdl",
"rbpdw",
"rbpdnf",
1480 "rbpbx0",
"rbpbxl" } );
1484 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_BSIM4,
1485 {
"rbps0",
"rbpsl",
"rbpsw",
"rbpsnf",
"rbpd0",
"rbpdl",
"rbpdw",
"rbpdnf",
1486 "rbpbx0",
"rbpbxl" } );
1490 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B3SOIFD,
1491 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1496 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B3SOIFD,
1497 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1502 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B3SOIDD,
1503 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1508 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B3SOIDD,
1509 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1514 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_B3SOIPD,
1515 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1520 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_B3SOIPD,
1521 {
"tox",
"cdsc",
"cdscb",
"cdscd",
"cit",
"nfactor",
"vsat",
"at",
"a0",
1526 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_HISIM2,
1527 {
"depmue0",
"depmue0l",
"depmue0lp",
"depmue1",
"depmue1l",
1528 "depmue1lp",
"depmueback0",
"depmueback0l",
"depmueback0lp",
1533 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_HISIM2,
1534 {
"depmue0",
"depmue0l",
"depmue0lp",
"depmue1",
"depmue1l",
"depmue1lp",
1535 "depmueback0",
"depmueback0l",
"depmueback0lp",
"depmueback1" } );
1539 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_HISIMHV1,
1540 {
"prd",
"prd22",
"prd23",
"prd24",
"prdict1",
"prdov13",
"prdslp1",
1541 "prdvb",
"prdvd",
"prdvg11" } );
1545 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_HISIMHV1,
1546 {
"prd",
"prd22",
"prd23",
"prd24",
"prdict1",
"prdov13",
"prdslp1",
1547 "prdvb",
"prdvd",
"prdvg11" } );
1551 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::NMOS_HISIMHV2,
1552 {
"pjs0d",
"pjs0swd",
"pnjd",
"pcisbkd",
"pvdiffjd",
"pjs0s",
"pjs0sws",
1553 "prs",
"prth0",
"pvover" } );
1557 TestTransistor(
model, modelName, i, SIM_MODEL::TYPE::PMOS_HISIMHV2,
1558 {
"pjs0d",
"pjs0swd",
"pnjd",
"pcisbkd",
"pvdiffjd",
"pjs0s",
"pjs0sws",
1559 "prs",
"prth0",
"pvover" } );