From 2b7c2abe67c7189261dd7fa1936dfa76a14f82fd Mon Sep 17 00:00:00 2001 From: Reinier van der Walle <walle@astron.nl> Date: Tue, 11 Apr 2023 14:10:21 +0200 Subject: [PATCH] added axi4 wrapper for eth_tester --- libraries/io/eth/hdllib.cfg | 3 +- .../eth/src/vhdl/eth_tester_axi4_wrapper.vhd | 601 ++++++++++++++++++ 2 files changed, 603 insertions(+), 1 deletion(-) create mode 100644 libraries/io/eth/src/vhdl/eth_tester_axi4_wrapper.vhd diff --git a/libraries/io/eth/hdllib.cfg b/libraries/io/eth/hdllib.cfg index ef29caf98d..94292b2cb6 100644 --- a/libraries/io/eth/hdllib.cfg +++ b/libraries/io/eth/hdllib.cfg @@ -1,6 +1,6 @@ hdl_lib_name = eth hdl_library_clause_name = eth_lib -hdl_lib_uses_synth = dp common diag tech_tse +hdl_lib_uses_synth = dp common diag tech_tse axi4 hdl_lib_uses_sim = hdl_lib_technology = @@ -28,6 +28,7 @@ synth_files = src/vhdl/eth_tester_tx.vhd src/vhdl/eth_tester_rx.vhd src/vhdl/eth_tester.vhd + src/vhdl/eth_tester_axi4_wrapper.vhd test_bench_files = src/vhdl/eth_statistics.vhd diff --git a/libraries/io/eth/src/vhdl/eth_tester_axi4_wrapper.vhd b/libraries/io/eth/src/vhdl/eth_tester_axi4_wrapper.vhd new file mode 100644 index 0000000000..51ea0649c3 --- /dev/null +++ b/libraries/io/eth/src/vhdl/eth_tester_axi4_wrapper.vhd @@ -0,0 +1,601 @@ +------------------------------------------------------------------------------- +-- +-- Copyright 2022 +-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +------------------------------------------------------------------------------- + +LIBRARY IEEE, common_lib, dp_lib, diag_lib, axi4_lib; +USE IEEE.std_logic_1164.ALL; +USE common_lib.common_pkg.ALL; +USE common_lib.common_mem_pkg.ALL; +USE common_lib.common_network_layers_pkg.ALL; +USE dp_lib.dp_stream_pkg.ALL; +USE dp_lib.dp_components_pkg.ALL; +USE diag_lib.diag_pkg.ALL; +USE axi4_lib.axi4_stream_pkg.ALL; +USE axi4_lib.axi4_lite_pkg.ALL; +USE work.eth_pkg.ALL; +USE work.eth_tester_pkg.ALL; + +ENTITY eth_tester_axi4_wrapper IS + PORT ( + -- Clocks and reset + mm_clk : IN STD_LOGIC; + st_clk : IN STD_LOGIC; + st_pps : IN STD_LOGIC; + aresetn : IN STD_LOGIC; + -- UDP transmit interface + eth_src_mac : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0); + ip_src_addr : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0); + udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0); + + tx_fifo_rd_emp_arr : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + + -- tx_udp + -- Source In and Sink Out + tx_udp_tready : IN STD_LOGIC; + + -- Source Out and Sink In + tx_udp_tvalid : OUT STD_LOGIC; + tx_udp_tdata : OUT STD_LOGIC_VECTOR(c_axi4_stream_data_w-1 DOWNTO 0); + tx_udp_tstrb : OUT STD_LOGIC_VECTOR(c_axi4_stream_strb_w-1 DOWNTO 0); + tx_udp_tkeep : OUT STD_LOGIC_VECTOR(c_axi4_stream_keep_w-1 DOWNTO 0); + tx_udp_tlast : OUT STD_LOGIC; + tx_udp_tid : OUT STD_LOGIC_VECTOR(c_axi4_stream_tid_w-1 DOWNTO 0); + tx_udp_tdest : OUT STD_LOGIC_VECTOR(c_axi4_stream_dest_w-1 DOWNTO 0); + tx_udp_tuser : OUT STD_LOGIC_VECTOR(c_axi4_stream_user_w-1 DOWNTO 0); + + -- rx_udp + -- Source In and Sink Out + rx_udp_tready : OUT STD_LOGIC; + + -- Source Out and Sink In + rx_udp_tvalid : IN STD_LOGIC; + rx_udp_tdata : IN STD_LOGIC_VECTOR(c_axi4_stream_data_w-1 DOWNTO 0); + rx_udp_tstrb : IN STD_LOGIC_VECTOR(c_axi4_stream_strb_w-1 DOWNTO 0); + rx_udp_tkeep : IN STD_LOGIC_VECTOR(c_axi4_stream_keep_w-1 DOWNTO 0); + rx_udp_tlast : IN STD_LOGIC; + rx_udp_tid : IN STD_LOGIC_VECTOR(c_axi4_stream_tid_w-1 DOWNTO 0); + rx_udp_tdest : IN STD_LOGIC_VECTOR(c_axi4_stream_dest_w-1 DOWNTO 0); + rx_udp_tuser : IN STD_LOGIC_VECTOR(c_axi4_stream_user_w-1 DOWNTO 0); + + -- reg_bg_ctrl + -- copi + reg_bg_ctrl_awaddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_bg_ctrl_awprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_bg_ctrl_awvalid : IN STD_LOGIC; + reg_bg_ctrl_wdata : IN STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_bg_ctrl_wstrb : IN STD_LOGIC_VECTOR((c_axi4_lite_data_w/c_byte_w)-1 downto 0); + reg_bg_ctrl_wvalid : IN STD_LOGIC; + reg_bg_ctrl_bready : IN STD_LOGIC; + reg_bg_ctrl_araddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_bg_ctrl_arprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_bg_ctrl_arvalid : IN STD_LOGIC; + reg_bg_ctrl_rready : IN STD_LOGIC; + -- cipo + reg_bg_ctrl_awready : OUT STD_LOGIC; + reg_bg_ctrl_wready : OUT STD_LOGIC; + reg_bg_ctrl_bresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_bg_ctrl_bvalid : OUT STD_LOGIC; + reg_bg_ctrl_arready : OUT STD_LOGIC; + reg_bg_ctrl_rdata : OUT STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_bg_ctrl_rresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_bg_ctrl_rvalid : OUT STD_LOGIC; + + -- reg_hdr_dat + -- copi + reg_hdr_dat_awaddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_hdr_dat_awprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_hdr_dat_awvalid : IN STD_LOGIC; + reg_hdr_dat_wdata : IN STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_hdr_dat_wstrb : IN STD_LOGIC_VECTOR((c_axi4_lite_data_w/c_byte_w)-1 downto 0); + reg_hdr_dat_wvalid : IN STD_LOGIC; + reg_hdr_dat_bready : IN STD_LOGIC; + reg_hdr_dat_araddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_hdr_dat_arprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_hdr_dat_arvalid : IN STD_LOGIC; + reg_hdr_dat_rready : IN STD_LOGIC; + -- cipo + reg_hdr_dat_awready : OUT STD_LOGIC; + reg_hdr_dat_wready : OUT STD_LOGIC; + reg_hdr_dat_bresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_hdr_dat_bvalid : OUT STD_LOGIC; + reg_hdr_dat_arready : OUT STD_LOGIC; + reg_hdr_dat_rdata : OUT STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_hdr_dat_rresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_hdr_dat_rvalid : OUT STD_LOGIC; + + -- reg_bsn_monitor_v2_tx + -- copi + reg_bsn_monitor_v2_tx_awaddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_bsn_monitor_v2_tx_awprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_bsn_monitor_v2_tx_awvalid : IN STD_LOGIC; + reg_bsn_monitor_v2_tx_wdata : IN STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_bsn_monitor_v2_tx_wstrb : IN STD_LOGIC_VECTOR((c_axi4_lite_data_w/c_byte_w)-1 downto 0); + reg_bsn_monitor_v2_tx_wvalid : IN STD_LOGIC; + reg_bsn_monitor_v2_tx_bready : IN STD_LOGIC; + reg_bsn_monitor_v2_tx_araddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_bsn_monitor_v2_tx_arprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_bsn_monitor_v2_tx_arvalid : IN STD_LOGIC; + reg_bsn_monitor_v2_tx_rready : IN STD_LOGIC; + -- cipo + reg_bsn_monitor_v2_tx_awready : OUT STD_LOGIC; + reg_bsn_monitor_v2_tx_wready : OUT STD_LOGIC; + reg_bsn_monitor_v2_tx_bresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_bsn_monitor_v2_tx_bvalid : OUT STD_LOGIC; + reg_bsn_monitor_v2_tx_arready : OUT STD_LOGIC; + reg_bsn_monitor_v2_tx_rdata : OUT STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_bsn_monitor_v2_tx_rresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_bsn_monitor_v2_tx_rvalid : OUT STD_LOGIC; + + -- reg_strobe_total_count_tx + -- copi + reg_strobe_total_count_tx_awaddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_strobe_total_count_tx_awprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_strobe_total_count_tx_awvalid : IN STD_LOGIC; + reg_strobe_total_count_tx_wdata : IN STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_strobe_total_count_tx_wstrb : IN STD_LOGIC_VECTOR((c_axi4_lite_data_w/c_byte_w)-1 downto 0); + reg_strobe_total_count_tx_wvalid : IN STD_LOGIC; + reg_strobe_total_count_tx_bready : IN STD_LOGIC; + reg_strobe_total_count_tx_araddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_strobe_total_count_tx_arprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_strobe_total_count_tx_arvalid : IN STD_LOGIC; + reg_strobe_total_count_tx_rready : IN STD_LOGIC; + -- cipo + reg_strobe_total_count_tx_awready : OUT STD_LOGIC; + reg_strobe_total_count_tx_wready : OUT STD_LOGIC; + reg_strobe_total_count_tx_bresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_strobe_total_count_tx_bvalid : OUT STD_LOGIC; + reg_strobe_total_count_tx_arready : OUT STD_LOGIC; + reg_strobe_total_count_tx_rdata : OUT STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_strobe_total_count_tx_rresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_strobe_total_count_tx_rvalid : OUT STD_LOGIC; + + -- reg_bsn_monitor_v2_rx + -- copi + reg_bsn_monitor_v2_rx_awaddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_bsn_monitor_v2_rx_awprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_bsn_monitor_v2_rx_awvalid : IN STD_LOGIC; + reg_bsn_monitor_v2_rx_wdata : IN STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_bsn_monitor_v2_rx_wstrb : IN STD_LOGIC_VECTOR((c_axi4_lite_data_w/c_byte_w)-1 downto 0); + reg_bsn_monitor_v2_rx_wvalid : IN STD_LOGIC; + reg_bsn_monitor_v2_rx_bready : IN STD_LOGIC; + reg_bsn_monitor_v2_rx_araddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_bsn_monitor_v2_rx_arprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_bsn_monitor_v2_rx_arvalid : IN STD_LOGIC; + reg_bsn_monitor_v2_rx_rready : IN STD_LOGIC; + -- cipo + reg_bsn_monitor_v2_rx_awready : OUT STD_LOGIC; + reg_bsn_monitor_v2_rx_wready : OUT STD_LOGIC; + reg_bsn_monitor_v2_rx_bresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_bsn_monitor_v2_rx_bvalid : OUT STD_LOGIC; + reg_bsn_monitor_v2_rx_arready : OUT STD_LOGIC; + reg_bsn_monitor_v2_rx_rdata : OUT STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_bsn_monitor_v2_rx_rresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_bsn_monitor_v2_rx_rvalid : OUT STD_LOGIC; + + -- reg_strobe_total_count_rx + -- copi + reg_strobe_total_count_rx_awaddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_strobe_total_count_rx_awprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_strobe_total_count_rx_awvalid : IN STD_LOGIC; + reg_strobe_total_count_rx_wdata : IN STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_strobe_total_count_rx_wstrb : IN STD_LOGIC_VECTOR((c_axi4_lite_data_w/c_byte_w)-1 downto 0); + reg_strobe_total_count_rx_wvalid : IN STD_LOGIC; + reg_strobe_total_count_rx_bready : IN STD_LOGIC; + reg_strobe_total_count_rx_araddr : IN STD_LOGIC_VECTOR(c_axi4_lite_address_w-1 downto 0); + reg_strobe_total_count_rx_arprot : IN STD_LOGIC_VECTOR(c_axi4_lite_prot_w-1 downto 0); + reg_strobe_total_count_rx_arvalid : IN STD_LOGIC; + reg_strobe_total_count_rx_rready : IN STD_LOGIC; + -- cipo + reg_strobe_total_count_rx_awready : OUT STD_LOGIC; + reg_strobe_total_count_rx_wready : OUT STD_LOGIC; + reg_strobe_total_count_rx_bresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_strobe_total_count_rx_bvalid : OUT STD_LOGIC; + reg_strobe_total_count_rx_arready : OUT STD_LOGIC; + reg_strobe_total_count_rx_rdata : OUT STD_LOGIC_VECTOR(c_axi4_lite_data_w-1 downto 0); + reg_strobe_total_count_rx_rresp : OUT STD_LOGIC_VECTOR(c_axi4_lite_resp_w-1 downto 0); + reg_strobe_total_count_rx_rvalid : OUT STD_LOGIC + + ); +END eth_tester_axi4_wrapper; + + +ARCHITECTURE str OF eth_tester_axi4_wrapper IS + 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); + SIGNAL tx_udp_sosi_arr : t_dp_sosi_arr(0 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); + SIGNAL tx_udp_siso_arr : t_dp_siso_arr(0 DOWNTO 0) := (OTHERS => c_dp_siso_rdy); + + SIGNAL rx_udp_axi4_sosi : t_axi4_sosi := c_axi4_sosi_rst; + SIGNAL rx_udp_axi4_siso : t_axi4_siso := c_axi4_siso_rst; + SIGNAL tx_udp_axi4_sosi : t_axi4_sosi := c_axi4_sosi_rst; + SIGNAL tx_udp_axi4_siso : t_axi4_siso := c_axi4_siso_rst; + + SIGNAL reg_bg_ctrl_copi : t_mem_copi := c_mem_copi_rst; + SIGNAL reg_bg_ctrl_cipo : t_mem_cipo; + SIGNAL reg_hdr_dat_copi : t_mem_copi := c_mem_copi_rst; + SIGNAL reg_hdr_dat_cipo : t_mem_cipo; + SIGNAL reg_bsn_monitor_v2_tx_copi : t_mem_copi := c_mem_copi_rst; + SIGNAL reg_bsn_monitor_v2_tx_cipo : t_mem_cipo; + SIGNAL reg_strobe_total_count_tx_copi : t_mem_copi := c_mem_copi_rst; + SIGNAL reg_strobe_total_count_tx_cipo : t_mem_cipo; + + SIGNAL reg_bsn_monitor_v2_rx_copi : t_mem_copi := c_mem_copi_rst; + SIGNAL reg_bsn_monitor_v2_rx_cipo : t_mem_cipo; + SIGNAL reg_strobe_total_count_rx_copi : t_mem_copi := c_mem_copi_rst; + SIGNAL reg_strobe_total_count_rx_cipo : t_mem_cipo; + + + SIGNAL reg_bg_ctrl_axi4_copi : t_axi4_lite_copi := c_axi4_lite_copi_rst; + SIGNAL reg_bg_ctrl_axi4_cipo : t_axi4_lite_cipo; + SIGNAL reg_hdr_dat_axi4_copi : t_axi4_lite_copi := c_axi4_lite_copi_rst; + SIGNAL reg_hdr_dat_axi4_cipo : t_axi4_lite_cipo; + SIGNAL reg_bsn_monitor_v2_tx_axi4_copi : t_axi4_lite_copi := c_axi4_lite_copi_rst; + SIGNAL reg_bsn_monitor_v2_tx_axi4_cipo : t_axi4_lite_cipo; + SIGNAL reg_strobe_total_count_tx_axi4_copi : t_axi4_lite_copi := c_axi4_lite_copi_rst; + SIGNAL reg_strobe_total_count_tx_axi4_cipo : t_axi4_lite_cipo; + + SIGNAL reg_bsn_monitor_v2_rx_axi4_copi : t_axi4_lite_copi := c_axi4_lite_copi_rst; + SIGNAL reg_bsn_monitor_v2_rx_axi4_cipo : t_axi4_lite_cipo; + SIGNAL reg_strobe_total_count_rx_axi4_copi : t_axi4_lite_copi := c_axi4_lite_copi_rst; + SIGNAL reg_strobe_total_count_rx_axi4_cipo : t_axi4_lite_cipo; + + SIGNAL mm_rst : STD_LOGIC := '0'; + SIGNAL st_rst : STD_LOGIC := '0'; + +BEGIN + + u_eth_tester : ENTITY work.eth_tester + GENERIC MAP ( + g_remove_crc => FALSE + ) + PORT MAP ( + -- Clocks and reset + mm_rst => mm_rst, + mm_clk => mm_clk, + st_rst => st_rst, + st_clk => st_clk, + st_pps => st_pps, + + -- UDP transmit interface + eth_src_mac => eth_src_mac, + ip_src_addr => ip_src_addr, + udp_src_port => udp_src_port, + + tx_fifo_rd_emp_arr => tx_fifo_rd_emp_arr, + + tx_udp_sosi_arr => tx_udp_sosi_arr, + tx_udp_siso_arr => tx_udp_siso_arr, + + -- UDP receive interface + rx_udp_sosi_arr => rx_udp_sosi_arr, + + -- Memory Mapped Slaves (one per stream) + reg_bg_ctrl_copi => reg_bg_ctrl_copi, + reg_bg_ctrl_cipo => reg_bg_ctrl_cipo, + reg_hdr_dat_copi => reg_hdr_dat_copi, + reg_hdr_dat_cipo => reg_hdr_dat_cipo, + reg_bsn_monitor_v2_tx_copi => reg_bsn_monitor_v2_tx_copi, + reg_bsn_monitor_v2_tx_cipo => reg_bsn_monitor_v2_tx_cipo, + reg_strobe_total_count_tx_copi => reg_strobe_total_count_tx_copi, + reg_strobe_total_count_tx_cipo => reg_strobe_total_count_tx_cipo, + + reg_bsn_monitor_v2_rx_copi => reg_bsn_monitor_v2_rx_copi, + reg_bsn_monitor_v2_rx_cipo => reg_bsn_monitor_v2_rx_cipo, + reg_strobe_total_count_rx_copi => reg_strobe_total_count_rx_copi, + reg_strobe_total_count_rx_cipo => reg_strobe_total_count_rx_cipo + ); + + -- DP to AXI4 + u_axi4_tx_udp : ENTITY axi4_lib.axi4_stream_dp_bridge + GENERIC MAP ( + g_axi4_rl => 0, + g_dp_rl => 1, + g_active_low_rst => TRUE + ) + PORT MAP ( + in_clk => st_clk, + in_rst => aresetn, + + dp_rst => st_rst, + + dp_in_sosi => tx_udp_sosi_arr(0), + dp_in_siso => tx_udp_siso_arr(0), + + axi4_out_sosi => tx_udp_axi4_sosi, + axi4_out_siso => tx_udp_axi4_siso + ); + + u_axi4_rx_udp : ENTITY axi4_lib.axi4_stream_dp_bridge + GENERIC MAP ( + g_axi4_rl => 0, + g_dp_rl => 1, + g_active_low_rst => TRUE + ) + PORT MAP ( + in_clk => st_clk, + in_rst => aresetn, + + axi4_in_sosi => rx_udp_axi4_sosi, + axi4_in_siso => rx_udp_axi4_siso, + + dp_out_sosi => rx_udp_sosi_arr(0), + dp_out_siso => rx_udp_siso_arr(0) + ); + + -- AXI4 to MM + u_axi4_reg_bg_ctrl : ENTITY axi4_lib.axi4_lite_mm_bridge + GENERIC MAP ( + g_active_low_rst => TRUE + ) + PORT MAP ( + in_clk => mm_clk, + in_rst => aresetn, + + mm_rst => mm_rst, + + axi4_in_copi => reg_bg_ctrl_axi4_copi, + axi4_in_cipo => reg_bg_ctrl_axi4_cipo, + + mm_out_copi => reg_bg_ctrl_copi, + mm_out_cipo => reg_bg_ctrl_cipo + ); + + u_axi4_reg_hdr_dat : ENTITY axi4_lib.axi4_lite_mm_bridge + GENERIC MAP ( + g_active_low_rst => TRUE + ) + PORT MAP ( + in_clk => mm_clk, + in_rst => aresetn, + + axi4_in_copi => reg_hdr_dat_axi4_copi, + axi4_in_cipo => reg_hdr_dat_axi4_cipo, + + mm_out_copi => reg_hdr_dat_copi, + mm_out_cipo => reg_hdr_dat_cipo + ); + + + u_axi4_reg_bsn_monitor_v2_tx : ENTITY axi4_lib.axi4_lite_mm_bridge + GENERIC MAP ( + g_active_low_rst => TRUE + ) + PORT MAP ( + in_clk => mm_clk, + in_rst => aresetn, + + axi4_in_copi => reg_bsn_monitor_v2_tx_axi4_copi, + axi4_in_cipo => reg_bsn_monitor_v2_tx_axi4_cipo, + + mm_out_copi => reg_bsn_monitor_v2_tx_copi, + mm_out_cipo => reg_bsn_monitor_v2_tx_cipo + ); + + + u_axi4_reg_strobe_total_count_tx : ENTITY axi4_lib.axi4_lite_mm_bridge + GENERIC MAP ( + g_active_low_rst => TRUE + ) + PORT MAP ( + in_clk => mm_clk, + in_rst => aresetn, + + axi4_in_copi => reg_strobe_total_count_tx_axi4_copi, + axi4_in_cipo => reg_strobe_total_count_tx_axi4_cipo, + + mm_out_copi => reg_strobe_total_count_tx_copi, + mm_out_cipo => reg_strobe_total_count_tx_cipo + ); + + + u_axi4_reg_bsn_monitor_v2_rx : ENTITY axi4_lib.axi4_lite_mm_bridge + GENERIC MAP ( + g_active_low_rst => TRUE + ) + PORT MAP ( + in_clk => mm_clk, + in_rst => aresetn, + + axi4_in_copi => reg_bsn_monitor_v2_rx_axi4_copi, + axi4_in_cipo => reg_bsn_monitor_v2_rx_axi4_cipo, + + mm_out_copi => reg_bsn_monitor_v2_rx_copi, + mm_out_cipo => reg_bsn_monitor_v2_rx_cipo + ); + + u_axi4_reg_strobe_total_count_rx : ENTITY axi4_lib.axi4_lite_mm_bridge + GENERIC MAP ( + g_active_low_rst => TRUE + ) + PORT MAP ( + in_clk => mm_clk, + in_rst => aresetn, + + axi4_in_copi => reg_strobe_total_count_rx_axi4_copi, + axi4_in_cipo => reg_strobe_total_count_rx_axi4_cipo, + + mm_out_copi => reg_strobe_total_count_rx_copi, + mm_out_cipo => reg_strobe_total_count_rx_cipo + ); + + -- Wire Records to IN/OUT ports. + + -- tx_udp + tx_udp_axi4_siso.tready <= tx_udp_tready; + + tx_udp_tvalid <= tx_udp_axi4_sosi.tvalid; + tx_udp_tdata <= tx_udp_axi4_sosi.tdata; + tx_udp_tstrb <= tx_udp_axi4_sosi.tstrb; + tx_udp_tkeep <= tx_udp_axi4_sosi.tkeep; + tx_udp_tlast <= tx_udp_axi4_sosi.tlast; + tx_udp_tid <= tx_udp_axi4_sosi.tid; + tx_udp_tdest <= tx_udp_axi4_sosi.tdest; + tx_udp_tuser <= tx_udp_axi4_sosi.tuser; + + -- rx_udp + rx_udp_tready <= rx_udp_axi4_siso.tready; + + rx_udp_axi4_sosi.tvalid <= rx_udp_tvalid; + rx_udp_axi4_sosi.tdata <= rx_udp_tdata; + rx_udp_axi4_sosi.tstrb <= rx_udp_tstrb; + rx_udp_axi4_sosi.tkeep <= rx_udp_tkeep; + rx_udp_axi4_sosi.tlast <= rx_udp_tlast; + rx_udp_axi4_sosi.tid <= rx_udp_tid; + rx_udp_axi4_sosi.tdest <= rx_udp_tdest; + rx_udp_axi4_sosi.tuser <= rx_udp_tuser; + + -- reg_bg_ctrl + -- copi + reg_bg_ctrl_axi4_copi.awaddr <= reg_bg_ctrl_awaddr; + reg_bg_ctrl_axi4_copi.awprot <= reg_bg_ctrl_awprot; + reg_bg_ctrl_axi4_copi.awvalid <= reg_bg_ctrl_awvalid; + reg_bg_ctrl_axi4_copi.wdata <= reg_bg_ctrl_wdata; + reg_bg_ctrl_axi4_copi.wstrb <= reg_bg_ctrl_wstrb; + reg_bg_ctrl_axi4_copi.wvalid <= reg_bg_ctrl_wvalid; + reg_bg_ctrl_axi4_copi.bready <= reg_bg_ctrl_bready; + reg_bg_ctrl_axi4_copi.araddr <= reg_bg_ctrl_araddr; + reg_bg_ctrl_axi4_copi.arprot <= reg_bg_ctrl_arprot; + reg_bg_ctrl_axi4_copi.arvalid <= reg_bg_ctrl_arvalid; + reg_bg_ctrl_axi4_copi.rready <= reg_bg_ctrl_rready; + -- cipo + reg_bg_ctrl_awready <= reg_bg_ctrl_axi4_cipo.awready; + reg_bg_ctrl_wready <= reg_bg_ctrl_axi4_cipo.wready; + reg_bg_ctrl_bresp <= reg_bg_ctrl_axi4_cipo.bresp; + reg_bg_ctrl_bvalid <= reg_bg_ctrl_axi4_cipo.bvalid; + reg_bg_ctrl_arready <= reg_bg_ctrl_axi4_cipo.arready; + reg_bg_ctrl_rdata <= reg_bg_ctrl_axi4_cipo.rdata; + reg_bg_ctrl_rresp <= reg_bg_ctrl_axi4_cipo.rresp; + reg_bg_ctrl_rvalid <= reg_bg_ctrl_axi4_cipo.rvalid; + + -- reg_hdr_dat + -- copi + reg_hdr_dat_axi4_copi.awaddr <= reg_hdr_dat_awaddr; + reg_hdr_dat_axi4_copi.awprot <= reg_hdr_dat_awprot; + reg_hdr_dat_axi4_copi.awvalid <= reg_hdr_dat_awvalid; + reg_hdr_dat_axi4_copi.wdata <= reg_hdr_dat_wdata; + reg_hdr_dat_axi4_copi.wstrb <= reg_hdr_dat_wstrb; + reg_hdr_dat_axi4_copi.wvalid <= reg_hdr_dat_wvalid; + reg_hdr_dat_axi4_copi.bready <= reg_hdr_dat_bready; + reg_hdr_dat_axi4_copi.araddr <= reg_hdr_dat_araddr; + reg_hdr_dat_axi4_copi.arprot <= reg_hdr_dat_arprot; + reg_hdr_dat_axi4_copi.arvalid <= reg_hdr_dat_arvalid; + reg_hdr_dat_axi4_copi.rready <= reg_hdr_dat_rready; + -- cipo + reg_hdr_dat_awready <= reg_hdr_dat_axi4_cipo.awready; + reg_hdr_dat_wready <= reg_hdr_dat_axi4_cipo.wready; + reg_hdr_dat_bresp <= reg_hdr_dat_axi4_cipo.bresp; + reg_hdr_dat_bvalid <= reg_hdr_dat_axi4_cipo.bvalid; + reg_hdr_dat_arready <= reg_hdr_dat_axi4_cipo.arready; + reg_hdr_dat_rdata <= reg_hdr_dat_axi4_cipo.rdata; + reg_hdr_dat_rresp <= reg_hdr_dat_axi4_cipo.rresp; + reg_hdr_dat_rvalid <= reg_hdr_dat_axi4_cipo.rvalid; + + -- reg_bsn_monitor_v2_tx + -- copi + reg_bsn_monitor_v2_tx_axi4_copi.awaddr <= reg_bsn_monitor_v2_tx_awaddr; + reg_bsn_monitor_v2_tx_axi4_copi.awprot <= reg_bsn_monitor_v2_tx_awprot; + reg_bsn_monitor_v2_tx_axi4_copi.awvalid <= reg_bsn_monitor_v2_tx_awvalid; + reg_bsn_monitor_v2_tx_axi4_copi.wdata <= reg_bsn_monitor_v2_tx_wdata; + reg_bsn_monitor_v2_tx_axi4_copi.wstrb <= reg_bsn_monitor_v2_tx_wstrb; + reg_bsn_monitor_v2_tx_axi4_copi.wvalid <= reg_bsn_monitor_v2_tx_wvalid; + reg_bsn_monitor_v2_tx_axi4_copi.bready <= reg_bsn_monitor_v2_tx_bready; + reg_bsn_monitor_v2_tx_axi4_copi.araddr <= reg_bsn_monitor_v2_tx_araddr; + reg_bsn_monitor_v2_tx_axi4_copi.arprot <= reg_bsn_monitor_v2_tx_arprot; + reg_bsn_monitor_v2_tx_axi4_copi.arvalid <= reg_bsn_monitor_v2_tx_arvalid; + reg_bsn_monitor_v2_tx_axi4_copi.rready <= reg_bsn_monitor_v2_tx_rready; + -- cipo + reg_bsn_monitor_v2_tx_awready <= reg_bsn_monitor_v2_tx_axi4_cipo.awready; + reg_bsn_monitor_v2_tx_wready <= reg_bsn_monitor_v2_tx_axi4_cipo.wready; + reg_bsn_monitor_v2_tx_bresp <= reg_bsn_monitor_v2_tx_axi4_cipo.bresp; + reg_bsn_monitor_v2_tx_bvalid <= reg_bsn_monitor_v2_tx_axi4_cipo.bvalid; + reg_bsn_monitor_v2_tx_arready <= reg_bsn_monitor_v2_tx_axi4_cipo.arready; + reg_bsn_monitor_v2_tx_rdata <= reg_bsn_monitor_v2_tx_axi4_cipo.rdata; + reg_bsn_monitor_v2_tx_rresp <= reg_bsn_monitor_v2_tx_axi4_cipo.rresp; + reg_bsn_monitor_v2_tx_rvalid <= reg_bsn_monitor_v2_tx_axi4_cipo.rvalid; + + -- reg_strobe_total_count_tx + -- copi + reg_strobe_total_count_tx_axi4_copi.awaddr <= reg_strobe_total_count_tx_awaddr; + reg_strobe_total_count_tx_axi4_copi.awprot <= reg_strobe_total_count_tx_awprot; + reg_strobe_total_count_tx_axi4_copi.awvalid <= reg_strobe_total_count_tx_awvalid; + reg_strobe_total_count_tx_axi4_copi.wdata <= reg_strobe_total_count_tx_wdata; + reg_strobe_total_count_tx_axi4_copi.wstrb <= reg_strobe_total_count_tx_wstrb; + reg_strobe_total_count_tx_axi4_copi.wvalid <= reg_strobe_total_count_tx_wvalid; + reg_strobe_total_count_tx_axi4_copi.bready <= reg_strobe_total_count_tx_bready; + reg_strobe_total_count_tx_axi4_copi.araddr <= reg_strobe_total_count_tx_araddr; + reg_strobe_total_count_tx_axi4_copi.arprot <= reg_strobe_total_count_tx_arprot; + reg_strobe_total_count_tx_axi4_copi.arvalid <= reg_strobe_total_count_tx_arvalid; + reg_strobe_total_count_tx_axi4_copi.rready <= reg_strobe_total_count_tx_rready; + -- cipo + reg_strobe_total_count_tx_awready <= reg_strobe_total_count_tx_axi4_cipo.awready; + reg_strobe_total_count_tx_wready <= reg_strobe_total_count_tx_axi4_cipo.wready; + reg_strobe_total_count_tx_bresp <= reg_strobe_total_count_tx_axi4_cipo.bresp; + reg_strobe_total_count_tx_bvalid <= reg_strobe_total_count_tx_axi4_cipo.bvalid; + reg_strobe_total_count_tx_arready <= reg_strobe_total_count_tx_axi4_cipo.arready; + reg_strobe_total_count_tx_rdata <= reg_strobe_total_count_tx_axi4_cipo.rdata; + reg_strobe_total_count_tx_rresp <= reg_strobe_total_count_tx_axi4_cipo.rresp; + reg_strobe_total_count_tx_rvalid <= reg_strobe_total_count_tx_axi4_cipo.rvalid; + + -- reg_bsn_monitor_v2_rx + -- copi + reg_bsn_monitor_v2_rx_axi4_copi.awaddr <= reg_bsn_monitor_v2_rx_awaddr; + reg_bsn_monitor_v2_rx_axi4_copi.awprot <= reg_bsn_monitor_v2_rx_awprot; + reg_bsn_monitor_v2_rx_axi4_copi.awvalid <= reg_bsn_monitor_v2_rx_awvalid; + reg_bsn_monitor_v2_rx_axi4_copi.wdata <= reg_bsn_monitor_v2_rx_wdata; + reg_bsn_monitor_v2_rx_axi4_copi.wstrb <= reg_bsn_monitor_v2_rx_wstrb; + reg_bsn_monitor_v2_rx_axi4_copi.wvalid <= reg_bsn_monitor_v2_rx_wvalid; + reg_bsn_monitor_v2_rx_axi4_copi.bready <= reg_bsn_monitor_v2_rx_bready; + reg_bsn_monitor_v2_rx_axi4_copi.araddr <= reg_bsn_monitor_v2_rx_araddr; + reg_bsn_monitor_v2_rx_axi4_copi.arprot <= reg_bsn_monitor_v2_rx_arprot; + reg_bsn_monitor_v2_rx_axi4_copi.arvalid <= reg_bsn_monitor_v2_rx_arvalid; + reg_bsn_monitor_v2_rx_axi4_copi.rready <= reg_bsn_monitor_v2_rx_rready; + -- cipo + reg_bsn_monitor_v2_rx_awready <= reg_bsn_monitor_v2_rx_axi4_cipo.awready; + reg_bsn_monitor_v2_rx_wready <= reg_bsn_monitor_v2_rx_axi4_cipo.wready; + reg_bsn_monitor_v2_rx_bresp <= reg_bsn_monitor_v2_rx_axi4_cipo.bresp; + reg_bsn_monitor_v2_rx_bvalid <= reg_bsn_monitor_v2_rx_axi4_cipo.bvalid; + reg_bsn_monitor_v2_rx_arready <= reg_bsn_monitor_v2_rx_axi4_cipo.arready; + reg_bsn_monitor_v2_rx_rdata <= reg_bsn_monitor_v2_rx_axi4_cipo.rdata; + reg_bsn_monitor_v2_rx_rresp <= reg_bsn_monitor_v2_rx_axi4_cipo.rresp; + reg_bsn_monitor_v2_rx_rvalid <= reg_bsn_monitor_v2_rx_axi4_cipo.rvalid; + + -- reg_strobe_total_count_rx + -- copi + reg_strobe_total_count_rx_axi4_copi.awaddr <= reg_strobe_total_count_rx_awaddr; + reg_strobe_total_count_rx_axi4_copi.awprot <= reg_strobe_total_count_rx_awprot; + reg_strobe_total_count_rx_axi4_copi.awvalid <= reg_strobe_total_count_rx_awvalid; + reg_strobe_total_count_rx_axi4_copi.wdata <= reg_strobe_total_count_rx_wdata; + reg_strobe_total_count_rx_axi4_copi.wstrb <= reg_strobe_total_count_rx_wstrb; + reg_strobe_total_count_rx_axi4_copi.wvalid <= reg_strobe_total_count_rx_wvalid; + reg_strobe_total_count_rx_axi4_copi.bready <= reg_strobe_total_count_rx_bready; + reg_strobe_total_count_rx_axi4_copi.araddr <= reg_strobe_total_count_rx_araddr; + reg_strobe_total_count_rx_axi4_copi.arprot <= reg_strobe_total_count_rx_arprot; + reg_strobe_total_count_rx_axi4_copi.arvalid <= reg_strobe_total_count_rx_arvalid; + reg_strobe_total_count_rx_axi4_copi.rready <= reg_strobe_total_count_rx_rready; + -- cipo + reg_strobe_total_count_rx_awready <= reg_strobe_total_count_rx_axi4_cipo.awready; + reg_strobe_total_count_rx_wready <= reg_strobe_total_count_rx_axi4_cipo.wready; + reg_strobe_total_count_rx_bresp <= reg_strobe_total_count_rx_axi4_cipo.bresp; + reg_strobe_total_count_rx_bvalid <= reg_strobe_total_count_rx_axi4_cipo.bvalid; + reg_strobe_total_count_rx_arready <= reg_strobe_total_count_rx_axi4_cipo.arready; + reg_strobe_total_count_rx_rdata <= reg_strobe_total_count_rx_axi4_cipo.rdata; + reg_strobe_total_count_rx_rresp <= reg_strobe_total_count_rx_axi4_cipo.rresp; + reg_strobe_total_count_rx_rvalid <= reg_strobe_total_count_rx_axi4_cipo.rvalid; + +END str; -- GitLab