diff --git a/libraries/base/dp/tb/vhdl/dp_stream_stimuli.vhd b/libraries/base/dp/tb/vhdl/dp_stream_stimuli.vhd
index 742233ad294cbf977d35b2f776fa852e960de337..52c549b540b3532ca22255dfdec2bf6439863af6 100644
--- a/libraries/base/dp/tb/vhdl/dp_stream_stimuli.vhd
+++ b/libraries/base/dp/tb/vhdl/dp_stream_stimuli.vhd
@@ -177,12 +177,15 @@ begin
     v_last.channel := TO_DP_CHANNEL(g_channel_init + (g_nof_repeat - 1) * g_channel_incr);
     v_last.err     := TO_DP_ERROR(g_err_init + (g_nof_repeat - 1) * g_err_incr);
     -- . account for g_pkt_len
-    v_last.data    := INCR_UVEC(v_sosi.data, g_pkt_len - 1);
-    v_last.data    := RESIZE_DP_DATA(v_last.data(g_in_dat_w - 1 downto 0));  -- wrap when >= 2**g_in_dat_w
-    v_last.re      := INCR_UVEC(v_sosi.re, g_pkt_len - 1);
-    v_last.re      := RESIZE_DP_DSP_DATA(v_last.re(g_in_dat_w - 1 downto 0));  -- wrap when >= 2**g_in_dat_w
-    v_last.im      := INCR_UVEC(v_sosi.im, g_pkt_len - 1);
-    v_last.im      := RESIZE_DP_DSP_DATA(v_last.im(g_in_dat_w - 1 downto 0));  -- wrap when >= 2**g_in_dat_w
+    if g_use_complex = false then
+      v_last.data := INCR_UVEC(v_sosi.data, g_pkt_len - 1);
+      v_last.data := RESIZE_DP_DATA(v_last.data(g_in_dat_w - 1 downto 0));  -- wrap when >= 2**g_in_dat_w
+    else
+      v_last.re := INCR_UVEC(v_sosi.re, g_pkt_len - 1);
+      v_last.re := RESIZE_DP_DSP_DATA(v_last.re(g_in_dat_w - 1 downto 0));  -- wrap when >= 2**g_in_dat_w
+      v_last.im := INCR_UVEC(v_sosi.im, g_pkt_len - 1);
+      v_last.im := RESIZE_DP_DSP_DATA(v_last.im(g_in_dat_w - 1 downto 0));  -- wrap when >= 2**g_in_dat_w
+    end if;
     last_snk_in <= v_last;
 
     -- Signal end of stimuli