18 #include <interfaces/tilelink/tl_tlm.h> 
   22 const std::array<std::string, 3> cmd_str{
"R", 
"W", 
"I"};
 
   25 template <> 
const char* to_char<opcode_e>(
opcode_e v) {
 
   29     case opcode_e::AccessAckData:
 
   30         return "AccessAckData";
 
   31     case opcode_e::PutFullData:
 
   33     case opcode_e::PutPartialData:
 
   34         return "PutPartialData";
 
   35     case opcode_e::AccessAck:
 
   37     case opcode_e::ArithmeticData:
 
   38         return "ArithmeticData";
 
   39     case opcode_e::LogicalData:
 
   41     case opcode_e::Intent:
 
   43     case opcode_e::HintAck:
 
   45     case opcode_e::AcquireBlock:
 
   46         return "AcquireBlock";
 
   47     case opcode_e::AcquirePerm:
 
   51     case opcode_e::GrantData:
 
   53     case opcode_e::GrantAck:
 
   55     case opcode_e::ProbeBlock:
 
   57     case opcode_e::ProbePerm:
 
   59     case opcode_e::ProbeAck:
 
   61     case opcode_e::ProbeAckData:
 
   62         return "ProbeAckData";
 
   63     case opcode_e::Release:
 
   65     case opcode_e::ReleaseData:
 
   67     case opcode_e::ReleaseAck:
 
   74 std::ostream& 
operator<<(std::ostream& os, 
const tlm::tlm_generic_payload& t) {
 
   75     os << 
"CMD:" << cmd_str[t.get_command()] << 
", " 
   76        << 
"ADDR:0x" << std::hex << t.get_address() << 
", TXLEN:0x" << t.get_data_length();
 
   79            << 
"PROT:0x" << std::hex << static_cast<unsigned>(e->get_protection()) << 
"NSE:" << (e->is_nse() ? 
"True" : 
"False");
 
   81     os << 
" [ptr:" << &t << 
"]";
 
std::ostream & operator<<(std::ostream &stream, const std::vector< T > &vector)
a print function for a vector
TLM2.0 components modeling APB.
opcode_e
opcodes of Tilelink.. The encode the opcode (opcode_e[2:0]) and the applicable channels (opcode_e[8] ...