diff --git a/DRAMSys/library/resources/scripts/createTraceDB.sql b/DRAMSys/library/resources/scripts/createTraceDB.sql index 1ba6c3aa..f9ac86ae 100644 --- a/DRAMSys/library/resources/scripts/createTraceDB.sql +++ b/DRAMSys/library/resources/scripts/createTraceDB.sql @@ -58,8 +58,9 @@ CREATE TABLE Transactions( Burstlength INTEGER, TThread INTEGER, TChannel INTEGER, - TBank INTEGER, + TRank INTEGER, TBankgroup INTEGER, + TBank INTEGER, TRow INTEGER, TColumn INTEGER, DataStrobeBegin INTEGER, diff --git a/DRAMSys/library/src/common/TlmRecorder.cpp b/DRAMSys/library/src/common/TlmRecorder.cpp index 1ee81838..d18320e3 100644 --- a/DRAMSys/library/src/common/TlmRecorder.cpp +++ b/DRAMSys/library/src/common/TlmRecorder.cpp @@ -272,7 +272,7 @@ void TlmRecorder::setUpTransactionTerminatingPhases() void TlmRecorder::prepareSqlStatements() { insertTransactionString = - "INSERT INTO Transactions VALUES (:id,:rangeID,:address,:burstlength,:thread,:channel,:bank,:bankgroup,:row,:column,:dataStrobeBegin,:dataStrobeEnd, :timeOfGeneration,:command)"; + "INSERT INTO Transactions VALUES (:id,:rangeID,:address,:burstlength,:thread,:channel,:rank,:bankgroup,:bank,:row,:column,:dataStrobeBegin,:dataStrobeEnd, :timeOfGeneration,:command)"; insertRangeString = "INSERT INTO Ranges VALUES (:id,:begin,:end)"; updateRangeString = "UPDATE Ranges SET End = :end WHERE ID = :id"; updateDataStrobeString = @@ -359,20 +359,22 @@ void TlmRecorder::insertTransactionInDB(Transaction &recordingData) sqlite3_bind_int(insertTransactionStatement, 6, recordingData.dramExtension.getChannel().ID()); sqlite3_bind_int(insertTransactionStatement, 7, - recordingData.dramExtension.getBank().ID()); + recordingData.dramExtension.getRank().ID()); sqlite3_bind_int(insertTransactionStatement, 8, recordingData.dramExtension.getBankGroup().ID()); sqlite3_bind_int(insertTransactionStatement, 9, - recordingData.dramExtension.getRow().ID()); + recordingData.dramExtension.getBank().ID()); sqlite3_bind_int(insertTransactionStatement, 10, + recordingData.dramExtension.getRow().ID()); + sqlite3_bind_int(insertTransactionStatement, 11, recordingData.dramExtension.getColumn().ID()); - sqlite3_bind_int64(insertTransactionStatement, 11, - recordingData.timeOnDataStrobe.start.value()); sqlite3_bind_int64(insertTransactionStatement, 12, - recordingData.timeOnDataStrobe.end.value()); + recordingData.timeOnDataStrobe.start.value()); sqlite3_bind_int64(insertTransactionStatement, 13, + recordingData.timeOnDataStrobe.end.value()); + sqlite3_bind_int64(insertTransactionStatement, 14, recordingData.timeOfGeneration.value()); - sqlite3_bind_text(insertTransactionStatement, 14, + sqlite3_bind_text(insertTransactionStatement, 15, recordingData.cmd.c_str(), recordingData.cmd.length(), NULL); executeSqlStatement(insertTransactionStatement); diff --git a/DRAMSys/traceAnalyzer/businessObjects/transaction.cpp b/DRAMSys/traceAnalyzer/businessObjects/transaction.cpp index 9bdec5f5..306141fd 100644 --- a/DRAMSys/traceAnalyzer/businessObjects/transaction.cpp +++ b/DRAMSys/traceAnalyzer/businessObjects/transaction.cpp @@ -39,11 +39,11 @@ using namespace std; Transaction::Transaction(ID id, unsigned int address, unsigned int burstlength, - unsigned int thread, unsigned int channel, unsigned int bank, - unsigned int bankgroup, unsigned int row, unsigned int column, Timespan span, - Timespan spanOnDataStrobe) - : address(address), burstlength(burstlength), thread(thread), channel(channel), - bank(bank), bankgroup(bankgroup), row(row), column(column), span(span), + unsigned int thread, unsigned int channel, unsigned int rank, + unsigned int bankgroup, unsigned int bank, unsigned int row, unsigned int column, + Timespan span, Timespan spanOnDataStrobe) + : address(address), burstlength(burstlength), thread(thread), channel(channel), rank(rank), + bankgroup(bankgroup), bank(bank), row(row), column(column), span(span), spanOnDataStrobe(spanOnDataStrobe), id(id) {} void Transaction::addPhase(shared_ptr phase) diff --git a/DRAMSys/traceAnalyzer/businessObjects/transaction.h b/DRAMSys/traceAnalyzer/businessObjects/transaction.h index 767c4f48..d58a7c56 100644 --- a/DRAMSys/traceAnalyzer/businessObjects/transaction.h +++ b/DRAMSys/traceAnalyzer/businessObjects/transaction.h @@ -48,8 +48,8 @@ typedef unsigned int ID; class Transaction { private: - unsigned int address, burstlength, thread, channel, bank, bankgroup, row, - column; + unsigned int address, burstlength, thread, channel, rank, + bankgroup, bank, row, column; Timespan span; Timespan spanOnDataStrobe; ID id; @@ -57,9 +57,9 @@ private: public: Transaction(ID id, unsigned int address, unsigned int burstlength, - unsigned int thread, unsigned int channel, unsigned int bank, - unsigned int bankgroup, unsigned int row, unsigned int column, Timespan span, - Timespan spanOnDataStrobe); + unsigned int thread, unsigned int channel, unsigned int rank, + unsigned int bankgroup, unsigned int bank, unsigned int row, unsigned int column, + Timespan span, Timespan spanOnDataStrobe); void draw(QPainter *painter, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, bool highlight, @@ -85,14 +85,18 @@ public: { return channel; } - unsigned int Bank() const + unsigned int Rank() const { - return bank; + return rank; } unsigned int BankGroup() const { return bankgroup; } + unsigned int Bank() const + { + return bank; + } unsigned int Row() const { return row; diff --git a/DRAMSys/traceAnalyzer/data/QueryTexts.h b/DRAMSys/traceAnalyzer/data/QueryTexts.h index aeccca6d..96aab29e 100644 --- a/DRAMSys/traceAnalyzer/data/QueryTexts.h +++ b/DRAMSys/traceAnalyzer/data/QueryTexts.h @@ -46,7 +46,7 @@ struct TransactionQueryTexts { TransactionQueryTexts() { queryHead = - "SELECT Transactions.ID AS TransactionID, Ranges.begin, Ranges.end,DataStrobeBegin,DataStrobeEnd, Address,Burstlength, TThread, TChannel, TBank,TBankgroup, TRow, TColumn,Phases.ID AS PhaseID, PhaseName, PhaseBegin, PhaseEnd " + "SELECT Transactions.ID AS TransactionID, Ranges.begin, Ranges.end,DataStrobeBegin,DataStrobeEnd, Address,Burstlength, TThread, TChannel, TRank, TBankgroup, TBank, TRow, TColumn,Phases.ID AS PhaseID, PhaseName, PhaseBegin, PhaseEnd " " FROM Transactions INNER JOIN Phases ON Phases.Transact = Transactions.ID INNER JOIN Ranges ON Transactions.Range = Ranges.ID "; selectTransactionsByTimespan = queryHead + diff --git a/DRAMSys/traceAnalyzer/data/tracedb.cpp b/DRAMSys/traceAnalyzer/data/tracedb.cpp index 37ed9857..326db059 100644 --- a/DRAMSys/traceAnalyzer/data/tracedb.cpp +++ b/DRAMSys/traceAnalyzer/data/tracedb.cpp @@ -346,22 +346,23 @@ vector> TraceDB::parseTransactionsFromQuery( currentID = id; Timespan span(query.value(1).toLongLong(), query.value(2).toLongLong()); Timespan spanOnStrobe(query.value(3).toLongLong(), query.value(4).toLongLong()); - unsigned int address = query.value(5).toInt(); + unsigned int address = query.value(5).toInt(); unsigned int burstlength = query.value(6).toInt(); unsigned int thread = query.value(7).toInt(); unsigned int channel = query.value(8).toInt(); - unsigned int bank = query.value(9).toInt(); - unsigned int bankgroup = query.value(10).toInt(); - unsigned int row = query.value(11).toInt(); - unsigned int column = query.value(12).toInt(); - result.push_back(shared_ptr(new Transaction(id, address, - burstlength, thread, channel, bank, bankgroup, row, column, span, - spanOnStrobe))); + unsigned int rank = query.value(9).toInt(); + unsigned int bankgroup = query.value(10).toInt(); + unsigned int bank = query.value(11).toInt(); + unsigned int row = query.value(12).toInt(); + unsigned int column = query.value(13).toInt(); + result.push_back(shared_ptr(new Transaction(id, address, burstlength, + thread, channel, rank, bankgroup, bank, row, column, + span, spanOnStrobe))); } - unsigned int phaseID = query.value(13).toInt(); - QString phaseName = query.value(14).toString(); - Timespan span(query.value(15).toLongLong(), query.value(16).toLongLong()); + unsigned int phaseID = query.value(14).toInt(); + QString phaseName = query.value(15).toString(); + Timespan span(query.value(16).toLongLong(), query.value(17).toLongLong()); result.at(result.size() - 1)->addPhase(PhaseFactory::CreatePhase(phaseID, phaseName, span, result.at(result.size() - 1), *this)); } diff --git a/DRAMSys/traceAnalyzer/presentation/transactiontreewidget.cpp b/DRAMSys/traceAnalyzer/presentation/transactiontreewidget.cpp index 49211af4..1809d53b 100644 --- a/DRAMSys/traceAnalyzer/presentation/transactiontreewidget.cpp +++ b/DRAMSys/traceAnalyzer/presentation/transactiontreewidget.cpp @@ -101,8 +101,9 @@ TransactionTreeWidget::TransactionTreeItem::TransactionTreeItem( this->addChild(new QTreeWidgetItem( {"Lenght", prettyFormatTime(transaction->Span().timeCovered())})); this->addChild(new QTreeWidgetItem( {"Channel", QString::number(transaction->Channel())})); - this->addChild(new QTreeWidgetItem( {"Bank", QString::number(transaction->Bank())} )); + this->addChild(new QTreeWidgetItem( {"Rank", QString::number(transaction->Rank())} )); this->addChild(new QTreeWidgetItem( {"Bankgroup", QString::number(transaction->BankGroup())} )); + this->addChild(new QTreeWidgetItem( {"Bank", QString::number(transaction->Bank())} )); this->addChild(new QTreeWidgetItem( {"Row", QString::number(transaction->Row())} )); this->addChild(new QTreeWidgetItem( {"Column", QString::number(transaction->Column())} )); this->addChild(new QTreeWidgetItem( {"Address", QString("0x") + QString::number(transaction->Address(), 16)} ));