1919
2020#include < systemc>
2121#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+ };
2290
2391SC_MODULE (test) {
92+ outside_class oc;
2493 SC_CTOR (test) {
2594 SCP_DEBUG (SCMOD) << " First part" ;
2695 scp::tlm_extensions::path_trace ext;
@@ -47,17 +116,100 @@ SC_MODULE (test) {
47116 } else {
48117 SC_REPORT_INFO (" ext test" , " Failour" );
49118 }
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" ;
50125 }
126+
127+ SCP_LOGGER ((m_my_logger));
128+ SCP_LOGGER (());
129+ SCP_LOGGER ((1 ), " other" );
130+ SCP_LOGGER ((D), " other" , " feature.one" );
51131};
52132
53133int 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 ());
54147 scp::init_logging (
55148 scp::LogConfig ()
56149 .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
58155 SCP_INFO () << " Constructing design" ;
59- test test1 (" test" );
156+ test toptest (" top" );
157+ test1 t1 (" t1" );
158+
60159 SCP_INFO () << " Starting simulation" ;
61160 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);
63215}
0 commit comments