19
19
20
20
#include < systemc>
21
21
#include < tlm>
22
+ #include < cci_configuration>
23
+
24
+ #include < cstdio>
25
+ #include < string>
26
+ #include < fstream>
27
+ #include < streambuf>
28
+ #include < unistd.h>
29
+
30
+ SC_MODULE (test4) {
31
+ SC_CTOR (test4) {
32
+ SCP_INFO (()) << " . T4 Logger() 1" ;
33
+ SCP_WARN (()) << " . T4 Logger() 1" ;
34
+ SCP_INFO (()) << " . T4 Logger() 2" ;
35
+ SCP_WARN (()) << " . T4 Logger() 2" ;
36
+ }
37
+ SCP_LOGGER ();
38
+ };
39
+
40
+ SC_MODULE (test3) {
41
+ SC_CTOR (test3) {
42
+ SCP_INFO ((D)) << " . T3 D Logger \" other\" \" feature.one\" " ;
43
+ SCP_WARN ((D)) << " . T3 D Logger \" other\" \" feature.one\" " ;
44
+ SCP_INFO (()) << " . T3 Logger ()" ;
45
+ SCP_WARN (()) << " . T3 Logger ()" ;
46
+ }
47
+ SCP_LOGGER ((D), " other" , " feature.one" );
48
+ SCP_LOGGER (());
49
+ };
50
+
51
+ SC_MODULE (test2) {
52
+ SC_CTOR (test2) : t31 (" t3_1" ), t32 (" t3_2" ), t4 (" t4" ) {
53
+ SCP_INFO (()) << " T2 Logger()" ;
54
+ SCP_WARN (()) << " T2 Logger()" ;
55
+ }
56
+ SCP_LOGGER ();
57
+ test3 t31, t32;
58
+ test4 t4;
59
+ };
60
+
61
+ SC_MODULE (test1) {
62
+ SC_CTOR (test1) : t2 (" t2" ) {
63
+ SCP_WARN ((), " My.Name" ) << " T1 My.Name typed log" ;
64
+ SCP_INFO (()) << " T1 Logger()" ;
65
+ SCP_WARN (()) << " T1 Logger()" ;
66
+
67
+ SCP_LOGGER_VECTOR_PUSH_BACK (vec, " some" , " thing1" );
68
+ SCP_LOGGER_VECTOR_PUSH_BACK (vec, " some" , " thing2" );
69
+
70
+ SCP_INFO ((vec[0 ])) << " Thing1?" ;
71
+ SCP_WARN ((vec[0 ])) << " Thing1?" ;
72
+ SCP_INFO ((vec[1 ])) << " Thing2?" ;
73
+ SCP_WARN ((vec[1 ])) << " Thing2?" ;
74
+ }
75
+ SCP_LOGGER (" something" , " else" );
76
+ SCP_LOGGER_VECTOR (vec);
77
+ test2 t2;
78
+ };
79
+
80
+ class outside_class
81
+ {
82
+ SCP_LOGGER (" out.class" , " thing1" );
83
+
84
+ public:
85
+ outside_class () {
86
+ SCP_INFO (())(" constructor" );
87
+ SCP_WARN (())(" constructor" );
88
+ }
89
+ };
22
90
23
91
SC_MODULE (test) {
92
+ outside_class oc;
24
93
SC_CTOR (test) {
25
94
SCP_DEBUG (SCMOD) << " First part" ;
26
95
scp::tlm_extensions::path_trace ext;
@@ -47,17 +116,100 @@ SC_MODULE (test) {
47
116
} else {
48
117
SC_REPORT_INFO (" ext test" , " Failour" );
49
118
}
119
+
120
+ SCP_INFO () << " Uncached version empty" ;
121
+ SCP_INFO (())(" FMT String : Cached version default" );
122
+ SCP_INFO (SCMOD) << " UnCached version feature using SCMOD macro" ;
123
+ SCP_INFO ((m_my_logger)) << " Cached version using (m_my_logger)" ;
124
+ SCP_INFO ((D)) << " Cached version with D" ;
50
125
}
126
+
127
+ SCP_LOGGER ((m_my_logger));
128
+ SCP_LOGGER (());
129
+ SCP_LOGGER ((1 ), " other" );
130
+ SCP_LOGGER ((D), " other" , " feature.one" );
51
131
};
52
132
53
133
int sc_main (int argc, char ** argv) {
134
+ cci_utils::consuming_broker broker (" global_broker" );
135
+ cci_register_broker (broker);
136
+ cci::cci_originator orig (" config" );
137
+ broker.set_preset_cci_value (" log_level" , cci::cci_value (1 ), orig);
138
+ broker.set_preset_cci_value (" top.log_level" , cci::cci_value (5 ), orig);
139
+ broker.set_preset_cci_value (" *.t3_1.log_level" , cci::cci_value (5 ), orig);
140
+ broker.set_preset_cci_value (" feature.log_level" , cci::cci_value (5 ), orig);
141
+
142
+ broker.set_preset_cci_value (" test4.log_level" , cci::cci_value (4 ), orig);
143
+ broker.set_preset_cci_value (" thing1.log_level" , cci::cci_value (5 ), orig);
144
+
145
+ std::string logfile = " /tmp/scp_smoke_report_test." +
146
+ std::to_string (getpid ());
54
147
scp::init_logging (
55
148
scp::LogConfig ()
56
149
.logLevel (scp::log::DEBUG) // set log level to debug
57
- .msgTypeFieldWidth (10 )); // make the msg type column a bit tighter
150
+ .msgTypeFieldWidth (20 )
151
+ .fileInfoFrom (5 )
152
+ .logAsync (false )
153
+ .printSimTime (false )
154
+ .logFileName (logfile)); // make the msg type column a bit tighter
58
155
SCP_INFO () << " Constructing design" ;
59
- test test1 (" test" );
156
+ test toptest (" top" );
157
+ test1 t1 (" t1" );
158
+
60
159
SCP_INFO () << " Starting simulation" ;
61
160
sc_core::sc_start ();
62
- return 0 ;
161
+ SCP_WARN () << " Ending simulation" ;
162
+
163
+ #ifdef FMT_SHARED
164
+ std::string fmtstr = " FMT String : Cached version default" ;
165
+ #else
166
+ std::string fmtstr = " Please add FMT library for FMT support." ;
167
+ #endif
168
+
169
+ std::string expected =
170
+ R"( [ info] [ 0 s ]SystemC : Constructing design
171
+ [ info] [ 0 s ]out.class : constructor
172
+ [ warning] [ 0 s ]out.class : constructor
173
+ [ debug] [ 0 s ]top : First part
174
+ [ info] [ 0 s ]top : top
175
+ [ info] [ 0 s ]top : top->top->top
176
+ [ debug] [ 0 s ]top : Second part
177
+ [ info] [ 0 s ]ext test : Success
178
+ [ info] [ 0 s ]SystemC : Uncached version empty
179
+ [ info] [ 0 s ]top : )" +
180
+ fmtstr + R"(
181
+ [ info] [ 0 s ]top : UnCached version feature using SCMOD macro
182
+ [ info] [ 0 s ]top : Cached version using (m_my_logger)
183
+ [ info] [ 0 s ]top : Cached version with D
184
+ [ info] [ 0 s ]t1.t2.t3_1 : . T3 D Logger "other" "feature.one"
185
+ [ warning] [ 0 s ]t1.t2.t3_1 : . T3 D Logger "other" "feature.one"
186
+ [ info] [ 0 s ]t1.t2.t3_1 : . T3 Logger ()
187
+ [ warning] [ 0 s ]t1.t2.t3_1 : . T3 Logger ()
188
+ [ info] [ 0 s ]t1.t2.t3_2 : . T3 D Logger "other" "feature.one"
189
+ [ warning] [ 0 s ]t1.t2.t3_2 : . T3 D Logger "other" "feature.one"
190
+ [ warning] [ 0 s ]t1.t2.t3_2 : . T3 Logger ()
191
+ [ info] [ 0 s ]t1.t2.t4 : . T4 Logger() 1
192
+ [ warning] [ 0 s ]t1.t2.t4 : . T4 Logger() 1
193
+ [ info] [ 0 s ]t1.t2.t4 : . T4 Logger() 2
194
+ [ warning] [ 0 s ]t1.t2.t4 : . T4 Logger() 2
195
+ [ warning] [ 0 s ]t1.t2 : T2 Logger()
196
+ [ warning] [ 0 s ]My.Name : T1 My.Name typed log
197
+ [ warning] [ 0 s ]t1 : T1 Logger()
198
+ [ info] [ 0 s ]t1 : Thing1?
199
+ [ warning] [ 0 s ]t1 : Thing1?
200
+ [ warning] [ 0 s ]t1 : Thing2?
201
+ [ info] [ 0 s ]SystemC : Starting simulation
202
+ [ warning] [ 0 s ]SystemC : Ending simulation
203
+ )" ;
204
+
205
+ std::ifstream lf (logfile);
206
+ std::string out ((std::istreambuf_iterator<char >(lf)),
207
+ std::istreambuf_iterator<char >());
208
+
209
+ std::cout << " out file\n " << out << " \n " ;
210
+ std::cout << " expected\n " << expected << " \n " ;
211
+ std::cout << " Number of difference: " << out.compare (expected) << " \n " ;
212
+
213
+ std::remove (logfile.c_str ());
214
+ return out.compare (expected);
63
215
}
0 commit comments