32 #ifndef __SIMPLE_LT_INITIATOR2_DMI_H__
33 #define __SIMPLE_LT_INITIATOR2_DMI_H__
36 #include "tlm_utils/simple_initiator_socket.h"
58 unsigned int nrOfTransactions = 0x5,
59 unsigned int baseAddress = 0x0) :
94 trans.set_data_ptr(
reinterpret_cast<unsigned char*
>(&
mData));
95 trans.set_data_length(4);
96 trans.set_streaming_width(4);
97 trans.set_dmi_allowed(
false);
107 std::cout <<
name() <<
": Send write request: A = 0x"
108 << std::hex << (
unsigned int)trans.get_address()
109 <<
", D = 0x" <<
mData << std::dec
113 std::cout <<
name() <<
": Send read request: A = 0x"
114 << std::hex << (
unsigned int)trans.get_address() << std::dec
122 std::cout <<
name() <<
": Received error response @ "
126 std::cout <<
name() <<
": Received ok response";
128 std::cout <<
": D = 0x" << std::hex <<
mData << std::dec;
168 if((trans.get_address() < dmi_data.first.get_start_address()) ||
169 (trans.get_address() > dmi_data.first.get_end_address()) )
173 socket->get_direct_mem_ptr(trans,
175 trans.set_address(address);
178 if (dmi_data.second &&
179 (trans.get_address() >= dmi_data.first.get_start_address()) &&
180 (trans.get_address() <= dmi_data.first.get_end_address()) )
186 sc_dt::uint64 tmp = trans.get_address() - dmi_data.first.get_start_address();
189 *(
unsigned int*)&dmi_data.first.get_dmi_ptr()[tmp] =
mData;
193 mData = *(
unsigned int*)&dmi_data.first.get_dmi_ptr()[tmp];
200 wait(dmi_data.first.get_write_latency());
203 wait(dmi_data.first.get_read_latency());
237 std::cout <<
name() <<
", <<SimpleLTInitiator1>>:" << std::endl
239 unsigned char data[32];
247 unsigned int n =
socket->transport_dbg(trans);
249 std::cout <<
"Mem @" << std::hex <<
mBaseAddress << std::endl;
266 for (
unsigned int i=0;
i<
n;
i+=4)
268 for (
int k=e_start;
k!=e_end;
k+=e_increment)
270 std::cout << std::setw(2) << std::setfill(
'0')
275 std::cout << std::endl;
284 std::cout <<
"OK: debug transaction didn't give data." << std::endl;
286 std::cout << std::dec << std::endl;