112855Sgabeblack@google.com#include <systemc> 212855Sgabeblack@google.com#include <cstring> 312855Sgabeblack@google.comusing namespace sc_core; 412855Sgabeblack@google.comusing namespace sc_dt; 512855Sgabeblack@google.comusing std::cout; 612855Sgabeblack@google.comusing std::endl; 712855Sgabeblack@google.com 812855Sgabeblack@google.com// 2) sc_clock - start_time and posedge_first (in addition to period and duty_cycle) 912855Sgabeblack@google.com 1012855Sgabeblack@google.comSC_MODULE(M) 1112855Sgabeblack@google.com{ 1212855Sgabeblack@google.com SC_CTOR(M) 1312855Sgabeblack@google.com { 1412855Sgabeblack@google.com SC_THREAD(T); 1512855Sgabeblack@google.com } 1612855Sgabeblack@google.com void T() 1712855Sgabeblack@google.com { 1812855Sgabeblack@google.com wait(10, SC_NS); 1912855Sgabeblack@google.com sc_stop(); 2012855Sgabeblack@google.com } 2112855Sgabeblack@google.com}; 2212855Sgabeblack@google.com 2312855Sgabeblack@google.comstruct Top: sc_module 2412855Sgabeblack@google.com{ 2512855Sgabeblack@google.com sc_clock clk; 2612855Sgabeblack@google.com M *m; 2712855Sgabeblack@google.com Top(sc_module_name) 2812855Sgabeblack@google.com : clk("clk", 20, SC_NS, 0.75, 5, SC_NS, false) 2912855Sgabeblack@google.com { 3012855Sgabeblack@google.com m = new M("m"); 3112855Sgabeblack@google.com sc_assert(strcmp(clk.name(), "top.clk") == 0); 3212855Sgabeblack@google.com sc_assert(strcmp(clk.kind(), "sc_clock") == 0); 3312855Sgabeblack@google.com sc_assert(clk.period() == sc_time(20, SC_NS)); 3412855Sgabeblack@google.com sc_assert(clk.duty_cycle() == 0.75); 3512855Sgabeblack@google.com sc_assert(clk.start_time() == sc_time(5, SC_NS)); 3612855Sgabeblack@google.com sc_assert(clk.posedge_first() == false); 3712855Sgabeblack@google.com } 3812855Sgabeblack@google.com}; 3912855Sgabeblack@google.com 4012855Sgabeblack@google.comint sc_main(int argc, char* argv[]) 4112855Sgabeblack@google.com{ 4212855Sgabeblack@google.com cout << "Should be silent..." << endl; 4312855Sgabeblack@google.com 4412855Sgabeblack@google.com Top top("top"); 4512855Sgabeblack@google.com sc_start(); 4612855Sgabeblack@google.com 4712855Sgabeblack@google.com cout << endl << "Success" << endl; 4812855Sgabeblack@google.com return 0; 4912855Sgabeblack@google.com} 50