@@ -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"):
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user