From 41e98fad401f54ac65135c75de88c1985039ca56 Mon Sep 17 00:00:00 2001 From: Matthias Jung Date: Wed, 29 Jul 2015 22:59:17 +0200 Subject: [PATCH] Add the number of bytes per column access to the traceplayer --- DRAMSys/dramSys/src/simulation/StlPlayer.h | 12 +++++++----- DRAMSys/dramSys/src/simulation/TracePlayer.h | 8 ++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/DRAMSys/dramSys/src/simulation/StlPlayer.h b/DRAMSys/dramSys/src/simulation/StlPlayer.h index bf9e78f4..355e7e5e 100644 --- a/DRAMSys/dramSys/src/simulation/StlPlayer.h +++ b/DRAMSys/dramSys/src/simulation/StlPlayer.h @@ -72,14 +72,14 @@ public: unsigned long long parsedAdress = std::stoull(address.c_str(), 0, 16); gp* payload = this->allocatePayload(); - unsigned char * dataElement = new unsigned char[16*2]; // TODO: column / burst breite + unsigned char * dataElement = new unsigned char[bytesPerColumn*burstlength]; payload->set_address(parsedAdress); payload->set_response_status(TLM_INCOMPLETE_RESPONSE); payload->set_dmi_allowed(false); payload->set_byte_enable_length(0); - payload->set_streaming_width(burstlenght); - this->setDataPointer(payload, dataElement); + payload->set_streaming_width(burstlength); + this->setDataPointer(payload, dataElement, bytesPerColumn*burstlength); if (command == "read") { @@ -127,7 +127,8 @@ public: private: ifstream file; - unsigned int burstlenght; + unsigned int burstlength; + unsigned int bytesPerColumn; sc_time clk; }; @@ -145,7 +146,8 @@ StlPlayer::StlPlayer(sc_module_name /*name*/, string pathToTrace, unsi else clk = FrequencyToClk(clkMhz); - this->burstlenght = Configuration::getInstance().memSpec.BurstLength; + this->burstlength = Configuration::getInstance().memSpec.BurstLength; + this->bytesPerColumn = xmlAddressDecoder::getInstance().amount["bytes"]; } #endif // STLPLAYER_H diff --git a/DRAMSys/dramSys/src/simulation/TracePlayer.h b/DRAMSys/dramSys/src/simulation/TracePlayer.h index 94eb99fd..a376a93a 100644 --- a/DRAMSys/dramSys/src/simulation/TracePlayer.h +++ b/DRAMSys/dramSys/src/simulation/TracePlayer.h @@ -67,7 +67,7 @@ protected: gp* allocatePayload(); tlm_utils::peq_with_cb_and_phase payloadEventQueue; void terminate(); - void setDataPointer(gp* p, unsigned char * data); + void setDataPointer(gp* p, unsigned char * data, unsigned int size); void printDebugMessage(std::string message); private: @@ -108,12 +108,12 @@ void TracePlayer::printDebugMessage(std::string message) template //TODO: this doesn't depend on the tracePlayer, move it somewhere -void TracePlayer::setDataPointer(gp* payload, unsigned char * dataElement) +void TracePlayer::setDataPointer(gp* payload, unsigned char * dataElement, unsigned int size) { //check if payload takes ownership - payload->set_data_length(16*2); // TODO: column / burst breite ..... buswidth * burst /8 + payload->set_data_length(size); payload->set_data_ptr(dataElement); - for(int i = 0; i < 16*2; i++) // TODO: column / burst breite + for(int i = 0; i < size; i++) dataElement[i] = 0; }