Files
DRAMSys/DRAM/dram/core/refresh/RefreshManager.h
2014-03-15 18:31:16 +01:00

42 lines
1.0 KiB
C++

/*
* RefreshManager.h
*
* Created on: Mar 6, 2014
* Author: jonny
*/
#ifndef REFRESHMANAGER_H_
#define REFRESHMANAGER_H_
#include "IRefreshManager.h"
#include "common/dramExtension.h"
namespace controller {
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_ */