diff --git a/flow_alveo.sh b/flow_alveo.sh index d9b2074..debdb8e 100755 --- a/flow_alveo.sh +++ b/flow_alveo.sh @@ -95,17 +95,18 @@ if [ $DRV_INSERT -eq 1 ]; then echo "*** Rescan PCIe ..." echo " ** " - parallel-ssh -H "$hostlist" -x '-tt' 'sudo /opt/cli/program/pci_hot_plug "$(hostname -s)"' - - # read -p "Hot-reset done. Press enter to load the driver or Ctrl-C to exit." + #parallel-ssh -H "$hostlist" -x '-tt' 'sudo /opt/cli/program/pci_hot_plug "$(hostname -s)"' + # read -p "Hot-reset done. Press enter to load the driver or Ctrl-C to exit." + parallel-ssh -H "$hostlist" -x '-tt' 'upstream_port=$(/opt/cli/get/get_fpga_device_param 1 upstream_port) && root_port=$(/opt/cli/get/get_fpga_device_param 1 root_port) && LinkCtl=$(/opt/cli/get/get_fpga_device_param 1 LinkCtl) && sudo /opt/cli/program/pci_hot_plug 1 $upstream_port $root_port $LinkCtl' + # read -p "Hot-reset done. Press enter to load the driver or Ctrl-C to exit." echo "*** Compiling the driver ..." echo " ** " parallel-ssh -H "$hostlist" "make -C $BASE_PATH/$DRV_PATH" echo "*** Loading the driver ..." echo " ** " - qsfp_ip="FPGA_$3_IP_ADDRESS_HEX" - qsfp_mac="FPGA_$3_MAC_ADDRESS" + qsfp_ip="DEVICE_$3_IP_ADDRESS_HEX" + qsfp_mac="DEVICE_$3_MAC_ADDRESS" parallel-ssh -H "$hostlist" -x '-tt' "sudo insmod $BASE_PATH/$DRV_PATH/coyote_drv.ko ip_addr_q$3=\$$qsfp_ip mac_addr_q$3=\$$qsfp_mac" parallel-ssh -H "$hostlist" -x '-tt' "sudo /opt/cli/program/fpga_chmod 0" @@ -119,6 +120,11 @@ if [ $DRV_INSERT -eq 1 ]; then echo "*** Driver loaded" echo " ** " + + #parallel-ssh -H "$hostlist" -x '-tt' "sudo insmod $BASE_PATH/$DRV_PATH/coyote_drv.ko ip_addr_q0=$DEVICE_1_IP_ADDRESS_HEX_0 mac_addr_q0=$DEVICE_1_MAC_ADDRESS_0 && " + #parallel-ssh -H "$hostlist" -x '-tt' "sudo /opt/cli/program/fpga_chmod 0" + #echo "*** Driver loaded" + #echo " ** " fi diff --git a/hw/hdl/common/queues/meta_queue.sv b/hw/hdl/common/queues/meta_queue.sv index 7420135..08cc57c 100644 --- a/hw/hdl/common/queues/meta_queue.sv +++ b/hw/hdl/common/queues/meta_queue.sv @@ -12,8 +12,56 @@ module meta_queue #( metaIntf.m m_meta ); -if(DATA_BITS == 32) begin - axis_data_fifo_meta_32 inst_meta ( +if(DATA_BITS == 8) begin + axis_data_fifo_meta_8 inst_meta ( + .s_axis_aresetn(aresetn), + .s_axis_aclk(aclk), + .s_axis_tvalid(s_meta.valid), + .s_axis_tready(s_meta.ready), + .s_axis_tdata(s_meta.data), + .m_axis_tvalid(m_meta.valid), + .m_axis_tready(m_meta.ready), + .m_axis_tdata(m_meta.data) + ); +end +else if(DATA_BITS == 16) begin + axis_data_fifo_meta_16 inst_meta ( + .s_axis_aresetn(aresetn), + .s_axis_aclk(aclk), + .s_axis_tvalid(s_meta.valid), + .s_axis_tready(s_meta.ready), + .s_axis_tdata(s_meta.data), + .m_axis_tvalid(m_meta.valid), + .m_axis_tready(m_meta.ready), + .m_axis_tdata(m_meta.data) + ); +end +else if(DATA_BITS == 32) begin + axis_data_fifo_meta_32 inst_meta ( + .s_axis_aresetn(aresetn), + .s_axis_aclk(aclk), + .s_axis_tvalid(s_meta.valid), + .s_axis_tready(s_meta.ready), + .s_axis_tdata(s_meta.data), + .m_axis_tvalid(m_meta.valid), + .m_axis_tready(m_meta.ready), + .m_axis_tdata(m_meta.data) + ); +end +else if(DATA_BITS == 48) begin + axis_data_fifo_meta_48 inst_meta ( + .s_axis_aresetn(aresetn), + .s_axis_aclk(aclk), + .s_axis_tvalid(s_meta.valid), + .s_axis_tready(s_meta.ready), + .s_axis_tdata(s_meta.data), + .m_axis_tvalid(m_meta.valid), + .m_axis_tready(m_meta.ready), + .m_axis_tdata(m_meta.data) + ); +end +else if(DATA_BITS == 72) begin + axis_data_fifo_meta_72 inst_meta ( .s_axis_aresetn(aresetn), .s_axis_aclk(aclk), .s_axis_tvalid(s_meta.valid), diff --git a/hw/hdl/mmu/tlb_region_top.sv b/hw/hdl/mmu/tlb_region_top.sv index 1270cd9..42d6564 100644 --- a/hw/hdl/mmu/tlb_region_top.sv +++ b/hw/hdl/mmu/tlb_region_top.sv @@ -110,6 +110,23 @@ module tlb_region_top #( output cred_t rd_dest_host, `endif + // TCP Session Management +`ifdef EN_TCP_0 + metaIntf.m m_open_port_cmd_0, + metaIntf.m m_open_con_cmd_0, + metaIntf.m m_close_con_cmd_0, + metaIntf.s s_open_con_sts_0, + metaIntf.s s_open_port_sts_0, +`endif + +`ifdef EN_TCP_1 + metaIntf.m m_open_port_cmd_1, + metaIntf.m m_open_con_cmd_1, + metaIntf.m m_close_con_cmd_1, + metaIntf.s s_open_con_sts_1, + metaIntf.s s_open_port_sts_1, +`endif + `ifdef EN_MEM // Card DMAs dmaIntf.m m_rd_DDMA [N_CARD_AXI], @@ -422,6 +439,20 @@ axis_interconnect_tlb inst_mux_ltlb ( .s_sync_done_rd(rd_sync_done), .s_sync_done_wr(wr_sync_done), `endif +`ifdef EN_TCP_0 + .m_open_port_cmd_0(m_open_port_cmd_0), + .m_open_con_cmd_0(m_open_con_cmd_0), + .m_close_con_cmd_0(m_close_con_cmd_0), + .s_open_con_sts_0(s_open_con_sts_0), + .s_open_port_sts_0(s_open_port_sts_0), +`endif +`ifdef EN_TCP_1 + .m_open_port_cmd_1(m_open_port_cmd_1), + .m_open_con_cmd_1(m_open_con_cmd_1), + .m_close_con_cmd_1(m_close_con_cmd_1), + .s_open_con_sts_1(s_open_con_sts_1), + .s_open_port_sts_1(s_open_port_sts_1), +`endif `ifdef EN_WB .m_wback(m_wback), `endif diff --git a/hw/hdl/mmu/tlb_top.sv b/hw/hdl/mmu/tlb_top.sv index 1d56a2f..c99b57d 100644 --- a/hw/hdl/mmu/tlb_top.sv +++ b/hw/hdl/mmu/tlb_top.sv @@ -109,6 +109,23 @@ module tlb_top #( muxIntf.s s_mux_host_wr_user, `endif + // TCP Session Management +`ifdef EN_TCP_0 + metaIntf.m m_open_port_cmd_0 [N_REGIONS], + metaIntf.m m_open_con_cmd_0 [N_REGIONS], + metaIntf.m m_close_con_cmd_0 [N_REGIONS], + metaIntf.s s_open_con_sts_0 [N_REGIONS], + metaIntf.s s_open_port_sts_0 [N_REGIONS], +`endif + +`ifdef EN_TCP_1 + metaIntf.m m_open_port_cmd_1 [N_REGIONS], + metaIntf.m m_open_con_cmd_1 [N_REGIONS], + metaIntf.m m_close_con_cmd_1 [N_REGIONS], + metaIntf.s s_open_con_sts_1 [N_REGIONS], + metaIntf.s s_open_port_sts_1 [N_REGIONS], +`endif + `ifdef EN_MEM // Card DMAs dmaIntf.m m_rd_XDMA_sync, @@ -212,6 +229,20 @@ for(genvar i = 0; i < N_REGIONS; i++) begin .wxfer_host(wxfer_host[i]), .rd_dest_host(rd_dest_host[i]), `endif + `ifdef EN_TCP_0 + .m_open_port_cmd_0(m_open_port_cmd_0[i]), + .m_open_con_cmd_0(m_open_con_cmd_0[i]), + .m_close_con_cmd_0(m_close_con_cmd_0[i]), + .s_open_con_sts_0(s_open_con_sts_0[i]), + .s_open_port_sts_0(s_open_port_sts_0[i]), + `endif + `ifdef EN_TCP_1 + .m_open_port_cmd_1(m_open_port_cmd_1[i]), + .m_open_con_cmd_1(m_open_con_cmd_1[i]), + .m_close_con_cmd_1(m_close_con_cmd_1[i]), + .s_open_con_sts_1(s_open_con_sts_1[i]), + .s_open_port_sts_1(s_open_port_sts_1[i]), + `endif `ifdef EN_MEM .m_rd_DDMA(rd_DDMA_arb[i*N_CARD_AXI+:N_CARD_AXI]), .m_wr_DDMA(wr_DDMA_arb[i*N_CARD_AXI+:N_CARD_AXI]), diff --git a/hw/hdl/network/stack/network_stack.sv b/hw/hdl/network/stack/network_stack.sv index 3f39e11..dfceccf 100644 --- a/hw/hdl/network/stack/network_stack.sv +++ b/hw/hdl/network/stack/network_stack.sv @@ -834,6 +834,41 @@ tcp_stack tcp_stack_inst( .session_count_data(session_count_data) ); +/* +ila_tcp ila_tcp ( + .clk(nclk), // input wire clk + + .probe0(s_tcp_open_req.valid), // 1 + .probe1(s_tcp_open_req.ready), // 1 + .probe2(m_tcp_open_rsp.valid), // 1 + .probe3(m_tcp_open_rsp.ready), // 1 + .probe4(m_axis_tcp_rx.tvalid), // 1 + .probe5(m_axis_tcp_rx.tready), // 1 + .probe6(s_tcp_close_req.valid), // 1 + .probe7(s_tcp_close_req.ready), // 1 + .probe8(s_axis_tcp_tx.tvalid), //1 + .probe9(s_axis_tcp_tx.tready),//1 + .probe10(s_tcp_tx_meta.valid),//1 + .probe11(s_tcp_tx_meta.ready),//1 + .probe12(m_tcp_tx_stat.valid),//1 + .probe13(m_tcp_tx_stat.ready), //1 + .probe14(m_tcp_notify.valid), //1 + .probe15(m_tcp_notify.ready), //1 + .probe16(m_tcp_listen_rsp.valid), // 1 + .probe17(m_tcp_listen_rsp.ready), // 1 + .probe18(s_tcp_listen_req.valid), // 1 + .probe19(s_tcp_listen_req.ready), //1 + .probe20(m_tcp_rx_meta.valid), // 1 + .probe21(m_tcp_rx_meta.ready), // 1 + .probe22(s_tcp_rd_pkg.valid), // 1 + .probe23(s_tcp_rd_pkg.ready), //1 + + .probe24(s_tcp_listen_req.data), // 16 + .probe25(m_tcp_listen_rsp.data), // 8 + .probe26(m_tcp_open_rsp.data), // 72 + .probe27(s_tcp_open_req.data) // 48 +);*/ + `endif end diff --git a/hw/hdl/network/tcp/tcp_ccross.sv b/hw/hdl/network/tcp/tcp_ccross.sv index c94290f..fda32f0 100644 --- a/hw/hdl/network/tcp/tcp_ccross.sv +++ b/hw/hdl/network/tcp/tcp_ccross.sv @@ -38,11 +38,11 @@ import lynxTypes::*; */ module tcp_ccross ( // Network - metaIntf.m m_tcp_listen_req_nclk, - metaIntf.s s_tcp_listen_rsp_nclk, - metaIntf.m m_tcp_open_req_nclk, - metaIntf.s s_tcp_open_rsp_nclk, - metaIntf.m m_tcp_close_req_nclk, + // metaIntf.m m_tcp_listen_req_nclk, + // metaIntf.s s_tcp_listen_rsp_nclk, + // metaIntf.m m_tcp_open_req_nclk, + // metaIntf.s s_tcp_open_rsp_nclk, + // metaIntf.m m_tcp_close_req_nclk, metaIntf.s s_tcp_notify_nclk, metaIntf.m m_tcp_rd_pkg_nclk, metaIntf.s s_tcp_rx_meta_nclk, @@ -52,11 +52,11 @@ module tcp_ccross ( AXI4S.s s_axis_tcp_rx_nclk, // User - metaIntf.s s_tcp_listen_req_aclk, - metaIntf.m m_tcp_listen_rsp_aclk, - metaIntf.s s_tcp_open_req_aclk, - metaIntf.m m_tcp_open_rsp_aclk, - metaIntf.s s_tcp_close_req_aclk, + // metaIntf.s s_tcp_listen_req_aclk, + // metaIntf.m m_tcp_listen_rsp_aclk, + // metaIntf.s s_tcp_open_req_aclk, + // metaIntf.m m_tcp_open_rsp_aclk, + // metaIntf.s s_tcp_close_req_aclk, metaIntf.m m_tcp_notify_aclk, metaIntf.s s_tcp_rd_pkg_aclk, metaIntf.m m_tcp_rx_meta_aclk, @@ -75,72 +75,72 @@ module tcp_ccross ( // Crossings // --------------------------------------------------------------------------------------------------- - // Port request and responses - axis_clock_converter_tcp_16 inst_ccross_tcp_listen_req ( - .m_axis_aclk(nclk), - .s_axis_aclk(aclk), - .s_axis_aresetn(aresetn), - .m_axis_aresetn(nresetn), - .s_axis_tvalid(s_tcp_listen_req_aclk.valid), - .s_axis_tready(s_tcp_listen_req_aclk.ready), - .s_axis_tdata (s_tcp_listen_req_aclk.data), - .m_axis_tvalid(m_tcp_listen_req_nclk.valid), - .m_axis_tready(m_tcp_listen_req_nclk.ready), - .m_axis_tdata (m_tcp_listen_req_nclk.data) - ); + // // Port request and responses + // axis_clock_converter_tcp_16 inst_ccross_tcp_listen_req ( + // .m_axis_aclk(nclk), + // .s_axis_aclk(aclk), + // .s_axis_aresetn(aresetn), + // .m_axis_aresetn(nresetn), + // .s_axis_tvalid(s_tcp_listen_req_aclk.valid), + // .s_axis_tready(s_tcp_listen_req_aclk.ready), + // .s_axis_tdata (s_tcp_listen_req_aclk.data), + // .m_axis_tvalid(m_tcp_listen_req_nclk.valid), + // .m_axis_tready(m_tcp_listen_req_nclk.ready), + // .m_axis_tdata (m_tcp_listen_req_nclk.data) + // ); - axis_clock_converter_tcp_8 inst_tcp_listen_rsp ( - .m_axis_aclk(aclk), - .s_axis_aclk(nclk), - .s_axis_aresetn(nresetn), - .m_axis_aresetn(aresetn), - .s_axis_tvalid(s_tcp_listen_rsp_nclk.valid), - .s_axis_tready(s_tcp_listen_rsp_nclk.ready), - .s_axis_tdata (s_tcp_listen_rsp_nclk.data), - .m_axis_tvalid(m_tcp_listen_rsp_aclk.valid), - .m_axis_tready(m_tcp_listen_rsp_aclk.ready), - .m_axis_tdata (m_tcp_listen_rsp_aclk.data) - ); + // axis_clock_converter_tcp_8 inst_tcp_listen_rsp ( + // .m_axis_aclk(aclk), + // .s_axis_aclk(nclk), + // .s_axis_aresetn(nresetn), + // .m_axis_aresetn(aresetn), + // .s_axis_tvalid(s_tcp_listen_rsp_nclk.valid), + // .s_axis_tready(s_tcp_listen_rsp_nclk.ready), + // .s_axis_tdata (s_tcp_listen_rsp_nclk.data), + // .m_axis_tvalid(m_tcp_listen_rsp_aclk.valid), + // .m_axis_tready(m_tcp_listen_rsp_aclk.ready), + // .m_axis_tdata (m_tcp_listen_rsp_aclk.data) + // ); - // Open, close requests and responses - axis_clock_converter_tcp_48 inst_tcp_open_req ( - .m_axis_aclk(nclk), - .s_axis_aclk(aclk), - .s_axis_aresetn(aresetn), - .m_axis_aresetn(nresetn), - .s_axis_tvalid(s_tcp_open_req_aclk.valid), - .s_axis_tready(s_tcp_open_req_aclk.ready), - .s_axis_tdata (s_tcp_open_req_aclk.data), - .m_axis_tvalid(m_tcp_open_req_nclk.valid), - .m_axis_tready(m_tcp_open_req_nclk.ready), - .m_axis_tdata (m_tcp_open_req_nclk.data) - ); + // // Open, close requests and responses + // axis_clock_converter_tcp_48 inst_tcp_open_req ( + // .m_axis_aclk(nclk), + // .s_axis_aclk(aclk), + // .s_axis_aresetn(aresetn), + // .m_axis_aresetn(nresetn), + // .s_axis_tvalid(s_tcp_open_req_aclk.valid), + // .s_axis_tready(s_tcp_open_req_aclk.ready), + // .s_axis_tdata (s_tcp_open_req_aclk.data), + // .m_axis_tvalid(m_tcp_open_req_nclk.valid), + // .m_axis_tready(m_tcp_open_req_nclk.ready), + // .m_axis_tdata (m_tcp_open_req_nclk.data) + // ); - axis_clock_converter_tcp_72 inst_tcp_open_rsp ( - .m_axis_aclk(aclk), - .s_axis_aclk(nclk), - .s_axis_aresetn(nresetn), - .m_axis_aresetn(aresetn), - .s_axis_tvalid(s_tcp_open_rsp_nclk.valid), - .s_axis_tready(s_tcp_open_rsp_nclk.ready), - .s_axis_tdata (s_tcp_open_rsp_nclk.data), - .m_axis_tvalid(m_tcp_open_rsp_aclk.valid), - .m_axis_tready(m_tcp_open_rsp_aclk.ready), - .m_axis_tdata (m_tcp_open_rsp_aclk.data) - ); + // axis_clock_converter_tcp_72 inst_tcp_open_rsp ( + // .m_axis_aclk(aclk), + // .s_axis_aclk(nclk), + // .s_axis_aresetn(nresetn), + // .m_axis_aresetn(aresetn), + // .s_axis_tvalid(s_tcp_open_rsp_nclk.valid), + // .s_axis_tready(s_tcp_open_rsp_nclk.ready), + // .s_axis_tdata (s_tcp_open_rsp_nclk.data), + // .m_axis_tvalid(m_tcp_open_rsp_aclk.valid), + // .m_axis_tready(m_tcp_open_rsp_aclk.ready), + // .m_axis_tdata (m_tcp_open_rsp_aclk.data) + // ); - axis_clock_converter_tcp_16 inst_tcp_close_req ( - .m_axis_aclk(nclk), - .s_axis_aclk(aclk), - .s_axis_aresetn(aresetn), - .m_axis_aresetn(nresetn), - .s_axis_tvalid(s_tcp_close_req_aclk.valid), - .s_axis_tready(s_tcp_close_req_aclk.ready), - .s_axis_tdata (s_tcp_close_req_aclk.data), - .m_axis_tvalid(m_tcp_close_req_nclk.valid), - .m_axis_tready(m_tcp_close_req_nclk.ready), - .m_axis_tdata (m_tcp_close_req_nclk.data) - ); + // axis_clock_converter_tcp_16 inst_tcp_close_req ( + // .m_axis_aclk(nclk), + // .s_axis_aclk(aclk), + // .s_axis_aresetn(aresetn), + // .m_axis_aresetn(nresetn), + // .s_axis_tvalid(s_tcp_close_req_aclk.valid), + // .s_axis_tready(s_tcp_close_req_aclk.ready), + // .s_axis_tdata (s_tcp_close_req_aclk.data), + // .m_axis_tvalid(m_tcp_close_req_nclk.valid), + // .m_axis_tready(m_tcp_close_req_nclk.ready), + // .m_axis_tdata (m_tcp_close_req_nclk.data) + // ); // Notifications axis_clock_converter_tcp_88 inst_tcp_notify ( diff --git a/hw/hdl/network/tcp/tcp_slice_array_cnfg.sv b/hw/hdl/network/tcp/tcp_slice_array_cnfg.sv new file mode 100644 index 0000000..e6140ee --- /dev/null +++ b/hw/hdl/network/tcp/tcp_slice_array_cnfg.sv @@ -0,0 +1,142 @@ +/** + * Copyright (c) 2021, Systems Group, ETH Zurich + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import lynxTypes::*; + +`include "axi_macros.svh" +`include "lynx_macros.svh" + +/** + * @brief TCP slice array + * + * TCP slicing + * + */ +module tcp_slice_array_cnfg #( + parameter integer N_STAGES = 2 +) ( + // Network + metaIntf.m m_tcp_listen_req_n, + metaIntf.s s_tcp_listen_rsp_n, + metaIntf.m m_tcp_open_req_n, + metaIntf.s s_tcp_open_rsp_n, + metaIntf.m m_tcp_close_req_n, + + // User + metaIntf.s s_tcp_listen_req_u, + metaIntf.m m_tcp_listen_rsp_u, + metaIntf.s s_tcp_open_req_u, + metaIntf.m m_tcp_open_rsp_u, + metaIntf.s s_tcp_close_req_u, + + input wire aclk, + input wire aresetn +); + +metaIntf #(.STYPE(tcp_listen_req_t)) tcp_listen_req_s [N_STAGES+1](); +metaIntf #(.STYPE(tcp_listen_rsp_t)) tcp_listen_rsp_s [N_STAGES+1](); +metaIntf #(.STYPE(tcp_open_req_t)) tcp_open_req_s [N_STAGES+1](); +metaIntf #(.STYPE(tcp_open_rsp_t)) tcp_open_rsp_s [N_STAGES+1](); +metaIntf #(.STYPE(tcp_close_req_t)) tcp_close_req_s [N_STAGES+1](); + +// Slaves +`META_ASSIGN(s_tcp_listen_rsp_n, tcp_listen_rsp_s[0]) +`META_ASSIGN(s_tcp_open_rsp_n, tcp_open_rsp_s[0]) + +`META_ASSIGN(s_tcp_listen_req_u, tcp_listen_req_s[0]) +`META_ASSIGN(s_tcp_open_req_u, tcp_open_req_s[0]) +`META_ASSIGN(s_tcp_close_req_u, tcp_close_req_s[0]) + +// Masters +`META_ASSIGN(tcp_listen_req_s[N_STAGES], m_tcp_listen_req_n) +`META_ASSIGN(tcp_open_req_s[N_STAGES], m_tcp_open_req_n) +`META_ASSIGN(tcp_close_req_s[N_STAGES], m_tcp_close_req_n) + +`META_ASSIGN(tcp_listen_rsp_s[N_STAGES], m_tcp_listen_rsp_u) +`META_ASSIGN(tcp_open_rsp_s[N_STAGES], m_tcp_open_rsp_u) + +for(genvar i = 0; i < N_STAGES; i++) begin + + axis_register_slice_tcp_16 inst_slice_listen_req ( + .aclk(aclk), + .aresetn(aresetn), + .s_axis_tvalid(tcp_listen_req_s[i].valid), + .s_axis_tready(tcp_listen_req_s[i].ready), + .s_axis_tdata (tcp_listen_req_s[i].data), + .m_axis_tvalid(tcp_listen_req_s[i+1].valid), + .m_axis_tready(tcp_listen_req_s[i+1].ready), + .m_axis_tdata (tcp_listen_req_s[i+1].data) + ); + + axis_register_slice_tcp_8 inst_slice_listen_rsp ( + .aclk(aclk), + .aresetn(aresetn), + .s_axis_tvalid(tcp_listen_rsp_s[i].valid), + .s_axis_tready(tcp_listen_rsp_s[i].ready), + .s_axis_tdata (tcp_listen_rsp_s[i].data), + .m_axis_tvalid(tcp_listen_rsp_s[i+1].valid), + .m_axis_tready(tcp_listen_rsp_s[i+1].ready), + .m_axis_tdata (tcp_listen_rsp_s[i+1].data) + ); + + axis_register_slice_tcp_48 inst_slice_open_req ( + .aclk(aclk), + .aresetn(aresetn), + .s_axis_tvalid(tcp_open_req_s[i].valid), + .s_axis_tready(tcp_open_req_s[i].ready), + .s_axis_tdata (tcp_open_req_s[i].data), + .m_axis_tvalid(tcp_open_req_s[i+1].valid), + .m_axis_tready(tcp_open_req_s[i+1].ready), + .m_axis_tdata (tcp_open_req_s[i+1].data) + ); + + axis_register_slice_tcp_72 inst_slice_open_rsp ( + .aclk(aclk), + .aresetn(aresetn), + .s_axis_tvalid(tcp_open_rsp_s[i].valid), + .s_axis_tready(tcp_open_rsp_s[i].ready), + .s_axis_tdata (tcp_open_rsp_s[i].data), + .m_axis_tvalid(tcp_open_rsp_s[i+1].valid), + .m_axis_tready(tcp_open_rsp_s[i+1].ready), + .m_axis_tdata (tcp_open_rsp_s[i+1].data) + ); + + axis_register_slice_tcp_16 inst_slice_close_req ( + .aclk(aclk), + .aresetn(aresetn), + .s_axis_tvalid(tcp_close_req_s[i].valid), + .s_axis_tready(tcp_close_req_s[i].ready), + .s_axis_tdata (tcp_close_req_s[i].data), + .m_axis_tvalid(tcp_close_req_s[i+1].valid), + .m_axis_tready(tcp_close_req_s[i+1].ready), + .m_axis_tdata (tcp_close_req_s[i+1].data) + ); + + +end + +endmodule \ No newline at end of file diff --git a/hw/hdl/network/tcp/tcp_slice_array_ul.sv b/hw/hdl/network/tcp/tcp_slice_array_ul.sv index 24d2ba9..f484b44 100644 --- a/hw/hdl/network/tcp/tcp_slice_array_ul.sv +++ b/hw/hdl/network/tcp/tcp_slice_array_ul.sv @@ -40,11 +40,11 @@ module tcp_slice_array_ul #( parameter integer N_STAGES = 2 ) ( // Network - metaIntf.m m_tcp_listen_req_n, - metaIntf.s s_tcp_listen_rsp_n, - metaIntf.m m_tcp_open_req_n, - metaIntf.s s_tcp_open_rsp_n, - metaIntf.m m_tcp_close_req_n, + // metaIntf.m m_tcp_listen_req_n, + // metaIntf.s s_tcp_listen_rsp_n, + // metaIntf.m m_tcp_open_req_n, + // metaIntf.s s_tcp_open_rsp_n, + // metaIntf.m m_tcp_close_req_n, metaIntf.s s_tcp_notify_n, metaIntf.m m_tcp_rd_pkg_n, metaIntf.s s_tcp_rx_meta_n, @@ -54,11 +54,11 @@ module tcp_slice_array_ul #( AXI4SR.s s_axis_tcp_rx_n, // User - metaIntf.s s_tcp_listen_req_u, - metaIntf.m m_tcp_listen_rsp_u, - metaIntf.s s_tcp_open_req_u, - metaIntf.m m_tcp_open_rsp_u, - metaIntf.s s_tcp_close_req_u, + // metaIntf.s s_tcp_listen_req_u, + // metaIntf.m m_tcp_listen_rsp_u, + // metaIntf.s s_tcp_open_req_u, + // metaIntf.m m_tcp_open_rsp_u, + // metaIntf.s s_tcp_close_req_u, metaIntf.m m_tcp_notify_u, metaIntf.s s_tcp_rd_pkg_u, metaIntf.m m_tcp_rx_meta_u, @@ -71,11 +71,11 @@ module tcp_slice_array_ul #( input wire aresetn ); -metaIntf #(.STYPE(tcp_listen_req_t)) tcp_listen_req_s [N_STAGES+1](); -metaIntf #(.STYPE(tcp_listen_rsp_t)) tcp_listen_rsp_s [N_STAGES+1](); -metaIntf #(.STYPE(tcp_open_req_t)) tcp_open_req_s [N_STAGES+1](); -metaIntf #(.STYPE(tcp_open_rsp_t)) tcp_open_rsp_s [N_STAGES+1](); -metaIntf #(.STYPE(tcp_close_req_t)) tcp_close_req_s [N_STAGES+1](); +// metaIntf #(.STYPE(tcp_listen_req_t)) tcp_listen_req_s [N_STAGES+1](); +// metaIntf #(.STYPE(tcp_listen_rsp_t)) tcp_listen_rsp_s [N_STAGES+1](); +// metaIntf #(.STYPE(tcp_open_req_t)) tcp_open_req_s [N_STAGES+1](); +// metaIntf #(.STYPE(tcp_open_rsp_t)) tcp_open_rsp_s [N_STAGES+1](); +// metaIntf #(.STYPE(tcp_close_req_t)) tcp_close_req_s [N_STAGES+1](); metaIntf #(.STYPE(tcp_notify_t)) tcp_notify_s [N_STAGES+1](); metaIntf #(.STYPE(tcp_rd_pkg_t)) tcp_rd_pkg_s [N_STAGES+1](); metaIntf #(.STYPE(tcp_rx_meta_t)) tcp_rx_meta_s [N_STAGES+1](); @@ -85,30 +85,30 @@ AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_rx_s [N_STAGES+1](); AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_tx_s [N_STAGES+1](); // Slaves -`META_ASSIGN(s_tcp_listen_rsp_n, tcp_listen_rsp_s[0]) -`META_ASSIGN(s_tcp_open_rsp_n, tcp_open_rsp_s[0]) +// `META_ASSIGN(s_tcp_listen_rsp_n, tcp_listen_rsp_s[0]) +// `META_ASSIGN(s_tcp_open_rsp_n, tcp_open_rsp_s[0]) `META_ASSIGN(s_tcp_notify_n, tcp_notify_s[0]) `META_ASSIGN(s_tcp_rx_meta_n, tcp_rx_meta_s[0]) `META_ASSIGN(s_tcp_tx_stat_n, tcp_tx_stat_s[0]) `AXISR_ASSIGN(s_axis_tcp_rx_n, axis_tcp_rx_s[0]) -`META_ASSIGN(s_tcp_listen_req_u, tcp_listen_req_s[0]) -`META_ASSIGN(s_tcp_open_req_u, tcp_open_req_s[0]) -`META_ASSIGN(s_tcp_close_req_u, tcp_close_req_s[0]) +// `META_ASSIGN(s_tcp_listen_req_u, tcp_listen_req_s[0]) +// `META_ASSIGN(s_tcp_open_req_u, tcp_open_req_s[0]) +// `META_ASSIGN(s_tcp_close_req_u, tcp_close_req_s[0]) `META_ASSIGN(s_tcp_rd_pkg_u, tcp_rd_pkg_s[0]) `META_ASSIGN(s_tcp_tx_meta_u, tcp_tx_meta_s[0]) `AXISR_ASSIGN(s_axis_tcp_tx_u, axis_tcp_tx_s[0]) // Masters -`META_ASSIGN(tcp_listen_req_s[N_STAGES], m_tcp_listen_req_n) -`META_ASSIGN(tcp_open_req_s[N_STAGES], m_tcp_open_req_n) -`META_ASSIGN(tcp_close_req_s[N_STAGES], m_tcp_close_req_n) +// `META_ASSIGN(tcp_listen_req_s[N_STAGES], m_tcp_listen_req_n) +// `META_ASSIGN(tcp_open_req_s[N_STAGES], m_tcp_open_req_n) +// `META_ASSIGN(tcp_close_req_s[N_STAGES], m_tcp_close_req_n) `META_ASSIGN(tcp_rd_pkg_s[N_STAGES], m_tcp_rd_pkg_n) `META_ASSIGN(tcp_tx_meta_s[N_STAGES], m_tcp_tx_meta_n) `AXISR_ASSIGN(axis_tcp_tx_s[N_STAGES], m_axis_tcp_tx_n) -`META_ASSIGN(tcp_listen_rsp_s[N_STAGES], m_tcp_listen_rsp_u) -`META_ASSIGN(tcp_open_rsp_s[N_STAGES], m_tcp_open_rsp_u) +// `META_ASSIGN(tcp_listen_rsp_s[N_STAGES], m_tcp_listen_rsp_u) +// `META_ASSIGN(tcp_open_rsp_s[N_STAGES], m_tcp_open_rsp_u) `META_ASSIGN(tcp_notify_s[N_STAGES], m_tcp_notify_u) `META_ASSIGN(tcp_rx_meta_s[N_STAGES], m_tcp_rx_meta_u) `META_ASSIGN(tcp_tx_stat_s[N_STAGES], m_tcp_tx_stat_u) @@ -116,60 +116,60 @@ AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_tx_s [N_STAGES+1](); for(genvar i = 0; i < N_STAGES; i++) begin - axis_register_slice_tcp_16 inst_slice_listen_req ( - .aclk(aclk), - .aresetn(aresetn), - .s_axis_tvalid(tcp_listen_req_s[i].valid), - .s_axis_tready(tcp_listen_req_s[i].ready), - .s_axis_tdata (tcp_listen_req_s[i].data), - .m_axis_tvalid(tcp_listen_req_s[i+1].valid), - .m_axis_tready(tcp_listen_req_s[i+1].ready), - .m_axis_tdata (tcp_listen_req_s[i+1].data) - ); + // axis_register_slice_tcp_16 inst_slice_listen_req ( + // .aclk(aclk), + // .aresetn(aresetn), + // .s_axis_tvalid(tcp_listen_req_s[i].valid), + // .s_axis_tready(tcp_listen_req_s[i].ready), + // .s_axis_tdata (tcp_listen_req_s[i].data), + // .m_axis_tvalid(tcp_listen_req_s[i+1].valid), + // .m_axis_tready(tcp_listen_req_s[i+1].ready), + // .m_axis_tdata (tcp_listen_req_s[i+1].data) + // ); - axis_register_slice_tcp_8 inst_slice_listen_rsp ( - .aclk(aclk), - .aresetn(aresetn), - .s_axis_tvalid(tcp_listen_rsp_s[i].valid), - .s_axis_tready(tcp_listen_rsp_s[i].ready), - .s_axis_tdata (tcp_listen_rsp_s[i].data), - .m_axis_tvalid(tcp_listen_rsp_s[i+1].valid), - .m_axis_tready(tcp_listen_rsp_s[i+1].ready), - .m_axis_tdata (tcp_listen_rsp_s[i+1].data) - ); + // axis_register_slice_tcp_8 inst_slice_listen_rsp ( + // .aclk(aclk), + // .aresetn(aresetn), + // .s_axis_tvalid(tcp_listen_rsp_s[i].valid), + // .s_axis_tready(tcp_listen_rsp_s[i].ready), + // .s_axis_tdata (tcp_listen_rsp_s[i].data), + // .m_axis_tvalid(tcp_listen_rsp_s[i+1].valid), + // .m_axis_tready(tcp_listen_rsp_s[i+1].ready), + // .m_axis_tdata (tcp_listen_rsp_s[i+1].data) + // ); - axis_register_slice_tcp_48 inst_slice_open_req ( - .aclk(aclk), - .aresetn(aresetn), - .s_axis_tvalid(tcp_open_req_s[i].valid), - .s_axis_tready(tcp_open_req_s[i].ready), - .s_axis_tdata (tcp_open_req_s[i].data), - .m_axis_tvalid(tcp_open_req_s[i+1].valid), - .m_axis_tready(tcp_open_req_s[i+1].ready), - .m_axis_tdata (tcp_open_req_s[i+1].data) - ); + // axis_register_slice_tcp_48 inst_slice_open_req ( + // .aclk(aclk), + // .aresetn(aresetn), + // .s_axis_tvalid(tcp_open_req_s[i].valid), + // .s_axis_tready(tcp_open_req_s[i].ready), + // .s_axis_tdata (tcp_open_req_s[i].data), + // .m_axis_tvalid(tcp_open_req_s[i+1].valid), + // .m_axis_tready(tcp_open_req_s[i+1].ready), + // .m_axis_tdata (tcp_open_req_s[i+1].data) + // ); - axis_register_slice_tcp_72 inst_slice_open_rsp ( - .aclk(aclk), - .aresetn(aresetn), - .s_axis_tvalid(tcp_open_rsp_s[i].valid), - .s_axis_tready(tcp_open_rsp_s[i].ready), - .s_axis_tdata (tcp_open_rsp_s[i].data), - .m_axis_tvalid(tcp_open_rsp_s[i+1].valid), - .m_axis_tready(tcp_open_rsp_s[i+1].ready), - .m_axis_tdata (tcp_open_rsp_s[i+1].data) - ); + // axis_register_slice_tcp_72 inst_slice_open_rsp ( + // .aclk(aclk), + // .aresetn(aresetn), + // .s_axis_tvalid(tcp_open_rsp_s[i].valid), + // .s_axis_tready(tcp_open_rsp_s[i].ready), + // .s_axis_tdata (tcp_open_rsp_s[i].data), + // .m_axis_tvalid(tcp_open_rsp_s[i+1].valid), + // .m_axis_tready(tcp_open_rsp_s[i+1].ready), + // .m_axis_tdata (tcp_open_rsp_s[i+1].data) + // ); - axis_register_slice_tcp_16 inst_slice_close_req ( - .aclk(aclk), - .aresetn(aresetn), - .s_axis_tvalid(tcp_close_req_s[i].valid), - .s_axis_tready(tcp_close_req_s[i].ready), - .s_axis_tdata (tcp_close_req_s[i].data), - .m_axis_tvalid(tcp_close_req_s[i+1].valid), - .m_axis_tready(tcp_close_req_s[i+1].ready), - .m_axis_tdata (tcp_close_req_s[i+1].data) - ); + // axis_register_slice_tcp_16 inst_slice_close_req ( + // .aclk(aclk), + // .aresetn(aresetn), + // .s_axis_tvalid(tcp_close_req_s[i].valid), + // .s_axis_tready(tcp_close_req_s[i].ready), + // .s_axis_tdata (tcp_close_req_s[i].data), + // .m_axis_tvalid(tcp_close_req_s[i+1].valid), + // .m_axis_tready(tcp_close_req_s[i+1].ready), + // .m_axis_tdata (tcp_close_req_s[i+1].data) + // ); axis_register_slice_tcp_88 inst_slice_notify ( .aclk(aclk), diff --git a/hw/hdl/operators/examples/perf_tcp/hls/send_recv.cpp b/hw/hdl/operators/examples/perf_tcp/hls/send_recv.cpp index a602131..17c362c 100644 --- a/hw/hdl/operators/examples/perf_tcp/hls/send_recv.cpp +++ b/hw/hdl/operators/examples/perf_tcp/hls/send_recv.cpp @@ -47,20 +47,6 @@ void status_handler(hls::stream& txStatus, } } -//Buffers open status coming from the TCP stack -void openStatus_handler(hls::stream& openConStatus, - hls::stream& openConStatusBuffer) -{ -#pragma HLS PIPELINE II=1 -#pragma HLS INLINE off - - if (!openConStatus.empty()) - { - openStatus resp = openConStatus.read(); - openConStatusBuffer.write(resp); - } -} - void txMetaData_handler(hls::stream& txMetaDataBuffer, hls::stream& txMetaData) @@ -217,9 +203,7 @@ void client( template -void server( hls::stream >& listenPort, - hls::stream& listenPortStatus, - hls::stream& notifications, +void server( hls::stream& notifications, hls::stream& readRequest, hls::stream >& rxMetaData, hls::stream >& rxData) @@ -227,31 +211,9 @@ void server( hls::stream >& listenPort, #pragma HLS PIPELINE II=1 #pragma HLS INLINE off - enum listenFsmStateType {OPEN_PORT, WAIT_PORT_STATUS}; - static listenFsmStateType listenState = OPEN_PORT; enum consumeFsmStateType {WAIT_PKG, CONSUME}; static consumeFsmStateType serverFsmState = WAIT_PKG; - #pragma HLS RESET variable=listenState - switch (listenState) - { - case OPEN_PORT: - // Open Port 5001 - listenPort.write(5001); - listenState = WAIT_PORT_STATUS; - break; - case WAIT_PORT_STATUS: - if (!listenPortStatus.empty()) - { - bool open = listenPortStatus.read(); - if (!open) - { - listenState = OPEN_PORT; - } - } - break; - } - if (!notifications.empty()) { appNotification notification = notifications.read(); @@ -290,9 +252,7 @@ void server( hls::stream >& listenPort, #if defined( __VITIS_HLS__) -void send_recv( hls::stream >& listenPort, - hls::stream& listenPortStatus, - hls::stream& notifications, +void send_recv( hls::stream& notifications, hls::stream& readRequest, hls::stream >& rxMetaData, hls::stream >& rxData, @@ -309,9 +269,6 @@ void send_recv( hls::stream >& listenPort, #pragma HLS DATAFLOW disable_start_propagation #pragma HLS INTERFACE ap_ctrl_none port=return - #pragma HLS INTERFACE axis register port=listenPort name=m_axis_listen_port - #pragma HLS INTERFACE axis register port=listenPortStatus name=s_axis_listen_port_status - #pragma HLS INTERFACE axis register port=notifications name=s_axis_notifications #pragma HLS INTERFACE axis register port=readRequest name=m_axis_read_package #pragma HLS aggregate compact=bit variable=notifications @@ -376,8 +333,7 @@ void send_recv( hls::stream >& listenPort, /* * Server */ - server( listenPort, - listenPortStatus, + server( notifications, readRequest, rxMetaData, @@ -385,9 +341,7 @@ void send_recv( hls::stream >& listenPort, } #else -void send_recv( hls::stream >& listenPort, - hls::stream& listenPortStatus, - hls::stream& notifications, +void send_recv( hls::stream& notifications, hls::stream& readRequest, hls::stream >& rxMetaData, hls::stream >& rxData, @@ -404,9 +358,6 @@ void send_recv( hls::stream >& listenPort, #pragma HLS DATAFLOW disable_start_propagation #pragma HLS INTERFACE ap_ctrl_none port=return - #pragma HLS INTERFACE axis register port=listenPort name=m_axis_listen_port - #pragma HLS INTERFACE axis register port=listenPortStatus name=s_axis_listen_port_status - #pragma HLS INTERFACE axis register port=notifications name=s_axis_notifications #pragma HLS INTERFACE axis register port=readRequest name=m_axis_read_package #pragma HLS DATA_PACK variable=notifications @@ -459,8 +410,7 @@ void send_recv( hls::stream >& listenPort, /* * Server */ - server( listenPort, - listenPortStatus, + server( notifications, readRequest, rxMetaData, diff --git a/hw/hdl/operators/examples/perf_tcp/hls/send_recv.hpp b/hw/hdl/operators/examples/perf_tcp/hls/send_recv.hpp index 103bdc5..4957695 100644 --- a/hw/hdl/operators/examples/perf_tcp/hls/send_recv.hpp +++ b/hw/hdl/operators/examples/perf_tcp/hls/send_recv.hpp @@ -83,8 +83,7 @@ public: }; -void send_recv( hls::stream >& listenPort, - hls::stream& listenPortStatus, +void send_recv( hls::stream& notifications, hls::stream& readRequest, hls::stream >& rxMetaData, diff --git a/hw/hdl/operators/examples/perf_tcp/hls/test_send_recv.cpp b/hw/hdl/operators/examples/perf_tcp/hls/test_send_recv.cpp index 8f79356..1c4ecd6 100644 --- a/hw/hdl/operators/examples/perf_tcp/hls/test_send_recv.cpp +++ b/hw/hdl/operators/examples/perf_tcp/hls/test_send_recv.cpp @@ -35,8 +35,6 @@ using namespace hls; int main() { - hls::stream > listenPort("listenPort"); - hls::stream listenPortStatus("listenPortStatus"); hls::stream notifications("notifications"); hls::stream readRequest("readRequest"); hls::stream > rxMetaData("rxMetaData"); @@ -74,9 +72,7 @@ int main() { runExperiment = 1; } - send_recv( listenPort, - listenPortStatus, - notifications, + send_recv( notifications, readRequest, rxMetaData, rxData, @@ -89,14 +85,6 @@ int main() runExperiment ); - - if (!listenPort.empty()) - { - ap_uint<16> port = listenPort.read(); - std::cout << "Port " << port << " openend." << std::endl; - listenPortStatus.write(true); - } - if (!txMetaData.empty()) { diff --git a/hw/hdl/operators/examples/perf_tcp/perf_tcp_c0_0.svh b/hw/hdl/operators/examples/perf_tcp/perf_tcp_c0_0.svh index 865c605..082e200 100644 --- a/hw/hdl/operators/examples/perf_tcp/perf_tcp_c0_0.svh +++ b/hw/hdl/operators/examples/perf_tcp/perf_tcp_c0_0.svh @@ -12,21 +12,6 @@ send_recv_role #( .axi_ctrl (axi_ctrl), - .m_axis_tcp_listen_port_tvalid (tcp_0_listen_req.valid), - .m_axis_tcp_listen_port_tready (tcp_0_listen_req.ready), - .m_axis_tcp_listen_port_tdata (tcp_0_listen_req.data), - .s_axis_tcp_port_status_tvalid (tcp_0_listen_rsp.valid), - .s_axis_tcp_port_status_tready (tcp_0_listen_rsp.ready), - .s_axis_tcp_port_status_tdata (tcp_0_listen_rsp.data), - .m_axis_tcp_open_connection_tvalid (tcp_0_open_req.valid), - .m_axis_tcp_open_connection_tready (tcp_0_open_req.ready), - .m_axis_tcp_open_connection_tdata (tcp_0_open_req.data), - .s_axis_tcp_open_status_tvalid (tcp_0_open_rsp.valid), - .s_axis_tcp_open_status_tready (tcp_0_open_rsp.ready), - .s_axis_tcp_open_status_tdata (tcp_0_open_rsp.data), - .m_axis_tcp_close_connection_tvalid(tcp_0_close_req.valid), - .m_axis_tcp_close_connection_tready(tcp_0_close_req.ready), - .m_axis_tcp_close_connection_tdata (tcp_0_close_req.data), .s_axis_tcp_notification_tvalid (tcp_0_notify.valid), .s_axis_tcp_notification_tready (tcp_0_notify.ready), .s_axis_tcp_notification_tdata (tcp_0_notify.data), diff --git a/hw/hdl/operators/examples/perf_tcp/send_recv_role.sv b/hw/hdl/operators/examples/perf_tcp/send_recv_role.sv index f900392..1c5f473 100644 --- a/hw/hdl/operators/examples/perf_tcp/send_recv_role.sv +++ b/hw/hdl/operators/examples/perf_tcp/send_recv_role.sv @@ -43,25 +43,6 @@ module send_recv_role /* NETWORK - TCP/IP INTERFACE */ //Network TCP/IP - output wire m_axis_tcp_listen_port_tvalid , - input wire m_axis_tcp_listen_port_tready , - output wire [16-1:0] m_axis_tcp_listen_port_tdata , - - input wire s_axis_tcp_port_status_tvalid , - output wire s_axis_tcp_port_status_tready , - input wire [8-1:0] s_axis_tcp_port_status_tdata , - - output wire m_axis_tcp_open_connection_tvalid , - input wire m_axis_tcp_open_connection_tready , - output wire [48-1:0] m_axis_tcp_open_connection_tdata , - - input wire s_axis_tcp_open_status_tvalid , - output wire s_axis_tcp_open_status_tready , - input wire [128-1:0] s_axis_tcp_open_status_tdata , - - output wire m_axis_tcp_close_connection_tvalid , - input wire m_axis_tcp_close_connection_tready , - output wire [16-1:0] m_axis_tcp_close_connection_tdata , input wire s_axis_tcp_notification_tvalid , output wire s_axis_tcp_notification_tready , @@ -108,7 +89,6 @@ logic ap_idle_r = 1'b1; logic runExperiment; logic finishExperiment; logic runTx, sentRunTx; -logic openConnectionSuccess; // create pulse when ap_start transitions to 1 always @(posedge ap_clk) begin @@ -148,14 +128,7 @@ assign ap_ready = ap_done; -logic[7:0] listenCounter; -logic[7:0] openReqCounter; -logic[7:0] closeReqCounter; -logic[7:0] successOpenCounter; -logic[7:0] openStatusCounter; logic[63:0] execution_cycles; -logic[63:0] openCon_cycles; -logic[31:0] connections; logic running; wire [31:0] useConn, useIpAddr, pkgWordCount, basePort ,baseIpAddress; @@ -163,9 +136,9 @@ wire [31:0] useConn, useIpAddr, pkgWordCount, basePort ,baseIpAddress; logic[31:0] timeInSeconds, transferSize, isServer; logic[63:0] timeInCycles; -logic [15:0] UseIpAddrReg; +logic [15:0] useIpAddrReg; logic [15:0] useConnReg; -logic [15:0] regBasePort; +logic [15:0] basePortReg; logic [15:0] pkgWordCountReg; logic [31:0] baseIpAddressReg; @@ -179,32 +152,25 @@ reg [31:0] tx_meta_down; reg [31:0] tx_status_down; reg [31:0] tx_data_down; -logic [15:0] sessionID; +logic [15:0] sessionID, sessionIDReg, cnfg_sessionID; - - -// send open connection request when it is runExperiment and not server -assign m_axis_tcp_open_connection_tvalid = (!isServer) & runExperiment; -assign m_axis_tcp_open_connection_tdata = {regBasePort[15:0], baseIpAddress}; - -assign m_axis_tcp_close_connection_tvalid = 1'b0; -assign s_axis_tcp_open_status_tready = 1'b1; - always @ (posedge ap_clk) begin if (~ap_rst_n) begin baseIpAddressReg <= '0; - regBasePort <= '0; + basePortReg <= '0; pkgWordCountReg <= '0; - UseIpAddrReg <= '0; + useIpAddrReg <= '0; useConnReg <= '0; + sessionIDReg <= '0; end else begin baseIpAddressReg <= baseIpAddress ; - regBasePort <= basePort ; + basePortReg <= basePort ; pkgWordCountReg <= pkgWordCount; - UseIpAddrReg <= useIpAddr; + useIpAddrReg <= useIpAddr; useConnReg <= useConn ; + sessionIDReg <= sessionID; end end @@ -212,12 +178,6 @@ end always @(posedge ap_clk) begin if (~ap_rst_n) begin running <= 1'b0; - listenCounter <= '0; - openReqCounter <= '0; - closeReqCounter <= '0; - successOpenCounter <= '0; - connections <= '0; - openStatusCounter <= '0; finishExperiment <= 1'b0; rdRqstByteCnt <= '0; rcvPktCnt <= '0; @@ -227,17 +187,12 @@ always @(posedge ap_clk) begin runTx <= 1'b0; sentRunTx <= 1'b0; sessionID <= 0; - openCon_cycles <= '0; end else begin if (runExperiment) begin finishExperiment <= 1'b0; running <= 1'b1; execution_cycles <= '0; - closeReqCounter <= '0; - openReqCounter <= '0; - successOpenCounter <= '0; - openStatusCounter <= '0; rdRqstByteCnt <= '0; rcvPktCnt <= '0; tx_meta_down <= '0; @@ -246,18 +201,15 @@ always @(posedge ap_clk) begin runTx <= 1'b0; sentRunTx <= 1'b0; sessionID <= 0; - openCon_cycles <= '0; end - if (running & isServer) begin + if (isServer) begin if (s_axis_tcp_rx_meta_tvalid & s_axis_tcp_rx_meta_tready) begin sessionID <= s_axis_tcp_rx_meta_tdata; end end - else if (running & !isServer) begin - if (s_axis_tcp_open_status_tvalid & s_axis_tcp_open_status_tready & s_axis_tcp_open_status_tdata[16] ) begin - sessionID <= s_axis_tcp_open_status_tdata[15:0]; - end + else if (!isServer) begin + sessionID <= cnfg_sessionID; end // if server node, run tx when receive expected amount of bytes @@ -265,9 +217,9 @@ always @(posedge ap_clk) begin if (isServer) begin runTx <= (consumed_bytes >= transferSize) & !sentRunTx; end - // if not server node, run tx when receiving open connection status + // if not server node, run tx when not sent runTx else begin - runTx <= s_axis_tcp_open_status_tvalid & s_axis_tcp_open_status_tready & s_axis_tcp_open_status_tdata[16] & !sentRunTx; + runTx <= !sentRunTx; end end @@ -278,32 +230,12 @@ always @(posedge ap_clk) begin if (running) begin execution_cycles <= execution_cycles + 1; end - if (m_axis_tcp_listen_port_tvalid && m_axis_tcp_listen_port_tready) begin - listenCounter <= listenCounter +1; - end - if (m_axis_tcp_close_connection_tvalid && m_axis_tcp_close_connection_tready) begin - closeReqCounter <= closeReqCounter + 1; - end if ( running & (consumed_bytes >= transferSize) & (produced_bytes >= transferSize) ) begin running <= 1'b0; finishExperiment <= 1'b1; end - if (m_axis_tcp_open_connection_tvalid && m_axis_tcp_open_connection_tready) begin - openReqCounter <= openReqCounter + 1; - end - if (s_axis_tcp_open_status_tvalid & s_axis_tcp_open_status_tready ) begin - openStatusCounter <= openStatusCounter + 1'b1; - if (s_axis_tcp_open_status_tdata[16]) begin - successOpenCounter <= successOpenCounter + 1'b1; - end - end - - if (running & successOpenCounter== 0 ) begin - openCon_cycles <= openCon_cycles + 1; - end - if (m_axis_tcp_read_pkg_tvalid & m_axis_tcp_read_pkg_tready) begin rdRqstByteCnt <= rdRqstByteCnt + m_axis_tcp_read_pkg_tdata[31:16]; end @@ -324,21 +256,11 @@ always @(posedge ap_clk) begin tx_data_down <= tx_data_down + 1'b1; end - connections <= {listenCounter,openReqCounter,successOpenCounter,closeReqCounter}; end end `ifdef VITIS_HLS send_recv_ip send_recv ( - // .m_axis_close_connection_V_V_TVALID(m_axis_tcp_close_connection_tvalid), // output wire m_axis_close_connection_TVALID - // .m_axis_close_connection_V_V_TREADY(m_axis_tcp_close_connection_tready), // input wire m_axis_close_connection_TREADY - // .m_axis_close_connection_V_V_TDATA(m_axis_tcp_close_connection_tdata), // output wire [15 : 0] m_axis_close_connection_TDATA - .m_axis_listen_port_TVALID(m_axis_tcp_listen_port_tvalid), // output wire m_axis_listen_port_TVALID - .m_axis_listen_port_TREADY(m_axis_tcp_listen_port_tready), // input wire m_axis_listen_port_TREADY - .m_axis_listen_port_TDATA(m_axis_tcp_listen_port_tdata), // output wire [15 : 0] m_axis_listen_port_TDATA - // .m_axis_open_connection_V_TVALID(m_axis_tcp_open_connection_tvalid), // output wire m_axis_open_connection_TVALID - // .m_axis_open_connection_V_TREADY(m_axis_tcp_open_connection_tready), // input wire m_axis_open_connection_TREADY - // .m_axis_open_connection_V_TDATA(m_axis_tcp_open_connection_tdata), // output wire [47 : 0] m_axis_open_connection_TDATA .m_axis_read_package_TVALID(m_axis_tcp_read_pkg_tvalid), // output wire m_axis_read_package_TVALID .m_axis_read_package_TREADY(m_axis_tcp_read_pkg_tready), // input wire m_axis_read_package_TREADY .m_axis_read_package_TDATA(m_axis_tcp_read_pkg_tdata), // output wire [31 : 0] m_axis_read_package_TDATA @@ -350,15 +272,9 @@ send_recv_ip send_recv ( .m_axis_tx_metadata_TVALID(m_axis_tcp_tx_meta_tvalid), // output wire m_axis_tx_metadata_TVALID .m_axis_tx_metadata_TREADY(m_axis_tcp_tx_meta_tready), // input wire m_axis_tx_metadata_TREADY .m_axis_tx_metadata_TDATA(m_axis_tcp_tx_meta_tdata), // output wire [15 : 0] m_axis_tx_metadata_TDATA - .s_axis_listen_port_status_TVALID(s_axis_tcp_port_status_tvalid), // input wire s_axis_listen_port_status_TVALID - .s_axis_listen_port_status_TREADY(s_axis_tcp_port_status_tready), // output wire s_axis_listen_port_status_TREADY - .s_axis_listen_port_status_TDATA(s_axis_tcp_port_status_tdata), // input wire [7 : 0] s_axis_listen_port_status_TDATA .s_axis_notifications_TVALID(s_axis_tcp_notification_tvalid), // input wire s_axis_notifications_TVALID .s_axis_notifications_TREADY(s_axis_tcp_notification_tready), // output wire s_axis_notifications_TREADY .s_axis_notifications_TDATA(s_axis_tcp_notification_tdata), // input wire [87 : 0] s_axis_notifications_TDATA - // .s_axis_open_status_TVALID(s_axis_tcp_open_status_tvalid), // input wire s_axis_open_status_TVALID - // .s_axis_open_status_TREADY(s_axis_tcp_open_status_tready), // output wire s_axis_open_status_TREADY - // .s_axis_open_status_TDATA(s_axis_tcp_open_status_tdata), // input wire [23 : 0] s_axis_open_status_TDATA .s_axis_rx_data_TVALID(s_axis_tcp_rx_data_tvalid), // input wire s_axis_rx_data_TVALID .s_axis_rx_data_TREADY(s_axis_tcp_rx_data_tready), // output wire s_axis_rx_data_TREADY .s_axis_rx_data_TDATA(s_axis_tcp_rx_data_tdata), // input wire [63 : 0] s_axis_rx_data_TDATA @@ -374,22 +290,13 @@ send_recv_ip send_recv ( //Client only .runTx(runTx), .transferSize(transferSize), // input wire [0 : 0] transferSize_V - .sessionID(sessionID), // input wire [7 : 0] sessionID_V + .sessionID(sessionIDReg), // input wire [7 : 0] sessionID_V .pkgWordCount(pkgWordCountReg), // input wire [7 : 0] pkgWordCount_V .ap_clk(ap_clk), // input wire aclk .ap_rst_n(ap_rst_n) // input wire aresetn ); `else send_recv_ip send_recv ( - // .m_axis_close_connection_V_V_TVALID(m_axis_tcp_close_connection_tvalid), // output wire m_axis_close_connection_TVALID - // .m_axis_close_connection_V_V_TREADY(m_axis_tcp_close_connection_tready), // input wire m_axis_close_connection_TREADY - // .m_axis_close_connection_V_V_TDATA(m_axis_tcp_close_connection_tdata), // output wire [15 : 0] m_axis_close_connection_TDATA - .m_axis_listen_port_V_V_TVALID(m_axis_tcp_listen_port_tvalid), // output wire m_axis_listen_port_TVALID - .m_axis_listen_port_V_V_TREADY(m_axis_tcp_listen_port_tready), // input wire m_axis_listen_port_TREADY - .m_axis_listen_port_V_V_TDATA(m_axis_tcp_listen_port_tdata), // output wire [15 : 0] m_axis_listen_port_TDATA - // .m_axis_open_connection_V_TVALID(m_axis_tcp_open_connection_tvalid), // output wire m_axis_open_connection_TVALID - // .m_axis_open_connection_V_TREADY(m_axis_tcp_open_connection_tready), // input wire m_axis_open_connection_TREADY - // .m_axis_open_connection_V_TDATA(m_axis_tcp_open_connection_tdata), // output wire [47 : 0] m_axis_open_connection_TDATA .m_axis_read_package_V_TVALID(m_axis_tcp_read_pkg_tvalid), // output wire m_axis_read_package_TVALID .m_axis_read_package_V_TREADY(m_axis_tcp_read_pkg_tready), // input wire m_axis_read_package_TREADY .m_axis_read_package_V_TDATA(m_axis_tcp_read_pkg_tdata), // output wire [31 : 0] m_axis_read_package_TDATA @@ -401,15 +308,9 @@ send_recv_ip send_recv ( .m_axis_tx_metadata_V_TVALID(m_axis_tcp_tx_meta_tvalid), // output wire m_axis_tx_metadata_TVALID .m_axis_tx_metadata_V_TREADY(m_axis_tcp_tx_meta_tready), // input wire m_axis_tx_metadata_TREADY .m_axis_tx_metadata_V_TDATA(m_axis_tcp_tx_meta_tdata), // output wire [15 : 0] m_axis_tx_metadata_TDATA - .s_axis_listen_port_status_V_TVALID(s_axis_tcp_port_status_tvalid), // input wire s_axis_listen_port_status_TVALID - .s_axis_listen_port_status_V_TREADY(s_axis_tcp_port_status_tready), // output wire s_axis_listen_port_status_TREADY - .s_axis_listen_port_status_V_TDATA(s_axis_tcp_port_status_tdata), // input wire [7 : 0] s_axis_listen_port_status_TDATA .s_axis_notifications_V_TVALID(s_axis_tcp_notification_tvalid), // input wire s_axis_notifications_TVALID .s_axis_notifications_V_TREADY(s_axis_tcp_notification_tready), // output wire s_axis_notifications_TREADY .s_axis_notifications_V_TDATA(s_axis_tcp_notification_tdata), // input wire [87 : 0] s_axis_notifications_TDATA - // .s_axis_open_status_V_TVALID(s_axis_tcp_open_status_tvalid), // input wire s_axis_open_status_TVALID - // .s_axis_open_status_V_TREADY(s_axis_tcp_open_status_tready), // output wire s_axis_open_status_TREADY - // .s_axis_open_status_V_TDATA(s_axis_tcp_open_status_tdata), // input wire [23 : 0] s_axis_open_status_TDATA .s_axis_rx_data_TVALID(s_axis_tcp_rx_data_tvalid), // input wire s_axis_rx_data_TVALID .s_axis_rx_data_TREADY(s_axis_tcp_rx_data_tready), // output wire s_axis_rx_data_TREADY .s_axis_rx_data_TDATA(s_axis_tcp_rx_data_tdata), // input wire [63 : 0] s_axis_rx_data_TDATA @@ -425,7 +326,7 @@ send_recv_ip send_recv ( //Client only .runTx_V(runTx), .transferSize_V(transferSize), // input wire [0 : 0] transferSize_V - .sessionID_V(sessionID), // input wire [7 : 0] sessionID_V + .sessionID_V(sessionIDReg), // input wire [7 : 0] sessionID_V .pkgWordCount_V(pkgWordCountReg), // input wire [7 : 0] pkgWordCount_V .ap_clk(ap_clk), // input wire aclk .ap_rst_n(ap_rst_n) // input wire aresetn @@ -456,7 +357,7 @@ send_recv_slave send_recv_slave_inst ( .execution_cycles(execution_cycles), .consumed_bytes (consumed_bytes), .produced_bytes (produced_bytes), - .openCon_cycles (openCon_cycles) + .sessionID (cnfg_sessionID) ); @@ -566,8 +467,8 @@ ila_controller controller_debug .probe4(baseIpAddress), //32 .probe5(transferSize), //32 .probe6(timeInCycles), //64 - .probe7(regBasePort), //16 - .probe8(UseIpAddrReg), //16 + .probe7(cnfg_sessionID), //16 + .probe8(useIpAddrReg), //16 .probe9(ap_start), //1 .probe10(ap_done) //1 ); @@ -576,50 +477,38 @@ ila_controller controller_debug ila_perf benchmark_debug ( .clk(ap_clk), // input wire clk - .probe0(m_axis_tcp_open_connection_tvalid), // input wire [0:0] probe0 - .probe1(m_axis_tcp_open_connection_tready), // input wire [0:0] probe1 - .probe2(s_axis_tcp_open_status_tvalid), // input wire [0:0] probe2 - .probe3(s_axis_tcp_open_status_tready), // input wire [0:0] probe3 - .probe4(s_axis_tcp_rx_data_tvalid), // input wire [0:0] probe4 - .probe5(s_axis_tcp_rx_data_tready), // input wire [0:0] probe5 - .probe6(finishExperiment), // input wire [0:0] probe6 - .probe7(runTx), // input wire [0:0] probe7 - .probe8(m_axis_tcp_tx_data_tvalid), //1 - .probe9(m_axis_tcp_tx_data_tready),//1 - .probe10(m_axis_tcp_tx_meta_tvalid),//1 - .probe11(m_axis_tcp_tx_meta_tready),//1 - .probe12(s_axis_tcp_tx_status_tvalid),//1 - .probe13(s_axis_tcp_tx_status_tready), //1 - .probe14(s_axis_tcp_open_status_tdata[16]), //1 - .probe15(s_axis_tcp_tx_status_tdata[63:62]), //2 - .probe16(m_axis_tcp_open_connection_tdata[31:0]), // 32 - .probe17(produced_bytes[63:0]), // 64 - .probe18(consumed_bytes[63:0]),// 64 - .probe19(sessionID[15:0]), // input wire [15:0] - .probe20(tx_cmd_counter[31:0]), // input wire [31:0] - .probe21(m_axis_tcp_open_connection_tdata[47:32]), // input wire [15:0] - .probe22(running), //1 - .probe23(s_axis_tcp_notification_tvalid), //1 - .probe24(s_axis_tcp_notification_tready), //1 - .probe25(s_axis_tcp_tx_status_tdata[61:32]), //30 - .probe26(execution_cycles[63:0]), //64 - .probe27(transferSize[15:0]), //16 - .probe28(tx_pkg_counter[31:0]),//32 - .probe29(s_axis_tcp_open_status_tdata[15:0]), //16 - .probe30(tx_sts_good_counter[31:0]), //32 - - .probe31(s_axis_tcp_port_status_tvalid), // 1 - .probe32(s_axis_tcp_port_status_tready), // 1 - .probe33(m_axis_tcp_listen_port_tvalid), // 1 - .probe34(m_axis_tcp_listen_port_tready), //1 - .probe35(s_axis_tcp_rx_meta_tvalid), // 1 - .probe36(s_axis_tcp_rx_meta_tready), // 1 - .probe37(m_axis_tcp_read_pkg_tvalid), // 1 - .probe38(m_axis_tcp_read_pkg_tready), //1 - .probe39(tx_sts_counter), //32 - .probe40(tx_meta_down), //32 - .probe41(tx_status_down), //32 - .probe42(tx_data_down) //32 + .probe0(s_axis_tcp_rx_data_tvalid), // input wire [0:0] probe4 + .probe1(s_axis_tcp_rx_data_tready), // input wire [0:0] probe5 + .probe2(finishExperiment), // input wire [0:0] probe6 + .probe3(runTx), // input wire [0:0] probe7 + .probe4(m_axis_tcp_tx_data_tvalid), //1 + .probe5(m_axis_tcp_tx_data_tready),//1 + .probe6(m_axis_tcp_tx_meta_tvalid),//1 + .probe7(m_axis_tcp_tx_meta_tready),//1 + .probe8(s_axis_tcp_tx_status_tvalid),//1 + .probe9(s_axis_tcp_tx_status_tready), //1 + .probe10(s_axis_tcp_tx_status_tdata[63:62]), //2 + .probe11(produced_bytes[63:0]), // 64 + .probe12(consumed_bytes[63:0]),// 64 + .probe13(sessionIDReg[15:0]), // input wire [15:0] + .probe14(tx_cmd_counter[31:0]), // input wire [31:0] + .probe15(running), //1 + .probe16(s_axis_tcp_notification_tvalid), //1 + .probe17(s_axis_tcp_notification_tready), //1 + .probe18(s_axis_tcp_tx_status_tdata[61:32]), //30 + .probe19(execution_cycles[63:0]), //64 + .probe20(transferSize[15:0]), //16 + .probe21(tx_pkg_counter[31:0]),//32 + .probe22(tx_sts_good_counter[31:0]), //32 + .probe23(s_axis_tcp_rx_meta_tvalid), // 1 + .probe24(s_axis_tcp_rx_meta_tready), // 1 + .probe25(m_axis_tcp_read_pkg_tvalid), // 1 + .probe26(m_axis_tcp_read_pkg_tready), //1 + .probe27(tx_sts_counter), //32 + .probe28(tx_meta_down), //32 + .probe29(tx_status_down), //32 + .probe30(tx_data_down), //32 + .probe31(s_axis_tcp_rx_meta_tdata[15:0]) //16 ); diff --git a/hw/hdl/operators/examples/perf_tcp/send_recv_slave.sv b/hw/hdl/operators/examples/perf_tcp/send_recv_slave.sv index b1a90eb..557831f 100644 --- a/hw/hdl/operators/examples/perf_tcp/send_recv_slave.sv +++ b/hw/hdl/operators/examples/perf_tcp/send_recv_slave.sv @@ -9,8 +9,8 @@ module send_recv_slave ( AXI4L.s axi_ctrl, - output logic ap_start, - input logic ap_done, + output logic ap_start, + input logic ap_done, output logic [31:0] useConn, output logic [31:0] useIpAddr, output logic [31:0] pkgWordCount, @@ -20,10 +20,10 @@ module send_recv_slave ( output logic [31:0] isServer, output logic [31:0] timeInSeconds, output logic [63:0] timeInCycles, + output logic [31:0] sessionID, input logic [63:0] execution_cycles, input logic [63:0] consumed_bytes, - input logic [63:0] produced_bytes, - input logic [63:0] openCon_cycles + input logic [63:0] produced_bytes ); // `define DEBUG_CNFG_SLAVE @@ -32,7 +32,7 @@ module send_recv_slave ( // ------------------------------------------------------------------ // Constants -localparam integer N_REGS = 15; +localparam integer N_REGS = 16; localparam integer ADDR_LSB = $clog2(AXIL_DATA_BITS/8); localparam integer ADDR_MSB = $clog2(N_REGS); localparam integer AXIL_ADDR_BITS = ADDR_LSB + ADDR_MSB; @@ -73,7 +73,7 @@ logic aw_en; / 11 (R) : execution_cycles / 12 (R) : consumed_bytes / 13 (R) : produced_bytes -/ 14 (R) : openCon_cycles +/ 15 (RW) : sessionID */ // Write process @@ -148,6 +148,12 @@ always_ff @(posedge aclk) begin slv_reg[10][(i*8)+:8] <= axi_ctrl.wdata[(i*8)+:8]; end end + 4'hf: // sessionID + for (int i = 0; i < AXIL_DATA_BITS/8; i++) begin + if(axi_ctrl.wstrb[i]) begin + slv_reg[15][(i*8)+:8] <= axi_ctrl.wdata[(i*8)+:8]; + end + end default : ; endcase end @@ -167,6 +173,7 @@ always_comb begin isServer = slv_reg[8]; timeInSeconds = slv_reg[9]; timeInCycles = slv_reg[10]; + sessionID = slv_reg[15]; end // Read process @@ -207,8 +214,8 @@ always_ff @(posedge aclk) begin axi_rdata <= consumed_bytes; 4'hd: //produced_bytes axi_rdata <= produced_bytes; - 4'he: //openCon_cycles - axi_rdata <= openCon_cycles; + 4'hf: //sessionID + axi_rdata <= sessionID; default: ; endcase end diff --git a/hw/hdl/slave/cnfg_slave.sv b/hw/hdl/slave/cnfg_slave.sv index bb385b5..b2976a0 100644 --- a/hw/hdl/slave/cnfg_slave.sv +++ b/hw/hdl/slave/cnfg_slave.sv @@ -96,6 +96,23 @@ module cnfg_slave #( metaIntf.s s_pfault_rd, metaIntf.s s_pfault_wr, + // TCP Session Management +`ifdef EN_TCP_0 + metaIntf.m m_open_port_cmd_0, + metaIntf.m m_open_con_cmd_0, + metaIntf.m m_close_con_cmd_0, + metaIntf.s s_open_con_sts_0, + metaIntf.s s_open_port_sts_0, +`endif + +`ifdef EN_TCP_1 + metaIntf.m m_open_port_cmd_1, + metaIntf.m m_open_con_cmd_1, + metaIntf.m m_close_con_cmd_1, + metaIntf.s s_open_con_sts_1, + metaIntf.s s_open_port_sts_1, +`endif + // Control output logic restart_rd, output logic restart_wr, @@ -219,6 +236,61 @@ metaIntf #(.STYPE(rdma_ack_t)) cmplt_que_rdma_1_in (); metaIntf #(.STYPE(rdma_ack_t)) cmplt_que_rdma_1_out (); `endif +`ifdef EN_TCP_0 +metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_0_qin (); +metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_0_qin (); +metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_0_qin (); +metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_0_qin (); +metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_0_qin (); + +metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_0_qout (); +metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_0_qout (); +metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_0_qout (); +metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_0_qout (); +metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_0_qout (); + +`META_ASSIGN(open_port_cmd_0_qout, m_open_port_cmd_0) +`META_ASSIGN(open_con_cmd_0_qout, m_open_con_cmd_0) +`META_ASSIGN(close_con_cmd_0_qout, m_close_con_cmd_0) +`META_ASSIGN(s_open_con_sts_0, open_con_sts_0_qin) +`META_ASSIGN(s_open_port_sts_0, open_port_sts_0_qin) + + +meta_queue #(.DATA_BITS(16)) open_port_cmd_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_cmd_0_qin), .m_meta(open_port_cmd_0_qout)); +meta_queue #(.DATA_BITS(8)) open_port_sts_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_sts_0_qin), .m_meta(open_port_sts_0_qout)); +meta_queue #(.DATA_BITS(48)) open_con_cmd_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_cmd_0_qin), .m_meta(open_con_cmd_0_qout)); +meta_queue #(.DATA_BITS(72)) open_con_sts_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_sts_0_qin), .m_meta(open_con_sts_0_qout)); +meta_queue #(.DATA_BITS(16)) close_con_cmd_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(close_con_cmd_0_qin), .m_meta(close_con_cmd_0_qout)); + +`endif + +`ifdef EN_TCP_1 +metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_1_qin (); +metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_1_qin (); +metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_1_qin (); +metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_1_qin (); +metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_1_qin (); + +metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_1_qout (); +metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_1_qout (); +metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_1_qout (); +metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_1_qout (); +metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_1_qout (); + +`META_ASSIGN(open_port_cmd_1_qout, m_open_port_cmd_1) +`META_ASSIGN(open_con_cmd_1_qout, m_open_con_cmd_1) +`META_ASSIGN(close_con_cmd_1_qout, m_close_con_cmd_1) +`META_ASSIGN(s_open_con_sts_1, open_con_sts_1_qin) +`META_ASSIGN(s_open_port_sts_1, open_port_sts_1_qin) + + +meta_queue #(.DATA_BITS(16)) open_port_cmd_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_cmd_1_qin), .m_meta(open_port_cmd_1_qout)); +meta_queue #(.DATA_BITS(8)) open_port_sts_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_sts_1_qin), .m_meta(open_port_sts_1_qout)); +meta_queue #(.DATA_BITS(48)) open_con_cmd_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_cmd_1_qin), .m_meta(open_con_cmd_1_qout)); +meta_queue #(.DATA_BITS(72)) open_con_sts_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_sts_1_qin), .m_meta(open_con_sts_1_qout)); +meta_queue #(.DATA_BITS(16)) close_con_cmd_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(close_con_cmd_1_qin), .m_meta(close_con_cmd_1_qout)); +`endif + // -- Def -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------- @@ -306,6 +378,19 @@ localparam integer RDMA_1_CMPLT_REG = 59; // 64 (RO) : Status DMA completion localparam integer STAT_DMA_REG = 2**PID_BITS; // +// TCP 0 +localparam integer TCP_0_OPEN_CON_REG = 65; +localparam integer TCP_0_OPEN_PORT_REG = 66; +localparam integer TCP_0_OPEN_CON_STS_REG = 67; +localparam integer TCP_0_OPEN_PORT_STS_REG = 68; +localparam integer TCP_0_CLOSE_CON_REG = 69; + +// TCP 1 +localparam integer TCP_1_OPEN_CON_REG = 81; +localparam integer TCP_1_OPEN_PORT_REG = 82; +localparam integer TCP_1_OPEN_CON_STS_REG = 83; +localparam integer TCP_1_OPEN_PORT_STS_REG = 84; +localparam integer TCP_1_CLOSE_CON_REG = 85; // ---------------------------------------------------------------------------------------- // Write process @@ -329,6 +414,17 @@ always_ff @(posedge aclk) begin rdma_1_post <= 1'b0; `endif +`ifdef EN_TCP_0 + open_port_cmd_0_qin.valid <= 1'b0; + open_con_cmd_0_qin.valid <= 1'b0; + close_con_cmd_0_qin.valid <= 1'b0; +`endif + +`ifdef EN_TCP_1 + open_port_cmd_1_qin.valid <= 1'b0; + open_con_cmd_1_qin.valid <= 1'b0; + close_con_cmd_1_qin.valid <= 1'b0; +`endif end else begin slv_reg[CTRL_REG][CTRL_BYTES*8-1:0] <= 0; // Control @@ -341,6 +437,18 @@ always_ff @(posedge aclk) begin rdma_1_post <= 1'b0; `endif +`ifdef EN_TCP_0 + open_port_cmd_0_qin.valid <= 1'b0; + open_con_cmd_0_qin.valid <= 1'b0; + close_con_cmd_0_qin.valid <= 1'b0; +`endif + +`ifdef EN_TCP_1 + open_port_cmd_1_qin.valid <= 1'b0; + open_con_cmd_1_qin.valid <= 1'b0; + close_con_cmd_1_qin.valid <= 1'b0; +`endif + // Page fault if(s_pfault_rd.valid || s_pfault_wr.valid) begin irq_pending <= 1'b1; @@ -543,6 +651,71 @@ always_ff @(posedge aclk) begin end `endif +`ifdef EN_TCP_0 + TCP_0_OPEN_CON_REG : begin // open_con + for (int i = 0; i < AXIL_DATA_BITS/8; i++) begin + if(s_axi_ctrl.wstrb[i]) begin + slv_reg[2][(i*8)+:8] <= s_axi_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axi_ctrl.wstrb != 0) begin + open_con_cmd_0_qin.valid <= 1'b1; + end + end + TCP_0_OPEN_PORT_REG : begin // open_port + for (int i = 0; i < AXIL_DATA_BITS/8; i++) begin + if(s_axi_ctrl.wstrb[i]) begin + slv_reg[3][(i*8)+:8] <= s_axi_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axi_ctrl.wstrb != 0) begin + open_port_cmd_0_qin.valid <= 1'b1; + end + end + TCP_0_CLOSE_CON_REG : begin // close_con + for (int i = 0; i < AXIL_DATA_BITS/8; i++) begin + if(s_axi_ctrl.wstrb[i]) begin + slv_reg[4][(i*8)+:8] <= s_axi_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axi_ctrl.wstrb != 0) begin + close_con_cmd_0_qin.valid <= 1'b1; + end + end +`endif + +`ifdef EN_TCP_1 + TCP_1_OPEN_CON_REG : begin // open_con + for (int i = 0; i < AXIL_DATA_BITS/8; i++) begin + if(s_axi_ctrl.wstrb[i]) begin + slv_reg[2][(i*8)+:8] <= s_axi_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axi_ctrl.wstrb != 0) begin + open_con_cmd_1_qin.valid <= 1'b1; + end + end + TCP_1_OPEN_PORT_REG : begin // open_port + for (int i = 0; i < AXIL_DATA_BITS/8; i++) begin + if(s_axi_ctrl.wstrb[i]) begin + slv_reg[3][(i*8)+:8] <= s_axi_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axi_ctrl.wstrb != 0) begin + open_port_cmd_1_qin.valid <= 1'b1; + end + end + TCP_1_CLOSE_CON_REG : begin // close_con + for (int i = 0; i < AXIL_DATA_BITS/8; i++) begin + if(s_axi_ctrl.wstrb[i]) begin + slv_reg[4][(i*8)+:8] <= s_axi_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axi_ctrl.wstrb != 0) begin + close_con_cmd_1_qin.valid <= 1'b1; + end + end +`endif default : ; endcase end @@ -567,6 +740,22 @@ always_ff @(posedge aclk) begin end end +// Output TCP +`ifdef EN_TCP_0 +always_comb begin + open_con_cmd_0_qin.data = slv_reg[TCP_0_OPEN_CON_REG]; + open_port_cmd_0_qin.data = slv_reg[TCP_0_OPEN_PORT_REG]; + close_con_cmd_0_qin.data = slv_reg[TCP_0_CLOSE_CON_REG]; +end +`endif +`ifdef EN_TCP_1 +always_comb begin + open_con_cmd_1_qin.data = slv_reg[TCP_1_OPEN_CON_REG]; + open_port_cmd_1_qin.data = slv_reg[TCP_1_OPEN_PORT_REG]; + close_con_cmd_1_qin.data = slv_reg[TCP_1_CLOSE_CON_REG]; +end +`endif + // ---------------------------------------------------------------------------------------- // Read process // ---------------------------------------------------------------------------------------- @@ -576,8 +765,29 @@ always_ff @(posedge aclk) begin if( aresetn == 1'b0 ) begin axi_rdata <= 'X; axi_mux <= 'X; + +`ifdef EN_TCP_0 + open_con_sts_0_qout.ready <= 1'b0; + open_port_sts_0_qout.ready <= 1'b0; +`endif + +`ifdef EN_TCP_1 + open_con_sts_1_qout.ready <= 1'b0; + open_port_sts_1_qout.ready <= 1'b0; +`endif end else begin + +`ifdef EN_TCP_0 + open_con_sts_0_qout.ready <= 1'b0; + open_port_sts_0_qout.ready <= 1'b0; +`endif + +`ifdef EN_TCP_1 + open_con_sts_1_qout.ready <= 1'b0; + open_port_sts_1_qout.ready <= 1'b0; +`endif + if(slv_reg_rden) begin axi_rdata <= 0; axi_mux <= 0; @@ -693,6 +903,54 @@ always_ff @(posedge aclk) begin axi_mux <= 2; end +`ifdef EN_TCP_0 + [TCP_0_OPEN_CON_STS_REG:TCP_0_OPEN_CON_STS_REG] : begin // open_status + if (open_con_sts_0_qout.valid) begin + axi_rdata[14:0] <= open_con_sts_0_qout.data[14:0]; //session + axi_rdata[15:15] <= open_con_sts_0_qout.data[16]; //success + axi_rdata[47:16] <= open_con_sts_0_qout.data[55:24]; //ip + axi_rdata[63:48] <= open_con_sts_0_qout.data[71:56]; //port + open_con_sts_0_qout.ready <= 1'b1; + end + else begin + axi_rdata <= '0; + end + end + [TCP_0_OPEN_PORT_STS_REG:TCP_0_OPEN_PORT_STS_REG] : begin // port_status + if (open_port_sts_0_qout.valid) begin + axi_rdata <= open_port_sts_0_qout.data; + open_port_sts_0_qout.ready <= 1'b1; + end + else begin + axi_rdata <= '0; + end + end +`endif + +`ifdef EN_TCP_1 + [TCP_1_OPEN_CON_STS_REG:TCP_1_OPEN_CON_STS_REG] : begin // open_status + if (open_con_sts_1_qout.valid) begin + axi_rdata[14:0] <= open_con_sts_1_qout.data[14:0]; //session + axi_rdata[15:15] <= open_con_sts_1_qout.data[16]; //success + axi_rdata[47:16] <= open_con_sts_1_qout.data[55:24]; //ip + axi_rdata[63:48] <= open_con_sts_1_qout.data[71:56]; //port + open_con_sts_1_qout.ready <= 1'b1; + end + else begin + axi_rdata <= '0; + end + end + [TCP_1_OPEN_PORT_STS_REG:TCP_1_OPEN_PORT_STS_REG] : begin // port_status + if (open_port_sts_1_qout.valid) begin + axi_rdata <= open_port_sts_1_qout.data; + open_port_sts_1_qout.ready <= 1'b1; + end + else begin + axi_rdata <= '0; + end + end +`endif + default: ; endcase end diff --git a/hw/hdl/slave/cnfg_slave_avx.sv b/hw/hdl/slave/cnfg_slave_avx.sv index 4d57858..f80fa34 100644 --- a/hw/hdl/slave/cnfg_slave_avx.sv +++ b/hw/hdl/slave/cnfg_slave_avx.sv @@ -96,6 +96,23 @@ module cnfg_slave_avx #( metaIntf.s s_pfault_rd, metaIntf.s s_pfault_wr, + // TCP Session Management +`ifdef EN_TCP_0 + metaIntf.m m_open_port_cmd_0, + metaIntf.m m_open_con_cmd_0, + metaIntf.m m_close_con_cmd_0, + metaIntf.s s_open_con_sts_0, + metaIntf.s s_open_port_sts_0, +`endif + +`ifdef EN_TCP_1 + metaIntf.m m_open_port_cmd_1, + metaIntf.m m_open_con_cmd_1, + metaIntf.m m_close_con_cmd_1, + metaIntf.s s_open_con_sts_1, + metaIntf.s s_open_port_sts_1, +`endif + // Control output logic restart_rd, output logic restart_wr, @@ -232,6 +249,61 @@ metaIntf #(.STYPE(rdma_ack_t)) cmplt_que_rdma_1_in (); metaIntf #(.STYPE(rdma_ack_t)) cmplt_que_rdma_1_out (); `endif +`ifdef EN_TCP_0 +metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_0_qin (); +metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_0_qin (); +metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_0_qin (); +metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_0_qin (); +metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_0_qin (); + +metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_0_qout (); +metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_0_qout (); +metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_0_qout (); +metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_0_qout (); +metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_0_qout (); + +`META_ASSIGN(open_port_cmd_0_qout, m_open_port_cmd_0) +`META_ASSIGN(open_con_cmd_0_qout, m_open_con_cmd_0) +`META_ASSIGN(close_con_cmd_0_qout, m_close_con_cmd_0) +`META_ASSIGN(s_open_con_sts_0, open_con_sts_0_qin) +`META_ASSIGN(s_open_port_sts_0, open_port_sts_0_qin) + + +meta_queue #(.DATA_BITS(16)) open_port_cmd_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_cmd_0_qin), .m_meta(open_port_cmd_0_qout)); +meta_queue #(.DATA_BITS(8)) open_port_sts_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_sts_0_qin), .m_meta(open_port_sts_0_qout)); +meta_queue #(.DATA_BITS(48)) open_con_cmd_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_cmd_0_qin), .m_meta(open_con_cmd_0_qout)); +meta_queue #(.DATA_BITS(72)) open_con_sts_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_sts_0_qin), .m_meta(open_con_sts_0_qout)); +meta_queue #(.DATA_BITS(16)) close_con_cmd_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(close_con_cmd_0_qin), .m_meta(close_con_cmd_0_qout)); + +`endif + +`ifdef EN_TCP_1 +metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_1_qin (); +metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_1_qin (); +metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_1_qin (); +metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_1_qin (); +metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_1_qin (); + +metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_1_qout (); +metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_1_qout (); +metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_1_qout (); +metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_1_qout (); +metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_1_qout (); + +`META_ASSIGN(open_port_cmd_1_qout, m_open_port_cmd_1) +`META_ASSIGN(open_con_cmd_1_qout, m_open_con_cmd_1) +`META_ASSIGN(close_con_cmd_1_qout, m_close_con_cmd_1) +`META_ASSIGN(s_open_con_sts_1, open_con_sts_1_qin) +`META_ASSIGN(s_open_port_sts_1, open_port_sts_1_qin) + + +meta_queue #(.DATA_BITS(16)) open_port_cmd_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_cmd_1_qin), .m_meta(open_port_cmd_1_qout)); +meta_queue #(.DATA_BITS(8)) open_port_sts_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_sts_1_qin), .m_meta(open_port_sts_1_qout)); +meta_queue #(.DATA_BITS(48)) open_con_cmd_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_cmd_1_qin), .m_meta(open_con_cmd_1_qout)); +meta_queue #(.DATA_BITS(72)) open_con_sts_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_sts_1_qin), .m_meta(open_con_sts_1_qout)); +meta_queue #(.DATA_BITS(16)) close_con_cmd_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(close_con_cmd_1_qin), .m_meta(close_con_cmd_1_qout)); +`endif + // -- Def -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------- @@ -309,7 +381,55 @@ localparam integer RDMA_1_CMPLT_REG = 28; // 64 (RO) : Status DMA completion localparam integer STAT_DMA_REG = 2**PID_BITS; // +// TCP 0 +localparam integer TCP_0_OPEN_CON_REG = 32; +localparam integer TCP_0_OPEN_PORT_REG = 33; +localparam integer TCP_0_OPEN_CON_STS_REG = 34; +localparam integer TCP_0_OPEN_PORT_STS_REG = 35; +localparam integer TCP_0_CLOSE_CON_REG = 36; +// TCP 1 +localparam integer TCP_1_OPEN_CON_REG = 40; +localparam integer TCP_1_OPEN_PORT_REG = 41; +localparam integer TCP_1_OPEN_CON_STS_REG = 42; +localparam integer TCP_1_OPEN_PORT_STS_REG = 43; +localparam integer TCP_1_CLOSE_CON_REG = 44; + +/* +ila_cnfg_slave ila_cnfg_slave +( + .clk(aclk), // input wire clk + .probe0(slv_reg_rden), //1 + .probe1(axi_rdata), // 256 + .probe2(axi_rvalid), // 1 + .probe3(axi_arready), // 1 + .probe4(s_axim_ctrl.rready), //1 + .probe5(s_axim_ctrl.arvalid), //1 + .probe6(s_axim_ctrl.araddr), //64 + .probe7(axi_bvalid), //1 + .probe8(slv_reg_wren), //1 + .probe9(s_axim_ctrl.wdata), // 256 + .probe10(s_axim_ctrl.awready), //1 + .probe11(s_axim_ctrl.awvalid), //1 + .probe12(s_axim_ctrl.awaddr), //64 + .probe13(m_open_con_cmd_0.valid), //1 + .probe14(m_open_con_cmd_0.ready), //1 + .probe15(m_open_con_cmd_0.data), //48 + .probe16(m_open_port_cmd_0.valid), //1 + .probe17(m_open_port_cmd_0.ready), //1 + .probe18(m_open_port_cmd_0.data), //16 + .probe19(open_con_sts_0_qout.valid), //1 + .probe20(open_con_sts_0_qout.ready), //1 + .probe21(open_con_sts_0_qout.data), //72 + .probe22(open_port_sts_0_qout.valid), //1 + .probe23(open_port_sts_0_qout.ready), //1 + .probe24(open_port_sts_0_qout.data), //8 + .probe25(s_axim_ctrl.wstrb), //32 + .probe26(axi_araddr), //16 + .probe27(axi_arlen), //8 + .probe28(axi_arburst) //2 + ); +*/ // ---------------------------------------------------------------------------------------- // Write process // ---------------------------------------------------------------------------------------- @@ -332,6 +452,18 @@ always_ff @(posedge aclk) begin rdma_1_post <= 1'b0; `endif +`ifdef EN_TCP_0 + open_port_cmd_0_qin.valid <= 1'b0; + open_con_cmd_0_qin.valid <= 1'b0; + close_con_cmd_0_qin.valid <= 1'b0; +`endif + +`ifdef EN_TCP_1 + open_port_cmd_1_qin.valid <= 1'b0; + open_con_cmd_1_qin.valid <= 1'b0; + close_con_cmd_1_qin.valid <= 1'b0; +`endif + end else begin slv_reg[CTRL_REG][CTRL_BYTES*8-1:0] <= 0; @@ -344,6 +476,18 @@ always_ff @(posedge aclk) begin rdma_1_post <= 1'b0; `endif +`ifdef EN_TCP_0 + open_port_cmd_0_qin.valid <= 1'b0; + open_con_cmd_0_qin.valid <= 1'b0; + close_con_cmd_0_qin.valid <= 1'b0; +`endif + +`ifdef EN_TCP_1 + open_port_cmd_1_qin.valid <= 1'b0; + open_con_cmd_1_qin.valid <= 1'b0; + close_con_cmd_1_qin.valid <= 1'b0; +`endif + // Page fault if(s_pfault_rd.valid || s_pfault_wr.valid) begin irq_pending <= 1'b1; @@ -432,6 +576,71 @@ always_ff @(posedge aclk) begin end `endif +`ifdef EN_TCP_0 + TCP_0_OPEN_CON_REG : begin // open_con + for (int i = 0; i < AVX_DATA_BITS/8; i++) begin + if(s_axim_ctrl.wstrb[i]) begin + slv_reg[TCP_0_OPEN_CON_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axim_ctrl.wstrb != 0) begin + open_con_cmd_0_qin.valid <= 1'b1; + end + end + TCP_0_OPEN_PORT_REG : begin // open_port + for (int i = 0; i < AVX_DATA_BITS/8; i++) begin + if(s_axim_ctrl.wstrb[i]) begin + slv_reg[TCP_0_OPEN_PORT_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axim_ctrl.wstrb != 0) begin + open_port_cmd_0_qin.valid <= 1'b1; + end + end + TCP_0_CLOSE_CON_REG : begin // close_con + for (int i = 0; i < AVX_DATA_BITS/8; i++) begin + if(s_axim_ctrl.wstrb[i]) begin + slv_reg[TCP_0_CLOSE_CON_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axim_ctrl.wstrb != 0) begin + close_con_cmd_0_qin.valid <= 1'b1; + end + end +`endif + +`ifdef EN_TCP_1 + TCP_1_OPEN_CON_REG : begin // open_con + for (int i = 0; i < AVX_DATA_BITS/8; i++) begin + if(s_axim_ctrl.wstrb[i]) begin + slv_reg[TCP_1_OPEN_CON_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axim_ctrl.wstrb != 0) begin + open_con_cmd_1_qin.valid <= 1'b1; + end + end + TCP_1_OPEN_PORT_REG : begin // open_port + for (int i = 0; i < AVX_DATA_BITS/8; i++) begin + if(s_axim_ctrl.wstrb[i]) begin + slv_reg[TCP_1_OPEN_PORT_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axim_ctrl.wstrb != 0) begin + open_port_cmd_1_qin.valid <= 1'b1; + end + end + TCP_1_CLOSE_CON_REG : begin // close_con + for (int i = 0; i < AVX_DATA_BITS/8; i++) begin + if(s_axim_ctrl.wstrb[i]) begin + slv_reg[TCP_1_CLOSE_CON_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8]; + end + end + if (s_axim_ctrl.wstrb != 0) begin + close_con_cmd_1_qin.valid <= 1'b1; + end + end +`endif default: ; endcase end @@ -456,6 +665,22 @@ always_ff @(posedge aclk) begin end end +// Output TCP +`ifdef EN_TCP_0 +always_comb begin + open_con_cmd_0_qin.data = slv_reg[TCP_0_OPEN_CON_REG]; + open_port_cmd_0_qin.data = slv_reg[TCP_0_OPEN_PORT_REG]; + close_con_cmd_0_qin.data = slv_reg[TCP_0_CLOSE_CON_REG]; +end +`endif +`ifdef EN_TCP_1 +always_comb begin + open_con_cmd_1_qin.data = slv_reg[TCP_1_OPEN_CON_REG]; + open_port_cmd_1_qin.data = slv_reg[TCP_1_OPEN_PORT_REG]; + close_con_cmd_1_qin.data = slv_reg[TCP_1_CLOSE_CON_REG]; +end +`endif + // ---------------------------------------------------------------------------------------- // Read process // ---------------------------------------------------------------------------------------- @@ -465,8 +690,30 @@ always_ff @(posedge aclk) begin if( aresetn == 1'b0 ) begin axi_rdata <= 'X; axi_mux <= 'X; + +`ifdef EN_TCP_0 + open_con_sts_0_qout.ready <= 1'b0; + open_port_sts_0_qout.ready <= 1'b0; +`endif + +`ifdef EN_TCP_1 + open_con_sts_1_qout.ready <= 1'b0; + open_port_sts_1_qout.ready <= 1'b0; +`endif + end else begin + + `ifdef EN_TCP_0 + open_con_sts_0_qout.ready <= 1'b0; + open_port_sts_0_qout.ready <= 1'b0; + `endif + + `ifdef EN_TCP_1 + open_con_sts_1_qout.ready <= 1'b0; + open_port_sts_1_qout.ready <= 1'b0; + `endif + if(slv_reg_rden) begin axi_rdata <= 0; axi_mux <= 1'b0; @@ -517,7 +764,55 @@ always_ff @(posedge aclk) begin [STAT_DMA_REG:STAT_DMA_REG+(2**PID_BITS)-1]: begin axi_mux <= 1'b1; end - + +`ifdef EN_TCP_0 + [TCP_0_OPEN_CON_STS_REG:TCP_0_OPEN_CON_STS_REG] : begin // open_status + if (open_con_sts_0_qout.valid) begin + axi_rdata[14:0] <= open_con_sts_0_qout.data[14:0]; //session + axi_rdata[15:15] <= open_con_sts_0_qout.data[16]; //success + axi_rdata[47:16] <= open_con_sts_0_qout.data[55:24]; //ip + axi_rdata[63:48] <= open_con_sts_0_qout.data[71:56]; //port + open_con_sts_0_qout.ready <= 1'b1; + end + else begin + axi_rdata <= '0; + end + end + [TCP_0_OPEN_PORT_STS_REG:TCP_0_OPEN_PORT_STS_REG] : begin // port_status + if (open_port_sts_0_qout.valid) begin + axi_rdata <= open_port_sts_0_qout.data; + open_port_sts_0_qout.ready <= 1'b1; + end + else begin + axi_rdata <= '0; + end + end +`endif + +`ifdef EN_TCP_1 + [TCP_1_OPEN_CON_STS_REG:TCP_1_OPEN_CON_STS_REG] : begin // open_status + if (open_con_sts_1_qout.valid) begin + axi_rdata[14:0] <= open_con_sts_1_qout.data[14:0]; //session + axi_rdata[15:15] <= open_con_sts_1_qout.data[16]; //success + axi_rdata[47:16] <= open_con_sts_1_qout.data[55:24]; //ip + axi_rdata[63:48] <= open_con_sts_1_qout.data[71:56]; //port + open_con_sts_1_qout.ready <= 1'b1; + end + else begin + axi_rdata <= '0; + end + end + [TCP_1_OPEN_PORT_STS_REG:TCP_1_OPEN_PORT_STS_REG] : begin // port_status + if (open_port_sts_1_qout.valid) begin + axi_rdata <= open_port_sts_1_qout.data; + open_port_sts_1_qout.ready <= 1'b1; + end + else begin + axi_rdata <= '0; + end + end +`endif + default: ; endcase end diff --git a/hw/scripts/example.tcl.in b/hw/scripts/example.tcl.in index 8b5aff9..d4c090d 100644 --- a/hw/scripts/example.tcl.in +++ b/hw/scripts/example.tcl.in @@ -70,7 +70,7 @@ switch $cfg(example) { set_property -dict [list CONFIG.C_PROBE8_WIDTH {16} CONFIG.C_PROBE7_WIDTH {16} CONFIG.C_PROBE6_WIDTH {64} CONFIG.C_PROBE5_WIDTH {32} CONFIG.C_PROBE4_WIDTH {32} CONFIG.C_PROBE3_WIDTH {16} CONFIG.C_PROBE2_WIDTH {16} CONFIG.C_NUM_OF_PROBES {11} CONFIG.Component_Name {ila_controller} CONFIG.C_INPUT_PIPE_STAGES {1}] [get_ips ila_controller] update_compile_order -fileset sources_1 create_ip -name ila -vendor xilinx.com -library ip -version 6.2 -module_name ila_perf - set_property -dict [list CONFIG.C_PROBE42_WIDTH {32} CONFIG.C_PROBE41_WIDTH {32} CONFIG.C_PROBE40_WIDTH {32} CONFIG.C_PROBE39_WIDTH {32} CONFIG.C_PROBE30_WIDTH {32} CONFIG.C_PROBE29_WIDTH {16} CONFIG.C_PROBE28_WIDTH {32} CONFIG.C_PROBE27_WIDTH {16} CONFIG.C_PROBE26_WIDTH {64} CONFIG.C_PROBE25_WIDTH {30} CONFIG.C_PROBE21_WIDTH {16} CONFIG.C_PROBE20_WIDTH {32} CONFIG.C_PROBE19_WIDTH {16} CONFIG.C_PROBE18_WIDTH {64} CONFIG.C_PROBE17_WIDTH {64} CONFIG.C_PROBE16_WIDTH {32} CONFIG.C_PROBE15_WIDTH {2} CONFIG.C_NUM_OF_PROBES {43} CONFIG.Component_Name {ila_perf} CONFIG.C_INPUT_PIPE_STAGES {1} CONFIG.ALL_PROBE_SAME_MU_CNT {5}] [get_ips ila_perf] + set_property -dict [list CONFIG.C_PROBE31_WIDTH {16} CONFIG.C_PROBE30_WIDTH {32} CONFIG.C_PROBE29_WIDTH {32} CONFIG.C_PROBE28_WIDTH {32} CONFIG.C_PROBE27_WIDTH {32} CONFIG.C_PROBE22_WIDTH {32} CONFIG.C_PROBE21_WIDTH {32} CONFIG.C_PROBE20_WIDTH {16} CONFIG.C_PROBE19_WIDTH {64} CONFIG.C_PROBE18_WIDTH {30} CONFIG.C_PROBE14_WIDTH {32} CONFIG.C_PROBE13_WIDTH {16} CONFIG.C_PROBE12_WIDTH {64} CONFIG.C_PROBE11_WIDTH {64} CONFIG.C_PROBE10_WIDTH {2} CONFIG.C_NUM_OF_PROBES {32} CONFIG.Component_Name {ila_perf} CONFIG.C_INPUT_PIPE_STAGES {1} CONFIG.ALL_PROBE_SAME_MU_CNT {5}] [get_ips ila_perf] } "rdma_regex" { diff --git a/hw/scripts/ip_inst/base_infrastructure.tcl b/hw/scripts/ip_inst/base_infrastructure.tcl index 8200740..c587e5e 100644 --- a/hw/scripts/ip_inst/base_infrastructure.tcl +++ b/hw/scripts/ip_inst/base_infrastructure.tcl @@ -97,9 +97,21 @@ create_ip -name axis_register_slice -vendor xilinx.com -library ip -version 1.1 set_property -dict [list CONFIG.TDATA_NUM_BYTES {4} CONFIG.HAS_TLAST {1} ] [get_ips pr_reg_slice] # Meta +create_ip -name axis_data_fifo -vendor xilinx.com -library ip -version 2.0 -module_name axis_data_fifo_meta_8 +set_property -dict [list CONFIG.TDATA_NUM_BYTES {1} CONFIG.FIFO_DEPTH {32} ] [get_ips axis_data_fifo_meta_8] + +create_ip -name axis_data_fifo -vendor xilinx.com -library ip -version 2.0 -module_name axis_data_fifo_meta_16 +set_property -dict [list CONFIG.TDATA_NUM_BYTES {2} CONFIG.FIFO_DEPTH {32} ] [get_ips axis_data_fifo_meta_16] + create_ip -name axis_data_fifo -vendor xilinx.com -library ip -version 2.0 -module_name axis_data_fifo_meta_32 set_property -dict [list CONFIG.TDATA_NUM_BYTES {4} CONFIG.FIFO_DEPTH {32} ] [get_ips axis_data_fifo_meta_32] +create_ip -name axis_data_fifo -vendor xilinx.com -library ip -version 2.0 -module_name axis_data_fifo_meta_48 +set_property -dict [list CONFIG.TDATA_NUM_BYTES {6} CONFIG.FIFO_DEPTH {32} ] [get_ips axis_data_fifo_meta_48] + +create_ip -name axis_data_fifo -vendor xilinx.com -library ip -version 2.0 -module_name axis_data_fifo_meta_72 +set_property -dict [list CONFIG.TDATA_NUM_BYTES {9} CONFIG.FIFO_DEPTH {32} ] [get_ips axis_data_fifo_meta_72] + create_ip -name axis_data_fifo -vendor xilinx.com -library ip -version 2.0 -module_name axis_data_fifo_meta_96 set_property -dict [list CONFIG.TDATA_NUM_BYTES {12} CONFIG.FIFO_DEPTH {32} ] [get_ips axis_data_fifo_meta_96] diff --git a/hw/scripts/wr_hdl/template_gen/dynamic_wrapper.txt b/hw/scripts/wr_hdl/template_gen/dynamic_wrapper.txt index 31dc5e9..3f174fa 100644 --- a/hw/scripts/wr_hdl/template_gen/dynamic_wrapper.txt +++ b/hw/scripts/wr_hdl/template_gen/dynamic_wrapper.txt @@ -847,11 +847,6 @@ module design_dynamic_wrapper #( .aclk(uclk), .aresetn(uresetn), - .m_tcp_listen_req_nclk(tcp_0_listen_req_s1[i]), - .s_tcp_listen_rsp_nclk(tcp_0_listen_rsp_s1[i]), - .m_tcp_open_req_nclk(tcp_0_open_req_s1[i]), - .s_tcp_open_rsp_nclk(tcp_0_open_rsp_s1[i]), - .m_tcp_close_req_nclk(tcp_0_close_req_s1[i]), .s_tcp_notify_nclk(tcp_0_notify_s1[i]), .m_tcp_rd_pkg_nclk(tcp_0_rd_pkg_s1[i]), .s_tcp_rx_meta_nclk(tcp_0_rx_meta_s1[i]), @@ -860,11 +855,6 @@ module design_dynamic_wrapper #( .s_axis_tcp_rx_nclk(axis_tcp_0_in_s1[i]), .m_axis_tcp_tx_nclk(axis_tcp_0_out_s1[i]), - .s_tcp_listen_req_aclk(tcp_0_listen_req_s2[i]), - .m_tcp_listen_rsp_aclk(tcp_0_listen_rsp_s2[i]), - .s_tcp_open_req_aclk(tcp_0_open_req_s2[i]), - .m_tcp_open_rsp_aclk(tcp_0_open_rsp_s2[i]), - .s_tcp_close_req_aclk(tcp_0_close_req_s2[i]), .m_tcp_notify_aclk(tcp_0_notify_s2[i]), .s_tcp_rd_pkg_aclk(tcp_0_rd_pkg_s2[i]), .m_tcp_rx_meta_aclk(tcp_0_rx_meta_s2[i]), @@ -878,11 +868,6 @@ module design_dynamic_wrapper #( {% else %} // No crossing for(genvar i = 0; i < N_REGIONS; i++) begin - `META_ASSIGN(tcp_0_listen_req_s2[i], tcp_0_listen_req_s1[i]) - `META_ASSIGN(tcp_0_listen_rsp_s1[i], tcp_0_listen_rsp_s2[i]) - `META_ASSIGN(tcp_0_open_req_s2[i], tcp_0_open_req_s1[i]) - `META_ASSIGN(tcp_0_open_rsp_s1[i], tcp_0_open_rsp_s2[i]) - `META_ASSIGN(tcp_0_close_req_s2[i], tcp_0_close_req_s2[i]) `META_ASSIGN(tcp_0_notify_s1[i], tcp_0_notify_s2[i]) `META_ASSIGN(tcp_0_rd_pkg_s2[i], tcp_0_rd_pkg_s1[i]) `META_ASSIGN(tcp_0_rx_meta_s1[i], tcp_0_rx_meta_s2[i]) @@ -894,6 +879,14 @@ module design_dynamic_wrapper #( {% endif %} + for(genvar i = 0; i < N_REGIONS; i++) begin + `META_ASSIGN(tcp_0_listen_req_s2[i], tcp_0_listen_req_s1[i]) + `META_ASSIGN(tcp_0_listen_rsp_s1[i], tcp_0_listen_rsp_s2[i]) + `META_ASSIGN(tcp_0_open_req_s2[i], tcp_0_open_req_s1[i]) + `META_ASSIGN(tcp_0_open_rsp_s1[i], tcp_0_open_rsp_s2[i]) + `META_ASSIGN(tcp_0_close_req_s2[i], tcp_0_close_req_s1[i]) + end + // Slice 1 // ---------------------------------------------------------------------- metaIntf #(.STYPE(tcp_listen_req_t)) tcp_0_listen_req_s3[N_REGIONS](); @@ -921,11 +914,6 @@ module design_dynamic_wrapper #( .aresetn(aresetn), {% endif %} - .m_tcp_listen_req_n(tcp_0_listen_req_s2[i]), - .s_tcp_listen_rsp_n(tcp_0_listen_rsp_s2[i]), - .m_tcp_open_req_n(tcp_0_open_req_s2[i]), - .s_tcp_open_rsp_n(tcp_0_open_rsp_s2[i]), - .m_tcp_close_req_n(tcp_0_close_req_s2[i]), .s_tcp_notify_n(tcp_0_notify_s2[i]), .m_tcp_rd_pkg_n(tcp_0_rd_pkg_s2[i]), .s_tcp_rx_meta_n(tcp_0_rx_meta_s2[i]), @@ -934,11 +922,6 @@ module design_dynamic_wrapper #( .s_axis_tcp_rx_n(axis_tcp_0_in_s2[i]), .m_axis_tcp_tx_n(axis_tcp_0_out_s2[i]), - .s_tcp_listen_req_u(tcp_0_listen_req_s3[i]), - .m_tcp_listen_rsp_u(tcp_0_listen_rsp_s3[i]), - .s_tcp_open_req_u(tcp_0_open_req_s3[i]), - .m_tcp_open_rsp_u(tcp_0_open_rsp_s3[i]), - .s_tcp_close_req_u(tcp_0_close_req_s3[i]), .m_tcp_notify_u(tcp_0_notify_s3[i]), .s_tcp_rd_pkg_u(tcp_0_rd_pkg_s3[i]), .m_tcp_rx_meta_u(tcp_0_rx_meta_s3[i]), @@ -948,14 +931,29 @@ module design_dynamic_wrapper #( .s_axis_tcp_tx_u(axis_tcp_0_out_s3[i]) ); end + + for(genvar i = 0; i < N_REGIONS; i++) begin + tcp_slice_array_cnfg #( + .N_STAGES(N_REG_DYN_NET_S1) + ) inst_tcp_slice_array_cnfg_1 ( + .aclk(aclk), + .aresetn(aresetn), + .m_tcp_listen_req_n(tcp_0_listen_req_s2[i]), + .s_tcp_listen_rsp_n(tcp_0_listen_rsp_s2[i]), + .m_tcp_open_req_n(tcp_0_open_req_s2[i]), + .s_tcp_open_rsp_n(tcp_0_open_rsp_s2[i]), + .m_tcp_close_req_n(tcp_0_close_req_s2[i]), + + .s_tcp_listen_req_u(tcp_0_listen_req_s3[i]), + .m_tcp_listen_rsp_u(tcp_0_listen_rsp_s3[i]), + .s_tcp_open_req_u(tcp_0_open_req_s3[i]), + .m_tcp_open_rsp_u(tcp_0_open_rsp_s3[i]), + .s_tcp_close_req_u(tcp_0_close_req_s3[i]) + ); + end // Decoupling // ---------------------------------------------------------------------- - metaIntf #(.STYPE(tcp_listen_req_t)) tcp_0_listen_req_ul[N_REGIONS](); - metaIntf #(.STYPE(tcp_listen_rsp_t)) tcp_0_listen_rsp_ul[N_REGIONS](); - metaIntf #(.STYPE(tcp_open_req_t)) tcp_0_open_req_ul[N_REGIONS](); - metaIntf #(.STYPE(tcp_open_rsp_t)) tcp_0_open_rsp_ul[N_REGIONS](); - metaIntf #(.STYPE(tcp_close_req_t)) tcp_0_close_req_ul [N_REGIONS](); metaIntf #(.STYPE(tcp_notify_t)) tcp_0_notify_ul [N_REGIONS](); metaIntf #(.STYPE(tcp_rd_pkg_t)) tcp_0_rd_pkg_ul [N_REGIONS](); metaIntf #(.STYPE(tcp_rx_meta_t)) tcp_0_rx_meta_ul [N_REGIONS](); @@ -964,11 +962,6 @@ module design_dynamic_wrapper #( AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_0_in_ul [N_REGIONS](); AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_0_out_ul [N_REGIONS](); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_listen_req_ul), .m_meta(tcp_0_listen_req_s3)); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_listen_rsp_s3), .m_meta(tcp_0_listen_rsp_ul)); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_open_req_ul), .m_meta(tcp_0_open_req_s3)); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_open_rsp_s3), .m_meta(tcp_0_open_rsp_ul)); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_close_req_ul), .m_meta(tcp_0_close_req_s3)); meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_notify_s3), .m_meta(tcp_0_notify_ul)); meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_rd_pkg_ul), .m_meta(tcp_0_rd_pkg_s3)); meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_rx_meta_s3), .m_meta(tcp_0_rx_meta_ul)); @@ -1101,11 +1094,6 @@ module design_dynamic_wrapper #( .aclk(uclk), .aresetn(uresetn), - .m_tcp_listen_req_nclk(tcp_1_listen_req_s1[i]), - .s_tcp_listen_rsp_nclk(tcp_1_listen_rsp_s1[i]), - .m_tcp_open_req_nclk(tcp_1_open_req_s1[i]), - .s_tcp_open_rsp_nclk(tcp_1_open_rsp_s1[i]), - .m_tcp_close_req_nclk(tcp_1_close_req_s1[i]), .s_tcp_notify_nclk(tcp_1_notify_s1[i]), .m_tcp_rd_pkg_nclk(tcp_1_rd_pkg_s1[i]), .s_tcp_rx_meta_nclk(tcp_1_rx_meta_s1[i]), @@ -1114,11 +1102,6 @@ module design_dynamic_wrapper #( .s_axis_tcp_rx_nclk(axis_tcp_1_in_s1[i]), .m_axis_tcp_tx_nclk(axis_tcp_1_out_s1[i]), - .s_tcp_listen_req_aclk(tcp_1_listen_req_s2[i]), - .m_tcp_listen_rsp_aclk(tcp_1_listen_rsp_s2[i]), - .s_tcp_open_req_aclk(tcp_1_open_req_s2[i]), - .m_tcp_open_rsp_aclk(tcp_1_open_rsp_s2[i]), - .s_tcp_close_req_aclk(tcp_1_close_req_s2[i]), .m_tcp_notify_aclk(tcp_1_notify_s2[i]), .s_tcp_rd_pkg_aclk(tcp_1_rd_pkg_s2[i]), .m_tcp_rx_meta_aclk(tcp_1_rx_meta_s2[i]), @@ -1132,11 +1115,6 @@ module design_dynamic_wrapper #( {% else %} // No crossing for(genvar i = 0; i < N_REGIONS; i++) begin - `META_ASSIGN(tcp_1_listen_req_s2[i], tcp_1_listen_req_s1[i]) - `META_ASSIGN(tcp_1_listen_rsp_s1[i], tcp_1_listen_rsp_s2[i]) - `META_ASSIGN(tcp_1_open_req_s2[i], tcp_1_open_req_s1[i]) - `META_ASSIGN(tcp_1_open_rsp_s1[i], tcp_1_open_rsp_s2[i]) - `META_ASSIGN(tcp_1_close_req_s2[i], tcp_1_close_req_s2[i]) `META_ASSIGN(tcp_1_notify_s1[i], tcp_1_notify_s2[i]) `META_ASSIGN(tcp_1_rd_pkg_s2[i], tcp_1_rd_pkg_s1[i]) `META_ASSIGN(tcp_1_rx_meta_s1[i], tcp_1_rx_meta_s2[i]) @@ -1148,6 +1126,14 @@ module design_dynamic_wrapper #( {% endif %} + for(genvar i = 0; i < N_REGIONS; i++) begin + `META_ASSIGN(tcp_1_listen_req_s2[i], tcp_1_listen_req_s1[i]) + `META_ASSIGN(tcp_1_listen_rsp_s1[i], tcp_1_listen_rsp_s2[i]) + `META_ASSIGN(tcp_1_open_req_s2[i], tcp_1_open_req_s1[i]) + `META_ASSIGN(tcp_1_open_rsp_s1[i], tcp_1_open_rsp_s2[i]) + `META_ASSIGN(tcp_1_close_req_s2[i], tcp_1_close_req_s2[i]) + end + // Slice 1 // ---------------------------------------------------------------------- metaIntf #(.STYPE(tcp_listen_req_t)) tcp_1_listen_req_s3[N_REGIONS](); @@ -1175,11 +1161,6 @@ module design_dynamic_wrapper #( .aresetn(aresetn), {% endif %} - .m_tcp_listen_req_n(tcp_1_listen_req_s2[i]), - .s_tcp_listen_rsp_n(tcp_1_listen_rsp_s2[i]), - .m_tcp_open_req_n(tcp_1_open_req_s2[i]), - .s_tcp_open_rsp_n(tcp_1_open_rsp_s2[i]), - .m_tcp_close_req_n(tcp_1_close_req_s2[i]), .s_tcp_notify_n(tcp_1_notify_s2[i]), .m_tcp_rd_pkg_n(tcp_1_rd_pkg_s2[i]), .s_tcp_rx_meta_n(tcp_1_rx_meta_s2[i]), @@ -1188,11 +1169,6 @@ module design_dynamic_wrapper #( .s_axis_tcp_rx_n(axis_tcp_1_s2[i]), .m_axis_tcp_tx_n(axis_tcp_1_s2[i]), - .s_tcp_listen_req_u(tcp_1_listen_req_s3[i]), - .m_tcp_listen_rsp_u(tcp_1_listen_rsp_s3[i]), - .s_tcp_open_req_u(tcp_1_open_req_s3[i]), - .m_tcp_open_rsp_u(tcp_1_open_rsp_s3[i]), - .s_tcp_close_req_u(tcp_1_close_req_s3[i]), .m_tcp_notify_u(tcp_1_notify_s3[i]), .s_tcp_rd_pkg_u(tcp_1_rd_pkg_s3[i]), .m_tcp_rx_meta_u(tcp_1_rx_meta_s3[i]), @@ -1202,6 +1178,26 @@ module design_dynamic_wrapper #( .s_axis_tcp_tx_u(axis_tcp_1_out_s3[i]) ); end + + for(genvar i = 0; i < N_REGIONS; i++) begin + tcp_slice_array_cnfg #( + .N_STAGES(N_REG_DYN_NET_S1) + ) inst_tcp_slice_array_cnfg_1 ( + .aclk(aclk), + .aresetn(aresetn), + .m_tcp_listen_req_n(tcp_1_listen_req_s2[i]), + .s_tcp_listen_rsp_n(tcp_1_listen_rsp_s2[i]), + .m_tcp_open_req_n(tcp_1_open_req_s2[i]), + .s_tcp_open_rsp_n(tcp_1_open_rsp_s2[i]), + .m_tcp_close_req_n(tcp_1_close_req_s2[i]), + + .s_tcp_listen_req_u(tcp_1_listen_req_s3[i]), + .m_tcp_listen_rsp_u(tcp_1_listen_rsp_s3[i]), + .s_tcp_open_req_u(tcp_1_open_req_s3[i]), + .m_tcp_open_rsp_u(tcp_1_open_rsp_s3[i]), + .s_tcp_close_req_u(tcp_1_close_req_s3[i]) + ); + end // Decoupling // ---------------------------------------------------------------------- @@ -1218,11 +1214,6 @@ module design_dynamic_wrapper #( AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_1_in_ul [N_REGIONS](); AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_1_out_ul [N_REGIONS](); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_listen_req_ul), .m_meta(tcp_1_listen_req_s3)); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_listen_rsp_s3), .m_meta(tcp_1_listen_rsp_ul)); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_open_req_ul), .m_meta(tcp_1_open_req_s3)); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_open_rsp_s3), .m_meta(tcp_1_open_rsp_ul)); - meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_close_req_ul), .m_meta(tcp_1_close_req_s3)); meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_notify_s3), .m_meta(tcp_1_notify_ul)); meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_rd_pkg_ul), .m_meta(tcp_1_rd_pkg_s3)); meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_rx_meta_s3), .m_meta(tcp_1_rx_meta_ul)); @@ -1473,6 +1464,20 @@ module design_dynamic_wrapper #( .wxfer_card(wxfer_card), .rd_dest_card(rd_dest_card), {% endif %} +{% if cnfg.en_tcp_0 %} + .m_open_port_cmd_0(tcp_0_listen_req_s3), + .m_open_con_cmd_0(tcp_0_open_req_s3), + .m_close_con_cmd_0(tcp_0_close_req_s3), + .s_open_con_sts_0(tcp_0_open_rsp_s3), + .s_open_port_sts_0(tcp_0_listen_rsp_s3), +{% endif %} +{% if cnfg.en_tcp_1 %} + .m_open_port_cmd_1(tcp_1_listen_req_s3), + .m_open_con_cmd_1(tcp_1_open_req_s3), + .m_close_con_cmd_1(tcp_1_close_req_s3), + .s_open_con_sts_1(tcp_1_open_rsp_s3), + .s_open_port_sts_1(tcp_1_listen_rsp_s3), +{% endif %} {% if cnfg.en_wb %} .m_wback(m_wback), {% endif %} @@ -1613,21 +1618,6 @@ module design_dynamic_wrapper #( .axis_rdma_1_src_tvalid (axis_rdma_1_out_ul[{{ i }}].tvalid), {% endif %} {% if cnfg.en_tcp_0 %} - .tcp_0_listen_req_valid (tcp_0_listen_req_ul[{{ i }}].valid), - .tcp_0_listen_req_ready (tcp_0_listen_req_ul[{{ i }}].ready), - .tcp_0_listen_req_data (tcp_0_listen_req_ul[{{ i }}].data), - .tcp_0_listen_rsp_valid (tcp_0_listen_rsp_ul[{{ i }}].valid), - .tcp_0_listen_rsp_ready (tcp_0_listen_rsp_ul[{{ i }}].ready), - .tcp_0_listen_rsp_data (tcp_0_listen_rsp_ul[{{ i }}].data), - .tcp_0_open_req_valid (tcp_0_open_req_ul[{{ i }}].valid), - .tcp_0_open_req_ready (tcp_0_open_req_ul[{{ i }}].ready), - .tcp_0_open_req_data (tcp_0_open_req_ul[{{ i }}].data), - .tcp_0_open_rsp_valid (tcp_0_open_rsp_ul[{{ i }}].valid), - .tcp_0_open_rsp_ready (tcp_0_open_rsp_ul[{{ i }}].ready), - .tcp_0_open_rsp_data (tcp_0_open_rsp_ul[{{ i }}].data), - .tcp_0_close_req_valid (tcp_0_close_req_ul[{{ i }}].valid), - .tcp_0_close_req_ready (tcp_0_close_req_ul[{{ i }}].ready), - .tcp_0_close_req_data (tcp_0_close_req_ul[{{ i }}].data), .tcp_0_notify_valid (tcp_0_notify_ul[{{ i }}].valid), .tcp_0_notify_ready (tcp_0_notify_ul[{{ i }}].ready), .tcp_0_notify_data (tcp_0_notify_ul[{{ i }}].data), @@ -1657,21 +1647,6 @@ module design_dynamic_wrapper #( .axis_tcp_0_src_tvalid (axis_tcp_0_out_ul[{{ i }}].tvalid), {% endif %} {% if cnfg.en_tcp_1 %} - .tcp_1_listen_req_valid (tcp_1_listen_req_ul[{{ i }}].valid), - .tcp_1_listen_req_ready (tcp_1_listen_req_ul[{{ i }}].ready), - .tcp_1_listen_req_data (tcp_1_listen_req_ul[{{ i }}].data), - .tcp_1_listen_rsp_valid (tcp_1_listen_rsp_ul[{{ i }}].valid), - .tcp_1_listen_rsp_ready (tcp_1_listen_rsp_ul[{{ i }}].ready), - .tcp_1_listen_rsp_data (tcp_1_listen_rsp_ul[{{ i }}].data), - .tcp_1_open_req_valid (tcp_1_open_req_ul[{{ i }}].valid), - .tcp_1_open_req_ready (tcp_1_open_req_ul[{{ i }}].ready), - .tcp_1_open_req_data (tcp_1_open_req_ul[{{ i }}].data), - .tcp_1_open_rsp_valid (tcp_1_open_rsp_ul[{{ i }}].valid), - .tcp_1_open_rsp_ready (tcp_1_open_rsp_ul[{{ i }}].ready), - .tcp_1_open_rsp_data (tcp_1_open_rsp_ul[{{ i }}].data), - .tcp_1_close_req_valid (tcp_1_close_req_ul[{{ i }}].valid), - .tcp_1_close_req_ready (tcp_1_close_req_ul[{{ i }}].ready), - .tcp_1_close_req_data (tcp_1_close_req_ul[{{ i }}].data), .tcp_1_notify_valid (tcp_1_notify_ul[{{ i }}].valid), .tcp_1_notify_ready (tcp_1_notify_ul[{{ i }}].ready), .tcp_1_notify_data (tcp_1_notify_ul[{{ i }}].data), diff --git a/hw/scripts/wr_hdl/template_gen/user_hls.txt b/hw/scripts/wr_hdl/template_gen/user_hls.txt index b710ae4..2e005da 100644 --- a/hw/scripts/wr_hdl/template_gen/user_hls.txt +++ b/hw/scripts/wr_hdl/template_gen/user_hls.txt @@ -51,7 +51,7 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% if cnfg.en_rpc %} // RDMA rq, sq and ack - hls::stream& rdma_0_rq, + // hls::stream& rdma_0_rq, hls::stream& rdma_0_sq, hls::stream& rdma_0_ack, @@ -68,7 +68,7 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% if cnfg.en_rpc %} // RDMA rq and sq - hls::stream& rdma_1_rq, + // hls::stream& rdma_1_rq, hls::stream& rdma_1_sq, hls::stream& rdma_1_ack, @@ -76,11 +76,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% if cnfg.en_tcp_0 %} // TCP/IP descriptors - hls::stream& tcp_0_listen_req, - hls::stream& tcp_0_listen_rsp, - hls::stream& tcp_0_open_req, - hls::stream& tcp_0_open_rsp, - hls::stream& tcp_0_close_req, hls::stream& tcp_0_notify, hls::stream& tcp_0_rd_package, hls::stream& tcp_0_rx_meta, @@ -94,11 +89,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% if cnfg.en_tcp_1 %} // TCP/IP descriptors - hls::stream& tcp_1_listen_req, - hls::stream& tcp_1_listen_rsp, - hls::stream& tcp_1_open_req, - hls::stream& tcp_1_open_rsp, - hls::stream& tcp_1_close_req, hls::stream& tcp_1_notify, hls::stream& tcp_1_rd_package, hls::stream& tcp_1_rx_meta, @@ -177,11 +167,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% endif %} {% if cnfg.en_tcp_0 %} - #pragma HLS INTERFACE axis register port=tcp_0_listen_req name=m_tcp_0_listen_req - #pragma HLS INTERFACE axis register port=tcp_0_listen_rsp name=s_tcp_0_listen_rsp - #pragma HLS INTERFACE axis register port=tcp_0_open_req name=m_tcp_0_open_req - #pragma HLS INTERFACE axis register port=tcp_0_open_rsp name=s_tcp_0_open_rsp - #pragma HLS INTERFACE axis register port=tcp_0_close_req name=m_tcp_0_close_req #pragma HLS INTERFACE axis register port=tcp_0_notify name=s_tcp_0_notify #pragma HLS INTERFACE axis register port=tcp_0_rd_pkg name=m_tcp_0_rd_pkg #pragma HLS INTERFACE axis register port=tcp_0_rx_meta name=m_tcp_0_rx_meta @@ -189,11 +174,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( #pragma HLS INTERFACE axis register port=tcp_0_tx_stat name=s_tcp_0_tx_stat #pragma HLS INTERFACE axis register port=axis_tcp_0_src name=m_axis_tcp_0_src #pragma HLS INTERFACE axis register port=axis_tcp_0_sink name=s_axis_tcp_0_sink - #pragma HLS aggregate variable=tcp_0_listen_req compact=bit - #pragma HLS aggregate variable=tcp_0_listen_rsp compact=bit - #pragma HLS aggregate variable=tcp_0_open_req compact=bit - #pragma HLS aggregate variable=tcp_0_open_rsp compact=bit - #pragma HLS aggregate variable=tcp_0_close_req compact=bit #pragma HLS aggregate variable=tcp_0_notify compact=bit #pragma HLS aggregate variable=tcp_0_rd_pkg compact=bit #pragma HLS aggregate variable=tcp_0_rx_meta compact=bit @@ -202,11 +182,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% if cnfg.en_tcp_1 %} - #pragma HLS INTERFACE axis register port=tcp_1_listen_req name=m_tcp_1_listen_req - #pragma HLS INTERFACE axis register port=tcp_1_listen_rsp name=s_tcp_1_listen_rsp - #pragma HLS INTERFACE axis register port=tcp_1_open_req name=m_tcp_1_open_req - #pragma HLS INTERFACE axis register port=tcp_1_open_rsp name=s_tcp_1_open_rsp - #pragma HLS INTERFACE axis register port=tcp_1_close_req name=m_tcp_1_close_req #pragma HLS INTERFACE axis register port=tcp_1_notify name=s_tcp_1_notify #pragma HLS INTERFACE axis register port=tcp_1_rd_pkg name=m_tcp_1_rd_pkg #pragma HLS INTERFACE axis register port=tcp_1_rx_meta name=m_tcp_1_rx_meta @@ -214,11 +189,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( #pragma HLS INTERFACE axis register port=tcp_1_tx_stat name=s_tcp_1_tx_stat #pragma HLS INTERFACE axis register port=axis_tcp_1_src name=m_axis_tcp_1_src #pragma HLS INTERFACE axis register port=axis_tcp_1_sink name=s_axis_tcp_1_sink - #pragma HLS aggregate variable=tcp_1_listen_req compact=bit - #pragma HLS aggregate variable=tcp_1_listen_rsp compact=bit - #pragma HLS aggregate variable=tcp_1_open_req compact=bit - #pragma HLS aggregate variable=tcp_1_open_rsp compact=bit - #pragma HLS aggregate variable=tcp_1_close_req compact=bit #pragma HLS aggregate variable=tcp_1_notify compact=bit #pragma HLS aggregate variable=tcp_1_rd_pkg compact=bit #pragma HLS aggregate variable=tcp_1_rx_meta compact=bit @@ -265,7 +235,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( axis_rdma_0_src.write(ap_axiu()); {% if cnfg.en_rpc %} - rdmaIntf tmp_rdma_0_rq = rdma_0_rq.read(); ackIntf tmp_rdma_0_ack = rdma_0_ack.read(); rdma_0_sq.write(rdmaIntf()); @@ -278,18 +247,12 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( axis_rdma_1_src.write(ap_axiu()); {% if cnfg.en_rpc %} - rdmaIntf tmp_rdma_1_rq = rdma_1_rq.read(); ackIntf tmp_rdma_1_ack = rdma_1_ack.read(); rdma_1_sq.write(rdmaIntf()); {% endif %} {% endif %} {% if cnfg.en_tcp_0 %} - tcp_0_listen_req.write(tcpListenReqIntf()); - tcpListenRspIntf tmp_tcp_0_listen_rsp = tcp_0_listen_rsp.read(); - tcp_0_open_req.write(tcpOpenReqIntf()); - tcpOpenRspIntf tmp_tcp_0_open_rsp = tcp_0_open_rsp.read(); - tcp_0_close_req.write(tcpCloseReqIntf()); tcpNotifyIntf tmp_tcp_0_notify = tcp_0_notify.read(); tcp_0_rd_pkg.write(tcpRdPkgIntf()); tcp_0_rx_meta.write(tcpRxMetaIntf()); @@ -300,11 +263,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% if cnfg.en_tcp_1 %} - tcp_1_listen_req.write(tcpListenReqIntf()); - tcpListenRspIntf tmp_tcp_1_listen_rsp = tcp_1_listen_rsp.read(); - tcp_1_open_req.write(tcpOpenReqIntf()); - tcpOpenRspIntf tmp_tcp_1_open_rsp = tcp_1_open_rsp.read(); - tcp_1_close_req.write(tcpCloseReqIntf()); tcpNotifyIntf tmp_tcp_1_notify = tcp_1_notify.read(); tcp_1_rd_pkg.write(tcpRdPkgIntf()); tcp_1_rx_meta.write(tcpRxMetaIntf()); @@ -378,11 +336,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% if cnfg.en_tcp_0 %} // TCP/IP descriptors - hls::stream& tcp_0_listen_req, - hls::stream& tcp_0_listen_rsp, - hls::stream& tcp_0_open_req, - hls::stream& tcp_0_open_rsp, - hls::stream& tcp_0_close_req, hls::stream& tcp_0_notify, hls::stream& tcp_0_rd_package, hls::stream& tcp_0_rx_meta, @@ -396,11 +349,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% if cnfg.en_tcp_1 %} // TCP/IP descriptors - hls::stream& tcp_1_listen_req, - hls::stream& tcp_1_listen_rsp, - hls::stream& tcp_1_open_req, - hls::stream& tcp_1_open_rsp, - hls::stream& tcp_1_close_req, hls::stream& tcp_1_notify, hls::stream& tcp_1_rd_package, hls::stream& tcp_1_rx_meta, @@ -479,11 +427,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% endif %} {% if cnfg.en_tcp_0 %} - #pragma HLS INTERFACE axis register port=tcp_0_listen_req name=m_tcp_0_listen_req - #pragma HLS INTERFACE axis register port=tcp_0_listen_rsp name=s_tcp_0_listen_rsp - #pragma HLS INTERFACE axis register port=tcp_0_open_req name=m_tcp_0_open_req - #pragma HLS INTERFACE axis register port=tcp_0_open_rsp name=s_tcp_0_open_rsp - #pragma HLS INTERFACE axis register port=tcp_0_close_req name=m_tcp_0_close_req #pragma HLS INTERFACE axis register port=tcp_0_notify name=s_tcp_0_notify #pragma HLS INTERFACE axis register port=tcp_0_rd_pkg name=m_tcp_0_rd_pkg #pragma HLS INTERFACE axis register port=tcp_0_rx_meta name=m_tcp_0_rx_meta @@ -491,11 +434,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( #pragma HLS INTERFACE axis register port=tcp_0_tx_stat name=s_tcp_0_tx_stat #pragma HLS INTERFACE axis register port=axis_tcp_0_src name=m_axis_tcp_0_src #pragma HLS INTERFACE axis register port=axis_tcp_0_sink name=s_axis_tcp_0_sink - #pragma HLS DATA_PACK variable=tcp_0_listen_req - #pragma HLS DATA_PACK variable=tcp_0_listen_rsp - #pragma HLS DATA_PACK variable=tcp_0_open_req - #pragma HLS DATA_PACK variable=tcp_0_open_rsp - #pragma HLS DATA_PACK variable=tcp_0_close_req #pragma HLS DATA_PACK variable=tcp_0_notify #pragma HLS DATA_PACK variable=tcp_0_rd_pkg #pragma HLS DATA_PACK variable=tcp_0_rx_meta @@ -504,11 +442,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% if cnfg.en_tcp_1 %} - #pragma HLS INTERFACE axis register port=tcp_1_listen_req name=m_tcp_1_listen_req - #pragma HLS INTERFACE axis register port=tcp_1_listen_rsp name=s_tcp_1_listen_rsp - #pragma HLS INTERFACE axis register port=tcp_1_open_req name=m_tcp_1_open_req - #pragma HLS INTERFACE axis register port=tcp_1_open_rsp name=s_tcp_1_open_rsp - #pragma HLS INTERFACE axis register port=tcp_1_close_req name=m_tcp_1_close_req #pragma HLS INTERFACE axis register port=tcp_1_notify name=s_tcp_1_notify #pragma HLS INTERFACE axis register port=tcp_1_rd_pkg name=m_tcp_1_rd_pkg #pragma HLS INTERFACE axis register port=tcp_1_rx_meta name=m_tcp_1_rx_meta @@ -516,11 +449,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( #pragma HLS INTERFACE axis register port=tcp_1_tx_stat name=s_tcp_1_tx_stat #pragma HLS INTERFACE axis register port=axis_tcp_1_src name=m_axis_tcp_1_src #pragma HLS INTERFACE axis register port=axis_tcp_1_sink name=s_axis_tcp_1_sink - #pragma HLS DATA_PACK variable=tcp_1_listen_req - #pragma HLS DATA_PACK variable=tcp_1_listen_rsp - #pragma HLS DATA_PACK variable=tcp_1_open_req - #pragma HLS DATA_PACK variable=tcp_1_open_rsp - #pragma HLS DATA_PACK variable=tcp_1_close_req #pragma HLS DATA_PACK variable=tcp_1_notify #pragma HLS DATA_PACK variable=tcp_1_rd_pkg #pragma HLS DATA_PACK variable=tcp_1_rx_meta @@ -567,7 +495,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( axis_rdma_0_src.write(axisIntf()); {% if cnfg.en_rpc %} - rdmaIntf tmp_rdma_0_rq = rdma_0_rq.read(); ackIntf tmp_rdma_0_ack = rdma_0_ack.read(); rdma_0_sq.write(rdmaIntf()); @@ -580,18 +507,12 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( axis_rdma_1_src.write(axisIntf()); {% if cnfg.en_rpc %} - rdmaIntf tmp_rdma_1_rq = rdma_1_rq.read(); ackIntf tmp_rdma_1_ack = rdma_1_ack.read(); rdma_1_sq.write(rdmaIntf()); {% endif %} {% endif %} {% if cnfg.en_tcp_0 %} - tcp_0_listen_req.write(tcpListenReqIntf()); - tcpListenRspIntf tmp_tcp_0_listen_rsp = tcp_0_listen_rsp.read(); - tcp_0_open_req.write(tcpOpenReqIntf()); - tcpOpenRspIntf tmp_tcp_0_open_rsp = tcp_0_open_rsp.read(); - tcp_0_close_req.write(tcpCloseReqIntf()); tcpNotifyIntf tmp_tcp_0_notify = tcp_0_notify.read(); tcp_0_rd_pkg.write(tcpRdPkgIntf()); tcp_0_rx_meta.write(tcpRxMetaIntf()); @@ -602,11 +523,6 @@ void design_user_hls_c{{ c_cnfg }}_{{ c_reg }}_top ( {% endif %} {% if cnfg.en_tcp_1 %} - tcp_1_listen_req.write(tcpListenReqIntf()); - tcpListenRspIntf tmp_tcp_1_listen_rsp = tcp_1_listen_rsp.read(); - tcp_1_open_req.write(tcpOpenReqIntf()); - tcpOpenRspIntf tmp_tcp_1_open_rsp = tcp_1_open_rsp.read(); - tcp_1_close_req.write(tcpCloseReqIntf()); tcpNotifyIntf tmp_tcp_1_notify = tcp_1_notify.read(); tcp_1_rd_pkg.write(tcpRdPkgIntf()); tcp_1_rx_meta.write(tcpRxMetaIntf()); diff --git a/hw/scripts/wr_hdl/template_gen/user_logic.txt b/hw/scripts/wr_hdl/template_gen/user_logic.txt index 00a419c..391f77e 100644 --- a/hw/scripts/wr_hdl/template_gen/user_logic.txt +++ b/hw/scripts/wr_hdl/template_gen/user_logic.txt @@ -48,9 +48,8 @@ module design_user_logic_c{{ c_cnfg }}_{{ c_reg }} ( AXI4SR.m axis_rdma_0_src, {% if cnfg.en_rpc %} - // RDMA QSFP0 SQ and RQ + // RDMA QSFP0 SQ metaIntf.m rdma_0_sq, - metaIntf.s rdma_0_rq, metaIntf.s rdma_0_ack, {% endif %} @@ -65,7 +64,7 @@ module design_user_logic_c{{ c_cnfg }}_{{ c_reg }} ( AXI4SR.m axis_rdma_1_src, {% if cnfg.en_rpc %} - // RDMA QSFP1 SQ and RQ + // RDMA QSFP1 SQ metaIntf.m rdma_1_sq, metaIntf.s rdma_1_ack, @@ -73,11 +72,6 @@ module design_user_logic_c{{ c_cnfg }}_{{ c_reg }} ( {% endif %} {% if cnfg.en_tcp_0 %} // TCP/IP QSFP0 CMD - metaIntf.m tcp_0_listen_req, - metaIntf.s tcp_0_listen_rsp, - metaIntf.m tcp_0_open_req, - metaIntf.s tcp_0_open_rsp, - metaIntf.m tcp_0_close_req, metaIntf.s tcp_0_notify, metaIntf.m tcp_0_rd_pkg, metaIntf.s tcp_0_rx_meta, @@ -91,11 +85,6 @@ module design_user_logic_c{{ c_cnfg }}_{{ c_reg }} ( {% endif %} {% if cnfg.en_tcp_1 %} // TCP/IP QSFP1 CMD - metaIntf.m tcp_1_listen_req, - metaIntf.s tcp_1_listen_rsp, - metaIntf.m tcp_1_open_req, - metaIntf.s tcp_1_open_rsp, - metaIntf.m tcp_1_close_req, metaIntf.s tcp_1_notify, metaIntf.m tcp_1_rd_pkg, metaIntf.s tcp_1_rx_meta, @@ -153,11 +142,6 @@ module design_user_logic_c{{ c_cnfg }}_{{ c_reg }} ( {% endif %} {% endif %} {% if cnfg.en_tcp_0 %} -//always_comb tcp_0_listen_req.tie_off_m(); -//always_comb tcp_0_listen_rsp.tie_off_s(); -//always_comb tcp_0_open_req.tie_off_m(); -//always_comb tcp_0_open_rsp.tie_off_s(); -//always_comb tcp_0_close_req.tie_off_m(); //always_comb tcp_0_notify.tie_off_s(); //always_comb tcp_0_rd_pkg.tie_off_m(); //always_comb tcp_0_rx_meta.tie_off_s(); @@ -167,11 +151,6 @@ module design_user_logic_c{{ c_cnfg }}_{{ c_reg }} ( //always_comb axis_tcp_0_src.tie_off_m(); {% endif %} {% if cnfg.en_tcp_1 %} -//always_comb tcp_1_listen_req.tie_off_m(); -//always_comb tcp_1_listen_rsp.tie_off_s(); -//always_comb tcp_1_open_req.tie_off_m(); -//always_comb tcp_1_open_rsp.tie_off_s(); -//always_comb tcp_1_close_req.tie_off_m(); //always_comb tcp_1_notify.tie_off_s(); //always_comb tcp_1_rd_pkg.tie_off_m(); //always_comb tcp_1_rx_meta.tie_off_s(); diff --git a/hw/scripts/wr_hdl/template_gen/user_wrapper.txt b/hw/scripts/wr_hdl/template_gen/user_wrapper.txt index 3eb7861..e2b00f5 100644 --- a/hw/scripts/wr_hdl/template_gen/user_wrapper.txt +++ b/hw/scripts/wr_hdl/template_gen/user_wrapper.txt @@ -166,21 +166,6 @@ module design_user_wrapper_{{ c_reg }} ( {% endif %} {% if cnfg.en_tcp_0 %} // TCP/IP QSFP0 CMD - output logic tcp_0_listen_req_valid, - input logic tcp_0_listen_req_ready, - output logic[TCP_PORT_REQ_BITS-1:0] tcp_0_listen_req_data, - input logic tcp_0_listen_rsp_valid, - output logic tcp_0_listen_rsp_ready, - input logic[TCP_PORT_RSP_BITS-1:0] tcp_0_listen_rsp_data, - output logic tcp_0_open_req_valid, - input logic tcp_0_open_req_ready, - output logic[TCP_OPEN_CONN_REQ_BITS-1:0] tcp_0_open_req_data, - input logic tcp_0_open_rsp_valid, - output logic tcp_0_open_rsp_ready, - input logic[TCP_OPEN_CONN_RSP_BITS-1:0] tcp_0_open_rsp_data, - output logic tcp_0_close_req_valid, - input logic tcp_0_close_req_ready, - output logic[TCP_CLOSE_CONN_REQ_BITS-1:0] tcp_0_close_req_data, input logic tcp_0_notify_valid, output logic tcp_0_notify_ready, input logic[TCP_NOTIFY_BITS-1:0] tcp_0_notify_data, @@ -216,21 +201,6 @@ module design_user_wrapper_{{ c_reg }} ( {% endif %} {% if cnfg.en_tcp_1 %} // TCP/IP QSFP1 CMD - output logic tcp_1_listen_req_valid, - input logic tcp_1_listen_req_ready, - output logic[TCP_PORT_REQ_BITS-1:0] tcp_1_listen_req_data, - input logic tcp_1_listen_rsp_valid, - output logic tcp_1_listen_rsp_ready, - input logic[TCP_PORT_RSP_BITS-1:0] tcp_1_listen_rsp_data, - output logic tcp_1_open_req_valid, - input logic tcp_1_open_req_ready, - output logic[TCP_OPEN_CONN_REQ_BITS-1:0] tcp_1_open_req_data, - input logic tcp_1_open_rsp_valid, - output logic tcp_1_open_rsp_ready, - input logic[TCP_OPEN_CONN_RSP_BITS-1:0] tcp_1_open_rsp_data, - output logic tcp_1_close_req_valid, - input logic tcp_1_close_req_ready, - output logic[TCP_CLOSE_CONN_REQ_BITS-1:0] tcp_1_close_req_data, input logic tcp_1_notify_valid, output logic tcp_1_notify_ready, input logic[TCP_NOTIFY_BITS-1:0] tcp_1_notify_data, @@ -451,13 +421,14 @@ module design_user_wrapper_{{ c_reg }} ( {% if cnfg.en_rpc %} // RDMA rq and sq metaIntf #(.STYPE(rdma_req_t)) rdma_0_sq(); - //metaIntf #(.STYPE(rdma_req_t)) rdma_0_rq(); + // metaIntf #(.STYPE(rdma_req_t)) rdma_0_rq(); metaIntf #(.STYPE(rdma_ack_t)) rdma_0_ack(); assign rdma_0_sq_valid = rdma_0_sq.valid; assign rdma_0_sq.ready = rdma_0_sq_ready; assign rdma_0_sq_data = rdma_0_sq.data; + /* // RDMA SEND mux /* rdma_mux_cmd_user inst_rdma_mux_0 ( @@ -520,13 +491,14 @@ module design_user_wrapper_{{ c_reg }} ( {% if cnfg.en_rpc %} // RDMA rq and sq metaIntf #(.STYPE(rdma_req_t)) rdma_1_sq(); - //metaIntf #(.STYPE(rdma_req_t)) rdma_1_rq(); + // metaIntf #(.STYPE(rdma_req_t)) rdma_1_rq(); metaIntf #(.STYPE(rdma_ack_t)) rdma_1_ack(); assign rdma_1_sq_valid = rdma_1_sq.valid; assign rdma_1_sq.ready = rdma_1_sq_ready; assign rdma_1_sq_data = rdma_1_sq.data; + /* // RDMA SEND mux /* rdma_mux_cmd_user inst_rdma_mux_1 ( @@ -554,36 +526,6 @@ module design_user_wrapper_{{ c_reg }} ( {% endif %} {% if cnfg.en_tcp_0 %} // TCP/IP meta - metaIntf #(.STYPE(tcp_listen_req_t)) tcp_0_listen_req(); - - assign tcp_0_listen_req_valid = tcp_0_listen_req.valid; - assign tcp_0_listen_req.ready = tcp_0_listen_req_ready; - assign tcp_0_listen_req_data = tcp_0_listen_req.data; - - metaIntf #(.STYPE(tcp_listen_rsp_t)) tcp_0_listen_rsp(); - - assign tcp_0_listen_rsp.valid = tcp_0_listen_rsp_valid; - assign tcp_0_listen_rsp_ready = tcp_0_listen_rsp.ready; - assign tcp_0_listen_rsp.data = tcp_0_listen_rsp_data; - - metaIntf #(.STYPE(tcp_open_req_t)) tcp_0_open_req(); - - assign tcp_0_open_req_valid = tcp_0_open_req.valid; - assign tcp_0_open_req.ready = tcp_0_open_req_ready; - assign tcp_0_open_req_data = tcp_0_open_req.data; - - metaIntf #(.STYPE(tcp_open_rsp_t)) tcp_0_open_rsp(); - - assign tcp_0_open_rsp.valid = tcp_0_open_rsp_valid; - assign tcp_0_open_rsp_ready = tcp_0_open_rsp.ready; - assign tcp_0_open_rsp.data = tcp_0_open_rsp_data; - - metaIntf #(.STYPE(tcp_close_req_t)) tcp_0_close_req(); - - assign tcp_0_close_req_valid = tcp_0_close_req.valid; - assign tcp_0_close_req.ready = tcp_0_close_req_ready; - assign tcp_0_close_req_data = tcp_0_close_req.data; - metaIntf #(.STYPE(tcp_notify_t)) tcp_0_notify(); assign tcp_0_notify.valid = tcp_0_notify_valid; @@ -637,36 +579,6 @@ module design_user_wrapper_{{ c_reg }} ( {% endif %} {% if cnfg.en_tcp_1 %} // TCP/IP meta - metaIntf #(.STYPE(tcp_listen_req_t)) tcp_1_listen_req(); - - assign tcp_1_listen_req_valid = tcp_1_listen_req.valid; - assign tcp_1_listen_req.ready = tcp_1_listen_req_ready; - assign tcp_1_listen_req_data = tcp_1_listen_req.data; - - metaIntf #(.STYPE(tcp_listen_rsp_t)) tcp_1_listen_rsp(); - - assign tcp_1_listen_rsp.valid = tcp_1_listen_rsp_valid; - assign tcp_1_listen_rsp_ready = tcp_1_listen_rsp.ready; - assign tcp_1_listen_rsp.data = tcp_1_listen_rsp_data; - - metaIntf #(.STYPE(tcp_open_req_t)) tcp_1_open_req(); - - assign tcp_1_open_req_valid = tcp_1_open_req.valid; - assign tcp_1_open_req.ready = tcp_1_open_req_ready; - assign tcp_1_open_req_data = tcp_1_open_req.data; - - metaIntf #(.STYPE(tcp_open_rsp_t)) tcp_1_open_rsp(); - - assign tcp_1_open_rsp.valid = tcp_1_open_rsp_valid; - assign tcp_1_open_rsp_ready = tcp_1_open_rsp.ready; - assign tcp_1_open_rsp.data = tcp_1_open_rsp_data; - - metaIntf #(.STYPE(tcp_close_req_t)) tcp_1_close_req(); - - assign tcp_1_close_req_valid = tcp_1_close_req.valid; - assign tcp_1_close_req.ready = tcp_1_close_req_ready; - assign tcp_1_close_req_data = tcp_1_close_req.data; - metaIntf #(.STYPE(tcp_notify_t)) tcp_1_notify(); assign tcp_1_notify.valid = tcp_1_notify_valid; @@ -814,9 +726,9 @@ module design_user_wrapper_{{ c_reg }} ( .m_rdma_0_sq_TDATA(rdma_0_sq.data), .m_rdma_0_sq_TVALID(rdma_0_sq.valid), .m_rdma_0_sq_TREADY(rdma_0_sq.ready), - .s_rdma_0_rq_TDATA(rdma_0_rq.data), - .s_rdma_0_rq_TVALID(rdma_0_rq.valid), - .s_rdma_0_rq_TREADY(rdma_0_rq.ready), + //.s_rdma_0_rq_TDATA(rdma_0_rq.data), + //.s_rdma_0_rq_TVALID(rdma_0_rq.valid), + //.s_rdma_0_rq_TREADY(rdma_0_rq.ready), .s_rdma_0_ack_TDATA(rdma_0_ack.data), .s_rdma_0_ack_TVALID(rdma_0_ack.valid), .s_rdma_0_ack_TREADY(rdma_0_ack.ready), @@ -845,30 +757,15 @@ module design_user_wrapper_{{ c_reg }} ( .m_rdma_1_sq_TDATA(rdma_1_sq.data), .m_rdma_1_sq_TVALID(rdma_1_sq.valid), .m_rdma_1_sq_TREADY(rdma_1_sq.ready), - .s_rdma_1_rq_TDATA(rdma_1_rq.data), - .s_rdma_1_rq_TVALID(rdma_1_rq.valid), - .s_rdma_1_rq_TREADY(rdma_1_rq.ready), + //.s_rdma_1_rq_TDATA(rdma_1_rq.data), + //.s_rdma_1_rq_TVALID(rdma_1_rq.valid), + //.s_rdma_1_rq_TREADY(rdma_1_rq.ready), .s_rdma_1_ack_TDATA(rdma_1_ack.data), .s_rdma_1_ack_TVALID(rdma_1_ack.valid), .s_rdma_1_ack_TREADY(rdma_1_ack.ready), {% endif %} {% endif %} {% if cnfg.en_tcp_0 %} - .m_tcp_0_listen_req_TDATA(tcp_0_listen_req.data), - .m_tcp_0_listen_req_TVALID(tcp_0_listen_req.valid), - .m_tcp_0_listen_req_TREADY(tcp_0_listen_req.ready), - .s_tcp_0_listen_rsp_TDATA(tcp_0_listen_rsp.data), - .s_tcp_0_listen_rsp_TVALID(tcp_0_listen_rsp.valid), - .s_tcp_0_listen_rsp_TREADY(tcp_0_listen_rsp.ready), - .m_tcp_0_open_req_TDATA(tcp_0_open_req.data), - .m_tcp_0_open_req_TVALID(tcp_0_open_req.valid), - .m_tcp_0_open_req_TREADY(tcp_0_open_req.ready), - .s_tcp_0_open_rsp_TDATA(tcp_0_open_rsp.data), - .s_tcp_0_open_rsp_TVALID(tcp_0_open_rsp.valid), - .s_tcp_0_open_rsp_TREADY(tcp_0_open_rsp.ready), - .m_tcp_0_close_req_TDATA(tcp_0_close_req.data), - .m_tcp_0_close_req_TVALID(tcp_0_close_req.valid), - .m_tcp_0_close_req_TREADY(tcp_0_close_req.ready), .s_tcp_0_notify_TDATA(tcp_0_notify.data), .s_tcp_0_notify_TVALID(tcp_0_notify.valid), .s_tcp_0_notify_TREADY(tcp_0_notify.ready), @@ -898,21 +795,6 @@ module design_user_wrapper_{{ c_reg }} ( .m_axis_tcp_0_src_TREADY(axis_tcp_0_src.tready), {% endif %} {% if cnfg.en_tcp_1 %} - .m_tcp_1_listen_req_TDATA(tcp_1_listen_req.data), - .m_tcp_1_listen_req_TVALID(tcp_1_listen_req.valid), - .m_tcp_1_listen_req_TREADY(tcp_1_listen_req.ready), - .s_tcp_1_listen_rsp_TDATA(tcp_1_listen_rsp.data), - .s_tcp_1_listen_rsp_TVALID(tcp_1_listen_rsp.valid), - .s_tcp_1_listen_rsp_TREADY(tcp_1_listen_rsp.ready), - .m_tcp_1_open_req_TDATA(tcp_1_open_req.data), - .m_tcp_1_open_req_TVALID(tcp_1_open_req.valid), - .m_tcp_1_open_req_TREADY(tcp_1_open_req.ready), - .s_tcp_1_open_rsp_TDATA(tcp_1_open_rsp.data), - .s_tcp_1_open_rsp_TVALID(tcp_1_open_rsp.valid), - .s_tcp_1_open_rsp_TREADY(tcp_1_open_rsp.ready), - .m_tcp_1_close_req_TDATA(tcp_1_close_req.data), - .m_tcp_1_close_req_TVALID(tcp_1_close_req.valid), - .m_tcp_1_close_req_TREADY(tcp_1_close_req.ready), .s_tcp_1_notify_TDATA(tcp_1_notify.data), .s_tcp_1_notify_TVALID(tcp_1_notify.valid), .s_tcp_1_notify_TREADY(tcp_1_notify.ready), @@ -1033,9 +915,9 @@ module design_user_wrapper_{{ c_reg }} ( .m_rdma_0_sq_V_TDATA(rdma_0_sq.data), .m_rdma_0_sq_V_TVALID(rdma_0_sq.valid), .m_rdma_0_sq_V_TREADY(rdma_0_sq.ready), - .s_rdma_0_rq_V_TDATA(rdma_0_rq.data), - .s_rdma_0_rq_V_TVALID(rdma_0_rq.valid), - .s_rdma_0_rq_V_TREADY(rdma_0_rq.ready), + //.s_rdma_0_rq_V_TDATA(rdma_0_rq.data), + //.s_rdma_0_rq_V_TVALID(rdma_0_rq.valid), + //.s_rdma_0_rq_V_TREADY(rdma_0_rq.ready), .s_rdma_0_ack_V_TDATA(rdma_0_ack.data), .s_rdma_0_ack_V_TVALID(rdma_0_ack.valid), .s_rdma_0_ack_V_TREADY(rdma_0_ack.ready), @@ -1064,30 +946,15 @@ module design_user_wrapper_{{ c_reg }} ( .m_rdma_1_sq_V_TDATA(rdma_1_sq.data), .m_rdma_1_sq_V_TVALID(rdma_1_sq.valid), .m_rdma_1_sq_V_TREADY(rdma_1_sq.ready), - .s_rdma_1_rq_V_TDATA(rdma_1_rq.data), - .s_rdma_1_rq_V_TVALID(rdma_1_rq.valid), - .s_rdma_1_rq_V_TREADY(rdma_1_rq.ready), + //.s_rdma_1_rq_V_TDATA(rdma_1_rq.data), + //.s_rdma_1_rq_V_TVALID(rdma_1_rq.valid), + //.s_rdma_1_rq_V_TREADY(rdma_1_rq.ready), .s_rdma_1_ack_V_TDATA(rdma_1_ack.data), .s_rdma_1_ack_V_TVALID(rdma_1_ack.valid), .s_rdma_1_ack_V_TREADY(rdma_1_ack.ready), {% endif %} {% endif %} {% if cnfg.en_tcp_0 %} - .m_tcp_0_listen_req_V_V_TDATA(tcp_0_listen_req.data), - .m_tcp_0_listen_req_V_V_TVALID(tcp_0_listen_req.valid), - .m_tcp_0_listen_req_V_V_TREADY(tcp_0_listen_req.ready), - .s_tcp_0_listen_rsp_V_V_TDATA(tcp_0_listen_rsp.data), - .s_tcp_0_listen_rsp_V_V_TVALID(tcp_0_listen_rsp.valid), - .s_tcp_0_listen_rsp_V_V_TREADY(tcp_0_listen_rsp.ready), - .m_tcp_0_open_req_V_TDATA(tcp_0_open_req.data), - .m_tcp_0_open_req_V_TVALID(tcp_0_open_req.valid), - .m_tcp_0_open_req_V_TREADY(tcp_0_open_req.ready), - .s_tcp_0_open_rsp_V_TDATA(tcp_0_open_rsp.data), - .s_tcp_0_open_rsp_V_TVALID(tcp_0_open_rsp.valid), - .s_tcp_0_open_rsp_V_TREADY(tcp_0_open_rsp.ready), - .m_tcp_0_close_req_V_V_TDATA(tcp_0_close_req.data), - .m_tcp_0_close_req_V_V_TVALID(tcp_0_close_req.valid), - .m_tcp_0_close_req_V_V_TREADY(tcp_0_close_req.ready), .s_tcp_0_notify_V_TDATA(tcp_0_notify.data), .s_tcp_0_notify_V_TVALID(tcp_0_notify.valid), .s_tcp_0_notify_V_TREADY(tcp_0_notify.ready), @@ -1117,21 +984,6 @@ module design_user_wrapper_{{ c_reg }} ( .m_axis_tcp_0_src_TREADY(axis_tcp_0_src.tready), {% endif %} {% if cnfg.en_tcp_1 %} - .m_tcp_1_listen_req_V_V_TDATA(tcp_1_listen_req.data), - .m_tcp_1_listen_req_V_V_TVALID(tcp_1_listen_req.valid), - .m_tcp_1_listen_req_V_V_TREADY(tcp_1_listen_req.ready), - .s_tcp_1_listen_rsp_V_V_TDATA(tcp_1_listen_rsp.data), - .s_tcp_1_listen_rsp_V_V_TVALID(tcp_1_listen_rsp.valid), - .s_tcp_1_listen_rsp_V_V_TREADY(tcp_1_listen_rsp.ready), - .m_tcp_1_open_req_V_TDATA(tcp_1_open_req.data), - .m_tcp_1_open_req_V_TVALID(tcp_1_open_req.valid), - .m_tcp_1_open_req_V_TREADY(tcp_1_open_req.ready), - .s_tcp_1_open_rsp_V_TDATA(tcp_1_open_rsp.data), - .s_tcp_1_open_rsp_V_TVALID(tcp_1_open_rsp.valid), - .s_tcp_1_open_rsp_V_TREADY(tcp_1_open_rsp.ready), - .m_tcp_1_close_req_V_V_TDATA(tcp_1_close_req.data), - .m_tcp_1_close_req_V_V_TVALID(tcp_1_close_req.valid), - .m_tcp_1_close_req_V_V_TREADY(tcp_1_close_req.ready), .s_tcp_1_notify_V_TDATA(tcp_1_notify.data), .s_tcp_1_notify_V_TVALID(tcp_1_notify.valid), .s_tcp_1_notify_V_TREADY(tcp_1_notify.ready), @@ -1210,11 +1062,6 @@ module design_user_wrapper_{{ c_reg }} ( {% endif %} {% endif %} {% if cnfg.en_tcp_0 %} - .tcp_0_listen_req(tcp_0_listen_req), - .tcp_0_listen_rsp(tcp_0_listen_rsp), - .tcp_0_open_req(tcp_0_open_req), - .tcp_0_open_rsp(tcp_0_open_rsp), - .tcp_0_close_req(tcp_0_close_req), .tcp_0_notify(tcp_0_notify), .tcp_0_rd_pkg(tcp_0_rd_pkg), .tcp_0_rx_meta(tcp_0_rx_meta), @@ -1224,11 +1071,6 @@ module design_user_wrapper_{{ c_reg }} ( .axis_tcp_0_src(axis_tcp_0_src), {% endif %} {% if cnfg.en_tcp_1 %} - .tcp_1_listen_req(tcp_1_listen_req), - .tcp_1_listen_rsp(tcp_1_listen_rsp), - .tcp_1_open_req(tcp_1_open_req), - .tcp_1_open_rsp(tcp_1_open_rsp), - .tcp_1_close_req(tcp_1_close_req), .tcp_1_notify(tcp_1_notify), .tcp_1_rd_pkg(tcp_1_rd_pkg), .tcp_1_rx_meta(tcp_1_rx_meta), diff --git a/hw/scripts/wr_hdl/template_user/tmp_user_hls.cpp b/hw/scripts/wr_hdl/template_user/tmp_user_hls.cpp index 42f8b97..973f1f2 100644 --- a/hw/scripts/wr_hdl/template_user/tmp_user_hls.cpp +++ b/hw/scripts/wr_hdl/template_user/tmp_user_hls.cpp @@ -66,11 +66,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_0 // TCP/IP descriptors - hls::stream& tcp_0_listen_req, - hls::stream& tcp_0_listen_rsp, - hls::stream& tcp_0_open_req, - hls::stream& tcp_0_open_rsp, - hls::stream& tcp_0_close_req, hls::stream& tcp_0_notify, hls::stream& tcp_0_rd_package, hls::stream& tcp_0_rx_meta, @@ -84,11 +79,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_1 // TCP/IP descriptors - hls::stream& tcp_1_listen_req, - hls::stream& tcp_1_listen_rsp, - hls::stream& tcp_1_open_req, - hls::stream& tcp_1_open_rsp, - hls::stream& tcp_1_close_req, hls::stream& tcp_1_notify, hls::stream& tcp_1_rd_package, hls::stream& tcp_1_rx_meta, @@ -153,11 +143,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_0 - #pragma HLS INTERFACE axis register port=tcp_0_listen_req name=m_tcp_0_listen_req - #pragma HLS INTERFACE axis register port=tcp_0_listen_rsp name=s_tcp_0_listen_rsp - #pragma HLS INTERFACE axis register port=tcp_0_open_req name=m_tcp_0_open_req - #pragma HLS INTERFACE axis register port=tcp_0_open_rsp name=s_tcp_0_open_rsp - #pragma HLS INTERFACE axis register port=tcp_0_close_req name=m_tcp_0_close_req #pragma HLS INTERFACE axis register port=tcp_0_notify name=s_tcp_0_notify #pragma HLS INTERFACE axis register port=tcp_0_rd_pkg name=m_tcp_0_rd_pkg #pragma HLS INTERFACE axis register port=tcp_0_rx_meta name=m_tcp_0_rx_meta @@ -165,11 +150,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #pragma HLS INTERFACE axis register port=tcp_0_tx_stat name=s_tcp_0_tx_stat #pragma HLS INTERFACE axis register port=axis_tcp_0_src name=m_axis_tcp_0_src #pragma HLS INTERFACE axis register port=axis_tcp_0_sink name=s_axis_tcp_0_sink - #pragma HLS aggregate variable=tcp_0_listen_req compact=bit - #pragma HLS aggregate variable=tcp_0_listen_rsp compact=bit - #pragma HLS aggregate variable=tcp_0_open_req compact=bit - #pragma HLS aggregate variable=tcp_0_open_rsp compact=bit - #pragma HLS aggregate variable=tcp_0_close_req compact=bit #pragma HLS aggregate variable=tcp_0_notify compact=bit #pragma HLS aggregate variable=tcp_0_rd_pkg compact=bit #pragma HLS aggregate variable=tcp_0_rx_meta compact=bit @@ -178,11 +158,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_1 - #pragma HLS INTERFACE axis register port=tcp_1_listen_req name=m_tcp_1_listen_req - #pragma HLS INTERFACE axis register port=tcp_1_listen_rsp name=s_tcp_1_listen_rsp - #pragma HLS INTERFACE axis register port=tcp_1_open_req name=m_tcp_1_open_req - #pragma HLS INTERFACE axis register port=tcp_1_open_rsp name=s_tcp_1_open_rsp - #pragma HLS INTERFACE axis register port=tcp_1_close_req name=m_tcp_1_close_req #pragma HLS INTERFACE axis register port=tcp_1_notify name=s_tcp_1_notify #pragma HLS INTERFACE axis register port=tcp_1_rd_pkg name=m_tcp_1_rd_pkg #pragma HLS INTERFACE axis register port=tcp_1_rx_meta name=m_tcp_1_rx_meta @@ -190,11 +165,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #pragma HLS INTERFACE axis register port=tcp_1_tx_stat name=s_tcp_1_tx_stat #pragma HLS INTERFACE axis register port=axis_tcp_1_src name=m_axis_tcp_1_src #pragma HLS INTERFACE axis register port=axis_tcp_1_sink name=s_axis_tcp_1_sink - #pragma HLS aggregate variable=tcp_1_listen_req compact=bit - #pragma HLS aggregate variable=tcp_1_listen_rsp compact=bit - #pragma HLS aggregate variable=tcp_1_open_req compact=bit - #pragma HLS aggregate variable=tcp_1_open_rsp compact=bit - #pragma HLS aggregate variable=tcp_1_close_req compact=bit #pragma HLS aggregate variable=tcp_1_notify compact=bit #pragma HLS aggregate variable=tcp_1_rd_pkg compact=bit #pragma HLS aggregate variable=tcp_1_rx_meta compact=bit @@ -249,11 +219,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_0 - tcp_0_listen_req.write(tcpListenReqIntf()); - tcpListenRspIntf tmp_tcp_0_listen_rsp = tcp_0_listen_rsp.read(); - tcp_0_open_req.write(tcpOpenReqIntf()); - tcpOpenRspIntf tmp_tcp_0_open_rsp = tcp_0_open_rsp.read(); - tcp_0_close_req.write(tcpCloseReqIntf()); tcpNotifyIntf tmp_tcp_0_notify = tcp_0_notify.read(); tcp_0_rd_pkg.write(tcpRdPkgIntf()); tcp_0_rx_meta.write(tcpRxMetaIntf()); @@ -264,11 +229,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_1 - tcp_1_listen_req.write(tcpListenReqIntf()); - tcpListenRspIntf tmp_tcp_1_listen_rsp = tcp_1_listen_rsp.read(); - tcp_1_open_req.write(tcpOpenReqIntf()); - tcpOpenRspIntf tmp_tcp_1_open_rsp = tcp_1_open_rsp.read(); - tcp_1_close_req.write(tcpCloseReqIntf()); tcpNotifyIntf tmp_tcp_1_notify = tcp_1_notify.read(); tcp_1_rd_pkg.write(tcpRdPkgIntf()); tcp_1_rx_meta.write(tcpRxMetaIntf()); @@ -335,11 +295,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_0 // TCP/IP descriptors - hls::stream& tcp_0_listen_req, - hls::stream& tcp_0_listen_rsp, - hls::stream& tcp_0_open_req, - hls::stream& tcp_0_open_rsp, - hls::stream& tcp_0_close_req, hls::stream& tcp_0_notify, hls::stream& tcp_0_rd_package, hls::stream& tcp_0_rx_meta, @@ -353,11 +308,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_1 // TCP/IP descriptors - hls::stream& tcp_1_listen_req, - hls::stream& tcp_1_listen_rsp, - hls::stream& tcp_1_open_req, - hls::stream& tcp_1_open_rsp, - hls::stream& tcp_1_close_req, hls::stream& tcp_1_notify, hls::stream& tcp_1_rd_package, hls::stream& tcp_1_rx_meta, @@ -422,11 +372,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_0 - #pragma HLS INTERFACE axis register port=tcp_0_listen_req name=m_tcp_0_listen_req - #pragma HLS INTERFACE axis register port=tcp_0_listen_rsp name=s_tcp_0_listen_rsp - #pragma HLS INTERFACE axis register port=tcp_0_open_req name=m_tcp_0_open_req - #pragma HLS INTERFACE axis register port=tcp_0_open_rsp name=s_tcp_0_open_rsp - #pragma HLS INTERFACE axis register port=tcp_0_close_req name=m_tcp_0_close_req #pragma HLS INTERFACE axis register port=tcp_0_notify name=s_tcp_0_notify #pragma HLS INTERFACE axis register port=tcp_0_rd_pkg name=m_tcp_0_rd_pkg #pragma HLS INTERFACE axis register port=tcp_0_rx_meta name=m_tcp_0_rx_meta @@ -434,11 +379,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #pragma HLS INTERFACE axis register port=tcp_0_tx_stat name=s_tcp_0_tx_stat #pragma HLS INTERFACE axis register port=axis_tcp_0_src name=m_axis_tcp_0_src #pragma HLS INTERFACE axis register port=axis_tcp_0_sink name=s_axis_tcp_0_sink - #pragma HLS DATA_PACK variable=tcp_0_listen_req - #pragma HLS DATA_PACK variable=tcp_0_listen_rsp - #pragma HLS DATA_PACK variable=tcp_0_open_req - #pragma HLS DATA_PACK variable=tcp_0_open_rsp - #pragma HLS DATA_PACK variable=tcp_0_close_req #pragma HLS DATA_PACK variable=tcp_0_notify #pragma HLS DATA_PACK variable=tcp_0_rd_pkg #pragma HLS DATA_PACK variable=tcp_0_rx_meta @@ -447,11 +387,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_1 - #pragma HLS INTERFACE axis register port=tcp_1_listen_req name=m_tcp_1_listen_req - #pragma HLS INTERFACE axis register port=tcp_1_listen_rsp name=s_tcp_1_listen_rsp - #pragma HLS INTERFACE axis register port=tcp_1_open_req name=m_tcp_1_open_req - #pragma HLS INTERFACE axis register port=tcp_1_open_rsp name=s_tcp_1_open_rsp - #pragma HLS INTERFACE axis register port=tcp_1_close_req name=m_tcp_1_close_req #pragma HLS INTERFACE axis register port=tcp_1_notify name=s_tcp_1_notify #pragma HLS INTERFACE axis register port=tcp_1_rd_pkg name=m_tcp_1_rd_pkg #pragma HLS INTERFACE axis register port=tcp_1_rx_meta name=m_tcp_1_rx_meta @@ -459,11 +394,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #pragma HLS INTERFACE axis register port=tcp_1_tx_stat name=s_tcp_1_tx_stat #pragma HLS INTERFACE axis register port=axis_tcp_1_src name=m_axis_tcp_1_src #pragma HLS INTERFACE axis register port=axis_tcp_1_sink name=s_axis_tcp_1_sink - #pragma HLS DATA_PACK variable=tcp_1_listen_req - #pragma HLS DATA_PACK variable=tcp_1_listen_rsp - #pragma HLS DATA_PACK variable=tcp_1_open_req - #pragma HLS DATA_PACK variable=tcp_1_open_rsp - #pragma HLS DATA_PACK variable=tcp_1_close_req #pragma HLS DATA_PACK variable=tcp_1_notify #pragma HLS DATA_PACK variable=tcp_1_rd_pkg #pragma HLS DATA_PACK variable=tcp_1_rx_meta @@ -518,11 +448,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_0 - tcp_0_listen_req.write(tcpListenReqIntf()); - tcpListenRspIntf tmp_tcp_0_listen_rsp = tcp_0_listen_rsp.read(); - tcp_0_open_req.write(tcpOpenReqIntf()); - tcpOpenRspIntf tmp_tcp_0_open_rsp = tcp_0_open_rsp.read(); - tcp_0_close_req.write(tcpCloseReqIntf()); tcpNotifyIntf tmp_tcp_0_notify = tcp_0_notify.read(); tcp_0_rd_pkg.write(tcpRdPkgIntf()); tcp_0_rx_meta.write(tcpRxMetaIntf()); @@ -533,11 +458,6 @@ void design_user_hls_c0_0_top ( // TODO: Adjust the vFPGA ids #endif #ifdef EN_TCP_1 - tcp_1_listen_req.write(tcpListenReqIntf()); - tcpListenRspIntf tmp_tcp_1_listen_rsp = tcp_1_listen_rsp.read(); - tcp_1_open_req.write(tcpOpenReqIntf()); - tcpOpenRspIntf tmp_tcp_1_open_rsp = tcp_1_open_rsp.read(); - tcp_1_close_req.write(tcpCloseReqIntf()); tcpNotifyIntf tmp_tcp_1_notify = tcp_1_notify.read(); tcp_1_rd_pkg.write(tcpRdPkgIntf()); tcp_1_rx_meta.write(tcpRxMetaIntf()); diff --git a/hw/scripts/wr_hdl/template_user/tmp_user_logic.sv b/hw/scripts/wr_hdl/template_user/tmp_user_logic.sv index 8eb6161..7e6d023 100644 --- a/hw/scripts/wr_hdl/template_user/tmp_user_logic.sv +++ b/hw/scripts/wr_hdl/template_user/tmp_user_logic.sv @@ -67,11 +67,6 @@ module design_user_logic_c0_0 ( // TODO: Adjust the vFPGA ids `endif `ifdef EN_TCP_0 // TCP/IP QSFP0 CMD - metaIntf.m tcp_0_listen_req, - metaIntf.s tcp_0_listen_rsp, - metaIntf.m tcp_0_open_req, - metaIntf.s tcp_0_open_rsp, - metaIntf.m tcp_0_close_req, metaIntf.s tcp_0_notify, metaIntf.m tcp_0_rd_pkg, metaIntf.s tcp_0_rx_meta, @@ -85,11 +80,6 @@ module design_user_logic_c0_0 ( // TODO: Adjust the vFPGA ids `endif `ifdef EN_TCP_1 // TCP/IP QSFP1 CMD - metaIntf.m tcp_1_listen_req, - metaIntf.s tcp_1_listen_rsp, - metaIntf.m tcp_1_open_req, - metaIntf.s tcp_1_open_rsp, - metaIntf.m tcp_1_close_req, metaIntf.s tcp_1_notify, metaIntf.m tcp_1_rd_pkg, metaIntf.s tcp_1_rx_meta, @@ -143,11 +133,6 @@ module design_user_logic_c0_0 ( // TODO: Adjust the vFPGA ids `endif `endif `ifdef EN_TCP_0 -//always_comb tcp_0_listen_req.tie_off_m(); -//always_comb tcp_0_listen_rsp.tie_off_s(); -//always_comb tcp_0_open_req.tie_off_m(); -//always_comb tcp_0_open_rsp.tie_off_s(); -//always_comb tcp_0_close_req.tie_off_m(); //always_comb tcp_0_notify.tie_off_s(); //always_comb tcp_0_rd_pkg.tie_off_m(); //always_comb tcp_0_rx_meta.tie_off_s(); @@ -157,11 +142,6 @@ module design_user_logic_c0_0 ( // TODO: Adjust the vFPGA ids //always_comb axis_tcp_0_src.tie_off_m(); `endif `ifdef EN_TCP_1 -//always_comb tcp_1_listen_req.tie_off_m(); -//always_comb tcp_1_listen_rsp.tie_off_s(); -//always_comb tcp_1_open_req.tie_off_m(); -//always_comb tcp_1_open_rsp.tie_off_s(); -//always_comb tcp_1_close_req.tie_off_m(); //always_comb tcp_1_notify.tie_off_s(); //always_comb tcp_1_rd_pkg.tie_off_m(); //always_comb tcp_1_rx_meta.tie_off_s(); diff --git a/sw/examples/perf_rdma/main.cpp b/sw/examples/perf_rdma/main.cpp index 972c66d..2c328bf 100644 --- a/sw/examples/perf_rdma/main.cpp +++ b/sw/examples/perf_rdma/main.cpp @@ -83,7 +83,7 @@ int main(int argc, char *argv[]) bool oper = defOper; bool mstr = true; - char const* env_var_ip = std::getenv("FPGA_0_IP_ADDRESS"); + char const* env_var_ip = std::getenv("DEVICE_1_IP_ADDRESS_0"); if(env_var_ip == nullptr) throw std::runtime_error("IBV IP address not provided"); string ibv_ip(env_var_ip); diff --git a/sw/examples/perf_tcp/main.cpp b/sw/examples/perf_tcp/main.cpp index 6b97b3f..9f44556 100644 --- a/sw/examples/perf_tcp/main.cpp +++ b/sw/examples/perf_tcp/main.cpp @@ -40,8 +40,6 @@ int main(int argc, char *argv[]) // Read arguments boost::program_options::options_description programDescription("Options:"); programDescription.add_options() - ("useConn,c", boost::program_options::value(), "Number of connections") - ("useIpAddr,i", boost::program_options::value(), "Number of IP addresses") ("port,p", boost::program_options::value(), "Port number") ("pkgWordCount,w", boost::program_options::value(), "Number of 512-bit work in a packet") ("timeInSeconds,t", boost::program_options::value(), "Time in second") @@ -54,25 +52,20 @@ int main(int argc, char *argv[]) boost::program_options::notify(commandLineArgs); // Stat - uint32_t target_ip = 0x0A01D498; - uint64_t useConn = 1; - uint64_t useIpAddr = 1; + uint32_t target_ip = 0x0AFD4A68; //0x0A01D498; uint64_t port = 5001; uint64_t pkgWordCount = 64; uint64_t timeInSeconds = 1; uint64_t timeInCycles; - uint64_t dualModeEn = 64; - uint64_t packetGap = 0; uint64_t server = 0; uint64_t transferBytes = 1024; + uint32_t session = 0; // Runs - char const* env_var_ip = std::getenv("FPGA_0_IP_ADDRESS"); + char const* env_var_ip = std::getenv("DEVICE_1_IP_ADDRESS_0"); if(env_var_ip == nullptr) throw std::runtime_error("Local IP address not provided"); string local_ip(env_var_ip); - if(commandLineArgs.count("useConn") > 0) useConn = commandLineArgs["useConn"].as(); - if(commandLineArgs.count("useIpAddr") > 0) useIpAddr = commandLineArgs["useIpAddr"].as(); if(commandLineArgs.count("port") > 0) port = commandLineArgs["port"].as(); if(commandLineArgs.count("pkgWordCount") > 0) pkgWordCount = commandLineArgs["pkgWordCount"].as(); if(commandLineArgs.count("timeInSeconds") > 0) timeInSeconds = commandLineArgs["timeInSeconds"].as(); @@ -82,37 +75,47 @@ int main(int argc, char *argv[]) timeInCycles = timeInSeconds * freq * 1000000; - printf("usecon:%ld, useIP:%ld, pkgWordCount:%ld,port:%ld, local ip:%s, target ip:%x, time:%ld, is server:%ld, transferBytes:%ld\n", useConn, useIpAddr, pkgWordCount, port, local_ip, target_ip, timeInCycles, server, transferBytes); - + std::cout << "pkgWordCount:" << pkgWordCount << ", port:" << port << ", local ip:" << local_ip + << ", target ip:" << target_ip << std::dec << ", time:" << timeInCycles + << ", is server:" << server << ", transferBytes:" << transferBytes << std::endl; + // FPGA handles cProcess cproc(targetRegion, getpid()); - // ARP lookup - // cproc.doArpLookup(); + /** * -- Register map - * 0 (WO) : Control - * 1 (RO) : Status - * 2 (RW) : useConn - * 3 (RW) : useIpAddr - * 4 (RW) : pkgWordCount - * 5 (RW) : basePort - * 6 (RW) : baseIpAddr - * 7 (RW) : transferSize - * 8 (RW) : isServer - * 9 (RW) : timeInSeconds - * 10 (RW) : timeInCycles - * 11 (R) : execution_cycles - * 12 (R) : consumed_bytes - * 13 (R) : produced_bytes - * 14 (R) : openCon_cycles +/ 0 (WO) : Control +/ 1 (RO) : Status +/ 2 (RW) : useConn +/ 3 (RW) : useIpAddr +/ 4 (RW) : pkgWordCount +/ 5 (RW) : basePort +/ 6 (RW) : baseIpAddr +/ 7 (RW) : transferSize +/ 8 (RW) : isServer +/ 9 (RW) : timeInSeconds +/ 10 (RW) : timeInCycles +/ 11 (R) : execution_cycles +/ 12 (R) : consumed_bytes +/ 13 (R) : produced_bytes +/ 15 (RW) : sessionID */ - cproc.setCSR(useConn, 2); - cproc.setCSR(useIpAddr, 3); + + bool success = false; + + success = cproc.tcpOpenPort(port); + std::cout<<"TCP open port:"< #include #include +#include + namespace fpga { @@ -47,6 +49,15 @@ public: ibvQp() : id(curr_id++) {} inline uint32_t getId() { return id; } + + void print() { + std::cout << "Queue Pair: " + << "id: " << id << std::endl; + std::cout << "Local Queue: "; + local.print("local"); // Call the print function of ibvQ to print local queue variables + std::cout << "Remote Queue: "; + remote.print("remote"); // Call the print function of ibvQ to print remote queue variables + } }; /** diff --git a/sw/src/cProcess.cpp b/sw/src/cProcess.cpp index a61095d..db4dbd7 100644 --- a/sw/src/cProcess.cpp +++ b/sw/src/cProcess.cpp @@ -826,6 +826,97 @@ void cProcess::writeConnContext(ibvQp *qp, uint32_t port) { } } +/** +* @brief TCP Open Connection +*/ + +bool cProcess::tcpOpenCon(uint32_t ip, uint32_t port, uint32_t* session){ + // open connection + uint64_t open_con_req; + uint64_t open_con_sts = 0; + uint32_t success = 0; + uint32_t sts_ip, dst_ip; + uint32_t sts_port, dst_port; + uint32_t sts_valid; + + dst_ip = ip; + dst_port = port; + open_con_req = (uint32_t)dst_ip | ((uint64_t)dst_port << 32); + printf("open con req: %lx, dst ip:%x, dst port:%x\n", open_con_req, dst_ip, dst_port); + fflush(stdout); + + success = 0; + double timeoutMs = 5000.0; + double durationMs = 0.0; + auto start = std::chrono::high_resolution_clock::now(); + if(fcnfg.en_avx) { + cnfg_reg_avx[static_cast(CnfgAvxRegs::TCP_OPEN_CON_REG) + fcnfg.qsfp_offs] = _mm256_set_epi64x(0, 0, 0, open_con_req); + } else { + cnfg_reg[static_cast(CnfgLegRegs::TCP_OPEN_CON_REG) + fcnfg.qsfp_offs] = open_con_req; + } + while (success == 0 && durationMs < timeoutMs) + { + std::this_thread::sleep_for(1000ms); + + if(fcnfg.en_avx) { + open_con_sts = _mm256_extract_epi64(cnfg_reg_avx[static_cast(CnfgAvxRegs::TCP_OPEN_CON_STS_REG) + fcnfg.qsfp_offs], 0x0); + } else { + open_con_sts = cnfg_reg[static_cast(CnfgLegRegs::TCP_OPEN_CON_STS_REG) + fcnfg.qsfp_offs]; + } + *session = open_con_sts & 0x0000000000007FFF; + sts_valid = (open_con_sts & 0x0000000000008000) >> 15; + sts_ip = (open_con_sts & 0x0000FFFFFFFF0000) >> 16; + sts_port = (open_con_sts >> 48); + if ((sts_valid == 1) && (sts_ip == ip) && (sts_port == port)) + { + success = 1; + } + else + success = 0; + auto end = std::chrono::high_resolution_clock::now(); + durationMs = (std::chrono::duration_cast(end-start).count() / 1000000.0); + } + printf("open con sts session:%x, success:%x, sts_ip:%x, sts_port:%x, duration[ms]:%f\n", *session, success, sts_ip, sts_port, durationMs); + fflush(stdout); + + return success; + +} + +/** +* @brief TCP Open Port +*/ + +bool cProcess::tcpOpenPort(uint32_t port){ + uint64_t open_port_status; + uint64_t open_port = port; + if(fcnfg.en_avx) { + cnfg_reg_avx[static_cast(CnfgAvxRegs::TCP_OPEN_PORT_REG) + fcnfg.qsfp_offs] = _mm256_set_epi64x(0, 0, 0, open_port); + } else { + cnfg_reg[static_cast(CnfgLegRegs::TCP_OPEN_PORT_REG) + fcnfg.qsfp_offs] = open_port; + } + + std::this_thread::sleep_for(10ms); + if(fcnfg.en_avx) { + open_port_status = _mm256_extract_epi64(cnfg_reg_avx[static_cast(CnfgAvxRegs::TCP_OPEN_PORT_STS_REG) + fcnfg.qsfp_offs], 0x0); + } else { + open_port_status = cnfg_reg[static_cast(CnfgLegRegs::TCP_OPEN_PORT_STS_REG) + fcnfg.qsfp_offs]; + } + + printf("open port: %lu, status: %lx\n", open_port, open_port_status); + fflush(stdout); + + return (bool)open_port_status; +} + +/** +* @brief TCP Close Connection +*/ + +void cProcess::tcpCloseCon(uint32_t session){ + // todo +} + /** * @brief Network dropper * diff --git a/sw/src/ibvQpConn.cpp b/sw/src/ibvQpConn.cpp index 1b52b8d..0d64814 100644 --- a/sw/src/ibvQpConn.cpp +++ b/sw/src/ibvQpConn.cpp @@ -40,6 +40,19 @@ ibvQpConn::ibvQpConn(int32_t vfid, string ip_addr, uint32_t n_pages) { initLocalQueue(ip_addr); } +/** + * Ctor with user provided cProc + * @param: fdev - attached vFPGA + * @param: n_pages - number of buffer pages + */ +ibvQpConn::ibvQpConn(cProcess* cproc, string ip_addr, uint32_t n_pages): fdev(cproc), n_pages(n_pages) { + // Conn + is_connected = false; + + // Initialize local queues + initLocalQueue(ip_addr); +} + /** * Dtor */ @@ -94,7 +107,7 @@ void ibvQpConn::initLocalQueue(string ip_addr) { qpair->local.uintToGid(24, ibv_ip_addr); // qpn and psn - qpair->local.qpn = ((fdev->getVfid() & nRegMask) << pidBits) || (fdev->getCpid() & pidMask); + qpair->local.qpn = ((fdev->getVfid() & nRegMask) << pidBits) | (fdev->getCpid() & pidMask); if(qpair->local.qpn == -1) throw std::runtime_error("Coyote PID incorrect, vfid: " + fdev->getVfid()); qpair->local.psn = distr(rand_gen) & 0xFFFFFF;