Article ID: 000083851 Content Type: Troubleshooting Last Reviewed: 08/21/2023

Why do I see incorrect read data when using a Hard Memory Controller with multiple MPFE ports?

Environment

  • Quartus® II Subscription Edition
  • DDR3 SDRAM Controller with UniPHY Intel® FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Description

    When performing write and read transactions to the hard memory controller (HMC) MPFE ports, you may observe that the read transactions are performed before the write transactions, even when the write priority is higher. As a result, the read data may be incorrect.

    For example, if your HMC MPFE ports are set as follows:

    Port0 is configured as write-only, priority set to 7, and weight set to 0
    Port1 is configured as read-only, priority set to 1, and weight set to 0

    If you perform a write request on Port0 to address 'addr0' with data 'data0' and a read request on Port1 to address 'addr0' simultaneously, the data read back should always be 'data0'. There is a problem in the HMC where the read data is not as expected.

     

    Resolution

    The workaround is to delay performing read requests to an address range until all write requests to the same address range are completed. An alternative approach is to read from a different region of memory than the one that is being written to.

    Related Products

    This article applies to 11 products

    Cyclone® V ST SoC FPGA
    Arria® V ST SoC FPGA
    Arria® V GX FPGA
    Arria® V GT FPGA
    Cyclone® V SX SoC FPGA
    Cyclone® V GT FPGA
    Cyclone® V GX FPGA
    Arria® V GZ FPGA
    Arria® V SX SoC FPGA
    Cyclone® V E FPGA
    Cyclone® V SE SoC FPGA