diff --git a/applications/rdma_demo/src/vhdl/rdma_demo_roce_tester_wrapper.vhd b/applications/rdma_demo/src/vhdl/rdma_demo_roce_tester_wrapper.vhd index 7eab44990b6ef4e6cbc5a271f6d7d7647c196969..c6f790ea7c039c9ba22f58024a8158e6ffcb8d80 100644 --- a/applications/rdma_demo/src/vhdl/rdma_demo_roce_tester_wrapper.vhd +++ b/applications/rdma_demo/src/vhdl/rdma_demo_roce_tester_wrapper.vhd @@ -154,6 +154,7 @@ end rdma_demo_roce_tester_wrapper; architecture str of rdma_demo_roce_tester_wrapper is constant c_nof_byte : natural := c_rdma_demo_nof_octet_output_100gbe; + constant c_reverse_byte_order : boolean := false; signal rx_udp_sosi_arr : t_dp_sosi_arr(0 downto 0) := (others => c_dp_sosi_rst); signal rx_udp_siso_arr : t_dp_siso_arr(0 downto 0) := (others => c_dp_siso_rdy); @@ -286,11 +287,6 @@ begin tx_udp_tid <= tx_udp_axi4_sosi.tid; tx_udp_tdest <= tx_udp_axi4_sosi.tdest; tx_udp_tuser <= tx_udp_axi4_sosi.tuser; - -- reverse order of bytes - gen_tx_data : for I in 0 to c_nof_byte - 1 generate - tx_udp_tdata( (I + 1) * c_octet_w - 1 downto I * c_octet_w) <= tx_udp_axi4_sosi.tdata((c_nof_byte - I) * c_octet_w - 1 downto (c_nof_byte - 1 - I) * c_octet_w); - tx_udp_tkeep(I) <= tx_udp_axi4_sosi.tkeep(c_nof_byte - 1 - I); - end generate; -- rx_udp rx_udp_tready <= rx_udp_axi4_siso.tready; @@ -301,10 +297,25 @@ begin rx_udp_axi4_sosi.tid <= rx_udp_tid; rx_udp_axi4_sosi.tdest <= rx_udp_tdest; rx_udp_axi4_sosi.tuser <= rx_udp_tuser; + -- reverse order of bytes - gen_rx_data : for I in 0 to c_nof_byte - 1 generate - rx_udp_axi4_sosi.tdata( (I + 1) * c_octet_w - 1 downto I * c_octet_w) <= rx_udp_tdata((c_nof_byte - I) * c_octet_w - 1 downto (c_nof_byte - 1 - I) * c_octet_w); - rx_udp_axi4_sosi.tkeep(I) <= rx_udp_tkeep(c_nof_byte - 1 - I); + gen_reverse_bytes : if c_reverse_byte_order generate + gen_tx_data : for I in 0 to c_nof_byte - 1 generate + tx_udp_tdata( (I + 1) * c_octet_w - 1 downto I * c_octet_w) <= tx_udp_axi4_sosi.tdata((c_nof_byte - I) * c_octet_w - 1 downto (c_nof_byte - 1 - I) * c_octet_w); + tx_udp_tkeep(I) <= tx_udp_axi4_sosi.tkeep(c_nof_byte - 1 - I); + end generate; + + gen_rx_data : for I in 0 to c_nof_byte - 1 generate + rx_udp_axi4_sosi.tdata( (I + 1) * c_octet_w - 1 downto I * c_octet_w) <= rx_udp_tdata((c_nof_byte - I) * c_octet_w - 1 downto (c_nof_byte - 1 - I) * c_octet_w); + rx_udp_axi4_sosi.tkeep(I) <= rx_udp_tkeep(c_nof_byte - 1 - I); + end generate; + end generate; + + gen_no_reverse_bytes : if not c_reverse_byte_order generate + tx_udp_tdata <= tx_udp_axi4_sosi.tdata; + tx_udp_tkeep <= tx_udp_axi4_sosi.tkeep; + rx_udp_axi4_sosi.tdata <= rx_udp_tdata; + rx_udp_axi4_sosi.tkeep <= rx_udp_tkeep; end generate; -- reg_bg_ctrl