Add support for MWR and MWRA to TraceAnalyzer
This commit is contained in:
@@ -41,8 +41,10 @@ struct CommandLengths
|
||||
double NOP = 1;
|
||||
double RD = 1;
|
||||
double WR = 1;
|
||||
double MWR = 1;
|
||||
double RDA = 1;
|
||||
double WRA = 1;
|
||||
double MWRA = 1;
|
||||
double ACT = 1;
|
||||
double PREPB = 1;
|
||||
double REFPB = 1;
|
||||
@@ -62,22 +64,58 @@ struct CommandLengths
|
||||
double SREFEN = 1;
|
||||
double SREFEX = 1;
|
||||
|
||||
CommandLengths(double NOP, double RD, double WR,
|
||||
double RDA, double WRA, double ACT,
|
||||
double PREPB, double REFPB, double RFMPB,
|
||||
double REFP2B, double RFMP2B,
|
||||
double PRESB, double REFSB, double RFMSB,
|
||||
double PREAB, double REFAB, double RFMAB,
|
||||
double PDEA, double PDXA, double PDEP, double PDXP,
|
||||
double SREFEN, double 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(double NOP,
|
||||
double RD,
|
||||
double WR,
|
||||
double MWR,
|
||||
double RDA,
|
||||
double WRA,
|
||||
double MWRA,
|
||||
double ACT,
|
||||
double PREPB,
|
||||
double REFPB,
|
||||
double RFMPB,
|
||||
double REFP2B,
|
||||
double RFMP2B,
|
||||
double PRESB,
|
||||
double REFSB,
|
||||
double RFMSB,
|
||||
double PREAB,
|
||||
double REFAB,
|
||||
double RFMAB,
|
||||
double PDEA,
|
||||
double PDXA,
|
||||
double PDEP,
|
||||
double PDXP,
|
||||
double SREFEN,
|
||||
double SREFEX) :
|
||||
NOP(NOP),
|
||||
RD(RD),
|
||||
WR(WR),
|
||||
MWR(MWR),
|
||||
RDA(RDA),
|
||||
WRA(WRA),
|
||||
MWRA(MWRA),
|
||||
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() = default;
|
||||
};
|
||||
|
||||
@@ -222,22 +222,7 @@ protected:
|
||||
|
||||
std::vector<int> getYVals(const TraceDrawingProperties &drawingProperties) const override;
|
||||
};
|
||||
/*
|
||||
class PREB final : public Phase
|
||||
{
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(1);
|
||||
}
|
||||
virtual QString Name() const override
|
||||
{
|
||||
return "PREB";
|
||||
}
|
||||
};
|
||||
*/
|
||||
|
||||
class PREPB final : public Phase
|
||||
{
|
||||
public:
|
||||
@@ -326,22 +311,7 @@ protected:
|
||||
return RelevantAttributes::Rank;
|
||||
}
|
||||
};
|
||||
/*
|
||||
class ACTB final : public Phase
|
||||
{
|
||||
public:
|
||||
using Phase::Phase;
|
||||
protected:
|
||||
virtual QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(3);
|
||||
}
|
||||
virtual QString Name() const override
|
||||
{
|
||||
return "ACTB";
|
||||
}
|
||||
};
|
||||
*/
|
||||
|
||||
class ACT final : public Phase
|
||||
{
|
||||
public:
|
||||
@@ -430,6 +400,28 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
class MWR final : public Phase
|
||||
{
|
||||
public:
|
||||
using Phase::Phase;
|
||||
|
||||
protected:
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(6);
|
||||
}
|
||||
QString Name() const override
|
||||
{
|
||||
return "MWR";
|
||||
}
|
||||
|
||||
RelevantAttributes getRelevantAttributes() const override
|
||||
{
|
||||
return RelevantAttributes::Rank | RelevantAttributes::BankGroup | RelevantAttributes::Bank |
|
||||
RelevantAttributes::Column | RelevantAttributes::BurstLength;
|
||||
}
|
||||
};
|
||||
|
||||
class WRA final : public Phase
|
||||
{
|
||||
public:
|
||||
@@ -452,6 +444,28 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
class MWRA final : public Phase
|
||||
{
|
||||
public:
|
||||
using Phase::Phase;
|
||||
|
||||
protected:
|
||||
QColor getPhaseColor() const override
|
||||
{
|
||||
return ColorGenerator::getColor(7);
|
||||
}
|
||||
QString Name() const override
|
||||
{
|
||||
return "MWRA";
|
||||
}
|
||||
|
||||
RelevantAttributes getRelevantAttributes() const override
|
||||
{
|
||||
return RelevantAttributes::Rank | RelevantAttributes::BankGroup | RelevantAttributes::Bank |
|
||||
RelevantAttributes::Column | RelevantAttributes::BurstLength;
|
||||
}
|
||||
};
|
||||
|
||||
class AUTO_REFRESH : public Phase
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -55,69 +55,97 @@ std::shared_ptr<Phase> PhaseFactory::createPhase(ID id, const QString &dbPhaseNa
|
||||
if (dbPhaseName == "REQ")
|
||||
return std::shared_ptr<Phase>(new REQ(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "RESP")
|
||||
|
||||
if (dbPhaseName == "RESP")
|
||||
return std::shared_ptr<Phase>(new RESP(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "PREPB")
|
||||
|
||||
if (dbPhaseName == "PREPB")
|
||||
return std::shared_ptr<Phase>(new PREPB(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PREPB)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "ACT")
|
||||
|
||||
if (dbPhaseName == "ACT")
|
||||
return std::shared_ptr<Phase>(new ACT(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.ACT)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "PREAB")
|
||||
|
||||
if (dbPhaseName == "PREAB")
|
||||
return std::shared_ptr<Phase>(new PREAB(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PREAB)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "REFAB")
|
||||
|
||||
if (dbPhaseName == "REFAB")
|
||||
return std::shared_ptr<Phase>(new REFAB(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.REFAB)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "RFMAB")
|
||||
|
||||
if (dbPhaseName == "RFMAB")
|
||||
return std::shared_ptr<Phase>(new RFMAB(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RFMAB)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "REFPB")
|
||||
|
||||
if (dbPhaseName == "REFPB")
|
||||
return std::shared_ptr<Phase>(new REFPB(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.REFPB)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "RFMPB")
|
||||
|
||||
if (dbPhaseName == "RFMPB")
|
||||
return std::shared_ptr<Phase>(new RFMPB(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RFMPB)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "REFP2B")
|
||||
|
||||
if (dbPhaseName == "REFP2B")
|
||||
return std::shared_ptr<Phase>(new REFP2B(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.REFP2B)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "RFMP2B")
|
||||
return std::shared_ptr<Phase>(new RFMP2B(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
|
||||
if (dbPhaseName == "RFMP2B")
|
||||
return std::shared_ptr<Phase>(new RFMP2B(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RFMP2B)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "PRESB")
|
||||
|
||||
if (dbPhaseName == "PRESB")
|
||||
return std::shared_ptr<Phase>(new PRESB(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PRESB)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "REFSB")
|
||||
|
||||
if (dbPhaseName == "REFSB")
|
||||
return std::shared_ptr<Phase>(new REFSB(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.REFSB)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "RFMSB")
|
||||
|
||||
if (dbPhaseName == "RFMSB")
|
||||
return std::shared_ptr<Phase>(new RFMSB(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RFMSB)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "RD")
|
||||
|
||||
if (dbPhaseName == "RD")
|
||||
return std::shared_ptr<Phase>(new RD(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RD)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "RDA")
|
||||
|
||||
if (dbPhaseName == "RDA")
|
||||
return std::shared_ptr<Phase>(new RDA(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RDA)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "WR")
|
||||
|
||||
if (dbPhaseName == "WR")
|
||||
return std::shared_ptr<Phase>(new WR(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WR)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "WRA")
|
||||
|
||||
if (dbPhaseName == "MWR")
|
||||
return std::shared_ptr<Phase>(new MWR(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WR)}, groupsPerRank, banksPerGroup));
|
||||
|
||||
if (dbPhaseName == "WRA")
|
||||
return std::shared_ptr<Phase>(new WRA(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WRA)}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "PDNA")
|
||||
|
||||
if (dbPhaseName == "MWRA")
|
||||
return std::shared_ptr<Phase>(new MWRA(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WR)}, groupsPerRank, banksPerGroup));
|
||||
|
||||
if (dbPhaseName == "PDNA")
|
||||
return std::shared_ptr<Phase>(new PDNA(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEA),
|
||||
Timespan(span.End() - clk * cl.PDXA, span.End())}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "PDNP")
|
||||
|
||||
if (dbPhaseName == "PDNP")
|
||||
return std::shared_ptr<Phase>(new PDNP(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEP),
|
||||
Timespan(span.End() - clk * cl.PDXP, span.End())}, groupsPerRank, banksPerGroup));
|
||||
else if (dbPhaseName == "SREF")
|
||||
|
||||
if (dbPhaseName == "SREF")
|
||||
return std::shared_ptr<Phase>(new SREF(id, span, spanOnDataStrobe, rank, bankGroup, bank, row, column,
|
||||
burstLength, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.SREFEN),
|
||||
Timespan(span.End() - clk * cl.SREFEX, span.End())}, groupsPerRank, banksPerGroup));
|
||||
else
|
||||
throw std::runtime_error("DB phasename " + dbPhaseName.toStdString() + " unkown to phasefactory");
|
||||
|
||||
throw std::runtime_error("DB phasename " + dbPhaseName.toStdString() + " unkown to phasefactory");
|
||||
}
|
||||
|
||||
@@ -372,9 +372,11 @@ CommandLengths TraceDB::getCommandLengthsFromDB()
|
||||
|
||||
double NOP = getCommandLength("NOP");
|
||||
double RD = getCommandLength("RD");
|
||||
double WR = getCommandLength("RD");
|
||||
double WR = getCommandLength("WR");
|
||||
double MWR = getCommandLength("MWR");
|
||||
double RDA = getCommandLength("RDA");
|
||||
double WRA = getCommandLength("WRA");
|
||||
double MWRA = getCommandLength("MWRA");
|
||||
double ACT = getCommandLength("ACT");
|
||||
|
||||
double PREPB = getCommandLength("PREPB");
|
||||
@@ -398,8 +400,9 @@ CommandLengths TraceDB::getCommandLengthsFromDB()
|
||||
double SREFEN = getCommandLength("SREFEN");
|
||||
double SREFEX = getCommandLength("SREFEX");
|
||||
|
||||
return {NOP, RD, WR, RDA, WRA, ACT, PREPB, REFPB, RFMPB, REFP2B, RFMP2B, PRESB, REFSB, RFMSB,
|
||||
PREAB, REFAB, RFMAB, PDEA, PDXA, PDEP, PDXP, SREFEN, SREFEX};
|
||||
return {NOP, RD, WR, MWR, RDA, WRA, MWRA, 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)
|
||||
|
||||
Reference in New Issue
Block a user