source: branches/with_autoconf/test_regression/21062005/system.cpp

Last change on this file was 1, checked in by buchmann, 17 years ago

Initial import from CVS repository

File size: 1.3 KB
Line 
1#include "systemc.h"
2#include <iostream>
3#include <string>
4
5#define ASSERT(x) \
6  { errnum++; \
7    if (!(x)) \
8    { \
9    cerr << "ASSERT : " #x "\n"; \
10    exit (errnum); \
11    } \
12  }
13
14using namespace std;
15
16static int errnum = 0;
17
18struct internal_model : sc_module
19{
20  sc_in<int>     i;
21  sc_out<int>    o;
22        internal_model (sc_module_name n) : sc_module (n),
23    i("i"),
24                o("o")
25  {
26  }
27};
28
29struct model : sc_module
30{
31  sc_in<int>     i1, i2, i3;
32  sc_out<int>    o1, o2, o3;
33        sc_signal<int> r1, r2;
34  internal_model internal1,internal2;
35  sc_signal<int> internal_signal;
36        model (sc_module_name n) : sc_module (n),
37    i1("i1"), i2("i2"), i3("i3"),
38                o1("o1"), o2("o2"), o3("o3"),
39                r1("r1"), r2("r2"),
40    internal1 ("internal1"),
41    internal2 ("internal2"),
42    internal_signal ("internal_signal")
43  {
44    internal1.i (i3);
45    internal2.i (internal1.o);
46    internal1.o (internal_signal);
47#if defined(ERROR)
48    internal1.o (internal2.i); // SystemC 2.0.1 & 2.1.v1 error: no match for call to `(sc_out<int>) (sc_in<int>&)'
49#endif
50    internal2.o (o3);
51  }
52};
53
54int
55sc_main (int argc, char ** argv)
56{
57  model    m("m");
58  sc_clock clk ("clock");
59        sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4");
60
61  m.i1 (s1);
62  m.i2 (s1); //
63  m.i3 (s1);
64  m.o1 (s4); //
65  m.o2 (s2);
66  m.o3 (s3);
67
68        sc_start (0);
69
70        sc_start (1);
71        sc_start (10);
72
73  cerr << "Test OK.\n";
74  return 0;
75}
76
Note: See TracBrowser for help on using the repository browser.