Merge branch 'master' of git.rhrk.uni-kl.de:EIT-Wehn/dram.vp.system

This commit is contained in:
Matthias Jung
2016-10-26 11:20:28 +02:00
4 changed files with 12 additions and 8 deletions

View File

@@ -134,17 +134,21 @@ void ControllerCore::triggerRefresh(tlm::tlm_generic_payload& payload)
state->cleanUp(time);
if (!refreshManager->isInvalidated(payload, time) && !powerDownManager->isInSelfRefresh(bank)) {
if (!refreshManager->isInvalidated(payload, time) && !powerDownManager->isInSelfRefresh(bank))
{
printDebugMessage("Triggering refresh on bank " + to_string(bank.ID()));
powerDownManager->wakeUpForRefresh(bank, time); //expects PDNA and PDNP to exit without delay
bool pdnpToSrefTransition = false;
if (config.PowerDownMode == EPowerDownMode::Staggered) {
if (config.PowerDownMode == EPowerDownMode::Staggered)
{
pdnpToSrefTransition = state->getLastCommand(Command::PDNPX,bank).getStart() >= time;
}
if (pdnpToSrefTransition) {
if (pdnpToSrefTransition)
{
powerDownManager->sleep(bank,time);
}
else {
else
{
refreshManager->scheduleRefresh(payload, time);
}
}

View File

@@ -89,10 +89,10 @@ void RefreshManagerBankwise::scheduleRefresh(tlm::tlm_generic_payload& payload,
ScheduledCommand refresh(Command::AutoRefresh, time, getExecutionTime(Command::AutoRefresh, refreshPayload), extension);
controllerCore.getCommandChecker(Command::AutoRefresh).delayToSatisfyConstraints(refresh);
controllerCore.state->change(refresh);
extension.incrementRow();
controllerCore.controller.send(refresh, refreshPayload);
extension.incrementRow();
planNextRefresh(extension.getBank());
planNextRefresh(extension.getBank());
}
void RefreshManagerBankwise::planNextRefresh(Bank bank)

View File

@@ -83,7 +83,7 @@ void PrechargeAllChecker::delayToSatisfyConstraints(ScheduledCommand& command) c
}
else if (lastCommand.getCommand() == Command::SREFX)
{
command.establishMinDistanceFromStart(lastCommand.getEnd(), config.memSpec.tXSR);
command.establishMinDistanceFromStart(lastCommand.getStart(), config.memSpec.tXSR);
}
else
reportFatal("Precharge All Checker",

View File

@@ -104,7 +104,7 @@ void RefreshChecker::delayToSatisfyConstraints(ScheduledCommand& command) const
}
else if (lastCommand.getCommand() == Command::SREFX)
{
command.establishMinDistanceFromStart(lastCommand.getEnd(), config.memSpec.tXSR);
command.establishMinDistanceFromStart(lastCommand.getStart(), config.memSpec.tXSR);
}
else if (lastCommand.getCommand() == Command::AutoRefresh)
{