50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
/*
|
|
* BankwiseRefreshManager.cpp
|
|
*
|
|
* Created on: Mar 9, 2014
|
|
* Author: jonny
|
|
*/
|
|
|
|
#include <core/refresh/BankwiseRefreshManager.h>
|
|
|
|
using namespace std;
|
|
|
|
namespace controller {
|
|
|
|
BankwiseRefreshManager::BankwiseRefreshManager(vector<RefreshTiming> refreshTimings,
|
|
IInternalScheduler& internalScheduler)
|
|
{
|
|
assert(!refreshTimings.empty());
|
|
|
|
for (unsigned int i = 0; i < refreshTimings.size(); ++i)
|
|
{
|
|
RefreshManager* manager = new RefreshManager(refreshTimings.at(i), internalScheduler, Bank(i));
|
|
refreshManagerForBanks.push_back(manager);
|
|
}
|
|
}
|
|
|
|
BankwiseRefreshManager::~BankwiseRefreshManager()
|
|
{
|
|
for (unsigned int i = 0; i < refreshManagerForBanks.size(); ++i)
|
|
{
|
|
delete(refreshManagerForBanks.at(i));
|
|
}
|
|
}
|
|
|
|
bool BankwiseRefreshManager::hasCollision(const CommandSchedule& schedule)
|
|
{
|
|
RefreshManager& manager = *refreshManagerForBanks.at(schedule.getBank().ID());
|
|
return manager.hasCollision(schedule);
|
|
}
|
|
|
|
void BankwiseRefreshManager::scheduleRefresh(sc_time time)
|
|
{
|
|
for (unsigned int i = 0; i < refreshManagerForBanks.size(); ++i)
|
|
{
|
|
RefreshManager& manager = *refreshManagerForBanks.at(i);
|
|
manager.scheduleRefresh(time);
|
|
}
|
|
}
|
|
|
|
} /* namespace controller */
|