Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

optimize FIFO component to improve mapping #828

Merged
merged 3 commits into from Feb 23, 2024
Merged

optimize FIFO component to improve mapping #828

merged 3 commits into from Feb 23, 2024

Conversation

stnolting
Copy link
Owner

@stnolting stnolting commented Feb 23, 2024

When configured as "async read" FIFO an additional register (r_pnt_ff) for the read pointer / read address is added. This allows to map the FIFO memory to FPGA blockRAM while preserving the "asynchronous" read behavior.

-- more than 1 FIFO entries --
fifo_read_async_large:
if (fifo_depth_c > 1) generate
  async_r_pnt_reg: process(clk_i)
  begin
    if rising_edge(clk_i) then
      r_pnt_ff <= r_nxt; -- individual read address register; allows mapping "async" FIFOs to memory primitives
    end if;
  end process async_r_pnt_reg;
  rdata_o <= fifo_mem(to_integer(unsigned(r_pnt_ff(r_pnt_ff'left-1 downto 0))));
end generate;

馃悰 This PR also changes the SLINK FIFOs to "async read" mode trying to fix #826.

improve mapping to FPGA memory primitives (blockRAM) when configured as "ASYNC read"
@stnolting stnolting added HW hardware-related optimization Make things faster, smaller and more efficient labels Feb 23, 2024
@stnolting stnolting self-assigned this Feb 23, 2024
@stnolting stnolting added the bug Something isn't working label Feb 23, 2024
@stnolting stnolting marked this pull request as ready for review February 23, 2024 10:43
@stnolting stnolting merged commit 1900843 into main Feb 23, 2024
10 checks passed
@stnolting stnolting deleted the fifo_opt branch February 23, 2024 16:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working HW hardware-related optimization Make things faster, smaller and more efficient
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Possible SLINK RX FIFO overflow
1 participant