OLD_sc_start_starvation.cpp revision 12855:588919e0e4aa
1 2// sc_start with event starvation policy 3 4#include <systemc> 5using namespace sc_core; 6using std::cout; 7using std::endl; 8 9SC_MODULE(Top) 10{ 11 SC_CTOR(Top) 12 { 13 SC_THREAD(T); 14 } 15 16 sc_event ev; 17 18 void T() 19 { 20 ev.notify(150, SC_NS); 21 } 22}; 23 24int sc_main(int argc, char* argv[]) 25{ 26 Top top("top"); 27 28 sc_assert( sc_get_status() == SC_ELABORATION ); 29 sc_assert( sc_time_stamp() == SC_ZERO_TIME ); 30 sc_start(100, SC_NS); 31 sc_assert( sc_time_stamp() == sc_time(100, SC_NS) ); 32 33 sc_start(10, SC_NS, SC_RUN_TO_TIME); 34 sc_assert( sc_time_stamp() == sc_time(110, SC_NS) ); 35 36 sc_start(10, SC_NS, SC_EXIT_ON_STARVATION); 37 sc_assert( sc_time_stamp() == sc_time(110, SC_NS) ); 38 39 sc_start(80, SC_NS, SC_EXIT_ON_STARVATION); 40 sc_assert( sc_time_stamp() == sc_time(150, SC_NS) ); // FAILS - time = 200 NS 41 42 sc_start(); 43 sc_assert( sc_time_stamp() == sc_time(150, SC_NS) ); 44 sc_assert( sc_get_status() == SC_PAUSED ); 45 46 cout << endl << "Success" << endl; 47 return 0; 48} 49