#include "systemc.h" class ExecDevice : public sc_module { public: sc_out out; SC_HAS_PROCESS(ExecDevice); ExecDevice(sc_module_name name) : sc_module(name) { SC_THREAD(main); } void main() { while (true) { wait(1000, SC_NS); int n = rand(); printf("Sent: %d\n", n); out->write(n); } } }; class NonExecDevice : public sc_module { public: sc_in in; SC_HAS_PROCESS(NonExecDevice); NonExecDevice(sc_module_name name) : sc_module(name) { SC_METHOD(received); sensitive << in; dont_initialize(); } void received() { int n = in; printf("Received: %d\n", n); } }; int sc_main (int argc , char *argv[]) { sc_signal signal("Signal"); ExecDevice *execDevice = new ExecDevice("ExecDevice"); *execDevice << signal; NonExecDevice *nonExecDevice = new NonExecDevice("NonExecDevice"); *nonExecDevice << signal; sc_start(); return 0; }