Files
DRAMSys/DRAM/src/core/scheduling/CommandSchedule.h
Janik Schlemminger 011e1a99ea Added: PrechargeChecker, ActivateChecker, ReadChecker, WriteChecker
Implemented: ActivateChecker
Added functionality to Bus (InternalScheduler)
2014-03-13 15:46:19 -07:00

68 lines
1.4 KiB
C++

/*
* CommandSchedule.h
*
* Created on: Mar 5, 2014
* Author: jonny
*/
#ifndef COMMANDSCHEDULE_H_
#define COMMANDSCHEDULE_H_
#include <vector>
#include "common/dramextension.h"
#include "ScheduledCommand.h"
namespace controller {
class CommandSchedule {
public:
CommandSchedule(const tlm::tlm_generic_payload& transaction) : transaction(transaction) {};
virtual ~CommandSchedule() {}
void add(Command command, sc_time time, sc_time executionTime)
{
assert(scheduledCommands.empty() || time >= scheduledCommands.back().getEnd());
scheduledCommands.push_back(ScheduledCommand(transaction, command, time, executionTime));
}
void add(ScheduledCommand scheduledCommand)
{
assert(&scheduledCommand.getTransaction() == &transaction);
scheduledCommands.push_back(scheduledCommand);
}
const std::vector<ScheduledCommand>& getScheduledCommands() const
{
return scheduledCommands;
}
sc_time getStart() const
{
return scheduledCommands.front().getStart();
}
sc_time getEnd() const
{
return scheduledCommands.back().getEnd();
}
sc_time getExecutionTime() const
{
return scheduledCommands.back().getEnd() - scheduledCommands.front().getStart();
}
common::Bank getBank() const
{
return common::DramExtension::getExtension(&transaction).getBank();
}
private:
std::vector<ScheduledCommand> scheduledCommands;
const tlm::tlm_generic_payload& transaction;
};
} /* namespace controller */
#endif /* COMMANDSCHEDULE_H_ */