Altera_Forum
Honored Contributor
15 years agoProblem with Stratix IV m9k mem read
Hi,
I'm facing a strange problem with one of the FIFO reads (FIFO used for transferring data from one clock domain to another) - The problem is that, the very first datum is NOT getting written into the memory. I've captured the FIFO interface signals using SignalTap and attached the same for your reference. You may please check the attached waveform fail_dsp_18Aug.jpg, the data 0x11e00de is not coming at the rd_data, though the pointers are incremented properly. Kindly compare this waveform with pass_dsp_18Aug.jpg. The problem is not present always on the board. Every one out of five attempts results in this behavior randomly. In the RTL the memory element in the FIFO is coded as a two dimensional array reg[36:0] mem[3:0]; The write and read are controlled as always @(posedge wr_clk) begin if (wr_en) begin mem[wr_ptr] <= wr_data; end end assign rd_data = mem[rd_ptr]; The write and read pointers are taken care separately. Logical errors are not doubted as the same async fifo is silicon proven. In FPGA implementation report, it looks like the memory is implemented using M9K. Info: Found 1 design units, including 1 entities, in source file db/altsyncram_lth1.tdf Info: Found entity 1: altsyncram_lth1 Info: Elaborated megafunction instantiation "ONU_CORE:U_ONU_CORE|VOIP_TOP:U_VOIP_TOP|vip1000_voip:U_VIP1000_VOIP|pcp:u_pcp|pcpcore:pcpcore|pcp_mainmem_if:pcp_mainmem_if|pcp_mainmem_sync:pcp_mainmem_sync|async_fifo:m2b_fifo|altsyncram:mem_rtl_1" Info: Instantiated megafunction "ONU_CORE:U_ONU_CORE|VOIP_TOP:U_VOIP_TOP|vip1000_voip:U_VIP1000_VOIP|pcp:u_pcp|pcpcore:pcpcore|pcp_mainmem_if:pcp_mainmem_if|pcp_mainmem_sync:pcp_mainmem_sync|async_fifo:m2b_fifo|altsyncram:mem_rtl_1" with the following parameter: Info: Parameter "OPERATION_MODE" = "DUAL_PORT" Info: Parameter "WIDTH_A" = "37" Info: Parameter "WIDTHAD_A" = "2" Info: Parameter "NUMWORDS_A" = "4" Info: Parameter "WIDTH_B" = "37" Info: Parameter "WIDTHAD_B" = "2" Info: Parameter "NUMWORDS_B" = "4" Info: Parameter "ADDRESS_ACLR_A" = "NONE" Info: Parameter "OUTDATA_REG_B" = "UNREGISTERED" Info: Parameter "ADDRESS_ACLR_B" = "NONE" Info: Parameter "OUTDATA_ACLR_B" = "NONE" Info: Parameter "ADDRESS_REG_B" = "CLOCK1" Info: Parameter "INDATA_ACLR_A" = "NONE" Info: Parameter "WRCONTROL_ACLR_A" = "NONE" I'm wondering if there is anything wrong in the implementation. Any help in solving this issue is highly appreciated. Regards, Nishanth