adds additional tests
This commit is contained in:
parent
f4506a064b
commit
c6167118d5
|
@ -18,7 +18,7 @@ using namespace sc_core;
|
||||||
|
|
||||||
int sc_main(int argc, char* argv[]) {
|
int sc_main(int argc, char* argv[]) {
|
||||||
auto my_name = util::split(argv[0], '/').back();
|
auto my_name = util::split(argv[0], '/').back();
|
||||||
scc::init_logging(LogConfig().logLevel(getenv("SCC_TEST_VERBOSE") ? log::DEBUG : log::FATAL).logAsync(false));
|
scc::init_logging(LogConfig().logLevel(getenv("SCC_TEST_VERBOSE") ? log::DEBUG : log::FATAL).logAsync(false).msgTypeFieldWidth(35));
|
||||||
// create tracer if environment variable SCC_TEST_TRACE is defined
|
// create tracer if environment variable SCC_TEST_TRACE is defined
|
||||||
std::unique_ptr<scc::tracer> tracer;
|
std::unique_ptr<scc::tracer> tracer;
|
||||||
if(getenv("SCC_TEST_TRACE"))
|
if(getenv("SCC_TEST_TRACE"))
|
||||||
|
|
|
@ -17,24 +17,72 @@ struct top : public sc_core::sc_module {
|
||||||
: sc_core::sc_module(nm) {}
|
: sc_core::sc_module(nm) {}
|
||||||
|
|
||||||
scc::cci_param_restricted<int> param1{"param1", 1, scc::min_max_restriction(0, 10), "This is parameter 1"};
|
scc::cci_param_restricted<int> param1{"param1", 1, scc::min_max_restriction(0, 10), "This is parameter 1"};
|
||||||
scc::cci_param_restricted<int> param2{"param2", 1, scc::min_restriction(0), "This is parameter 2"};
|
scc::cci_param_restricted<int> param2{"param2", 1, scc::min_max_excl_restriction(0, 10), "This is parameter 3"};
|
||||||
scc::cci_param_restricted<int> param3{"param3", 1, scc::min_max_excl_restriction(0, 10), "This is parameter 3"};
|
scc::cci_param_restricted<int> param3{"param3", 1, scc::min_restriction(0), "This is parameter 2"};
|
||||||
scc::cci_param_restricted<int> param4{"param4", 1, scc::min_excl_restriction(0), "This is parameter 4"};
|
scc::cci_param_restricted<int> param4{"param4", 1, scc::min_excl_restriction(0), "This is parameter 4"};
|
||||||
scc::cci_param_restricted<int> param5{"param5", 4, scc::discrete_restriction({1, 2, 4, 8, 16}), "This is parameter 5"};
|
scc::cci_param_restricted<int> param5{"param5", 4, scc::discrete_restriction({1, 2, 4, 8, 16}), "This is parameter 5"};
|
||||||
};
|
};
|
||||||
|
|
||||||
factory::add<top> tb;
|
factory::add<top> tb;
|
||||||
|
|
||||||
TEST_CASE("simple cci_param_restricted test", "[SCC][cci_param_restricted]") {
|
TEST_CASE("simple cci_param_restricted min_max test", "[SCC][cci_param_restricted]") {
|
||||||
|
sc_report_handler::set_actions(SC_ERROR, SC_LOG | SC_CACHE_REPORT | SC_DISPLAY | SC_DO_NOTHING);
|
||||||
auto& dut = factory::get<top>();
|
auto& dut = factory::get<top>();
|
||||||
auto run1 = sc_spawn([&dut]() {
|
auto run1 = sc_spawn([&dut]() {
|
||||||
sc_core::wait(1_ns);
|
sc_core::wait(1_ns);
|
||||||
sc_core::sc_stop();
|
for(auto i : {0, 5, 10, -1, 11}) {
|
||||||
|
dut.param1.set_value(i);
|
||||||
|
sc_core::wait(1_ns);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
sc_start(10_ns);
|
sc_start(10_ns);
|
||||||
REQUIRE(run1.terminated());
|
REQUIRE(run1.terminated());
|
||||||
REQUIRE(sc_report_handler::get_count(SC_ERROR) == 0);
|
REQUIRE(sc_report_handler::get_count(SC_ERROR) == 2);
|
||||||
REQUIRE(sc_report_handler::get_count(SC_WARNING) == 0);
|
REQUIRE(sc_report_handler::get_count(SC_WARNING) == 0);
|
||||||
|
sc_report_handler::initialize();
|
||||||
|
auto run2 = sc_spawn([&dut]() {
|
||||||
|
sc_core::wait(1_ns);
|
||||||
|
for(auto i : {0, 5, 10, -1, 11}) {
|
||||||
|
dut.param2.set_value(i);
|
||||||
|
sc_core::wait(1_ns);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
sc_start(10_ns);
|
||||||
|
REQUIRE(run2.terminated());
|
||||||
|
REQUIRE(sc_report_handler::get_count(SC_ERROR) == 4);
|
||||||
|
REQUIRE(sc_report_handler::get_count(SC_WARNING) == 0);
|
||||||
|
sc_report_handler::initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("simple cci_param_restricted min test", "[SCC][cci_param_restricted]") {
|
||||||
|
sc_report_handler::set_actions(SC_ERROR, SC_LOG | SC_CACHE_REPORT | SC_DISPLAY | SC_DO_NOTHING);
|
||||||
|
auto& dut = factory::get<top>();
|
||||||
|
auto run1 = sc_spawn([&dut]() {
|
||||||
|
sc_core::wait(1_ns);
|
||||||
|
for(auto i : {0, 5, -1}) {
|
||||||
|
dut.param3.set_value(i);
|
||||||
|
sc_core::wait(1_ns);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
sc_start(10_ns);
|
||||||
|
REQUIRE(run1.terminated());
|
||||||
|
REQUIRE(sc_report_handler::get_count(SC_ERROR) == 1);
|
||||||
|
REQUIRE(sc_report_handler::get_count(SC_WARNING) == 0);
|
||||||
|
sc_report_handler::initialize();
|
||||||
|
auto run2 = sc_spawn([&dut]() {
|
||||||
|
sc_core::wait(1_ns);
|
||||||
|
for(auto i : {0, 5, -1}) {
|
||||||
|
dut.param4.set_value(i);
|
||||||
|
sc_core::wait(1_ns);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
sc_start(10_ns);
|
||||||
|
REQUIRE(run2.terminated());
|
||||||
|
REQUIRE(sc_report_handler::get_count(SC_ERROR) == 2);
|
||||||
|
REQUIRE(sc_report_handler::get_count(SC_WARNING) == 0);
|
||||||
|
sc_report_handler::initialize();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue