summaryrefslogtreecommitdiff
path: root/ext/drampower/src/MemCommand.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ext/drampower/src/MemCommand.cc')
-rw-r--r--ext/drampower/src/MemCommand.cc43
1 files changed, 16 insertions, 27 deletions
diff --git a/ext/drampower/src/MemCommand.cc b/ext/drampower/src/MemCommand.cc
index 156716c2f..5e1115e05 100644
--- a/ext/drampower/src/MemCommand.cc
+++ b/ext/drampower/src/MemCommand.cc
@@ -44,15 +44,9 @@
using namespace Data;
using namespace std;
-MemCommand::MemCommand() :
- type(MemCommand::PRE),
- bank(0),
- timestamp(0)
-{
-}
MemCommand::MemCommand(MemCommand::cmds type,
- unsigned bank, double timestamp) :
+ unsigned bank, int64_t timestamp) :
type(type),
bank(bank),
timestamp(timestamp)
@@ -80,35 +74,35 @@ unsigned MemCommand::getBank() const
}
// For auto-precharge with read or write - to calculate cycle of precharge
-int MemCommand::getPrechargeOffset(const MemorySpecification& memSpec,
+int64_t MemCommand::getPrechargeOffset(const MemorySpecification& memSpec,
MemCommand::cmds type) const
{
- int precharge_offset = 0;
+ int64_t precharge_offset = 0;
- int BL(static_cast<int>(memSpec.memArchSpec.burstLength));
- int RTP(static_cast<int>(memSpec.memTimingSpec.RTP));
- int dataRate(static_cast<int>(memSpec.memArchSpec.dataRate));
- int AL(static_cast<int>(memSpec.memTimingSpec.AL));
- int WL(static_cast<int>(memSpec.memTimingSpec.WL));
- int WR(static_cast<int>(memSpec.memTimingSpec.WR));
- int B = BL/dataRate;
+ int64_t BL = memSpec.memArchSpec.burstLength;
+ int64_t RTP = memSpec.memTimingSpec.RTP;
+ int64_t dataRate = memSpec.memArchSpec.dataRate;
+ int64_t AL = memSpec.memTimingSpec.AL;
+ int64_t WL = memSpec.memTimingSpec.WL;
+ int64_t WR = memSpec.memTimingSpec.WR;
+ int64_t B = BL/dataRate;
const MemoryType::MemoryType_t& memType = memSpec.memoryType;
// Read with auto-precharge
if (type == MemCommand::RDA) {
if (memType == MemoryType::DDR2) {
- precharge_offset = B + AL - 2 + max(RTP, 2);
+ precharge_offset = B + AL - 2 + max(RTP, int64_t(2));
} else if (memType == MemoryType::DDR3) {
- precharge_offset = AL + max(RTP, 4);
+ precharge_offset = AL + max(RTP, int64_t(4));
} else if (memType == MemoryType::DDR4) {
precharge_offset = AL + RTP;
} else if (memType == MemoryType::LPDDR) {
precharge_offset = B;
} else if (memType == MemoryType::LPDDR2) {
- precharge_offset = B + max(0, RTP - 2);
+ precharge_offset = B + max(int64_t(0), RTP - 2);
} else if (memType == MemoryType::LPDDR3) {
- precharge_offset = B + max(0, RTP - 4);
+ precharge_offset = B + max(int64_t(0), RTP - 4);
} else if (memType == MemoryType::WIDEIO_SDR) {
precharge_offset = B;
}
@@ -133,19 +127,14 @@ int MemCommand::getPrechargeOffset(const MemorySpecification& memSpec,
return precharge_offset;
} // MemCommand::getPrechargeOffset
-void MemCommand::setTime(double _timestamp)
+void MemCommand::setTime(int64_t _timestamp)
{
timestamp = _timestamp;
}
-double MemCommand::getTime() const
-{
- return timestamp;
-}
-
int64_t MemCommand::getTimeInt64() const
{
- return static_cast<int64_t>(timestamp);
+ return timestamp;
}
MemCommand::cmds MemCommand::typeWithoutAutoPrechargeFlag() const