Added ranks to tdb files and TraceAnalyzer.

This commit is contained in:
Lukas Steiner
2019-09-18 18:24:10 +02:00
parent 330b07d0e7
commit b918f0f9ea
7 changed files with 42 additions and 33 deletions

View File

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

View File

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

View File

@@ -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> phase)

View File

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

View File

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

View File

@@ -346,22 +346,23 @@ vector<shared_ptr<Transaction>> 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<Transaction>(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<Transaction>(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));
}

View File

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