Add new commands and command lengths.

This commit is contained in:
Lukas Steiner
2020-08-27 15:33:17 +02:00
parent 8ba0180d57
commit 57f6881ae1
12 changed files with 263 additions and 213 deletions

View File

@@ -33,20 +33,22 @@ CREATE TABLE GeneralInfo(
);
CREATE TABLE CommandLengths(
ACT INTEGER,
PRE INTEGER,
PREA INTEGER,
RD INTEGER,
RDA INTEGER,
WR INTEGER,
WRA INTEGER,
REFA INTEGER,
REFB INTEGER,
NOP INTEGER,
RD INTEGER,
WR INTEGER,
RDA INTEGER,
WRA INTEGER,
ACT INTEGER,
PRE INTEGER,
REFB INTEGER,
PRESB INTEGER,
REFSB INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
PREA INTEGER,
REFA INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
SREFEN INTEGER,
SREFEX INTEGER
);

View File

@@ -296,7 +296,7 @@ void TlmRecorder::prepareSqlStatements()
insertCommandLengthsString =
"INSERT INTO CommandLengths VALUES"
"(:ACT, :PRE, :PREA, :RD, :RDA, :WR, :WRA, :REFA, :REFB, :REFSB, :PDEA, :PDXA, :PDEP, :PDXP, :SREFEN, :SREFEX)";
"(:NOP, :RD, :WR, :RDA, :WRA, :ACT, :PRE, :REFB, :PRESB, :REFSB, :PREA, :REFA, :PDEA, :PDXA, :PDEP, :PDXP, :SREFEN, :SREFEX)";
insertDebugMessageString =
"INSERT INTO DebugMessages (Time,Message) Values (:time,:message)";
@@ -362,22 +362,24 @@ void TlmRecorder::insertCommandLengths()
{
MemSpec *memSpec = Configuration::getInstance().memSpec;
sqlite3_bind_int(insertCommandLengthsStatement, 1, memSpec->getCommandLength(Command::ACT) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 2, memSpec->getCommandLength(Command::PRE) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 3, memSpec->getCommandLength(Command::PREA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 4, memSpec->getCommandLength(Command::RD) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 5, memSpec->getCommandLength(Command::RDA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 6, memSpec->getCommandLength(Command::WR) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 7, memSpec->getCommandLength(Command::WRA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 8, memSpec->getCommandLength(Command::REFA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 9, memSpec->getCommandLength(Command::REFB) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 10, 1);
sqlite3_bind_int(insertCommandLengthsStatement, 11, memSpec->getCommandLength(Command::PDEA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 12, memSpec->getCommandLength(Command::PDXA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 13, memSpec->getCommandLength(Command::PDEP) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 14, memSpec->getCommandLength(Command::PDXP) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 15, memSpec->getCommandLength(Command::SREFEN) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 16, memSpec->getCommandLength(Command::SREFEX) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 1, memSpec->getCommandLength(Command::NOP) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 2, memSpec->getCommandLength(Command::RD) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 3, memSpec->getCommandLength(Command::WR) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 4, memSpec->getCommandLength(Command::RDA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 5, memSpec->getCommandLength(Command::WRA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 6, memSpec->getCommandLength(Command::PRE) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 7, memSpec->getCommandLength(Command::ACT) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 8, memSpec->getCommandLength(Command::REFB) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 9, memSpec->getCommandLength(Command::PRESB) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 10, memSpec->getCommandLength(Command::REFSB) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 11, memSpec->getCommandLength(Command::PREA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 12, memSpec->getCommandLength(Command::REFA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 13, memSpec->getCommandLength(Command::PDEA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 14, memSpec->getCommandLength(Command::PDXA) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 15, memSpec->getCommandLength(Command::PDEP) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 16, memSpec->getCommandLength(Command::PDXP) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 17, memSpec->getCommandLength(Command::SREFEN) / memSpec->tCK);
sqlite3_bind_int(insertCommandLengthsStatement, 18, memSpec->getCommandLength(Command::SREFEX) / memSpec->tCK);
executeSqlStatement(insertCommandLengthsStatement);
}

View File

@@ -46,23 +46,23 @@ std::string commandToString(Command command)
assert(command >= Command::NOP && command <= Command::SREFEX);
static std::array<std::string, 18> stringOfCommand =
{"NOP",
"RD",
"WR",
"RDA",
"WRA",
"PRE",
"ACT",
"REFB",
"PRESB",
"REFSB",
"PREA",
"REFA",
"PDEA",
"PDXA",
"PDEP",
"PDXP",
"SREFEN",
"SREFEX"};
"RD",
"WR",
"RDA",
"WRA",
"ACT",
"PRE",
"REFB",
"PRESB",
"REFSB",
"PREA",
"REFA",
"PDEA",
"PDXA",
"PDEP",
"PDXP",
"SREFEN",
"SREFEX"};
return stringOfCommand[command];
}
@@ -76,23 +76,23 @@ tlm_phase commandToPhase(Command command)
assert(command >= Command::NOP && command <= Command::SREFEX);
static std::array<tlm_phase, 18> phaseOfCommand =
{UNINITIALIZED_PHASE,
BEGIN_RD,
BEGIN_WR,
BEGIN_RDA,
BEGIN_WRA,
BEGIN_PRE,
BEGIN_ACT,
BEGIN_REFB,
BEGIN_PRESB,
BEGIN_REFSB,
BEGIN_PREA,
BEGIN_REFA,
BEGIN_PDNA,
END_PDNA,
BEGIN_PDNP,
END_PDNP,
BEGIN_SREF,
END_SREF};
BEGIN_RD,
BEGIN_WR,
BEGIN_RDA,
BEGIN_WRA,
BEGIN_ACT,
BEGIN_PRE,
BEGIN_REFB,
BEGIN_PRESB,
BEGIN_REFSB,
BEGIN_PREA,
BEGIN_REFA,
BEGIN_PDNA,
END_PDNA,
BEGIN_PDNP,
END_PDNP,
BEGIN_SREF,
END_SREF};
return phaseOfCommand[command];
}
@@ -101,22 +101,22 @@ Command phaseToCommand(tlm_phase phase)
assert(phase >= BEGIN_RD && phase <= END_SREF);
static std::array<Command, 18> commandOfPhase =
{Command::RD,
Command::WR,
Command::RDA,
Command::WRA,
Command::PRE,
Command::ACT,
Command::REFB,
Command::PRESB,
Command::REFSB,
Command::PREA,
Command::REFA,
Command::PDEA,
Command::PDXA,
Command::PDEP,
Command::PDXP,
Command::SREFEN,
Command::SREFEX};
Command::WR,
Command::RDA,
Command::WRA,
Command::ACT,
Command::PRE,
Command::REFB,
Command::PRESB,
Command::REFSB,
Command::PREA,
Command::REFA,
Command::PDEA,
Command::PDXA,
Command::PDEP,
Command::PDXP,
Command::SREFEN,
Command::SREFEX};
return commandOfPhase[phase - BEGIN_RD];
}
@@ -126,22 +126,22 @@ MemCommand::cmds phaseToDRAMPowerCommand(tlm_phase phase)
assert(phase >= BEGIN_RD && phase <= END_SREF);
static std::array<MemCommand::cmds, 18> phaseOfCommand =
{MemCommand::RD,
MemCommand::WR,
MemCommand::RDA,
MemCommand::WRA,
MemCommand::PRE,
MemCommand::ACT,
MemCommand::REFB,
MemCommand::NOP,
MemCommand::NOP,
MemCommand::PREA,
MemCommand::REF,
MemCommand::PDN_S_ACT,
MemCommand::PUP_ACT,
MemCommand::PDN_S_PRE,
MemCommand::PUP_PRE,
MemCommand::SREN,
MemCommand::SREX};
MemCommand::WR,
MemCommand::RDA,
MemCommand::WRA,
MemCommand::ACT,
MemCommand::PRE,
MemCommand::REFB,
MemCommand::NOP,
MemCommand::NOP,
MemCommand::PREA,
MemCommand::REF,
MemCommand::PDN_S_ACT,
MemCommand::PUP_ACT,
MemCommand::PDN_S_PRE,
MemCommand::PUP_PRE,
MemCommand::SREN,
MemCommand::SREX};
return phaseOfCommand[phase - BEGIN_RD];
}
@@ -183,5 +183,5 @@ bool isCasCommand(Command command)
bool isRasCommand(Command command)
{
assert(command >= Command::NOP && command <= Command::SREFEX);
return (command >= Command::PRE);
return (command >= Command::ACT);
}

View File

@@ -47,8 +47,8 @@ DECLARE_EXTENDED_PHASE(BEGIN_RD); // 5
DECLARE_EXTENDED_PHASE(BEGIN_WR); // 6
DECLARE_EXTENDED_PHASE(BEGIN_RDA); // 7
DECLARE_EXTENDED_PHASE(BEGIN_WRA); // 8
DECLARE_EXTENDED_PHASE(BEGIN_PRE); // 9
DECLARE_EXTENDED_PHASE(BEGIN_ACT); // 10
DECLARE_EXTENDED_PHASE(BEGIN_ACT); // 9
DECLARE_EXTENDED_PHASE(BEGIN_PRE); // 10
DECLARE_EXTENDED_PHASE(BEGIN_REFB); // 11
DECLARE_EXTENDED_PHASE(BEGIN_PRESB); // 12
DECLARE_EXTENDED_PHASE(BEGIN_REFSB); // 13
@@ -65,8 +65,8 @@ DECLARE_EXTENDED_PHASE(END_RD); // 22
DECLARE_EXTENDED_PHASE(END_WR); // 23
DECLARE_EXTENDED_PHASE(END_RDA); // 24
DECLARE_EXTENDED_PHASE(END_WRA); // 25
DECLARE_EXTENDED_PHASE(END_PRE); // 26
DECLARE_EXTENDED_PHASE(END_ACT); // 27
DECLARE_EXTENDED_PHASE(END_ACT); // 26
DECLARE_EXTENDED_PHASE(END_PRE); // 27
DECLARE_EXTENDED_PHASE(END_REFB); // 28
DECLARE_EXTENDED_PHASE(END_PRESB); // 29
DECLARE_EXTENDED_PHASE(END_REFSB); // 30
@@ -80,8 +80,8 @@ enum Command
WR,
RDA,
WRA,
PRE,
ACT,
PRE,
REFB,
PRESB,
REFSB,

View File

@@ -33,20 +33,22 @@ CREATE TABLE GeneralInfo(
);
CREATE TABLE CommandLengths(
ACT INTEGER,
PRE INTEGER,
PREA INTEGER,
RD INTEGER,
RDA INTEGER,
WR INTEGER,
WRA INTEGER,
REFA INTEGER,
REFB INTEGER,
NOP INTEGER,
RD INTEGER,
WR INTEGER,
RDA INTEGER,
WRA INTEGER,
ACT INTEGER,
PRE INTEGER,
REFB INTEGER,
PRESB INTEGER,
REFSB INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
PREA INTEGER,
REFA INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
SREFEN INTEGER,
SREFEX INTEGER
);

View File

@@ -33,20 +33,22 @@ CREATE TABLE GeneralInfo(
);
CREATE TABLE CommandLengths(
ACT INTEGER,
PRE INTEGER,
PREA INTEGER,
RD INTEGER,
RDA INTEGER,
WR INTEGER,
WRA INTEGER,
REFA INTEGER,
REFB INTEGER,
NOP INTEGER,
RD INTEGER,
WR INTEGER,
RDA INTEGER,
WRA INTEGER,
ACT INTEGER,
PRE INTEGER,
REFB INTEGER,
PRESB INTEGER,
REFSB INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
PREA INTEGER,
REFA INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
SREFEN INTEGER,
SREFEX INTEGER
);

View File

@@ -33,20 +33,22 @@ CREATE TABLE GeneralInfo(
);
CREATE TABLE CommandLengths(
ACT INTEGER,
PRE INTEGER,
PREA INTEGER,
RD INTEGER,
RDA INTEGER,
WR INTEGER,
WRA INTEGER,
REFA INTEGER,
REFB INTEGER,
NOP INTEGER,
RD INTEGER,
WR INTEGER,
RDA INTEGER,
WRA INTEGER,
ACT INTEGER,
PRE INTEGER,
REFB INTEGER,
PRESB INTEGER,
REFSB INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
PREA INTEGER,
REFA INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
SREFEN INTEGER,
SREFEX INTEGER
);

View File

@@ -33,20 +33,22 @@ CREATE TABLE GeneralInfo(
);
CREATE TABLE CommandLengths(
ACT INTEGER,
PRE INTEGER,
PREA INTEGER,
RD INTEGER,
RDA INTEGER,
WR INTEGER,
WRA INTEGER,
REFA INTEGER,
REFB INTEGER,
NOP INTEGER,
RD INTEGER,
WR INTEGER,
RDA INTEGER,
WRA INTEGER,
ACT INTEGER,
PRE INTEGER,
REFB INTEGER,
PRESB INTEGER,
REFSB INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
PREA INTEGER,
REFA INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
SREFEN INTEGER,
SREFEX INTEGER
);

View File

@@ -38,16 +38,18 @@
struct CommandLengths
{
unsigned NOP;
unsigned RD;
unsigned WR;
unsigned RDA;
unsigned WRA;
unsigned ACT;
unsigned PRE;
unsigned PREA;
unsigned RD;
unsigned RDA;
unsigned WR;
unsigned WRA;
unsigned REFA;
unsigned REFB;
unsigned PRESB;
unsigned REFSB;
unsigned PREA;
unsigned REFA;
unsigned PDEA;
unsigned PDXA;
unsigned PDEP;
@@ -55,14 +57,16 @@ struct CommandLengths
unsigned SREFEN;
unsigned SREFEX;
CommandLengths(unsigned ACT, unsigned PRE, unsigned PREA,
unsigned RD, unsigned RDA, unsigned WR, unsigned WRA,
unsigned REFA, unsigned REFB, unsigned REFSB,
unsigned PDEA, unsigned PDXA, unsigned PDEP, unsigned PDXP,
unsigned SREFEN, unsigned SREFEX) :
ACT(ACT), PRE(PRE), PREA(PREA), RD(RD), RDA(RDA), WR(WR), WRA(WRA),
REFA(REFA), REFB(REFB), REFSB(REFSB), PDEA(PDEA), PDXA(PDXA),
PDEP(PDEP), PDXP(PDXP), SREFEN(SREFEN), SREFEX(SREFEX) {}
CommandLengths(unsigned NOP, unsigned RD, unsigned WR,
unsigned RDA, unsigned WRA, unsigned ACT,
unsigned PRE, unsigned REFB, unsigned PRESB,
unsigned REFSB, unsigned PREA, unsigned REFA,
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), PREA(PREA), REFA(REFA),
PDEA(PDEA), PDXA(PDXA), PDEP(PDEP), PDXP(PDXP),
SREFEN(SREFEN), SREFEX(SREFEX) {}
CommandLengths() {}
};

View File

@@ -174,6 +174,62 @@ protected:
}
};
class PRESB : public Phase
{
public:
using Phase::Phase;
protected:
virtual QString Name() const override
{
return "PRESB";
}
virtual std::vector<traceTime> getTimesOnCommandBus() const
{
return {span.Begin()};
}
virtual QColor getColor(const TraceDrawingProperties &drawingProperties) const
override
{
Q_UNUSED(drawingProperties) return getPhaseColor();
}
virtual QColor getPhaseColor() const override
{
return ColorGenerator::getColor(1);
}
virtual Granularity getGranularity() const override
{
return Granularity::Groupwise;
}
};
class PREA : public Phase
{
public:
using Phase::Phase;
protected:
virtual QString Name() const override
{
return "PREA";
}
virtual std::vector<traceTime> getTimesOnCommandBus() const
{
return {span.Begin()};
}
virtual QColor getColor(const TraceDrawingProperties &drawingProperties) const
override
{
Q_UNUSED(drawingProperties) return getPhaseColor();
}
virtual QColor getPhaseColor() const override
{
return ColorGenerator::getColor(10);
}
virtual Granularity getGranularity() const override
{
return Granularity::Rankwise;
}
};
class ACTB : public Phase
{
public:
@@ -331,34 +387,6 @@ protected:
}
};
class PREA : public Phase
{
public:
using Phase::Phase;
protected:
virtual QString Name() const override
{
return "PREA";
}
virtual std::vector<traceTime> getTimesOnCommandBus() const
{
return {span.Begin()};
}
virtual QColor getColor(const TraceDrawingProperties &drawingProperties) const
override
{
Q_UNUSED(drawingProperties) return getPhaseColor();
}
virtual QColor getPhaseColor() const override
{
return ColorGenerator::getColor(10);
}
virtual Granularity getGranularity() const override
{
return Granularity::Rankwise;
}
};
class PDNAB : public Phase
{
public:

View File

@@ -76,6 +76,9 @@ shared_ptr<Phase> PhaseFactory::CreatePhase(ID id, const QString &dbPhaseName,
else if (dbPhaseName == "REFB")
return shared_ptr<Phase>(new REFB(id, span, trans,
{Timespan(span.Begin(), span.Begin() + clk * cl.REFB)}, std::shared_ptr<Timespan>()));
else if (dbPhaseName == "PRESB")
return shared_ptr<Phase>(new PRESB(id, span, 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, trans,
{Timespan(span.Begin(), span.Begin() + clk * cl.REFSB)}, std::shared_ptr<Timespan>()));

View File

@@ -285,25 +285,28 @@ CommandLengths TraceDB::getCommandLengthsFromDB()
if (query.next())
{
unsigned ACT = query.value(0).toInt();
unsigned PRE = query.value(1).toInt();
unsigned PREA = query.value(2).toInt();
unsigned RD = query.value(3).toInt();
unsigned RDA = query.value(4).toInt();
unsigned WR = query.value(5).toInt();
unsigned WRA = query.value(6).toInt();
unsigned REFA = query.value(7).toInt();
unsigned REFB = query.value(8).toInt();
unsigned NOP = query.value(0).toInt();
unsigned RD = query.value(1).toInt();
unsigned WR = query.value(2).toInt();
unsigned RDA = query.value(3).toInt();
unsigned WRA = query.value(4).toInt();
unsigned ACT = query.value(5).toInt();
unsigned PRE = query.value(6).toInt();
unsigned REFB = query.value(7).toInt();
unsigned PRESB = query.value(8).toInt();
unsigned REFSB = query.value(9).toInt();
unsigned PDEA = query.value(10).toInt();
unsigned PDXA = query.value(11).toInt();
unsigned PDEP = query.value(12).toInt();
unsigned PDXP = query.value(13).toInt();
unsigned SREFEN = query.value(14).toInt();
unsigned SREFEX = query.value(15).toInt();
unsigned PREA = query.value(10).toInt();
unsigned REFA = query.value(11).toInt();
unsigned PDEA = query.value(12).toInt();
unsigned PDXA = query.value(13).toInt();
unsigned PDEP = query.value(14).toInt();
unsigned PDXP = query.value(15).toInt();
unsigned SREFEN = query.value(16).toInt();
unsigned SREFEX = query.value(17).toInt();
return CommandLengths(ACT, PRE, PREA, RD, RDA, WR, WRA, REFA, REFB, REFSB,
PDEA, PDXA, PDEP, PDXP, SREFEN, SREFEX);
return CommandLengths(NOP, RD, WR, RDA, WRA, ACT, PRE, REFB,
PRESB, REFSB, PREA, REFA, PDEA, PDXA,
PDEP, PDXP, SREFEN, SREFEX);
}
else
{