14#ifndef SIMICS_SYSTEMC_TOOLS_SC_TOOL_H
15#define SIMICS_SYSTEMC_TOOLS_SC_TOOL_H
17#include <simics/cc-api.h>
18#include <simics/simulator-iface/instrumentation-tool.h>
35namespace scla = scl::awareness;
36namespace scli = scl::iface::instrumentation;
42class ScTool :
public simics::ConfObject,
43 public scli::EventActionInterface,
44 public scli::ProcessActionInterface,
45 public scli::SignalActionInterface,
46 public scli::SignalPortActionInterface,
47 public scli::TlmFwActionInterface,
48 public scli::TlmBwActionInterface,
49 public scli::ToolInterface {
51 explicit ScTool(simics::ConfObjectRef o)
54 conf_object_t *
connect(conf_object_t *controller,
55 attr_value_t args)
override;
61 std::string name, std::string long_name, std::string documentation);
66 const char *event_type,
67 const char *class_type,
69 sc_core::sc_time *timestamp)
override {}
73 const char *event_type,
74 const char *class_type,
76 sc_core::sc_time *timestamp,
77 bool internal)
override {}
80 void fired(scla::ProxyInterface *proxy)
override {}
84 sc_core::sc_object *signal)
override {}
88 tlm::tlm_generic_payload *trans,
89 tlm::tlm_phase *phase,
90 sc_core::sc_time *delay)
override {}
92 tlm::tlm_generic_payload *trans,
93 tlm::tlm_phase *phase,
94 sc_core::sc_time *delay,
95 tlm::tlm_sync_enum *ret)
override {}
97 tlm::tlm_generic_payload *trans,
98 sc_core::sc_time *delay)
override {}
100 tlm::tlm_generic_payload *trans,
101 sc_core::sc_time *delay)
override {}
103 tlm::tlm_generic_payload *trans,
104 tlm::tlm_dmi *dmi_data)
override {}
106 tlm::tlm_generic_payload *trans,
107 tlm::tlm_dmi *dmi_data,
108 bool *ret)
override {}
110 tlm::tlm_generic_payload *trans)
override {}
112 tlm::tlm_generic_payload *trans,
113 unsigned int *ret)
override {}
117 tlm::tlm_generic_payload *trans,
118 tlm::tlm_phase *phase,
119 sc_core::sc_time *delay)
override {}
121 tlm::tlm_generic_payload *trans,
122 tlm::tlm_phase *phase,
123 sc_core::sc_time *delay,
124 tlm::tlm_sync_enum *ret)
override {}
127 uint64 *end_range)
override {}
130 uint64 *end_range)
override {}
135 std::string long_name,
136 std::string documentation) {
137 auto cls = simics::make_class<T>(name, long_name,
139 Sim_Class_Kind_Pseudo);
140 cls->add(scl::iface::createAdapter<scli::ToolSimicsAdapter<T>>());