merge with tcp.
This commit is contained in:
commit
42e63d5850
|
@ -95,17 +95,18 @@ if [ $DRV_INSERT -eq 1 ]; then
|
|||
|
||||
echo "*** Rescan PCIe ..."
|
||||
echo " ** "
|
||||
parallel-ssh -H "$hostlist" -x '-tt' 'sudo /opt/cli/program/pci_hot_plug "$(hostname -s)"'
|
||||
|
||||
# read -p "Hot-reset done. Press enter to load the driver or Ctrl-C to exit."
|
||||
#parallel-ssh -H "$hostlist" -x '-tt' 'sudo /opt/cli/program/pci_hot_plug "$(hostname -s)"'
|
||||
# read -p "Hot-reset done. Press enter to load the driver or Ctrl-C to exit."
|
||||
parallel-ssh -H "$hostlist" -x '-tt' 'upstream_port=$(/opt/cli/get/get_fpga_device_param 1 upstream_port) && root_port=$(/opt/cli/get/get_fpga_device_param 1 root_port) && LinkCtl=$(/opt/cli/get/get_fpga_device_param 1 LinkCtl) && sudo /opt/cli/program/pci_hot_plug 1 $upstream_port $root_port $LinkCtl'
|
||||
# read -p "Hot-reset done. Press enter to load the driver or Ctrl-C to exit."
|
||||
echo "*** Compiling the driver ..."
|
||||
echo " ** "
|
||||
parallel-ssh -H "$hostlist" "make -C $BASE_PATH/$DRV_PATH"
|
||||
|
||||
echo "*** Loading the driver ..."
|
||||
echo " ** "
|
||||
qsfp_ip="FPGA_$3_IP_ADDRESS_HEX"
|
||||
qsfp_mac="FPGA_$3_MAC_ADDRESS"
|
||||
qsfp_ip="DEVICE_$3_IP_ADDRESS_HEX"
|
||||
qsfp_mac="DEVICE_$3_MAC_ADDRESS"
|
||||
|
||||
parallel-ssh -H "$hostlist" -x '-tt' "sudo insmod $BASE_PATH/$DRV_PATH/coyote_drv.ko ip_addr_q$3=\$$qsfp_ip mac_addr_q$3=\$$qsfp_mac"
|
||||
parallel-ssh -H "$hostlist" -x '-tt' "sudo /opt/cli/program/fpga_chmod 0"
|
||||
|
@ -119,6 +120,11 @@ if [ $DRV_INSERT -eq 1 ]; then
|
|||
|
||||
echo "*** Driver loaded"
|
||||
echo " ** "
|
||||
|
||||
#parallel-ssh -H "$hostlist" -x '-tt' "sudo insmod $BASE_PATH/$DRV_PATH/coyote_drv.ko ip_addr_q0=$DEVICE_1_IP_ADDRESS_HEX_0 mac_addr_q0=$DEVICE_1_MAC_ADDRESS_0 && "
|
||||
#parallel-ssh -H "$hostlist" -x '-tt' "sudo /opt/cli/program/fpga_chmod 0"
|
||||
#echo "*** Driver loaded"
|
||||
#echo " ** "
|
||||
fi
|
||||
|
||||
|
||||
|
|
|
@ -12,8 +12,56 @@ module meta_queue #(
|
|||
metaIntf.m m_meta
|
||||
);
|
||||
|
||||
if(DATA_BITS == 32) begin
|
||||
axis_data_fifo_meta_32 inst_meta (
|
||||
if(DATA_BITS == 8) begin
|
||||
axis_data_fifo_meta_8 inst_meta (
|
||||
.s_axis_aresetn(aresetn),
|
||||
.s_axis_aclk(aclk),
|
||||
.s_axis_tvalid(s_meta.valid),
|
||||
.s_axis_tready(s_meta.ready),
|
||||
.s_axis_tdata(s_meta.data),
|
||||
.m_axis_tvalid(m_meta.valid),
|
||||
.m_axis_tready(m_meta.ready),
|
||||
.m_axis_tdata(m_meta.data)
|
||||
);
|
||||
end
|
||||
else if(DATA_BITS == 16) begin
|
||||
axis_data_fifo_meta_16 inst_meta (
|
||||
.s_axis_aresetn(aresetn),
|
||||
.s_axis_aclk(aclk),
|
||||
.s_axis_tvalid(s_meta.valid),
|
||||
.s_axis_tready(s_meta.ready),
|
||||
.s_axis_tdata(s_meta.data),
|
||||
.m_axis_tvalid(m_meta.valid),
|
||||
.m_axis_tready(m_meta.ready),
|
||||
.m_axis_tdata(m_meta.data)
|
||||
);
|
||||
end
|
||||
else if(DATA_BITS == 32) begin
|
||||
axis_data_fifo_meta_32 inst_meta (
|
||||
.s_axis_aresetn(aresetn),
|
||||
.s_axis_aclk(aclk),
|
||||
.s_axis_tvalid(s_meta.valid),
|
||||
.s_axis_tready(s_meta.ready),
|
||||
.s_axis_tdata(s_meta.data),
|
||||
.m_axis_tvalid(m_meta.valid),
|
||||
.m_axis_tready(m_meta.ready),
|
||||
.m_axis_tdata(m_meta.data)
|
||||
);
|
||||
end
|
||||
else if(DATA_BITS == 48) begin
|
||||
axis_data_fifo_meta_48 inst_meta (
|
||||
.s_axis_aresetn(aresetn),
|
||||
.s_axis_aclk(aclk),
|
||||
.s_axis_tvalid(s_meta.valid),
|
||||
.s_axis_tready(s_meta.ready),
|
||||
.s_axis_tdata(s_meta.data),
|
||||
.m_axis_tvalid(m_meta.valid),
|
||||
.m_axis_tready(m_meta.ready),
|
||||
.m_axis_tdata(m_meta.data)
|
||||
);
|
||||
end
|
||||
else if(DATA_BITS == 72) begin
|
||||
axis_data_fifo_meta_72 inst_meta (
|
||||
.s_axis_aresetn(aresetn),
|
||||
.s_axis_aclk(aclk),
|
||||
.s_axis_tvalid(s_meta.valid),
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]),
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 (
|
||||
|
|
|
@ -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
|
|
@ -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),
|
||||
|
|
|
@ -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,31 +211,9 @@ 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())
|
||||
{
|
||||
appNotification notification = notifications.read();
|
||||
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
@ -89,14 +85,6 @@ int main()
|
|||
runExperiment
|
||||
);
|
||||
|
||||
|
||||
if (!listenPort.empty())
|
||||
{
|
||||
ap_uint<16> port = listenPort.read();
|
||||
std::cout << "Port " << port << " openend." << std::endl;
|
||||
listenPortStatus.write(true);
|
||||
}
|
||||
|
||||
|
||||
if (!txMetaData.empty())
|
||||
{
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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
|
||||
);
|
||||
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ module send_recv_slave (
|
|||
|
||||
AXI4L.s axi_ctrl,
|
||||
|
||||
output logic ap_start,
|
||||
input logic ap_done,
|
||||
output logic ap_start,
|
||||
input logic ap_done,
|
||||
output logic [31:0] useConn,
|
||||
output logic [31:0] useIpAddr,
|
||||
output logic [31:0] pkgWordCount,
|
||||
|
@ -20,10 +20,10 @@ module send_recv_slave (
|
|||
output logic [31:0] isServer,
|
||||
output logic [31:0] timeInSeconds,
|
||||
output logic [63:0] timeInCycles,
|
||||
output logic [31:0] sessionID,
|
||||
input logic [63:0] execution_cycles,
|
||||
input logic [63:0] consumed_bytes,
|
||||
input logic [63:0] produced_bytes,
|
||||
input logic [63:0] openCon_cycles
|
||||
input logic [63:0] produced_bytes
|
||||
);
|
||||
|
||||
// `define DEBUG_CNFG_SLAVE
|
||||
|
@ -32,7 +32,7 @@ module send_recv_slave (
|
|||
// ------------------------------------------------------------------
|
||||
|
||||
// Constants
|
||||
localparam integer N_REGS = 15;
|
||||
localparam integer N_REGS = 16;
|
||||
localparam integer ADDR_LSB = $clog2(AXIL_DATA_BITS/8);
|
||||
localparam integer ADDR_MSB = $clog2(N_REGS);
|
||||
localparam integer AXIL_ADDR_BITS = ADDR_LSB + ADDR_MSB;
|
||||
|
@ -73,7 +73,7 @@ logic aw_en;
|
|||
/ 11 (R) : execution_cycles
|
||||
/ 12 (R) : consumed_bytes
|
||||
/ 13 (R) : produced_bytes
|
||||
/ 14 (R) : openCon_cycles
|
||||
/ 15 (RW) : sessionID
|
||||
*/
|
||||
|
||||
// Write process
|
||||
|
@ -148,6 +148,12 @@ always_ff @(posedge aclk) begin
|
|||
slv_reg[10][(i*8)+:8] <= axi_ctrl.wdata[(i*8)+:8];
|
||||
end
|
||||
end
|
||||
4'hf: // sessionID
|
||||
for (int i = 0; i < AXIL_DATA_BITS/8; i++) begin
|
||||
if(axi_ctrl.wstrb[i]) begin
|
||||
slv_reg[15][(i*8)+:8] <= axi_ctrl.wdata[(i*8)+:8];
|
||||
end
|
||||
end
|
||||
default : ;
|
||||
endcase
|
||||
end
|
||||
|
@ -167,6 +173,7 @@ always_comb begin
|
|||
isServer = slv_reg[8];
|
||||
timeInSeconds = slv_reg[9];
|
||||
timeInCycles = slv_reg[10];
|
||||
sessionID = slv_reg[15];
|
||||
end
|
||||
|
||||
// Read process
|
||||
|
@ -207,8 +214,8 @@ always_ff @(posedge aclk) begin
|
|||
axi_rdata <= consumed_bytes;
|
||||
4'hd: //produced_bytes
|
||||
axi_rdata <= produced_bytes;
|
||||
4'he: //openCon_cycles
|
||||
axi_rdata <= openCon_cycles;
|
||||
4'hf: //sessionID
|
||||
axi_rdata <= sessionID;
|
||||
default: ;
|
||||
endcase
|
||||
end
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -96,6 +96,23 @@ module cnfg_slave_avx #(
|
|||
metaIntf.s s_pfault_rd,
|
||||
metaIntf.s s_pfault_wr,
|
||||
|
||||
// TCP Session Management
|
||||
`ifdef EN_TCP_0
|
||||
metaIntf.m m_open_port_cmd_0,
|
||||
metaIntf.m m_open_con_cmd_0,
|
||||
metaIntf.m m_close_con_cmd_0,
|
||||
metaIntf.s s_open_con_sts_0,
|
||||
metaIntf.s s_open_port_sts_0,
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_1
|
||||
metaIntf.m m_open_port_cmd_1,
|
||||
metaIntf.m m_open_con_cmd_1,
|
||||
metaIntf.m m_close_con_cmd_1,
|
||||
metaIntf.s s_open_con_sts_1,
|
||||
metaIntf.s s_open_port_sts_1,
|
||||
`endif
|
||||
|
||||
// Control
|
||||
output logic restart_rd,
|
||||
output logic restart_wr,
|
||||
|
@ -232,6 +249,61 @@ metaIntf #(.STYPE(rdma_ack_t)) cmplt_que_rdma_1_in ();
|
|||
metaIntf #(.STYPE(rdma_ack_t)) cmplt_que_rdma_1_out ();
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_0
|
||||
metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_0_qin ();
|
||||
metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_0_qin ();
|
||||
metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_0_qin ();
|
||||
metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_0_qin ();
|
||||
metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_0_qin ();
|
||||
|
||||
metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_0_qout ();
|
||||
metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_0_qout ();
|
||||
metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_0_qout ();
|
||||
metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_0_qout ();
|
||||
metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_0_qout ();
|
||||
|
||||
`META_ASSIGN(open_port_cmd_0_qout, m_open_port_cmd_0)
|
||||
`META_ASSIGN(open_con_cmd_0_qout, m_open_con_cmd_0)
|
||||
`META_ASSIGN(close_con_cmd_0_qout, m_close_con_cmd_0)
|
||||
`META_ASSIGN(s_open_con_sts_0, open_con_sts_0_qin)
|
||||
`META_ASSIGN(s_open_port_sts_0, open_port_sts_0_qin)
|
||||
|
||||
|
||||
meta_queue #(.DATA_BITS(16)) open_port_cmd_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_cmd_0_qin), .m_meta(open_port_cmd_0_qout));
|
||||
meta_queue #(.DATA_BITS(8)) open_port_sts_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_sts_0_qin), .m_meta(open_port_sts_0_qout));
|
||||
meta_queue #(.DATA_BITS(48)) open_con_cmd_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_cmd_0_qin), .m_meta(open_con_cmd_0_qout));
|
||||
meta_queue #(.DATA_BITS(72)) open_con_sts_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_sts_0_qin), .m_meta(open_con_sts_0_qout));
|
||||
meta_queue #(.DATA_BITS(16)) close_con_cmd_0_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(close_con_cmd_0_qin), .m_meta(close_con_cmd_0_qout));
|
||||
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_1
|
||||
metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_1_qin ();
|
||||
metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_1_qin ();
|
||||
metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_1_qin ();
|
||||
metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_1_qin ();
|
||||
metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_1_qin ();
|
||||
|
||||
metaIntf #(.STYPE(tcp_listen_req_t)) open_port_cmd_1_qout ();
|
||||
metaIntf #(.STYPE(tcp_listen_rsp_t)) open_port_sts_1_qout ();
|
||||
metaIntf #(.STYPE(tcp_open_req_t)) open_con_cmd_1_qout ();
|
||||
metaIntf #(.STYPE(tcp_open_rsp_t)) open_con_sts_1_qout ();
|
||||
metaIntf #(.STYPE(tcp_close_req_t)) close_con_cmd_1_qout ();
|
||||
|
||||
`META_ASSIGN(open_port_cmd_1_qout, m_open_port_cmd_1)
|
||||
`META_ASSIGN(open_con_cmd_1_qout, m_open_con_cmd_1)
|
||||
`META_ASSIGN(close_con_cmd_1_qout, m_close_con_cmd_1)
|
||||
`META_ASSIGN(s_open_con_sts_1, open_con_sts_1_qin)
|
||||
`META_ASSIGN(s_open_port_sts_1, open_port_sts_1_qin)
|
||||
|
||||
|
||||
meta_queue #(.DATA_BITS(16)) open_port_cmd_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_cmd_1_qin), .m_meta(open_port_cmd_1_qout));
|
||||
meta_queue #(.DATA_BITS(8)) open_port_sts_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_port_sts_1_qin), .m_meta(open_port_sts_1_qout));
|
||||
meta_queue #(.DATA_BITS(48)) open_con_cmd_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_cmd_1_qin), .m_meta(open_con_cmd_1_qout));
|
||||
meta_queue #(.DATA_BITS(72)) open_con_sts_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(open_con_sts_1_qin), .m_meta(open_con_sts_1_qout));
|
||||
meta_queue #(.DATA_BITS(16)) close_con_cmd_1_queue (.aclk(aclk), .aresetn(aresetn), .s_meta(close_con_cmd_1_qin), .m_meta(close_con_cmd_1_qout));
|
||||
`endif
|
||||
|
||||
// -- Def --------------------------------------------------------------------------------
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
|
@ -309,7 +381,55 @@ localparam integer RDMA_1_CMPLT_REG = 28;
|
|||
// 64 (RO) : Status DMA completion
|
||||
localparam integer STAT_DMA_REG = 2**PID_BITS;
|
||||
//
|
||||
// TCP 0
|
||||
localparam integer TCP_0_OPEN_CON_REG = 32;
|
||||
localparam integer TCP_0_OPEN_PORT_REG = 33;
|
||||
localparam integer TCP_0_OPEN_CON_STS_REG = 34;
|
||||
localparam integer TCP_0_OPEN_PORT_STS_REG = 35;
|
||||
localparam integer TCP_0_CLOSE_CON_REG = 36;
|
||||
|
||||
// TCP 1
|
||||
localparam integer TCP_1_OPEN_CON_REG = 40;
|
||||
localparam integer TCP_1_OPEN_PORT_REG = 41;
|
||||
localparam integer TCP_1_OPEN_CON_STS_REG = 42;
|
||||
localparam integer TCP_1_OPEN_PORT_STS_REG = 43;
|
||||
localparam integer TCP_1_CLOSE_CON_REG = 44;
|
||||
|
||||
/*
|
||||
ila_cnfg_slave ila_cnfg_slave
|
||||
(
|
||||
.clk(aclk), // input wire clk
|
||||
.probe0(slv_reg_rden), //1
|
||||
.probe1(axi_rdata), // 256
|
||||
.probe2(axi_rvalid), // 1
|
||||
.probe3(axi_arready), // 1
|
||||
.probe4(s_axim_ctrl.rready), //1
|
||||
.probe5(s_axim_ctrl.arvalid), //1
|
||||
.probe6(s_axim_ctrl.araddr), //64
|
||||
.probe7(axi_bvalid), //1
|
||||
.probe8(slv_reg_wren), //1
|
||||
.probe9(s_axim_ctrl.wdata), // 256
|
||||
.probe10(s_axim_ctrl.awready), //1
|
||||
.probe11(s_axim_ctrl.awvalid), //1
|
||||
.probe12(s_axim_ctrl.awaddr), //64
|
||||
.probe13(m_open_con_cmd_0.valid), //1
|
||||
.probe14(m_open_con_cmd_0.ready), //1
|
||||
.probe15(m_open_con_cmd_0.data), //48
|
||||
.probe16(m_open_port_cmd_0.valid), //1
|
||||
.probe17(m_open_port_cmd_0.ready), //1
|
||||
.probe18(m_open_port_cmd_0.data), //16
|
||||
.probe19(open_con_sts_0_qout.valid), //1
|
||||
.probe20(open_con_sts_0_qout.ready), //1
|
||||
.probe21(open_con_sts_0_qout.data), //72
|
||||
.probe22(open_port_sts_0_qout.valid), //1
|
||||
.probe23(open_port_sts_0_qout.ready), //1
|
||||
.probe24(open_port_sts_0_qout.data), //8
|
||||
.probe25(s_axim_ctrl.wstrb), //32
|
||||
.probe26(axi_araddr), //16
|
||||
.probe27(axi_arlen), //8
|
||||
.probe28(axi_arburst) //2
|
||||
);
|
||||
*/
|
||||
// ----------------------------------------------------------------------------------------
|
||||
// Write process
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
@ -332,6 +452,18 @@ always_ff @(posedge aclk) begin
|
|||
rdma_1_post <= 1'b0;
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_0
|
||||
open_port_cmd_0_qin.valid <= 1'b0;
|
||||
open_con_cmd_0_qin.valid <= 1'b0;
|
||||
close_con_cmd_0_qin.valid <= 1'b0;
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_1
|
||||
open_port_cmd_1_qin.valid <= 1'b0;
|
||||
open_con_cmd_1_qin.valid <= 1'b0;
|
||||
close_con_cmd_1_qin.valid <= 1'b0;
|
||||
`endif
|
||||
|
||||
end
|
||||
else begin
|
||||
slv_reg[CTRL_REG][CTRL_BYTES*8-1:0] <= 0;
|
||||
|
@ -344,6 +476,18 @@ always_ff @(posedge aclk) begin
|
|||
rdma_1_post <= 1'b0;
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_0
|
||||
open_port_cmd_0_qin.valid <= 1'b0;
|
||||
open_con_cmd_0_qin.valid <= 1'b0;
|
||||
close_con_cmd_0_qin.valid <= 1'b0;
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_1
|
||||
open_port_cmd_1_qin.valid <= 1'b0;
|
||||
open_con_cmd_1_qin.valid <= 1'b0;
|
||||
close_con_cmd_1_qin.valid <= 1'b0;
|
||||
`endif
|
||||
|
||||
// Page fault
|
||||
if(s_pfault_rd.valid || s_pfault_wr.valid) begin
|
||||
irq_pending <= 1'b1;
|
||||
|
@ -432,6 +576,71 @@ always_ff @(posedge aclk) begin
|
|||
end
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_0
|
||||
TCP_0_OPEN_CON_REG : begin // open_con
|
||||
for (int i = 0; i < AVX_DATA_BITS/8; i++) begin
|
||||
if(s_axim_ctrl.wstrb[i]) begin
|
||||
slv_reg[TCP_0_OPEN_CON_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8];
|
||||
end
|
||||
end
|
||||
if (s_axim_ctrl.wstrb != 0) begin
|
||||
open_con_cmd_0_qin.valid <= 1'b1;
|
||||
end
|
||||
end
|
||||
TCP_0_OPEN_PORT_REG : begin // open_port
|
||||
for (int i = 0; i < AVX_DATA_BITS/8; i++) begin
|
||||
if(s_axim_ctrl.wstrb[i]) begin
|
||||
slv_reg[TCP_0_OPEN_PORT_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8];
|
||||
end
|
||||
end
|
||||
if (s_axim_ctrl.wstrb != 0) begin
|
||||
open_port_cmd_0_qin.valid <= 1'b1;
|
||||
end
|
||||
end
|
||||
TCP_0_CLOSE_CON_REG : begin // close_con
|
||||
for (int i = 0; i < AVX_DATA_BITS/8; i++) begin
|
||||
if(s_axim_ctrl.wstrb[i]) begin
|
||||
slv_reg[TCP_0_CLOSE_CON_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8];
|
||||
end
|
||||
end
|
||||
if (s_axim_ctrl.wstrb != 0) begin
|
||||
close_con_cmd_0_qin.valid <= 1'b1;
|
||||
end
|
||||
end
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_1
|
||||
TCP_1_OPEN_CON_REG : begin // open_con
|
||||
for (int i = 0; i < AVX_DATA_BITS/8; i++) begin
|
||||
if(s_axim_ctrl.wstrb[i]) begin
|
||||
slv_reg[TCP_1_OPEN_CON_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8];
|
||||
end
|
||||
end
|
||||
if (s_axim_ctrl.wstrb != 0) begin
|
||||
open_con_cmd_1_qin.valid <= 1'b1;
|
||||
end
|
||||
end
|
||||
TCP_1_OPEN_PORT_REG : begin // open_port
|
||||
for (int i = 0; i < AVX_DATA_BITS/8; i++) begin
|
||||
if(s_axim_ctrl.wstrb[i]) begin
|
||||
slv_reg[TCP_1_OPEN_PORT_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8];
|
||||
end
|
||||
end
|
||||
if (s_axim_ctrl.wstrb != 0) begin
|
||||
open_port_cmd_1_qin.valid <= 1'b1;
|
||||
end
|
||||
end
|
||||
TCP_1_CLOSE_CON_REG : begin // close_con
|
||||
for (int i = 0; i < AVX_DATA_BITS/8; i++) begin
|
||||
if(s_axim_ctrl.wstrb[i]) begin
|
||||
slv_reg[TCP_1_CLOSE_CON_REG][(i*8)+:8] <= s_axim_ctrl.wdata[(i*8)+:8];
|
||||
end
|
||||
end
|
||||
if (s_axim_ctrl.wstrb != 0) begin
|
||||
close_con_cmd_1_qin.valid <= 1'b1;
|
||||
end
|
||||
end
|
||||
`endif
|
||||
default: ;
|
||||
endcase
|
||||
end
|
||||
|
@ -456,6 +665,22 @@ always_ff @(posedge aclk) begin
|
|||
end
|
||||
end
|
||||
|
||||
// Output TCP
|
||||
`ifdef EN_TCP_0
|
||||
always_comb begin
|
||||
open_con_cmd_0_qin.data = slv_reg[TCP_0_OPEN_CON_REG];
|
||||
open_port_cmd_0_qin.data = slv_reg[TCP_0_OPEN_PORT_REG];
|
||||
close_con_cmd_0_qin.data = slv_reg[TCP_0_CLOSE_CON_REG];
|
||||
end
|
||||
`endif
|
||||
`ifdef EN_TCP_1
|
||||
always_comb begin
|
||||
open_con_cmd_1_qin.data = slv_reg[TCP_1_OPEN_CON_REG];
|
||||
open_port_cmd_1_qin.data = slv_reg[TCP_1_OPEN_PORT_REG];
|
||||
close_con_cmd_1_qin.data = slv_reg[TCP_1_CLOSE_CON_REG];
|
||||
end
|
||||
`endif
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
// Read process
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
@ -465,8 +690,30 @@ always_ff @(posedge aclk) begin
|
|||
if( aresetn == 1'b0 ) begin
|
||||
axi_rdata <= 'X;
|
||||
axi_mux <= 'X;
|
||||
|
||||
`ifdef EN_TCP_0
|
||||
open_con_sts_0_qout.ready <= 1'b0;
|
||||
open_port_sts_0_qout.ready <= 1'b0;
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_1
|
||||
open_con_sts_1_qout.ready <= 1'b0;
|
||||
open_port_sts_1_qout.ready <= 1'b0;
|
||||
`endif
|
||||
|
||||
end
|
||||
else begin
|
||||
|
||||
`ifdef EN_TCP_0
|
||||
open_con_sts_0_qout.ready <= 1'b0;
|
||||
open_port_sts_0_qout.ready <= 1'b0;
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_1
|
||||
open_con_sts_1_qout.ready <= 1'b0;
|
||||
open_port_sts_1_qout.ready <= 1'b0;
|
||||
`endif
|
||||
|
||||
if(slv_reg_rden) begin
|
||||
axi_rdata <= 0;
|
||||
axi_mux <= 1'b0;
|
||||
|
@ -517,7 +764,55 @@ always_ff @(posedge aclk) begin
|
|||
[STAT_DMA_REG:STAT_DMA_REG+(2**PID_BITS)-1]: begin
|
||||
axi_mux <= 1'b1;
|
||||
end
|
||||
|
||||
|
||||
`ifdef EN_TCP_0
|
||||
[TCP_0_OPEN_CON_STS_REG:TCP_0_OPEN_CON_STS_REG] : begin // open_status
|
||||
if (open_con_sts_0_qout.valid) begin
|
||||
axi_rdata[14:0] <= open_con_sts_0_qout.data[14:0]; //session
|
||||
axi_rdata[15:15] <= open_con_sts_0_qout.data[16]; //success
|
||||
axi_rdata[47:16] <= open_con_sts_0_qout.data[55:24]; //ip
|
||||
axi_rdata[63:48] <= open_con_sts_0_qout.data[71:56]; //port
|
||||
open_con_sts_0_qout.ready <= 1'b1;
|
||||
end
|
||||
else begin
|
||||
axi_rdata <= '0;
|
||||
end
|
||||
end
|
||||
[TCP_0_OPEN_PORT_STS_REG:TCP_0_OPEN_PORT_STS_REG] : begin // port_status
|
||||
if (open_port_sts_0_qout.valid) begin
|
||||
axi_rdata <= open_port_sts_0_qout.data;
|
||||
open_port_sts_0_qout.ready <= 1'b1;
|
||||
end
|
||||
else begin
|
||||
axi_rdata <= '0;
|
||||
end
|
||||
end
|
||||
`endif
|
||||
|
||||
`ifdef EN_TCP_1
|
||||
[TCP_1_OPEN_CON_STS_REG:TCP_1_OPEN_CON_STS_REG] : begin // open_status
|
||||
if (open_con_sts_1_qout.valid) begin
|
||||
axi_rdata[14:0] <= open_con_sts_1_qout.data[14:0]; //session
|
||||
axi_rdata[15:15] <= open_con_sts_1_qout.data[16]; //success
|
||||
axi_rdata[47:16] <= open_con_sts_1_qout.data[55:24]; //ip
|
||||
axi_rdata[63:48] <= open_con_sts_1_qout.data[71:56]; //port
|
||||
open_con_sts_1_qout.ready <= 1'b1;
|
||||
end
|
||||
else begin
|
||||
axi_rdata <= '0;
|
||||
end
|
||||
end
|
||||
[TCP_1_OPEN_PORT_STS_REG:TCP_1_OPEN_PORT_STS_REG] : begin // port_status
|
||||
if (open_port_sts_1_qout.valid) begin
|
||||
axi_rdata <= open_port_sts_1_qout.data;
|
||||
open_port_sts_1_qout.ready <= 1'b1;
|
||||
end
|
||||
else begin
|
||||
axi_rdata <= '0;
|
||||
end
|
||||
end
|
||||
`endif
|
||||
|
||||
default: ;
|
||||
endcase
|
||||
end
|
||||
|
|
|
@ -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" {
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
|
@ -847,11 +847,6 @@ module design_dynamic_wrapper #(
|
|||
.aclk(uclk),
|
||||
.aresetn(uresetn),
|
||||
|
||||
.m_tcp_listen_req_nclk(tcp_0_listen_req_s1[i]),
|
||||
.s_tcp_listen_rsp_nclk(tcp_0_listen_rsp_s1[i]),
|
||||
.m_tcp_open_req_nclk(tcp_0_open_req_s1[i]),
|
||||
.s_tcp_open_rsp_nclk(tcp_0_open_rsp_s1[i]),
|
||||
.m_tcp_close_req_nclk(tcp_0_close_req_s1[i]),
|
||||
.s_tcp_notify_nclk(tcp_0_notify_s1[i]),
|
||||
.m_tcp_rd_pkg_nclk(tcp_0_rd_pkg_s1[i]),
|
||||
.s_tcp_rx_meta_nclk(tcp_0_rx_meta_s1[i]),
|
||||
|
@ -860,11 +855,6 @@ module design_dynamic_wrapper #(
|
|||
.s_axis_tcp_rx_nclk(axis_tcp_0_in_s1[i]),
|
||||
.m_axis_tcp_tx_nclk(axis_tcp_0_out_s1[i]),
|
||||
|
||||
.s_tcp_listen_req_aclk(tcp_0_listen_req_s2[i]),
|
||||
.m_tcp_listen_rsp_aclk(tcp_0_listen_rsp_s2[i]),
|
||||
.s_tcp_open_req_aclk(tcp_0_open_req_s2[i]),
|
||||
.m_tcp_open_rsp_aclk(tcp_0_open_rsp_s2[i]),
|
||||
.s_tcp_close_req_aclk(tcp_0_close_req_s2[i]),
|
||||
.m_tcp_notify_aclk(tcp_0_notify_s2[i]),
|
||||
.s_tcp_rd_pkg_aclk(tcp_0_rd_pkg_s2[i]),
|
||||
.m_tcp_rx_meta_aclk(tcp_0_rx_meta_s2[i]),
|
||||
|
@ -878,11 +868,6 @@ module design_dynamic_wrapper #(
|
|||
{% else %}
|
||||
// No crossing
|
||||
for(genvar i = 0; i < N_REGIONS; i++) begin
|
||||
`META_ASSIGN(tcp_0_listen_req_s2[i], tcp_0_listen_req_s1[i])
|
||||
`META_ASSIGN(tcp_0_listen_rsp_s1[i], tcp_0_listen_rsp_s2[i])
|
||||
`META_ASSIGN(tcp_0_open_req_s2[i], tcp_0_open_req_s1[i])
|
||||
`META_ASSIGN(tcp_0_open_rsp_s1[i], tcp_0_open_rsp_s2[i])
|
||||
`META_ASSIGN(tcp_0_close_req_s2[i], tcp_0_close_req_s2[i])
|
||||
`META_ASSIGN(tcp_0_notify_s1[i], tcp_0_notify_s2[i])
|
||||
`META_ASSIGN(tcp_0_rd_pkg_s2[i], tcp_0_rd_pkg_s1[i])
|
||||
`META_ASSIGN(tcp_0_rx_meta_s1[i], tcp_0_rx_meta_s2[i])
|
||||
|
@ -894,6 +879,14 @@ module design_dynamic_wrapper #(
|
|||
|
||||
{% endif %}
|
||||
|
||||
for(genvar i = 0; i < N_REGIONS; i++) begin
|
||||
`META_ASSIGN(tcp_0_listen_req_s2[i], tcp_0_listen_req_s1[i])
|
||||
`META_ASSIGN(tcp_0_listen_rsp_s1[i], tcp_0_listen_rsp_s2[i])
|
||||
`META_ASSIGN(tcp_0_open_req_s2[i], tcp_0_open_req_s1[i])
|
||||
`META_ASSIGN(tcp_0_open_rsp_s1[i], tcp_0_open_rsp_s2[i])
|
||||
`META_ASSIGN(tcp_0_close_req_s2[i], tcp_0_close_req_s1[i])
|
||||
end
|
||||
|
||||
// Slice 1
|
||||
// ----------------------------------------------------------------------
|
||||
metaIntf #(.STYPE(tcp_listen_req_t)) tcp_0_listen_req_s3[N_REGIONS]();
|
||||
|
@ -921,11 +914,6 @@ module design_dynamic_wrapper #(
|
|||
.aresetn(aresetn),
|
||||
{% endif %}
|
||||
|
||||
.m_tcp_listen_req_n(tcp_0_listen_req_s2[i]),
|
||||
.s_tcp_listen_rsp_n(tcp_0_listen_rsp_s2[i]),
|
||||
.m_tcp_open_req_n(tcp_0_open_req_s2[i]),
|
||||
.s_tcp_open_rsp_n(tcp_0_open_rsp_s2[i]),
|
||||
.m_tcp_close_req_n(tcp_0_close_req_s2[i]),
|
||||
.s_tcp_notify_n(tcp_0_notify_s2[i]),
|
||||
.m_tcp_rd_pkg_n(tcp_0_rd_pkg_s2[i]),
|
||||
.s_tcp_rx_meta_n(tcp_0_rx_meta_s2[i]),
|
||||
|
@ -934,11 +922,6 @@ module design_dynamic_wrapper #(
|
|||
.s_axis_tcp_rx_n(axis_tcp_0_in_s2[i]),
|
||||
.m_axis_tcp_tx_n(axis_tcp_0_out_s2[i]),
|
||||
|
||||
.s_tcp_listen_req_u(tcp_0_listen_req_s3[i]),
|
||||
.m_tcp_listen_rsp_u(tcp_0_listen_rsp_s3[i]),
|
||||
.s_tcp_open_req_u(tcp_0_open_req_s3[i]),
|
||||
.m_tcp_open_rsp_u(tcp_0_open_rsp_s3[i]),
|
||||
.s_tcp_close_req_u(tcp_0_close_req_s3[i]),
|
||||
.m_tcp_notify_u(tcp_0_notify_s3[i]),
|
||||
.s_tcp_rd_pkg_u(tcp_0_rd_pkg_s3[i]),
|
||||
.m_tcp_rx_meta_u(tcp_0_rx_meta_s3[i]),
|
||||
|
@ -948,14 +931,29 @@ module design_dynamic_wrapper #(
|
|||
.s_axis_tcp_tx_u(axis_tcp_0_out_s3[i])
|
||||
);
|
||||
end
|
||||
|
||||
for(genvar i = 0; i < N_REGIONS; i++) begin
|
||||
tcp_slice_array_cnfg #(
|
||||
.N_STAGES(N_REG_DYN_NET_S1)
|
||||
) inst_tcp_slice_array_cnfg_1 (
|
||||
.aclk(aclk),
|
||||
.aresetn(aresetn),
|
||||
.m_tcp_listen_req_n(tcp_0_listen_req_s2[i]),
|
||||
.s_tcp_listen_rsp_n(tcp_0_listen_rsp_s2[i]),
|
||||
.m_tcp_open_req_n(tcp_0_open_req_s2[i]),
|
||||
.s_tcp_open_rsp_n(tcp_0_open_rsp_s2[i]),
|
||||
.m_tcp_close_req_n(tcp_0_close_req_s2[i]),
|
||||
|
||||
.s_tcp_listen_req_u(tcp_0_listen_req_s3[i]),
|
||||
.m_tcp_listen_rsp_u(tcp_0_listen_rsp_s3[i]),
|
||||
.s_tcp_open_req_u(tcp_0_open_req_s3[i]),
|
||||
.m_tcp_open_rsp_u(tcp_0_open_rsp_s3[i]),
|
||||
.s_tcp_close_req_u(tcp_0_close_req_s3[i])
|
||||
);
|
||||
end
|
||||
|
||||
// Decoupling
|
||||
// ----------------------------------------------------------------------
|
||||
metaIntf #(.STYPE(tcp_listen_req_t)) tcp_0_listen_req_ul[N_REGIONS]();
|
||||
metaIntf #(.STYPE(tcp_listen_rsp_t)) tcp_0_listen_rsp_ul[N_REGIONS]();
|
||||
metaIntf #(.STYPE(tcp_open_req_t)) tcp_0_open_req_ul[N_REGIONS]();
|
||||
metaIntf #(.STYPE(tcp_open_rsp_t)) tcp_0_open_rsp_ul[N_REGIONS]();
|
||||
metaIntf #(.STYPE(tcp_close_req_t)) tcp_0_close_req_ul [N_REGIONS]();
|
||||
metaIntf #(.STYPE(tcp_notify_t)) tcp_0_notify_ul [N_REGIONS]();
|
||||
metaIntf #(.STYPE(tcp_rd_pkg_t)) tcp_0_rd_pkg_ul [N_REGIONS]();
|
||||
metaIntf #(.STYPE(tcp_rx_meta_t)) tcp_0_rx_meta_ul [N_REGIONS]();
|
||||
|
@ -964,11 +962,6 @@ module design_dynamic_wrapper #(
|
|||
AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_0_in_ul [N_REGIONS]();
|
||||
AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_0_out_ul [N_REGIONS]();
|
||||
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_listen_req_ul), .m_meta(tcp_0_listen_req_s3));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_listen_rsp_s3), .m_meta(tcp_0_listen_rsp_ul));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_open_req_ul), .m_meta(tcp_0_open_req_s3));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_open_rsp_s3), .m_meta(tcp_0_open_rsp_ul));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_close_req_ul), .m_meta(tcp_0_close_req_s3));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_notify_s3), .m_meta(tcp_0_notify_ul));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_rd_pkg_ul), .m_meta(tcp_0_rd_pkg_s3));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_0_rx_meta_s3), .m_meta(tcp_0_rx_meta_ul));
|
||||
|
@ -1101,11 +1094,6 @@ module design_dynamic_wrapper #(
|
|||
.aclk(uclk),
|
||||
.aresetn(uresetn),
|
||||
|
||||
.m_tcp_listen_req_nclk(tcp_1_listen_req_s1[i]),
|
||||
.s_tcp_listen_rsp_nclk(tcp_1_listen_rsp_s1[i]),
|
||||
.m_tcp_open_req_nclk(tcp_1_open_req_s1[i]),
|
||||
.s_tcp_open_rsp_nclk(tcp_1_open_rsp_s1[i]),
|
||||
.m_tcp_close_req_nclk(tcp_1_close_req_s1[i]),
|
||||
.s_tcp_notify_nclk(tcp_1_notify_s1[i]),
|
||||
.m_tcp_rd_pkg_nclk(tcp_1_rd_pkg_s1[i]),
|
||||
.s_tcp_rx_meta_nclk(tcp_1_rx_meta_s1[i]),
|
||||
|
@ -1114,11 +1102,6 @@ module design_dynamic_wrapper #(
|
|||
.s_axis_tcp_rx_nclk(axis_tcp_1_in_s1[i]),
|
||||
.m_axis_tcp_tx_nclk(axis_tcp_1_out_s1[i]),
|
||||
|
||||
.s_tcp_listen_req_aclk(tcp_1_listen_req_s2[i]),
|
||||
.m_tcp_listen_rsp_aclk(tcp_1_listen_rsp_s2[i]),
|
||||
.s_tcp_open_req_aclk(tcp_1_open_req_s2[i]),
|
||||
.m_tcp_open_rsp_aclk(tcp_1_open_rsp_s2[i]),
|
||||
.s_tcp_close_req_aclk(tcp_1_close_req_s2[i]),
|
||||
.m_tcp_notify_aclk(tcp_1_notify_s2[i]),
|
||||
.s_tcp_rd_pkg_aclk(tcp_1_rd_pkg_s2[i]),
|
||||
.m_tcp_rx_meta_aclk(tcp_1_rx_meta_s2[i]),
|
||||
|
@ -1132,11 +1115,6 @@ module design_dynamic_wrapper #(
|
|||
{% else %}
|
||||
// No crossing
|
||||
for(genvar i = 0; i < N_REGIONS; i++) begin
|
||||
`META_ASSIGN(tcp_1_listen_req_s2[i], tcp_1_listen_req_s1[i])
|
||||
`META_ASSIGN(tcp_1_listen_rsp_s1[i], tcp_1_listen_rsp_s2[i])
|
||||
`META_ASSIGN(tcp_1_open_req_s2[i], tcp_1_open_req_s1[i])
|
||||
`META_ASSIGN(tcp_1_open_rsp_s1[i], tcp_1_open_rsp_s2[i])
|
||||
`META_ASSIGN(tcp_1_close_req_s2[i], tcp_1_close_req_s2[i])
|
||||
`META_ASSIGN(tcp_1_notify_s1[i], tcp_1_notify_s2[i])
|
||||
`META_ASSIGN(tcp_1_rd_pkg_s2[i], tcp_1_rd_pkg_s1[i])
|
||||
`META_ASSIGN(tcp_1_rx_meta_s1[i], tcp_1_rx_meta_s2[i])
|
||||
|
@ -1148,6 +1126,14 @@ module design_dynamic_wrapper #(
|
|||
|
||||
{% endif %}
|
||||
|
||||
for(genvar i = 0; i < N_REGIONS; i++) begin
|
||||
`META_ASSIGN(tcp_1_listen_req_s2[i], tcp_1_listen_req_s1[i])
|
||||
`META_ASSIGN(tcp_1_listen_rsp_s1[i], tcp_1_listen_rsp_s2[i])
|
||||
`META_ASSIGN(tcp_1_open_req_s2[i], tcp_1_open_req_s1[i])
|
||||
`META_ASSIGN(tcp_1_open_rsp_s1[i], tcp_1_open_rsp_s2[i])
|
||||
`META_ASSIGN(tcp_1_close_req_s2[i], tcp_1_close_req_s2[i])
|
||||
end
|
||||
|
||||
// Slice 1
|
||||
// ----------------------------------------------------------------------
|
||||
metaIntf #(.STYPE(tcp_listen_req_t)) tcp_1_listen_req_s3[N_REGIONS]();
|
||||
|
@ -1175,11 +1161,6 @@ module design_dynamic_wrapper #(
|
|||
.aresetn(aresetn),
|
||||
{% endif %}
|
||||
|
||||
.m_tcp_listen_req_n(tcp_1_listen_req_s2[i]),
|
||||
.s_tcp_listen_rsp_n(tcp_1_listen_rsp_s2[i]),
|
||||
.m_tcp_open_req_n(tcp_1_open_req_s2[i]),
|
||||
.s_tcp_open_rsp_n(tcp_1_open_rsp_s2[i]),
|
||||
.m_tcp_close_req_n(tcp_1_close_req_s2[i]),
|
||||
.s_tcp_notify_n(tcp_1_notify_s2[i]),
|
||||
.m_tcp_rd_pkg_n(tcp_1_rd_pkg_s2[i]),
|
||||
.s_tcp_rx_meta_n(tcp_1_rx_meta_s2[i]),
|
||||
|
@ -1188,11 +1169,6 @@ module design_dynamic_wrapper #(
|
|||
.s_axis_tcp_rx_n(axis_tcp_1_s2[i]),
|
||||
.m_axis_tcp_tx_n(axis_tcp_1_s2[i]),
|
||||
|
||||
.s_tcp_listen_req_u(tcp_1_listen_req_s3[i]),
|
||||
.m_tcp_listen_rsp_u(tcp_1_listen_rsp_s3[i]),
|
||||
.s_tcp_open_req_u(tcp_1_open_req_s3[i]),
|
||||
.m_tcp_open_rsp_u(tcp_1_open_rsp_s3[i]),
|
||||
.s_tcp_close_req_u(tcp_1_close_req_s3[i]),
|
||||
.m_tcp_notify_u(tcp_1_notify_s3[i]),
|
||||
.s_tcp_rd_pkg_u(tcp_1_rd_pkg_s3[i]),
|
||||
.m_tcp_rx_meta_u(tcp_1_rx_meta_s3[i]),
|
||||
|
@ -1202,6 +1178,26 @@ module design_dynamic_wrapper #(
|
|||
.s_axis_tcp_tx_u(axis_tcp_1_out_s3[i])
|
||||
);
|
||||
end
|
||||
|
||||
for(genvar i = 0; i < N_REGIONS; i++) begin
|
||||
tcp_slice_array_cnfg #(
|
||||
.N_STAGES(N_REG_DYN_NET_S1)
|
||||
) inst_tcp_slice_array_cnfg_1 (
|
||||
.aclk(aclk),
|
||||
.aresetn(aresetn),
|
||||
.m_tcp_listen_req_n(tcp_1_listen_req_s2[i]),
|
||||
.s_tcp_listen_rsp_n(tcp_1_listen_rsp_s2[i]),
|
||||
.m_tcp_open_req_n(tcp_1_open_req_s2[i]),
|
||||
.s_tcp_open_rsp_n(tcp_1_open_rsp_s2[i]),
|
||||
.m_tcp_close_req_n(tcp_1_close_req_s2[i]),
|
||||
|
||||
.s_tcp_listen_req_u(tcp_1_listen_req_s3[i]),
|
||||
.m_tcp_listen_rsp_u(tcp_1_listen_rsp_s3[i]),
|
||||
.s_tcp_open_req_u(tcp_1_open_req_s3[i]),
|
||||
.m_tcp_open_rsp_u(tcp_1_open_rsp_s3[i]),
|
||||
.s_tcp_close_req_u(tcp_1_close_req_s3[i])
|
||||
);
|
||||
end
|
||||
|
||||
// Decoupling
|
||||
// ----------------------------------------------------------------------
|
||||
|
@ -1218,11 +1214,6 @@ module design_dynamic_wrapper #(
|
|||
AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_1_in_ul [N_REGIONS]();
|
||||
AXI4SR #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_tcp_1_out_ul [N_REGIONS]();
|
||||
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_listen_req_ul), .m_meta(tcp_1_listen_req_s3));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_listen_rsp_s3), .m_meta(tcp_1_listen_rsp_ul));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_open_req_ul), .m_meta(tcp_1_open_req_s3));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_open_rsp_s3), .m_meta(tcp_1_open_rsp_ul));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_close_req_ul), .m_meta(tcp_1_close_req_s3));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_notify_s3), .m_meta(tcp_1_notify_ul));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_rd_pkg_ul), .m_meta(tcp_1_rd_pkg_s3));
|
||||
meta_decoupler (.decouple(decouple_uclk), .s_meta(tcp_1_rx_meta_s3), .m_meta(tcp_1_rx_meta_ul));
|
||||
|
@ -1473,6 +1464,20 @@ module design_dynamic_wrapper #(
|
|||
.wxfer_card(wxfer_card),
|
||||
.rd_dest_card(rd_dest_card),
|
||||
{% endif %}
|
||||
{% if cnfg.en_tcp_0 %}
|
||||
.m_open_port_cmd_0(tcp_0_listen_req_s3),
|
||||
.m_open_con_cmd_0(tcp_0_open_req_s3),
|
||||
.m_close_con_cmd_0(tcp_0_close_req_s3),
|
||||
.s_open_con_sts_0(tcp_0_open_rsp_s3),
|
||||
.s_open_port_sts_0(tcp_0_listen_rsp_s3),
|
||||
{% endif %}
|
||||
{% if cnfg.en_tcp_1 %}
|
||||
.m_open_port_cmd_1(tcp_1_listen_req_s3),
|
||||
.m_open_con_cmd_1(tcp_1_open_req_s3),
|
||||
.m_close_con_cmd_1(tcp_1_close_req_s3),
|
||||
.s_open_con_sts_1(tcp_1_open_rsp_s3),
|
||||
.s_open_port_sts_1(tcp_1_listen_rsp_s3),
|
||||
{% endif %}
|
||||
{% if cnfg.en_wb %}
|
||||
.m_wback(m_wback),
|
||||
{% endif %}
|
||||
|
@ -1613,21 +1618,6 @@ module design_dynamic_wrapper #(
|
|||
.axis_rdma_1_src_tvalid (axis_rdma_1_out_ul[{{ i }}].tvalid),
|
||||
{% endif %}
|
||||
{% if cnfg.en_tcp_0 %}
|
||||
.tcp_0_listen_req_valid (tcp_0_listen_req_ul[{{ i }}].valid),
|
||||
.tcp_0_listen_req_ready (tcp_0_listen_req_ul[{{ i }}].ready),
|
||||
.tcp_0_listen_req_data (tcp_0_listen_req_ul[{{ i }}].data),
|
||||
.tcp_0_listen_rsp_valid (tcp_0_listen_rsp_ul[{{ i }}].valid),
|
||||
.tcp_0_listen_rsp_ready (tcp_0_listen_rsp_ul[{{ i }}].ready),
|
||||
.tcp_0_listen_rsp_data (tcp_0_listen_rsp_ul[{{ i }}].data),
|
||||
.tcp_0_open_req_valid (tcp_0_open_req_ul[{{ i }}].valid),
|
||||
.tcp_0_open_req_ready (tcp_0_open_req_ul[{{ i }}].ready),
|
||||
.tcp_0_open_req_data (tcp_0_open_req_ul[{{ i }}].data),
|
||||
.tcp_0_open_rsp_valid (tcp_0_open_rsp_ul[{{ i }}].valid),
|
||||
.tcp_0_open_rsp_ready (tcp_0_open_rsp_ul[{{ i }}].ready),
|
||||
.tcp_0_open_rsp_data (tcp_0_open_rsp_ul[{{ i }}].data),
|
||||
.tcp_0_close_req_valid (tcp_0_close_req_ul[{{ i }}].valid),
|
||||
.tcp_0_close_req_ready (tcp_0_close_req_ul[{{ i }}].ready),
|
||||
.tcp_0_close_req_data (tcp_0_close_req_ul[{{ i }}].data),
|
||||
.tcp_0_notify_valid (tcp_0_notify_ul[{{ i }}].valid),
|
||||
.tcp_0_notify_ready (tcp_0_notify_ul[{{ i }}].ready),
|
||||
.tcp_0_notify_data (tcp_0_notify_ul[{{ i }}].data),
|
||||
|
@ -1657,21 +1647,6 @@ module design_dynamic_wrapper #(
|
|||
.axis_tcp_0_src_tvalid (axis_tcp_0_out_ul[{{ i }}].tvalid),
|
||||
{% endif %}
|
||||
{% if cnfg.en_tcp_1 %}
|
||||
.tcp_1_listen_req_valid (tcp_1_listen_req_ul[{{ i }}].valid),
|
||||
.tcp_1_listen_req_ready (tcp_1_listen_req_ul[{{ i }}].ready),
|
||||
.tcp_1_listen_req_data (tcp_1_listen_req_ul[{{ i }}].data),
|
||||
.tcp_1_listen_rsp_valid (tcp_1_listen_rsp_ul[{{ i }}].valid),
|
||||
.tcp_1_listen_rsp_ready (tcp_1_listen_rsp_ul[{{ i }}].ready),
|
||||
.tcp_1_listen_rsp_data (tcp_1_listen_rsp_ul[{{ i }}].data),
|
||||
.tcp_1_open_req_valid (tcp_1_open_req_ul[{{ i }}].valid),
|
||||
.tcp_1_open_req_ready (tcp_1_open_req_ul[{{ i }}].ready),
|
||||
.tcp_1_open_req_data (tcp_1_open_req_ul[{{ i }}].data),
|
||||
.tcp_1_open_rsp_valid (tcp_1_open_rsp_ul[{{ i }}].valid),
|
||||
.tcp_1_open_rsp_ready (tcp_1_open_rsp_ul[{{ i }}].ready),
|
||||
.tcp_1_open_rsp_data (tcp_1_open_rsp_ul[{{ i }}].data),
|
||||
.tcp_1_close_req_valid (tcp_1_close_req_ul[{{ i }}].valid),
|
||||
.tcp_1_close_req_ready (tcp_1_close_req_ul[{{ i }}].ready),
|
||||
.tcp_1_close_req_data (tcp_1_close_req_ul[{{ i }}].data),
|
||||
.tcp_1_notify_valid (tcp_1_notify_ul[{{ i }}].valid),
|
||||
.tcp_1_notify_ready (tcp_1_notify_ul[{{ i }}].ready),
|
||||
.tcp_1_notify_data (tcp_1_notify_ul[{{ i }}].data),
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue