#include using namespace std; struct test : sc_module { sc_in_clk clk; sc_in i1; sc_out o1; sc_out o2; sc_signal reg1; sc_signal reg2; void trans () { reg1 = i1 & 1; reg2 = i1; } void gen () { o1 = reg2.read(); o2 = reg1.read(); o2 = reg1.read(); o1 = reg2.read() + 1; } SC_HAS_PROCESS(test); test (sc_module_name n) : sc_module (n), clk("clk"), i1("i1"), o1("o1"), o2("o2"), reg1("reg1"), reg2("reg2") { SC_METHOD(trans); sensitive << clk.pos(); dont_initialize(); SC_METHOD(gen); sensitive << clk.neg(); dont_initialize(); }; }; int sc_main (int argc, char *argv[]) { sc_clock signal_clk("my_clock",1, 0.5); sc_signal s01("s01"); sc_signal s02("s02"); sc_signal s03("s03"); test test1("test1"); test1.clk (signal_clk); test1.i1 (s01); test1.o1 (s02); test1.o2 (s03); // Init & run sc_start (0); sc_start (10); return EXIT_SUCCESS; } #undef sc_inout