merge with tcp.

This commit is contained in:
kodario 2023-08-08 15:24:48 +02:00
commit 42e63d5850
32 changed files with 1363 additions and 928 deletions

View File

@ -95,8 +95,9 @@ 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)"'
#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 " ** "
@ -104,8 +105,8 @@ if [ $DRV_INSERT -eq 1 ]; then
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

View File

@ -12,7 +12,31 @@ module meta_queue #(
metaIntf.m m_meta
);
if(DATA_BITS == 32) begin
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),
@ -24,6 +48,30 @@ if(DATA_BITS == 32) begin
.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),
.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 == 96) begin
axis_data_fifo_meta_96 inst_meta (
.s_axis_aresetn(aresetn),

View File

@ -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

View File

@ -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]),

View File

@ -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

View File

@ -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 (

View File

@ -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

View File

@ -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),

View File

@ -47,20 +47,6 @@ void status_handler(hls::stream<appTxRsp>& txStatus,
}
}
//Buffers open status coming from the TCP stack
void openStatus_handler(hls::stream<openStatus>& openConStatus,
hls::stream<openStatus>& 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<appTxMeta>& txMetaDataBuffer,
hls::stream<appTxMeta>& txMetaData)
@ -217,9 +203,7 @@ void client(
template <int WIDTH>
void server( hls::stream<ap_uint<16> >& listenPort,
hls::stream<bool>& listenPortStatus,
hls::stream<appNotification>& notifications,
void server( hls::stream<appNotification>& notifications,
hls::stream<appReadRequest>& readRequest,
hls::stream<ap_uint<16> >& rxMetaData,
hls::stream<net_axis<WIDTH> >& rxData)
@ -227,30 +211,8 @@ void server( hls::stream<ap_uint<16> >& 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())
{
@ -290,9 +252,7 @@ void server( hls::stream<ap_uint<16> >& listenPort,
#if defined( __VITIS_HLS__)
void send_recv( hls::stream<ap_uint<16> >& listenPort,
hls::stream<bool>& listenPortStatus,
hls::stream<appNotification>& notifications,
void send_recv( hls::stream<appNotification>& notifications,
hls::stream<appReadRequest>& readRequest,
hls::stream<ap_uint<16> >& rxMetaData,
hls::stream<ap_axiu<DATA_WIDTH, 0, 0, 0> >& rxData,
@ -309,9 +269,6 @@ void send_recv( hls::stream<ap_uint<16> >& 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<ap_uint<16> >& listenPort,
/*
* Server
*/
server<DATA_WIDTH>( listenPort,
listenPortStatus,
server<DATA_WIDTH>(
notifications,
readRequest,
rxMetaData,
@ -385,9 +341,7 @@ void send_recv( hls::stream<ap_uint<16> >& listenPort,
}
#else
void send_recv( hls::stream<ap_uint<16> >& listenPort,
hls::stream<bool>& listenPortStatus,
hls::stream<appNotification>& notifications,
void send_recv( hls::stream<appNotification>& notifications,
hls::stream<appReadRequest>& readRequest,
hls::stream<ap_uint<16> >& rxMetaData,
hls::stream<net_axis<DATA_WIDTH> >& rxData,
@ -404,9 +358,6 @@ void send_recv( hls::stream<ap_uint<16> >& 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<ap_uint<16> >& listenPort,
/*
* Server
*/
server<DATA_WIDTH>( listenPort,
listenPortStatus,
server<DATA_WIDTH>(
notifications,
readRequest,
rxMetaData,

View File

@ -83,8 +83,7 @@ public:
};
void send_recv( hls::stream<ap_uint<16> >& listenPort,
hls::stream<bool>& listenPortStatus,
void send_recv(
hls::stream<appNotification>& notifications,
hls::stream<appReadRequest>& readRequest,
hls::stream<ap_uint<16> >& rxMetaData,

View File

@ -35,8 +35,6 @@ using namespace hls;
int main()
{
hls::stream<ap_uint<16> > listenPort("listenPort");
hls::stream<bool> listenPortStatus("listenPortStatus");
hls::stream<appNotification> notifications("notifications");
hls::stream<appReadRequest> readRequest("readRequest");
hls::stream<ap_uint<16> > rxMetaData("rxMetaData");
@ -74,9 +72,7 @@ int main()
{
runExperiment = 1;
}
send_recv( listenPort,
listenPortStatus,
notifications,
send_recv( notifications,
readRequest,
rxMetaData,
rxData,
@ -90,14 +86,6 @@ int main()
);
if (!listenPort.empty())
{
ap_uint<16> port = listenPort.read();
std::cout << "Port " << port << " openend." << std::endl;
listenPortStatus.write(true);
}
if (!txMetaData.empty())
{
appTxMeta meta = txMetaData.read();

View File

@ -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),

View File

@ -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
);

View File

@ -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

View File

@ -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

View File

@ -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;
@ -518,6 +765,54 @@ always_ff @(posedge aclk) 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

View File

@ -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" {

View File

@ -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]

View File

@ -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]),
@ -949,13 +932,28 @@ module design_dynamic_wrapper #(
);
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]),
@ -1203,6 +1179,26 @@ module design_dynamic_wrapper #(
);
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
// ----------------------------------------------------------------------
metaIntf #(.STYPE(tcp_listen_req_t)) tcp_1_listen_req_ul[N_REGIONS]();
@ -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),

View File

@ -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<rdmaIntf>& rdma_0_rq,
// hls::stream<rdmaIntf>& rdma_0_rq,
hls::stream<rdmaIntf>& rdma_0_sq,
hls::stream<ackIntf>& 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<rdmaIntf>& rdma_1_rq,
// hls::stream<rdmaIntf>& rdma_1_rq,
hls::stream<rdmaIntf>& rdma_1_sq,
hls::stream<ackIntf>& 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<tcpListenReqIntf>& tcp_0_listen_req,
hls::stream<tcpListenRspIntf>& tcp_0_listen_rsp,
hls::stream<tcpOpenReqIntf>& tcp_0_open_req,
hls::stream<tcpOpenRspIntf>& tcp_0_open_rsp,
hls::stream<tcpCloseReqIntf>& tcp_0_close_req,
hls::stream<tcpNotifyIntf>& tcp_0_notify,
hls::stream<tcpRdPkgIntf>& tcp_0_rd_package,
hls::stream<tcpRxMetaIntf>& 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<tcpListenReqIntf>& tcp_1_listen_req,
hls::stream<tcpListenRspIntf>& tcp_1_listen_rsp,
hls::stream<tcpOpenReqIntf>& tcp_1_open_req,
hls::stream<tcpOpenRspIntf>& tcp_1_open_rsp,
hls::stream<tcpCloseReqIntf>& tcp_1_close_req,
hls::stream<tcpNotifyIntf>& tcp_1_notify,
hls::stream<tcpRdPkgIntf>& tcp_1_rd_package,
hls::stream<tcpRxMetaIntf>& 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<AXI_DATA_BITS, 0, PID_BITS, 0>());
{% 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<AXI_DATA_BITS, 0, PID_BITS, 0>());
{% 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<tcpListenReqIntf>& tcp_0_listen_req,
hls::stream<tcpListenRspIntf>& tcp_0_listen_rsp,
hls::stream<tcpOpenReqIntf>& tcp_0_open_req,
hls::stream<tcpOpenRspIntf>& tcp_0_open_rsp,
hls::stream<tcpCloseReqIntf>& tcp_0_close_req,
hls::stream<tcpNotifyIntf>& tcp_0_notify,
hls::stream<tcpRdPkgIntf>& tcp_0_rd_package,
hls::stream<tcpRxMetaIntf>& 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<tcpListenReqIntf>& tcp_1_listen_req,
hls::stream<tcpListenRspIntf>& tcp_1_listen_rsp,
hls::stream<tcpOpenReqIntf>& tcp_1_open_req,
hls::stream<tcpOpenRspIntf>& tcp_1_open_rsp,
hls::stream<tcpCloseReqIntf>& tcp_1_close_req,
hls::stream<tcpNotifyIntf>& tcp_1_notify,
hls::stream<tcpRdPkgIntf>& tcp_1_rd_package,
hls::stream<tcpRxMetaIntf>& 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());

View File

@ -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();

View File

@ -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),

View File

@ -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<tcpListenReqIntf>& tcp_0_listen_req,
hls::stream<tcpListenRspIntf>& tcp_0_listen_rsp,
hls::stream<tcpOpenReqIntf>& tcp_0_open_req,
hls::stream<tcpOpenRspIntf>& tcp_0_open_rsp,
hls::stream<tcpCloseReqIntf>& tcp_0_close_req,
hls::stream<tcpNotifyIntf>& tcp_0_notify,
hls::stream<tcpRdPkgIntf>& tcp_0_rd_package,
hls::stream<tcpRxMetaIntf>& 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<tcpListenReqIntf>& tcp_1_listen_req,
hls::stream<tcpListenRspIntf>& tcp_1_listen_rsp,
hls::stream<tcpOpenReqIntf>& tcp_1_open_req,
hls::stream<tcpOpenRspIntf>& tcp_1_open_rsp,
hls::stream<tcpCloseReqIntf>& tcp_1_close_req,
hls::stream<tcpNotifyIntf>& tcp_1_notify,
hls::stream<tcpRdPkgIntf>& tcp_1_rd_package,
hls::stream<tcpRxMetaIntf>& 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<tcpListenReqIntf>& tcp_0_listen_req,
hls::stream<tcpListenRspIntf>& tcp_0_listen_rsp,
hls::stream<tcpOpenReqIntf>& tcp_0_open_req,
hls::stream<tcpOpenRspIntf>& tcp_0_open_rsp,
hls::stream<tcpCloseReqIntf>& tcp_0_close_req,
hls::stream<tcpNotifyIntf>& tcp_0_notify,
hls::stream<tcpRdPkgIntf>& tcp_0_rd_package,
hls::stream<tcpRxMetaIntf>& 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<tcpListenReqIntf>& tcp_1_listen_req,
hls::stream<tcpListenRspIntf>& tcp_1_listen_rsp,
hls::stream<tcpOpenReqIntf>& tcp_1_open_req,
hls::stream<tcpOpenRspIntf>& tcp_1_open_rsp,
hls::stream<tcpCloseReqIntf>& tcp_1_close_req,
hls::stream<tcpNotifyIntf>& tcp_1_notify,
hls::stream<tcpRdPkgIntf>& tcp_1_rd_package,
hls::stream<tcpRxMetaIntf>& 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());

View File

@ -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();

View File

@ -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);

View File

@ -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<uint64_t>(), "Number of connections")
("useIpAddr,i", boost::program_options::value<uint64_t>(), "Number of IP addresses")
("port,p", boost::program_options::value<uint64_t>(), "Port number")
("pkgWordCount,w", boost::program_options::value<uint64_t>(), "Number of 512-bit work in a packet")
("timeInSeconds,t", boost::program_options::value<uint64_t>(), "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<uint64_t>();
if(commandLineArgs.count("useIpAddr") > 0) useIpAddr = commandLineArgs["useIpAddr"].as<uint64_t>();
if(commandLineArgs.count("port") > 0) port = commandLineArgs["port"].as<uint64_t>();
if(commandLineArgs.count("pkgWordCount") > 0) pkgWordCount = commandLineArgs["pkgWordCount"].as<uint64_t>();
if(commandLineArgs.count("timeInSeconds") > 0) timeInSeconds = commandLineArgs["timeInSeconds"].as<uint64_t>();
@ -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:"<<port<<", success:"<<success<<std::endl;
if(server == 0)
{
success = cproc.tcpOpenCon(target_ip, port, &session);
std::cout<<"TCP open Connection: target ip:"<<target_ip<<", port:"<<port<<", session:"<<session<<", success:"<<success<<std::endl;
cproc.setCSR((uint64_t)session, 15);
}
cproc.setCSR(pkgWordCount, 4);
cproc.setCSR(port, 5);
cproc.setCSR(target_ip, 6);
cproc.setCSR(transferBytes, 7);
cproc.setCSR(server, 8);
cproc.setCSR(timeInSeconds, 9);
@ -134,11 +137,10 @@ int main(int argc, char *argv[])
if(server == 0) {
uint64_t tx_bytes = cproc.getCSR(13);
uint64_t openCon_cycles = cproc.getCSR(14);
uint64_t total_cycles = cproc.getCSR(11);
uint64_t cycles = (total_cycles - openCon_cycles) / 2;
uint64_t cycles = total_cycles / 2;
cout << "tx_bytes: " << tx_bytes << " open con cycles: " << openCon_cycles << " total_cycles: " << total_cycles << " single trip transfer cycle: " << cycles << endl;
cout << "tx_bytes: " << tx_bytes << " total_cycles: " << total_cycles << " single trip transfer cycle: " << cycles << endl;
double throughput = (double)tx_bytes * 8.0 * freq / ((double)cycles*1000.0);
double latency = (double)cycles / freq;
cout << "throughput [gbps]: " << throughput << " latency[us]: " << latency << endl;

View File

@ -160,6 +160,11 @@ enum class CnfgAvxRegs : uint32_t {
RDMA_POST_REG_1 = 18,
RDMA_STAT_REG = 19,
RDMA_CMPLT_REG = 20,
TCP_OPEN_CON_REG = 32,
TCP_OPEN_PORT_REG = 33,
TCP_OPEN_CON_STS_REG = 34,
TCP_OPEN_PORT_STS_REG = 35,
TCP_CLOSE_CON_REG = 36,
STAT_DMA_REG = 64
};
@ -200,7 +205,12 @@ enum class CnfgLegRegs : uint32_t {
RDMA_STAT_POSTED_REG = 42,
RDMA_CMPLT_REG = 43,
STAT_DMA_REG = 64,
STAT_RDMA_REG = 128,
TCP_OPEN_CON_REG = 65,
TCP_OPEN_PORT_REG = 66,
TCP_OPEN_CON_STS_REG = 67,
TCP_OPEN_PORT_STS_REG = 68,
TCP_CLOSE_CON_REG = 69,
STAT_RDMA_REG = 128
};
/**

View File

@ -208,6 +208,25 @@ public:
*/
void netDrop(bool clr, bool dir, uint32_t packet_id);
/**
* @brief TCP Open Connection
*/
bool tcpOpenCon(uint32_t ip, uint32_t port, uint32_t* session);
/**
* @brief TCP Open Port
*/
bool tcpOpenPort(uint32_t port);
/**
* @brief TCP Close Connection
*/
void tcpCloseCon(uint32_t session);
/**
* @brief Debug
*

View File

@ -37,6 +37,7 @@ class ibvQpConn {
public:
ibvQpConn(int32_t vfid, string ip_addr, uint32_t n_pages);
ibvQpConn(cProcess* cproc, string ip_addr, uint32_t n_pages);
~ibvQpConn();
// Connection

View File

@ -6,6 +6,8 @@
#include <string>
#include <cstring>
#include <atomic>
#include <iostream>
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
}
};
/**

View File

@ -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<uint32_t>(CnfgAvxRegs::TCP_OPEN_CON_REG) + fcnfg.qsfp_offs] = _mm256_set_epi64x(0, 0, 0, open_con_req);
} else {
cnfg_reg[static_cast<uint32_t>(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<uint32_t>(CnfgAvxRegs::TCP_OPEN_CON_STS_REG) + fcnfg.qsfp_offs], 0x0);
} else {
open_con_sts = cnfg_reg[static_cast<uint32_t>(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<std::chrono::nanoseconds>(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<uint32_t>(CnfgAvxRegs::TCP_OPEN_PORT_REG) + fcnfg.qsfp_offs] = _mm256_set_epi64x(0, 0, 0, open_port);
} else {
cnfg_reg[static_cast<uint32_t>(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<uint32_t>(CnfgAvxRegs::TCP_OPEN_PORT_STS_REG) + fcnfg.qsfp_offs], 0x0);
} else {
open_port_status = cnfg_reg[static_cast<uint32_t>(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
*

View File

@ -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;