int main() { { // code block, need it to testing memory leaks ClockMessageSystem messageSystem; Clock clock1(messageSystem, 200); Clock clock2(messageSystem, 700); { Clock clock3(messageSystem, 900); clock3.Post(mds::Message(0, new char(0)), 0); } clock1.Post(mds::Message(0, NULL), 0); clock2.Post(mds::Message(0, NULL), 0); messageSystem.Loop(); //messageSystem.ClearQueue(); } { ClockMessageSystem messageSystem; TestSend testSend1(messageSystem); TestSend testSend2(messageSystem); testSend1.Post(mds::Message(0, NULL), 100); testSend2.Post(mds::Message(0, NULL), 300); messageSystem.Loop(); } _CrtDumpMemoryLeaks(); return 0; }
int sc_main(int argc, char *argv[]) { sc_signal<pkt> pkt_in0; sc_signal<pkt> pkt_in1; sc_signal<pkt> pkt_in2; sc_signal<pkt> pkt_in3; sc_signal<pkt> pkt_out0; sc_signal<pkt> pkt_out1; sc_signal<pkt> pkt_out2; sc_signal<pkt> pkt_out3; sc_signal<sc_int<4> > id0, id1, id2, id3; sc_signal<bool> switch_cntrl; sc_clock clock1("CLOCK1", 75, SC_NS, 0.5, 0.0, SC_NS); sc_clock clock2("CLOCK2", 30, SC_NS, 0.5, 10.0, SC_NS); // Module instiatiations follow // Note that modules can be connected by hooking up ports // to signals by name or by using a positional notation sender sender0("SENDER0"); // hooking up signals to ports by name sender0.pkt_out(pkt_in0); sender0.source_id(id0); sender0.CLK(clock1); sender sender1("SENDER1"); // hooking up signals to ports by position sender1(pkt_in1, id1, clock1); sender sender2("SENDER2"); // hooking up signals to ports by name sender2.pkt_out(pkt_in2); sender2.source_id(id2); sender2.CLK(clock1); sender sender3("SENDER3"); // hooking up signals to ports by position sender3( pkt_in3, id3, clock1 ); switch_clk switch_clk1("SWITCH_CLK"); // hooking up signals to ports by name switch_clk1.switch_cntrl(switch_cntrl); switch_clk1.CLK(clock2); mcast_pkt_switch switch1("SWITCH"); // hooking up signals to ports by name switch1.switch_cntrl(switch_cntrl); switch1.in0(pkt_in0); switch1.in1(pkt_in1); switch1.in2(pkt_in2); switch1.in3(pkt_in3); switch1.out0(pkt_out0); switch1.out1(pkt_out1); switch1.out2(pkt_out2); switch1.out3(pkt_out3); receiver receiver0("RECEIVER0"); // hooking up signals to ports by name receiver0.pkt_in(pkt_out0); receiver0.sink_id(id0); receiver receiver1("RECEIVER1"); // hooking up signals to ports by position receiver1( pkt_out1, id1 ); receiver receiver2("RECEIVER2"); // hooking up signals to ports by name receiver2.pkt_in(pkt_out2); receiver2.sink_id(id2); receiver receiver3("RECEIVER3"); // hooking up signals to ports by position receiver3( pkt_out3, id3 ); sc_start(0, SC_NS); #if !defined(__SUNPRO_CC) id0.write(0); id1.write(1); id2.write(2); id3.write(3); #else // you cannot do that with SC5.0 // since it doesn't support member templates id0.write(sc_int<4>(0)); id0.write(sc_int<4>(1)); id0.write(sc_int<4>(2)); id0.write(sc_int<4>(3)); #endif sc_start(); return 0; }