Go to the documentation of this file.
38 #ifndef CPU_TESTERS_PROTOCOL_TESTER_TESTER_THREAD_HH_
39 #define CPU_TESTERS_PROTOCOL_TESTER_TESTER_THREAD_HH_
95 void setDesc(std::string _description) {
desc = _description; }
97 const std::string
name()
const override {
return desc; }
116 return "Tester deadlock check";
207 std::stringstream&
ss)
const;
ProtocolTester::GMTokenPort * tokenPort
TesterThreadParams Params
void setDesc(std::string _description)
DeadlockCheckEvent deadlockCheckEvent
virtual void issueLoadOps()=0
OutstandingReq(int _lane, Location _loc, Value _val, Cycles _cycle)
virtual void issueAtomicOps()=0
ProtocolTester::SeqPort * port
virtual void issueReleaseOp()=0
virtual void hitCallback(PacketPtr pkt)=0
std::vector< Episode * > EpisodeHistory
const Episode::Action * curAction
OutstandingReqTable outstandingAtomics
TesterThreadEvent threadEvent
const std::string name() const override
virtual void issueStoreOps()=0
TesterThreadEvent(TesterThread *_thread, std::string _description)
const std::string name() const override
EpisodeHistory episodeHistory
Cycles is a wrapper class for representing cycle counts, i.e.
void attachTesterThreadToPorts(ProtocolTester *_tester, ProtocolTester::SeqPort *_port, ProtocolTester::GMTokenPort *_tokenPort=nullptr, ProtocolTester::SeqPort *_sqcPort=nullptr, ProtocolTester::SeqPort *_scalarPort=nullptr)
const std::string & getName() const
OutstandingReqTable outstandingStores
OutstandingReq popOutstandingReq(OutstandingReqTable &req_table, Addr address)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void validateLoadResp(Location loc, int lane, Value ret_val)
virtual void issueAcquireOp()=0
ProtocolTester::SeqPort * sqcPort
std::vector< OutstandingReq > OutstandingReqList
static const int INVALID_VALUE
int getTesterThreadId() const
void printOutstandingReqs(const OutstandingReqTable &table, std::stringstream &ss) const
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
AddressManager::Location Location
AddressManager * addrManager
ProtocolTester::SeqPort * scalarPort
DeadlockCheckEvent(TesterThread *_thread)
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
void addOutstandingReqs(OutstandingReqTable &req_table, Addr addr, int lane, Location loc, Value stored_val=AddressManager::INVALID_VALUE)
OutstandingReqTable outstandingLoads
void scheduleDeadlockCheckEvent()
void printAllOutstandingReqs(std::stringstream &ss) const
bool checkDRF(Location atomic_loc, Location loc, bool isStore) const
static const Priority CPU_Tick_Pri
CPU ticks must come after other associated CPU events (such as writebacks).
void validateAtomicResp(Location loc, int lane, Value ret_val)
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
std::unordered_map< Addr, OutstandingReqList > OutstandingReqTable
TesterThread(const Params &p)
AddressManager::Value Value
Generated on Tue Sep 21 2021 12:25:09 for gem5 by doxygen 1.8.17