42 lines
1.0 KiB
C++
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_ */
|