/* * tlm_gp_data_ext.h * * Created on: 07.11.2015 * Author: eyck */ #ifndef TLM_GP_DATA_EXT_H_ #define TLM_GP_DATA_EXT_H_ #include "scv.h" #include "tlm_gp_data.h" template<> class scv_extensions : public scv_enum_base { public: SCV_ENUM_CTOR(tlm::tlm_command) { SCV_ENUM(tlm::TLM_READ_COMMAND); SCV_ENUM(tlm::TLM_WRITE_COMMAND); SCV_ENUM(tlm::TLM_IGNORE_COMMAND); } }; template<> class scv_extensions : public scv_enum_base { public: SCV_ENUM_CTOR(tlm::tlm_response_status) { SCV_ENUM(tlm::TLM_OK_RESPONSE); SCV_ENUM(tlm::TLM_INCOMPLETE_RESPONSE); SCV_ENUM(tlm::TLM_GENERIC_ERROR_RESPONSE); SCV_ENUM(tlm::TLM_ADDRESS_ERROR_RESPONSE); SCV_ENUM(tlm::TLM_COMMAND_ERROR_RESPONSE); SCV_ENUM(tlm::TLM_BURST_ERROR_RESPONSE); SCV_ENUM(tlm::TLM_BYTE_ENABLE_ERROR_RESPONSE); } }; template<> class scv_extensions : public scv_enum_base { public: SCV_ENUM_CTOR(tlm::tlm_gp_option) { SCV_ENUM(tlm::TLM_MIN_PAYLOAD); SCV_ENUM(tlm::TLM_FULL_PAYLOAD); SCV_ENUM(tlm::TLM_FULL_PAYLOAD_ACCEPTED); } }; template<> class scv_extensions : public scv_enum_base { public: SCV_ENUM_CTOR(tlm::tlm_phase_enum) { SCV_ENUM(tlm::UNINITIALIZED_PHASE); SCV_ENUM(tlm::BEGIN_REQ); SCV_ENUM(tlm::END_REQ); SCV_ENUM(tlm::BEGIN_RESP); SCV_ENUM(tlm::END_RESP); } }; template<> class scv_extensions : public scv_enum_base { public: SCV_ENUM_CTOR(tlm::tlm_sync_enum) { SCV_ENUM(tlm::TLM_ACCEPTED); SCV_ENUM(tlm::TLM_UPDATED); SCV_ENUM(tlm::TLM_COMPLETED); } }; template<> class scv_extensions : public scv_extensions_base { public: scv_extensions address; scv_extensions command; scv_extensions data; scv_extensions data_length; scv_extensions response_status; scv_extensions dmi; scv_extensions byte_enable; scv_extensions byte_enable_length; scv_extensions streaming_width; scv_extensions gp_option; SCV_EXTENSIONS_CTOR(scv4tlm::tlm_gp_data) { //must be in order SCV_FIELD(address); SCV_FIELD(command); SCV_FIELD(data); SCV_FIELD(data_length); SCV_FIELD(response_status); SCV_FIELD(dmi); SCV_FIELD(byte_enable); SCV_FIELD(byte_enable_length); SCV_FIELD(streaming_width); SCV_FIELD(gp_option); } }; template<> class scv_extensions : public scv_enum_base { public: SCV_ENUM_CTOR(tlm::tlm_dmi::dmi_access_e) { SCV_ENUM(tlm::tlm_dmi::DMI_ACCESS_NONE); SCV_ENUM(tlm::tlm_dmi::DMI_ACCESS_READ); SCV_ENUM(tlm::tlm_dmi::DMI_ACCESS_WRITE); SCV_ENUM(tlm::tlm_dmi::DMI_ACCESS_READ_WRITE); } }; template<> class scv_extensions : public scv_extensions_base { public: scv_extensions dmi_ptr; scv_extensions dmi_start_address; scv_extensions dmi_end_address; scv_extensions dmi_access; scv_extensions dmi_read_latency; scv_extensions dmi_write_latency; SCV_EXTENSIONS_CTOR(scv4tlm::tlm_dmi_data) { //must be in order SCV_FIELD(dmi_ptr); SCV_FIELD(dmi_start_address); SCV_FIELD(dmi_end_address); SCV_FIELD(dmi_access); SCV_FIELD(dmi_read_latency); SCV_FIELD(dmi_write_latency); } }; #endif /* TLM_GP_DATA_EXT_H_ */