SDRAM Controller bug: missed data word
I have a project (attachment) using an open source 32-bit RISC-V processor connected in Qsys through 32-bit AXI bus and SDRAM Controller (v 18.1) to 16-bit SDRAM memory. Due to width mismatch, each AXI read request involves two access to the SDRAM memory. My problem is that on each AXI access, I receive 32-bits word consisting of two identical 16-bit sub-words. I believe there is a bug related to the za_valid signal of the automatically generated sdram_emif module, which seems to be asserted one clock cycle too late:
In the enclosed screenshot from the SignalTap tool, one can see in the bottom, that first valid data word ('h5a5a) on za_data bus is missed, and the za_valid spawns through two clock cycles of the second word ('ha5a5) eventually leading to a fake word on the AXI bus.