From 41ba89b8712d08644ed634fb8a79d3dd90a41f7b Mon Sep 17 00:00:00 2001
From: Grzegorz Daniluk <grzegorz.daniluk@cern.ch>
Date: Tue, 18 Feb 2014 11:10:54 +0100
Subject: [PATCH] fix almost_full threshold for Virtex6 FIFO also in
 generic_async_fifo

---
 modules/genrams/xilinx/virtex6/generic_async_fifo.vhd | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/modules/genrams/xilinx/virtex6/generic_async_fifo.vhd b/modules/genrams/xilinx/virtex6/generic_async_fifo.vhd
index 544d71a1..c94aaee3 100644
--- a/modules/genrams/xilinx/virtex6/generic_async_fifo.vhd
+++ b/modules/genrams/xilinx/virtex6/generic_async_fifo.vhd
@@ -147,6 +147,10 @@ architecture syn of generic_async_fifo is
 
   constant m : t_v6_fifo_mapping := f_v6_fifo_find_mapping(g_data_width, g_size);
 
+  -- Xilinx defines almost full threshold as number of available empty words in
+  -- FIFO (UG363 - Virtex 6 FPGA Memory Resources
+  constant c_virtex_almost_full_thr : integer := g_size - g_almost_full_threshold;
+
 begin  -- syn
 
    gen_inferred : if(m.d_width = 0 or g_with_wr_count or g_with_rd_count) generate
@@ -199,7 +203,7 @@ begin  -- syn
         g_size                   => g_size,
         g_dual_clock             => true,
         g_almost_empty_threshold => f_empty_thr(g_with_rd_almost_empty, g_almost_empty_threshold, g_size),
-        g_almost_full_threshold  => f_empty_thr(g_with_wr_almost_full, g_almost_full_threshold, g_size))
+        g_almost_full_threshold  => f_empty_thr(g_with_wr_almost_full, c_virtex_almost_full_thr, g_size))
       port map (
         rst_n_i           => rst_n_i,
         clk_wr_i          => clk_wr_i,
-- 
GitLab