49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
/*
|
|
* BankwiseRefreshManager.cpp
|
|
*
|
|
* Created on: Mar 9, 2014
|
|
* Author: jonny
|
|
*/
|
|
|
|
#include "BankwiseRefreshManager.h"
|
|
|
|
using namespace std;
|
|
|
|
namespace core {
|
|
|
|
BankwiseRefreshManager::BankwiseRefreshManager(CommandBus& bus, vector<RefreshTiming> refreshTimings)
|
|
{
|
|
assert(!refreshTimings.empty());
|
|
|
|
for (unsigned int i = 0; i < refreshTimings.size(); ++i)
|
|
{
|
|
RefreshManager* manager = new RefreshManager(bus, refreshTimings.at(i), 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 */
|