Add new commands and DB fields on TA side.
This commit is contained in:
@@ -38,40 +38,48 @@
|
||||
|
||||
struct CommandLengths
|
||||
{
|
||||
unsigned NOP;
|
||||
unsigned RD;
|
||||
unsigned WR;
|
||||
unsigned RDA;
|
||||
unsigned WRA;
|
||||
unsigned ACT;
|
||||
unsigned PRE;
|
||||
unsigned REFB;
|
||||
unsigned PRESB;
|
||||
unsigned REFSB;
|
||||
unsigned RFMSB;
|
||||
unsigned PREA;
|
||||
unsigned REFA;
|
||||
unsigned RFMAB;
|
||||
unsigned PDEA;
|
||||
unsigned PDXA;
|
||||
unsigned PDEP;
|
||||
unsigned PDXP;
|
||||
unsigned SREFEN;
|
||||
unsigned SREFEX;
|
||||
unsigned NOP = 1;
|
||||
unsigned RD = 1;
|
||||
unsigned WR = 1;
|
||||
unsigned RDA = 1;
|
||||
unsigned WRA = 1;
|
||||
unsigned ACT = 1;
|
||||
unsigned PREPB = 1;
|
||||
unsigned REFPB = 1;
|
||||
unsigned RFMPB = 1;
|
||||
unsigned REFP2B = 1;
|
||||
unsigned RFMP2B = 1;
|
||||
unsigned PRESB = 1;
|
||||
unsigned REFSB = 1;
|
||||
unsigned RFMSB = 1;
|
||||
unsigned PREAB = 1;
|
||||
unsigned REFAB = 1;
|
||||
unsigned RFMAB = 1;
|
||||
unsigned PDEA = 1;
|
||||
unsigned PDXA = 1;
|
||||
unsigned PDEP = 1;
|
||||
unsigned PDXP = 1;
|
||||
unsigned SREFEN = 1;
|
||||
unsigned SREFEX = 1;
|
||||
|
||||
CommandLengths(unsigned NOP, unsigned RD, unsigned WR,
|
||||
unsigned RDA, unsigned WRA, unsigned ACT,
|
||||
unsigned PRE, unsigned REFB, unsigned PRESB,
|
||||
unsigned REFSB, unsigned RFMSB, unsigned PREA,
|
||||
unsigned REFA, unsigned RFMAB, unsigned PDEA,
|
||||
unsigned PDXA, unsigned PDEP, unsigned PDXP,
|
||||
unsigned PREPB, unsigned REFPB, unsigned RFMPB,
|
||||
unsigned REFP2B, unsigned RFMP2B,
|
||||
unsigned PRESB, unsigned REFSB, unsigned RFMSB,
|
||||
unsigned PREAB, unsigned REFAB, unsigned RFMAB,
|
||||
unsigned PDEA, unsigned PDXA, unsigned PDEP, unsigned PDXP,
|
||||
unsigned SREFEN, unsigned SREFEX) :
|
||||
NOP(NOP), RD(RD), WR(WR), RDA(RDA), WRA(WRA), ACT(ACT), PRE(PRE),
|
||||
REFB(REFB), PRESB(PRESB), REFSB(REFSB), RFMSB(RFMSB), PREA(PREA),
|
||||
REFA(REFA), RFMAB(RFMAB), PDEA(PDEA), PDXA(PDXA), PDEP(PDEP),
|
||||
PDXP(PDXP), SREFEN(SREFEN), SREFEX(SREFEX) {}
|
||||
NOP(NOP), RD(RD), WR(WR),
|
||||
RDA(RDA), WRA(WRA), ACT(ACT),
|
||||
PREPB(PREPB), REFPB(REFPB), RFMPB(RFMPB),
|
||||
REFP2B(REFP2B), RFMP2B(RFMP2B),
|
||||
PRESB(PRESB), REFSB(REFSB), RFMSB(RFMSB),
|
||||
PREAB(PREAB), REFAB(REFAB), RFMAB(RFMAB),
|
||||
PDEA(PDEA), PDXA(PDXA), PDEP(PDEP), PDXP(PDXP),
|
||||
SREFEN(SREFEN), SREFEX(SREFEX) {}
|
||||
|
||||
CommandLengths() {}
|
||||
CommandLengths() = default;
|
||||
};
|
||||
|
||||
#endif // COMMANDLENGTHS_H
|
||||
|
||||
@@ -38,36 +38,44 @@
|
||||
|
||||
#ifndef GENERALINFO_H
|
||||
#define GENERALINFO_H
|
||||
|
||||
#include "timespan.h"
|
||||
#include <QString>
|
||||
|
||||
struct GeneralInfo
|
||||
{
|
||||
public:
|
||||
unsigned int numberOfTransactions;
|
||||
unsigned int numberOfPhases;
|
||||
Timespan span;
|
||||
unsigned int numberOfRanks;
|
||||
unsigned int numberOfBankgroups;
|
||||
unsigned int numberOfBanks;
|
||||
unsigned int banksPerRank;
|
||||
unsigned int groupsPerRank;
|
||||
unsigned int banksPerGroup;
|
||||
QString unitOfTime;
|
||||
unsigned int clkPeriod;
|
||||
unsigned int windowSize;
|
||||
unsigned int controllerThread;
|
||||
uint64_t numberOfTransactions = 0;
|
||||
uint64_t numberOfPhases = 0;
|
||||
Timespan span = 0;
|
||||
unsigned int numberOfRanks = 1;
|
||||
unsigned int numberOfBankGroups = 1;
|
||||
unsigned int numberOfBanks = 1;
|
||||
unsigned int banksPerRank = 1;
|
||||
unsigned int groupsPerRank = 1;
|
||||
unsigned int banksPerGroup = 1;
|
||||
QString description = "empty";
|
||||
QString unitOfTime = "PS";
|
||||
uint64_t clkPeriod = 1000;
|
||||
uint64_t windowSize = 0;
|
||||
unsigned int refreshMaxPostponed = 0;
|
||||
unsigned int refreshMaxPulledin = 0;
|
||||
uint64_t controllerThread = UINT64_MAX;
|
||||
unsigned int maxBufferDepth = 8;
|
||||
unsigned int per2BankOffset = 1;
|
||||
|
||||
GeneralInfo(unsigned int numberOfTransactions, unsigned int numberOfPhases, Timespan span,
|
||||
GeneralInfo() = default;
|
||||
GeneralInfo(uint64_t numberOfTransactions, uint64_t numberOfPhases, Timespan span,
|
||||
unsigned int numberOfRanks, unsigned int numberOfBankgroups, unsigned int numberOfBanks,
|
||||
QString unitOfTime, unsigned int clkPeriod, unsigned int windowSize, unsigned int controllerThread)
|
||||
: numberOfTransactions(numberOfTransactions), numberOfPhases(numberOfPhases), span(span),
|
||||
numberOfRanks(numberOfRanks), numberOfBankgroups(numberOfBankgroups), numberOfBanks(numberOfBanks),
|
||||
banksPerRank(numberOfBanks / numberOfRanks), groupsPerRank(numberOfBankgroups / numberOfRanks),
|
||||
banksPerGroup(numberOfBanks / numberOfBankgroups), unitOfTime(unitOfTime), clkPeriod(clkPeriod),
|
||||
windowSize(windowSize), controllerThread(controllerThread)
|
||||
{
|
||||
}
|
||||
QString description, QString unitOfTime, uint64_t clkPeriod, uint64_t windowSize,
|
||||
unsigned int refreshMaxPostponed, unsigned int refreshMaxPulledin,
|
||||
uint64_t controllerThread, unsigned int maxBufferDepth, unsigned int per2BankOffset) :
|
||||
numberOfTransactions(numberOfTransactions) , numberOfPhases(numberOfPhases), span(span),
|
||||
numberOfRanks(numberOfRanks), numberOfBankGroups(numberOfBankgroups), numberOfBanks(numberOfBanks),
|
||||
banksPerRank(numberOfBanks / numberOfRanks), groupsPerRank(numberOfBankgroups / numberOfRanks),
|
||||
banksPerGroup(numberOfBanks / numberOfBankgroups), description(std::move(description)),
|
||||
unitOfTime(std::move(unitOfTime)), clkPeriod(clkPeriod), windowSize(windowSize),
|
||||
refreshMaxPostponed(refreshMaxPostponed), refreshMaxPulledin(refreshMaxPulledin),
|
||||
controllerThread(controllerThread), maxBufferDepth(maxBufferDepth), per2BankOffset(per2BankOffset) {}
|
||||
};
|
||||
|
||||
#endif // GENERALINFO_H
|
||||
|
||||
@@ -43,8 +43,6 @@
|
||||
#include "businessObjects/transaction.h"
|
||||
#include <cmath>
|
||||
|
||||
using namespace std;
|
||||
|
||||
void Phase::draw(QPainter *painter, const QwtScaleMap &xMap,
|
||||
const QwtScaleMap &yMap, const QRectF &canvasRect, bool highlight,
|
||||
const TraceDrawingProperties &drawingProperties) const
|
||||
@@ -179,20 +177,16 @@ void Phase::drawPhaseDependencies(traceTime begin, traceTime end, double y,
|
||||
|
||||
QColor Phase::getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
{
|
||||
switch (drawingProperties.colorGrouping) {
|
||||
case ColorGrouping::PhaseType:
|
||||
return getPhaseColor();
|
||||
break;
|
||||
case ColorGrouping::Thread:
|
||||
return ColorGenerator::getColor(static_cast<unsigned int>(transaction.lock()->thread));
|
||||
break;
|
||||
case ColorGrouping::AlphaTransaction:
|
||||
return ColorGenerator::getAlphaColored(transaction.lock()->id);
|
||||
|
||||
break;
|
||||
case ColorGrouping::Transaction:
|
||||
default:
|
||||
return ColorGenerator::getColor(transaction.lock()->id);
|
||||
switch (drawingProperties.colorGrouping)
|
||||
{
|
||||
case ColorGrouping::PhaseType:
|
||||
return getPhaseColor();
|
||||
case ColorGrouping::Thread:
|
||||
return ColorGenerator::getColor(static_cast<unsigned int>(transaction.lock()->thread));
|
||||
case ColorGrouping::AlphaTransaction:
|
||||
return ColorGenerator::getAlphaColored(transaction.lock()->id);
|
||||
case ColorGrouping::Transaction: default:
|
||||
return ColorGenerator::getColor(transaction.lock()->id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,13 +246,22 @@ std::vector<std::shared_ptr<TracePlotLine>> Phase::getTracePlotLines(const Trace
|
||||
return drawingProperties.getBankLinesGroupwise(transaction.lock()->rank,
|
||||
transaction.lock()->bank % drawingProperties.banksPerGroup);
|
||||
}
|
||||
else if (getGranularity() == Granularity::TwoBankwise)
|
||||
{
|
||||
unsigned int firstGroup = transaction.lock()->bank / drawingProperties.banksPerGroup;
|
||||
unsigned int firstBank = transaction.lock()->bank % drawingProperties.banksPerGroup;
|
||||
unsigned int secondGroup = (transaction.lock()->bank + drawingProperties.per2BankOffset)
|
||||
/ drawingProperties.banksPerGroup;
|
||||
unsigned int secondBank = (transaction.lock()->bank + drawingProperties.per2BankOffset)
|
||||
% drawingProperties.banksPerGroup;
|
||||
return drawingProperties.getBankLinesTwoBankwise(transaction.lock()->rank, firstGroup, firstBank, secondGroup,
|
||||
secondBank);
|
||||
}
|
||||
else // if (getGranularity() == Granularity::Bankwise)
|
||||
{
|
||||
return drawingProperties.getBankLines(transaction.lock()->rank,
|
||||
transaction.lock()->bankgroup % drawingProperties.groupsPerRank,
|
||||
transaction.lock()->bank
|
||||
% drawingProperties.banksPerRank
|
||||
% drawingProperties.banksPerGroup);
|
||||
transaction.lock()->bank % drawingProperties.banksPerGroup);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ protected:
|
||||
|
||||
virtual std::vector<std::shared_ptr<TracePlotLine>> getTracePlotLines(const TraceDrawingProperties &drawingProperties) const;
|
||||
|
||||
enum class Granularity {Bankwise, Groupwise, Rankwise};
|
||||
enum class Granularity {Bankwise, TwoBankwise, Groupwise, Rankwise};
|
||||
|
||||
virtual Granularity getGranularity() const
|
||||
{
|
||||
@@ -121,15 +121,15 @@ class REQ : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(1);
|
||||
}
|
||||
virtual QString Name() const final
|
||||
QString Name() const final
|
||||
{
|
||||
return "REQ";
|
||||
}
|
||||
virtual std::vector<std::shared_ptr<TracePlotLine>> getTracePlotLines(const TraceDrawingProperties &drawingProperties) const
|
||||
std::vector<std::shared_ptr<TracePlotLine>> getTracePlotLines(const TraceDrawingProperties &drawingProperties) const
|
||||
override
|
||||
{
|
||||
return drawingProperties.getRequestLines();
|
||||
@@ -142,22 +142,22 @@ class RESP : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(1);
|
||||
}
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "RESP";
|
||||
}
|
||||
virtual std::vector<std::shared_ptr<TracePlotLine>> getTracePlotLines(const TraceDrawingProperties &drawingProperties) const
|
||||
std::vector<std::shared_ptr<TracePlotLine>> getTracePlotLines(const TraceDrawingProperties &drawingProperties) const
|
||||
override
|
||||
{
|
||||
return drawingProperties.getResponseLines();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
class PREB: public Phase
|
||||
{
|
||||
public:
|
||||
@@ -172,19 +172,19 @@ protected:
|
||||
return "PREB";
|
||||
}
|
||||
};
|
||||
|
||||
class PRE : public Phase
|
||||
*/
|
||||
class PREPB : public Phase
|
||||
{
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(1);
|
||||
}
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "PRE";
|
||||
return "PREPB";
|
||||
}
|
||||
};
|
||||
|
||||
@@ -193,7 +193,7 @@ class PRESB : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "PRESB";
|
||||
}
|
||||
@@ -201,49 +201,49 @@ protected:
|
||||
{
|
||||
return {span.Begin()};
|
||||
}
|
||||
virtual QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
override
|
||||
{
|
||||
Q_UNUSED(drawingProperties) return getPhaseColor();
|
||||
}
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(1);
|
||||
}
|
||||
virtual Granularity getGranularity() const override
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::Groupwise;
|
||||
}
|
||||
};
|
||||
|
||||
class PREA : public Phase
|
||||
class PREAB : public Phase
|
||||
{
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "PREA";
|
||||
return "PREAB";
|
||||
}
|
||||
virtual std::vector<traceTime> getTimesOnCommandBus() const
|
||||
{
|
||||
return {span.Begin()};
|
||||
}
|
||||
virtual QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
override
|
||||
{
|
||||
Q_UNUSED(drawingProperties) return getPhaseColor();
|
||||
}
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(10);
|
||||
}
|
||||
virtual Granularity getGranularity() const override
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
class ACTB : public Phase
|
||||
{
|
||||
public:
|
||||
@@ -258,17 +258,17 @@ protected:
|
||||
return "ACTB";
|
||||
}
|
||||
};
|
||||
|
||||
*/
|
||||
class ACT : public Phase
|
||||
{
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(3);
|
||||
}
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "ACT";
|
||||
}
|
||||
@@ -279,11 +279,11 @@ class RD : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(4);
|
||||
}
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "RD";
|
||||
}
|
||||
@@ -294,11 +294,11 @@ class RDA : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(5);
|
||||
}
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "RDA";
|
||||
}
|
||||
@@ -309,11 +309,11 @@ class WR : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(6);
|
||||
}
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "WR";
|
||||
}
|
||||
@@ -324,11 +324,11 @@ class WRA : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(7);
|
||||
}
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "WRA";
|
||||
}
|
||||
@@ -339,7 +339,7 @@ class AUTO_REFRESH : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "REF";
|
||||
}
|
||||
@@ -347,12 +347,12 @@ protected:
|
||||
{
|
||||
return {span.Begin()};
|
||||
}
|
||||
virtual QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
override
|
||||
{
|
||||
Q_UNUSED(drawingProperties) return getPhaseColor();
|
||||
}
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
QColor phaseColor = QColor(Qt::darkCyan);
|
||||
phaseColor.setAlpha(130);
|
||||
@@ -360,16 +360,16 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
class REFA : public AUTO_REFRESH
|
||||
class REFAB : public AUTO_REFRESH
|
||||
{
|
||||
public:
|
||||
using AUTO_REFRESH::AUTO_REFRESH;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "REFA";
|
||||
return "REFAB";
|
||||
}
|
||||
virtual Granularity getGranularity() const override
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
@@ -380,15 +380,15 @@ class RFMAB : public AUTO_REFRESH
|
||||
public:
|
||||
using AUTO_REFRESH::AUTO_REFRESH;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "RFMAB";
|
||||
}
|
||||
virtual Granularity getGranularity() const override
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
QColor phaseColor = QColor(Qt::darkRed);
|
||||
phaseColor.setAlpha(130);
|
||||
@@ -397,14 +397,50 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
class REFB : public AUTO_REFRESH
|
||||
class REFPB : public AUTO_REFRESH
|
||||
{
|
||||
public:
|
||||
using AUTO_REFRESH::AUTO_REFRESH;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "REFB";
|
||||
return "REFPB";
|
||||
}
|
||||
};
|
||||
|
||||
class REFP2B : public AUTO_REFRESH
|
||||
{
|
||||
public:
|
||||
using AUTO_REFRESH::AUTO_REFRESH;
|
||||
protected:
|
||||
QString Name() const override
|
||||
{
|
||||
return "REFP2B";
|
||||
}
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::TwoBankwise;
|
||||
}
|
||||
};
|
||||
|
||||
class RFMP2B : public AUTO_REFRESH
|
||||
{
|
||||
public:
|
||||
using AUTO_REFRESH::AUTO_REFRESH;
|
||||
protected:
|
||||
QString Name() const override
|
||||
{
|
||||
return "RFMP2B";
|
||||
}
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::TwoBankwise;
|
||||
}
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
QColor phaseColor = QColor(Qt::darkRed);
|
||||
phaseColor.setAlpha(130);
|
||||
return phaseColor;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -413,11 +449,11 @@ class REFSB : public AUTO_REFRESH
|
||||
public:
|
||||
using AUTO_REFRESH::AUTO_REFRESH;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "REFSB";
|
||||
}
|
||||
virtual Granularity getGranularity() const override
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::Groupwise;
|
||||
}
|
||||
@@ -428,15 +464,15 @@ class RFMSB : public AUTO_REFRESH
|
||||
public:
|
||||
using AUTO_REFRESH::AUTO_REFRESH;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "RFMSB";
|
||||
}
|
||||
virtual Granularity getGranularity() const override
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::Groupwise;
|
||||
}
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
QColor phaseColor = QColor(Qt::darkRed);
|
||||
phaseColor.setAlpha(130);
|
||||
@@ -449,24 +485,24 @@ class PDNAB : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "PDNAB";
|
||||
}
|
||||
virtual Qt::BrushStyle getBrushStyle() const override
|
||||
Qt::BrushStyle getBrushStyle() const override
|
||||
{
|
||||
return Qt::Dense6Pattern;
|
||||
}
|
||||
virtual QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
override
|
||||
{
|
||||
Q_UNUSED(drawingProperties) return getPhaseColor();
|
||||
}
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return QColor(Qt::black);
|
||||
return {Qt::black};
|
||||
}
|
||||
virtual Phase::PhaseSymbol getPhaseSymbol() const override
|
||||
Phase::PhaseSymbol getPhaseSymbol() const override
|
||||
{
|
||||
return PhaseSymbol::Rect;
|
||||
}
|
||||
@@ -477,11 +513,11 @@ class PDNA : public PDNAB
|
||||
public:
|
||||
using PDNAB::PDNAB;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "PDNA";
|
||||
}
|
||||
virtual Granularity getGranularity() const override
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
@@ -492,24 +528,24 @@ class PDNPB : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "PDNPB";
|
||||
}
|
||||
virtual Qt::BrushStyle getBrushStyle() const override
|
||||
Qt::BrushStyle getBrushStyle() const override
|
||||
{
|
||||
return Qt::Dense4Pattern;
|
||||
}
|
||||
virtual QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
override
|
||||
{
|
||||
Q_UNUSED(drawingProperties) return getPhaseColor();
|
||||
}
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return QColor(Qt::black);
|
||||
return {Qt::black};
|
||||
}
|
||||
virtual Phase::PhaseSymbol getPhaseSymbol() const override
|
||||
Phase::PhaseSymbol getPhaseSymbol() const override
|
||||
{
|
||||
return PhaseSymbol::Rect;
|
||||
}
|
||||
@@ -520,11 +556,11 @@ class PDNP : public PDNPB
|
||||
public:
|
||||
using PDNPB::PDNPB;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "PDNP";
|
||||
}
|
||||
virtual Granularity getGranularity() const override
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
@@ -535,24 +571,24 @@ class SREFB : public Phase
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "SREFB";
|
||||
}
|
||||
virtual Qt::BrushStyle getBrushStyle() const override
|
||||
Qt::BrushStyle getBrushStyle() const override
|
||||
{
|
||||
return Qt::Dense1Pattern;
|
||||
}
|
||||
virtual QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
QColor getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
override
|
||||
{
|
||||
Q_UNUSED(drawingProperties) return getPhaseColor();
|
||||
}
|
||||
virtual QColor getPhaseColor() const override
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return QColor(Qt::black);
|
||||
return {Qt::black};
|
||||
}
|
||||
virtual Phase::PhaseSymbol getPhaseSymbol() const override
|
||||
Phase::PhaseSymbol getPhaseSymbol() const override
|
||||
{
|
||||
return PhaseSymbol::Rect;
|
||||
}
|
||||
@@ -563,11 +599,11 @@ class SREF : public SREFB
|
||||
public:
|
||||
using SREFB::SREFB;
|
||||
protected:
|
||||
virtual QString Name() const override
|
||||
QString Name() const override
|
||||
{
|
||||
return "SREF";
|
||||
}
|
||||
virtual Granularity getGranularity() const override
|
||||
Granularity getGranularity() const override
|
||||
{
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
|
||||
@@ -42,81 +42,88 @@
|
||||
#include "data/tracedb.h"
|
||||
#include "businessObjects/timespan.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
shared_ptr<Phase> PhaseFactory::CreatePhase(ID id, const QString &dbPhaseName,
|
||||
const Timespan &span, const shared_ptr<Transaction> &trans, TraceDB &database)
|
||||
std::shared_ptr<Phase> PhaseFactory::CreatePhase(ID id, const QString &dbPhaseName,
|
||||
const Timespan &span, const std::shared_ptr<Transaction> &trans,
|
||||
TraceDB &database)
|
||||
{
|
||||
traceTime clk = database.getGeneralInfo().clkPeriod;
|
||||
const CommandLengths &cl = database.getCommandLengths();
|
||||
|
||||
if (dbPhaseName == "REQ")
|
||||
return shared_ptr<Phase>(new REQ(id, span, clk, trans, {}, std::shared_ptr<Timespan>()));
|
||||
return std::shared_ptr<Phase>(new REQ(id, span, clk, trans, {}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RESP")
|
||||
return shared_ptr<Phase>(new RESP(id, span, clk, trans, {}, std::shared_ptr<Timespan>()));
|
||||
|
||||
else if (dbPhaseName == "PREB")
|
||||
return std::shared_ptr<Phase>(new RESP(id, span, clk, trans, {}, std::shared_ptr<Timespan>()));
|
||||
/*else if (dbPhaseName == "PREB")
|
||||
return shared_ptr<Phase>(new PREB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PRE")
|
||||
return shared_ptr<Phase>(new PRE(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PRE)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "ACTB")
|
||||
return shared_ptr<Phase>(new ACTB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk)}, std::shared_ptr<Timespan>()));
|
||||
{Timespan(span.Begin(), span.Begin() + clk)}, std::shared_ptr<Timespan>()));*/
|
||||
else if (dbPhaseName == "PREPB" || dbPhaseName == "PRE") // for backwards compatibility
|
||||
return std::shared_ptr<Phase>(new PREPB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PREPB)}, std::shared_ptr<Timespan>()));
|
||||
/*else if (dbPhaseName == "ACTB")
|
||||
return std::shared_ptr<Phase>(new ACTB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk)}, std::shared_ptr<Timespan>()));*/
|
||||
else if (dbPhaseName == "ACT")
|
||||
return shared_ptr<Phase>(new ACT(id, span, clk, trans,
|
||||
return std::shared_ptr<Phase>(new ACT(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.ACT)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PREA")
|
||||
return shared_ptr<Phase>(new PREA(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PREA)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFA")
|
||||
return shared_ptr<Phase>(new REFA(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFA)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PREAB" || dbPhaseName == "PREA") // for backwards compatibility
|
||||
return std::shared_ptr<Phase>(new PREAB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PREAB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFAB" || dbPhaseName == "REFA") // for backwards compatibility
|
||||
return std::shared_ptr<Phase>(new REFAB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFAB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RFMAB")
|
||||
return shared_ptr<Phase>(new RFMAB(id, span, clk, trans,
|
||||
return std::shared_ptr<Phase>(new RFMAB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.RFMAB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFB")
|
||||
return shared_ptr<Phase>(new REFB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFPB" || dbPhaseName == "REFB") // for backwards compatibility
|
||||
return std::shared_ptr<Phase>(new REFPB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFPB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RFMPB")
|
||||
return std::shared_ptr<Phase>(new REFPB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.RFMPB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFP2B")
|
||||
return std::shared_ptr<Phase>(new REFP2B(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFP2B)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RFMP2B")
|
||||
return std::shared_ptr<Phase>(new REFP2B(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.RFMP2B)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PRESB")
|
||||
return shared_ptr<Phase>(new PRESB(id, span, clk, trans,
|
||||
return std::shared_ptr<Phase>(new PRESB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PRESB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFSB")
|
||||
return shared_ptr<Phase>(new REFSB(id, span, clk, trans,
|
||||
return std::shared_ptr<Phase>(new REFSB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFSB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RFMSB")
|
||||
return shared_ptr<Phase>(new RFMSB(id, span, clk, trans,
|
||||
return std::shared_ptr<Phase>(new RFMSB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.RFMSB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RD")
|
||||
return shared_ptr<Phase>(new RD(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RD)},
|
||||
return std::shared_ptr<Phase>(new RD(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RD)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->spanOnDataStrobe))));
|
||||
else if (dbPhaseName == "RDA")
|
||||
return shared_ptr<Phase>(new RDA(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RDA)},
|
||||
return std::shared_ptr<Phase>(new RDA(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RDA)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->spanOnDataStrobe))));
|
||||
else if (dbPhaseName == "WR")
|
||||
return shared_ptr<Phase>(new WR(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WR)},
|
||||
return std::shared_ptr<Phase>(new WR(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WR)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->spanOnDataStrobe))));
|
||||
else if (dbPhaseName == "WRA")
|
||||
return shared_ptr<Phase>(new WRA(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WRA)},
|
||||
return std::shared_ptr<Phase>(new WRA(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WRA)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->spanOnDataStrobe))));
|
||||
else if (dbPhaseName == "PDNA")
|
||||
return shared_ptr<Phase>(new PDNA(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEA),
|
||||
return std::shared_ptr<Phase>(new PDNA(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEA),
|
||||
Timespan(span.End() - clk * cl.PDXA, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PDNAB")
|
||||
return shared_ptr<Phase>(new PDNAB(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
return std::shared_ptr<Phase>(new PDNAB(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
Timespan(span.End() - clk, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PDNP")
|
||||
return shared_ptr<Phase>(new PDNP(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEP),
|
||||
return std::shared_ptr<Phase>(new PDNP(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEP),
|
||||
Timespan(span.End() - clk * cl.PDXP, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PDNPB")
|
||||
return shared_ptr<Phase>(new PDNPB(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
return std::shared_ptr<Phase>(new PDNPB(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
Timespan(span.End() - clk, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "SREF")
|
||||
return shared_ptr<Phase>(new SREF(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.SREFEN),
|
||||
return std::shared_ptr<Phase>(new SREF(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.SREFEN),
|
||||
Timespan(span.End() - clk * cl.SREFEX, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "SREFB")
|
||||
return shared_ptr<Phase>(new SREFB(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
return std::shared_ptr<Phase>(new SREFB(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
Timespan(span.End() - clk, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else
|
||||
throw std::runtime_error("DB phasename " + dbPhaseName.toStdString() + " unkown to phasefactory");
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
#ifndef PHASEFACTORY_H
|
||||
#define PHASEFACTORY_H
|
||||
|
||||
#include "phase.h"
|
||||
#include <QStringList>
|
||||
#include <memory>
|
||||
@@ -46,9 +47,8 @@ class TraceDB;
|
||||
|
||||
class PhaseFactory
|
||||
{
|
||||
private:
|
||||
PhaseFactory();
|
||||
public:
|
||||
PhaseFactory() = delete;
|
||||
static std::shared_ptr<Phase> CreatePhase(ID id, const QString &dbPhaseName,
|
||||
const Timespan &span, const std::shared_ptr<Transaction> &trans,
|
||||
TraceDB &database);
|
||||
|
||||
@@ -52,14 +52,13 @@
|
||||
//define symbol printqueries if all queries should be printed to the console
|
||||
//#define printqueries
|
||||
|
||||
using namespace std;
|
||||
|
||||
TraceDB::TraceDB(QString path, bool openExisting)
|
||||
{
|
||||
this->pathToDB = path;
|
||||
|
||||
database = QSqlDatabase::database(path);
|
||||
if (database.isValid() && database.isOpen()) {
|
||||
if (database.isValid() && database.isOpen())
|
||||
{
|
||||
// Close the database connection if it exists and was not closed yet.
|
||||
database.removeDatabase(path);
|
||||
database.close();
|
||||
@@ -132,7 +131,7 @@ void TraceDB::refreshData()
|
||||
|
||||
//QueryText must select the fields
|
||||
//TransactionID, Ranges.begin, Ranges.end, Address, TThread, TChannel, TBank, TRow, TColumn, Phases.ID AS PhaseID, PhaseName, PhaseBegin, PhaseEnd
|
||||
vector<shared_ptr<Transaction>> TraceDB::getTransactionsWithCustomQuery(
|
||||
std::vector<std::shared_ptr<Transaction>> TraceDB::getTransactionsWithCustomQuery(
|
||||
QString queryText)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
@@ -141,7 +140,7 @@ vector<shared_ptr<Transaction>> TraceDB::getTransactionsWithCustomQuery(
|
||||
return parseTransactionsFromQuery(query);
|
||||
}
|
||||
|
||||
vector<shared_ptr<Transaction>> TraceDB::getTransactionsInTimespan(const Timespan &span, bool updateVisiblePhases)
|
||||
std::vector<std::shared_ptr<Transaction>> TraceDB::getTransactionsInTimespan(const Timespan &span, bool updateVisiblePhases)
|
||||
{
|
||||
selectTransactionsByTimespan.bindValue(":begin", span.Begin());
|
||||
selectTransactionsByTimespan.bindValue(":end", span.End());
|
||||
@@ -170,7 +169,7 @@ void TraceDB::updateDependenciesInTimespan(const Timespan &span)
|
||||
}
|
||||
|
||||
//TODO Remove exception
|
||||
shared_ptr<Transaction> TraceDB::getTransactionByID(ID id)
|
||||
std::shared_ptr<Transaction> TraceDB::getTransactionByID(ID id)
|
||||
{
|
||||
selectTransactionById.bindValue(":id", id);
|
||||
executeQuery(selectTransactionById);
|
||||
@@ -183,12 +182,11 @@ shared_ptr<Transaction> TraceDB::getTransactionByID(ID id)
|
||||
}
|
||||
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextActivate(traceTime time)
|
||||
std::shared_ptr<Transaction> TraceDB::getNextActivate(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName "
|
||||
"IN ('ACT','ACTB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName = 'ACT' ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":traceTime", time);
|
||||
@@ -196,12 +194,12 @@ shared_ptr<Transaction> TraceDB::getNextActivate(traceTime time)
|
||||
return parseTransactionFromQuery(query);
|
||||
}
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextPrecharge(traceTime time)
|
||||
std::shared_ptr<Transaction> TraceDB::getNextPrecharge(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName "
|
||||
"IN ('PRE','PREA','PREB','PRESB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
"IN ('PRE','PREPB','PREA','PREAB','PRESB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":traceTime", time);
|
||||
@@ -233,12 +231,12 @@ shared_ptr<Transaction> TraceDB::getNextPrecharge(traceTime time)
|
||||
// return parseTransactionFromQuery(query);
|
||||
// }
|
||||
|
||||
shared_ptr<Transaction> TraceDB::getNextRefresh(traceTime time)
|
||||
std::shared_ptr<Transaction> TraceDB::getNextRefresh(traceTime time)
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
QString queryText = queryTexts.queryHead +
|
||||
"WHERE PhaseBegin > :traceTime AND PhaseName "
|
||||
"IN ('REFA','REFB','REFSB','SREF','SREFB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
"IN ('REFAB','REFA','REFB','REFPB','REFP2B','REFSB','SREF','SREFB') ORDER BY PhaseBegin ASC LIMIT 1";
|
||||
query.prepare(queryText);
|
||||
query.bindValue(":traceTime", time);
|
||||
executeQuery(query);
|
||||
@@ -278,92 +276,187 @@ ID TraceDB::getTransactionIDFromPhaseID(ID phaseID)
|
||||
if (query.next()) {
|
||||
return query.value(0).toInt();
|
||||
} else {
|
||||
throw sqlException("Phase with ID " + to_string(phaseID) + " not in db",
|
||||
throw sqlException("Phase with ID " + std::to_string(phaseID) + " not in db",
|
||||
this->pathToDB.toStdString());
|
||||
}
|
||||
}
|
||||
|
||||
GeneralInfo *TraceDB::getGeneralInfoFromDB()
|
||||
GeneralInfo TraceDB::getGeneralInfoFromDB()
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
query.prepare("SELECT NumberOfTransactions, TraceEnd, NumberOfRanks, NumberOfBankgroups, NumberOfBanks, Clk, "
|
||||
"UnitOfTime, Traces, Memspec, MCconfig, WindowSize, ControllerThread FROM GeneralInfo");
|
||||
executeQuery(query);
|
||||
QVariant parameter;
|
||||
parameter = getParameterFromTable("NumberOfTransactions", "GeneralInfo");
|
||||
uint64_t numberOfTransactions = parameter.isValid() ? parameter.toULongLong() : 0;
|
||||
parameter = getParameterFromTable("TraceEnd", "GeneralInfo");
|
||||
traceTime traceEnd = parameter.isValid() ? parameter.toULongLong() : 0;
|
||||
parameter = getParameterFromTable("NumberOfRanks", "GeneralInfo");
|
||||
unsigned numberOfRanks = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("NumberOfBankgroups", "GeneralInfo");
|
||||
unsigned numberOfBankGroups = parameter.isValid() ? parameter.toUInt() : numberOfRanks;
|
||||
parameter = getParameterFromTable("NumberOfBanks", "GeneralInfo");
|
||||
unsigned numberOfBanks = parameter.isValid() ? parameter.toUInt() : numberOfBankGroups;
|
||||
parameter = getParameterFromTable("Clk", "GeneralInfo");
|
||||
uint64_t clkPeriod = parameter.isValid() ? parameter.toULongLong() : 1000;
|
||||
parameter = getParameterFromTable("UnitOfTime", "GeneralInfo");
|
||||
QString unitOfTime = parameter.isValid() ? parameter.toString() : "PS";
|
||||
parameter = getParameterFromTable("Traces", "GeneralInfo");
|
||||
QString traces = parameter.isValid() ? "Traces: " + parameter.toString() : "Traces: empty";
|
||||
parameter = getParameterFromTable("Memspec", "GeneralInfo");
|
||||
QString memspec = parameter.isValid() ? "Memspec: " + parameter.toString() : "Memspec: empty";
|
||||
parameter = getParameterFromTable("MCconfig", "GeneralInfo");
|
||||
QString mcconfig = parameter.isValid() ? "MCconfig: " + parameter.toString() : "MCconfig: empty";
|
||||
parameter = getParameterFromTable("WindowSize", "GeneralInfo");
|
||||
uint64_t windowSize = parameter.isValid() ? parameter.toULongLong() : 0;
|
||||
parameter = getParameterFromTable("RefreshMaxPostponed", "GeneralInfo");
|
||||
unsigned refreshMaxPostponed = parameter.isValid() ? parameter.toUInt() : 0;
|
||||
parameter = getParameterFromTable("RefreshMaxPulledin", "GeneralInfo");
|
||||
unsigned refreshMaxPulledin = parameter.isValid() ? parameter.toUInt() : 0;
|
||||
parameter = getParameterFromTable("ControllerThread", "GeneralInfo");
|
||||
uint64_t controllerThread = parameter.isValid() ? parameter.toULongLong() : UINT64_MAX;
|
||||
parameter = getParameterFromTable("MaxBufferDepth", "GeneralInfo");
|
||||
unsigned maxBufferDepth = parameter.isValid() ? parameter.toUInt() : 8;
|
||||
parameter = getParameterFromTable("Per2BankOffset", "GeneralInfo");
|
||||
unsigned per2BankOffset = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
|
||||
if (query.next()) {
|
||||
unsigned int numberOfTransactions = query.value(0).toInt();
|
||||
traceTime traceEnd = query.value(1).toLongLong();
|
||||
unsigned int numberOfRanks = query.value(2).toInt();
|
||||
unsigned int numberOfBankgroups = query.value(3).toInt();
|
||||
unsigned int numberOfBanks = query.value(4).toInt();
|
||||
unsigned int clkPeriod = query.value(5).toInt();
|
||||
QString unitOfTime = query.value(6).toString();
|
||||
unsigned int numberOfPhases = getNumberOfPhases();
|
||||
uint64_t numberOfPhases = getNumberOfPhases();
|
||||
|
||||
QString traces = "Traces: " + query.value(7).toString();
|
||||
QString memspec = "Memspec: " + query.value(8).toString();
|
||||
QString mcconfig = "MCconfig: " + query.value(9).toString();
|
||||
unsigned int windowSize = query.value(10).toInt();
|
||||
unsigned int controllerThread = query.value(11).toUInt();
|
||||
QString description = (traces + "\n");
|
||||
description += mcconfig + "\n";
|
||||
description += memspec + "\n";
|
||||
description += "Number of Transactions: " + QString::number(numberOfTransactions) + "\n";
|
||||
description += "Clock period: " + QString::number(clkPeriod) + " " + unitOfTime + "\n";
|
||||
description += "Length of trace: " + prettyFormatTime(traceEnd) + "\n";
|
||||
description += "Window size:" + QString::number(windowSize) + "\n";
|
||||
|
||||
return new GeneralInfo(numberOfTransactions, numberOfPhases, Timespan(0, traceEnd), numberOfRanks,
|
||||
numberOfBankgroups, numberOfBanks, unitOfTime, clkPeriod, windowSize, controllerThread);
|
||||
} else {
|
||||
throw sqlException("Tracefile corrupted. No general info table",
|
||||
this->pathToDB.toStdString());
|
||||
}
|
||||
return {numberOfTransactions, numberOfPhases, Timespan(0, traceEnd), numberOfRanks,
|
||||
numberOfBankGroups, numberOfBanks, description, unitOfTime, clkPeriod, windowSize,
|
||||
refreshMaxPostponed, refreshMaxPulledin, controllerThread, maxBufferDepth, per2BankOffset};
|
||||
}
|
||||
|
||||
CommandLengths TraceDB::getCommandLengthsFromDB()
|
||||
{
|
||||
unsigned NOP = getLengthOfCommandFromDB("NOP");
|
||||
unsigned RD = getLengthOfCommandFromDB("RD");
|
||||
unsigned WR = getLengthOfCommandFromDB("WR");
|
||||
unsigned RDA = getLengthOfCommandFromDB("RDA");
|
||||
unsigned WRA = getLengthOfCommandFromDB("WRA");
|
||||
unsigned ACT = getLengthOfCommandFromDB("ACT");
|
||||
unsigned PRE = getLengthOfCommandFromDB("PRE");
|
||||
unsigned REFB = getLengthOfCommandFromDB("REFB");
|
||||
unsigned PRESB = getLengthOfCommandFromDB("PRESB");
|
||||
unsigned REFSB = getLengthOfCommandFromDB("REFSB");
|
||||
unsigned RFMSB = getLengthOfCommandFromDB("RFMSB");
|
||||
unsigned PREA = getLengthOfCommandFromDB("PREA");
|
||||
unsigned REFA = getLengthOfCommandFromDB("REFA");
|
||||
unsigned RFMAB = getLengthOfCommandFromDB("RFMAB");
|
||||
unsigned PDEA = getLengthOfCommandFromDB("PDEA");
|
||||
unsigned PDXA = getLengthOfCommandFromDB("PDXA");
|
||||
unsigned PDEP = getLengthOfCommandFromDB("PDEP");
|
||||
unsigned PDXP = getLengthOfCommandFromDB("PDXP");
|
||||
unsigned SREFEN = getLengthOfCommandFromDB("SREFEN");
|
||||
unsigned SREFEX = getLengthOfCommandFromDB("SREFEX");
|
||||
|
||||
return {NOP, RD, WR, RDA, WRA, ACT, PRE, REFB, PRESB, REFSB, RFMSB,
|
||||
PREA, REFA, RFMAB, PDEA, PDXA, PDEP, PDXP, SREFEN, SREFEX};
|
||||
}
|
||||
|
||||
unsigned int TraceDB::getLengthOfCommandFromDB(const std::string& command)
|
||||
{
|
||||
QSqlQuery query(("SELECT " + command + " FROM CommandLengths").c_str(), database);
|
||||
if (query.first())
|
||||
return query.value(0).toUInt();
|
||||
QVariant parameter;
|
||||
parameter = getParameterFromTable("NOP", "CommandLengths");
|
||||
unsigned NOP = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("RD", "CommandLengths");
|
||||
unsigned RD = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("WR", "CommandLengths");
|
||||
unsigned WR = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("RDA", "CommandLengths");
|
||||
unsigned RDA = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("WRA", "CommandLengths");
|
||||
unsigned WRA = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("ACT", "CommandLengths");
|
||||
unsigned ACT = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("PREPB", "CommandLengths");
|
||||
unsigned PREPB;
|
||||
if (parameter.isValid())
|
||||
{
|
||||
PREPB = parameter.toUInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "Warning: Length of command " << command.c_str() << " not present in DB, setting 1 as default.";
|
||||
return 1;
|
||||
parameter = getParameterFromTable("PRE", "CommandLengths");
|
||||
if (parameter.isValid())
|
||||
PREPB = parameter.toUInt();
|
||||
else
|
||||
PREPB = 1;
|
||||
}
|
||||
parameter = getParameterFromTable("REFPB", "CommandLengths");
|
||||
unsigned REFPB;
|
||||
if (parameter.isValid())
|
||||
{
|
||||
REFPB = parameter.toUInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
parameter = getParameterFromTable("REFB", "CommandLengths");
|
||||
if (parameter.isValid())
|
||||
REFPB = parameter.toUInt();
|
||||
else
|
||||
REFPB = 1;
|
||||
}
|
||||
parameter = getParameterFromTable("RFMPB", "CommandLengths");
|
||||
unsigned RFMPB = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("REFP2B", "CommandLengths");
|
||||
unsigned REFP2B = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("RFMP2B", "CommandLengths");
|
||||
unsigned RFMP2B = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("PRESB", "CommandLengths");
|
||||
unsigned PRESB = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("REFSB", "CommandLengths");
|
||||
unsigned REFSB = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("RFMSB", "CommandLengths");
|
||||
unsigned RFMSB = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("PREAB", "CommandLengths");
|
||||
unsigned PREAB;
|
||||
if (parameter.isValid())
|
||||
{
|
||||
PREAB = parameter.toUInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
parameter = getParameterFromTable("PREA", "CommandLengths");
|
||||
if (parameter.isValid())
|
||||
PREAB = parameter.toUInt();
|
||||
else
|
||||
PREAB = 1;
|
||||
}
|
||||
parameter = getParameterFromTable("REFAB", "CommandLengths");
|
||||
unsigned REFAB;
|
||||
if (parameter.isValid())
|
||||
{
|
||||
REFAB = parameter.toUInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
parameter = getParameterFromTable("REFA", "CommandLengths");
|
||||
if (parameter.isValid())
|
||||
REFAB = parameter.toUInt();
|
||||
else
|
||||
REFAB = 1;
|
||||
}
|
||||
parameter = getParameterFromTable("RFMAB", "CommandLengths");
|
||||
unsigned RFMAB = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("PDEA", "CommandLengths");
|
||||
unsigned PDEA = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("PDXA", "CommandLengths");
|
||||
unsigned PDXA = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("PDEP", "CommandLengths");
|
||||
unsigned PDEP = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("PDXP", "CommandLengths");
|
||||
unsigned PDXP = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("SREFEN", "CommandLengths");
|
||||
unsigned SREFEN = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
parameter = getParameterFromTable("SREFEX", "CommandLengths");
|
||||
unsigned SREFEX = parameter.isValid() ? parameter.toUInt() : 1;
|
||||
|
||||
return {NOP, RD, WR, RDA, WRA, ACT, PREPB, REFPB, RFMPB, REFP2B, RFMP2B, PRESB, REFSB, RFMSB,
|
||||
PREAB, REFAB, RFMAB, PDEA, PDXA, PDEP, PDXP, SREFEN, SREFEX};
|
||||
}
|
||||
|
||||
QVariant TraceDB::getParameterFromTable(const std::string& parameter, const std::string& table)
|
||||
{
|
||||
QSqlQuery query(("SELECT " + parameter + " FROM " + table).c_str(), database);
|
||||
if (query.first())
|
||||
return query.value(0);
|
||||
else
|
||||
{
|
||||
qDebug() << "Parameter " << parameter.c_str() << " not present in table " << table.c_str();
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int TraceDB::getNumberOfPhases()
|
||||
uint64_t TraceDB::getNumberOfPhases()
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
query.prepare("SELECT COUNT(ID) FROM Phases");
|
||||
executeQuery(query);
|
||||
|
||||
query.next();
|
||||
return query.value(0).toInt();
|
||||
return query.value(0).toULongLong();
|
||||
}
|
||||
|
||||
vector<CommentModel::Comment> TraceDB::getComments()
|
||||
std::vector<CommentModel::Comment> TraceDB::getComments()
|
||||
{
|
||||
QSqlQuery query(database);
|
||||
query.prepare("SELECT Time,Text From Comments");
|
||||
@@ -372,7 +465,7 @@ vector<CommentModel::Comment> TraceDB::getComments()
|
||||
}
|
||||
|
||||
|
||||
vector<CommentModel::Comment> TraceDB::getDebugMessagesInTimespan(const Timespan &span)
|
||||
std::vector<CommentModel::Comment> TraceDB::getDebugMessagesInTimespan(const Timespan &span)
|
||||
{
|
||||
selectDebugMessagesByTimespan.bindValue(":begin", span.Begin());
|
||||
selectDebugMessagesByTimespan.bindValue(":end", span.End());
|
||||
@@ -381,7 +474,7 @@ vector<CommentModel::Comment> TraceDB::getDebugMessagesInTimespan(const Timespan
|
||||
return parseCommentsFromQuery(selectDebugMessagesByTimespan);
|
||||
}
|
||||
|
||||
vector<CommentModel::Comment> TraceDB::getDebugMessagesInTimespan(const Timespan &span,
|
||||
std::vector<CommentModel::Comment> TraceDB::getDebugMessagesInTimespan(const Timespan &span,
|
||||
unsigned int limit = 50)
|
||||
{
|
||||
selectDebugMessagesByTimespanWithLimit.bindValue(":begin", span.Begin());
|
||||
@@ -434,23 +527,23 @@ QSqlDatabase TraceDB::getDatabase() const
|
||||
*/
|
||||
|
||||
|
||||
shared_ptr<Transaction> TraceDB::parseTransactionFromQuery(QSqlQuery &query)
|
||||
std::shared_ptr<Transaction> TraceDB::parseTransactionFromQuery(QSqlQuery &query)
|
||||
{
|
||||
auto result = parseTransactionsFromQuery(query);
|
||||
if (!result.empty())
|
||||
return result[0];
|
||||
else
|
||||
return shared_ptr<Transaction>();
|
||||
return {};
|
||||
}
|
||||
|
||||
vector<shared_ptr<Transaction>> TraceDB::parseTransactionsFromQuery(QSqlQuery &query, bool updateVisiblePhases)
|
||||
std::vector<std::shared_ptr<Transaction>> TraceDB::parseTransactionsFromQuery(QSqlQuery &query, bool updateVisiblePhases)
|
||||
{
|
||||
if (updateVisiblePhases)
|
||||
{
|
||||
_visiblePhases.clear();
|
||||
}
|
||||
|
||||
vector<shared_ptr<Transaction>> result;
|
||||
std::vector<std::shared_ptr<Transaction>> result;
|
||||
|
||||
bool firstIteration = true;
|
||||
ID currentID = 0;
|
||||
@@ -475,9 +568,9 @@ vector<shared_ptr<Transaction>> TraceDB::parseTransactionsFromQuery(QSqlQuery &q
|
||||
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,
|
||||
result.push_back(std::make_shared<Transaction>(id, address, burstlength,
|
||||
thread, channel, rank, bankgroup, bank, row, column,
|
||||
span, spanOnStrobe, generalInfo->clkPeriod)));
|
||||
span, spanOnStrobe, generalInfo.clkPeriod));
|
||||
}
|
||||
|
||||
unsigned int phaseID = query.value(14).toInt();
|
||||
@@ -524,14 +617,14 @@ void TraceDB::mUpdateDependenciesFromQuery(QSqlQuery &query)
|
||||
if (_visiblePhases.count(dependencyID) > 0)
|
||||
{
|
||||
|
||||
_visiblePhases[delayedID]->addDependency(std::shared_ptr<PhaseDependency>(
|
||||
new PhaseDependency(type, timeDependencyStr, _visiblePhases[dependencyID])));
|
||||
_visiblePhases[delayedID]->addDependency(std::make_shared<PhaseDependency>(
|
||||
PhaseDependency(type, timeDependencyStr, _visiblePhases[dependencyID])));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
_visiblePhases[delayedID]->addDependency(
|
||||
std::shared_ptr<PhaseDependency>(new PhaseDependency(type, timeDependencyStr)));
|
||||
std::make_shared<PhaseDependency>(PhaseDependency(type, timeDependencyStr)));
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -541,10 +634,11 @@ void TraceDB::mUpdateDependenciesFromQuery(QSqlQuery &query)
|
||||
}
|
||||
}
|
||||
|
||||
vector<CommentModel::Comment> TraceDB::parseCommentsFromQuery(QSqlQuery &query)
|
||||
std::vector<CommentModel::Comment> TraceDB::parseCommentsFromQuery(QSqlQuery &query)
|
||||
{
|
||||
vector<CommentModel::Comment> result;
|
||||
while (query.next()) {
|
||||
std::vector<CommentModel::Comment> result;
|
||||
while (query.next())
|
||||
{
|
||||
result.push_back(CommentModel::Comment{query.value(0).toLongLong(),
|
||||
query.value(1).toString()});
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ public:
|
||||
|
||||
const GeneralInfo &getGeneralInfo() const
|
||||
{
|
||||
return *generalInfo;
|
||||
return generalInfo;
|
||||
}
|
||||
|
||||
const CommandLengths &getCommandLengths() const
|
||||
@@ -114,8 +114,8 @@ public:
|
||||
private:
|
||||
QString pathToDB;
|
||||
QSqlDatabase database;
|
||||
GeneralInfo *generalInfo;
|
||||
CommandLengths commandLengths;
|
||||
GeneralInfo generalInfo;
|
||||
CommandLengths commandLengths{};
|
||||
|
||||
QSqlQuery insertPhaseQuery;
|
||||
QSqlQuery insertTransactionQuery;
|
||||
@@ -133,22 +133,22 @@ private:
|
||||
TransactionQueryTexts queryTexts;
|
||||
void prepareQueries();
|
||||
void executeQuery(QSqlQuery query);
|
||||
QString queryToString(QSqlQuery query);
|
||||
static QString queryToString(QSqlQuery query);
|
||||
std::shared_ptr<Transaction> parseTransactionFromQuery(QSqlQuery &query);
|
||||
std::vector<std::shared_ptr<Transaction>> parseTransactionsFromQuery(QSqlQuery &query,
|
||||
bool updateVisiblePhases = false);
|
||||
std::vector<CommentModel::Comment> parseCommentsFromQuery(QSqlQuery &query);
|
||||
static std::vector<CommentModel::Comment> parseCommentsFromQuery(QSqlQuery &query);
|
||||
|
||||
void mUpdateDependenciesFromQuery(QSqlQuery &query);
|
||||
DependencyInfos parseDependencyInfos(QSqlQuery &query, const DependencyInfos::Type infoType);
|
||||
static DependencyInfos parseDependencyInfos(QSqlQuery &query, const DependencyInfos::Type infoType);
|
||||
|
||||
void executeScriptFile(QString fileName);
|
||||
void dropAndCreateTables();
|
||||
|
||||
unsigned int getNumberOfPhases();
|
||||
GeneralInfo *getGeneralInfoFromDB();
|
||||
uint64_t getNumberOfPhases();
|
||||
GeneralInfo getGeneralInfoFromDB();
|
||||
CommandLengths getCommandLengthsFromDB();
|
||||
unsigned int getLengthOfCommandFromDB(const std::string& command);
|
||||
QVariant getParameterFromTable(const std::string& parameter, const std::string& table);
|
||||
|
||||
std::map<unsigned int, std::shared_ptr<Phase>> _visiblePhases; // Updated at parseTransactionsFromQuery
|
||||
};
|
||||
@@ -165,7 +165,7 @@ public:
|
||||
this->message = std::string("Error in file ") + filename + std::string(" ") +
|
||||
message;
|
||||
}
|
||||
const char *what() const noexcept
|
||||
const char *what() const noexcept override
|
||||
{
|
||||
return message.c_str();
|
||||
}
|
||||
|
||||
@@ -192,7 +192,7 @@ void TraceDrawingProperties::collapseOrExpandAllRanks(ToggleCollapsedAction::Col
|
||||
}
|
||||
}
|
||||
|
||||
const std::shared_ptr<QHash<int, QString>> TraceDrawingProperties::getLabels() const
|
||||
std::shared_ptr<QHash<int, QString>> TraceDrawingProperties::getLabels() const
|
||||
{
|
||||
return labels;
|
||||
}
|
||||
@@ -289,3 +289,14 @@ TracePlotLineVector TraceDrawingProperties::getBankLinesFromRank(unsigned int ra
|
||||
{
|
||||
return tracePlotLineCache->getBankLinesFromRank(rank);
|
||||
}
|
||||
|
||||
TracePlotLineVector TraceDrawingProperties::getBankLinesTwoBankwise(unsigned int rank, unsigned int firstGroup,
|
||||
unsigned int firstBank, unsigned int secondGroup,
|
||||
unsigned int secondBank) const
|
||||
{
|
||||
TracePlotLineVector firstBankLines = tracePlotLineCache->getBankLines(rank, firstGroup, firstBank);
|
||||
TracePlotLineVector secondBankLines = tracePlotLineCache->getBankLines(rank, secondGroup, secondBank);
|
||||
firstBankLines.insert(firstBankLines.end(), secondBankLines.begin(), secondBankLines.end());
|
||||
|
||||
return firstBankLines;
|
||||
}
|
||||
|
||||
@@ -93,12 +93,13 @@ public:
|
||||
DependencyOptions drawDependenciesOption;
|
||||
ColorGrouping colorGrouping;
|
||||
|
||||
unsigned int numberOfRanks;
|
||||
unsigned int numberOfBankgroups;
|
||||
unsigned int numberOfBanks;
|
||||
unsigned int banksPerRank;
|
||||
unsigned int groupsPerRank;
|
||||
unsigned int banksPerGroup;
|
||||
unsigned int numberOfRanks = 1;
|
||||
unsigned int numberOfBankGroups = 1;
|
||||
unsigned int numberOfBanks = 1;
|
||||
unsigned int banksPerRank = 1;
|
||||
unsigned int groupsPerRank = 1;
|
||||
unsigned int banksPerGroup = 1;
|
||||
unsigned int per2BankOffset = 0;
|
||||
|
||||
TraceDrawingProperties(bool drawText = true, bool drawBorder = true,
|
||||
DependencyOptions drawDependenciesOption = {DependencyOption::Disabled,
|
||||
@@ -123,9 +124,12 @@ public:
|
||||
TracePlotLineVector getBankLines(unsigned int rank, unsigned int group, unsigned int bank) const;
|
||||
TracePlotLineVector getBankLinesFromGroup(unsigned int rank, unsigned int group) const;
|
||||
TracePlotLineVector getBankLinesGroupwise(unsigned int rank, unsigned int bank) const;
|
||||
TracePlotLineVector getBankLinesTwoBankwise(unsigned int rank, unsigned int firstGroup,
|
||||
unsigned int firstBank, unsigned int secondGroup,
|
||||
unsigned int secondBank) const;
|
||||
TracePlotLineVector getBankLinesFromRank(unsigned int rank) const;
|
||||
|
||||
const std::shared_ptr<QHash<int, QString>> getLabels() const;
|
||||
std::shared_ptr<QHash<int, QString>> getLabels() const;
|
||||
|
||||
void updateTracePlotLines(QTreeWidget *treeWidget);
|
||||
void collapseOrExpandAllRanks(ToggleCollapsedAction::CollapseAction collapseAction);
|
||||
@@ -142,7 +146,7 @@ private:
|
||||
std::shared_ptr<TracePlotLineVector> tracePlotLines;
|
||||
std::shared_ptr<TracePlotLineCache> tracePlotLineCache;
|
||||
|
||||
TracePlot *tracePlot;
|
||||
TracePlot *tracePlot = nullptr;
|
||||
};
|
||||
|
||||
#endif // TRACECOLLECTIONDRAWINGPROPERTIES_H
|
||||
|
||||
@@ -303,11 +303,12 @@ void TracePlot::setUpDrawingProperties()
|
||||
drawingProperties.init(navigator->getTracePlotLines(), navigator->getTracePlotLineCache(), this);
|
||||
|
||||
drawingProperties.numberOfRanks = navigator->GeneralTraceInfo().numberOfRanks;
|
||||
drawingProperties.numberOfBankgroups = navigator->GeneralTraceInfo().numberOfBankgroups;
|
||||
drawingProperties.numberOfBankGroups = navigator->GeneralTraceInfo().numberOfBankGroups;
|
||||
drawingProperties.numberOfBanks = navigator->GeneralTraceInfo().numberOfBanks;
|
||||
drawingProperties.banksPerRank = drawingProperties.numberOfBanks / drawingProperties.numberOfRanks;
|
||||
drawingProperties.groupsPerRank = drawingProperties.numberOfBankgroups / drawingProperties.numberOfRanks;
|
||||
drawingProperties.banksPerGroup = drawingProperties.numberOfBanks / drawingProperties.numberOfBankgroups;
|
||||
drawingProperties.groupsPerRank = drawingProperties.numberOfBankGroups / drawingProperties.numberOfRanks;
|
||||
drawingProperties.banksPerGroup = drawingProperties.numberOfBanks / drawingProperties.numberOfBankGroups;
|
||||
drawingProperties.per2BankOffset = navigator->GeneralTraceInfo().per2BankOffset;
|
||||
}
|
||||
|
||||
void TracePlot::setUpQueryEditor()
|
||||
|
||||
@@ -107,11 +107,12 @@ void TraceScroller::setUpDrawingProperties()
|
||||
drawingProperties.init(navigator->getTracePlotLines(), navigator->getTracePlotLineCache());
|
||||
|
||||
drawingProperties.numberOfRanks = navigator->GeneralTraceInfo().numberOfRanks;
|
||||
drawingProperties.numberOfBankgroups = navigator->GeneralTraceInfo().numberOfBankgroups;
|
||||
drawingProperties.numberOfBankGroups = navigator->GeneralTraceInfo().numberOfBankGroups;
|
||||
drawingProperties.numberOfBanks = navigator->GeneralTraceInfo().numberOfBanks;
|
||||
drawingProperties.banksPerRank = drawingProperties.numberOfBanks / drawingProperties.numberOfRanks;
|
||||
drawingProperties.groupsPerRank = drawingProperties.numberOfBankgroups / drawingProperties.numberOfRanks;
|
||||
drawingProperties.banksPerGroup = drawingProperties.numberOfBanks / drawingProperties.numberOfBankgroups;
|
||||
drawingProperties.groupsPerRank = drawingProperties.numberOfBankGroups / drawingProperties.numberOfRanks;
|
||||
drawingProperties.banksPerGroup = drawingProperties.numberOfBanks / drawingProperties.numberOfBankGroups;
|
||||
drawingProperties.per2BankOffset = navigator->GeneralTraceInfo().per2BankOffset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user