Skip to content
Snippets Groups Projects
Commit 0954b97a authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Corrections.

parent 1e6c10c2
No related branches found
No related tags found
1 merge request!359Clarify g_nof_destinations_max design revision parameter and package constants...
Pipeline #60065 passed
...@@ -209,58 +209,65 @@ begin ...@@ -209,58 +209,65 @@ begin
proc_common_wait_until_low(dp_clk, mm_rst); proc_common_wait_until_low(dp_clk, mm_rst);
proc_common_wait_some_cycles(mm_clk, 10); proc_common_wait_some_cycles(mm_clk, 10);
---------------------------------------------------------------------------- if c_nof_destinations_max = 1 then
-- BDO multiple destinations info in sdp_bdo_destinations_reg --------------------------------------------------------------------------
---------------------------------------------------------------------------- -- BDO one destination fields in dp_offload_tx_v3
-- . Set nof_destinations = g_nof_destinations --------------------------------------------------------------------------
v_offset := c_sdp_bdo_mm_nof_destinations_max * 4; proc_mem_mm_bus_wr(41, to_uint(c_sdp_cep_eth_dst_mac(47 downto 32)), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_mem_mm_bus_wr(v_offset + 0, g_nof_destinations, mm_clk, reg_destinations_cipo, reg_destinations_copi); proc_mem_mm_bus_wr(40, to_sint(c_sdp_cep_eth_dst_mac(31 downto 0)), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_mem_mm_bus_wr(25, to_sint(c_sdp_cep_ip_dst_addr), mm_clk, hdr_dat_cipo, hdr_dat_copi);
-- . Read back nof_destinations proc_mem_mm_bus_wr(23, to_uint(c_sdp_cep_udp_dst_port), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_common_wait_cross_clock_domain_latency(c_mm_clk_period, c_dp_clk_period, c_common_cross_clock_domain_latency * 2); else
proc_mem_mm_bus_rd(v_offset + 0, mm_clk, reg_destinations_cipo, reg_destinations_copi); ----------------------------------------------------------------------------
proc_mem_mm_bus_rd_latency(1, mm_clk); -- BDO multiple destinations info in sdp_bdo_destinations_reg
rd_nof_destinations <= to_uint(reg_destinations_cipo.rddata(c_word_w - 1 downto 0)); ----------------------------------------------------------------------------
proc_common_wait_some_cycles(mm_clk, 1); -- . Set nof_destinations = g_nof_destinations
assert rd_nof_destinations = g_nof_destinations report "Wrong MM readback nof_destinations" severity error; v_offset := c_sdp_bdo_mm_nof_destinations_max * 4;
proc_mem_mm_bus_wr(v_offset + 0, g_nof_destinations, mm_clk, reg_destinations_cipo, reg_destinations_copi);
-- . Read nof_destinations_act, to check that g_nof_destinations is
-- forced to c_nof_destinations -- . Read back nof_destinations
proc_common_wait_cross_clock_domain_latency(c_mm_clk_period, c_dp_clk_period, c_common_cross_clock_domain_latency * 2); proc_common_wait_cross_clock_domain_latency(c_mm_clk_period, c_dp_clk_period, c_common_cross_clock_domain_latency * 2);
proc_mem_mm_bus_rd(v_offset + 1, mm_clk, reg_destinations_cipo, reg_destinations_copi); proc_mem_mm_bus_rd(v_offset + 0, mm_clk, reg_destinations_cipo, reg_destinations_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk); proc_mem_mm_bus_rd_latency(1, mm_clk);
rd_nof_destinations_act <= to_uint(reg_destinations_cipo.rddata(c_word_w - 1 downto 0)); rd_nof_destinations <= to_uint(reg_destinations_cipo.rddata(c_word_w - 1 downto 0));
proc_common_wait_some_cycles(mm_clk, 1); proc_common_wait_some_cycles(mm_clk, 1);
assert rd_nof_destinations_act = c_nof_destinations report "Wrong MM read nof_destinations_act" severity error; assert rd_nof_destinations = g_nof_destinations report "Wrong MM readback nof_destinations" severity error;
-- . Use same destination MAC/IP/UDP for all destinations, to ease rx_beamlet_header verification -- . Read nof_destinations_act, to check that g_nof_destinations is
-- and to have same c_exp_ip_header_checksum value for all c_nof_destinations. -- forced to c_nof_destinations
for DI in 0 to c_nof_destinations - 1 loop proc_common_wait_cross_clock_domain_latency(c_mm_clk_period, c_dp_clk_period, c_common_cross_clock_domain_latency * 2);
proc_mem_mm_bus_wr(DI * 2 + 1, to_uint(c_sdp_cep_eth_dst_mac(47 downto 32)), mm_clk, reg_destinations_cipo, reg_destinations_copi); proc_mem_mm_bus_rd(v_offset + 1, mm_clk, reg_destinations_cipo, reg_destinations_copi);
proc_mem_mm_bus_wr(DI * 2, to_sint(c_sdp_cep_eth_dst_mac(31 downto 0)), mm_clk, reg_destinations_cipo, reg_destinations_copi); proc_mem_mm_bus_rd_latency(1, mm_clk);
end loop; rd_nof_destinations_act <= to_uint(reg_destinations_cipo.rddata(c_word_w - 1 downto 0));
v_offset := c_sdp_bdo_mm_nof_destinations_max * 2; proc_common_wait_some_cycles(mm_clk, 1);
for DI in 0 to c_nof_destinations - 1 loop assert rd_nof_destinations_act = c_nof_destinations report "Wrong MM read nof_destinations_act" severity error;
proc_mem_mm_bus_wr(v_offset + DI, to_sint(c_sdp_cep_ip_dst_addr), mm_clk, reg_destinations_cipo, reg_destinations_copi);
end loop; -- . Use same destination MAC/IP/UDP for all destinations, to ease rx_beamlet_header verification
v_offset := c_sdp_bdo_mm_nof_destinations_max * 3; -- and to have same c_exp_ip_header_checksum value for all c_nof_destinations.
for DI in 0 to c_nof_destinations - 1 loop for DI in 0 to c_nof_destinations - 1 loop
proc_mem_mm_bus_wr(v_offset + DI, to_uint(c_sdp_cep_udp_dst_port), mm_clk, reg_destinations_cipo, reg_destinations_copi); proc_mem_mm_bus_wr(DI * 2 + 1, to_uint(c_sdp_cep_eth_dst_mac(47 downto 32)), mm_clk, reg_destinations_cipo, reg_destinations_copi);
end loop; proc_mem_mm_bus_wr(DI * 2, to_sint(c_sdp_cep_eth_dst_mac(31 downto 0)), mm_clk, reg_destinations_cipo, reg_destinations_copi);
end loop;
v_offset := c_sdp_bdo_mm_nof_destinations_max * 2;
for DI in 0 to c_nof_destinations - 1 loop
proc_mem_mm_bus_wr(v_offset + DI, to_sint(c_sdp_cep_ip_dst_addr), mm_clk, reg_destinations_cipo, reg_destinations_copi);
end loop;
v_offset := c_sdp_bdo_mm_nof_destinations_max * 3;
for DI in 0 to c_nof_destinations - 1 loop
proc_mem_mm_bus_wr(v_offset + DI, to_uint(c_sdp_cep_udp_dst_port), mm_clk, reg_destinations_cipo, reg_destinations_copi);
end loop;
end if;
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
-- BDO header src and single destination fields in dp_offload_tx_v3 -- BDO header src fields in dp_offload_tx_v3
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
-- . Use sim default dst and src MAC, IP, UDP port from sdp_pkg.vhd and based on c_gn_id -- . Use sim default dst and src MAC/IP/UDP port from sdp_pkg.vhd and based
-- on c_gn_id
-- . use signed to fit 32 b in integer -- . use signed to fit 32 b in integer
proc_mem_mm_bus_wr(39, to_uint(c_cep_eth_src_mac(47 downto 32)), mm_clk, hdr_dat_cipo, hdr_dat_copi); proc_mem_mm_bus_wr(39, to_uint(c_cep_eth_src_mac(47 downto 32)), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_mem_mm_bus_wr(38, to_sint(c_cep_eth_src_mac(31 downto 0)), mm_clk, hdr_dat_cipo, hdr_dat_copi); proc_mem_mm_bus_wr(38, to_sint(c_cep_eth_src_mac(31 downto 0)), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_mem_mm_bus_wr(26, to_sint(c_cep_ip_src_addr), mm_clk, hdr_dat_cipo, hdr_dat_copi); proc_mem_mm_bus_wr(26, to_sint(c_cep_ip_src_addr), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_mem_mm_bus_wr(24, to_uint(c_cep_udp_src_port), mm_clk, hdr_dat_cipo, hdr_dat_copi); proc_mem_mm_bus_wr(24, to_uint(c_cep_udp_src_port), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_mem_mm_bus_wr(41, to_uint(c_sdp_cep_eth_dst_mac(47 downto 32)), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_mem_mm_bus_wr(40, to_sint(c_sdp_cep_eth_dst_mac(31 downto 0)), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_mem_mm_bus_wr(25, to_sint(c_sdp_cep_ip_dst_addr), mm_clk, hdr_dat_cipo, hdr_dat_copi);
proc_mem_mm_bus_wr(23, to_uint(c_sdp_cep_udp_dst_port), mm_clk, hdr_dat_cipo, hdr_dat_copi);
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
-- Enable beamlet output (dp_xonoff) -- Enable beamlet output (dp_xonoff)
......
...@@ -48,15 +48,15 @@ begin ...@@ -48,15 +48,15 @@ begin
-- Multiple BDO destinations -- Multiple BDO destinations
-- . prime number combination -- . prime number combination
u_multi_3_7 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 3, 7); u_multi_7_3 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 7, 3);
-- . use 1 destnation, when more are available -- . use 1 destnation, when more are available
u_multi_1_16 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 1, 16); u_multi_16_1 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 16, 1);
-- . use all destinations that are available -- . use all destinations that are available
u_multi_16_16 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 16, 16); u_multi_16_16 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 16, 16);
-- . use prime number of destination from maximum available -- . use prime number of destination from maximum available
u_multi_7_32 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 7, 32); u_multi_32_7 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 32, 7);
-- . use unfeasible number of destination, to check that it becomes 1 less -- . use unfeasible number of destination, to check that it becomes 1 less
u_multi_32_32 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 32, 32); u_multi_32_32 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 32, 32);
-- . use maximum number of destinations -- . use maximum number of destinations
u_multi_31_32 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 31, 32); u_multi_32_31 : entity work.tb_sdp_beamformer_output generic map( 50, 0, true, 32, 31);
end tb; end tb;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment