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

62 lines
1.2 KiB
C++

/*
* TimingConfiguration.h
*
* Created on: Mar 6, 2014
* Author: jonny
*/
#ifndef TIMINGS_H_
#define TIMINGS_H_
#include <systemc.h>
#include "core/utils/Utils.h"
namespace controller{
struct RefreshTiming
{
RefreshTiming(sc_time tRFC, sc_time tREFI) : tRFC(tRFC), tREFI(tREFI) {}
sc_time tRFC;
sc_time tREFI;
};
struct TimingConfiguration
{
TimingConfiguration(unsigned int numberOfBanks)
{
for (unsigned int i = 0; i < numberOfBanks; ++i)
{
sc_time tRFC = 18*clk;
sc_time tREFI = sc_time(15.6, SC_US); //TODO align
refreshTimings.push_back(RefreshTiming(tRFC, tREFI));
}
clk = sc_time(6.0, SC_NS); // 166MHz
tRP = 3*clk; //precharge-time (pre -> act same bank)
tRAS = 6*clk; //active-time (act -> pre same bank)
tRC = tRP + tRAS; //RAS-cycle-time (min time bw 2 succesive ACT to same bank)
tRRD = 2*clk; //(min time bw 2 succesive ACT to different banks)
tRCD = 5*clk; //act -> read/write
tTAW = clkAlign(sc_time(50, SC_NS), clk);
}
sc_time clk;
sc_time tRP;
sc_time tRAS;
sc_time tRC;
sc_time tRRD;
sc_time tRCD;
sc_time tTAW;
std::vector<RefreshTiming> refreshTimings;
};
} /* namespace controller */
#endif /* TimingConfiguration_H_ */