#include "systemc.h" SC_MODULE (tff_sync_reset) { sc_in data, clk, reset ; sc_out q; bool q_l ; void tff () { if (reset.read()) { q_l = 0; } else if (data.read()) { q_l = !q_l; } q.write(q_l); } SC_CTOR(tff_sync_reset) { SC_METHOD (tff); dont_initialize(); sensitive << clk.pos(); } }; SC_MODULE (tff_tb) { sc_in clk; sc_signal data, reset ; sc_signal q; tff_sync_reset *dut; void do_test() { cout << "@" << sc_time_stamp() <<" Starting test"<clk (clk); dut->reset (reset); dut->data (data); dut->q (q); SC_THREAD (do_test); dont_initialize(); sensitive << clk.pos(); } }; int sc_main (int argc, char* argv[]) { sc_clock clock ("my_clock",1,0.5); tff_tb object("TFF_TB"); object.clk (clock.signal()); sc_trace_file *wf = sc_create_vcd_trace_file("tff"); sc_trace(wf, object.clk, "clk"); sc_trace(wf, object.reset, "reset"); sc_trace(wf, object.data, "data"); sc_trace(wf, object.q, "q"); sc_start(0); sc_start(); sc_close_vcd_trace_file(wf); return 0;// Terminate simulation }