This commit is contained in:
Janik Schlemminger
2014-04-11 12:26:43 +02:00
32 changed files with 513 additions and 240 deletions

View File

@@ -26,6 +26,7 @@
#include "../scheduler/Scheduler.h"
#include "../scheduler/Fifo.h"
#include "../scheduler/Fr_Fcfs.h"
#include "../scheduler/PARBS.h"
using namespace std;
using namespace tlm;
@@ -61,10 +62,24 @@ public:
void buildScheduler()
{
string selectedScheduler = Configuration::getInstance().Scheduler;
if (selectedScheduler == "FR_FCFS")
scheduler = new FR_FCFS(*controller,
{
if(Configuration::getInstance().RefreshAwareScheduling)
cout << "Building refresh aware scheduler" << std::endl;
else
cout << "Building refresh un-aware scheduler" << std::endl;
scheduler = new FR_FCFS(controller->state.bankStates,
Configuration::getInstance().RefreshAwareScheduling,
Configuration::getInstance().AdaptiveOpenPagePolicy);
}
else if (selectedScheduler == "PAR_BS")
{
scheduler = new PAR_BS(controller->state.bankStates,
Configuration::getInstance().RefreshAwareScheduling,
Configuration::getInstance().Capsize);
}
else if (selectedScheduler == "FIFO")
scheduler = new Fifo();
else
@@ -90,7 +105,7 @@ public:
{
case Command::Read:
rec.recordPhase(payload, BEGIN_RD, command.getStart());
dataStrobe = command.getIntervalOnDataStrobe();
dataStrobe = command.getIntervalOnDataStrobe();
rec.updateDataStrobe(dataStrobe.start, dataStrobe.end, payload);
rec.recordPhase(payload, END_RD, command.getEnd());
@@ -99,7 +114,7 @@ public:
break;
case Command::ReadA:
rec.recordPhase(payload, BEGIN_RDA, command.getStart());
dataStrobe = command.getIntervalOnDataStrobe();
dataStrobe = command.getIntervalOnDataStrobe();
rec.updateDataStrobe(dataStrobe.start, dataStrobe.end, payload);
rec.recordPhase(payload, END_RDA, command.getEnd());
@@ -108,7 +123,7 @@ public:
break;
case Command::Write:
rec.recordPhase(payload, BEGIN_WR, command.getStart());
dataStrobe = command.getIntervalOnDataStrobe();
dataStrobe = command.getIntervalOnDataStrobe();
rec.updateDataStrobe(dataStrobe.start, dataStrobe.end, payload);
rec.recordPhase(payload, END_WR, command.getEnd());
@@ -117,7 +132,7 @@ public:
break;
case Command::WriteA:
rec.recordPhase(payload, BEGIN_WRA, command.getStart());
dataStrobe = command.getIntervalOnDataStrobe();
dataStrobe = command.getIntervalOnDataStrobe();
rec.updateDataStrobe(dataStrobe.start, dataStrobe.end, payload);
rec.recordPhase(payload, END_WRA, command.getEnd());

View File

@@ -39,7 +39,7 @@ Simulation::Simulation(sc_module_name name, string pathToResources, string trace
for (auto& d : devices)
{
if (d.burstLength == 0)
d.burstLength = 8;
d.burstLength = Configuration::getInstance().BurstLength;
}
player1 = new TracePlayer<>("player1", pathToResources + string("traces/") + devices[0].trace,

View File

@@ -29,7 +29,7 @@ struct DramSetup
struct Device
{
Device():trace("empty.stl"), burstLength(0){}
Device(std::string trace, unsigned int burstLength = 0) : trace(trace), burstLength(burstLength)
Device(std::string trace, unsigned int burstLength = 4) : trace(trace), burstLength(burstLength)
{
}
std::string trace;

View File

@@ -73,6 +73,7 @@ bool batchSetups(pair<string, string> tracePair, vector<DramSetup> setups)
int sc_main(int argc, char **argv)
{
sc_set_time_resolution(1, SC_PS);
resources = pathOfFile(argv[0]) + string("/../resources/");