Go to the documentation of this file.
38 #ifndef __MEM_MEM_CHECKER_HH__
39 #define __MEM_MEM_CHECKER_HH__
44 #include <unordered_map>
50 #include "debug/MemChecker.hh"
51 #include "params/MemChecker.hh"
185 std::unordered_map<Serial, Transaction>
writes;
205 :
Named((parent != NULL ? parent->
name() :
"") +
319 template <
class TList>
328 for (--it; it !=
l->begin() && it->complete >= before; --it);
517 "starting read: serial = %d, start = %d, addr = %#llx, "
520 for (
size_t i = 0;
i < size; ++
i) {
531 "starting write: serial = %d, start = %d, addr = %#llx, "
534 for (
size_t i = 0;
i < size; ++
i) {
546 "completing write: serial = %d, complete = %d, "
547 "addr = %#llx, size = %d\n", serial, complete,
addr, size);
549 for (
size_t i = 0;
i < size; ++
i) {
558 "aborting write: serial = %d, addr = %#llx, size = %d\n",
561 for (
size_t i = 0;
i < size; ++
i) {
566 #endif // __MEM_MEM_CHECKER_HH__
void startRead(Serial serial, Tick start)
Starts a read transaction.
const std::vector< uint8_t > & lastExpectedData() const
This function returns the expected data that inExpectedData iterated through in the last call.
void abortWrite(Serial serial, Addr addr, size_t size)
Aborts a previously started write transaction.
void abortWrite(Serial serial)
Aborts a write transaction.
static const uint8_t DATA_INITIAL
Initial data value.
std::list< Transaction > TransactionList
void abortWrite(Serial serial)
Aborts a write transaction.
std::map< Serial, Transaction > outstandingReads
Maintains a map of Serial -> Transaction for all outstanding reads.
uint8_t data
Depending on the memory operation, the data value either represents: for writes, the value written up...
void completeWrite(Serial serial, Tick complete)
Completes a write transaction.
The WriteCluster class captures sets of writes where all writes are overlapping with at least one oth...
uint64_t Tick
Tick count type.
ByteTracker * getByteTracker(Addr addr)
Returns the instance of ByteTracker for the requested location.
void startWrite(Serial serial, Tick start, uint8_t data)
Starts a write transaction.
const std::string & getErrorMessage() const
In completeRead, if an error is encountered, this does not print nor cause an error,...
TList::iterator lastCompletedTransaction(TList *l, Tick before)
Helper function to return an iterator to the entry of a container of Transaction compatible classes,...
void startWrite(Serial serial, Tick _start, uint8_t data)
Starts a write transaction.
void completeWrite(Serial serial, Tick _complete)
Completes a write transaction.
MemChecker(const MemCheckerParams *p)
static const Serial SERIAL_INITIAL
Initial serial.
The ByteTracker keeps track of transactions for the same byte – all outstanding reads,...
std::unordered_map< Serial, Transaction > writes
Map of Serial --> Transaction of all writes in cluster; contains all, in-flight or already completed.
void reset()
Resets the entire checker.
Tick start
Start of earliest write in cluster.
std::string errorMessage
Detailed error message of the last violation in completeRead.
WriteClusterList writeClusters
List of write clusters for this address.
Serial startWrite(Tick start, Addr addr, size_t size, const uint8_t *data)
Starts a write transaction.
TransactionList readObservations
List of completed reads, i.e.
Serial serial
Unique identifying serial.
bool completeRead(Serial serial, Tick complete, uint8_t data)
Completes a read transaction that is still outstanding.
static const Tick TICK_INITIAL
The initial tick the system starts with.
bool inExpectedData(Tick start, Tick complete, uint8_t data)
Given a start and end time (of any read transaction), this function iterates through all data that su...
Tick complete
Completion tick.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
bool operator<(const Transaction &rhs) const
Orders Transactions for use with std::map.
std::list< WriteCluster > WriteClusterList
void completeWrite(Serial serial, Tick complete, Addr addr, size_t size)
Completes a previously started write transaction.
Transaction(Serial _serial, Tick _start, Tick _complete, uint8_t _data=DATA_INITIAL)
The Transaction class captures the lifetimes of read and write operations, and the values they consum...
static const Tick TICK_FUTURE
The maximum value that curTick() could ever return.
void pruneTransactions()
Prunes no longer needed transactions.
Serial startRead(Tick start, Addr addr, size_t size)
Starts a read transaction.
std::unordered_map< Addr, ByteTracker > byte_trackers
Maintain a map of address --> byte-tracker.
WriteCluster * getIncompleteWriteCluster()
Convenience function to return the most recent incomplete write cluster.
ByteTracker(Addr addr=0, const MemChecker *parent=NULL)
Tick complete
Completion of last write in cluster.
const std::string & name() const
std::vector< uint8_t > _lastExpectedData
See lastExpectedData().
Serial nextSerial
Next distinct serial to be assigned to the next transaction to be started.
bool completeRead(Serial serial, Tick complete, Addr addr, size_t size, uint8_t *data)
Completes a previously started read transaction.
std::string csprintf(const char *format, const Args &...args)
uint64_t Serial
The Serial type is used to be able to uniquely identify a transaction as it passes through the system...
Abstract superclass for simulation objects.
Generated on Wed Sep 30 2020 14:02:13 for gem5 by doxygen 1.8.17