Merge pull request #121 from sprado/master

PDNP-SREF Transition
This commit is contained in:
fzeder
2016-10-20 20:04:51 +02:00
committed by GitHub Enterprise
2 changed files with 13 additions and 5 deletions

View File

@@ -259,7 +259,7 @@ def phase_transitions_are_valid(connection):
validTransitions['REFB'] = set(['ACT', 'REFB', 'PDNPB', 'SREFB'])
validTransitions['PDNAB'] = set(['PRE', 'RD', 'RDA', 'WR', 'WRA', 'REFB'])
validTransitions['PDNPB'] = set(['ACT', 'REFB'])
validTransitions['PDNPB'] = set(['ACT', 'REFB', 'SREFB'])
validTransitions['SREFB'] = set(['ACT'])
else:
validTransitions['PRE'] = set(['ACT', 'PRE_ALL'])
@@ -274,7 +274,7 @@ def phase_transitions_are_valid(connection):
validTransitions['REFA'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP', 'SREF'])
validTransitions['PDNA'] = set(['PRE', 'PRE_ALL', 'ACT', 'RD', 'RDA', 'WR', 'WRA', 'REFA', 'PDNA', 'PDNP'])
validTransitions['PDNP'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP'])
validTransitions['PDNP'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP', 'SREF'])
validTransitions['SREF'] = set(['PRE_ALL', 'ACT', 'REFA', 'PDNA', 'PDNP'])
if (dramconfig.bankwiseLogic == "1"):

View File

@@ -134,11 +134,19 @@ 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
refreshManager->scheduleRefresh(payload, time);
bool pdnpToSrefTransition = false;
if (config.PowerDownMode == EPowerDownMode::Staggered) {
pdnpToSrefTransition = state->getLastCommand(Command::PDNPX,bank).getStart() >= time;
}
if (pdnpToSrefTransition) {
powerDownManager->sleep(bank,time);
}
else {
refreshManager->scheduleRefresh(payload, time);
}
}
}
}