38struct vcd_pull_trace_file :
public sc_core::sc_trace_file {
40 vcd_pull_trace_file(
const char* name, std::function<
bool()>& enable);
42 virtual ~vcd_pull_trace_file();
45#define DECL_TRACE_METHOD_A(tp) void trace(const tp& object, const std::string& name) override;
46#define DECL_TRACE_METHOD_B(tp) void trace(const tp& object, const std::string& name, int width) override;
48#if(SYSTEMC_VERSION >= 20171012) || defined(NCSC)
49 DECL_TRACE_METHOD_A(sc_core::sc_event)
50 DECL_TRACE_METHOD_A(sc_core::sc_time)
52 DECL_TRACE_METHOD_A(
bool)
53 DECL_TRACE_METHOD_A(sc_dt::sc_bit)
54 DECL_TRACE_METHOD_A(sc_dt::sc_logic)
56 DECL_TRACE_METHOD_B(
unsigned char)
57 DECL_TRACE_METHOD_B(
unsigned short)
58 DECL_TRACE_METHOD_B(
unsigned int)
59 DECL_TRACE_METHOD_B(
unsigned long)
60#ifdef SYSTEMC_64BIT_PATCHES
61 DECL_TRACE_METHOD_B(
unsigned long long)
63 DECL_TRACE_METHOD_B(
char)
64 DECL_TRACE_METHOD_B(
short)
65 DECL_TRACE_METHOD_B(
int)
66 DECL_TRACE_METHOD_B(
long)
67 DECL_TRACE_METHOD_B(sc_dt::int64)
68 DECL_TRACE_METHOD_B(sc_dt::uint64)
70 DECL_TRACE_METHOD_A(
float)
71 DECL_TRACE_METHOD_A(
double)
72 DECL_TRACE_METHOD_A(sc_dt::sc_int_base)
73 DECL_TRACE_METHOD_A(sc_dt::sc_uint_base)
74 DECL_TRACE_METHOD_A(sc_dt::sc_signed)
75 DECL_TRACE_METHOD_A(sc_dt::sc_unsigned)
77 DECL_TRACE_METHOD_A(sc_dt::sc_fxval)
78 DECL_TRACE_METHOD_A(sc_dt::sc_fxval_fast)
79 DECL_TRACE_METHOD_A(sc_dt::sc_fxnum)
80 DECL_TRACE_METHOD_A(sc_dt::sc_fxnum_fast)
82 DECL_TRACE_METHOD_A(sc_dt::sc_bv_base)
83 DECL_TRACE_METHOD_A(sc_dt::sc_lv_base)
84#undef DECL_TRACE_METHOD_A
85#undef DECL_TRACE_METHOD_B
87 void trace(
const unsigned int&
object,
const std::string& name,
const char** enum_literals)
override;
90 void write_comment(
const std::string& comment)
override;
93 void cycle(
bool delta_cycle)
override;
95 void set_time_unit(
double v, sc_core::sc_time_unit tu)
override;
98#if WITH_SC_TRACING_PHASE_CALLBACKS
100 virtual void trace(sc_trace_file*)
const;
104 std::string prune_name(std::string
const& name);
105 std::string obtain_name();
106 std::function<bool()> check_enabled;
108 FILE* vcd_out{
nullptr};
113 : compare_and_update{compare_and_update}
116 std::vector<trace_entry> all_traces, active_traces;
117 std::vector<trace::vcd_trace*> changed_traces;
119 bool initialized{
false};
120 unsigned vcd_name_index{0};