Code refactoring.

This commit is contained in:
Lukas Steiner
2021-05-28 16:01:22 +02:00
parent d023ebf128
commit 834e10efde
2 changed files with 18 additions and 14 deletions

View File

@@ -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;

View File

@@ -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;