diff --git a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_repack.vhd b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_repack.vhd
index ec1fff707cb10ed653873c386046d4335c9355a3..dd440728b4922abf0e998a037d5f34240439b63d 100644
--- a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_repack.vhd
+++ b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_repack.vhd
@@ -35,61 +35,89 @@ USE common_lib.common_pkg.ALL;
 ENTITY tb_ddrctrl_repack IS
   GENERIC (
 
-    g_tech_ddr                : t_c_tech_ddr                            := c_tech_ddr4_8g_1600m;
-    g_in_data_w	              : NATURAL                                 := 168
+    g_tech_ddr                : t_c_tech_ddr                                           := c_tech_ddr4_8g_1600m;                    -- type of memory
+    g_in_data_w	              : NATURAL                                                := 168;                                     -- input data vector with
+    g_sim_lengt               : NATURAL                                                := 32                                       -- amount of times there wil be input data for ddrctrl_repack in this testbench
 
   );
 END tb_ddrctrl_repack;
 
 ARCHITECTURE tb OF tb_ddrctrl_repack IS
 
-  CONSTANT  c_clk_freq        : NATURAL                                 := 200;     -- MHz
-  CONSTANT  c_clk_period      : TIME                                    := (10**6 / c_clk_freq) * 1 ps;
-  CONSTANT  c_out_data_w      : NATURAL                                 := func_tech_ddr_ctlr_data_w( g_tech_ddr ); --576
+  CONSTANT  c_clk_freq        : NATURAL                                                := 200;                                     -- clock freqency in MHz
+  CONSTANT  c_clk_period      : TIME                                                   := (10**6 / c_clk_freq) * 1 ps;             -- clock period, 5 ns
+  CONSTANT  c_out_data_w      : NATURAL                                                := func_tech_ddr_ctlr_data_w( g_tech_ddr ); -- output data vector with, 576
 
 
-  SIGNAL    tb_end            : STD_LOGIC                               := '0';
+  FUNCTION  c_total_vector_init RETURN STD_LOGIC_VECTOR IS
+    VARIABLE temp             : STD_LOGIC_VECTOR(g_in_data_w*g_sim_lengt-1 DOWNTO 0);
+  BEGIN
+    FOR I IN 0 TO g_sim_lengt-1 LOOP
+      temp(g_in_data_w*(I+1)-1 DOWNTO g_in_data_w*I) := TO_UVEC(I, g_in_data_w);
+    END LOOP;
+    RETURN temp;
+  END FUNCTION c_total_vector_init;
+  CONSTANT  c_total_vector    : STD_LOGIC_VECTOR(g_in_data_w*g_sim_lengt-1 DOWNTO 0)   := c_total_vector_init;                     -- vector witch contains all input data vectors to make it easy to fill ctr_vector
+
 
-  SIGNAL    clk               : STD_LOGIC                               := '1';
-  SIGNAL    in_data           : STD_LOGIC_VECTOR(g_in_data_w-1 DOWNTO 0):= (OTHERS => '0');
+  SIGNAL    total_vector_cnt  : NATURAL                                                := 0;                                       -- signal to keep track of how many times there has been checked if there is the correct output
 
-  SIGNAL    out_of            : NATURAL                                 := 0;
-  SIGNAL    out_sosi          : t_dp_sosi                               := c_dp_sosi_init;
+  SIGNAL    tb_end            : STD_LOGIC                                              := '0';                                     -- signal to turn the testbench off
+
+  SIGNAL    clk               : STD_LOGIC                                              := '1';                                     -- clock signal
+  SIGNAL    in_data           : STD_LOGIC_VECTOR(g_in_data_w-1 DOWNTO 0)               := (OTHERS => '0');                         -- input data signal for ddrctrl_repack
+
+  SIGNAL    out_of            : NATURAL                                                := 0;                                       -- output signal from ddrctrl_repack to determen how high the overflow is
+  SIGNAL    out_sosi          : t_dp_sosi                                              := c_dp_sosi_init;                          -- output data signal form ddrctrl_repack
 
 BEGIN
 
-  clk                 <= NOT clk OR tb_end AFTER c_clk_period/2;
+  clk                 <= NOT clk OR tb_end AFTER c_clk_period/2;                                                                   -- genereting clock signal
 
   p_mm : PROCESS
   BEGIN
 
+
+    -- Start the testbench.
     tb_end            <= '0';
+    WAIT UNTIL rising_edge(clk);                                                                                                   -- align to rising edge
+    WAIT UNTIL out_of /= 0;                                                                                                        -- wait for out_of /= 0 to align to ddrctrl_repack properly 
+    WAIT UNTIL out_of = 0;                                                                                                         -- align to ddrctrl_repack 
 
-    WAIT UNTIL rising_edge(clk);  -- align to rising edge
-    WAIT FOR c_clk_period*30;
-    WAIT UNTIL out_of = 0;       -- align to ddrctrl_repack 
 
-    change_in_data : FOR I IN 0 TO 32 LOOP
+    -- Filling the input vector g_sim_lengt amount of times.
+    make_in_data : FOR I IN 0 TO g_sim_lengt-1 LOOP
       --ASSERT FALSE REPORT "I = " & NATURAL'image(I) SEVERITY NOTE;
       in_data(g_in_data_w-1 DOWNTO 0) <= TO_UVEC(I, g_in_data_w);
       WAIT FOR c_clk_period*1;
     END LOOP;
 
-    WAIT FOR c_clk_period*5;
 
+    -- Stop the testbench.
+    WAIT FOR c_clk_period*5;
     tb_end <= '1';
 
     WAIT;
   END PROCESS;
 
+
+  -- Verification by checking if the input vectors are correctly put into the output vector.
   p_verify : PROCESS
   BEGIN
-    WAIT UNTIL rising_edge(out_sosi.valid);
+
+ 
+    WAIT UNTIL rising_edge(clk);                                                                                                   -- align to rising edge
+    WAIT UNTIL out_of /= 0;                                                                                                        -- wait for out_of /= 0 to align to ddrctrl_repack properly 
+    WAIT UNTIL out_of = 0;                                                                                                         -- align to ddrctrl_repack 
+    WAIT FOR c_clk_period*1;                                                                                                       -- first outputdata is empty
+
     IF rising_edge(out_sosi.valid) THEN
-        ASSERT out_sosi.data(c_out_data_w -1 DOWNTO 0) = iets REPORT "Data does not match, I = " SEVERITY NOTE;
+        ASSERT out_sosi.data(c_out_data_w -1 DOWNTO 0) = c_total_vector(c_out_data_w*(total_vector_cnt+1)-1 DOWNTO c_out_data_w*total_vector_cnt) REPORT "Data does not match, total_vector_cnt = " & NATURAL'image(total_vector_cnt)  SEVERITY NOTE;
+        total_vector_cnt <= total_vector_cnt + 1;
     END IF;
   END PROCESS;
 
+
   u_ddrctrl_repack : ENTITY work.ddrctrl_repack
   GENERIC MAP (
     g_tech_ddr        => g_tech_ddr,