diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf_ring/tb_lofar2_unb2c_sdp_station_bf_ring.vhd b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf_ring/tb_lofar2_unb2c_sdp_station_bf_ring.vhd index 9243cd4d17697912183c0f60883cbede0a6c117e..ae3d8b5d299778cd66403c2b11ecdc62114d5307 100644 --- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf_ring/tb_lofar2_unb2c_sdp_station_bf_ring.vhd +++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/revisions/lofar2_unb2c_sdp_station_bf_ring/tb_lofar2_unb2c_sdp_station_bf_ring.vhd @@ -1372,7 +1372,8 @@ BEGIN -- Prepare exp_sdp_cep_header before rx_beamlet_sosi.eop, so that -- p_verify_cep_header can verify it at rx_beamlet_sosi.eop. - exp_sdp_cep_header <= func_sdp_compose_cep_header(c_exp_ip_header_checksum, + exp_sdp_cep_header <= func_sdp_compose_cep_header(c_cep_ip_src_addr, + c_exp_ip_header_checksum, c_exp_sdp_info, c_last_gn, c_exp_beamlet_scale, diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd index 493c24da17a557243eaa9ec614cd625bacd397e6..762d2e704f509e7df83aa29ce4d8c0a85382368e 100644 --- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd @@ -60,6 +60,14 @@ PACKAGE tb_sdp_pkg is ----------------------------------------------------------------------------- -- Beamlet output via 10GbE to CEP (= central processor) ----------------------------------------------------------------------------- + FUNCTION func_sdp_compose_cep_header(ip_src_addr : STD_LOGIC_VECTOR; + ip_header_checksum : NATURAL; + sdp_info : t_sdp_info; -- app header + gn_index : NATURAL; + beamlet_scale : NATURAL; + beamlet_index : NATURAL; + dp_bsn : NATURAL) RETURN t_sdp_cep_header; + FUNCTION func_sdp_compose_cep_header(ip_header_checksum : NATURAL; sdp_info : t_sdp_info; -- app header gn_index : NATURAL; @@ -248,17 +256,15 @@ PACKAGE BODY tb_sdp_pkg IS RETURN TRUE; END func_sdp_verify_stat_header; - - FUNCTION func_sdp_compose_cep_header(ip_header_checksum : NATURAL; + FUNCTION func_sdp_compose_cep_header(ip_src_addr : STD_LOGIC_VECTOR; + ip_header_checksum : NATURAL; sdp_info : t_sdp_info; -- app header gn_index : NATURAL; beamlet_scale : NATURAL; beamlet_index : NATURAL; dp_bsn : NATURAL) RETURN t_sdp_cep_header IS -- Use sim default dst and src MAC, IP, UDP port from sdp_pkg.vhd and based on gn_index - CONSTANT c_mac_15_0 : STD_LOGIC_VECTOR(15 DOWNTO 0) := func_sdp_gn_index_to_mac_15_0(gn_index); - CONSTANT c_ip_15_0 : STD_LOGIC_VECTOR(15 DOWNTO 0) := func_sdp_gn_index_to_ip_15_0(gn_index); - + CONSTANT c_mac_15_0 : STD_LOGIC_VECTOR(15 DOWNTO 0) := func_sdp_gn_index_to_mac_15_0(gn_index); VARIABLE v_hdr : t_sdp_cep_header; BEGIN -- eth header @@ -277,7 +283,7 @@ PACKAGE BODY tb_sdp_pkg IS v_hdr.ip.time_to_live := TO_UVEC( 127, c_network_ip_time_to_live_w); v_hdr.ip.protocol := TO_UVEC( 17, c_network_ip_protocol_w); v_hdr.ip.header_checksum := TO_UVEC( ip_header_checksum, c_network_ip_header_checksum_w); - v_hdr.ip.src_ip_addr := c_sdp_cep_ip_src_addr_31_16 & c_ip_15_0; -- c_network_ip_addr_w + v_hdr.ip.src_ip_addr := ip_src_addr; -- c_network_ip_addr_w v_hdr.ip.dst_ip_addr := c_sdp_cep_ip_dst_addr; -- c_network_ip_addr_w -- udp header @@ -312,6 +318,25 @@ PACKAGE BODY tb_sdp_pkg IS RETURN v_hdr; END func_sdp_compose_cep_header; + FUNCTION func_sdp_compose_cep_header(ip_header_checksum : NATURAL; + sdp_info : t_sdp_info; -- app header + gn_index : NATURAL; + beamlet_scale : NATURAL; + beamlet_index : NATURAL; + dp_bsn : NATURAL) RETURN t_sdp_cep_header IS + -- Use sim default dst and src MAC, IP, UDP port from sdp_pkg.vhd and based on gn_index + CONSTANT c_ip_15_0 : STD_LOGIC_VECTOR(15 DOWNTO 0) := func_sdp_gn_index_to_ip_15_0(gn_index); + CONSTANT c_ip_src_addr : STD_LOGIC_VECTOR(31 DOWNTO 0) := c_sdp_cep_ip_src_addr_31_16 & c_ip_15_0; + BEGIN + RETURN func_sdp_compose_cep_header(c_ip_src_addr, + ip_header_checksum, + sdp_info, + gn_index, + beamlet_scale, + beamlet_index, + dp_bsn); + END func_sdp_compose_cep_header; + FUNCTION func_sdp_verify_cep_header(in_hdr, exp_hdr : t_sdp_cep_header) RETURN BOOLEAN IS VARIABLE v_beamlet_index : NATURAL; BEGIN