diff --git a/libraries/dsp/wpfb/src/vhdl/wpfb_pkg.vhd b/libraries/dsp/wpfb/src/vhdl/wpfb_pkg.vhd
index 259ec63ffec10d5799f54d9d57273b586ca6e4cd..c986ec0db7a32f5e3768f1f6a913fabd6eb0980c 100644
--- a/libraries/dsp/wpfb/src/vhdl/wpfb_pkg.vhd
+++ b/libraries/dsp/wpfb/src/vhdl/wpfb_pkg.vhd
@@ -89,9 +89,30 @@ package wpfb_pkg is
                                                 8, 0, 8, 16, 9,
                                                 true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2,  
                                                 c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
-                                   
+  
+  -- Estimate maximum number of blocks of latency between WPFB input and output
+  function func_wpfb_maximum_sop_latency(wpfb : t_wpfb) return natural;
+
 end package wpfb_pkg;
 
 package body wpfb_pkg is
+
+  function func_wpfb_maximum_sop_latency(wpfb : t_wpfb) return natural is
+    constant c_nof_channels : natural := 2**wpfb.nof_chan;
+    constant c_block_size   : natural := c_nof_channels * wpfb.nof_points / wpfb.wb_factor;
+    constant c_block_dly    : natural := 10;
+  begin
+    -- The prefilter, pipelined FFT, pipelined reorder and the wideband separate reorder
+    -- cause block latency.
+    -- The parallel FFT has no block latency.
+    -- The parallel FFT reorder is merely a rewiring and causes no latency.
+    -- ==> This yields maximim 4 block latency
+    -- ==> Add one extra block latency to round up
+    -- Each block in the Wideband FFT also introduces about c_block_dly clock cycles of
+    -- pipeline latency.
+    -- ==> This yields maximum ( 5 * c_block_dly ) / c_block_size of block latency
+    return 4 + 1 + (5 * c_block_dly) / c_block_size;
+  end func_wpfb_maximum_sop_latency;
+  
 end wpfb_pkg;