ogheri
Newbie level 1
meaning and interpretation of the SystemC TLM2 "streaming width" parameter..
Hi dear all,
sorry if I perhaps ask an even too easy question for some of you:
At a customer site, I had a SystemC TLM2 code snippet that was like:
req.set_streaming_width(4);
req.set_data_length(req.get_streaming_width()*burstSize);
req.set_address(_slaveBase + ADDR_SPACE);
req.set_read();
result = doAccess( req );
assert( result == tlm::TLM_OK_RESPONSE );
and this was, in my opinion, right, i.e. I understand that in a burst (AHB in this case) transaction of multiple beats, where
the number of beats is burstSize and the bus width is 32 bits, I assumed I had to set up the streaming width to 4 (bytes),
the data_length of the COMPLETE read transaction to 4 * beats
and then proceed with the read, or am I wrong ?
I am asking because the internal "checkers" developed at this company have code such as:
if (wid < len)
SC_REPORT_ERROR("TLM-2",
"Target does not support given generic payload transaction");
which I suppose, they took directly from the Doulos tutorials, for example, but that, as I understood, apply to the case of NOT BURSTED transactions ...
Am I right, and the checkers are not correctly written ? (at least, not for the BURSTED case) ?
Or did I understood wrong, and really the streaming width parameter MUST BE >= the total transaction length ?
Thx in advance for any hint
Alex Ogheri
Hi dear all,
sorry if I perhaps ask an even too easy question for some of you:
At a customer site, I had a SystemC TLM2 code snippet that was like:
req.set_streaming_width(4);
req.set_data_length(req.get_streaming_width()*burstSize);
req.set_address(_slaveBase + ADDR_SPACE);
req.set_read();
result = doAccess( req );
assert( result == tlm::TLM_OK_RESPONSE );
and this was, in my opinion, right, i.e. I understand that in a burst (AHB in this case) transaction of multiple beats, where
the number of beats is burstSize and the bus width is 32 bits, I assumed I had to set up the streaming width to 4 (bytes),
the data_length of the COMPLETE read transaction to 4 * beats
and then proceed with the read, or am I wrong ?
I am asking because the internal "checkers" developed at this company have code such as:
if (wid < len)
SC_REPORT_ERROR("TLM-2",
"Target does not support given generic payload transaction");
which I suppose, they took directly from the Doulos tutorials, for example, but that, as I understood, apply to the case of NOT BURSTED transactions ...
Am I right, and the checkers are not correctly written ? (at least, not for the BURSTED case) ?
Or did I understood wrong, and really the streaming width parameter MUST BE >= the total transaction length ?
Thx in advance for any hint
Alex Ogheri
Last edited: