Add the number of bytes per column access to the traceplayer

This commit is contained in:
Matthias Jung
2015-07-29 22:59:17 +02:00
parent 979f4a0db4
commit 41e98fad40
2 changed files with 11 additions and 9 deletions

View File

@@ -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<BUSWIDTH>::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

View File

@@ -67,7 +67,7 @@ protected:
gp* allocatePayload();
tlm_utils::peq_with_cb_and_phase<TracePlayer> 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<BUSWIDTH>::printDebugMessage(std::string message)
template<unsigned int BUSWIDTH>
//TODO: this doesn't depend on the tracePlayer, move it somewhere
void TracePlayer<BUSWIDTH>::setDataPointer(gp* payload, unsigned char * dataElement)
void TracePlayer<BUSWIDTH>::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;
}