40struct fst_trace_file :
public sc_core::sc_trace_file,
42#if SC_VERSION_MAJOR >= 3
44 public sc_core::sc_stage_callback_if
48 fst_trace_file(
const char* name, std::function<
bool()>& enable);
50 virtual ~fst_trace_file();
53#define DECL_TRACE_METHOD_A(tp) void trace(const tp& object, const std::string& name) override;
54#define DECL_TRACE_METHOD_B(tp) void trace(const tp& object, const std::string& name, int width) override;
55#if(SYSTEMC_VERSION >= 20171012) || defined(NCSC)
56 DECL_TRACE_METHOD_A(sc_core::sc_event)
57 DECL_TRACE_METHOD_A(sc_core::sc_time)
59 DECL_TRACE_METHOD_A(
bool)
60 DECL_TRACE_METHOD_A(sc_dt::sc_bit)
61 DECL_TRACE_METHOD_A(sc_dt::sc_logic)
62 DECL_TRACE_METHOD_B(
unsigned char)
63 DECL_TRACE_METHOD_B(
unsigned short)
64 DECL_TRACE_METHOD_B(
unsigned int)
65 DECL_TRACE_METHOD_B(
unsigned long)
66#ifdef SYSTEMC_64BIT_PATCHES
67 DECL_TRACE_METHOD_B(
unsigned long long)
69 DECL_TRACE_METHOD_B(
char)
70 DECL_TRACE_METHOD_B(
short)
71 DECL_TRACE_METHOD_B(
int)
72 DECL_TRACE_METHOD_B(
long)
73 DECL_TRACE_METHOD_B(sc_dt::int64)
74 DECL_TRACE_METHOD_B(sc_dt::uint64)
75 DECL_TRACE_METHOD_A(
float)
76 DECL_TRACE_METHOD_A(
double)
77 DECL_TRACE_METHOD_A(sc_dt::sc_int_base)
78 DECL_TRACE_METHOD_A(sc_dt::sc_uint_base)
79 DECL_TRACE_METHOD_A(sc_dt::sc_signed)
80 DECL_TRACE_METHOD_A(sc_dt::sc_unsigned)
81 DECL_TRACE_METHOD_A(sc_dt::sc_fxval)
82 DECL_TRACE_METHOD_A(sc_dt::sc_fxval_fast)
83 DECL_TRACE_METHOD_A(sc_dt::sc_fxnum)
84 DECL_TRACE_METHOD_A(sc_dt::sc_fxnum_fast)
85 DECL_TRACE_METHOD_A(sc_dt::sc_bv_base)
86 DECL_TRACE_METHOD_A(sc_dt::sc_lv_base)
87#undef DECL_TRACE_METHOD_A
88#undef DECL_TRACE_METHOD_B
90 void trace(
const unsigned int&
object,
const std::string& name,
const char** enum_literals)
override;
92#define DECL_REGISTER_METHOD_A(tp) observer::notification_handle* observe(tp const& o, std::string const& nm) override;
93#if(SYSTEMC_VERSION >= 20171012)
94 DECL_REGISTER_METHOD_A(sc_core::sc_event)
95 DECL_REGISTER_METHOD_A(sc_core::sc_time)
97 DECL_REGISTER_METHOD_A(
bool)
98 DECL_REGISTER_METHOD_A(sc_dt::sc_bit)
99 DECL_REGISTER_METHOD_A(sc_dt::sc_logic)
101 DECL_REGISTER_METHOD_A(
unsigned char)
102 DECL_REGISTER_METHOD_A(
unsigned short)
103 DECL_REGISTER_METHOD_A(
unsigned int)
104 DECL_REGISTER_METHOD_A(
unsigned long)
105 DECL_REGISTER_METHOD_A(
char)
106 DECL_REGISTER_METHOD_A(
short)
107 DECL_REGISTER_METHOD_A(
int)
108 DECL_REGISTER_METHOD_A(
long)
109 DECL_REGISTER_METHOD_A(sc_dt::int64)
110 DECL_REGISTER_METHOD_A(sc_dt::uint64)
112 DECL_REGISTER_METHOD_A(
float)
113 DECL_REGISTER_METHOD_A(
double)
114 DECL_REGISTER_METHOD_A(sc_dt::sc_int_base)
115 DECL_REGISTER_METHOD_A(sc_dt::sc_uint_base)
116 DECL_REGISTER_METHOD_A(sc_dt::sc_signed)
117 DECL_REGISTER_METHOD_A(sc_dt::sc_unsigned)
119 DECL_REGISTER_METHOD_A(sc_dt::sc_fxval)
120 DECL_REGISTER_METHOD_A(sc_dt::sc_fxval_fast)
121 DECL_REGISTER_METHOD_A(sc_dt::sc_fxnum)
122 DECL_REGISTER_METHOD_A(sc_dt::sc_fxnum_fast)
124 DECL_REGISTER_METHOD_A(sc_dt::sc_bv_base)
125 DECL_REGISTER_METHOD_A(sc_dt::sc_lv_base)
126#undef DECL_REGISTER_METHOD_A
129 void write_comment(
const std::string& comment)
override;
132 void cycle(
bool delta_cycle)
override;
134 void set_time_unit(
double v, sc_core::sc_time_unit tu)
override;
137#if WITH_SC_TRACING_PHASE_CALLBACKS
139 virtual void trace(sc_trace_file*)
const;
141#if SC_VERSION_MAJOR >= 3
142 void stage_callback(
const sc_core::sc_stage& stage);
145 std::function<bool()> check_enabled;
147 void* m_fst{
nullptr};
151 fst_trace_file* that;
152 bool notify()
override;
154 : compare_and_update{compare_and_update}
157 virtual ~trace_entry() {}
159 std::deque<trace_entry> all_traces;
160 std::vector<trace_entry*> pull_traces;
161 std::vector<trace::fst_trace*> changed_traces;
162 std::vector<trace::fst_trace*> triggered_traces;
163 uint64_t last_emitted_ts{std::numeric_limits<uint64_t>::max()};