00001
00002
00003
00004
00005
00006
00013 #include <systemc.h>
00014 #include "during.h"
00015 #include "utils/io-lock.h"
00016
00017 extern void P1();
00018 extern void P2();
00019 extern void Q1();
00020 extern void Q2();
00021
00022 void debug(std::string s) {
00023 L_COUT << sc_time_stamp()
00024 << ": " << s << endl;
00025 }
00026
00027 void P1() {
00028 debug("P1()");
00029 }
00030 void P2() {
00031 debug("P2()");
00032 }
00033 void Q1() {
00034 debug("Q1()");
00035 }
00036 void Q2() {
00037 debug("Q2()");
00038 }
00039
00040 struct P : sc_module, sc_during {
00041 void compute() {
00042 during(25, SC_MS, P1);
00043 during(12, SC_MS, P2);
00044 }
00045
00046 SC_CTOR(P) {SC_THREAD(compute);}
00047 };
00048
00049 struct Q : sc_module, sc_during {
00050 void compute() {
00051 wait(10, SC_MS);
00052 during(13, SC_MS, Q1);
00053 during(11, SC_MS, Q2);
00054 }
00055
00056 SC_CTOR(Q) {SC_THREAD(compute);}
00057 };
00058
00059 int sc_main(int, char **)
00060 {
00061 P p("p"); Q q("q");
00062 sc_start(); return 1;
00063 }