diff --git a/libraries/dsp/correlator/src/vhdl/corr_accumulator.vhd b/libraries/dsp/correlator/src/vhdl/corr_accumulator.vhd
index b81bd0ff01b177972fa9475c5c5eac4c9d46b2cc..3c6b56e302bb42ec2ee1e0cb0d6b7517b1e97424 100644
--- a/libraries/dsp/correlator/src/vhdl/corr_accumulator.vhd
+++ b/libraries/dsp/correlator/src/vhdl/corr_accumulator.vhd
@@ -163,8 +163,10 @@ BEGIN
   --   of zeros initially.
   -----------------------------------------------------------------------------
   gen_src_out_arr : FOR i IN 0 TO g_nof_inputs-1 GENERATE
-    nxt_src_out_arr(i).re(c_acc_data_w-1 DOWNTO 0) <= common_shiftram_src_out_arr(i).data(2*c_acc_data_w-1 DOWNTO c_acc_data_w);
-    nxt_src_out_arr(i).im(c_acc_data_w-1 DOWNTO 0) <= common_shiftram_src_out_arr(i).data(  c_acc_data_w-1 DOWNTO 0);
+--    nxt_src_out_arr(i).re(c_acc_data_w-1 DOWNTO 0) <= common_shiftram_src_out_arr(i).data(2*c_acc_data_w-1 DOWNTO c_acc_data_w);
+--    nxt_src_out_arr(i).im(c_acc_data_w-1 DOWNTO 0) <= common_shiftram_src_out_arr(i).data(  c_acc_data_w-1 DOWNTO 0);
+    nxt_src_out_arr(i).re <= RESIZE_DP_DSP_DATA(common_shiftram_src_out_arr(i).data(2*c_acc_data_w-1 DOWNTO c_acc_data_w));
+    nxt_src_out_arr(i).im <= RESIZE_DP_DSP_DATA(common_shiftram_src_out_arr(i).data(  c_acc_data_w-1 DOWNTO 0));
     
     nxt_src_out_arr(i).valid <= '1' WHEN TO_UINT(acc_cnt)<g_nof_accumulators   AND common_shiftram_src_out_arr(0).valid='1' ELSE '0';
     nxt_src_out_arr(i).sop   <= '1' WHEN TO_UINT(acc_cnt)=0                    AND common_shiftram_src_out_arr(0).valid='1' ELSE '0';
diff --git a/libraries/dsp/correlator/src/vhdl/corr_adder.vhd b/libraries/dsp/correlator/src/vhdl/corr_adder.vhd
index a291c85e05d5fc478698f8e542cb3a0cc6d4e0f2..53a162fe89f79fe60d8f63fcb74a25f766a7a24b 100644
--- a/libraries/dsp/correlator/src/vhdl/corr_adder.vhd
+++ b/libraries/dsp/correlator/src/vhdl/corr_adder.vhd
@@ -108,24 +108,24 @@ BEGIN
   --   range (we don't need an extra bit for that).
   -- . We do need the extra bit itself though, as it is the sign bit.
   -----------------------------------------------------------------------------
-  gen_output_range : FOR i IN 0 TO g_nof_inputs-1 GENERATE
-    -- Wire the adder output to ranged_common_complex_add_sub_src_out_arr, minus the two MSbits
-    ranged_common_complex_add_sub_src_out_arr(i).re(g_data_w-1-1 DOWNTO 0) <= common_complex_add_sub_src_out_arr(i).re(g_data_w-1-1 DOWNTO 0);
-    ranged_common_complex_add_sub_src_out_arr(i).im(g_data_w-1-1 DOWNTO 0) <= common_complex_add_sub_src_out_arr(i).im(g_data_w-1-1 DOWNTO 0);
-    -- Don't assign the adder's MSbit-1 as it shouldn't toggle (because our adder input width is already wide enough)
-    --                                                                  NC <= common_complex_add_sub_src_out_arr(i).re(g_data_w-1);
-    --                                                                  NC <= common_complex_add_sub_src_out_arr(i).im(g_data_w-1);
-    -- Wire up the adder's MSbit (sign) bit
-    ranged_common_complex_add_sub_src_out_arr(i).re(g_data_w-1)            <= common_complex_add_sub_src_out_arr(i).re(g_data_w);
-    ranged_common_complex_add_sub_src_out_arr(i).im(g_data_w-1)            <= common_complex_add_sub_src_out_arr(i).im(g_data_w);
-  END GENERATE;
+--  gen_output_range : FOR i IN 0 TO g_nof_inputs-1 GENERATE
+--    -- Wire the adder output to ranged_common_complex_add_sub_src_out_arr, minus the two MSbits
+--    ranged_common_complex_add_sub_src_out_arr(i).re(g_data_w-1-1 DOWNTO 0) <= common_complex_add_sub_src_out_arr(i).re(g_data_w-1-1 DOWNTO 0);
+--    ranged_common_complex_add_sub_src_out_arr(i).im(g_data_w-1-1 DOWNTO 0) <= common_complex_add_sub_src_out_arr(i).im(g_data_w-1-1 DOWNTO 0);
+--    -- Don't assign the adder's MSbit-1 as it shouldn't toggle (because our adder input width is already wide enough)
+--    --                                                                  NC <= common_complex_add_sub_src_out_arr(i).re(g_data_w-1);
+--    --                                                                  NC <= common_complex_add_sub_src_out_arr(i).im(g_data_w-1);
+--    -- Wire up the adder's MSbit (sign) bit
+--    ranged_common_complex_add_sub_src_out_arr(i).re(g_data_w-1)            <= common_complex_add_sub_src_out_arr(i).re(g_data_w);
+--    ranged_common_complex_add_sub_src_out_arr(i).im(g_data_w-1)            <= common_complex_add_sub_src_out_arr(i).im(g_data_w);
+--  END GENERATE;
 
   -----------------------------------------------------------------------------
   -- Finally, extend the sign bit for human readability
   -----------------------------------------------------------------------------
   gen_sign_extend : FOR i IN 0 TO g_nof_inputs-1 GENERATE
-    src_out_arr(i).re <= RESIZE_DP_DSP_DATA(ranged_common_complex_add_sub_src_out_arr(i).re(g_data_w-1 DOWNTO 0));
-    src_out_arr(i).im <= RESIZE_DP_DSP_DATA(ranged_common_complex_add_sub_src_out_arr(i).im(g_data_w-1 DOWNTO 0));
+    src_out_arr(i).re <= RESIZE_DP_DSP_DATA(common_complex_add_sub_src_out_arr(i).re(g_data_w-1 DOWNTO 0));
+    src_out_arr(i).im <= RESIZE_DP_DSP_DATA(common_complex_add_sub_src_out_arr(i).im(g_data_w-1 DOWNTO 0));
   END GENERATE;
 
 END str;
diff --git a/libraries/dsp/correlator/src/vhdl/corr_visibility_buffer.vhd b/libraries/dsp/correlator/src/vhdl/corr_visibility_buffer.vhd
index 6f454abbde44479b8a386cdadebe0a6f666a44c0..2749c1874c880a5fb6b7f5606c37b45907b9b4ca 100644
--- a/libraries/dsp/correlator/src/vhdl/corr_visibility_buffer.vhd
+++ b/libraries/dsp/correlator/src/vhdl/corr_visibility_buffer.vhd
@@ -39,11 +39,11 @@ USE dp_lib.dp_stream_pkg.ALL;
 
 ENTITY corr_visibility_buffer IS
   GENERIC (
-    g_nof_inputs         : NATURAL; -- Number of input streams
-    g_buffer_depth       : NATURAL; -- Number of words to buffer
-    g_data_w             : NATURAL; -- Complex input data width
-    g_nof_pre_mult_folds : NATURAL; -- Nof times the data has been folded
-    g_integration_period : NATURAL
+    g_nof_inputs          : NATURAL; -- Number of input streams
+    g_buffer_depth        : NATURAL; -- Number of words to buffer
+    g_data_w              : NATURAL; -- Complex input data width
+    g_nof_pre_mult_folds  : NATURAL; -- Nof times the data has been folded
+    g_inter_channel_delay : NATURAL  -- Nof delay cycles between output channels
    ); 
   PORT (
     rst            : IN  STD_LOGIC;
@@ -56,17 +56,37 @@ END corr_visibility_buffer;
 
 ARCHITECTURE str OF corr_visibility_buffer IS
 
-  -- The output block size required so the folder outputs all visibilities per channel
-  CONSTANT c_output_block_len     : NATURAL := pow2(g_nof_pre_mult_folds);
+  ------------------------------------------------------------------------------
+  -- Example input: 6 visibilities, non-folded (g_nof_inputs = 6, 
+  -- g_nof_pre_mult_folds = 0)
+  -- The improtance of timing the FIFOs is depiced below:
+  -- ====================
+  -- Untimed FIFO output:
+  -- ====================
+  --  dp_fifo_sc_src_out_arr(0) -> [ch0, ch1, .. chN-1] 
+  --  dp_fifo_sc_src_out_arr(1) -> [ch0, ch1, .. chN-1] 
+  --  dp_fifo_sc_src_out_arr(2) -> [ch0, ch1, .. chN-1] 
+  --  dp_fifo_sc_src_out_arr(3) -> [ch0, ch1, .. chN-1] 
+  --  dp_fifo_sc_src_out_arr(4) -> [ch0, ch1, .. chN-1] 
+  --  dp_fifo_sc_src_out_arr(5) -> [ch0, ch1, .. chN-1] 
+  -- ====================
+  -- Timed FIFO output:
+  -- ====================
+  --  dp_fifo_sc_src_out_arr(0) -> [ch0]                   [ch1]                   
+  --  dp_fifo_sc_src_out_arr(1) ->     [ch0]                   [ch1]               
+  --  dp_fifo_sc_src_out_arr(2) ->         [ch0]                   [ch1]           
+  --  dp_fifo_sc_src_out_arr(3) ->             [ch0]                   [ch1]       
+  --  dp_fifo_sc_src_out_arr(4) ->                 [ch0]                   [ch1]   
+  --  dp_fifo_sc_src_out_arr(5) ->                     [ch0]                   [ch1]
+  --
+  -- The above timed FIFO output allows the 6 streams to be interleaved into
+  -- one stream, putting the channels back-to-back in the right order.
+
+  -- The number of visibilities interleaved onto one input stream
+  CONSTANT c_vis_block_len        : NATURAL := pow2(g_nof_pre_mult_folds);
 
   -- The minimum period to wait so the folder does not miss data
-  CONSTANT c_minimum_block_period : NATURAL := g_nof_inputs*c_output_block_len;
-
-  -- The channel blocks on the folder output will be c_minimum_block_period long.
-  -- Wait the maximum time before outputting the next one to yield a constant data rate.
-  -- Note: insertion of a gap block is only possible if 
-  --       g_integration_period/2 >= c_minimum_block_period.
-  CONSTANT c_block_valid_ratio    : NATURAL := largest(1, g_integration_period/c_minimum_block_period);
+  CONSTANT c_channel_block_length : NATURAL := g_nof_inputs*c_vis_block_len;
 
   SIGNAL dp_fifo_sc_src_out_arr   : t_dp_sosi_arr(g_nof_inputs-1 DOWNTO 0);
   SIGNAL dp_fifo_sc_src_in_arr    : t_dp_siso_arr(g_nof_inputs-1 DOWNTO 0);
@@ -106,32 +126,33 @@ BEGIN
   ------------------------------------------------------------------------------
   -- Read out the FIFOs such that dp_fifo_sc_src_out_arr only carries one valid 
   -- word per cycle. This allows folding (multiplexing) into one stream without 
-  -- losing data (example for 16 streams with c_output_block_len=1):            
+  -- losing data (example for 16 streams with c_vis_block_len=1):            
   --                                                                            
-  --      |<---c_minimum_block_period---->|                                     
-  --   0) [0]                             [1]   ..                              
-  --   1) | [0]                           . [1]                                 
-  --   2) |   [0]                         .   [1]                               
-  --   3) |     [0]                       .     [1]                             
-  --   4) |       [0]                     .       [1]                           
-  --   5) |         [0]                   .         [1]                         
-  --   6) |           [0]                 .           [1]                       
-  --   7) |             [0]               .             [1]                     
-  --   8) |               [0]             .               [1]                   
-  --   9) |                 [0]           .                 [1]                 
-  --  10) |                   [0]         .                   [1]               
-  --  11) |                     [0]       .                     [1]             
-  --  12) |                       [0]     .                       [1]           
-  --  13) |                         [0]   .                         [1]         
-  --  14) |                           [0] .                           [1]       
-  --  15) |<---g_init_valid_delay(15)-->[0]                             [1]     
+  --     |<-----------------------g_block_period-------------------->|           
+  --     |<---c_channel_block_length---->|<--g_inter_channel_delay-->|          
+  --  0) [0]                             .                           [1]        
+  --  1) | [0]                           .                           . [1]      
+  --  2) |   [0]                         .                           .   [1]    
+  --  3) |     [0]                       .                           .     [1]  
+  --  4) |       [0]                     .                           .       [1]
+  --  5) |         [0]                   .                           .        ..
+  --  6) |           [0]                 .                           .          
+  --  7) |             [0]               .                           .          
+  --  8) |               [0]             .                           .          
+  --  9) |                 [0]           .                           .          
+  -- 10) |                   [0]         .                           .          
+  -- 11) |                     [0]       .                           .          
+  -- 12) |                       [0]     .                           .          
+  -- 13) |                         [0]   .                           .          
+  -- 14) |                           [0] .                           .          
+  -- 15) |<---g_init_valid_delay(15)-->[0]                           .          
   ------------------------------------------------------------------------------
   gen_dp_src_out_timer : FOR i IN 0 TO g_nof_inputs-1 GENERATE
     u_dp_src_out_timer : ENTITY dp_lib.dp_src_out_timer
     GENERIC MAP (
-      g_init_valid_delay => i*c_output_block_len, --relative to dp_fifo_sc_src_out_arr(i).valid
-      g_block_period     => c_block_valid_ratio*c_minimum_block_period*c_output_block_len,
-      g_block_len        => c_output_block_len
+      g_init_valid_delay => i*c_vis_block_len, --relative to dp_fifo_sc_src_out_arr(i).valid
+      g_block_period     => c_channel_block_length+g_inter_channel_delay,
+      g_block_len        => c_vis_block_len
     )
     PORT MAP (
       rst                  => rst,
diff --git a/libraries/dsp/correlator/src/vhdl/correlator.vhd b/libraries/dsp/correlator/src/vhdl/correlator.vhd
index 0d591d83c54211f107d1be5efe4f0b2c048361fa..eb70b4253751008d47fbdebf887595fa5336b38e 100644
--- a/libraries/dsp/correlator/src/vhdl/correlator.vhd
+++ b/libraries/dsp/correlator/src/vhdl/correlator.vhd
@@ -33,7 +33,7 @@ USE dp_lib.dp_stream_pkg.ALL;
 ENTITY correlator IS
   GENERIC (
     g_nof_input_streams  : NATURAL;
-    g_nof_input_folds    : NATURAL := 0;  -- 2**g_nof_input_folds = number of inputs carried on one input stream
+    g_input_unfold_factor    : NATURAL := 0;  -- 2**g_input_unfold_factor = number of inputs carried on one input stream
     g_nof_pre_mult_folds : NATURAL := 0;  -- Number of pre-multiplier stage folds.
     g_data_w             : NATURAL := 16; -- Complex data width
     g_conjugate          : BOOLEAN := TRUE;
@@ -52,7 +52,7 @@ END correlator;
 
 ARCHITECTURE str OF correlator IS
 
-  CONSTANT c_nof_inputs                      : NATURAL := g_nof_input_streams*pow2(g_nof_input_folds);
+  CONSTANT c_nof_inputs                      : NATURAL := g_nof_input_streams*pow2(g_input_unfold_factor);
   CONSTANT c_nof_visibilities                : NATURAL := (c_nof_inputs*(c_nof_inputs+1))/2;
 
   -----------------------------------------------------------------------------
@@ -97,7 +97,7 @@ BEGIN
   u_corr_unfolder : ENTITY work.corr_unfolder
   GENERIC MAP (
     g_nof_inputs  => g_nof_input_streams,
-    g_nof_unfolds => g_nof_input_folds 
+    g_nof_unfolds => g_input_unfold_factor 
   )
   PORT MAP (
     rst         => rst,
@@ -114,7 +114,7 @@ BEGIN
   gen_dp_pipeline_corr_unfolder_src_out_arr : FOR i IN 0 TO c_nof_inputs-1 GENERATE
     u_dp_pipeline : ENTITY dp_lib.dp_pipeline
     GENERIC MAP (
-      g_pipeline => 0 + (pow2(g_nof_input_folds) - i REM pow2(g_nof_input_folds)-1)
+      g_pipeline => 0 + (pow2(g_input_unfold_factor) - i REM pow2(g_input_unfold_factor)-1)
     )
     PORT MAP (
       rst         => rst,
@@ -189,6 +189,11 @@ BEGIN
   -- rate on the highest stream index. We don't want that (because 
   -- common_shiftram in corr_accumulator does not support holes in the data),
   -- so override the valid with corr_folder_src_out_2arr_2(0).valid in that case.
+  -- . NOTE!!!!!!!!!!
+  --   . If you set c_integration_period=0, the code sets JUST the right integration
+  --     period to yield 100% valid data on the output stream. As mentioned above,
+  --     if you have an uneven numer of inputs one 50% valid streams will get overriden
+  --     to 100% causing a FIFO overflow in the visibility buffer.
   p_override_valid: PROCESS(corr_folder_src_out_2arr_2)
   BEGIN
     corr_multiplier_snk_in_2arr_2 <= corr_folder_src_out_2arr_2;
@@ -275,11 +280,11 @@ BEGIN
   ------------------------------------------------------------------------------
   u_corr_visibility_buffer : ENTITY work.corr_visibility_buffer
   GENERIC MAP (
-    g_nof_inputs         => c_nof_mults,
-    g_data_w             => c_acc_data_w,
-    g_buffer_depth       => c_nof_accumulators,
-    g_nof_pre_mult_folds => g_nof_pre_mult_folds,
-    g_integration_period => c_integration_period
+    g_nof_inputs          => c_nof_mults,
+    g_data_w              => c_acc_data_w,
+    g_buffer_depth        => c_nof_accumulators,
+    g_nof_pre_mult_folds  => g_nof_pre_mult_folds,
+    g_inter_channel_delay => 0
   )
   PORT MAP (
     clk            => clk,
diff --git a/libraries/dsp/correlator/tb/python/correlator.py b/libraries/dsp/correlator/tb/python/correlator.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e1e8222d80c52083bd6893af2273accbdb492fe2 100644
--- a/libraries/dsp/correlator/tb/python/correlator.py
+++ b/libraries/dsp/correlator/tb/python/correlator.py
@@ -0,0 +1,14 @@
+
+gen_correlator_snk_in_arr_list.py
+gen_correlator_snk_in_arr_hex.py 
+
+
+# Produceer dezelfde list als correlator_src_out_arr0.rec.
+
+
+
+# correlator_snk_in_arr komt van gen_hex_files_complex_subbands.py -> gelijktrekken.
+correlator_snk_in_arr = 
+
+def correlator(snk_in_arr):
+
diff --git a/libraries/dsp/correlator/tb/python/tc_correlator.py b/libraries/dsp/correlator/tb/python/tc_correlator.py
index 258f37fd16f646ad238e17461a6c36092420fcc0..fd815a18fcd38f767e0e7bdbba254e3b90855bcf 100644
--- a/libraries/dsp/correlator/tb/python/tc_correlator.py
+++ b/libraries/dsp/correlator/tb/python/tc_correlator.py
@@ -21,6 +21,8 @@
 ###############################################################################
 
 from common import *
+import matplotlib                                                                                                                       
+matplotlib.use('TkAgg') 
 from common_dsp import *
 
 import test_case
@@ -31,7 +33,7 @@ import pi_diag_data_buffer
 # Description:
 # Usage:
 
-NOF_INPUTS = 24 
+NOF_INPUTS = 10 
 NOF_VISIBILITIES = (NOF_INPUTS*(NOF_INPUTS+1))/2
 BUFFER_WIDTH = 64
 
diff --git a/libraries/dsp/correlator/tb/python/verify_correlator.py b/libraries/dsp/correlator/tb/python/verify_correlator.py
index 051a3d3b38f4783993de2975b2e636d5e4fa48f3..3815e38005605bdc6851912f640569d3329354c1 100644
--- a/libraries/dsp/correlator/tb/python/verify_correlator.py
+++ b/libraries/dsp/correlator/tb/python/verify_correlator.py
@@ -39,14 +39,14 @@ from mem_init_file import list_to_hex
 #   . ..
 #   . Input 23 - 23 degrees
 
-NOF_INPUTS = 7
+NOF_INPUTS = 7 
 NOF_CHANNELS = 8
 COMPLEX_WIDTH = 8 
 NOF_PRE_MULT_FOLDS = 2
 NOF_INPUT_FOLDS = 0 # =< NOF_PRE_MULT_FOLDS
 
 
-USE_NEW_REC_FILE = False #True = don't use outdated .rec file; wait for new one.
+USE_NEW_REC_FILE = True #True = don't use outdated .rec file; wait for new one.
 PLOT_CORR_OUT_PHASES = True # Plot the correlator output phases of channel 0 of both the VHDL and the Model
 
 NOF_VISIBILITIES = (NOF_INPUTS*(NOF_INPUTS+1))/2
diff --git a/libraries/dsp/correlator/tb/vhdl/tb_correlator.vhd b/libraries/dsp/correlator/tb/vhdl/tb_correlator.vhd
index f00a3fd18a532a57ab7686330913bf8ba76b71c8..d36ca7547dc1a8b2226a4208fc5504aaedcf3557 100644
--- a/libraries/dsp/correlator/tb/vhdl/tb_correlator.vhd
+++ b/libraries/dsp/correlator/tb/vhdl/tb_correlator.vhd
@@ -30,27 +30,39 @@ USE mm_lib.mm_file_pkg.ALL;
 USE mm_lib.mm_file_unb_pkg.ALL;
 USE common_lib.common_mem_pkg.ALL;
 
+-- Notes on pairing generics:
+-- . g_nof_inputs = even, g_nof_input_folds does not leave a remainder
+-- . c_nof_visibilities=odd, don't use g_nof_pre_mult_folds>0
+-- . c_nof_visibilities=even, make sure g_nof_pre_mult_folds does not leave remainder
+
 ENTITY tb_correlator IS
+  GENERIC (
+    g_nof_inputs         : NATURAL := 7;
+    g_nof_channels       : NATURAL := 8;
+    g_nof_pre_mult_folds : NATURAL := 2;-- Make sure c_nof_visibilities can be folded this many times
+    g_nof_input_folds    : NATURAL := 0 -- =< g_nof_pre_mult_folds. Use an even g_nof_inputs.
+  );
 END tb_correlator;
 
 ARCHITECTURE tb OF tb_correlator IS
 
-  CONSTANT c_nof_inputs         : NATURAL := 10;
-  CONSTANT c_nof_input_folds    : NATURAL := 1;
-  CONSTANT c_nof_input_streams  : NATURAL := c_nof_inputs / pow2(c_nof_input_folds);
-  CONSTANT c_nof_pre_mult_folds : NATURAL := 1;
   CONSTANT c_complex_data_w     : NATURAL := 8;
+
+  CONSTANT c_nof_input_streams  : NATURAL := g_nof_inputs / pow2(g_nof_input_folds);
   CONSTANT c_conjugate          : BOOLEAN := TRUE;
-  CONSTANT c_nof_channels       : NATURAL := 64;
   CONSTANT c_integration_period : NATURAL := 0;
+  CONSTANT c_nof_visibilities   : NATURAL := (g_nof_inputs*(g_nof_inputs+1))/2;
 
-  CONSTANT c_nof_visibilities   : NATURAL := (c_nof_inputs*(c_nof_inputs+1))/2;
-
-  -- Gap size on the correlator input depends on the number of folds
-  CONSTANT c_block_period       : NATURAL := 1; --pow2(c_nof_pre_mult_folds); -- To do: figure out the block period as function of both folding factors.
+  -- Folding rules:
+  -- . g_nof_input_folds=g_nof_pre_mult_folds : no gaps are needed/desired in the input data.
+  -- . g_nof_input_folds<g_nof_pre_mult_folds : gaps are required in the input data
+  -- . g_nof_input_folds>g_nof_pre_mult_folds : is not allowed
+  --   . Produces unnecessary/undesired gaps in the multiplier output
+  CONSTANT c_input_gaps_needed  : BOOLEAN := g_nof_input_folds<g_nof_pre_mult_folds;
+  CONSTANT c_block_period       : NATURAL := sel_a_b(c_input_gaps_needed, pow2(g_nof_pre_mult_folds-g_nof_input_folds), 1);
 
   -- Block generator
-  CONSTANT c_bg_block_size      : NATURAL := c_nof_channels*pow2(c_nof_input_folds);
+  CONSTANT c_bg_block_size      : NATURAL := g_nof_channels*pow2(g_nof_input_folds);
   CONSTANT c_bg_gapsize         : NATURAL := c_bg_block_size*(c_block_period-1);
 
   -- Indicate the integration period with the sync. In the correlator, the
@@ -132,7 +144,7 @@ BEGIN
     g_nof_output_streams => c_nof_input_streams,
     g_buf_dat_w          => 2*c_complex_data_w,
     g_buf_addr_w         => ceil_log2(TO_UINT(c_bg_ctrl.samples_per_packet)),
-    g_file_name_prefix   => "../../../libraries/dsp/correlator/src/hex/complex_subbands_" & NATURAL'IMAGE(c_complex_data_w) & "b_" & "fold_" & NATURAL'IMAGE(c_nof_input_folds),
+    g_file_name_prefix   => "../../../libraries/dsp/correlator/src/hex/complex_subbands_" & NATURAL'IMAGE(c_complex_data_w) & "b_" & "fold_" & NATURAL'IMAGE(g_nof_input_folds),
     g_diag_block_gen_rst => c_bg_ctrl
   )
   PORT MAP (
@@ -196,13 +208,13 @@ BEGIN
   -----------------------------------------------------------------------------
   u_correlator : ENTITY work.correlator
   GENERIC MAP (
-    g_nof_input_streams  => c_nof_input_streams,
-    g_nof_input_folds    => c_nof_input_folds,
-    g_nof_pre_mult_folds => c_nof_pre_mult_folds,
-    g_data_w             => c_complex_data_w,
-    g_conjugate          => c_conjugate,
-    g_nof_channels       => c_nof_channels,
-    g_integration_period => c_integration_period
+    g_nof_input_streams   => c_nof_input_streams,
+    g_input_unfold_factor => g_nof_input_folds,
+    g_nof_pre_mult_folds  => g_nof_pre_mult_folds,
+    g_data_w              => c_complex_data_w,
+    g_conjugate           => c_conjugate,
+    g_nof_channels        => g_nof_channels,
+    g_integration_period  => c_integration_period
   )
   PORT MAP (
     clk         => dp_clk,
@@ -247,7 +259,7 @@ BEGIN
     g_sim            => TRUE,
     g_pass_through   => FALSE,
     g_rec_not_play   => TRUE,
-    g_rec_play_file  => "$RADIOHDL/libraries/dsp/correlator/correlator_src_out_arr0.rec",
+    g_rec_play_file  => "$RADIOHDL/libraries/dsp/correlator/tb/rec/correlator_src_out_arr0.rec",
     g_record_invalid => FALSE
   )
   PORT MAP (