Code refactoring.
This commit is contained in:
@@ -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<int64_t>(totalNumTransactions - 1));
|
||||
sqlite3_bind_int64(insertGeneralInfoStatement, 1, static_cast<int64_t>(totalNumTransactions));
|
||||
sqlite3_bind_int64(insertGeneralInfoStatement, 2, static_cast<int64_t>(simulationTimeCoveredByRecording.value()));
|
||||
sqlite3_bind_int(insertGeneralInfoStatement, 3, static_cast<int>(Configuration::getInstance().memSpec->numberOfRanks));
|
||||
sqlite3_bind_int(insertGeneralInfoStatement, 4, static_cast<int>(Configuration::getInstance().memSpec->numberOfBankGroups));
|
||||
@@ -421,7 +425,7 @@ void TlmRecorder::insertTransactionInDB(Transaction &recordingData)
|
||||
sqlite3_bind_int64(insertTransactionStatement, 14,
|
||||
static_cast<int64_t>(recordingData.timeOfGeneration.value()));
|
||||
sqlite3_bind_text(insertTransactionStatement, 15,
|
||||
recordingData.cmd.c_str(), static_cast<int>(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;
|
||||
|
||||
@@ -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<Transaction> recordedData;
|
||||
std::map<tlm::tlm_generic_payload *, Transaction> currentTransactionsInSystem;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user