tcp fix for u55c
This commit is contained in:
parent
c7e475e526
commit
20607a122f
|
@ -67,8 +67,8 @@ if(NOT EXAMPLE EQUAL 0)
|
|||
message("** TCP/IP benchmarks. Force config.")
|
||||
set(EN_HLS 0)
|
||||
set(EN_STRM 1)
|
||||
set(EN_DDR 0)
|
||||
set(EN_HBM 0)
|
||||
# set(EN_DDR 0)
|
||||
# set(EN_HBM 0)
|
||||
set(EN_TCP_0 1)
|
||||
add_subdirectory(hdl/operators/examples/tcp_bench/hls)
|
||||
elseif(EXAMPLE STREQUAL "pr_scheduling")
|
||||
|
|
|
@ -86,10 +86,10 @@ localparam ddrPortNetworkTx = 0;
|
|||
generate
|
||||
|
||||
// Hash Table signals
|
||||
metaIntf #(.STYPE(logic[72-1:0])) axis_ht_lup_req();
|
||||
metaIntf #(.STYPE(logic[88-1:0])) axis_ht_lup_rsp();
|
||||
metaIntf #(.STYPE(logic[88-1:0])) axis_ht_upd_req();
|
||||
metaIntf #(.STYPE(logic[88-1:0])) axis_ht_upd_rsp();
|
||||
metaIntf #(.STYPE(logic[96-1:0])) axis_ht_lup_req();
|
||||
metaIntf #(.STYPE(logic[120-1:0])) axis_ht_lup_rsp();
|
||||
metaIntf #(.STYPE(logic[144-1:0])) axis_ht_upd_req();
|
||||
metaIntf #(.STYPE(logic[152-1:0])) axis_ht_upd_rsp();
|
||||
|
||||
// Signals for registering
|
||||
AXI4S #(.AXI4S_DATA_BITS(AXI_NET_BITS)) axis_rxwrite_data();
|
||||
|
|
|
@ -0,0 +1,311 @@
|
|||
/*
|
||||
* Copyright (c) 2019, 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.
|
||||
*/
|
||||
#include "axi_utils.hpp"
|
||||
|
||||
ap_uint<64> lenToKeep(ap_uint<6> length)
|
||||
{
|
||||
switch (length)
|
||||
{
|
||||
case 1:
|
||||
return 0x01;
|
||||
case 2:
|
||||
return 0x03;
|
||||
case 3:
|
||||
return 0x07;
|
||||
case 4:
|
||||
return 0x0F;
|
||||
case 5:
|
||||
return 0x1F;
|
||||
case 6:
|
||||
return 0x3F;
|
||||
case 7:
|
||||
return 0x7F;
|
||||
case 8:
|
||||
return 0xFF;
|
||||
case 9:
|
||||
return 0x01FF;
|
||||
case 10:
|
||||
return 0x03FF;
|
||||
case 11:
|
||||
return 0x07FF;
|
||||
case 12:
|
||||
return 0x0FFF;
|
||||
case 13:
|
||||
return 0x1FFF;
|
||||
case 14:
|
||||
return 0x3FFF;
|
||||
case 15:
|
||||
return 0x7FFF;
|
||||
case 16:
|
||||
return 0xFFFF;
|
||||
case 17:
|
||||
return 0x01FFFF;
|
||||
case 18:
|
||||
return 0x03FFFF;
|
||||
case 19:
|
||||
return 0x07FFFF;
|
||||
case 20:
|
||||
return 0x0FFFFF;
|
||||
case 21:
|
||||
return 0x1FFFFF;
|
||||
case 22:
|
||||
return 0x3FFFFF;
|
||||
case 23:
|
||||
return 0x7FFFFF;
|
||||
case 24:
|
||||
return 0xFFFFFF;
|
||||
case 25:
|
||||
return 0x01FFFFFF;
|
||||
case 26:
|
||||
return 0x03FFFFFF;
|
||||
case 27:
|
||||
return 0x07FFFFFF;
|
||||
case 28:
|
||||
return 0x0FFFFFFF;
|
||||
case 29:
|
||||
return 0x1FFFFFFF;
|
||||
case 30:
|
||||
return 0x3FFFFFFF;
|
||||
case 31:
|
||||
return 0x7FFFFFFF;
|
||||
case 32:
|
||||
return 0xFFFFFFFF;
|
||||
case 33:
|
||||
return 0x01FFFFFFFF;
|
||||
case 34:
|
||||
return 0x03FFFFFFFF;
|
||||
case 35:
|
||||
return 0x07FFFFFFFF;
|
||||
case 36:
|
||||
return 0x0FFFFFFFFF;
|
||||
case 37:
|
||||
return 0x1FFFFFFFFF;
|
||||
case 38:
|
||||
return 0x3FFFFFFFFF;
|
||||
case 39:
|
||||
return 0x7FFFFFFFFF;
|
||||
case 40:
|
||||
return 0xFFFFFFFFFF;
|
||||
case 41:
|
||||
return 0x01FFFFFFFFFF;
|
||||
case 42:
|
||||
return 0x03FFFFFFFFFF;
|
||||
case 43:
|
||||
return 0x07FFFFFFFFFF;
|
||||
case 44:
|
||||
return 0x0FFFFFFFFFFF;
|
||||
case 45:
|
||||
return 0x1FFFFFFFFFFF;
|
||||
case 46:
|
||||
return 0x3FFFFFFFFFFF;
|
||||
case 47:
|
||||
return 0x7FFFFFFFFFFF;
|
||||
case 48:
|
||||
return 0xFFFFFFFFFFFF;
|
||||
case 49:
|
||||
return 0x01FFFFFFFFFFFF;
|
||||
case 50:
|
||||
return 0x03FFFFFFFFFFFF;
|
||||
case 51:
|
||||
return 0x07FFFFFFFFFFFF;
|
||||
case 52:
|
||||
return 0x0FFFFFFFFFFFFF;
|
||||
case 53:
|
||||
return 0x1FFFFFFFFFFFFF;
|
||||
case 54:
|
||||
return 0x3FFFFFFFFFFFFF;
|
||||
case 55:
|
||||
return 0x7FFFFFFFFFFFFF;
|
||||
case 56:
|
||||
return 0xFFFFFFFFFFFFFF;
|
||||
case 57:
|
||||
return 0x01FFFFFFFFFFFFFF;
|
||||
case 58:
|
||||
return 0x03FFFFFFFFFFFFFF;
|
||||
case 59:
|
||||
return 0x07FFFFFFFFFFFFFF;
|
||||
case 60:
|
||||
return 0x0FFFFFFFFFFFFFFF;
|
||||
case 61:
|
||||
return 0x1FFFFFFFFFFFFFFF;
|
||||
case 62:
|
||||
return 0x3FFFFFFFFFFFFFFF;
|
||||
case 63:
|
||||
return 0x7FFFFFFFFFFFFFFF;
|
||||
default:
|
||||
return 0xFFFFFFFFFFFFFFFF;
|
||||
}//switch
|
||||
}
|
||||
|
||||
//Input argument cannot be templatized, otherwise the case statement leads to duplicate definitions
|
||||
ap_uint<8> keepToLen(ap_uint<64> keepValue)
|
||||
{
|
||||
#pragma HLS INLINE
|
||||
|
||||
switch (keepValue)
|
||||
{
|
||||
case 0x01:
|
||||
return 0x1;
|
||||
case 0x3:
|
||||
return 0x2;
|
||||
case 0x07:
|
||||
return 0x3;
|
||||
case 0x0F:
|
||||
return 0x4;
|
||||
case 0x1F:
|
||||
return 0x5;
|
||||
case 0x3F:
|
||||
return 0x6;
|
||||
case 0x7F:
|
||||
return 0x7;
|
||||
case 0xFF:
|
||||
return 0x8;
|
||||
//#if W > 64
|
||||
case 0x01FF:
|
||||
return 0x9;
|
||||
case 0x3FF:
|
||||
return 0xA;
|
||||
case 0x07FF:
|
||||
return 0xB;
|
||||
case 0x0FFF:
|
||||
return 0xC;
|
||||
case 0x1FFF:
|
||||
return 0xD;
|
||||
case 0x3FFF:
|
||||
return 0xE;
|
||||
case 0x7FFF:
|
||||
return 0xF;
|
||||
case 0xFFFF:
|
||||
return 0x10;
|
||||
//#if W > 128
|
||||
case 0x01FFFF:
|
||||
return 0x11;
|
||||
case 0x3FFFF:
|
||||
return 0x12;
|
||||
case 0x07FFFF:
|
||||
return 0x13;
|
||||
case 0x0FFFFF:
|
||||
return 0x14;
|
||||
case 0x1FFFFF:
|
||||
return 0x15;
|
||||
case 0x3FFFFF:
|
||||
return 0x16;
|
||||
case 0x7FFFFF:
|
||||
return 0x17;
|
||||
case 0xFFFFFF:
|
||||
return 0x18;
|
||||
case 0x01FFFFFF:
|
||||
return 0x19;
|
||||
case 0x3FFFFFF:
|
||||
return 0x1A;
|
||||
case 0x07FFFFFF:
|
||||
return 0x1B;
|
||||
case 0x0FFFFFFF:
|
||||
return 0x1C;
|
||||
case 0x1FFFFFFF:
|
||||
return 0x1D;
|
||||
case 0x3FFFFFFF:
|
||||
return 0x1E;
|
||||
case 0x7FFFFFFF:
|
||||
return 0x1F;
|
||||
case 0xFFFFFFFF:
|
||||
return 0x20;
|
||||
//#if W > 256
|
||||
case 0x01FFFFFFFF:
|
||||
return 0x21;
|
||||
case 0x3FFFFFFFF:
|
||||
return 0x22;
|
||||
case 0x07FFFFFFFF:
|
||||
return 0x23;
|
||||
case 0x0FFFFFFFFF:
|
||||
return 0x24;
|
||||
case 0x1FFFFFFFFF:
|
||||
return 0x25;
|
||||
case 0x3FFFFFFFFF:
|
||||
return 0x26;
|
||||
case 0x7FFFFFFFFF:
|
||||
return 0x27;
|
||||
case 0xFFFFFFFFFF:
|
||||
return 0x28;
|
||||
case 0x01FFFFFFFFFF:
|
||||
return 0x29;
|
||||
case 0x3FFFFFFFFFF:
|
||||
return 0x2A;
|
||||
case 0x07FFFFFFFFFF:
|
||||
return 0x2B;
|
||||
case 0x0FFFFFFFFFFF:
|
||||
return 0x2C;
|
||||
case 0x1FFFFFFFFFFF:
|
||||
return 0x2D;
|
||||
case 0x3FFFFFFFFFFF:
|
||||
return 0x2E;
|
||||
case 0x7FFFFFFFFFFF:
|
||||
return 0x2F;
|
||||
case 0xFFFFFFFFFFFF:
|
||||
return 0x30;
|
||||
|
||||
case 0x01FFFFFFFFFFFF:
|
||||
return 0x31;
|
||||
case 0x3FFFFFFFFFFFF:
|
||||
return 0x32;
|
||||
case 0x07FFFFFFFFFFFF:
|
||||
return 0x33;
|
||||
case 0x0FFFFFFFFFFFFF:
|
||||
return 0x34;
|
||||
case 0x1FFFFFFFFFFFFF:
|
||||
return 0x35;
|
||||
case 0x3FFFFFFFFFFFFF:
|
||||
return 0x36;
|
||||
case 0x7FFFFFFFFFFFFF:
|
||||
return 0x37;
|
||||
case 0xFFFFFFFFFFFFFF:
|
||||
return 0x38;
|
||||
case 0x01FFFFFFFFFFFFFF:
|
||||
return 0x39;
|
||||
case 0x3FFFFFFFFFFFFFF:
|
||||
return 0x3A;
|
||||
case 0x07FFFFFFFFFFFFFF:
|
||||
return 0x3B;
|
||||
case 0x0FFFFFFFFFFFFFFF:
|
||||
return 0x3C;
|
||||
case 0x1FFFFFFFFFFFFFFF:
|
||||
return 0x3D;
|
||||
case 0x3FFFFFFFFFFFFFFF:
|
||||
return 0x3E;
|
||||
case 0x7FFFFFFFFFFFFFFF:
|
||||
return 0x3F;
|
||||
case 0xFFFFFFFFFFFFFFFF:
|
||||
return 0x40;
|
||||
default:
|
||||
return 0xFF;
|
||||
//#endif
|
||||
//#endif
|
||||
//#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -155,7 +155,8 @@ public:
|
|||
|
||||
void clear()
|
||||
{
|
||||
#pragma HLS pipeline II=1
|
||||
//#pragma HLS pipeline II=1
|
||||
#pragma HLS INLINE
|
||||
//header = 0;
|
||||
ready = false;
|
||||
idx = 0;
|
||||
|
|
|
@ -29,6 +29,9 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include "send_recv_config.hpp"
|
||||
#include "send_recv.hpp"
|
||||
#include <iostream>
|
||||
#if defined( __VITIS_HLS__)
|
||||
#include "ap_axi_sdata.h"
|
||||
#endif
|
||||
|
||||
//Buffers responses coming from the TCP stack
|
||||
void status_handler(hls::stream<appTxRsp>& txStatus,
|
||||
|
@ -286,7 +289,102 @@ 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,
|
||||
hls::stream<appReadRequest>& readRequest,
|
||||
hls::stream<ap_uint<16> >& rxMetaData,
|
||||
hls::stream<ap_axiu<DATA_WIDTH, 0, 0, 0> >& rxData,
|
||||
hls::stream<appTxMeta>& txMetaData,
|
||||
hls::stream<ap_axiu<DATA_WIDTH, 0, 0, 0> >& txData,
|
||||
hls::stream<appTxRsp>& txStatus,
|
||||
ap_uint<32> pkgWordCount,
|
||||
ap_uint<32> sessionID,
|
||||
ap_uint<32> transferSize,
|
||||
ap_uint<1> runTx
|
||||
)
|
||||
|
||||
{
|
||||
#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
|
||||
#pragma HLS aggregate compact=bit variable=readRequest
|
||||
|
||||
#pragma HLS INTERFACE axis register port=rxMetaData name=s_axis_rx_metadata
|
||||
#pragma HLS INTERFACE axis register port=rxData name=s_axis_rx_data
|
||||
|
||||
#pragma HLS INTERFACE axis register port=txMetaData name=m_axis_tx_metadata
|
||||
#pragma HLS INTERFACE axis register port=txData name=m_axis_tx_data
|
||||
#pragma HLS INTERFACE axis register port=txStatus name=s_axis_tx_status
|
||||
#pragma HLS aggregate compact=bit variable=txMetaData
|
||||
#pragma HLS aggregate compact=bit variable=txStatus
|
||||
|
||||
#pragma HLS INTERFACE ap_none register port=pkgWordCount
|
||||
#pragma HLS INTERFACE ap_none register port=sessionID
|
||||
#pragma HLS INTERFACE ap_none register port=transferSize
|
||||
#pragma HLS INTERFACE ap_none register port=runTx
|
||||
|
||||
|
||||
//This is required to buffer up to 1024 reponses => supporting up to 1024 connections
|
||||
static hls::stream<appTxRsp> txStatusBuffer("txStatusBuffer");
|
||||
#pragma HLS STREAM variable=txStatusBuffer depth=512
|
||||
|
||||
//This is required to buffer up to 512 tx_meta_data => supporting up to 512 connections
|
||||
static hls::stream<appTxMeta> txMetaDataBuffer("txMetaDataBuffer");
|
||||
#pragma HLS STREAM variable=txMetaDataBuffer depth=512
|
||||
|
||||
//This is required to buffer up to MAX_SESSIONS txData
|
||||
static hls::stream<net_axis<DATA_WIDTH> > txDataBuffer("txDataBuffer");
|
||||
#pragma HLS STREAM variable=txDataBuffer depth=512
|
||||
|
||||
static hls::stream<net_axis<DATA_WIDTH> > rxData_internal;
|
||||
#pragma HLS STREAM depth=2 variable=rxData_internal
|
||||
|
||||
static hls::stream<net_axis<DATA_WIDTH> > txData_internal;
|
||||
#pragma HLS STREAM depth=2 variable=txData_internal
|
||||
|
||||
/*
|
||||
* Client
|
||||
*/
|
||||
status_handler(txStatus, txStatusBuffer);
|
||||
txMetaData_handler(txMetaDataBuffer, txMetaData);
|
||||
txDataBuffer_handler(txDataBuffer, txData_internal);
|
||||
|
||||
convert_axis_to_net_axis<DATA_WIDTH>(rxData,
|
||||
rxData_internal);
|
||||
|
||||
convert_net_axis_to_axis<DATA_WIDTH>(txData_internal,
|
||||
txData);
|
||||
|
||||
client<DATA_WIDTH>(
|
||||
txMetaDataBuffer,
|
||||
txDataBuffer,
|
||||
txStatusBuffer,
|
||||
pkgWordCount,
|
||||
sessionID,
|
||||
transferSize,
|
||||
runTx
|
||||
);
|
||||
|
||||
/*
|
||||
* Server
|
||||
*/
|
||||
server<DATA_WIDTH>( listenPort,
|
||||
listenPortStatus,
|
||||
notifications,
|
||||
readRequest,
|
||||
rxMetaData,
|
||||
rxData_internal);
|
||||
|
||||
}
|
||||
#else
|
||||
void send_recv( hls::stream<ap_uint<16> >& listenPort,
|
||||
hls::stream<bool>& listenPortStatus,
|
||||
hls::stream<appNotification>& notifications,
|
||||
|
@ -369,3 +467,4 @@ void send_recv( hls::stream<ap_uint<16> >& listenPort,
|
|||
rxData);
|
||||
|
||||
}
|
||||
#endif
|
|
@ -301,7 +301,7 @@ always @(posedge ap_clk) begin
|
|||
end
|
||||
|
||||
if (running & successOpenCounter== 0 ) begin
|
||||
openCon_cycles ++;
|
||||
openCon_cycles <= openCon_cycles + 1;
|
||||
end
|
||||
|
||||
if (m_axis_tcp_read_pkg_tvalid & m_axis_tcp_read_pkg_tready) begin
|
||||
|
@ -328,7 +328,58 @@ always @(posedge ap_clk) begin
|
|||
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
|
||||
.m_axis_tx_data_TVALID(m_axis_tcp_tx_data_tvalid), // output wire m_axis_tx_data_TVALID
|
||||
.m_axis_tx_data_TREADY(m_axis_tcp_tx_data_tready), // input wire m_axis_tx_data_TREADY
|
||||
.m_axis_tx_data_TDATA(m_axis_tcp_tx_data_tdata), // output wire [63 : 0] m_axis_tx_data_TDATA
|
||||
.m_axis_tx_data_TKEEP(m_axis_tcp_tx_data_tkeep), // output wire [7 : 0] m_axis_tx_data_TKEEP
|
||||
.m_axis_tx_data_TLAST(m_axis_tcp_tx_data_tlast), // output wire [0 : 0] m_axis_tx_data_TLAST
|
||||
.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
|
||||
.s_axis_rx_data_TKEEP(s_axis_tcp_rx_data_tkeep), // input wire [7 : 0] s_axis_rx_data_TKEEP
|
||||
.s_axis_rx_data_TLAST(s_axis_tcp_rx_data_tlast), // input wire [0 : 0] s_axis_rx_data_TLAST
|
||||
.s_axis_rx_metadata_TVALID(s_axis_tcp_rx_meta_tvalid), // input wire s_axis_rx_metadata_TVALID
|
||||
.s_axis_rx_metadata_TREADY(s_axis_tcp_rx_meta_tready), // output wire s_axis_rx_metadata_TREADY
|
||||
.s_axis_rx_metadata_TDATA(s_axis_tcp_rx_meta_tdata), // input wire [15 : 0] s_axis_rx_metadata_TDATA
|
||||
.s_axis_tx_status_TVALID(s_axis_tcp_tx_status_tvalid), // input wire s_axis_tx_status_TVALID
|
||||
.s_axis_tx_status_TREADY(s_axis_tcp_tx_status_tready), // output wire s_axis_tx_status_TREADY
|
||||
.s_axis_tx_status_TDATA(s_axis_tcp_tx_status_tdata), // input wire [23 : 0] s_axis_tx_status_TDATA
|
||||
|
||||
//Client only
|
||||
.runTx(runTx),
|
||||
.transferSize(transferSize), // input wire [0 : 0] transferSize_V
|
||||
.sessionID(sessionID), // 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
|
||||
|
@ -379,7 +430,7 @@ send_recv_ip send_recv (
|
|||
.ap_clk(ap_clk), // input wire aclk
|
||||
.ap_rst_n(ap_rst_n) // input wire aresetn
|
||||
);
|
||||
|
||||
`endif
|
||||
|
||||
/*
|
||||
* Role Controller
|
||||
|
@ -504,7 +555,7 @@ end
|
|||
|
||||
`define DEBUG
|
||||
`ifdef DEBUG
|
||||
/*
|
||||
|
||||
ila_controller controller_debug
|
||||
(
|
||||
.clk(ap_clk), // input wire clk
|
||||
|
@ -520,8 +571,8 @@ ila_controller controller_debug
|
|||
.probe9(ap_start), //1
|
||||
.probe10(ap_done) //1
|
||||
);
|
||||
*/
|
||||
/*
|
||||
|
||||
|
||||
ila_perf benchmark_debug (
|
||||
.clk(ap_clk), // input wire clk
|
||||
|
||||
|
@ -570,7 +621,7 @@ ila_perf benchmark_debug (
|
|||
.probe41(tx_status_down), //32
|
||||
.probe42(tx_data_down) //32
|
||||
);
|
||||
*/
|
||||
|
||||
|
||||
`endif
|
||||
|
||||
|
|
|
@ -53,7 +53,8 @@ int main(int argc, char *argv[])
|
|||
boost::program_options::notify(commandLineArgs);
|
||||
|
||||
// Stat
|
||||
uint32_t ip = 0xC0A802C9;
|
||||
uint32_t local_ip = 0x0A01D497;
|
||||
uint32_t target_ip = 0x0A01D498;
|
||||
uint64_t useConn = 1;
|
||||
uint64_t useIpAddr = 1;
|
||||
uint64_t port = 5001;
|
||||
|
@ -76,17 +77,22 @@ int main(int argc, char *argv[])
|
|||
|
||||
timeInCycles = timeInSeconds * freq * 1000000;
|
||||
if (server == 1) {
|
||||
ip = 0xC0A802CA;
|
||||
local_ip = 0x0A01D498;
|
||||
target_ip = 0x0A01D497;
|
||||
}
|
||||
|
||||
|
||||
printf("usecon:%ld, useIP:%ld, pkgWordCount:%ld,port:%ld, ip:%x,time:%ld, is server:%ld, transferBytes:%ld\n", useConn, useIpAddr, pkgWordCount, port, ip, timeInCycles, server, transferBytes);
|
||||
printf("usecon:%ld, useIP:%ld, pkgWordCount:%ld,port:%ld, local ip:%x, target ip:%x, time:%ld, is server:%ld, transferBytes:%ld\n", useConn, useIpAddr, pkgWordCount, port, local_ip, target_ip, timeInCycles, server, transferBytes);
|
||||
|
||||
// FPGA handles
|
||||
cProc cproc(targetRegion, getpid());
|
||||
|
||||
cproc.changeIpAddress(local_ip);
|
||||
cproc.changeBoardNumber(server);
|
||||
|
||||
// ARP lookup
|
||||
cproc.doArpLookup();
|
||||
// cproc.doArpLookup();
|
||||
|
||||
|
||||
/* -- Register map -----------------------------------------------------------------------
|
||||
/ 0 (WO) : Control
|
||||
|
@ -110,7 +116,7 @@ int main(int argc, char *argv[])
|
|||
cproc.setCSR(useIpAddr, 3);
|
||||
cproc.setCSR(pkgWordCount, 4);
|
||||
cproc.setCSR(port, 5);
|
||||
cproc.setCSR(ip, 6);
|
||||
cproc.setCSR(target_ip, 6);
|
||||
cproc.setCSR(transferBytes, 7);
|
||||
cproc.setCSR(server, 8);
|
||||
cproc.setCSR(timeInSeconds, 9);
|
||||
|
@ -123,6 +129,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
//Probe the done signal
|
||||
while (cproc.getCSR(1) != 1) {}
|
||||
// std::this_thread::sleep_for(1s);
|
||||
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
double durationUs = 0.0;
|
||||
|
@ -141,6 +148,10 @@ int main(int argc, char *argv[])
|
|||
cout << "throughput [gbps]: " << throughput << " latency[us]: " << latency << endl;
|
||||
}
|
||||
|
||||
// Print net stats
|
||||
cproc.printDebug();
|
||||
cproc.printNetDebug();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue