#define SC_INCLUDE_DYNAMIC_PROCESSES #include #include #include #include #include using namespace sc_core; class top: public sc_core::sc_module { public: scc::ordered_semaphore sem{"sem", 2}; scc::ordered_semaphore_t<2> sem_t{"sem_t"}; }; factory::add tb; TEST_CASE("simple ordered_semaphore test", "[SCC][ordered_semaphore]") { auto& dut = factory::get(); auto run1 = sc_spawn([&dut](){ dut.sem.wait(); dut.sem_t.wait(); dut.sem.set_capacity(4); dut.sem_t.set_capacity(4); dut.sem_t.post(); dut.sem.post(); }); sc_start(1_ns); REQUIRE(run1.terminated()); }