38#ifndef __MEM_RUBY_PROTOCOL_CHI_TLM_CONTROLLER_HH__
39#define __MEM_RUBY_PROTOCOL_CHI_TLM_CONTROLLER_HH__
41#include <ARM/TLM/arm_chi.h>
44#include "mem/ruby/protocol/CHI/CHIDataType.hh"
45#include "mem/ruby/protocol/CHI/CHIRequestType.hh"
46#include "mem/ruby/protocol/CHI/CHIResponseType.hh"
47#include "mem/ruby/protocol/RequestStatus.hh"
48#include "mem/ruby/protocol/WriteMask.hh"
49#include "params/TlmController.hh"
98 std::function<void(ARM::CHI::Payload* payload, ARM::CHI::Phase* phase)>
bw;
105 void sendMsg(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase);
106 using CHIGenericController::sendRequestMsg;
107 void sendRequestMsg(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase);
108 using CHIGenericController::sendResponseMsg;
109 void sendResponseMsg(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase);
110 void sendCompAck(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase);
111 using CHIGenericController::sendDataMsg;
112 void sendDataMsg(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase);
114 Addr reqAddr(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase)
const;
115 Addr reqSize(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase)
const;
129 ARM::CHI::Payload &_payload,
130 ARM::CHI::Phase &_phase);
134 ARM::CHI::Payload &_payload,
135 ARM::CHI::Phase &_phase);
140 panic(
"Unimplemented");
ClockedObjectParams Params
Parameters of ClockedObject.
CHI::CHIRequestMsg CHIRequestMsg
CHI::CHIDataMsg CHIDataMsg
CHI::CHIResponseMsg CHIResponseMsg
The tlm::chi::CacheController is a ruby CacheController which acts as a bridge between the AMBA TLM 2...
bool recvRequestMsg(const CHIRequestMsg *msg) override
void sendResponseMsg(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase)
Addr reqSize(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase) const
bool recvDataMsg(const CHIDataMsg *msg) override
void pCreditGrant(const CHIResponseMsg *msg)
bool recvSnoopMsg(const CHIRequestMsg *msg) override
void sendCompAck(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase)
void sendMsg(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase)
bool recvResponseMsg(const CHIResponseMsg *msg) override
void sendDataMsg(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase)
void sendRequestMsg(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase)
Addr reqAddr(ARM::CHI::Payload &payload, ARM::CHI::Phase &phase) const
std::function< void(ARM::CHI::Payload *payload, ARM::CHI::Phase *phase)> bw
Set this to send data upstream.
std::unordered_map< uint16_t, std::unique_ptr< Transaction > > pendingTransactions
#define panic(...)
This implements a cprintf based panic() function.
Copyright (c) 2024 Arm Limited All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
bool handle(const CHIResponseMsg *msg) override
bool handle(const CHIDataMsg *msg) override
bool forward(const CHIDataMsg *msg)
ARM::CHI::Payload * payload
CacheController * controller
Transaction(CacheController *parent, ARM::CHI::Payload &_payload, ARM::CHI::Phase &_phase)
static std::unique_ptr< Transaction > gen(CacheController *parent, ARM::CHI::Payload &_payload, ARM::CHI::Phase &_phase)
virtual bool handle(const CHIDataMsg *msg)
bool handle(const CHIResponseMsg *msg) override