Skip to content
Snippets Groups Projects

Move func_sdp_bdo_cep_hdr_field_sel_dest() from sdp_bdo_pkg to...

Merged Eric Kooistra requested to merge L2SDP-963 into master
1 file
+ 6
6
Compare changes
  • Side-by-side
  • Inline
@@ -339,6 +339,21 @@ package tb_dp_pkg is
-- Verify incrementing data
-- . wrap at c_out_data_max when >0, else no wrap when c_out_data_max=0
-- . default increment by +1, but also allow an increment by +c_out_data_gap
-- or +c_out_data_gap2.
-- . by using sop or eop for out_val input, the proc_dp_verify_data() can
-- also be used to verify other SOSI fields like bsn, error, channel, empty
procedure proc_dp_verify_data(constant c_str : in string;
constant c_ready_latency : in natural;
constant c_out_data_max : in unsigned;
constant c_out_data_gap : in unsigned;
constant c_out_data_gap2 : in unsigned;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_ready : in std_logic;
signal out_val : in std_logic;
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector);
procedure proc_dp_verify_data(constant c_str : in string;
constant c_ready_latency : in natural;
constant c_out_data_max : in unsigned;
@@ -367,11 +382,21 @@ package tb_dp_pkg is
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_ready : in std_logic;
signal out_val : in std_logic; -- by using sop or eop proc_dp_verify_data() can also be used to verify other SOSI fields like bsn, error, channel, empty
signal out_val : in std_logic;
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector);
-- Verify incrementing data with RL > 0 or no flow control, support wrap at maximum and increment gap
procedure proc_dp_verify_data(constant c_str : in string;
constant c_out_data_max : in unsigned;
constant c_out_data_gap : in unsigned;
constant c_out_data_gap2 : in unsigned;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_val : in std_logic;
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector);
procedure proc_dp_verify_data(constant c_str : in string;
constant c_out_data_max : in unsigned;
constant c_out_data_gap : in unsigned;
@@ -381,6 +406,16 @@ package tb_dp_pkg is
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector);
procedure proc_dp_verify_data(constant c_str : in string;
constant c_out_data_max : in natural;
constant c_out_data_gap : in natural;
constant c_out_data_gap2 : in natural;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_val : in std_logic;
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector);
procedure proc_dp_verify_data(constant c_str : in string;
constant c_out_data_max : in natural;
constant c_out_data_gap : in natural;
@@ -721,8 +756,8 @@ package body tb_dp_pkg is
src_out.channel <= TO_DP_CHANNEL(c_channel);
src_out.err <= TO_DP_ERROR(c_error);
if c_use_data = true then src_out.data <= RESIZE_DP_DATA(v_data); end if;
if c_use_data = false then src_out.re <= RESIZE_DP_DSP_DATA(v_re); end if;
if c_use_data = false then src_out.im <= RESIZE_DP_DSP_DATA(v_im); end if;
if c_use_data = false then src_out.re <= RESIZE_DP_DSP_UDATA(v_re); end if;
if c_use_data = false then src_out.im <= RESIZE_DP_DSP_UDATA(v_im); end if;
if c_nof_data > 1 then
-- . sop
proc_dp_stream_ready_latency(c_ready_latency, clk, src_in.ready, in_en, c_sync, '1', '1', '0', src_out.sync, src_out.valid, src_out.sop, src_out.eop);
@@ -732,8 +767,8 @@ package body tb_dp_pkg is
v_re := func_dp_data_incr(c_data_w, c_symbol_w, v_re);
v_im := func_dp_data_incr(c_data_w, c_symbol_w, v_im);
if c_use_data = true then src_out.data <= RESIZE_DP_DATA(v_data); end if;
if c_use_data = false then src_out.re <= RESIZE_DP_DSP_DATA(v_re); end if;
if c_use_data = false then src_out.im <= RESIZE_DP_DSP_DATA(v_im); end if;
if c_use_data = false then src_out.re <= RESIZE_DP_DSP_UDATA(v_re); end if;
if c_use_data = false then src_out.im <= RESIZE_DP_DSP_UDATA(v_im); end if;
proc_dp_stream_ready_latency(c_ready_latency, clk, src_in.ready, in_en, '0', '1', '0', '0', src_out.sync, src_out.valid, src_out.sop, src_out.eop);
end loop;
@@ -742,8 +777,8 @@ package body tb_dp_pkg is
v_re := func_dp_data_incr(c_data_w, c_symbol_w, v_re);
v_im := func_dp_data_incr(c_data_w, c_symbol_w, v_im);
if c_use_data = true then src_out.data <= RESIZE_DP_DATA(v_data); end if;
if c_use_data = false then src_out.re <= RESIZE_DP_DSP_DATA(v_re); end if;
if c_use_data = false then src_out.im <= RESIZE_DP_DSP_DATA(v_im); end if;
if c_use_data = false then src_out.re <= RESIZE_DP_DSP_UDATA(v_re); end if;
if c_use_data = false then src_out.im <= RESIZE_DP_DSP_UDATA(v_im); end if;
proc_dp_stream_ready_latency(c_ready_latency, clk, src_in.ready, in_en, '0', '1', '0', '1', src_out.sync, src_out.valid, src_out.sop, src_out.eop);
else
-- . sop and eop, frame has only one word
@@ -1878,10 +1913,12 @@ package body tb_dp_pkg is
-- Verify incrementing data
-- . wrap at c_out_data_max when >0, else no wrap when c_out_data_max=0
-- . default increment by 1, but also allow an increment by c_out_data_gap
-- . or c_out_data_gap2.
procedure proc_dp_verify_data(constant c_str : in string;
constant c_ready_latency : in natural;
constant c_out_data_max : in unsigned;
constant c_out_data_gap : in unsigned;
constant c_out_data_gap2 : in unsigned;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_ready : in std_logic; -- only needed when c_ready_latency = 0
@@ -1903,10 +1940,17 @@ package body tb_dp_pkg is
prev_out_data <= TO_SVEC(-1, prev_out_data'length); -- do wrap
end if;
if verify_en = '1' then
if unsigned(out_data) /= unsigned(prev_out_data) + 1 and -- check increment +1
unsigned(out_data) /= unsigned(prev_out_data) + c_out_data_gap and -- increment +c_out_data_gap
unsigned(out_data) /= unsigned(prev_out_data) + c_out_data_gap - c_out_data_max then -- increment +c_out_data_gap wrapped
report "DP : Wrong out_data " & c_str & " count" severity ERROR;
-- Default check increment +1.
-- also allow increment +c_out_data_gap or +c_out_data_gap2.
-- also allow increment +c_out_data_gap wrapped by c_out_data_max.
if unsigned(out_data) /= unsigned(prev_out_data) + 1 and
unsigned(out_data) /= unsigned(prev_out_data) + c_out_data_gap and
unsigned(out_data) /= unsigned(prev_out_data) + c_out_data_gap2 and
unsigned(out_data) /= unsigned(prev_out_data) + c_out_data_gap - c_out_data_max then
report "DP : Wrong out_data " & c_str & " count (" &
natural'image(to_uint(out_data)) & ", " &
natural'image(to_uint(prev_out_data)) & ")"
severity ERROR;
end if;
end if;
end if;
@@ -1914,6 +1958,22 @@ package body tb_dp_pkg is
end if;
end proc_dp_verify_data;
procedure proc_dp_verify_data(constant c_str : in string;
constant c_ready_latency : in natural;
constant c_out_data_max : in unsigned;
constant c_out_data_gap : in unsigned;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_ready : in std_logic; -- only needed when c_ready_latency = 0
signal out_val : in std_logic;
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector) is
begin
proc_dp_verify_data(c_str, c_ready_latency,
c_out_data_max, c_out_data_gap, c_unsigned_1,
clk, verify_en, out_ready, out_val, out_data, prev_out_data);
end proc_dp_verify_data;
-- Verify incrementing data that wraps in range 0 ... c_out_data_max
procedure proc_dp_verify_data(constant c_str : in string;
constant c_ready_latency : in natural;
@@ -1925,7 +1985,9 @@ package body tb_dp_pkg is
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector) is
begin
proc_dp_verify_data(c_str, c_ready_latency, c_out_data_max, to_unsigned(1,1), clk, verify_en, out_ready, out_val, out_data, prev_out_data);
proc_dp_verify_data(c_str, c_ready_latency,
c_out_data_max, c_unsigned_1, c_unsigned_1,
clk, verify_en, out_ready, out_val, out_data, prev_out_data);
end proc_dp_verify_data;
-- Verify incrementing data
@@ -1938,26 +2000,47 @@ package body tb_dp_pkg is
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector) is
begin
proc_dp_verify_data(c_str, c_ready_latency, to_unsigned(0,1), to_unsigned(1,1), clk, verify_en, out_ready, out_val, out_data, prev_out_data);
proc_dp_verify_data(c_str, c_ready_latency,
c_unsigned_0, c_unsigned_1, c_unsigned_1,
clk, verify_en, out_ready, out_val, out_data, prev_out_data);
end proc_dp_verify_data;
-- Verify incrementing data with RL > 0 or no flow control
procedure proc_dp_verify_data(constant c_str : in string;
constant c_out_data_max : in unsigned;
constant c_out_data_gap : in unsigned;
constant c_out_data_gap2 : in unsigned;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_val : in std_logic;
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector) is
begin
-- Use out_val as void signal to pass on to unused out_ready, because a signal input can not connect a constant or variable
proc_dp_verify_data(c_str, 1, c_out_data_max, c_out_data_gap, clk, verify_en, out_val, out_val, out_data, prev_out_data);
-- Use out_val as void signal to pass on to unused out_ready, because a
-- signal input can not connect a constant or variable.
proc_dp_verify_data(c_str, 1,
c_out_data_max, c_out_data_gap, c_out_data_gap2,
clk, verify_en, out_val, out_val, out_data, prev_out_data);
end proc_dp_verify_data;
procedure proc_dp_verify_data(constant c_str : in string;
constant c_out_data_max : in unsigned;
constant c_out_data_gap : in unsigned;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_val : in std_logic;
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector) is
begin
proc_dp_verify_data(c_str,
c_out_data_max, c_out_data_gap, c_unsigned_1,
clk, verify_en, out_val, out_data, prev_out_data);
end proc_dp_verify_data;
procedure proc_dp_verify_data(constant c_str : in string;
constant c_out_data_max : in natural;
constant c_out_data_gap : in natural;
constant c_out_data_gap2 : in natural;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_val : in std_logic;
@@ -1965,11 +2048,16 @@ package body tb_dp_pkg is
signal prev_out_data : inout std_logic_vector) is
constant c_data_w : natural := out_data'length;
begin
proc_dp_verify_data(c_str, to_unsigned(c_out_data_max, c_data_w), to_unsigned(c_out_data_gap, c_data_w), clk, verify_en, out_val, out_data, prev_out_data);
proc_dp_verify_data(c_str,
to_unsigned(c_out_data_max, c_data_w),
to_unsigned(c_out_data_gap, c_data_w),
to_unsigned(c_out_data_gap2, c_data_w),
clk, verify_en, out_val, out_data, prev_out_data);
end proc_dp_verify_data;
procedure proc_dp_verify_data(constant c_str : in string;
constant c_out_data_max : in natural;
constant c_out_data_gap : in natural;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_val : in std_logic;
@@ -1977,18 +2065,34 @@ package body tb_dp_pkg is
signal prev_out_data : inout std_logic_vector) is
constant c_data_w : natural := out_data'length;
begin
proc_dp_verify_data(c_str, to_unsigned(c_out_data_max, c_data_w), to_unsigned(1, 1), clk, verify_en, out_val, out_data, prev_out_data);
proc_dp_verify_data(c_str,
c_out_data_max, c_out_data_gap, 1,
clk, verify_en, out_val, out_data, prev_out_data);
end proc_dp_verify_data;
procedure proc_dp_verify_data(constant c_str : in string;
constant c_out_data_max : in natural;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_val : in std_logic;
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector) is
constant c_data_w : natural := out_data'length;
begin
-- Use out_val as void signal to pass on to unused out_ready, because a signal input can not connect a constant or variable
proc_dp_verify_data(c_str, 1, to_unsigned(0,1), to_unsigned(1,1), clk, verify_en, out_val, out_val, out_data, prev_out_data);
proc_dp_verify_data(c_str,
c_out_data_max, 1,
clk, verify_en, out_val, out_data, prev_out_data);
end proc_dp_verify_data;
procedure proc_dp_verify_data(constant c_str : in string;
signal clk : in std_logic;
signal verify_en : in std_logic;
signal out_val : in std_logic;
signal out_data : in std_logic_vector;
signal prev_out_data : inout std_logic_vector) is
begin
proc_dp_verify_data(c_str, 0,
clk, verify_en, out_val, out_data, prev_out_data);
end proc_dp_verify_data;
------------------------------------------------------------------------------
Loading