27enum class flavor_e { AXI, ACEL, ACE };
32template <
typename Enum>
struct enable_for_enum {
static const bool value =
false; };
38template <
typename E>
inline E
into(
typename std::underlying_type<E>::type t);
44template <typename E, typename ULT = typename std::underlying_type<E>::type,
45 typename X =
typename std::enable_if<std::is_enum<E>::value && !std::is_convertible<E, ULT>::value,
bool>::type>
47 return static_cast<typename std::underlying_type<E>::type
>(t);
54template <
typename E>
const char*
to_char(E t);
61template <typename E, typename std::enable_if<enable_for_enum<E>::value,
bool>::type>
62inline std::ostream& operator<<(std::ostream& os, E e) {
67std::ostream& operator<<(std::ostream& os, tlm::tlm_generic_payload
const& t);
80enum class lock_e : uint8_t { NORMAL = 0x0, EXLUSIVE = 0x1, LOCKED = 0x2 };
84enum class domain_e : uint8_t { NON_SHAREABLE = 0x0, INNER_SHAREABLE = 0x1, OUTER_SHAREABLE = 0x2, SYSTEM = 0x3 };
89 RESPECT_BARRIER = 0x0,
101 READ_NO_SNOOP = 0x10,
106 READ_NOT_SHARED_DIRTY = 0x3,
107 READ_ONCE_CLEAN_INVALID = 0x4,
108 READ_ONCE_MAKE_INVALID = 0x5,
115 CLEAN_SHARED_PERSIST = 0xa,
123 WRITE_NO_SNOOP = 0x30,
126 WRITE_LINE_UNIQUE = 0x21,
135 WRITE_UNIQUE_PTL_STASH = 0x28,
136 WRITE_UNIQUE_FULL_STASH = 0x29,
137 STASH_ONCE_SHARED = 0x2c,
138 STASH_ONCE_UNIQUE = 0x2d,
139 STASH_TRANSLATION = 0x2e
143enum class atop_low_e { ADD = 0x0, CLR = 0x1, EOR = 0x2, SET = 0x3, SMAX = 0x4, SMIN = 0x5, UMAX = 0x6, UMIN = 0x7 };
145enum class atop_enc_e {
150 AtomicCompare = 0x31,
155enum class resp_e : uint8_t { OKAY = 0x0, EXOKAY = 0x1, SLVERR = 0x2, DECERR = 0x3 };
180 void set_id(
unsigned int value);
183 unsigned int get_id()
const;
194 std::array<unsigned, 3> user{{0, 0, 0}};
391 domain_e domain{domain_e::NON_SHAREABLE};
392 snoop_e snoop{snoop_e::READ_NO_SNOOP};
393 bar_e barrier{bar_e::RESPECT_BARRIER};
394 lock_e lock{lock_e::NORMAL};
397 uint16_t stash_nid{std::numeric_limits<uint16_t>::max()};
398 uint8_t stash_lpid{std::numeric_limits<uint8_t>::max()};
626 response() =
default;
707 uint8_t resp{
static_cast<uint8_t
>(resp_e::OKAY)};
780template <
typename REQ,
typename RESP = response>
806 void reset(
const REQ*);
834 std::vector<response> response_arr{};
835 bool response_array_complete{
false};
855 tlm::tlm_extension_base*
clone()
const override;
860 void copy_from(tlm::tlm_extension_base
const& ext)
override;
880 tlm::tlm_extension_base*
clone()
const override;
885 void copy_from(tlm::tlm_extension_base
const& ext)
override;
905 tlm::tlm_extension_base*
clone()
const override;
910 void copy_from(tlm::tlm_extension_base
const& ext)
override;
914using axi_phase = tlm::tlm_phase;
921 typedef axi_phase tlm_phase_type;
926enum SC_API tlm_phase_enum {
927 UNINITIALIZED_PHASE = 0,
928 BEGIN_REQ = tlm::BEGIN_REQ,
929 END_REQ = tlm::END_REQ,
930 BEGIN_RESP = tlm::BEGIN_RESP,
931 END_RESP = tlm::END_RESP
933DECLARE_EXTENDED_PHASE(BEGIN_PARTIAL_REQ);
934DECLARE_EXTENDED_PHASE(END_PARTIAL_REQ);
935DECLARE_EXTENDED_PHASE(BEGIN_PARTIAL_RESP);
936DECLARE_EXTENDED_PHASE(END_PARTIAL_RESP);
937DECLARE_EXTENDED_PHASE(ACK);
948 virtual void b_snoop(TRANS& trans, sc_core::sc_time& t) = 0;
951template <
typename TYPES = axi_protocol_types>
using axi_fw_transport_if = tlm::tlm_fw_transport_if<TYPES>;
953template <
typename TYPES = axi_protocol_types>
using axi_bw_transport_if = tlm::tlm_bw_transport_if<TYPES>;
955template <
typename TYPES = axi_protocol_types>
using ace_fw_transport_if = tlm::tlm_fw_transport_if<TYPES>;
959template <
typename TYPES = axi_protocol_types>
963#if SC_VERSION_MAJOR < 3
964using type_index = sc_core::sc_type_index;
966using type_index = std::type_index;
973 sc_core::sc_port_policy POL = sc_core::SC_ONE_OR_MORE_BOUND>
975:
public tlm::tlm_base_initiator_socket<BUSWIDTH, axi_fw_transport_if<TYPES>, axi_bw_transport_if<TYPES>, N, POL> {
993 const char*
kind()
const override {
return "axi_initiator_socket"; }
995#if SYSTEMC_VERSION >= 20181013 || defined(NCSC)
997 type_index get_protocol_types()
const override {
return typeid(TYPES); }
1004 sc_core::sc_port_policy POL = sc_core::SC_ONE_OR_MORE_BOUND>
1005struct axi_target_socket :
public tlm::tlm_base_target_socket<BUSWIDTH, axi_fw_transport_if<TYPES>, axi_bw_transport_if<TYPES>, N, POL> {
1023 const char*
kind()
const override {
return "axi_target_socket"; }
1025#if SYSTEMC_VERSION >= 20181013 || defined(NCSC)
1027 type_index get_protocol_types()
const override {
return typeid(TYPES); }
1034 sc_core::sc_port_policy POL = sc_core::SC_ONE_OR_MORE_BOUND>
1036:
public tlm::tlm_base_initiator_socket<BUSWIDTH, ace_fw_transport_if<TYPES>, ace_bw_transport_if<TYPES>, N, POL> {
1054 const char*
kind()
const override {
return "axi_initiator_socket"; }
1055#if SYSTEMC_VERSION >= 20181013 || defined(NCSC)
1060 type_index get_protocol_types()
const override {
return typeid(TYPES); }
1067 sc_core::sc_port_policy POL = sc_core::SC_ONE_OR_MORE_BOUND>
1068struct ace_target_socket :
public tlm::tlm_base_target_socket<BUSWIDTH, ace_fw_transport_if<TYPES>, ace_bw_transport_if<TYPES>, N, POL> {
1086 const char*
kind()
const override {
return "axi_target_socket"; }
1088#if SYSTEMC_VERSION >= 20181013 || defined(NCSC)
1093 type_index get_protocol_types()
const override {
return typeid(TYPES); }
1100template <
typename EXT>
bool is_valid(EXT& ext) {
return is_valid(&ext); }
1102template <
typename EXT>
bool is_valid(EXT* ext) {
return is_valid_msg(ext) ==
nullptr; }
1104template <
typename EXT>
char const* is_valid_msg(EXT& ext) {
return is_valid_msg(&ext); }
1106template <
typename EXT>
char const* is_valid_msg(EXT* ext);
1108inline bool is_dataless(axi::ace_extension
const* ext) {
1112 return snp == snoop_e::CLEAN_UNIQUE || snp == snoop_e::MAKE_UNIQUE || snp == snoop_e::CLEAN_SHARED || snp == snoop_e::CLEAN_INVALID ||
1113 snp == snoop_e::MAKE_INVALID || snp == snoop_e::EVICT || snp == snoop_e::STASH_ONCE_SHARED || snp == snoop_e::STASH_ONCE_UNIQUE;
1116inline unsigned get_axi_id(axi::axi_protocol_types::tlm_payload_type
const& trans) {
1117 if(
auto e = trans.get_extension<axi::ace_extension>())
1119 if(
auto e = trans.get_extension<axi::axi4_extension>())
1121 if(
auto e = trans.get_extension<axi::axi3_extension>())
1123 sc_assert(
false &&
"transaction is not an axi or ace transaction");
1124 return std::numeric_limits<unsigned>::max();
1127inline unsigned get_axi_id(axi::axi_protocol_types::tlm_payload_type
const* trans) {
return get_axi_id(*trans); }
1136inline bool is_burst(
const axi::axi_protocol_types::tlm_payload_type& trans) {
1138 return e->get_length() > 0;
1140 return e->get_length() > 0;
1142 return e->get_length() > 0;
1143 sc_assert(
false &&
"transaction is not an axi or ace transaction");
1151inline bool is_burst(
const axi::axi_protocol_types::tlm_payload_type* trans) {
return is_burst(*trans); }
1171 return e->get_length() + 1;
1173 return e->get_length() + 1;
1175 return e->get_length() + 1;
1176 sc_assert(
false &&
"transaction is not an axi or ace transaction");
1202inline unsigned get_burst_size(
const axi::axi_protocol_types::tlm_payload_type& trans) {
1204 return 1 << e->get_size();
1206 return 1 << e->get_size();
1208 return 1 << e->get_size();
1209 sc_assert(
false &&
"transaction is not an axi or ace transaction");
1219inline burst_e get_burst_type(
const axi::axi_protocol_types::tlm_payload_type& trans) {
1221 return e->get_burst();
1223 return e->get_burst();
1225 return e->get_burst();
1226 sc_assert(
false &&
"transaction is not an axi or ace transaction");
1227 return burst_e::FIXED;
1229inline burst_e get_burst_type(
const axi::axi_protocol_types::tlm_payload_type* trans) {
return get_burst_type(*trans); }
1231inline unsigned get_cache(
const axi::axi_protocol_types::tlm_payload_type& trans) {
1232 if(
auto e = trans.get_extension<axi::ace_extension>())
1233 return e->get_cache();
1234 if(
auto e = trans.get_extension<axi::axi4_extension>())
1235 return e->get_cache();
1236 if(
auto e = trans.get_extension<axi::axi3_extension>())
1237 return e->get_cache();
1238 sc_assert(
false &&
"transaction is not an axi or ace transaction");
1241inline unsigned get_cache(
const axi::axi_protocol_types::tlm_payload_type* trans) {
return get_cache(*trans); }
1254 assert(t <=
static_cast<std::underlying_type<burst_e>::type
>(
burst_e::WRAP));
1255 return static_cast<burst_e>(t);
1258template <>
inline lock_e into<lock_e>(
typename std::underlying_type<lock_e>::type t) {
1259 assert(t <=
static_cast<std::underlying_type<lock_e>::type
>(lock_e::LOCKED));
1260 return static_cast<lock_e>(t);
1264 assert(t <=
static_cast<std::underlying_type<domain_e>::type
>(domain_e::SYSTEM));
1268template <>
inline bar_e into<bar_e>(
typename std::underlying_type<bar_e>::type t) {
1270 return static_cast<bar_e>(t);
1274 assert(t <=
static_cast<std::underlying_type<snoop_e>::type
>(snoop_e::WRITE_NO_SNOOP));
1275 return static_cast<snoop_e>(t);
1278template <>
inline resp_e into<resp_e>(
typename std::underlying_type<resp_e>::type t) {
1279 assert(t <=
static_cast<std::underlying_type<resp_e>::type
>(resp_e::DECERR));
1280 return static_cast<resp_e>(t);
1292 uint8_t t =
to_int(lock);
1301 uint8_t t =
to_int(lock);
1302 return (t & EXCL) != 0;
1306 uint8_t t =
to_int(lock);
1315 uint8_t t =
to_int(lock);
1316 return (t & LOCKED) != 0;
1321 cache |= BUFFERABLE;
1323 cache &= ~BUFFERABLE;
1332 cache &= ~CACHEABLE;
1361 cache |= BUFFERABLE;
1363 cache &= ~BUFFERABLE;
1372 cache &= ~CACHEABLE;
1399 cache &= ~CACHEABLE;
1425 burst = burst_e::FIXED;
1429 domain = domain_e::NON_SHAREABLE;
1430 snoop = snoop_e::READ_NO_SNOOP;
1431 barrier = bar_e::RESPECT_BARRIER;
1432 lock = lock_e::NORMAL;
1461 prot &= ~PRIVILEGED;
1477 prot &= ~INSTRUCTION;
1479 prot |= INSTRUCTION;
1494 this->cache = cache;
1535 case tlm::TLM_OK_RESPONSE:
1536 return resp_e::OKAY;
1537 case tlm::TLM_INCOMPLETE_RESPONSE:
1538 case tlm::TLM_ADDRESS_ERROR_RESPONSE:
1539 return resp_e::DECERR;
1541 return resp_e::SLVERR;
1546 switch(
to_int(resp) & 0x3) {
1547 case to_int(resp_e::OKAY):
1548 return tlm::TLM_OK_RESPONSE;
1549 case to_int(resp_e::EXOKAY):
1550 return tlm::TLM_OK_RESPONSE;
1551 case to_int(resp_e::DECERR):
1552 return tlm::TLM_ADDRESS_ERROR_RESPONSE;
1554 return tlm::TLM_GENERIC_ERROR_RESPONSE;
1561 switch(resp & 0x3) {
1563 return resp_e::OKAY;
1565 return resp_e::EXOKAY;
1567 return resp_e::SLVERR;
1569 return resp_e::DECERR;
1615 resp |= DATATRANSFER;
1617 resp &= ~DATATRANSFER;
1624 resp |= SNOOPEERROR;
1626 resp &= ~SNOOPEERROR;
1639 static_cast<common&
>(*this) = *ext;
1640 static_cast<REQ&
>(*this) = *ext;
1641 static_cast<response&
>(*this) = *ext;
1652 static_cast<REQ&
>(*this) = *control;
1657 response_arr.push_back(arr);
1661 return response_arr;
1667 response_array_complete = complete;
1671 return response_array_complete;
1679 static_cast<common&
>(*this) = *ext;
1681 static_cast<response&
>(*this) = *ext;
1689 static_cast<common&
>(*this) = *ext;
1691 static_cast<response&
>(*this) = *ext;
1697 auto const* ext =
dynamic_cast<const ace_extension*
>(&bext);
1699 static_cast<common&
>(*this) = *ext;
1701 static_cast<response&
>(*this) = *ext;
virtual void b_snoop(TRANS &trans, sc_core::sc_time &t)=0
snoop access to a snooped master
TLM2.0 components modeling AHB.
const char * to_char(E t)
tlm::tlm_generic_payload axi_payload
aliases for payload and phase types
unsigned get_burst_length(const request &r)
E into(typename std::underlying_type< E >::type t)
@ MEMORY_BARRIER
Normal access, respecting barriers.
@ SYNCHRONISATION_BARRIER
Normal access, ignoring barriers.
@ IGNORE_BARRIER
Memory barrier.
tlm::tlm_bw_transport_if< TYPES > axi_bw_transport_if
alias declaration for the backward interface:
tlm::tlm_fw_transport_if< TYPES > ace_fw_transport_if
alias declaration for the ACE forward interface
tlm::tlm_fw_transport_if< TYPES > axi_fw_transport_if
alias declaration for the forward interface
constexpr ULT to_int(E t)
bool is_burst(const axi::axi_protocol_types::tlm_payload_type &trans)
unsigned get_burst_size(const request &r)
ace_extension()=default
the default constructor
ace_extension(const ace_extension *o)
the copy constructor
tlm::tlm_extension_base * clone() const override
the clone function to create deep copies of
void copy_from(tlm::tlm_extension_base const &ext) override
deep copy all values from ext
tlm::tlm_base_initiator_socket< BUSWIDTH, ace_fw_transport_if< TYPES >, ace_bw_transport_if< TYPES >, N, POL > base_type
base type alias
ace_initiator_socket(const char *name)
constructor with instance name
const char * kind() const override
get the kind of this sc_object
ace_initiator_socket()
default constructor using a generated instance name
void set_snoop_was_unique(bool=true)
set the response status bit WasUnique
bool is_snoop_data_transfer() const
check the response status bit DataTransfer
void set_cresp(uint8_t)
set the coherent response status
bool is_snoop_was_unique() const
check the response status bit WasUnique
void set_snoop_error(bool=true)
set the response status bit Error
void set_pass_dirty(bool=true)
set the response status bit PassDirty
uint8_t get_cresp() const
get the coherent response status
bool is_pass_dirty() const
check the response status bit PassDirty (CRESP[2])
bool is_shared() const
check the response status bit IsShared (CRESP[3])
void set_shared(bool=true)
set the response status bit IsShared
bool is_snoop_error() const
check the response status bit Error
void set_snoop_data_transfer(bool=true)
set the response status bit DataTransfer
ace_target_socket()
default constructor using a generated instance name
const char * kind() const override
get the kind of this sc_object
tlm::tlm_base_target_socket< BUSWIDTH, ace_fw_transport_if< TYPES >, ace_bw_transport_if< TYPES >, N, POL > base_type
base type alias
ace_target_socket(const char *name)
constructor with instance name
void set_barrier(bar_e)
set the AxBAR value
bool get_unique() const
get the AxUNIQUE value return the unique value
void set_domain(domain_e)
set the AxDOMAIN value
bar_e get_barrier() const
get the AxBAR value return the barrier value
void set_unique(bool)
set the AxUNIQUE value
ace & operator=(const ace &o)
snoop_e get_snoop() const
get the AxSNOOP value return the snoop value
domain_e get_domain() const
get the AxDOMAIN value return the domain value
void set_snoop(snoop_e)
set the AxSNOOP value
axi3_extension(const axi3_extension *o)
the copy constructor
tlm::tlm_extension_base * clone() const override
the clone function to create deep copies of
axi3_extension()=default
the default constructor
void copy_from(tlm::tlm_extension_base const &ext) override
deep copy all values from ext
bool is_bufferable() const
get the bufferable bit of AxCACHE (AxCACHE[0]) return the bufferable bit
void set_cacheable(bool=true)
set the cacheable bit of AxCACHE (AxCACHE[1])
void set_write_allocate(bool=true)
set the write_allocate bit of AxCACHE (AxCACHE[2])
bool is_read_allocate() const
get the read_allocate bit of AxCACHE (AxCACHE[3]) return the read_allocate bit
void set_locked(bool=true)
get the locked bit of AxLOCK (AxLOCK[1])
void set_exclusive(bool=true)
get the exclusive bit of AxLOCK (AxLOCK[0])
void set_read_allocate(bool=true)
set the read_allocate bit of AxCACHE (AxCACHE[3])
void set_bufferable(bool=true)
set the bufferable bit of AxCACHE (AxCACHE[0])
bool is_exclusive() const
get the exclusive bit of AxLOCK (AxLOCK[0]) return the exclusive bit
bool is_write_allocate() const
get the write_allocate bit of AxCACHE (AxCACHE[2]) return the write_allocate bit
bool is_cacheable() const
get the cacheable bit of AxCACHE (AxCACHE[1]) return the cacheable bit
bool is_locked() const
get the locked bit of AxLOCK (AxLOCK[1]) return the locked bit
axi3 & operator=(const axi3 &o)
axi4_extension()=default
the default constructor
axi4_extension(const axi4_extension *o)
the copy constructor
void copy_from(tlm::tlm_extension_base const &ext) override
deep copy all values from ext
tlm::tlm_extension_base * clone() const override
the clone function to create deep copies of
void set_allocate(bool=true)
set the write allocate/read other allocate bit of AxCACHE (AxCACHE[3])
bool is_modifiable() const
get the modifiable bit of AxCACHE (AxCACHE[1]) return the modifiable bit
void set_exclusive(bool=true)
get the exclusive bit of AxLOCK (AxLOCK[0])
bool is_allocate() const
get the write allocate/read other allocate bit of AxCACHE (AxCACHE[3]) return the write_other_allocat...
void set_modifiable(bool=true)
set the modifiable bit of AxCACHE (AxCACHE[1])
void set_other_allocate(bool=true)
set the read allocate/write other allocate bit of AxCACHE (AxCACHE[2])
bool is_bufferable() const
get the bufferable bit of AxCACHE (AxCACHE[0]) return the bufferable bit
bool is_exclusive() const
get the exclusive bit of AxLOCK (AxLOCK[0]) return the exclusive bit
bool is_write_allocate() const
get the write allocate/read other allocate bit of AxCACHE (AxCACHE[3]) return the write_other_allocat...
bool is_read_allocate() const
get the read allocate/write other allocate bit of AxCACHE (AxCACHE[2]) return the read_other_allocate...
axi4 & operator=(const axi4 &o)
bool is_other_allocate() const
get the read allocate/write other allocate bit of AxCACHE (AxCACHE[2]) return the read_other_allocate...
bool is_cacheable() const
get the modifiable bit of AxCACHE (AxCACHE[1]) return the modifiable bit
void set_bufferable(bool=true)
set the bufferable bit of AxCACHE (AxCACHE[0])
void set_write_allocate(bool=true)
set the write allocate/read other allocate bit of AxCACHE (AxCACHE[3])
void set_read_allocate(bool=true)
set the read allocate/write other allocate bit of AxCACHE (AxCACHE[2])
void set_cacheable(bool=true)
set the modifiable bit of AxCACHE (AxCACHE[1])
bool is_response_array_complete()
axi_extension()=default
the default constructor
const std::vector< response > & get_response_array() const
return the read response array for constant instances
void set_response_array_complete(bool=true)
set the flag indicating the all read responses are collected
void add_to_response_array(response &)
add a read response to the response array
void reset()
reset all data member to their default
axi_initiator_socket()
default constructor using a generated instance name
axi_initiator_socket(const char *name)
constructor with instance name
const char * kind() const override
get the kind of this sc_object
tlm::tlm_base_initiator_socket< BUSWIDTH, axi_fw_transport_if< TYPES >, axi_bw_transport_if< TYPES >, N, POL > base_type
base type alias
The AXI protocol traits class. Since the protocoll defines additional non-ignorable phases a dedicate...
tlm::tlm_base_target_socket< BUSWIDTH, axi_fw_transport_if< TYPES >, axi_bw_transport_if< TYPES >, N, POL > base_type
base type alias
const char * kind() const override
get the kind of this sc_object
axi_target_socket(const char *name)
constructor with instance name
axi_target_socket()
default constructor using a generated instance name
void reset()
reset all data member to their default
void set_id(unsigned int value)
unsigned int get_user(id_type chnl) const
void set_user(id_type chnl, unsigned int value)
common & operator=(const common &o)
copy assignment operator
common()=default
the constructor
unsigned int get_id() const
void set_instruction(bool=true)
set the instruction bit of the AxPROT (AxPROT[2])
uint8_t get_atop() const
get the raw AWATOP value return the unique value
void set_length(uint8_t)
set the AxLEN value of the transaction, the value denotes the burst length - 1
bool is_stash_lpid_en() const
check if AWSTASHLPID is valid return the valid value
void set_qos(uint8_t)
set the AxQOS (quality of service) value
uint8_t get_stash_lpid() const
get the raw AWSTASHLPID value return the unique value
void set_cache(uint8_t)
set the AxCACHE value as POD, only value from 0..15 are allowed
void set_region(uint8_t)
set the AxREGION value
request & operator=(const request &o)
bool is_instruction() const
set the instruction bit of the AxPROT (AxPROT[2])
burst_e get_burst() const
get the AxBURST value,
uint8_t get_length() const
get the AxLEN value of the transaction, the value denotes the burst length - 1
bool is_privileged() const
get the privileged bit of the AxPROT (AxPROT[0])
void set_non_secure(bool=true)
set the non-secure bit of the AxPROT (AxPROT[1])
void set_stash_lpid(uint8_t)
set the raw AWSTASHLPID value
void set_burst(burst_e)
set the AxBURST value,
bool is_non_secure() const
set the non-secure bit of the AxPROT (AxPROT[1])
uint8_t get_region() const
get the AxREGION value
void set_privileged(bool=true)
set the privileged bit of the AxPROT (AxPROT[0])
bool is_stash_nid_en() const
check if AWSTASHNID is valid return the valid value
void reset()
reset all data member to their default
uint8_t get_qos() const
get the AxQOS (quality of service) value
uint8_t get_stash_nid() const
get the raw AWSTASHNID value return the unique value
void set_atop(uint8_t)
set the raw AWATOP value
void set_size(uint8_t)
get the AxSIZE value of the transaction, the length is 2^size. It needs to be less than 10 (512 bit w...
request()=default
the default constructor
uint8_t get_cache() const
get the AxCACHE value as POD
uint8_t get_prot() const
set the AxPROT value as POD, only values from 0...7 are allowed
void set_prot(uint8_t)
set the AxPROT value as POD, only values from 0...7 are allowed
void set_stash_nid(uint8_t)
set the raw AWSTASHNID value
uint8_t get_size() const
set the AxSIZE value of the transaction
resp_e get_resp() const
get the response status as POD
void set_okay()
set the response status to OKAY
response & operator=(const response &o)
assignment operator
void set_decerr()
set the response status to DECERR
bool is_decerr() const
check if the response status is DECERR
void set_resp(resp_e)
set the response status as POD
bool is_exokay() const
check if the response status is EXOKAY
bool is_slverr() const
check if the response status is SLVERR
void set_slverr()
set the response status to SLVERR
bool is_okay() const
check if the response status is OKAY
void reset()
reset all data member to their default
static tlm::tlm_response_status to_tlm_response_status(resp_e)
converts a
void set_exokay()
set the response status to EXOKAY
static resp_e from_tlm_response_status(tlm::tlm_response_status)
converts the response status of a generic payload to a