source: sources/test_regression/25032005/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: 2.3 KB
Line 
1#include <signal.h>
2
3#include "systemc.h"
4#include "test.h"
5
6
7using namespace std;
8
9struct A : sc_module {
10    sc_in_clk clk;
11    sc_out<bool> o1;
12
13    void eval() {
14        o1 = (rand() % 2) == 0;
15    }
16
17    SC_CTOR (A) : clk("clk"), o1("o1") {
18        SC_METHOD(eval);
19        sensitive << clk.neg();
20        dont_initialize();
21    }
22};
23
24
25struct B : sc_module {
26    sc_in_clk    clk;
27    sc_in<bool>  i1;
28    sc_out<bool> o1;
29    sc_in<bool>  i2;
30    sc_out<bool> o2;
31
32    void eval1() {
33        o1 = ~i1;
34    }
35
36    void eval2() {
37        o2 = ~i2;
38    }
39
40    SC_CTOR (B) : clk("clk"), i1("i1"), o1("o1"), i2("i2"), o2("o2") {
41        SC_METHOD(eval1);
42        sensitive << clk.neg();
43        sensitive << i1;
44        dont_initialize();
45#ifdef SYSTEMCASS_SPECIFIC
46        o1(i1);
47#endif
48        SC_METHOD(eval2);
49        sensitive << clk.neg();
50        sensitive << i2;
51        dont_initialize();
52#ifdef SYSTEMCASS_SPECIFIC
53        o2(i2);
54#endif
55    }
56
57};
58
59
60struct C : sc_module {
61    sc_in_clk    clk;
62    sc_in<bool>  i1;
63    sc_out<bool> o1;
64    sc_in<bool>  i2;
65
66    void eval1() {
67        o1 = i1 ^ i2;
68    }
69
70    SC_CTOR (C) : clk ("clk"), i1("i1"), o1("o1"), i2("i2") {
71        SC_METHOD(eval1);
72        sensitive << clk.neg();
73        sensitive << i1 << i2;
74        dont_initialize();
75#ifdef SYSTEMCASS_SPECIFIC
76        o1(i1);
77        o1(i2);
78#endif
79    }
80
81};
82
83
84struct D : sc_module {
85    sc_in_clk clk;
86    sc_out<bool> o1;
87
88    void eval() {
89        o1 = (rand() % 2) == 0;
90    }
91
92    SC_CTOR (D) : clk("clk"), o1("o1") {
93        SC_METHOD(eval);
94        sensitive << clk.neg();
95        dont_initialize();
96    }
97
98};
99
100
101int sc_main (int argc, char * argv[]) {
102    sc_clock signal_clk("my_clock");
103    sc_signal<bool> s1("s1"), s2("s2"), s3("s3"), s4("s4"), s5("s5");
104
105    A a("a");
106    B b("b");
107    C c("c");
108    D d("d");
109
110    a.clk(signal_clk);
111    b.clk(signal_clk);
112    c.clk(signal_clk);
113    d.clk(signal_clk);
114
115    a.o1(s1);
116    b.i1(s1);
117
118    d.o1(s2);
119    c.i2(s2);
120
121    b.o1(s3);
122    c.i1(s3);
123
124    c.o1(s4);
125    b.i2(s4);
126
127    b.o2(s5);
128
129    // Init & run
130    sc_start(sc_time(1, sc_core::SC_NS));
131
132    return EXIT_SUCCESS;
133}
134
135
136/*
137# Local Variables:
138# tab-width: 4;
139# c-basic-offset: 4;
140# c-file-offsets:((innamespace . 0)(inline-open . 0));
141# indent-tabs-mode: nil;
142# End:
143#
144# vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
145*/
146
Note: See TracBrowser for help on using the repository browser.