Fix byte calculation in axi_sim_mem R and W forks #331
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi all!
I found this bug when accessing the simulation RAM with
ax.size = 0
and 32-bit data bus.During an increment access to the memory, when
r_cnt % strb_width != 0
, the address of the location accessed (addr
) is calculated withax_queue[0].addr
(e.g. 2nd beat of an INCR burst at location 0x10 has an address of 0x11), but thenaddr
is used to determine the byte in the 32-bit word, causing it to make the offset with 0x11 instead of 0x10.In particular, for
r_cnt = 1
, the byte calculated was 2 instead of 1.