Move methods from config to memspec.
This commit is contained in:
@@ -78,7 +78,6 @@ if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/src/common/third_party/sqlite-amalgamation)
|
||||
endif()
|
||||
|
||||
add_library(DRAMSysLibrary
|
||||
src/common/AddressDecoder.cpp
|
||||
src/common/DebugManager.cpp
|
||||
src/common/dramExtensions.cpp
|
||||
src/common/tlm2_base_protocol_checker.h
|
||||
@@ -149,6 +148,7 @@ add_library(DRAMSysLibrary
|
||||
src/error/ECC/Word.cpp
|
||||
|
||||
src/simulation/Arbiter.cpp
|
||||
src/simulation/AddressDecoder.cpp
|
||||
src/simulation/DRAMSys.cpp
|
||||
src/simulation/ReorderBuffer.h
|
||||
src/simulation/TemperatureController.cpp
|
||||
|
||||
@@ -258,21 +258,6 @@ void Configuration::setPathToResources(std::string path)
|
||||
temperatureSim.setPathToResources(path);
|
||||
}
|
||||
|
||||
// Returns the width of the data bus.
|
||||
// All DRAM chips on a DIMM operate in lockstep,
|
||||
// which constituing aggregate data bus width = chip's bus width * # locksteep-operated chips
|
||||
// The bus width is given in bits, e.g., 64-bit data bus, 128-bit data bus, etc.
|
||||
unsigned int Configuration::getDataBusWidth()
|
||||
{
|
||||
return memSpec->bitWidth * memSpec->numberOfDevicesOnDIMM;
|
||||
}
|
||||
|
||||
// Returns the number of bytes transfered in a burst
|
||||
unsigned int Configuration::getBytesPerBurst()
|
||||
{
|
||||
return (memSpec->burstLength * getDataBusWidth()) / 8;
|
||||
}
|
||||
|
||||
// Changes the number of bytes depeding on the ECC Controller. This function is needed for modules which get data directly or indirectly from the ECC Controller
|
||||
unsigned int Configuration::adjustNumBytesAfterECC(unsigned nBytes)
|
||||
{
|
||||
|
||||
@@ -110,8 +110,6 @@ public:
|
||||
// Temperature Simulation related
|
||||
TemperatureSimConfig temperatureSim;
|
||||
|
||||
unsigned int getDataBusWidth();
|
||||
unsigned int getBytesPerBurst();
|
||||
unsigned int adjustNumBytesAfterECC(unsigned bytes);
|
||||
void setPathToResources(std::string path);
|
||||
|
||||
|
||||
@@ -62,6 +62,8 @@ MemSpec::MemSpec(json &memspec, MemoryType memoryType,
|
||||
burstLength(parseUint(memspec["memarchitecturespec"]["burstLength"],"burstLength")),
|
||||
dataRate(parseUint(memspec["memarchitecturespec"]["dataRate"],"dataRate")),
|
||||
bitWidth(parseUint(memspec["memarchitecturespec"]["width"],"width")),
|
||||
dataBusWidth(bitWidth * numberOfDevicesOnDIMM),
|
||||
bytesPerBurst((burstLength * dataBusWidth) / 8),
|
||||
fCKMHz(parseUdouble(memspec["memtimingspec"]["clkMhz"], "clkMhz")),
|
||||
tCK(sc_time(1.0 / fCKMHz, SC_US)),
|
||||
memoryId(parseString(memspec["memoryId"], "memoryId")),
|
||||
|
||||
@@ -61,6 +61,8 @@ public:
|
||||
const unsigned burstLength;
|
||||
const unsigned dataRate;
|
||||
const unsigned bitWidth;
|
||||
const unsigned dataBusWidth;
|
||||
const unsigned bytesPerBurst;
|
||||
|
||||
// Clock
|
||||
const double fCKMHz;
|
||||
@@ -78,8 +80,7 @@ public:
|
||||
virtual TimeInterval getIntervalOnDataStrobe(Command) const = 0;
|
||||
|
||||
sc_time getCommandLength(Command) const;
|
||||
|
||||
virtual uint64_t getSimMemSizeInBytes() const = 0;
|
||||
virtual uint64_t getSimMemSizeInBytes() const = 0;
|
||||
|
||||
protected:
|
||||
MemSpec(nlohmann::json &memspec, MemoryType memoryType,
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#include "errormodel.h"
|
||||
#include "../common/DebugManager.h"
|
||||
#include "../simulation/TemperatureController.h"
|
||||
#include "../common/AddressDecoder.h"
|
||||
#include "../simulation/AddressDecoder.h"
|
||||
#include "../common/dramExtensions.h"
|
||||
|
||||
#include <random>
|
||||
@@ -51,7 +51,7 @@ void errorModel::init()
|
||||
// Get Configuration parameters:
|
||||
burstLenght = Configuration::getInstance().memSpec->burstLength;
|
||||
numberOfColumns = Configuration::getInstance().memSpec->numberOfColumns;
|
||||
bytesPerColumn = std::log2(Configuration::getInstance().getDataBusWidth());
|
||||
bytesPerColumn = std::log2(Configuration::getInstance().memSpec->dataBusWidth);
|
||||
|
||||
// Adjust number of bytes per column dynamically to the selected ecc controller
|
||||
bytesPerColumn = Configuration::getInstance().adjustNumBytesAfterECC(
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include <iostream>
|
||||
#include <systemc.h>
|
||||
#include "../configuration/Configuration.h"
|
||||
#include "../common/AddressDecoder.h"
|
||||
#include "../simulation/AddressDecoder.h"
|
||||
#include "../common/third_party/DRAMPower/src/libdrampower/LibDRAMPower.h"
|
||||
|
||||
class errorModel : public sc_module
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
#include <bitset>
|
||||
|
||||
#include "AddressDecoder.h"
|
||||
#include "utils.h"
|
||||
#include "../common/utils.h"
|
||||
#include "../configuration/Configuration.h"
|
||||
|
||||
using json = nlohmann::json;
|
||||
@@ -36,7 +36,7 @@
|
||||
*/
|
||||
|
||||
#include "Arbiter.h"
|
||||
#include "../common/AddressDecoder.h"
|
||||
#include "AddressDecoder.h"
|
||||
#include "../configuration/Configuration.h"
|
||||
|
||||
using namespace tlm;
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
#include <tlm_utils/multi_passthrough_target_socket.h>
|
||||
#include <tlm_utils/multi_passthrough_initiator_socket.h>
|
||||
#include <tlm_utils/peq_with_cb_and_phase.h>
|
||||
#include "../common/AddressDecoder.h"
|
||||
#include "AddressDecoder.h"
|
||||
#include "../common/dramExtensions.h"
|
||||
|
||||
class Arbiter : public sc_module
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
class Dram : public sc_module
|
||||
{
|
||||
private:
|
||||
unsigned int bytesPerBurst = Configuration::getInstance().getBytesPerBurst();
|
||||
unsigned int bytesPerBurst = Configuration::getInstance().memSpec->bytesPerBurst;
|
||||
bool powerReported = false;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -80,7 +80,7 @@ tlm_generic_payload *MemoryManager::allocate()
|
||||
if (storageEnabled)
|
||||
{
|
||||
// Allocate a data buffer and initialize it with zeroes:
|
||||
unsigned int dataLength = Configuration::getInstance().getBytesPerBurst();
|
||||
unsigned int dataLength = Configuration::getInstance().memSpec->bytesPerBurst;
|
||||
unsigned char *data = new unsigned char[dataLength];
|
||||
std::fill(data, data + dataLength, 0);
|
||||
payload->set_data_ptr(data);
|
||||
|
||||
@@ -56,7 +56,7 @@ StlPlayer::StlPlayer(sc_module_name name,
|
||||
|
||||
this->playerClk = playerClk;
|
||||
burstlength = Configuration::getInstance().memSpec->burstLength;
|
||||
dataLength = Configuration::getInstance().getBytesPerBurst();
|
||||
dataLength = Configuration::getInstance().memSpec->bytesPerBurst;
|
||||
lineCnt = 0;
|
||||
|
||||
currentBuffer->reserve(lineBufferSize);
|
||||
|
||||
Reference in New Issue
Block a user