diff --git a/libraries/base/dp/src/vhdl/dp_stream_pkg.vhd b/libraries/base/dp/src/vhdl/dp_stream_pkg.vhd
index 7db6dde694d76e17654c077897a824763d8e8bfc..49910852bafbcc65f964d010685ff678cd3910dc 100644
--- a/libraries/base/dp/src/vhdl/dp_stream_pkg.vhd
+++ b/libraries/base/dp/src/vhdl/dp_stream_pkg.vhd
@@ -166,6 +166,9 @@ PACKAGE dp_stream_pkg Is
   FUNCTION RESIZE_DP_EMPTY(   vec : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR;
   FUNCTION RESIZE_DP_CHANNEL( vec : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR;
   FUNCTION RESIZE_DP_ERROR(   vec : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR;
+  
+  FUNCTION REPLICATE_DP_DATA(  seq  : STD_LOGIC_VECTOR                 ) RETURN STD_LOGIC_VECTOR;  -- replicate seq as often as fits in c_dp_stream_data_w
+  FUNCTION UNREPLICATE_DP_DATA(data : STD_LOGIC_VECTOR; seq_w : NATURAL) RETURN STD_LOGIC_VECTOR;  -- unreplicate data to width seq_w, return low seq_w bits and set mismatch MSbits bits to '1'
 
   -- Keep part of head data and combine part of tail data, use the other sosi from head_sosi
   FUNCTION func_dp_data_shift_first(head_sosi, tail_sosi : t_dp_sosi; symbol_w, nof_symbols_per_data, nof_symbols_from_tail              : NATURAL) RETURN t_dp_sosi;
@@ -194,6 +197,8 @@ PACKAGE dp_stream_pkg Is
   -- Functions to set or get a STD_LOGIC field as a STD_LOGIC_VECTOR to or from an siso or an sosi array
   FUNCTION func_dp_stream_arr_set(dp : t_dp_siso_arr; slv : STD_LOGIC_VECTOR; str : STRING) RETURN t_dp_siso_arr;
   FUNCTION func_dp_stream_arr_set(dp : t_dp_sosi_arr; slv : STD_LOGIC_VECTOR; str : STRING) RETURN t_dp_sosi_arr;
+  FUNCTION func_dp_stream_arr_set(dp : t_dp_siso_arr; sl  : STD_LOGIC;        str : STRING) RETURN t_dp_siso_arr;
+  FUNCTION func_dp_stream_arr_set(dp : t_dp_sosi_arr; sl  : STD_LOGIC;        str : STRING) RETURN t_dp_sosi_arr;
   FUNCTION func_dp_stream_arr_get(dp : t_dp_siso_arr;                         str : STRING) RETURN STD_LOGIC_VECTOR;
   FUNCTION func_dp_stream_arr_get(dp : t_dp_sosi_arr;                         str : STRING) RETURN STD_LOGIC_VECTOR;
   
@@ -378,6 +383,36 @@ PACKAGE BODY dp_stream_pkg IS
     RETURN RESIZE_UVEC(vec, c_dp_stream_error_w);
   END RESIZE_DP_ERROR;
   
+  FUNCTION REPLICATE_DP_DATA(seq : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS
+    CONSTANT c_seq_w            : NATURAL := seq'LENGTH;
+    CONSTANT c_nof_replications : NATURAL := ceil_div(c_dp_stream_data_w, c_seq_w);
+    CONSTANT c_vec_w            : NATURAL := ceil_value(c_dp_stream_data_w, c_seq_w);
+    VARIABLE v_vec              : STD_LOGIC_VECTOR(c_vec_w-1 DOWNTO 0);
+  BEGIN
+    FOR I IN 0 TO c_nof_replications-1 LOOP
+      v_vec((I+1)*c_seq_w-1 DOWNTO I*c_seq_w) := seq;
+    END LOOP;
+    RETURN v_vec(c_dp_stream_data_w-1 DOWNTO 0);
+  END REPLICATE_DP_DATA;
+  
+  FUNCTION UNREPLICATE_DP_DATA(data : STD_LOGIC_VECTOR; seq_w :NATURAL) RETURN STD_LOGIC_VECTOR IS
+    CONSTANT c_data_w           : NATURAL := data'LENGTH;
+    CONSTANT c_nof_replications : NATURAL := ceil_div(c_data_w, seq_w);
+    CONSTANT c_vec_w            : NATURAL := ceil_value(c_data_w, seq_w);
+    VARIABLE v_seq              : STD_LOGIC_VECTOR(seq_w-1 DOWNTO 0);
+    VARIABLE v_data             : STD_LOGIC_VECTOR(c_vec_w-1 DOWNTO 0);
+    VARIABLE v_vec              : STD_LOGIC_VECTOR(c_vec_w-1 DOWNTO 0);
+  BEGIN
+    v_data := RESIZE_UVEC(data, c_vec_w);
+    v_seq := v_data(seq_w-1 DOWNTO 0);                                                          -- low data part is the v_seq
+    v_vec(seq_w-1 DOWNTO 0) := v_seq;                                                           -- keep v_seq at low part of return value
+    IF c_nof_replications>1 THEN
+      FOR I IN 1 TO c_nof_replications-1 LOOP
+        v_vec((I+1)*seq_w-1 DOWNTO I*seq_w) := v_data((I+1)*seq_w-1 DOWNTO I*seq_w) XOR v_seq;  -- set return bit to '1' for high part data bits that do not match low part v_seq
+      END LOOP;
+    END IF;
+    RETURN v_vec(c_data_w-1 DOWNTO 0);
+  END UNREPLICATE_DP_DATA;
   
   -- Keep part of head data and combine part of tail data
   FUNCTION func_dp_data_shift_first(head_sosi, tail_sosi : t_dp_sosi; symbol_w, nof_symbols_per_data, nof_symbols_from_tail : NATURAL) RETURN t_dp_sosi IS
@@ -647,6 +682,18 @@ PACKAGE BODY dp_stream_pkg IS
     RETURN v_dp;
   END func_dp_stream_arr_set;
   
+  FUNCTION func_dp_stream_arr_set(dp : t_dp_siso_arr; sl : STD_LOGIC; str : STRING) RETURN t_dp_siso_arr IS
+    VARIABLE v_slv : STD_LOGIC_VECTOR(dp'RANGE) := (OTHERS=>sl);
+  BEGIN
+    RETURN func_dp_stream_arr_set(dp, v_slv, str);
+  END func_dp_stream_arr_set;
+  
+  FUNCTION func_dp_stream_arr_set(dp : t_dp_sosi_arr; sl : STD_LOGIC; str : STRING) RETURN t_dp_sosi_arr IS
+    VARIABLE v_slv : STD_LOGIC_VECTOR(dp'RANGE) := (OTHERS=>sl);
+  BEGIN
+    RETURN func_dp_stream_arr_set(dp, v_slv, str);
+  END func_dp_stream_arr_set;
+  
   FUNCTION func_dp_stream_arr_get(dp : t_dp_siso_arr; str : STRING) RETURN STD_LOGIC_VECTOR IS
     VARIABLE v_ctrl : STD_LOGIC_VECTOR(dp'RANGE);
   BEGIN