Due to a problem in the Intel® Quartus® Prime Standard Edition software version 19.1 and earlier, you will see incorrect data when reading from a Sequential Access Memory (SAM) that implemented using an inferred True Dual Port RAM or Simple dual port RAM. Example code that generates the incorrect readback is shown below.
if rising_edge(clk) then
if read_enable = '1' then
read_addr <= std_logic_vector(unsigned(read_addr) 1);
read_data <= ram(to_integer(unsigned(read_addr)));
end if;
end if;
In this example, if the intended addresses to be read from are 5, 6, 7, 8, etc, the data would be read from addresses 6, 7, 8, 9, etc. This is true for address increments/decrements of any value (i.e. not just 1 as shown in this example). This error may be seen on the Intel® Arria® Series, Intel® Cyclone® Series, Stratix® Series and MAX Series devices.
This problem is fixed beginning with the Intel® Quartus® Prime Standard Edition software version 20.1.
If you are still in the design phase of your project and are using the Intel® Quartus® Prime Standard Edition software version 19.1 or earlier:
(1) Upgrade to the latest Intel® Quartus® Prime Standard Edition software version 20.1 or later.
If you are targeting the Intel® Quartus® Prime Standard Edition software version 19.1 or earlier, and your project is finalized and in the production phase, please follow through step (1) to (3) for impact assessment on each individual compilation:
(1) Download and install the Screening Patch from the appropriate link below.
(2) Recompile your design with the Screening Patch installed.
a. If your design is affected, you will see following warning in Quartus compilation flow message window. Proceed with Step (3).
Warning (21938): Screening patch found an incorrect logic connection condition. Upgrade to the latest version of the Intel Quartus Prime Software (Quartus Standard version 20.1 or later) to avoid RAM corruption. For more information, visit the Knowledge Database at https://www.intel.com/content/altera-www/global/en_us/index/support/support-resources/knowledge-base/tools/2020/why-is-there-seed-dependent-ram-data-corruption-quartus-std.html
b. If the above warning is not reported, no further action required.
(3) Upgrade to the latest Intel® Quartus® Prime Standard Edition software version 20.1 or later.
For Intel® Quartus® Prime Standard Edition software version 18.1, download the Screening Patch 0.18std from the appropriate link below.
Download Intel® Quartus® Prime Standard Edition software version 18.1 Screening Patch 0.18std for Windows (.exe)
Download Intel® Quartus® Prime Standard Edition software version 18.1 Screening Patch 0.18std for Linux (.run)
Download the Readme for Intel® Quartus® Prime Standard Edition software version 18.1 Screening Patch 0.18std (.txt)
For Intel® Quartus® Prime Standard Edition software version 19.1, download the Screening Patch 0.10std from the appropriate link below.
Download Intel® Quartus® Prime Standard Edition software version 19.1 Screening Patch 0.10std for Windows (.exe)
Download Intel® Quartus® Prime Standard Edition software version 19.1 Screening Patch 0.10std for Linux (.run)
Download the Readme for Intel® Quartus® Prime Standard Edition software version 19.1 Screening Patch 0.10std (.txt)
Note:
1. The available screening patches are targeted for recent 2 years of Intel® Quartus® Prime Standard Edition releases. Contact Intel and quote ID #1509115906 if you are impacted and requires patch support for Intel® Quartus® Prime Standard Edition version prior to 18.1.
2. The Intel® Quartus® Prime Standard Edition patches are applicable for Intel® Quartus® Prime Lite Edition.