diff --git a/DRAMSys/library/src/controller/core/TimingCalculation.cpp b/DRAMSys/library/src/controller/core/TimingCalculation.cpp index 9fa99597..224fd7b1 100644 --- a/DRAMSys/library/src/controller/core/TimingCalculation.cpp +++ b/DRAMSys/library/src/controller/core/TimingCalculation.cpp @@ -91,11 +91,14 @@ sc_time getExecutionTime(Command command, tlm::tlm_generic_payload &payload) return config.tRP; } else if (command == Command::AutoRefresh) { if (Configuration::getInstance().getRefMode() == 4) - return getElementFromMap(config.refreshTimings, DramExtension::getExtension(payload).getBank()).tRFC4; + return getElementFromMap(config.refreshTimings, + DramExtension::getExtension(payload).getBank()).tRFC4; else if (Configuration::getInstance().getRefMode() == 2) - return getElementFromMap(config.refreshTimings, DramExtension::getExtension(payload).getBank()).tRFC2; + return getElementFromMap(config.refreshTimings, + DramExtension::getExtension(payload).getBank()).tRFC2; else - return getElementFromMap(config.refreshTimings, DramExtension::getExtension(payload).getBank()).tRFC; + return getElementFromMap(config.refreshTimings, + DramExtension::getExtension(payload).getBank()).tRFC; } else if (command == Command::PDNAX || command == Command::PDNPX || command == Command::SREFX) { return config.clk; diff --git a/DRAMSys/library/src/controller/core/configuration/MemSpec.h b/DRAMSys/library/src/controller/core/configuration/MemSpec.h index 7245e6d1..d615866a 100644 --- a/DRAMSys/library/src/controller/core/configuration/MemSpec.h +++ b/DRAMSys/library/src/controller/core/configuration/MemSpec.h @@ -44,8 +44,10 @@ struct RefreshTiming { RefreshTiming() {} - RefreshTiming(sc_time tRFC, sc_time tREFI) : tRFC(tRFC), tRFC2(SC_ZERO_TIME), tRFC4(SC_ZERO_TIME), tREFI(tREFI) {} - RefreshTiming(sc_time tRFC, sc_time tRFC2, sc_time tRFC4, sc_time tREFI) : tRFC(tRFC), tRFC2(tRFC2), tRFC4(tRFC4), tREFI(tREFI) {} + RefreshTiming(sc_time tRFC, sc_time tREFI) : tRFC(tRFC), tRFC2(SC_ZERO_TIME), + tRFC4(SC_ZERO_TIME), tREFI(tREFI) {} + RefreshTiming(sc_time tRFC, sc_time tRFC2, sc_time tRFC4, + sc_time tREFI) : tRFC(tRFC), tRFC2(tRFC2), tRFC4(tRFC4), tREFI(tREFI) {} sc_time tRFC; sc_time tRFC2; sc_time tRFC4; diff --git a/DRAMSys/library/src/controller/core/scheduling/checker/ActBChecker.cpp b/DRAMSys/library/src/controller/core/scheduling/checker/ActBChecker.cpp index d3478dc9..fff23cde 100644 --- a/DRAMSys/library/src/controller/core/scheduling/checker/ActBChecker.cpp +++ b/DRAMSys/library/src/controller/core/scheduling/checker/ActBChecker.cpp @@ -62,14 +62,14 @@ void ActBChecker::delayToSatisfyConstraints(ScheduledCommand &cmd) const config.memSpec.tWL + getWriteAccessTime() + config.memSpec.tWR + config.memSpec.tRP); } else if (lcb.getCommand() == Command::AutoRefresh) { - auto m = Configuration::getInstance().getRefMode(); - if (m == 4) - cmd.establishMinDistanceFromStart(lcb.getStart(), config.memSpec.tRFC4); - else if (m == 2) - cmd.establishMinDistanceFromStart(lcb.getStart(), config.memSpec.tRFC2); - else - cmd.establishMinDistanceFromStart(lcb.getStart(), config.memSpec.tRFC); - } else if (lcb.getCommand() == Command::PDNPX + auto m = Configuration::getInstance().getRefMode(); + if (m == 4) + cmd.establishMinDistanceFromStart(lcb.getStart(), config.memSpec.tRFC4); + else if (m == 2) + cmd.establishMinDistanceFromStart(lcb.getStart(), config.memSpec.tRFC2); + else + cmd.establishMinDistanceFromStart(lcb.getStart(), config.memSpec.tRFC); + } else if (lcb.getCommand() == Command::PDNPX || lcb.getCommand() == Command::PDNAX) { cmd.establishMinDistanceFromStart(lcb.getStart(), config.memSpec.tXP); } else if (lcb.getCommand() == Command::SREFX) { diff --git a/DRAMSys/library/src/controller/core/scheduling/checker/ActivateChecker.cpp b/DRAMSys/library/src/controller/core/scheduling/checker/ActivateChecker.cpp index 0fbdca29..86a6b0a1 100644 --- a/DRAMSys/library/src/controller/core/scheduling/checker/ActivateChecker.cpp +++ b/DRAMSys/library/src/controller/core/scheduling/checker/ActivateChecker.cpp @@ -71,13 +71,16 @@ void ActivateChecker::delayToSatisfyConstraints(ScheduledCommand &command) const config.memSpec.tWL + getWriteAccessTime() + config.memSpec.tWR + config.memSpec.tRP); } else if (lastCommandOnBank.getCommand() == Command::AutoRefresh) { - auto m = Configuration::getInstance().getRefMode(); - if (m == 4) - command.establishMinDistanceFromStart(lastCommandOnBank.getStart(), config.memSpec.tRFC4); - else if (m == 2) - command.establishMinDistanceFromStart(lastCommandOnBank.getStart(), config.memSpec.tRFC2); - else - command.establishMinDistanceFromStart(lastCommandOnBank.getStart(), config.memSpec.tRFC); + auto m = Configuration::getInstance().getRefMode(); + if (m == 4) + command.establishMinDistanceFromStart(lastCommandOnBank.getStart(), + config.memSpec.tRFC4); + else if (m == 2) + command.establishMinDistanceFromStart(lastCommandOnBank.getStart(), + config.memSpec.tRFC2); + else + command.establishMinDistanceFromStart(lastCommandOnBank.getStart(), + config.memSpec.tRFC); } else if (lastCommandOnBank.getCommand() == Command::PDNPX || lastCommandOnBank.getCommand() == Command::PDNAX) { command.establishMinDistanceFromStart(lastCommandOnBank.getStart(), diff --git a/DRAMSys/library/src/controller/core/scheduling/checker/PowerDownChecker.cpp b/DRAMSys/library/src/controller/core/scheduling/checker/PowerDownChecker.cpp index eec65fb8..6e066b61 100644 --- a/DRAMSys/library/src/controller/core/scheduling/checker/PowerDownChecker.cpp +++ b/DRAMSys/library/src/controller/core/scheduling/checker/PowerDownChecker.cpp @@ -54,13 +54,13 @@ sc_time PowerDownChecker::getTimeConstraintToEnterPowerDown(Command lastCmd, constraint = config.memSpec.tWL + getWriteAccessTime() + config.memSpec.tWR + config.memSpec.clk; } else if (lastCmd == Command::AutoRefresh) { - auto m = Configuration::getInstance().getRefMode(); - if (m == 4) - constraint = config.memSpec.tRFC4; - else if (m == 2) - constraint = config.memSpec.tRFC2; - else - constraint = config.memSpec.tRFC; + auto m = Configuration::getInstance().getRefMode(); + if (m == 4) + constraint = config.memSpec.tRFC4; + else if (m == 2) + constraint = config.memSpec.tRFC2; + else + constraint = config.memSpec.tRFC; } else if (lastCmd == Command::PDNPX || lastCmd == Command::PDNAX) { constraint = config.memSpec.tXP; } else if (lastCmd == Command::SREFX) { diff --git a/DRAMSys/library/src/controller/core/scheduling/checker/PrechargeAllChecker.cpp b/DRAMSys/library/src/controller/core/scheduling/checker/PrechargeAllChecker.cpp index e98ca7a7..31b5732e 100644 --- a/DRAMSys/library/src/controller/core/scheduling/checker/PrechargeAllChecker.cpp +++ b/DRAMSys/library/src/controller/core/scheduling/checker/PrechargeAllChecker.cpp @@ -70,15 +70,18 @@ const config.memSpec.tWL + getWriteAccessTime() + config.memSpec.tWR + config.memSpec.tRP); } else if (lastCommand.getCommand() == Command::AutoRefresh) { - auto m = Configuration::getInstance().getRefMode(); - if (m == 4) - command.establishMinDistanceFromStart(lastCommand.getStart(), config.memSpec.tRFC4); - else if (m == 2) - command.establishMinDistanceFromStart(lastCommand.getStart(), config.memSpec.tRFC2); - else - command.establishMinDistanceFromStart(lastCommand.getStart(), config.memSpec.tRFC); - } else if (lastCommand.getCommand() == Command::PDNAX - || lastCommand.getCommand() == Command::PDNPX) { + auto m = Configuration::getInstance().getRefMode(); + if (m == 4) + command.establishMinDistanceFromStart(lastCommand.getStart(), + config.memSpec.tRFC4); + else if (m == 2) + command.establishMinDistanceFromStart(lastCommand.getStart(), + config.memSpec.tRFC2); + else + command.establishMinDistanceFromStart(lastCommand.getStart(), + config.memSpec.tRFC); + } else if (lastCommand.getCommand() == Command::PDNAX + || lastCommand.getCommand() == Command::PDNPX) { command.establishMinDistanceFromStart(lastCommand.getStart(), config.memSpec.tXP); } else if (lastCommand.getCommand() == Command::SREFX) { diff --git a/DRAMSys/library/src/simulation/Dram.h b/DRAMSys/library/src/simulation/Dram.h index 8d9f198c..be46ff2a 100644 --- a/DRAMSys/library/src/simulation/Dram.h +++ b/DRAMSys/library/src/simulation/Dram.h @@ -151,13 +151,13 @@ struct Dram : sc_module { memTimingSpec.RC = Configuration::getInstance().memSpec.tRC / clk; memTimingSpec.RCD = Configuration::getInstance().memSpec.tRCD / clk; memTimingSpec.REFI = Configuration::getInstance().memSpec.tREFI / clk; - auto m = Configuration::getInstance().getRefMode(); - if (m == 4) - memTimingSpec.RFC = Configuration::getInstance().memSpec.tRFC4 / clk; - else if (m == 2) - memTimingSpec.RFC = Configuration::getInstance().memSpec.tRFC2 / clk; - else - memTimingSpec.RFC = Configuration::getInstance().memSpec.tRFC / clk; + auto m = Configuration::getInstance().getRefMode(); + if (m == 4) + memTimingSpec.RFC = Configuration::getInstance().memSpec.tRFC4 / clk; + else if (m == 2) + memTimingSpec.RFC = Configuration::getInstance().memSpec.tRFC2 / clk; + else + memTimingSpec.RFC = Configuration::getInstance().memSpec.tRFC / clk; memTimingSpec.RL = Configuration::getInstance().memSpec.tRL / clk; memTimingSpec.RP = Configuration::getInstance().memSpec.tRP / clk; memTimingSpec.RRD = Configuration::getInstance().memSpec.tRRD_S / clk;