Files
DRAMSys/dram/src/core/refresh/RefreshManager.h
2014-03-16 13:35:47 -07:00

42 lines
1023 B
C++

/*
* RefreshManager.h
*
* Created on: Mar 6, 2014
* Author: jonny
*/
#ifndef REFRESHMANAGER_H_
#define REFRESHMANAGER_H_
#include "IRefreshManager.h"
#include "common/dramExtension.h"
namespace core {
class RefreshManager : public IRefreshManager
{
public:
RefreshManager(const RefreshTiming& refreshTiming, IInternalScheduler& internalScheduler);
RefreshManager(const RefreshTiming& refreshTiming, IInternalScheduler& internalScheduler, Bank bank);
virtual ~RefreshManager();
virtual bool hasCollision(const CommandSchedule& schedule);
virtual void scheduleRefresh(sc_time time);
private:
const RefreshTiming& refreshTiming;
IInternalScheduler& internalScheduler;
tlm::tlm_generic_payload refreshTransaction;
ScheduledCommand* nextPlannedRefresh;
void scheduleRefresh(ScheduledCommand& refresh);
void planNextRefresh(ScheduledCommand& refresh);
static void setupTransaction(tlm::tlm_generic_payload& transaction, Bank bank);
};
} /* namespace controller */
#endif /* REFRESHMANAGER_H_ */