diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_xsub_one/tb_lofar2_unb2c_sdp_station_xsub_one_xst_offload.vhd b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_xsub_one/tb_lofar2_unb2c_sdp_station_xsub_one_xst_offload.vhd
index 94e8ac4b04533e6903842abfba01a144d21f9ec6..62b37144b74daba6d0af1459165548e9a9713623 100644
--- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_xsub_one/tb_lofar2_unb2c_sdp_station_xsub_one_xst_offload.vhd
+++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_xsub_one/tb_lofar2_unb2c_sdp_station_xsub_one_xst_offload.vhd
@@ -67,13 +67,18 @@ USE wpfb_lib.wpfb_pkg.ALL;
 USE lofar2_sdp_lib.sdp_pkg.ALL;
 
 ENTITY tb_lofar2_unb2c_sdp_station_xsub_one_xst_offload IS
+  GENERIC (
+    -- Use g_try_xst_restart = TRUE to check hdr_input.integration_interval in sdp_statistics_offload.vhd,
+    -- default use FALSE for shorter simulation
+    g_try_xst_restart : BOOLEAN := FALSE
+  );
 END tb_lofar2_unb2c_sdp_station_xsub_one_xst_offload;
 
 ARCHITECTURE tb OF tb_lofar2_unb2c_sdp_station_xsub_one_xst_offload IS
 
   CONSTANT c_sim             : BOOLEAN := TRUE;
-  CONSTANT c_unb_nr          : NATURAL := 2;
-  CONSTANT c_node_nr         : NATURAL := 1;
+  CONSTANT c_unb_nr          : NATURAL := sel_a_b(g_try_xst_restart, 0, 2);
+  CONSTANT c_node_nr         : NATURAL := sel_a_b(g_try_xst_restart, 0, 1);  -- use node > 0 to check nof_cycles_dly in sdp_statistics_offload.vhd
   CONSTANT c_id              : STD_LOGIC_VECTOR(7 DOWNTO 0) := TO_UVEC(c_unb_nr * 4 + c_node_nr, 8);  -- c_unb2c_board_nof_node = 4, c_unb2c_board_aux.id_w = 8
   CONSTANT c_version         : STD_LOGIC_VECTOR(1 DOWNTO 0) := "00";
   CONSTANT c_fw_version      : t_unb2c_board_fw_version := (1, 0);
@@ -318,6 +323,27 @@ BEGIN
     -- wait for udp offload is done
     proc_common_wait_until_high(ext_clk, eth_done);
 
+    ----------------------------------------------------------------------------
+    -- XST processing re-enable
+    ----------------------------------------------------------------------------
+    IF g_try_xst_restart THEN
+      -- XST processing disable
+      mmf_mm_bus_wr(c_mm_file_reg_bsn_sync_scheduler_xsub, 0, 0, tb_clk);
+      proc_common_wait_some_cycles(ext_clk, c_nof_clk_per_sync/2);
+
+      -- Read current BSN
+      mmf_mm_bus_rd(c_mm_file_reg_bsn_scheduler_wg, 0, current_bsn_wg(31 DOWNTO  0), tb_clk);
+      mmf_mm_bus_rd(c_mm_file_reg_bsn_scheduler_wg, 1, current_bsn_wg(63 DOWNTO 32), tb_clk);
+      proc_common_wait_some_cycles(tb_clk, 1);
+
+      -- XST processing enable
+      v_bsn := TO_UINT(current_bsn_wg) + 7;
+      mmf_mm_bus_wr(c_mm_file_reg_bsn_sync_scheduler_xsub, 2, v_bsn, tb_clk);  -- first write bsn low then bsn high part
+      mmf_mm_bus_wr(c_mm_file_reg_bsn_sync_scheduler_xsub, 3, 0, tb_clk);  -- bsn high, assume v_bsn < 2**31-1
+      mmf_mm_bus_wr(c_mm_file_reg_bsn_sync_scheduler_xsub, 0, 1, tb_clk);
+      proc_common_wait_some_cycles(ext_clk, c_nof_clk_per_sync * 4);
+    END IF;
+
     ---------------------------------------------------------------------------
     -- End Simulation 
     ---------------------------------------------------------------------------  
diff --git a/applications/lofar2/doc/prestudy/station2_sdp_transient_buffer.txt b/applications/lofar2/doc/prestudy/station2_sdp_transient_buffer.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cc8af7d4b1e6f53f0f391450573548bd4527508f
--- /dev/null
+++ b/applications/lofar2/doc/prestudy/station2_sdp_transient_buffer.txt
@@ -0,0 +1,19 @@
+Detailed design: Transient Buffer function (LIFT)
+
+
+1) DDR4 memory per receiver input
+
+Bottom up:
+
+Per FPGA there are S_pn = 12 receiver inputs.
+Per FPGA there are N_ddr = 2 DDR4 modules of V_ddr = 8 GByte each.
+==> Per recveiver input N_ddr * V_ddr / S_pn = 1.33 GByte.
+The receiver input data rate is f_adc = 200 MHz and sample width is W_adc = 14 b.
+Assume the samples are stored in 16 b (= 2 bytes), this creates 16/14 = 14 % storage overhead
+Assume 4 % storage overhead for packet header information
+==> Per recveiver input T_tbuf = 1.33 GByte / (2 byte/sample) / 1.04 / f_adc = 3.2 sec maximum storage time.
+==> 192 * 1.33 = 256 GByte / LB for T_tbuf = 3.2 s
+
+Hoe streng is de 3.33 s, mag 3.2 s ook ?
+Moeten we nog grotere 16 GByte modules gaan aanschaffen en te testen met unb2c, zodat we 2x zoveel storage tijd hebben ?
+
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
index 6e9769b6bfb71a385793e08e2ab76f353aa5aa98..eb9d5dec6ca46fccb48f5d7bf9a21c1ed4e4ed56 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
@@ -339,6 +339,10 @@ BEGIN
   -- . O_rn is first GN index in ring, so O_rn <= gn_index
   -- . c_sdp_offload_time = 600000 * 5 ns = 3 ms, so for max gn_index = 31 the
   --   offload starts after 93 ms, to just fit within XST T_int min is 100 ms.
+  -- . use +1 for nof_cycles_dly to ensure that hdr_input.integration_interval gets the correct
+  --   value also for node 0 with zero delay. Otherwise node 0 will read an integration_interval
+  --   value that depends on when the remaining sop_cnt of the last interval in case of a XST
+  --   processing restart.
   p_reg_parameters : PROCESS(dp_clk)
   BEGIN
     IF rising_edge(dp_clk) THEN
@@ -347,7 +351,7 @@ BEGIN
       p.offset_rn        <= TO_UINT(ring_info.O_rn);
       p.rn_index         <= p.gn_index - p.offset_rn;
       p.local_si_offset  <= p.pn_index * c_sdp_S_pn;
-      p.nof_cycles_dly   <= p.gn_index * g_offload_time;
+      p.nof_cycles_dly   <= p.gn_index * g_offload_time + 1;  -- +1 to ensure proper hdr_input.integration_interval also on node 0
       p.nof_rn           <= TO_UINT(ring_info.N_rn);
       p.nof_used_P_sq    <= smallest(p.nof_rn / 2 + 1, g_P_sq);
       p.remote_rn        <= func_ring_nof_hops_to_source_rn(r.instance_count, p.rn_index, p.nof_rn, g_crosslets_direction);