/* * TimingConfiguration.h * * Created on: Mar 6, 2014 * Author: jonny */ #ifndef TIMINGS_H_ #define TIMINGS_H_ #include #include "core/utils/Utils.h" namespace core{ 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 = 3*clk; //act -> read/write tRL = 3*clk; //read latency (read command start to data strobe) tTAW = clkAlign(sc_time(50, SC_NS), clk); //two activate window } sc_time clk; sc_time tRP; sc_time tRAS; sc_time tRC; sc_time tRRD; sc_time tRCD; sc_time tTAW; sc_time tRL; std::vector refreshTimings; }; } /* namespace controller */ #endif /* TimingConfiguration_H_ */