source: sources/test_regression/20122006/system.cpp @ 56

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