diff --git a/DRAMSys/library/src/common/TlmRecorder.cpp b/DRAMSys/library/src/common/TlmRecorder.cpp index 8a42044d..319fe53d 100644 --- a/DRAMSys/library/src/common/TlmRecorder.cpp +++ b/DRAMSys/library/src/common/TlmRecorder.cpp @@ -47,7 +47,7 @@ using namespace tlm; TlmRecorder::TlmRecorder(const std::string &name, const std::string &dbName) : - name(name), totalNumTransactions(1), simulationTimeCoveredByRecording(SC_ZERO_TIME) + name(name), totalNumTransactions(0), simulationTimeCoveredByRecording(SC_ZERO_TIME) { recordedData.reserve(transactionCommitRate); setUpTransactionTerminatingPhases(); @@ -118,11 +118,14 @@ void TlmRecorder::recordPhase(tlm_generic_payload &trans, std::string phaseBeginPrefix = "BEGIN_"; std::string phaseEndPrefix = "END_"; - if (phaseName.find(phaseBeginPrefix) != std::string::npos) { + if (phaseName.find(phaseBeginPrefix) != std::string::npos) + { phaseName.erase(0, phaseBeginPrefix.length()); assert(currentTransactionsInSystem.count(&trans) != 0); currentTransactionsInSystem[&trans].insertPhase(phaseName, time); - } else { + } + else + { phaseName.erase(0, phaseEndPrefix.length()); assert(currentTransactionsInSystem.count(&trans) != 0); currentTransactionsInSystem[&trans].setPhaseEnd(phaseName, time); @@ -156,22 +159,23 @@ void TlmRecorder::recordDebugMessage(const std::string &message, const sc_time & void TlmRecorder::introduceTransactionSystem(tlm_generic_payload &trans) { - uint64_t id = totalNumTransactions++; - currentTransactionsInSystem[&trans].id = id; + totalNumTransactions++; + currentTransactionsInSystem[&trans].id = totalNumTransactions; currentTransactionsInSystem[&trans].cmd = trans.get_command() == - tlm::TLM_READ_COMMAND ? "R" : "W"; + tlm::TLM_READ_COMMAND ? 'R' : 'W'; currentTransactionsInSystem[&trans].address = trans.get_address(); currentTransactionsInSystem[&trans].burstLength = DramExtension::getBurstLength(trans); currentTransactionsInSystem[&trans].dramExtension = DramExtension::getExtension(trans); currentTransactionsInSystem[&trans].timeOfGeneration = GenerationExtension::getTimeOfGeneration(trans); - PRINTDEBUGMESSAGE(name, "New transaction #" + std::to_string(id) + " generation time " + + PRINTDEBUGMESSAGE(name, "New transaction #" + std::to_string(totalNumTransactions) + " generation time " + currentTransactionsInSystem[&trans].timeOfGeneration.to_string()); - if (id % transactionCommitRate == 0) + if (totalNumTransactions % transactionCommitRate == 0) { PRINTDEBUGMESSAGE(name, "Committing transactions " + - std::to_string(id - transactionCommitRate + 1) + " - " + std::to_string(id)); + std::to_string(totalNumTransactions - transactionCommitRate + 1) + + " - " + std::to_string(totalNumTransactions)); commitRecordedDataToDB(); } } @@ -333,7 +337,7 @@ void TlmRecorder::insertDebugMessageInDB(const std::string &message, const sc_ti void TlmRecorder::insertGeneralInfo() { - sqlite3_bind_int64(insertGeneralInfoStatement, 1, static_cast(totalNumTransactions - 1)); + sqlite3_bind_int64(insertGeneralInfoStatement, 1, static_cast(totalNumTransactions)); sqlite3_bind_int64(insertGeneralInfoStatement, 2, static_cast(simulationTimeCoveredByRecording.value())); sqlite3_bind_int(insertGeneralInfoStatement, 3, static_cast(Configuration::getInstance().memSpec->numberOfRanks)); sqlite3_bind_int(insertGeneralInfoStatement, 4, static_cast(Configuration::getInstance().memSpec->numberOfBankGroups)); @@ -421,7 +425,7 @@ void TlmRecorder::insertTransactionInDB(Transaction &recordingData) sqlite3_bind_int64(insertTransactionStatement, 14, static_cast(recordingData.timeOfGeneration.value())); sqlite3_bind_text(insertTransactionStatement, 15, - recordingData.cmd.c_str(), static_cast(recordingData.cmd.length()), nullptr); + &recordingData.cmd, 1, nullptr); executeSqlStatement(insertTransactionStatement); } @@ -478,7 +482,7 @@ void TlmRecorder::closeConnection() insertGeneralInfo(); insertCommandLengths(); PRINTDEBUGMESSAGE(name, "Number of transactions written to DB: " - + std::to_string(totalNumTransactions - 1)); + + std::to_string(totalNumTransactions)); PRINTDEBUGMESSAGE(name, "tlmPhaseRecorder:\tEnd Recording"); sqlite3_close(db); db = nullptr; diff --git a/DRAMSys/library/src/common/TlmRecorder.h b/DRAMSys/library/src/common/TlmRecorder.h index 37bf787b..aeeb8ce1 100644 --- a/DRAMSys/library/src/common/TlmRecorder.h +++ b/DRAMSys/library/src/common/TlmRecorder.h @@ -92,7 +92,7 @@ private: uint64_t id; uint64_t address; unsigned int burstLength; - std::string cmd; + char cmd; DramExtension dramExtension; sc_time timeOfGeneration; TimeInterval timeOnDataStrobe; @@ -132,7 +132,7 @@ private: uint64_t transactionID); void insertDebugMessageInDB(const std::string &message, const sc_time &time); - static const int transactionCommitRate = 1000; + static constexpr unsigned transactionCommitRate = 1024; std::vector recordedData; std::map currentTransactionsInSystem;