source: sources/test_regression/29032005/system.cpp @ 55

Last change on this file since 55 was 55, checked in by meunier, 11 years ago

Tried to clean the test_regression directory:

  • Code formatting
  • Supressed warnings
  • Made comprehensible outputs
  • Factorized Makefiles

There's still a lot to do (many tests don't pass for either good or bad reasons)

File size: 5.1 KB
Line 
1
2#include <signal.h>
3
4#include "systemc.h"
5#include "test.h"
6
7
8using namespace std;
9
10struct M_0i1o : sc_module {
11    sc_in_clk clk;
12    sc_out<bool> o1;
13
14    void eval() {
15        o1 = (rand() % 2) == 0;
16    }
17
18    SC_CTOR (M_0i1o) : clk("clk"), o1("o1") {
19        SC_METHOD(eval);
20        sensitive << clk.neg();
21        dont_initialize();
22    }
23
24};
25
26struct M_1i1o : sc_module {
27    sc_in_clk clk;
28    sc_in<bool> i1;
29    sc_out<bool> o1;
30
31    void eval1() {
32        o1 = ~i1;
33    }
34
35    SC_CTOR (M_1i1o) : clk("clk"), i1("i1"), o1("o1") {
36        SC_METHOD(eval1);
37        sensitive << clk.neg();
38        sensitive << i1;
39        dont_initialize();
40#ifdef SYSTEMCASS_SPECIFIC
41        o1(i1);
42#endif
43    }
44
45};
46
47
48
49struct M_2i2o : sc_module {
50    sc_in_clk    clk;
51    sc_in<bool>  i1;
52    sc_in<bool>  i2;
53    sc_out<bool> o1;
54    sc_out<bool> o2;
55
56    void eval1() {
57        o1 = ~i1;
58    }
59    void eval2() {
60        o2 = ~i2;
61    }
62
63    SC_CTOR (M_2i2o) : clk("clk"), i1("i1"), i2("i2"), o1("o1"), o2("o2") {
64        SC_METHOD(eval1);
65        sensitive << clk.neg();
66        sensitive << i1;
67        dont_initialize();
68#ifdef SYSTEMCASS_SPECIFIC
69        o1(i1);
70#endif
71        SC_METHOD(eval2);
72        sensitive << clk.neg();
73        sensitive << i2;
74        dont_initialize();
75#ifdef SYSTEMCASS_SPECIFIC
76        o2(i2);
77#endif
78    }
79
80};
81
82
83struct M_4i2o : sc_module {
84    sc_in_clk clk;
85    sc_in<bool>  i1;
86    sc_in<bool>  i2;
87    sc_in<bool>  i3;
88    sc_in<bool>  i4;
89    sc_out<bool> o1;
90    sc_out<bool> o2;
91
92    void eval1() {
93        o1 = ~i1;
94    }
95
96    void eval2() {
97        o2 = ~i2;
98    }
99
100    void eval3() {
101        cout << i3 << i4 << "\n";
102    }
103
104    SC_CTOR (M_4i2o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), i4("i4"),
105    o1("o1"), o2("o2") {
106        SC_METHOD(eval1);
107        sensitive << clk.neg();
108        sensitive << i1;
109        dont_initialize();
110#ifdef SYSTEMCASS_SPECIFIC
111        o1(i1);
112#endif
113        SC_METHOD(eval2);
114        sensitive << clk.neg();
115        sensitive << i2;
116        dont_initialize();
117#ifdef SYSTEMCASS_SPECIFIC
118        o2(i2);
119#endif
120        SC_METHOD(eval3);
121        sensitive << clk.pos();
122        dont_initialize();
123    }
124
125};
126
127
128struct M_4i3o : sc_module {
129    sc_in_clk    clk;
130    sc_in<bool>  i1;
131    sc_in<bool>  i2;
132    sc_in<bool>  i3;
133    sc_in<bool>  i4;
134    sc_out<bool> o1;
135    sc_out<bool> o2;
136    sc_out<bool> o3;
137
138    void eval1() {
139        o1 = ~i1;
140    }
141   
142    void eval2() {
143        o2 = ~i2;
144    }
145
146    void eval3() {
147        o3 = ~i3;
148    }
149
150    void eval4() {
151        cout << i4 << "\n";
152    }
153
154    SC_CTOR (M_4i3o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), i4("i4"), o1("o1"), o2("o2"), o3("o3") {
155        SC_METHOD(eval1);
156        sensitive << clk.neg();
157        sensitive << i1;
158        dont_initialize();
159#ifdef SYSTEMCASS_SPECIFIC
160        o1(i1);
161#endif
162        SC_METHOD(eval4);
163        sensitive << clk.pos();
164        dont_initialize();
165
166        SC_METHOD(eval3);
167        sensitive << clk.neg();
168        sensitive << i3;
169        dont_initialize();
170#ifdef SYSTEMCASS_SPECIFIC
171        o3(i3);
172#endif
173        SC_METHOD(eval2);
174        sensitive << clk.neg();
175        sensitive << i2;
176        dont_initialize();
177#ifdef SYSTEMCASS_SPECIFIC
178        o2(i2);
179#endif
180    }
181};
182
183
184struct M_1i0o : sc_module {
185    sc_in_clk   clk;
186    sc_in<bool> i1;
187
188    void eval1() {
189        cout << i1.read() << "\n";
190    }
191
192    SC_CTOR (M_1i0o) : clk("clk"), i1("i1") {
193        SC_METHOD(eval1);
194        sensitive << clk.pos();
195        dont_initialize();
196    }
197};
198
199
200int sc_main (int argc, char * argv[]) {
201    sc_clock signal_clk("my_clock",1, 0.5);
202    sc_signal<bool> s1("s01"),
203        s2 ("s02"),
204        s3 ("s03"),
205        s4 ("s04"),
206        s5 ("s05"),
207        s6 ("s06"),
208        s7 ("s07"),
209        s8 ("s08"),
210        s9 ("s09"),
211        s10("s10"),
212        s11("s11"),
213        s12("s12"),
214        s13("s13"),
215        s14("s14"),
216        s15("s15");
217
218
219    M_0i1o a("a");
220    M_4i2o b("b");
221    M_1i1o c("c");
222    M_4i3o d("d");
223    M_1i1o e("e");
224    M_1i1o f("f");
225    M_2i2o g("g");
226    M_1i1o h("h");
227    M_1i0o i("i");
228    M_0i1o j("j");
229    M_0i1o k("k");
230    M_0i1o l("l");
231
232    a.clk(signal_clk);
233    b.clk(signal_clk);
234    c.clk(signal_clk);
235    d.clk(signal_clk);
236    e.clk(signal_clk);
237    f.clk(signal_clk);
238    g.clk(signal_clk);
239    h.clk(signal_clk);
240    i.clk(signal_clk);
241    j.clk(signal_clk);
242    k.clk(signal_clk);
243    l.clk(signal_clk);
244
245    a.o1(s1);
246    b.i1(s1);
247
248    b.o2(s2);
249    c.i1(s2);
250
251    c.o1(s3);
252    d.i1(s3);
253
254    d.o1(s4);
255    b.i3(s4);
256
257    d.o2(s5);
258    b.i4(s5);
259
260    b.o1(s6);
261    e.i1(s6);
262
263    e.o1(s7);
264    f.i1(s7);
265
266    f.o1(s8);
267    b.i2(s8);
268
269    d.o3(s9);
270    g.i1(s9);
271
272    g.o1(s10);
273    h.i1(s10);
274
275    h.o1(s11);
276    d.i4(s11);
277
278    j.o1(s12);
279    g.i2(s12);
280
281    g.o2(s13);
282    i.i1(s13); 
283
284    l.o1(s14);
285    d.i3(s14);
286
287    k.o1(s15);
288    d.i2(s15);
289
290    // Init & run
291    sc_start(sc_time(0, sc_core::SC_NS));
292
293    return EXIT_SUCCESS;
294}
295
296
297/*
298# Local Variables:
299# tab-width: 4;
300# c-basic-offset: 4;
301# c-file-offsets:((innamespace . 0)(inline-open . 0));
302# indent-tabs-mode: nil;
303# End:
304#
305# vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
306*/
307
Note: See TracBrowser for help on using the repository browser.