diff --git a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd
index e11dc9f5406a8dcc3adf589073720148448f83bf..528bb01945d75901c19f017c266615a68ed47bd1 100644
--- a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd
+++ b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/apertif_unb1_correlator.vhd
@@ -338,6 +338,10 @@ ARCHITECTURE str OF apertif_unb1_correlator IS
   SIGNAL mesh_rx_src_in_2arr                         : t_unb1_board_mesh_siso_2arr; 
   SIGNAL mesh_rx_src_out_2arr                        : t_unb1_board_mesh_sosi_2arr;
 
+  -- dp_block_gen
+  SIGNAL dp_block_gen_snk_in_arr                     : t_dp_sosi_arr(c_nof_input_streams-1 DOWNTO 0);
+  SIGNAL dp_block_gen_src_out_arr                    : t_dp_sosi_arr(c_nof_input_streams-1 DOWNTO 0);
+
 BEGIN
 
   gen_no_offload_bg: IF g_offload_bg=FALSE GENERATE
@@ -738,10 +742,14 @@ BEGIN
     p_add_st_ctrl : PROCESS(reinterleave_out_arr, wpfb_snk_in_ctrl)
     BEGIN
       FOR i IN 0 TO c_nof_input_streams-1 LOOP
-        wpfb_snk_in_arr(i)      <= wpfb_snk_in_ctrl; -- SOSI ctrl
-        wpfb_snk_in_arr(i).data <= reinterleave_out_arr(i).data;
-        wpfb_snk_in_arr(i).im   <= reinterleave_out_arr(i).im;
-        wpfb_snk_in_arr(i).re   <= reinterleave_out_arr(i).re;
+--        wpfb_snk_in_arr(i)      <= wpfb_snk_in_ctrl; -- SOSI ctrl
+--        wpfb_snk_in_arr(i).data <= reinterleave_out_arr(i).data;
+--        wpfb_snk_in_arr(i).im   <= reinterleave_out_arr(i).im;
+--        wpfb_snk_in_arr(i).re   <= reinterleave_out_arr(i).re;
+        dp_block_gen_snk_in_arr(i)      <= wpfb_snk_in_ctrl; -- SOSI ctrl
+        dp_block_gen_snk_in_arr(i).data <= reinterleave_out_arr(i).data;
+        dp_block_gen_snk_in_arr(i).im   <= reinterleave_out_arr(i).im;
+        dp_block_gen_snk_in_arr(i).re   <= reinterleave_out_arr(i).re;
       END LOOP;
     END PROCESS;
    
@@ -867,6 +875,49 @@ BEGIN
     -- WPFB
     -----------------------------------------------------------------------------
     gen_wpfb_unit : IF g_no_dsp=FALSE GENERATE
+     
+      -- Workaround: WPFB unit wants 128-word blocks; we're getting 176 word blocks (current fn_beamformer output without transpose).
+      -- => Re-tag the blocks with 128-word SOP and EOP. 
+      gen_dp_block_gen : FOR i IN 0 TO c_nof_input_streams-1 GENERATE
+        u_dp_block_gen: ENTITY dp_lib.dp_block_gen
+        GENERIC MAP (
+          g_use_src_in         => FALSE,
+          g_nof_data           => 128,
+          g_nof_blk_per_sync   => 1 -- don't care 
+        )
+        PORT MAP (
+          rst        => dp_rst,
+          clk        => dp_clk,
+      
+          snk_in     => dp_block_gen_snk_in_arr(i),
+      
+          src_out    => dp_block_gen_src_out_arr(i)
+        );
+      END GENERATE;
+      -- Workaround: WPFB unit seems to want uninterrupted blocks.
+      gen_dp_fifo_fill: FOR i IN 0 TO c_nof_input_streams-1 GENERATE
+        u_dp_fifo_fill : ENTITY dp_lib.dp_fifo_fill
+        GENERIC MAP (
+          g_data_w         => 2*c_wpfb_in_dat_w,
+          g_use_complex    => TRUE,
+          g_use_bsn        => FALSE, --FIXME
+          g_use_channel    => FALSE,
+          g_use_error      => FALSE,
+          g_use_sync       => FALSE,
+          g_fifo_fill      => 128,
+          g_fifo_size      => 2*128 + 20 -- Two blocks plus extra margin
+        )
+        PORT MAP (
+          rst       => dp_rst,
+          clk       => dp_clk,
+      
+          snk_in    => dp_block_gen_src_out_arr(i),
+      
+          src_in    => c_dp_siso_rdy,
+          src_out   => wpfb_snk_in_arr(i)
+        );
+      END GENERATE;
+
       u_wpfb_unit : ENTITY wpfb_lib.wpfb_unit
       GENERIC MAP(
         g_wpfb              => c_wpfb,