diff --git a/libraries/base/dp/tb/vhdl/tb_dp_fifo_fill_eop.vhd b/libraries/base/dp/tb/vhdl/tb_dp_fifo_fill_eop.vhd
index 5898e43f38a16626271d535e210c8fb030b967f1..b2ce169ff9463cac24202c5c6cb4f4b5c6385302 100644
--- a/libraries/base/dp/tb/vhdl/tb_dp_fifo_fill_eop.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_dp_fifo_fill_eop.vhd
@@ -47,7 +47,7 @@ use work.tb_dp_pkg.all;
 entity tb_dp_fifo_fill_eop is
   generic (
     -- Try FIFO settings
-    g_dut_use_dual_clock  : boolean := true;
+    g_dut_use_dual_clock  : boolean := false;
     g_dut_use_bsn         : boolean := false;
     g_dut_use_empty       : boolean := false;
     g_dut_use_channel     : boolean := false;
@@ -55,9 +55,10 @@ entity tb_dp_fifo_fill_eop is
     g_dut_fifo_rl         : natural := 1;  -- internal RL,  use 0 for look ahead FIFO, default 1 for normal FIFO
     g_dut_fifo_size       : natural := 128;
     g_dut_fifo_fill       : natural := 100;  -- selectable >= 0 for dp_fifo_fill
+    g_block_size          : natural := 14;  -- to verify g_block_size > or < g_dut_fifo_fill
     g_dut_use_rd_fill_32b : boolean := false;
-    g_dut_use_gap         : boolean := true;
-    g_dut_use_random_ctrl : boolean := true
+    g_dut_use_gap         : boolean := false;
+    g_dut_use_random_ctrl : boolean := false
   );
 end tb_dp_fifo_fill_eop;
 
@@ -75,7 +76,7 @@ architecture tb of tb_dp_fifo_fill_eop is
   constant c_tx_latency     : natural := c_dut_in_latency;  -- TX ready latency of TB
   constant c_tx_void        : natural := sel_a_b(c_tx_latency, 1, 0);  -- used to avoid empty range VHDL warnings when c_tx_latency=0
   constant c_tx_offset_sop  : natural := 3;
-  constant c_tx_period_sop  : natural := 14;  -- sop in data valid cycle 3,  17,  31, ...
+  constant c_tx_period_sop  : natural := g_block_size;  -- sop in data valid cycle 3,  17,  31, ...
   constant c_tx_offset_eop  : natural := sel_a_b(g_dut_use_gap, 12, 16);  -- eop in data valid cycle 12,  26,  40, ...
   constant c_tx_period_eop  : natural := c_tx_period_sop;
   constant c_tx_offset_sync : natural := 3;  -- sync in data valid cycle 3, 20, 37, ...
@@ -115,6 +116,7 @@ architecture tb of tb_dp_fifo_fill_eop is
   signal in_val         : std_logic;
   signal in_sop         : std_logic;
   signal in_eop         : std_logic;
+  signal in_en          : std_logic := '0';
 
   signal wr_ful         : std_logic;
   signal rd_usedw       : std_logic_vector(ceil_log2(largest(g_dut_fifo_size, g_dut_fifo_fill + c_dut_fifo_af_margin + 2)) - 1 downto 0);
@@ -148,8 +150,6 @@ architecture tb of tb_dp_fifo_fill_eop is
 
 begin
 
-
-
   clk <= not clk or tb_end after clk_period / 2;
   rst <= '1', '0' after clk_period * 7;
 
@@ -159,7 +159,6 @@ begin
   -- Input data
   cnt_val <= in_ready and cnt_en and not gap_en when g_dut_use_random_ctrl else in_ready and not gap_en;
 
-
   proc_dp_cnt_dat(rst, clk, cnt_val, cnt_dat);
   proc_dp_tx_data(c_tx_latency, rst, clk, cnt_val, cnt_dat, tx_data, tx_val, in_data, in_val);
   proc_dp_tx_ctrl(c_tx_offset_sync, c_tx_period_sync, in_data, in_val, in_sync);
@@ -169,6 +168,23 @@ begin
     proc_dp_tx_ctrl(c_tx_offset_gap, c_tx_period_gap, in_data, in_val, gap_en);
   end generate;
 
+  -- Use in_en to ensure that in_sosi starts with in_sop, so no spurious
+  -- in_eop or in_val without an in_sop. The FIFO will ignore these
+  -- spurious in_eop or in_val, but for testing the fill_eop mechanism
+  -- it is more clear to test with only complete input blocks. The
+  -- general assumption is that only complete blocks are allowed to enter
+  -- the application code, so incomplete blocks are already avoided at the
+  -- external interface code of the FPGA and by making sure that FIFOs
+  -- will stop accepting new blocks before they would overflow.
+  p_in_en : process
+  begin
+    wait until in_sop = '1';
+    wait until in_eop = '1';
+    wait until in_sop = '1';
+    in_en <= '1';
+    wait;
+  end process;
+
   in_bsn     <= INCR_UVEC(in_data, c_bsn_offset);
   in_empty   <= INCR_UVEC(in_data, c_empty_offset);
   in_channel <= INCR_UVEC(in_data, c_channel_offset);
@@ -236,10 +252,10 @@ begin
   in_sosi.bsn(c_dp_bsn_w - 1 downto 0)   <= in_bsn(c_dp_bsn_w - 1 downto 0);
   in_sosi.empty                        <= in_empty(c_dp_empty_w - 1 downto 0);
   in_sosi.channel                      <= in_channel(c_dp_channel_w - 1 downto 0);
-  in_sosi.sync                         <= in_sync;
-  in_sosi.valid                        <= (in_val and not gap_en);
-  in_sosi.sop                          <= in_sop;
-  in_sosi.eop                          <= in_eop;
+  in_sosi.sync                         <= in_en and in_sync;
+  in_sosi.valid                        <= in_en and (in_val and not gap_en);
+  in_sosi.sop                          <= in_en and in_sop;
+  in_sosi.eop                          <= in_en and in_eop;
 
   out_siso.ready <= out_ready;  -- SISO
   out_siso.xon   <= '1';
diff --git a/libraries/base/dp/tb/vhdl/tb_tb_dp_fifo_fill_eop.vhd b/libraries/base/dp/tb/vhdl/tb_tb_dp_fifo_fill_eop.vhd
index e3c449afb2aa9b37f22e9b0ddf71c866d0ffa1ac..60fe18d02750d66821a9ea577a1cef2dcf705ffe 100644
--- a/libraries/base/dp/tb/vhdl/tb_tb_dp_fifo_fill_eop.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_tb_dp_fifo_fill_eop.vhd
@@ -45,7 +45,19 @@ end tb_tb_dp_fifo_fill_eop;
 architecture tb of tb_tb_dp_fifo_fill_eop is
   signal tb_end : std_logic := '0';  -- declare tb_end to avoid 'No objects found' error on 'when -label tb_end'
 begin
-  -- Try FIFO settings : GENERIC MAP (g_dut_use_dual_clock, g_dut_use_bsn, g_dut_use_empty, g_dut_use_channel, g_dut_use_sync, g_dut_fifo_rl, g_dut_fifo_size, g_dut_fifo_fill, g_dut_use_rd_fill_32b, g_dut_use_gap, g_dut_use_random_ctrl)
+  -- Try FIFO settings
+  -- g_dut_use_dual_clock  : boolean := true;
+  -- g_dut_use_bsn         : boolean := false;
+  -- g_dut_use_empty       : boolean := false;
+  -- g_dut_use_channel     : boolean := false;
+  -- g_dut_use_sync        : boolean := false;
+  -- g_dut_fifo_rl         : natural := 1;  -- internal RL,  use 0 for look ahead FIFO, default 1 for normal FIFO
+  -- g_dut_fifo_size       : natural := 128;
+  -- g_dut_fifo_fill       : natural := 100;  -- selectable >= 0 for dp_fifo_fill
+  -- g_block_size          : natural := 14;
+  -- g_dut_use_rd_fill_32b : boolean := false;
+  -- g_dut_use_gap         : boolean := true;
+  -- g_dut_use_random_ctrl : boolean := true
 
   u_dut_sc_1             : entity work.tb_dp_fifo_fill_eop generic map (g_dut_use_dual_clock => false, g_dut_fifo_rl => 1, g_dut_use_random_ctrl => false);
   u_dut_sc_1_no_gap      : entity work.tb_dp_fifo_fill_eop generic map (g_dut_use_dual_clock => false, g_dut_fifo_rl => 1, g_dut_use_random_ctrl => false, g_dut_use_gap => false);
@@ -59,4 +71,8 @@ begin
   u_dut_dc_1_rand_no_gap : entity work.tb_dp_fifo_fill_eop generic map (g_dut_use_dual_clock => true,  g_dut_fifo_rl => 1, g_dut_use_random_ctrl => true, g_dut_use_gap => false);
   u_dut_sc_0_rand_no_gap : entity work.tb_dp_fifo_fill_eop generic map (g_dut_use_dual_clock => false, g_dut_fifo_rl => 0, g_dut_use_random_ctrl => true, g_dut_use_gap => false);
   u_dut_dc_0_rand_no_gap : entity work.tb_dp_fifo_fill_eop generic map (g_dut_use_dual_clock => true,  g_dut_fifo_rl => 0, g_dut_use_random_ctrl => true, g_dut_use_gap => false);
+
+  u_dut_sc_1_blk_gt_fill : entity work.tb_dp_fifo_fill_eop generic map (g_dut_use_dual_clock => false, g_dut_fifo_rl => 1, g_dut_use_random_ctrl => false, g_dut_use_gap => false,
+                                                                        g_dut_fifo_fill => 10, g_block_size => 20);
+
 end tb;