Merge remote branch 'upstream/master'
This commit is contained in:
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 300 KiB |
Submodule DRAMSys/simulator/src/common/third_party/DRAMPower updated: 5878beedbc...abcdd0184e
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user