Altera_Forum
Honored Contributor
16 years agoErrors reading M9K dual port in Cyclone III
Hi,
We are using four Megawizard generated dual ports in a 3C40F484C8. There are 128 locations, 24 bits wide, asynchronous write and read clocks. A common write_data and write_address bus goes to all four dual ports. Logic provides 2 pages to ensure a location does not get read and written to at the same time. One side is written to in a burst at 120MHz, and data read out continually at 12MHz. We experience occasional errors in the read data, worse when the device is cold, but above 0 degrees C, always bit20 or bit21 read high when it should be low. The read errors only occur when the write data bus is active, as if there is some crosstalk between write and read data busses. Some builds exhibit the problem, some don't, although changes to the source code (VHDL) between builds are seemingly unconnected with the dual ports. Some other info, The errors only occur at a particular phase relationship between the write and read clocks. Quartus simulation does not show the error. Timing analysis passes. I have replicated the problem on the Altera Cyclone evaluation board (3C25), although only below 0 degrees C. If we use LE's instead of M9K as memory the problem does not occur, but that uses a lot of LE's! Core voltage is fine, also ran it from bench PSU and it still fails. Assuming there is no problem with the silicon, I wonder if I've hit a combination of device/design that highlights a weakness in the Quartus synthesis/fitting process. I would be interested to hear if anybody else seen anything similar, or could shed any light on this, Thanks