#include SC_MODULE (some_block) { sc_in clock; sc_in data; sc_in reset; sc_in inv; sc_out out; void body () { if (reset.read() == 1) { out = sc_bit(0); } else if (inv.read() == 1) { out = ~out.read(); } else { out.write(data.read()); } } SC_CTOR(some_block) { SC_METHOD(body); sensitive << clock.pos(); } }; SC_MODULE (signal_bind) { sc_in clock; sc_signal data; sc_signal reset; sc_signal inv; sc_signal out; some_block *block; int done; void do_test() { while (true) { wait(); if (done == 0) { cout << "@" << sc_time_stamp() <<" Starting test"<clock (clock) ; block->data (data) ; block->reset (reset) ; block->inv (inv) ; block->out (out) ; done = 0; SC_CTHREAD(do_test,clock.pos()); SC_METHOD(monitor); sensitive << data << reset << inv << out; } }; int sc_main (int argc, char* argv[]) { sc_clock clock ("my_clock",1,0.5); signal_bind object("SIGNAL_BIND"); object.clock (clock.signal()); sc_trace_file *wf = sc_create_vcd_trace_file("clock"); sc_trace(wf, object.clock, "clock"); sc_trace(wf, object.reset, "reset"); sc_trace(wf, object.data, "data"); sc_trace(wf, object.inv, "inv"); sc_trace(wf, object.out, "out"); sc_start(100); sc_close_vcd_trace_file(wf); cout<<"Terminating Simulation"<