diff --git a/hdl/common/network_stack.sv b/hdl/common/network_stack.sv index 07dddb036ad43686e1e470778563173499b7a468..b79ee91c0bde046f870c5d9930870ebc53e4646c 100755 --- a/hdl/common/network_stack.sv +++ b/hdl/common/network_stack.sv @@ -803,6 +803,38 @@ axis_register_slice_64 axis_register_AXI_S ( .m_axis_tlast(axis_slice_to_ibh.last) // output wire m_axis_tlast ); end +if (WIDTH==128) begin +axis_register_slice_128 axis_register_AXI_S ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(s_axis_net.valid), // input wire s_axis_tvalid + .s_axis_tready(s_axis_net.ready), // output wire s_axis_tready + .s_axis_tdata(s_axis_net.data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(s_axis_net.keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(s_axis_net.last), // input wire s_axis_tlast + .m_axis_tvalid(axis_slice_to_ibh.valid), // output wire m_axis_tvalid + .m_axis_tready(axis_slice_to_ibh.ready), // input wire m_axis_tready + .m_axis_tdata(axis_slice_to_ibh.data), // output wire [63 : 0] m_axis_tdata + .m_axis_tkeep(axis_slice_to_ibh.keep), // output wire [7 : 0] m_axis_tkeep + .m_axis_tlast(axis_slice_to_ibh.last) // output wire m_axis_tlast +); +end +if (WIDTH==256) begin +axis_register_slice_256 axis_register_AXI_S ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(s_axis_net.valid), // input wire s_axis_tvalid + .s_axis_tready(s_axis_net.ready), // output wire s_axis_tready + .s_axis_tdata(s_axis_net.data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(s_axis_net.keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(s_axis_net.last), // input wire s_axis_tlast + .m_axis_tvalid(axis_slice_to_ibh.valid), // output wire m_axis_tvalid + .m_axis_tready(axis_slice_to_ibh.ready), // input wire m_axis_tready + .m_axis_tdata(axis_slice_to_ibh.data), // output wire [63 : 0] m_axis_tdata + .m_axis_tkeep(axis_slice_to_ibh.keep), // output wire [7 : 0] m_axis_tkeep + .m_axis_tlast(axis_slice_to_ibh.last) // output wire m_axis_tlast +); +end if (WIDTH==512) begin axis_register_slice_512 axis_register_AXI_S ( .aclk(net_clk), // input wire aclk @@ -1036,6 +1068,222 @@ axis_interconnect_2to1 mac_merger ( //.S02_ARB_REQ_SUPPRESS(1'b0) // input S01_ARB_REQ_SUPPRESS ); end +if (WIDTH==128) begin +axi_stream #(.WIDTH(128)) axis_icmp_slice_to_merge(); +axis_64_to_128_converter icmp_out_data_converter ( + .aclk(net_clk), + .aresetn(net_aresetn), + .s_axis_tvalid(axis_icmp_to_icmp_slice.valid), + .s_axis_tready(axis_icmp_to_icmp_slice.ready), + .s_axis_tdata(axis_icmp_to_icmp_slice.data), + .s_axis_tkeep(axis_icmp_to_icmp_slice.keep), + .s_axis_tlast(axis_icmp_to_icmp_slice.last), + .s_axis_tdest(0), + .m_axis_tvalid(axis_icmp_slice_to_merge.valid), + .m_axis_tready(axis_icmp_slice_to_merge.ready), + .m_axis_tdata(axis_icmp_slice_to_merge.data), + .m_axis_tkeep(axis_icmp_slice_to_merge.keep), + .m_axis_tlast(axis_icmp_slice_to_merge.last), + .m_axis_tdest() +); +// merges icmp and tcp +axis_interconnect_128_4to1 ip_merger ( + .ACLK(net_clk), // input wire ACLK + .ARESETN(net_aresetn), // input wire ARESETN + .S00_AXIS_ACLK(net_clk), // input wire S00_AXIS_ACLK + .S01_AXIS_ACLK(net_clk), // input wire S01_AXIS_ACLK + .S02_AXIS_ACLK(net_clk), // input wire S02_AXIS_ACLK + .S03_AXIS_ACLK(net_clk), // input wire S03_AXIS_ACLK + .S00_AXIS_ARESETN(net_aresetn), // input wire S00_AXIS_ARESETN + .S01_AXIS_ARESETN(net_aresetn), // input wire S01_AXIS_ARESETN + .S02_AXIS_ARESETN(net_aresetn), // input wire S02_AXIS_ARESETN + .S03_AXIS_ARESETN(net_aresetn), // input wire S03_AXIS_ARESETN + + .S00_AXIS_TVALID(axis_icmp_slice_to_merge.valid), // input wire S00_AXIS_TVALID + .S00_AXIS_TREADY(axis_icmp_slice_to_merge.ready), // output wire S00_AXIS_TREADY + .S00_AXIS_TDATA(axis_icmp_slice_to_merge.data), // input wire [63 : 0] S00_AXIS_TDATA + .S00_AXIS_TKEEP(axis_icmp_slice_to_merge.keep), // input wire [7 : 0] S00_AXIS_TKEEP + .S00_AXIS_TLAST(axis_icmp_slice_to_merge.last), // input wire S00_AXIS_TLAST + + .S01_AXIS_TVALID(axis_udp_slice_to_merge.valid), // input wire S01_AXIS_TVALID + .S01_AXIS_TREADY(axis_udp_slice_to_merge.ready), // output wire S01_AXIS_TREADY + .S01_AXIS_TDATA(axis_udp_slice_to_merge.data), // input wire [63 : 0] S01_AXIS_TDATA + .S01_AXIS_TKEEP(axis_udp_slice_to_merge.keep), // input wire [7 : 0] S01_AXIS_TKEEP + .S01_AXIS_TLAST(axis_udp_slice_to_merge.last), // input wire S01_AXIS_TLAST + + .S02_AXIS_TVALID(axis_toe_to_toe_slice.valid), // input wire S02_AXIS_TVALID + .S02_AXIS_TREADY(axis_toe_to_toe_slice.ready), // output wire S02_AXIS_TREADY + .S02_AXIS_TDATA(axis_toe_to_toe_slice.data), // input wire [63 : 0] S02_AXIS_TDATA + .S02_AXIS_TKEEP(axis_toe_to_toe_slice.keep), // input wire [7 : 0] S02_AXIS_TKEEP + .S02_AXIS_TLAST(axis_toe_to_toe_slice.last), // input wire S02_AXIS_TLAST + + .S03_AXIS_TVALID(axis_roce_slice_to_merge.valid), // input wire S01_AXIS_TVALID + .S03_AXIS_TREADY(axis_roce_slice_to_merge.ready), // output wire S01_AXIS_TREADY + .S03_AXIS_TDATA(axis_roce_slice_to_merge.data), // input wire [63 : 0] S01_AXIS_TDATA + .S03_AXIS_TKEEP(axis_roce_slice_to_merge.keep), // input wire [7 : 0] S01_AXIS_TKEEP + .S03_AXIS_TLAST(axis_roce_slice_to_merge.last), // input wire S01_AXIS_TLAST + + .M00_AXIS_ACLK(net_clk), // input wire M00_AXIS_ACLK + .M00_AXIS_ARESETN(net_aresetn), // input wire M00_AXIS_ARESETN + .M00_AXIS_TVALID(axis_intercon_to_mie.valid), // output wire M00_AXIS_TVALID + .M00_AXIS_TREADY(axis_intercon_to_mie.ready), // input wire M00_AXIS_TREADY + .M00_AXIS_TDATA(axis_intercon_to_mie.data), // output wire [63 : 0] M00_AXIS_TDATA + .M00_AXIS_TKEEP(axis_intercon_to_mie.keep), // output wire [7 : 0] M00_AXIS_TKEEP + .M00_AXIS_TLAST(axis_intercon_to_mie.last), // output wire M00_AXIS_TLAST + .S00_ARB_REQ_SUPPRESS(1'b0), // input wire S00_ARB_REQ_SUPPRESS + .S01_ARB_REQ_SUPPRESS(1'b0), // input wire S01_ARB_REQ_SUPPRESS + .S02_ARB_REQ_SUPPRESS(1'b0), // input wire S02_ARB_REQ_SUPPRESS + .S03_ARB_REQ_SUPPRESS(1'b0) // input wire S02_ARB_REQ_SUPPRESS +); + +// merges ip and arp +axis_interconnect_128_2to1 mac_merger ( + .ACLK(net_clk), // input ACLK + .ARESETN(net_aresetn), // input ARESETN + .S00_AXIS_ACLK(net_clk), // input S00_AXIS_ACLK + .S01_AXIS_ACLK(net_clk), // input S01_AXIS_ACLK + //.S02_AXIS_ACLK(net_clk), // input S01_AXIS_ACLK + .S00_AXIS_ARESETN(net_aresetn), // input S00_AXIS_ARESETN + .S01_AXIS_ARESETN(net_aresetn), // input S01_AXIS_ARESETN + //.S02_AXIS_ARESETN(net_aresetn), // input S01_AXIS_ARESETN + .S00_AXIS_TVALID(axis_arp_to_arp_slice.valid), // input S00_AXIS_TVALID + .S00_AXIS_TREADY(axis_arp_to_arp_slice.ready), // output S00_AXIS_TREADY + .S00_AXIS_TDATA(axis_arp_to_arp_slice.data), // input [63 : 0] S00_AXIS_TDATA + .S00_AXIS_TKEEP(axis_arp_to_arp_slice.keep), // input [7 : 0] S00_AXIS_TKEEP + .S00_AXIS_TLAST(axis_arp_to_arp_slice.last), // input S00_AXIS_TLAST + + .S01_AXIS_TVALID(axis_mie_to_intercon.valid), // input S01_AXIS_TVALID + .S01_AXIS_TREADY(axis_mie_to_intercon.ready), // output S01_AXIS_TREADY + .S01_AXIS_TDATA(axis_mie_to_intercon.data), // input [63 : 0] S01_AXIS_TDATA + .S01_AXIS_TKEEP(axis_mie_to_intercon.keep), // input [7 : 0] S01_AXIS_TKEEP + .S01_AXIS_TLAST(axis_mie_to_intercon.last), // input S01_AXIS_TLAST + + /*.S02_AXIS_TVALID(axis_ethencode_to_intercon.valid), // input S01_AXIS_TVALID + .S02_AXIS_TREADY(axis_ethencode_to_intercon.ready), // output S01_AXIS_TREADY + .S02_AXIS_TDATA(axis_ethencode_to_intercon.data), // input [63 : 0] S01_AXIS_TDATA + .S02_AXIS_TKEEP(axis_ethencode_to_intercon.keep), // input [7 : 0] S01_AXIS_TKEEP + .S02_AXIS_TLAST(axis_ethencode_to_intercon.last), // input S01_AXIS_TLAST*/ + + .M00_AXIS_ACLK(net_clk), // input M00_AXIS_ACLK + .M00_AXIS_ARESETN(net_aresetn), // input M00_AXIS_ARESETN + .M00_AXIS_TVALID(m_axis_net.valid), // output M00_AXIS_TVALID + .M00_AXIS_TREADY(m_axis_net.ready), // input M00_AXIS_TREADY + .M00_AXIS_TDATA(m_axis_net.data), // output [63 : 0] M00_AXIS_TDATA + .M00_AXIS_TKEEP(m_axis_net.keep), // output [7 : 0] M00_AXIS_TKEEP + .M00_AXIS_TLAST(m_axis_net.last), // output M00_AXIS_TLAST + .S00_ARB_REQ_SUPPRESS(1'b0), // input S00_ARB_REQ_SUPPRESS + .S01_ARB_REQ_SUPPRESS(1'b0) // input S01_ARB_REQ_SUPPRESS + //.S02_ARB_REQ_SUPPRESS(1'b0) // input S01_ARB_REQ_SUPPRESS +); +end +if (WIDTH==256) begin +axi_stream #(.WIDTH(256)) axis_icmp_slice_to_merge(); +axis_64_to_256_converter icmp_out_data_converter ( + .aclk(net_clk), + .aresetn(net_aresetn), + .s_axis_tvalid(axis_icmp_to_icmp_slice.valid), + .s_axis_tready(axis_icmp_to_icmp_slice.ready), + .s_axis_tdata(axis_icmp_to_icmp_slice.data), + .s_axis_tkeep(axis_icmp_to_icmp_slice.keep), + .s_axis_tlast(axis_icmp_to_icmp_slice.last), + .s_axis_tdest(0), + .m_axis_tvalid(axis_icmp_slice_to_merge.valid), + .m_axis_tready(axis_icmp_slice_to_merge.ready), + .m_axis_tdata(axis_icmp_slice_to_merge.data), + .m_axis_tkeep(axis_icmp_slice_to_merge.keep), + .m_axis_tlast(axis_icmp_slice_to_merge.last), + .m_axis_tdest() +); +// merges icmp and tcp +axis_interconnect_256_4to1 ip_merger ( + .ACLK(net_clk), // input wire ACLK + .ARESETN(net_aresetn), // input wire ARESETN + .S00_AXIS_ACLK(net_clk), // input wire S00_AXIS_ACLK + .S01_AXIS_ACLK(net_clk), // input wire S01_AXIS_ACLK + .S02_AXIS_ACLK(net_clk), // input wire S02_AXIS_ACLK + .S03_AXIS_ACLK(net_clk), // input wire S03_AXIS_ACLK + .S00_AXIS_ARESETN(net_aresetn), // input wire S00_AXIS_ARESETN + .S01_AXIS_ARESETN(net_aresetn), // input wire S01_AXIS_ARESETN + .S02_AXIS_ARESETN(net_aresetn), // input wire S02_AXIS_ARESETN + .S03_AXIS_ARESETN(net_aresetn), // input wire S03_AXIS_ARESETN + + .S00_AXIS_TVALID(axis_icmp_slice_to_merge.valid), // input wire S00_AXIS_TVALID + .S00_AXIS_TREADY(axis_icmp_slice_to_merge.ready), // output wire S00_AXIS_TREADY + .S00_AXIS_TDATA(axis_icmp_slice_to_merge.data), // input wire [63 : 0] S00_AXIS_TDATA + .S00_AXIS_TKEEP(axis_icmp_slice_to_merge.keep), // input wire [7 : 0] S00_AXIS_TKEEP + .S00_AXIS_TLAST(axis_icmp_slice_to_merge.last), // input wire S00_AXIS_TLAST + + .S01_AXIS_TVALID(axis_udp_slice_to_merge.valid), // input wire S01_AXIS_TVALID + .S01_AXIS_TREADY(axis_udp_slice_to_merge.ready), // output wire S01_AXIS_TREADY + .S01_AXIS_TDATA(axis_udp_slice_to_merge.data), // input wire [63 : 0] S01_AXIS_TDATA + .S01_AXIS_TKEEP(axis_udp_slice_to_merge.keep), // input wire [7 : 0] S01_AXIS_TKEEP + .S01_AXIS_TLAST(axis_udp_slice_to_merge.last), // input wire S01_AXIS_TLAST + + .S02_AXIS_TVALID(axis_toe_to_toe_slice.valid), // input wire S02_AXIS_TVALID + .S02_AXIS_TREADY(axis_toe_to_toe_slice.ready), // output wire S02_AXIS_TREADY + .S02_AXIS_TDATA(axis_toe_to_toe_slice.data), // input wire [63 : 0] S02_AXIS_TDATA + .S02_AXIS_TKEEP(axis_toe_to_toe_slice.keep), // input wire [7 : 0] S02_AXIS_TKEEP + .S02_AXIS_TLAST(axis_toe_to_toe_slice.last), // input wire S02_AXIS_TLAST + + .S03_AXIS_TVALID(axis_roce_slice_to_merge.valid), // input wire S01_AXIS_TVALID + .S03_AXIS_TREADY(axis_roce_slice_to_merge.ready), // output wire S01_AXIS_TREADY + .S03_AXIS_TDATA(axis_roce_slice_to_merge.data), // input wire [63 : 0] S01_AXIS_TDATA + .S03_AXIS_TKEEP(axis_roce_slice_to_merge.keep), // input wire [7 : 0] S01_AXIS_TKEEP + .S03_AXIS_TLAST(axis_roce_slice_to_merge.last), // input wire S01_AXIS_TLAST + + .M00_AXIS_ACLK(net_clk), // input wire M00_AXIS_ACLK + .M00_AXIS_ARESETN(net_aresetn), // input wire M00_AXIS_ARESETN + .M00_AXIS_TVALID(axis_intercon_to_mie.valid), // output wire M00_AXIS_TVALID + .M00_AXIS_TREADY(axis_intercon_to_mie.ready), // input wire M00_AXIS_TREADY + .M00_AXIS_TDATA(axis_intercon_to_mie.data), // output wire [63 : 0] M00_AXIS_TDATA + .M00_AXIS_TKEEP(axis_intercon_to_mie.keep), // output wire [7 : 0] M00_AXIS_TKEEP + .M00_AXIS_TLAST(axis_intercon_to_mie.last), // output wire M00_AXIS_TLAST + .S00_ARB_REQ_SUPPRESS(1'b0), // input wire S00_ARB_REQ_SUPPRESS + .S01_ARB_REQ_SUPPRESS(1'b0), // input wire S01_ARB_REQ_SUPPRESS + .S02_ARB_REQ_SUPPRESS(1'b0), // input wire S02_ARB_REQ_SUPPRESS + .S03_ARB_REQ_SUPPRESS(1'b0) // input wire S02_ARB_REQ_SUPPRESS +); + +// merges ip and arp +axis_interconnect_256_2to1 mac_merger ( + .ACLK(net_clk), // input ACLK + .ARESETN(net_aresetn), // input ARESETN + .S00_AXIS_ACLK(net_clk), // input S00_AXIS_ACLK + .S01_AXIS_ACLK(net_clk), // input S01_AXIS_ACLK + //.S02_AXIS_ACLK(net_clk), // input S01_AXIS_ACLK + .S00_AXIS_ARESETN(net_aresetn), // input S00_AXIS_ARESETN + .S01_AXIS_ARESETN(net_aresetn), // input S01_AXIS_ARESETN + //.S02_AXIS_ARESETN(net_aresetn), // input S01_AXIS_ARESETN + .S00_AXIS_TVALID(axis_arp_to_arp_slice.valid), // input S00_AXIS_TVALID + .S00_AXIS_TREADY(axis_arp_to_arp_slice.ready), // output S00_AXIS_TREADY + .S00_AXIS_TDATA(axis_arp_to_arp_slice.data), // input [63 : 0] S00_AXIS_TDATA + .S00_AXIS_TKEEP(axis_arp_to_arp_slice.keep), // input [7 : 0] S00_AXIS_TKEEP + .S00_AXIS_TLAST(axis_arp_to_arp_slice.last), // input S00_AXIS_TLAST + + .S01_AXIS_TVALID(axis_mie_to_intercon.valid), // input S01_AXIS_TVALID + .S01_AXIS_TREADY(axis_mie_to_intercon.ready), // output S01_AXIS_TREADY + .S01_AXIS_TDATA(axis_mie_to_intercon.data), // input [63 : 0] S01_AXIS_TDATA + .S01_AXIS_TKEEP(axis_mie_to_intercon.keep), // input [7 : 0] S01_AXIS_TKEEP + .S01_AXIS_TLAST(axis_mie_to_intercon.last), // input S01_AXIS_TLAST + + /*.S02_AXIS_TVALID(axis_ethencode_to_intercon.valid), // input S01_AXIS_TVALID + .S02_AXIS_TREADY(axis_ethencode_to_intercon.ready), // output S01_AXIS_TREADY + .S02_AXIS_TDATA(axis_ethencode_to_intercon.data), // input [63 : 0] S01_AXIS_TDATA + .S02_AXIS_TKEEP(axis_ethencode_to_intercon.keep), // input [7 : 0] S01_AXIS_TKEEP + .S02_AXIS_TLAST(axis_ethencode_to_intercon.last), // input S01_AXIS_TLAST*/ + + .M00_AXIS_ACLK(net_clk), // input M00_AXIS_ACLK + .M00_AXIS_ARESETN(net_aresetn), // input M00_AXIS_ARESETN + .M00_AXIS_TVALID(m_axis_net.valid), // output M00_AXIS_TVALID + .M00_AXIS_TREADY(m_axis_net.ready), // input M00_AXIS_TREADY + .M00_AXIS_TDATA(m_axis_net.data), // output [63 : 0] M00_AXIS_TDATA + .M00_AXIS_TKEEP(m_axis_net.keep), // output [7 : 0] M00_AXIS_TKEEP + .M00_AXIS_TLAST(m_axis_net.last), // output M00_AXIS_TLAST + .S00_ARB_REQ_SUPPRESS(1'b0), // input S00_ARB_REQ_SUPPRESS + .S01_ARB_REQ_SUPPRESS(1'b0) // input S01_ARB_REQ_SUPPRESS + //.S02_ARB_REQ_SUPPRESS(1'b0) // input S01_ARB_REQ_SUPPRESS +); +end if (WIDTH==512) begin axi_stream #(.WIDTH(512)) axis_icmp_slice_to_merge(); axis_64_to_512_converter icmp_out_data_converter ( diff --git a/hdl/common/tcp_stack.sv b/hdl/common/tcp_stack.sv index bc0a4fe6370d25a46af37c2eef4a6ce8f279982d..8984bde9b55a7298a774c7b332d980ef3ea76fc3 100755 --- a/hdl/common/tcp_stack.sv +++ b/hdl/common/tcp_stack.sv @@ -494,7 +494,140 @@ axis_64_to_512_converter tcp_txwrite_data_converter ( .m_axis_tdest() // output wire m_axis_tlast ); end +if (WIDTH==128) begin +//TCP Data Path +`ifndef RX_DDR_BYPASS +axis_512_to_128_converter tcp_rxread_data_converter ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(s_axis_mem_read_data[ddrPortNetworkRx].valid), // input wire s_axis_tvalid + .s_axis_tready(s_axis_mem_read_data[ddrPortNetworkRx].ready), // output wire s_axis_tready + .s_axis_tdata(s_axis_mem_read_data[ddrPortNetworkRx].data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(s_axis_mem_read_data[ddrPortNetworkRx].keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(s_axis_mem_read_data[ddrPortNetworkRx].last), // input wire s_axis_tlast + .m_axis_tvalid(axis_rxread_data.valid), // output wire m_axis_tvalid + .m_axis_tready(axis_rxread_data.ready), // input wire m_axis_tready + .m_axis_tdata(axis_rxread_data.data), // output wire [511 : 0] m_axis_tdata + .m_axis_tkeep(axis_rxread_data.keep), // output wire [63 : 0] m_axis_tkeep + .m_axis_tlast(axis_rxread_data.last) // output wire m_axis_tlast +); +axis_128_to_512_converter tcp_rxwrite_data_converter ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(axis_rxwrite_data.valid), // input wire s_axis_tvalid + .s_axis_tready(axis_rxwrite_data.ready), // output wire s_axis_tready + .s_axis_tdata(axis_rxwrite_data.data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(axis_rxwrite_data.keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(axis_rxwrite_data.last), // input wire s_axis_tlast + .s_axis_tdest(1'b0), // input wire s_axis_tlast + .m_axis_tvalid(m_axis_mem_write_data[ddrPortNetworkRx].valid), // output wire m_axis_tvalid + .m_axis_tready(m_axis_mem_write_data[ddrPortNetworkRx].ready), // input wire m_axis_tready + .m_axis_tdata(m_axis_mem_write_data[ddrPortNetworkRx].data), // output wire [511 : 0] m_axis_tdata + .m_axis_tkeep(m_axis_mem_write_data[ddrPortNetworkRx].keep), // output wire [63 : 0] m_axis_tkeep + .m_axis_tlast(m_axis_mem_write_data[ddrPortNetworkRx].last), // output wire m_axis_tlast + .m_axis_tdest() // output wire m_axis_tlast +); +`endif +axis_512_to_128_converter tcp_txread_data_converter ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(s_axis_mem_read_data[ddrPortNetworkTx].valid), // input wire s_axis_tvalid + .s_axis_tready(s_axis_mem_read_data[ddrPortNetworkTx].ready), // output wire s_axis_tready + .s_axis_tdata(s_axis_mem_read_data[ddrPortNetworkTx].data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(s_axis_mem_read_data[ddrPortNetworkTx].keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(s_axis_mem_read_data[ddrPortNetworkTx].last), // input wire s_axis_tlast + .m_axis_tvalid(axis_txread_data.valid), // output wire m_axis_tvalid + .m_axis_tready(axis_txread_data.ready), // input wire m_axis_tready + .m_axis_tdata(axis_txread_data.data), // output wire [511 : 0] m_axis_tdata + .m_axis_tkeep(axis_txread_data.keep), // output wire [63 : 0] m_axis_tkeep + .m_axis_tlast(axis_txread_data.last) // output wire m_axis_tlast +); + +axis_128_to_512_converter tcp_txwrite_data_converter ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(axis_txwrite_data.valid), // input wire s_axis_tvalid + .s_axis_tready(axis_txwrite_data.ready), // output wire s_axis_tready + .s_axis_tdata(axis_txwrite_data.data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(axis_txwrite_data.keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(axis_txwrite_data.last), // input wire s_axis_tlast + .s_axis_tdest(1'b0), // input wire s_axis_tlast + .m_axis_tvalid(m_axis_mem_write_data[ddrPortNetworkTx].valid), // output wire m_axis_tvalid + .m_axis_tready(m_axis_mem_write_data[ddrPortNetworkTx].ready), // input wire m_axis_tready + .m_axis_tdata(m_axis_mem_write_data[ddrPortNetworkTx].data), // output wire [511 : 0] m_axis_tdata + .m_axis_tkeep(m_axis_mem_write_data[ddrPortNetworkTx].keep), // output wire [63 : 0] m_axis_tkeep + .m_axis_tlast(m_axis_mem_write_data[ddrPortNetworkTx].last), // output wire m_axis_tlast + .m_axis_tdest() // output wire m_axis_tlast +); +end +if (WIDTH==256) begin +//TCP Data Path +`ifndef RX_DDR_BYPASS +axis_512_to_256_converter tcp_rxread_data_converter ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(s_axis_mem_read_data[ddrPortNetworkRx].valid), // input wire s_axis_tvalid + .s_axis_tready(s_axis_mem_read_data[ddrPortNetworkRx].ready), // output wire s_axis_tready + .s_axis_tdata(s_axis_mem_read_data[ddrPortNetworkRx].data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(s_axis_mem_read_data[ddrPortNetworkRx].keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(s_axis_mem_read_data[ddrPortNetworkRx].last), // input wire s_axis_tlast + .m_axis_tvalid(axis_rxread_data.valid), // output wire m_axis_tvalid + .m_axis_tready(axis_rxread_data.ready), // input wire m_axis_tready + .m_axis_tdata(axis_rxread_data.data), // output wire [511 : 0] m_axis_tdata + .m_axis_tkeep(axis_rxread_data.keep), // output wire [63 : 0] m_axis_tkeep + .m_axis_tlast(axis_rxread_data.last) // output wire m_axis_tlast +); + +axis_256_to_512_converter tcp_rxwrite_data_converter ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(axis_rxwrite_data.valid), // input wire s_axis_tvalid + .s_axis_tready(axis_rxwrite_data.ready), // output wire s_axis_tready + .s_axis_tdata(axis_rxwrite_data.data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(axis_rxwrite_data.keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(axis_rxwrite_data.last), // input wire s_axis_tlast + .s_axis_tdest(1'b0), // input wire s_axis_tlast + .m_axis_tvalid(m_axis_mem_write_data[ddrPortNetworkRx].valid), // output wire m_axis_tvalid + .m_axis_tready(m_axis_mem_write_data[ddrPortNetworkRx].ready), // input wire m_axis_tready + .m_axis_tdata(m_axis_mem_write_data[ddrPortNetworkRx].data), // output wire [511 : 0] m_axis_tdata + .m_axis_tkeep(m_axis_mem_write_data[ddrPortNetworkRx].keep), // output wire [63 : 0] m_axis_tkeep + .m_axis_tlast(m_axis_mem_write_data[ddrPortNetworkRx].last), // output wire m_axis_tlast + .m_axis_tdest() // output wire m_axis_tlast +); +`endif +axis_512_to_256_converter tcp_txread_data_converter ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(s_axis_mem_read_data[ddrPortNetworkTx].valid), // input wire s_axis_tvalid + .s_axis_tready(s_axis_mem_read_data[ddrPortNetworkTx].ready), // output wire s_axis_tready + .s_axis_tdata(s_axis_mem_read_data[ddrPortNetworkTx].data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(s_axis_mem_read_data[ddrPortNetworkTx].keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(s_axis_mem_read_data[ddrPortNetworkTx].last), // input wire s_axis_tlast + .m_axis_tvalid(axis_txread_data.valid), // output wire m_axis_tvalid + .m_axis_tready(axis_txread_data.ready), // input wire m_axis_tready + .m_axis_tdata(axis_txread_data.data), // output wire [511 : 0] m_axis_tdata + .m_axis_tkeep(axis_txread_data.keep), // output wire [63 : 0] m_axis_tkeep + .m_axis_tlast(axis_txread_data.last) // output wire m_axis_tlast +); + +axis_256_to_512_converter tcp_txwrite_data_converter ( + .aclk(net_clk), // input wire aclk + .aresetn(net_aresetn), // input wire aresetn + .s_axis_tvalid(axis_txwrite_data.valid), // input wire s_axis_tvalid + .s_axis_tready(axis_txwrite_data.ready), // output wire s_axis_tready + .s_axis_tdata(axis_txwrite_data.data), // input wire [63 : 0] s_axis_tdata + .s_axis_tkeep(axis_txwrite_data.keep), // input wire [7 : 0] s_axis_tkeep + .s_axis_tlast(axis_txwrite_data.last), // input wire s_axis_tlast + .s_axis_tdest(1'b0), // input wire s_axis_tlast + .m_axis_tvalid(m_axis_mem_write_data[ddrPortNetworkTx].valid), // output wire m_axis_tvalid + .m_axis_tready(m_axis_mem_write_data[ddrPortNetworkTx].ready), // input wire m_axis_tready + .m_axis_tdata(m_axis_mem_write_data[ddrPortNetworkTx].data), // output wire [511 : 0] m_axis_tdata + .m_axis_tkeep(m_axis_mem_write_data[ddrPortNetworkTx].keep), // output wire [63 : 0] m_axis_tkeep + .m_axis_tlast(m_axis_mem_write_data[ddrPortNetworkTx].last), // output wire m_axis_tlast + .m_axis_tdest() // output wire m_axis_tlast +); +end if (WIDTH==512) begin //TCP Data Path assign axis_rxread_data.valid = s_axis_mem_read_data[ddrPortNetworkRx].valid; diff --git a/projects/network_stack.tcl b/projects/network_stack.tcl index 9017eac76d6af8b71976b1e9c55187539e945b45..fb7fd4b9874a37bf3ce41839915e20e1be9b3320 100755 --- a/projects/network_stack.tcl +++ b/projects/network_stack.tcl @@ -51,6 +51,26 @@ set_property -dict [list CONFIG.C_NUM_SI_SLOTS {4} CONFIG.SWITCH_TDATA_NUM_BYTES generate_target {instantiation_template} [get_files $device_ip_dir/axis_interconnect_4to1/axis_interconnect_4to1.xci] update_compile_order -fileset sources_1 +create_ip -name axis_interconnect -vendor xilinx.com -library ip -version 1.1 -module_name axis_interconnect_128_2to1 -dir $device_ip_dir +set_property -dict [list CONFIG.C_NUM_SI_SLOTS {2} CONFIG.SWITCH_TDATA_NUM_BYTES {16} CONFIG.HAS_TSTRB {false} CONFIG.HAS_TID {false} CONFIG.HAS_TDEST {false} CONFIG.SWITCH_PACKET_MODE {true} CONFIG.C_SWITCH_MAX_XFERS_PER_ARB {0} CONFIG.C_M00_AXIS_REG_CONFIG {1} CONFIG.C_S00_AXIS_REG_CONFIG {1} CONFIG.C_S01_AXIS_REG_CONFIG {1} CONFIG.C_SWITCH_NUM_CYCLES_TIMEOUT {0} CONFIG.M00_AXIS_TDATA_NUM_BYTES {16} CONFIG.S00_AXIS_TDATA_NUM_BYTES {16} CONFIG.S01_AXIS_TDATA_NUM_BYTES {16} CONFIG.M00_S01_CONNECTIVITY {true}] [get_ips axis_interconnect_128_2to1] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_interconnect_128_2to1/axis_interconnect_128_2to1.xci] +update_compile_order -fileset sources_1 + +create_ip -name axis_interconnect -vendor xilinx.com -library ip -version 1.1 -module_name axis_interconnect_128_4to1 -dir $device_ip_dir +set_property -dict [list CONFIG.C_NUM_SI_SLOTS {4} CONFIG.SWITCH_TDATA_NUM_BYTES {16} CONFIG.HAS_TSTRB {false} CONFIG.HAS_TID {false} CONFIG.HAS_TDEST {false} CONFIG.SWITCH_PACKET_MODE {true} CONFIG.C_SWITCH_MAX_XFERS_PER_ARB {0} CONFIG.C_M00_AXIS_REG_CONFIG {1} CONFIG.C_S00_AXIS_REG_CONFIG {1} CONFIG.C_S01_AXIS_REG_CONFIG {1} CONFIG.C_S02_AXIS_REG_CONFIG {1} CONFIG.C_S03_AXIS_REG_CONFIG {1} CONFIG.C_SWITCH_NUM_CYCLES_TIMEOUT {0} CONFIG.M00_AXIS_TDATA_NUM_BYTES {16} CONFIG.S00_AXIS_TDATA_NUM_BYTES {16} CONFIG.S01_AXIS_TDATA_NUM_BYTES {16} CONFIG.S02_AXIS_TDATA_NUM_BYTES {16} CONFIG.S03_AXIS_TDATA_NUM_BYTES {16} CONFIG.M00_S01_CONNECTIVITY {true} CONFIG.M00_S02_CONNECTIVITY {true} CONFIG.M00_S03_CONNECTIVITY {true}] [get_ips axis_interconnect_128_4to1] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_interconnect_4to1/axis_interconnect_128_4to1.xci] +update_compile_order -fileset sources_1 + +create_ip -name axis_interconnect -vendor xilinx.com -library ip -version 1.1 -module_name axis_interconnect_256_2to1 -dir $device_ip_dir +set_property -dict [list CONFIG.C_NUM_SI_SLOTS {2} CONFIG.SWITCH_TDATA_NUM_BYTES {32} CONFIG.HAS_TSTRB {false} CONFIG.HAS_TID {false} CONFIG.HAS_TDEST {false} CONFIG.SWITCH_PACKET_MODE {true} CONFIG.C_SWITCH_MAX_XFERS_PER_ARB {0} CONFIG.C_M00_AXIS_REG_CONFIG {1} CONFIG.C_S00_AXIS_REG_CONFIG {1} CONFIG.C_S01_AXIS_REG_CONFIG {1} CONFIG.C_SWITCH_NUM_CYCLES_TIMEOUT {0} CONFIG.M00_AXIS_TDATA_NUM_BYTES {32} CONFIG.S00_AXIS_TDATA_NUM_BYTES {32} CONFIG.S01_AXIS_TDATA_NUM_BYTES {32} CONFIG.M00_S01_CONNECTIVITY {true}] [get_ips axis_interconnect_256_2to1] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_interconnect_256_2to1/axis_interconnect_256_2to1.xci] +update_compile_order -fileset sources_1 + +create_ip -name axis_interconnect -vendor xilinx.com -library ip -version 1.1 -module_name axis_interconnect_256_4to1 -dir $device_ip_dir +set_property -dict [list CONFIG.C_NUM_SI_SLOTS {4} CONFIG.SWITCH_TDATA_NUM_BYTES {32} CONFIG.HAS_TSTRB {false} CONFIG.HAS_TID {false} CONFIG.HAS_TDEST {false} CONFIG.SWITCH_PACKET_MODE {true} CONFIG.C_SWITCH_MAX_XFERS_PER_ARB {0} CONFIG.C_M00_AXIS_REG_CONFIG {1} CONFIG.C_S00_AXIS_REG_CONFIG {1} CONFIG.C_S01_AXIS_REG_CONFIG {1} CONFIG.C_S02_AXIS_REG_CONFIG {1} CONFIG.C_S03_AXIS_REG_CONFIG {1} CONFIG.C_SWITCH_NUM_CYCLES_TIMEOUT {0} CONFIG.M00_AXIS_TDATA_NUM_BYTES {32} CONFIG.S00_AXIS_TDATA_NUM_BYTES {32} CONFIG.S01_AXIS_TDATA_NUM_BYTES {32} CONFIG.S02_AXIS_TDATA_NUM_BYTES {32} CONFIG.S03_AXIS_TDATA_NUM_BYTES {32} CONFIG.M00_S01_CONNECTIVITY {true} CONFIG.M00_S02_CONNECTIVITY {true} CONFIG.M00_S03_CONNECTIVITY {true}] [get_ips axis_interconnect_256_4to1] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_interconnect_4to1/axis_interconnect_256_4to1.xci] +update_compile_order -fileset sources_1 + create_ip -name axis_interconnect -vendor xilinx.com -library ip -version 1.1 -module_name axis_interconnect_512_2to1 -dir $device_ip_dir set_property -dict [list CONFIG.C_NUM_SI_SLOTS {2} CONFIG.SWITCH_TDATA_NUM_BYTES {64} CONFIG.HAS_TSTRB {false} CONFIG.HAS_TID {false} CONFIG.HAS_TDEST {false} CONFIG.SWITCH_PACKET_MODE {true} CONFIG.C_SWITCH_MAX_XFERS_PER_ARB {0} CONFIG.C_M00_AXIS_REG_CONFIG {1} CONFIG.C_S00_AXIS_REG_CONFIG {1} CONFIG.C_S01_AXIS_REG_CONFIG {1} CONFIG.C_SWITCH_NUM_CYCLES_TIMEOUT {0} CONFIG.M00_AXIS_TDATA_NUM_BYTES {64} CONFIG.S00_AXIS_TDATA_NUM_BYTES {64} CONFIG.S01_AXIS_TDATA_NUM_BYTES {64} CONFIG.M00_S01_CONNECTIVITY {true}] [get_ips axis_interconnect_512_2to1] generate_target {instantiation_template} [get_files $device_ip_dir/axis_interconnect_512_2to1/axis_interconnect_512_2to1.xci] @@ -61,7 +81,6 @@ set_property -dict [list CONFIG.C_NUM_SI_SLOTS {4} CONFIG.SWITCH_TDATA_NUM_BYTES generate_target {instantiation_template} [get_files $device_ip_dir/axis_interconnect_4to1/axis_interconnect_512_4to1.xci] update_compile_order -fileset sources_1 - #Data Width Converter create_ip -name axis_dwidth_converter -vendor xilinx.com -library ip -version 1.1 -module_name axis_64_to_512_converter -dir $device_ip_dir @@ -74,6 +93,35 @@ set_property -dict [list CONFIG.S_TDATA_NUM_BYTES {64} CONFIG.M_TDATA_NUM_BYTES generate_target {instantiation_template} [get_files $device_ip_dir/axis_512_to_64_converter/axis_512_to_64_converter.xci] update_compile_order -fileset sources_1 +create_ip -name axis_dwidth_converter -vendor xilinx.com -library ip -version 1.1 -module_name axis_128_to_512_converter -dir $device_ip_dir +set_property -dict [list CONFIG.S_TDATA_NUM_BYTES {16} CONFIG.M_TDATA_NUM_BYTES {64} CONFIG.HAS_TLAST {1} CONFIG.HAS_TKEEP {1} CONFIG.HAS_MI_TKEEP {1} CONFIG.TDEST_WIDTH {1} CONFIG.Component_Name {axis_128_to_512_converter}] [get_ips axis_128_to_512_converter] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_128_to_512_converter/axis_128_to_512_converter.xci] +update_compile_order -fileset sources_1 + +create_ip -name axis_dwidth_converter -vendor xilinx.com -library ip -version 1.1 -module_name axis_512_to_128_converter -dir $device_ip_dir +set_property -dict [list CONFIG.S_TDATA_NUM_BYTES {64} CONFIG.M_TDATA_NUM_BYTES {16} CONFIG.HAS_TLAST {1} CONFIG.HAS_TKEEP {1} CONFIG.HAS_MI_TKEEP {1} CONFIG.Component_Name {axis_512_to_128_converter}] [get_ips axis_512_to_128_converter] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_512_to_128_converter/axis_512_to_128_converter.xci] +update_compile_order -fileset sources_1 + +create_ip -name axis_dwidth_converter -vendor xilinx.com -library ip -version 1.1 -module_name axis_256_to_512_converter -dir $device_ip_dir +set_property -dict [list CONFIG.S_TDATA_NUM_BYTES {32} CONFIG.M_TDATA_NUM_BYTES {64} CONFIG.HAS_TLAST {1} CONFIG.HAS_TKEEP {1} CONFIG.HAS_MI_TKEEP {1} CONFIG.TDEST_WIDTH {1} CONFIG.Component_Name {axis_256_to_512_converter}] [get_ips axis_256_to_512_converter] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_256_to_512_converter/axis_256_to_512_converter.xci] +update_compile_order -fileset sources_1 + +create_ip -name axis_dwidth_converter -vendor xilinx.com -library ip -version 1.1 -module_name axis_512_to_256_converter -dir $device_ip_dir +set_property -dict [list CONFIG.S_TDATA_NUM_BYTES {64} CONFIG.M_TDATA_NUM_BYTES {32} CONFIG.HAS_TLAST {1} CONFIG.HAS_TKEEP {1} CONFIG.HAS_MI_TKEEP {1} CONFIG.Component_Name {axis_512_to_256_converter}] [get_ips axis_512_to_256_converter] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_512_to_256_converter/axis_512_to_256_converter.xci] +update_compile_order -fileset sources_1 + +create_ip -name axis_dwidth_converter -vendor xilinx.com -library ip -version 1.1 -module_name axis_64_to_128_converter -dir $device_ip_dir +set_property -dict [list CONFIG.S_TDATA_NUM_BYTES {8} CONFIG.M_TDATA_NUM_BYTES {16} CONFIG.HAS_TLAST {1} CONFIG.HAS_TKEEP {1} CONFIG.HAS_MI_TKEEP {1} CONFIG.TDEST_WIDTH {1} CONFIG.Component_Name {axis_64_to_128_converter}] [get_ips axis_64_to_128_converter] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_64_to_128_converter/axis_64_to_128_converter.xci] +update_compile_order -fileset sources_1 + +create_ip -name axis_dwidth_converter -vendor xilinx.com -library ip -version 1.1 -module_name axis_64_to_256_converter -dir $device_ip_dir +set_property -dict [list CONFIG.S_TDATA_NUM_BYTES {8} CONFIG.M_TDATA_NUM_BYTES {32} CONFIG.HAS_TLAST {1} CONFIG.HAS_TKEEP {1} CONFIG.HAS_MI_TKEEP {1} CONFIG.TDEST_WIDTH {1} CONFIG.Component_Name {axis_64_to_256_converter}] [get_ips axis_64_to_256_converter] +generate_target {instantiation_template} [get_files $device_ip_dir/axis_64_to_256_converter/axis_64_to_256_converter.xci] +update_compile_order -fileset sources_1 #HLS IP cores