14#ifndef SIMICS_SYSTEMC_TLM2SIMICS_GASKET_CLASS_H
15#define SIMICS_SYSTEMC_TLM2SIMICS_GASKET_CLASS_H
20#include <simics/simulator/sim-get-class.h>
33template<
class TGasket>
40 SIM_set_object_configured(obj());
43 simulation_ref_.require();
54 if (SIM_clear_exception() == SimExc_No_Exception) {
58 auto new_cls = make_class<GasketClass>(
60 "model of SystemC tlm2simics gasket class",
61 "Class for binding Simics interface to SystemC Gasket.");
63 new_cls->add(Attribute(
"initiator",
"s",
64 "Name of the initiator socket the gasket"
68 new_cls->add(Attribute(
"simulation",
"o",
69 "Simics object implementing the SystemC"
70 " Simulation interface.",
73 new_cls->add(Attribute(
"object",
"o|n",
74 "Simics object implementing the corresponding"
75 " interface of this gasket.",
78 return *new_cls.get();
82 std::string socket_name_;
83 ConfObjectRef simulation_ref_;
Provides get/set functionality for a connector attribute, typically registered by using the Connector...
Definition: connector.h:39
Definition: gasket_class_interface.h:26
Definition: sc_version_interface.h:25
Interface to the SystemC simulation.
Definition: simulation_interface.h:25
virtual ConfObjectRef simics_object() const =0
Definition: gasket_class.h:35
void createGasket(iface::SimulationInterface *simulation) override
Definition: gasket_class.h:48
void finalize() override
Definition: gasket_class.h:38
iface::ScVersionInterface * version() override
Definition: gasket_class.h:45
static conf_class_t * registerGasketClass(const char *class_name)
Definition: gasket_class.h:52
GasketClass(ConfObjectRef o)
Definition: gasket_class.h:37
GasketInterface::Ptr createGasketByName(std::string socket_name, const simics::ConfObjectRef &simics_obj)
conf_class_t * SIM_get_class(const char *NOTNULL name)