50 lines
1.0 KiB
C++
50 lines
1.0 KiB
C++
/*
|
|
* BankwiseRefreshManager.cpp
|
|
*
|
|
* Created on: Mar 9, 2014
|
|
* Author: jonny
|
|
*/
|
|
|
|
#include "RefreshManager.h"
|
|
#include "../Controller.h"
|
|
|
|
using namespace std;
|
|
|
|
namespace core {
|
|
|
|
RefreshManager::RefreshManager(DramController& controller) : controller(controller)
|
|
{
|
|
assert(!controller.config.Timings.refreshTimings.empty());
|
|
|
|
for(Bank bank : controller.state.bankStates.getBanks())
|
|
{
|
|
refreshManagerForBanks.push_back(new RefreshManagerForBank(controller, bank));
|
|
}
|
|
}
|
|
|
|
RefreshManager::~RefreshManager()
|
|
{
|
|
|
|
for(RefreshManagerForBank* manager : refreshManagerForBanks)
|
|
{
|
|
delete manager;
|
|
}
|
|
}
|
|
|
|
bool RefreshManager::hasCollision(const CommandSchedule& schedule)
|
|
{
|
|
RefreshManagerForBank& manager = *refreshManagerForBanks.at(schedule.getBank().ID());
|
|
return manager.hasCollision(schedule);
|
|
}
|
|
|
|
void RefreshManager::scheduleRefresh(sc_time time)
|
|
{
|
|
for (unsigned int i = 0; i < refreshManagerForBanks.size(); ++i)
|
|
{
|
|
RefreshManagerForBank& manager = *refreshManagerForBanks.at(i);
|
|
manager.scheduleRefresh(time);
|
|
}
|
|
}
|
|
|
|
} /* namespace controller */
|