1#define SC_INCLUDE_FX
2
3#include <systemc.h>
4
5// 28) sc_core and sc_dt - check names still visible in <systemc.h>
6
7SC_MODULE(Mod)
8{
9  SC_CTOR(Mod)
10  {
11    SC_THREAD(T);
12  };
13  void T()
14  {
15    sc_int<4> i;
16    sc_uint<4> ui;
17    sc_bigint<4> bi;
18    sc_biguint<4> bui;
19    sc_fixed<4,2> f;
20    sc_ufixed<4,2> uf;
21    sc_fixed_fast<4,2> ff;
22    sc_ufixed_fast<4,2> uff;
23    sc_bv<4> bv;
24    sc_lv<4> lv;
25
26    sc_int_base ib;
27    sc_int_base uib;
28    sc_signed s;
29    sc_unsigned u;
30    sc_fix fi;
31    sc_ufix ufi;
32    sc_fix_fast ffi;
33    sc_ufix_fast uffi;
34    sc_logic l;
35    sc_bv_base bvb;
36    sc_lv_base lvb;
37
38    //sc_value_base vb;
39    //sc_fxnum fx;
40    //sc_fxnum_fast fxf;
41    sc_fxval fxv;
42    sc_fxval_fast fxvf;
43
44    sc_assert(sc_abs(-1) == 1);
45    sc_assert(sc_max(1, 2) == 2);
46    sc_assert(sc_min(1, 2) == 1);
47    sc_copyright();
48    sc_version();
49    sc_release();
50  }
51  void f(sc_report& rpt)
52  {
53    sc_severity sev;
54    sev = SC_INFO;
55    sev = SC_WARNING;
56    sev = SC_ERROR;
57    sev = SC_FATAL;
58    sc_assert (sev == SC_FATAL);
59
60    sc_actions act;
61    act = SC_DO_NOTHING;
62  }
63  void g(sc_exception x) {}
64};
65
66struct Top: sc_module
67{
68  Top(sc_module_name)
69  {
70   tf = sc_create_vcd_trace_file("vcd");
71   tf->set_time_unit(1.0, SC_NS);
72   sc_trace(tf, sig, "sig");
73   sc_write_comment(tf, "Hello");
74  }
75  ~Top()
76  {
77    sc_close_vcd_trace_file(tf);
78  }
79  sc_trace_file* tf;
80  sc_signal<sc_logic> sig;
81};
82
83int sc_main(int argc, char* argv[])
84{
85#if defined(_MSC_VER) && _MSC_VER < 1900
86    _set_output_format(_TWO_DIGIT_EXPONENT);
87#endif
88
89  cout << "Should be silent except for some renaming warnings..." << endl;
90
91  Top top("top");
92
93  sc_attr_base ab("base");
94  sc_attribute<int> at("attr");
95
96  sc_buffer<int> bu;
97  sc_signal_resolved sr;
98  sc_fifo<int> fi;
99  sc_mutex mut;
100  sc_semaphore sem(2);
101  sc_event_queue eq;
102
103  sc_start(100, SC_NS);
104
105  cout << endl << "Success" << endl;
106  return 0;
107}
108