14#ifndef SIMICS_SYSTEMC_SIMICS2TLM_GASKET_CLASS_H
15#define SIMICS_SYSTEMC_SIMICS2TLM_GASKET_CLASS_H
20#include <simics/simulator/sim-get-class.h>
35template<
class TGasket,
37 template<
class,
class>
class TSimicsAdapter,
38 class TGasketInterface>
45 : ConfObject(o), TGasketAdapter(&gasket_, this) {}
48 SIM_set_object_configured(obj());
51 simulation_ref_.require();
65 gasket_.gasket()->set_dmi(enable);
68 return gasket_.gasket()->is_dmi_enabled();
72 gasket_.gasket()->get_dmi_data_table()->print().c_str());
77 if (SIM_clear_exception() == SimExc_No_Exception) {
81 auto new_cls = make_class<GasketClass>(
83 "model of SystemC simics2tlm gasket class",
84 "Class for binding Simics interface to SystemC Gasket.");
87 TSimicsAdapter<GasketClass, TGasketInterface>>());
90 new_cls->add(Attribute(
"target",
"s",
91 "Name of the target socket the gasket is"
95 new_cls->add(Attribute(
"simulation",
"o",
96 "Simics object implementing the SystemC"
97 " Simulation interface.",
106 return *new_cls.get();
110 std::string socket_name_;
111 ConfObjectRef simulation_ref_;
Definition: gasket_class_interface.h:26
Interface to the SystemC simulation.
Definition: simulation_interface_proxy.h:25
void setSimulation(iface::SimulationInterface *simulation)
Definition: simulation_interface_proxy.h:30
ConfObjectRef simics_object() const override
Definition: simulation_interface_proxy.h:47
Definition: sc_initiator_gasket_interface.h:22
Definition: sc_initiator_gasket_simics_adapter.h:33
Definition: sc_version_interface.h:25
Interface to the SystemC simulation.
Definition: simulation_interface.h:25
Definition: gasket_class.h:42
void set_dmi(bool enable) override
Definition: gasket_class.h:64
void createGasket(iface::SimulationInterface *simulation) override
Definition: gasket_class.h:58
static conf_class_t * registerGasketClass(const char *class_name)
Definition: gasket_class.h:75
GasketClass(ConfObjectRef o)
Definition: gasket_class.h:44
bool is_dmi_enabled() override
Definition: gasket_class.h:67
void finalize() override
Definition: gasket_class.h:46
char * print_dmi_table() override
Definition: gasket_class.h:70
iface::ScVersionInterface * version() override
Definition: gasket_class.h:55
GasketInterface::Ptr createGasketByName(std::string socket_name, const simics::ConfObjectRef &simics_obj)
Factory for creating a Gasket and bind it to a target socket.
void bindUnmappedSimicsAdapters(conf_class_t *conf_class)
Bind all adapters that are still pending mapping to a conf_class.
Definition: simics_adapter.h:184
InterfaceSimicsAdapter & createAdapter()
Create a SimicsAdapter that can be registered with a ConfClass.
Definition: simics_adapter.h:172
conf_class_t * SIM_get_class(const char *NOTNULL name)