7 template <>
struct value_converter<
tlm::tlm_phase> {
8 static value to_value(tlm::tlm_phase
const& v) {
9 if(v == tlm::UNINITIALIZED_PHASE)
10 return "tlm::UNINITIALIZED_PHASE";
11 if(v == tlm::BEGIN_REQ)
12 return "tlm::BEGIN_REQ";
14 return "tlm::END_REQ";
15 if(v == tlm::BEGIN_RESP)
16 return "tlm::BEGIN_RESP";
17 if(v == tlm::END_RESP)
18 return "tlm::END_RESP";
19 return value(
"ILLEGAL");
22 template <>
struct value_converter<
tlm::tlm_sync_enum> {
23 static value to_value(tlm::tlm_sync_enum v) {
25 case tlm::TLM_ACCEPTED:
26 return value(
"tlm::TLM_ACCEPTED");
27 case tlm::TLM_UPDATED:
28 return value(
"tlm::TLM_UPDATED");
29 case tlm::TLM_COMPLETED:
30 return value(
"tlm::TLM_COMPLETED");
32 return value(
"ILLEGAL");
36 template <>
struct value_converter<
tlm::tlm_command> {
37 static value to_value(tlm::tlm_command v) {
39 case tlm::TLM_READ_COMMAND:
40 return value(
"tlm::TLM_READ_COMMAND");
41 case tlm::TLM_WRITE_COMMAND:
42 return value(
"tlm::TLM_WRITE_COMMAND");
43 case tlm::TLM_IGNORE_COMMAND:
44 return value(
"tlm::TLM_IGNORE_COMMAND");
46 return value(
"ILLEGAL");
50 template <>
struct value_converter<
tlm::tlm_response_status> {
51 static value to_value(tlm::tlm_response_status v) {
53 case tlm::TLM_OK_RESPONSE:
54 return value(
"tlm::TLM_OK_RESPONSE");
55 case tlm::TLM_INCOMPLETE_RESPONSE:
56 return value(
"tlm::TLM_INCOMPLETE_RESPONSE");
57 case tlm::TLM_GENERIC_ERROR_RESPONSE:
58 return value(
"tlm::TLM_GENERIC_ERROR_RESPONSE");
59 case tlm::TLM_ADDRESS_ERROR_RESPONSE:
60 return value(
"tlm::TLM_ADDRESS_ERROR_RESPONSE");
61 case tlm::TLM_COMMAND_ERROR_RESPONSE:
62 return value(
"tlm::TLM_COMMAND_ERROR_RESPONSE");
63 case tlm::TLM_BURST_ERROR_RESPONSE:
64 return value(
"tlm::TLM_BURST_ERROR_RESPONSE");
65 case tlm::TLM_BYTE_ENABLE_ERROR_RESPONSE:
66 return value(
"tlm::TLM_BYTE_ENABLE_ERROR_RESPONSE");
68 return value(
"ILLEGAL");
72 template <>
struct value_converter<
tlm::tlm_gp_option> {
73 static value to_value(tlm::tlm_gp_option v) {
75 case tlm::TLM_MIN_PAYLOAD:
76 return value(
"tlm::TLM_MIN_PAYLOAD");
77 case tlm::TLM_FULL_PAYLOAD:
78 return value(
"tlm::TLM_FULL_PAYLOAD");
79 case tlm::TLM_FULL_PAYLOAD_ACCEPTED:
80 return value(
"tlm::TLM_FULL_PAYLOAD_ACCEPTED");
82 return value(
"ILLEGAL");
86 template <>
struct value_converter<
tlm::tlm_dmi::dmi_access_e> {
87 static value to_value(tlm::tlm_dmi::dmi_access_e v) {
89 case tlm::tlm_dmi::DMI_ACCESS_NONE:
90 return value(
"tlm::DMI_ACCESS_NONE");
91 case tlm::tlm_dmi::DMI_ACCESS_READ:
92 return value(
"tlm::DMI_ACCESS_READ");
93 case tlm::tlm_dmi::DMI_ACCESS_WRITE:
94 return value(
"tlm::DMI_ACCESS_WRITE");
95 case tlm::tlm_dmi::DMI_ACCESS_READ_WRITE:
96 return value(
"tlm::DMI_ACCESS_READ_WRITE");
98 return value(
"ILLEGAL");
103 template <
class Archive>
void record(Archive& ar, tlm::tlm_dmi
const& u) {
104 ar& field(
"start_address", u.get_start_address()) & field(
"end_address", u.get_end_address()) & field(
"access", u.get_granted_access());
106 template <
class Archive>
void record(Archive& ar, tlm::tlm_generic_payload
const& u) {
107 ar& field(
"command", u.get_command());
108 ar& field(
"address", u.get_address());
110 ar& field(
"data_length", u.get_data_length());
111 if(u.get_data_length() && u.get_data_ptr()) {
113 std::copy(u.get_data_ptr(), u.get_data_ptr() + std::min(u.get_data_length(), 8U),
reinterpret_cast<uint8_t*
>(&data));
114 ar& field(
"data", data);
116 ar& field(
"response_status", u.get_response_status());
117 ar& field(
"streaming_width", u.get_streaming_width());
119 ar& field(
"byte_enable_length", u.get_byte_enable_length());
120 ar& field(
"dmi_allowed", u.is_dmi_allowed());
121 ar& field(
"gp_option", u.get_gp_option());