#include "systemc.h" #define ASSERT(x) \ { errnum++; \ if (!(x)) \ { \ cerr << "ASSERT : " #x "\n"; \ exit (errnum); \ } \ } using namespace std; struct hard : sc_module { sc_in_clk clk; sc_in i1, i2; sc_out o1, o2; void f () { o1 = i1; o2 = i2; } SC_HAS_PROCESS(hard); hard(sc_module_name) /*: clk("clk"), i1 ("i1"), i2 ("i2"), o1 ("o1"), o2 ("o2")*/ { SC_METHOD(f); dont_initialize(); sensitive << i1 << i2; #ifdef SYSTEMCASS_SPECIFIC o1 (i1); o2 (i2); #endif } }; int sc_main (int argc, char ** argv) { sc_clock clk("clk"); sc_signal s[10]; hard a("a"); hard b("b"); hard c("c"); a.clk (clk); b.clk (clk); a.i1 (s[0]); a.o1 (s[1]); b.i1 (s[1]); b.o1 (s[2]); b.i2 (s[3]); b.o2 (s[4]); a.i2 (s[4]); a.o2 (s[5]); c.i1 (s[6]); c.o1 (s[7]); c.i2 (s[8]); c.o2 (s[9]); sc_initialize (); s[0] = 1; s[3] = 1; sc_start (1); s[0] = 123; s[3] = 321; sc_start (1); return 0; }