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
RevLine 
[1]1#include <signal.h>
2
[55]3#include "systemc.h"
4#include "test.h"
5
6
[1]7using namespace std;
[55]8
[1]9struct A : sc_module {
[55]10    sc_in_clk clk;
11    sc_out<bool> o1;
[1]12
[55]13    void eval() {
14        o1 = (rand() % 2) == 0;
15    }
[1]16
[55]17    SC_CTOR (A) : clk("clk"), o1("o1") {
18        SC_METHOD(eval);
19        sensitive << clk.neg();
20        dont_initialize();
21    }
[1]22};
23
[55]24
[1]25struct B : sc_module {
[55]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;
[1]31
[55]32    void eval1() {
33        o1 = ~i1;
34    }
[1]35
[55]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();
[1]45#ifdef SYSTEMCASS_SPECIFIC
[55]46        o1(i1);
[1]47#endif
[55]48        SC_METHOD(eval2);
49        sensitive << clk.neg();
50        sensitive << i2;
51        dont_initialize();
[1]52#ifdef SYSTEMCASS_SPECIFIC
[55]53        o2(i2);
[1]54#endif
[55]55    }
56
[1]57};
58
[55]59
[1]60struct C : sc_module {
[55]61    sc_in_clk    clk;
62    sc_in<bool>  i1;
63    sc_out<bool> o1;
64    sc_in<bool>  i2;
[1]65
[55]66    void eval1() {
67        o1 = i1 ^ i2;
68    }
[1]69
[55]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();
[1]75#ifdef SYSTEMCASS_SPECIFIC
[55]76        o1(i1);
77        o1(i2);
[1]78#endif
[55]79    }
80
[1]81};
82
[55]83
[1]84struct D : sc_module {
[55]85    sc_in_clk clk;
86    sc_out<bool> o1;
[1]87
[55]88    void eval() {
89        o1 = (rand() % 2) == 0;
90    }
[1]91
[55]92    SC_CTOR (D) : clk("clk"), o1("o1") {
93        SC_METHOD(eval);
94        sensitive << clk.neg();
95        dont_initialize();
96    }
97
[1]98};
99
100
[55]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");
[1]104
[55]105    A a("a");
106    B b("b");
107    C c("c");
108    D d("d");
[1]109
[55]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
[1]132    return EXIT_SUCCESS;
[55]133}
[1]134
135
[55]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*/
[1]146
Note: See TracBrowser for help on using the repository browser.