From 3259fd77e4ceea74347daf51627b1bcaf85503ab Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Fri, 15 Nov 2024 14:58:22 -0800 Subject: [PATCH 01/13] add todos --- include/beehive_tcp_msg.sv | 18 +++++++++++++++--- .../tcp/tcp_rx_msg_noc_if_in_datap.sv | 3 ++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/beehive_tcp_msg.sv b/include/beehive_tcp_msg.sv index 1569e56..7f4bf4c 100644 --- a/include/beehive_tcp_msg.sv +++ b/include/beehive_tcp_msg.sv @@ -25,16 +25,28 @@ package beehive_tcp_msg; localparam [`NOC_FBITS_WIDTH-1:0] TCP_TX_APP_PTR_IF_FBITS = {1'b1, TCP_TX_APP_PTR_IF_FBITS_VALUE[`NOC_FBITS_WIDTH-2:0]}; localparam MAX_PAYLOAD_PTR_W = 32; + localparam MAX_PAYLOAD_IDX_W = 8; + // subscribe(num bytes) + // resp(ptr) + // done(???) + // // this is a TCP specific NoC flit typedef struct packed { logic [MAX_FLOWID_W-1:0] flowid; - logic [MAX_PAYLOAD_PTR_W:0] length; + logic [MAX_PAYLOAD_PTR_W:0] length; // TODO: ask katie what this is, should the width also go down 1? + logic [MAX_PAYLOAD_PTR_W-1:0] head_ptr; + logic [MAX_PAYLOAD_PTR_W-1:0] tail_ptr; // these need to be one bit longer to save the wrap-around bit - logic [MAX_PAYLOAD_PTR_W:0] head_ptr; - logic [MAX_PAYLOAD_PTR_W:0] tail_ptr; + logic [MAX_PAYLOAD_IDX_W:0] head_idx; + logic [MAX_PAYLOAD_IDX_W:0] tail_idx; + logic [MAX_PAYLOAD_PTR_W-1:0] head_len; + logic [MAX_PAYLOAD_PTR_W-1:0] tail_len; + logic [MAX_PAYLOAD_PTR_W-1:0] head_cap; + logic [MAX_PAYLOAD_PTR_W-1:0] tail_cap; } tcp_flit_inner; localparam TCP_FLIT_INNER_W = $bits(tcp_flit_inner); + // TODO: check to make sure this doesn't go below 0 localparam TCP_HDR_FLIT_PAD_W = `NOC_DATA_WIDTH - BASE_FLIT_W - TCP_FLIT_INNER_W; localparam TCP_EXTRA_W = TCP_FLIT_INNER_W; diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv index ab12024..209d24e 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv @@ -21,7 +21,8 @@ module tcp_rx_msg_noc_if_in_datap ( tcp_noc_hdr_flit hdr_flit_next; assign app_rx_head_ptr_wr_req_addr = hdr_flit_reg.inner.flowid; - assign app_rx_head_ptr_wr_req_data = hdr_flit_reg.inner.head_ptr; + assign app_rx_head_ptr_wr_req_data = hdr_flit_reg.inner.head_ptr; // TODO: change to be head_idx, head_cap + // TODO: ask katie / figure out where app_rx_head_ptr_wr_req_data goes. assign noc_if_poller_msg_req_flowid = hdr_flit_reg.inner.flowid; assign noc_if_poller_msg_req_len = hdr_flit_reg.inner.length; From 08cb0e5636f3dffc759fe13602089c6be6babeb3 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Sat, 23 Nov 2024 14:17:07 -0800 Subject: [PATCH 02/13] give tcp_slow the whole adjust msg --- include/beehive_noc_msg.sv | 4 +- include/beehive_tcp_msg.sv | 47 +++++++++++++++---- .../tcp/beehive_tcp_slow_engine_wrap.sv | 16 +++---- network_tiles/tcp/tcp_rx_app_if_wrap.sv | 16 +++---- network_tiles/tcp/tcp_rx_msg_noc_if.sv | 16 +++---- network_tiles/tcp/tcp_rx_msg_noc_if_in.sv | 14 +++--- .../tcp/tcp_rx_msg_noc_if_in_ctrl.sv | 10 ++-- .../tcp/tcp_rx_msg_noc_if_in_datap.sv | 11 ++--- network_tiles/tcp/tcp_rx_tile_gen.sv.pyv | 16 +++---- network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv | 24 +++++----- protocols/tcp_slow | 2 +- 11 files changed, 101 insertions(+), 75 deletions(-) diff --git a/include/beehive_noc_msg.sv b/include/beehive_noc_msg.sv index 9bdb42d..e40bfbd 100644 --- a/include/beehive_noc_msg.sv +++ b/include/beehive_noc_msg.sv @@ -84,11 +84,11 @@ package beehive_noc_msg; localparam [`MSG_TYPE_WIDTH-1:0] TCP_NEW_FLOW_NOTIF = `MSG_TYPE_WIDTH'd5; localparam [`MSG_TYPE_WIDTH-1:0] TCP_RX_MSG_REQ = `MSG_TYPE_WIDTH'd6; localparam [`MSG_TYPE_WIDTH-1:0] TCP_RX_MSG_RESP = `MSG_TYPE_WIDTH'd8; - localparam [`MSG_TYPE_WIDTH-1:0] TCP_RX_ADJUST_PTR = `MSG_TYPE_WIDTH'd7; + localparam [`MSG_TYPE_WIDTH-1:0] TCP_RX_ADJUST_IDX = `MSG_TYPE_WIDTH'd7; localparam [`MSG_TYPE_WIDTH-1:0] TCP_TX_MSG_REQ = `MSG_TYPE_WIDTH'd9; localparam [`MSG_TYPE_WIDTH-1:0] TCP_TX_MSG_RESP = `MSG_TYPE_WIDTH'd10; - localparam [`MSG_TYPE_WIDTH-1:0] TCP_TX_ADJUST_PTR = `MSG_TYPE_WIDTH'd11; + localparam [`MSG_TYPE_WIDTH-1:0] TCP_TX_ADJUST_IDX = `MSG_TYPE_WIDTH'd11; localparam [`MSG_TYPE_WIDTH-1:0] IP_REWRITE_ADJUST_TABLE = `MSG_TYPE_WIDTH'd15; diff --git a/include/beehive_tcp_msg.sv b/include/beehive_tcp_msg.sv index 7f4bf4c..185b7f2 100644 --- a/include/beehive_tcp_msg.sv +++ b/include/beehive_tcp_msg.sv @@ -30,19 +30,38 @@ package beehive_tcp_msg; // resp(ptr) // done(???) // + + typedef struct packed { + logic [MAX_PAYLOAD_PTR_W:0] length; + logic [TCP_MSG_RESP_W-MAX_PAYLOAD_PTR_W-1:0] padding; + } tcp_msg_req; + localparam TCP_MSG_REQ_W = $bits(tcp_msg_req); + typedef struct packed { + logic [MAX_PAYLOAD_PTR_W-1:0] bufptr; + // these need to be one bit longer to save the wrap-around bit + logic [MAX_PAYLOAD_IDX_W:0] idx; + logic [MAX_PAYLOAD_PTR_W:0] len; + logic [MAX_PAYLOAD_PTR_W:0] cap; + } tcp_msg_resp; + localparam TCP_MSG_RESP_W = $bits(tcp_msg_resp); + + typedef struct packed { + logic [MAX_PAYLOAD_PTR_W-1:0] bufptr; // probably unneeded. + // these need to be one bit longer to save the wrap-around bit + logic [MAX_PAYLOAD_IDX_W:0] idx; // this is the only field that should be changed from the msg resp to the adjust idx. + logic [MAX_PAYLOAD_PTR_W:0] len; + logic [MAX_PAYLOAD_PTR_W:0] cap; + } tcp_adjust_idx; + localparam TCP_ADJUST_IDX_W = $bits(tcp_adjust_idx); + // this is a TCP specific NoC flit typedef struct packed { logic [MAX_FLOWID_W-1:0] flowid; - logic [MAX_PAYLOAD_PTR_W:0] length; // TODO: ask katie what this is, should the width also go down 1? - logic [MAX_PAYLOAD_PTR_W-1:0] head_ptr; - logic [MAX_PAYLOAD_PTR_W-1:0] tail_ptr; - // these need to be one bit longer to save the wrap-around bit - logic [MAX_PAYLOAD_IDX_W:0] head_idx; - logic [MAX_PAYLOAD_IDX_W:0] tail_idx; - logic [MAX_PAYLOAD_PTR_W-1:0] head_len; - logic [MAX_PAYLOAD_PTR_W-1:0] tail_len; - logic [MAX_PAYLOAD_PTR_W-1:0] head_cap; - logic [MAX_PAYLOAD_PTR_W-1:0] tail_cap; + union packed { + logic [TCP_MSG_REQ_W-1:0] tcp_msg_req; + logic [TCP_MSG_RESP_W-1:0] tcp_msg_resp; + logic [TCP_ADJUST_IDX_W-1:0] tcp_adjust_idx; + } msg_specific; } tcp_flit_inner; localparam TCP_FLIT_INNER_W = $bits(tcp_flit_inner); @@ -56,4 +75,12 @@ package beehive_tcp_msg; logic [TCP_HDR_FLIT_PAD_W-1:0] padding; } tcp_noc_hdr_flit; + typedef struct packed { + bufptr; + len; + capacity; + } tcp_buf_info; + + localparam TCP_BUF_INFO_W = $bits(tcp_buf_info); + endpackage diff --git a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv index a80980e..05fd05b 100644 --- a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv +++ b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv @@ -74,10 +74,10 @@ import packet_struct_pkg::*; ,output logic [TX_PAYLOAD_PTR_W:0] head_ptr_app_tx_rd_resp_data ,input logic app_head_ptr_tx_rd_resp_rdy - ,input logic app_rx_head_ptr_wr_req_val - ,input logic [FLOWID_W-1:0] app_rx_head_ptr_wr_req_addr - ,input logic [RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data - ,output logic rx_head_ptr_app_wr_req_rdy + ,input logic app_rx_head_buf_wr_req_val + ,input logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr + ,input logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old + ,output logic rx_head_buf_app_wr_req_rdy ,input logic app_rx_head_ptr_rd_req_val ,input logic [FLOWID_W-1:0] app_rx_head_ptr_rd_req_addr @@ -182,10 +182,10 @@ import packet_struct_pkg::*; ,.app_new_flow_entry (app_new_flow_lookup ) ,.app_new_flow_notif_rdy (app_new_flow_notif_rdy ) - ,.app_rx_head_ptr_wr_req_val (app_rx_head_ptr_wr_req_val ) - ,.app_rx_head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.app_rx_head_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) - ,.rx_head_ptr_app_wr_req_rdy (rx_head_ptr_app_wr_req_rdy ) + ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) + ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) + ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) + ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) ,.app_rx_head_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) ,.app_rx_head_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) diff --git a/network_tiles/tcp/tcp_rx_app_if_wrap.sv b/network_tiles/tcp/tcp_rx_app_if_wrap.sv index ac4904b..2c4962c 100644 --- a/network_tiles/tcp/tcp_rx_app_if_wrap.sv +++ b/network_tiles/tcp/tcp_rx_app_if_wrap.sv @@ -25,10 +25,10 @@ module tcp_rx_app_if_wrap ,output logic [`NOC_DATA_WIDTH-1:0] tcp_rx_ptr_if_noc_data ,input logic noc_tcp_rx_ptr_if_rdy - ,output logic app_rx_head_ptr_wr_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_ptr_wr_req_addr - ,output logic [RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data - ,input logic rx_head_ptr_app_wr_req_rdy + ,output logic app_rx_head_buf_wr_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr + ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old + ,input logic rx_head_buf_app_wr_req_rdy ,output logic app_rx_head_ptr_rd_req_val ,output logic [FLOWID_W-1:0] app_rx_head_ptr_rd_req_addr @@ -113,10 +113,10 @@ module tcp_rx_app_if_wrap ,.poller_msg_noc_if_dst_fbits (poller_msg_noc_if_dst_fbits ) ,.noc_if_poller_msg_meta_rdy (noc_if_poller_msg_meta_rdy ) - ,.app_rx_head_ptr_wr_req_val (app_rx_head_ptr_wr_req_val ) - ,.app_rx_head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.app_rx_head_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) - ,.rx_head_ptr_app_wr_req_rdy (rx_head_ptr_app_wr_req_rdy ) + ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) + ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) + ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) + ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) ); tcp_msg_poller #( diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if.sv b/network_tiles/tcp/tcp_rx_msg_noc_if.sv index 370917f..c369f2a 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if.sv @@ -31,10 +31,10 @@ module tcp_rx_msg_noc_if #( ,input logic [`NOC_FBITS_WIDTH-1:0] poller_msg_noc_if_dst_fbits ,output logic noc_if_poller_msg_meta_rdy - ,output logic app_rx_head_ptr_wr_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_ptr_wr_req_addr - ,output logic [RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data - ,input logic rx_head_ptr_app_wr_req_rdy + ,output logic app_rx_head_buf_wr_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr + ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old + ,input logic rx_head_buf_app_wr_req_rdy ); tcp_rx_msg_noc_if_in noc_if_in ( @@ -53,10 +53,10 @@ module tcp_rx_msg_noc_if #( ,.noc_if_poller_msg_dst_fbits (noc_if_poller_msg_dst_fbits ) ,.poller_noc_if_msg_req_rdy (poller_noc_if_msg_req_rdy ) - ,.app_rx_head_ptr_wr_req_val (app_rx_head_ptr_wr_req_val ) - ,.app_rx_head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.app_rx_head_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) - ,.rx_head_ptr_app_wr_req_rdy (rx_head_ptr_app_wr_req_rdy ) + ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) + ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) + ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) + ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) ); tcp_rx_msg_noc_if_out #( diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_in.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_in.sv index acc69dc..4fbd1cb 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_in.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_in.sv @@ -15,10 +15,10 @@ module tcp_rx_msg_noc_if_in ( ,output logic [`MSG_SRC_FBITS_WIDTH-1:0] noc_if_poller_msg_dst_fbits ,input logic poller_noc_if_msg_req_rdy - ,output logic app_rx_head_ptr_wr_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_ptr_wr_req_addr - ,output logic [RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data - ,input logic rx_head_ptr_app_wr_req_rdy + ,output logic app_rx_head_buf_wr_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr + ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old + ,input logic rx_head_buf_app_wr_req_rdy ); tcp_rx_msg_noc_if_in_ctrl ctrl ( @@ -32,8 +32,8 @@ module tcp_rx_msg_noc_if_in ( ,.noc_if_poller_msg_req_val (noc_if_poller_msg_req_val ) ,.poller_noc_if_msg_req_rdy (poller_noc_if_msg_req_rdy ) - ,.app_rx_head_ptr_wr_req_val (app_rx_head_ptr_wr_req_val ) - ,.rx_head_ptr_app_wr_req_rdy (rx_head_ptr_app_wr_req_rdy ) + ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) + ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) ,.ctrl_datap_store_hdr_flit (ctrl_datap_store_hdr_flit ) ); @@ -51,7 +51,7 @@ module tcp_rx_msg_noc_if_in ( ,.noc_if_poller_msg_dst_fbits (noc_if_poller_msg_dst_fbits ) ,.app_rx_head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.app_rx_head_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) + ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) ,.ctrl_datap_store_hdr_flit (ctrl_datap_store_hdr_flit ) ); diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv index a00afd3..c049726 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv @@ -10,8 +10,8 @@ module tcp_rx_msg_noc_if_in_ctrl ( ,output logic noc_if_poller_msg_req_val ,input logic poller_noc_if_msg_req_rdy - ,output logic app_rx_head_ptr_wr_req_val - ,input logic rx_head_ptr_app_wr_req_rdy + ,output logic app_rx_head_buf_wr_req_val + ,input logic rx_head_buf_app_wr_req_rdy ,output logic ctrl_datap_store_hdr_flit ); @@ -44,7 +44,7 @@ module tcp_rx_msg_noc_if_in_ctrl ( noc_if_poller_msg_req_val = 1'b0; - app_rx_head_ptr_wr_req_val = 1'b0; + app_rx_head_buf_wr_req_val = 1'b0; ctrl_datap_store_hdr_flit = 1'b0; @@ -75,9 +75,9 @@ module tcp_rx_msg_noc_if_in_ctrl ( end end RX_ADJUST_PTR: begin - app_rx_head_ptr_wr_req_val = 1'b1; + app_rx_head_buf_wr_req_val = 1'b1; - if (rx_head_ptr_app_wr_req_rdy) begin + if (rx_head_buf_app_wr_req_rdy) begin state_next = READY; end else begin diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv index 209d24e..bfa9eb3 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv @@ -11,8 +11,8 @@ module tcp_rx_msg_noc_if_in_datap ( ,output logic [`MSG_SRC_Y_WIDTH-1:0] noc_if_poller_msg_dst_y ,output logic [`MSG_SRC_FBITS_WIDTH-1:0] noc_if_poller_msg_dst_fbits - ,output logic [FLOWID_W-1:0] app_rx_head_ptr_wr_req_addr - ,output logic [RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data + ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr + ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old // now, the app returns the same buffer info that it got, to allow tcp_slow to do the +1 ,input logic ctrl_datap_store_hdr_flit ); @@ -20,12 +20,11 @@ module tcp_rx_msg_noc_if_in_datap ( tcp_noc_hdr_flit hdr_flit_reg; tcp_noc_hdr_flit hdr_flit_next; - assign app_rx_head_ptr_wr_req_addr = hdr_flit_reg.inner.flowid; - assign app_rx_head_ptr_wr_req_data = hdr_flit_reg.inner.head_ptr; // TODO: change to be head_idx, head_cap - // TODO: ask katie / figure out where app_rx_head_ptr_wr_req_data goes. + assign app_rx_head_buf_wr_req_addr = hdr_flit_reg.inner.flowid; + assign app_rx_head_buf_wr_req_data_old = hdr_flit_reg.inner.msg_specific.tcp_adjust_idx;// TODO: do i need to do it field by field assign noc_if_poller_msg_req_flowid = hdr_flit_reg.inner.flowid; - assign noc_if_poller_msg_req_len = hdr_flit_reg.inner.length; + assign noc_if_poller_msg_req_len = hdr_flit_reg.inner.msg_specific.tcp_msg_req.length; assign noc_if_poller_msg_dst_x = hdr_flit_reg.core.src_x_coord; assign noc_if_poller_msg_dst_y = hdr_flit_reg.core.src_y_coord; assign noc_if_poller_msg_dst_fbits = hdr_flit_reg.core.src_fbits; diff --git a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv index b48dc59..c811cc4 100644 --- a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv +++ b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv @@ -77,10 +77,10 @@ import tcp_pkg::*; ,input four_tuple_struct app_new_flow_lookup ,output logic app_new_flow_notif_rdy - ,output logic app_rx_head_ptr_wr_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_ptr_wr_req_addr - ,output logic [RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data - ,input logic rx_head_ptr_app_wr_req_rdy + ,output logic app_rx_head_buf_wr_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr + ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old + ,input logic rx_head_buf_app_wr_req_rdy ,output logic app_rx_head_ptr_rd_req_val ,output logic [FLOWID_W-1:0] app_rx_head_ptr_rd_req_addr @@ -579,10 +579,10 @@ print(router_wires) ,.tcp_rx_ptr_if_noc_data (rx_app_dtc_ctrl_noc1_data ) ,.noc_tcp_rx_ptr_if_rdy (dtc_rx_app_ctrl_noc1_rdy ) - ,.app_rx_head_ptr_wr_req_val (app_rx_head_ptr_wr_req_val ) - ,.app_rx_head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.app_rx_head_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) - ,.rx_head_ptr_app_wr_req_rdy (rx_head_ptr_app_wr_req_rdy ) + ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) + ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) + ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) + ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) ,.app_rx_head_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) ,.app_rx_head_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) diff --git a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv index 266d9ce..87cf379 100644 --- a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv +++ b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv @@ -125,10 +125,10 @@ import tcp_misc_pkg::*; logic [TX_PAYLOAD_PTR_W:0] head_ptr_app_tx_rd_resp_data; logic app_head_ptr_tx_rd_resp_rdy; - logic app_rx_head_ptr_wr_req_val; - logic [FLOWID_W-1:0] app_rx_head_ptr_wr_req_addr; - logic [RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data; - logic rx_head_ptr_app_wr_req_rdy; + logic app_rx_head_buf_wr_req_val; + logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr; + logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old; + logic rx_head_buf_app_wr_req_rdy; logic app_rx_head_ptr_rd_req_val; logic [FLOWID_W-1:0] app_rx_head_ptr_rd_req_addr; @@ -213,10 +213,10 @@ import tcp_misc_pkg::*; ,.app_new_flow_flowid (app_new_flow_flowid ) ,.app_new_flow_notif_rdy (app_new_flow_notif_rdy ) - ,.app_rx_head_ptr_wr_req_val (app_rx_head_ptr_wr_req_val ) - ,.app_rx_head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.app_rx_head_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) - ,.rx_head_ptr_app_wr_req_rdy (rx_head_ptr_app_wr_req_rdy ) + ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) + ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) + ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) + ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) ,.app_rx_head_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) ,.app_rx_head_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) @@ -308,10 +308,10 @@ import tcp_misc_pkg::*; ,.head_ptr_app_tx_rd_resp_data (head_ptr_app_tx_rd_resp_data ) ,.app_head_ptr_tx_rd_resp_rdy (app_head_ptr_tx_rd_resp_rdy ) - ,.app_rx_head_ptr_wr_req_val (app_rx_head_ptr_wr_req_val ) - ,.app_rx_head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.app_rx_head_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) - ,.rx_head_ptr_app_wr_req_rdy (rx_head_ptr_app_wr_req_rdy ) + ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) + ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) + ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) + ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) ,.app_rx_head_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) ,.app_rx_head_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) diff --git a/protocols/tcp_slow b/protocols/tcp_slow index 7edb737..ed1701a 160000 --- a/protocols/tcp_slow +++ b/protocols/tcp_slow @@ -1 +1 @@ -Subproject commit 7edb737fd43b7828a01a9dccf7472be3fcc04d45 +Subproject commit ed1701a63319307c616fcd2ac49db8c55201a194 From 33c7a51ec975b20870bbb13d0e1d3a1c9caa2659 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Mon, 2 Dec 2024 13:53:53 -0800 Subject: [PATCH 03/13] add tcp_slow interface structs --- include/beehive_tcp_msg.sv | 44 ++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/include/beehive_tcp_msg.sv b/include/beehive_tcp_msg.sv index 185b7f2..bc0aaea 100644 --- a/include/beehive_tcp_msg.sv +++ b/include/beehive_tcp_msg.sv @@ -31,33 +31,49 @@ package beehive_tcp_msg; // done(???) // - typedef struct packed { - logic [MAX_PAYLOAD_PTR_W:0] length; - logic [TCP_MSG_RESP_W-MAX_PAYLOAD_PTR_W-1:0] padding; - } tcp_msg_req; - localparam TCP_MSG_REQ_W = $bits(tcp_msg_req); typedef struct packed { logic [MAX_PAYLOAD_PTR_W-1:0] bufptr; // these need to be one bit longer to save the wrap-around bit logic [MAX_PAYLOAD_IDX_W:0] idx; logic [MAX_PAYLOAD_PTR_W:0] len; logic [MAX_PAYLOAD_PTR_W:0] cap; + } tcp_buf_info; + localparam TCP_BUF_INFO_W = $bits(tcp_buf_info); + + typedef struct packed { + tcp_buf_info old_buf_info; + logic [MAX_PAYLOAD_PTR_W:0] bytes_consumed; + } tcp_buf_update; + localparam TCP_BUF_UPDATE_W = $bits(tcp_buf_update); + + typedef struct packed { + logic [MAX_PAYLOAD_PTR_W:0] length; + logic [TCP_ADJUST_IDX_W-MAX_PAYLOAD_PTR_W-1:0] padding; + } tcp_msg_req; + localparam TCP_MSG_REQ_W = $bits(tcp_msg_req); + + typedef struct packed { + tcp_buf_info buf_info; + logic [TCP_ADJUST_IDX_W-TCP_BUF_INFO_W-1:0] padding; } tcp_msg_resp; localparam TCP_MSG_RESP_W = $bits(tcp_msg_resp); typedef struct packed { - logic [MAX_PAYLOAD_PTR_W-1:0] bufptr; // probably unneeded. - // these need to be one bit longer to save the wrap-around bit - logic [MAX_PAYLOAD_IDX_W:0] idx; // this is the only field that should be changed from the msg resp to the adjust idx. - logic [MAX_PAYLOAD_PTR_W:0] len; - logic [MAX_PAYLOAD_PTR_W:0] cap; + tcp_buf_update update_info; } tcp_adjust_idx; localparam TCP_ADJUST_IDX_W = $bits(tcp_adjust_idx); + // problem: what does the mechanism to update a ptr look like? ideally it would be incr(amt), but that requires a rd req to first read it and then update. + // maybe incr(amt, old_data)? then the tcp_slow module adds amt to old.ptr, if it's > len, it will know to incr idx. and for now assert that it should always be == len. + // that's the most flexible interface bc if we just had idx_update_req then it wouldn't support compaction, if we just did ptr_update_to then it wouldn't really be what it's doing + + // TODO: update tcp.sv interface to have ptr reads and writes be the right way + // this is a TCP specific NoC flit typedef struct packed { logic [MAX_FLOWID_W-1:0] flowid; union packed { + // TODO: probably change these into the struct type... not logic logic [TCP_MSG_REQ_W-1:0] tcp_msg_req; logic [TCP_MSG_RESP_W-1:0] tcp_msg_resp; logic [TCP_ADJUST_IDX_W-1:0] tcp_adjust_idx; @@ -75,12 +91,4 @@ package beehive_tcp_msg; logic [TCP_HDR_FLIT_PAD_W-1:0] padding; } tcp_noc_hdr_flit; - typedef struct packed { - bufptr; - len; - capacity; - } tcp_buf_info; - - localparam TCP_BUF_INFO_W = $bits(tcp_buf_info); - endpackage From 5b9ff5e65798cd3811b16ca07a742ab189472389 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Mon, 2 Dec 2024 13:54:07 -0800 Subject: [PATCH 04/13] update tcp_slow --- protocols/tcp_slow | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocols/tcp_slow b/protocols/tcp_slow index ed1701a..a611081 160000 --- a/protocols/tcp_slow +++ b/protocols/tcp_slow @@ -1 +1 @@ -Subproject commit ed1701a63319307c616fcd2ac49db8c55201a194 +Subproject commit a611081dfbda19679286c0a26908b1602b7b9e25 From 276ebf085b3948d65bd0bc19c41f4bdae6f214c0 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Thu, 5 Dec 2024 15:55:41 -0800 Subject: [PATCH 05/13] confusion --- include/beehive_tcp_msg.sv | 35 +++++++++++++++++++++-------------- protocols/tcp_slow | 2 +- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/include/beehive_tcp_msg.sv b/include/beehive_tcp_msg.sv index bc0aaea..714949a 100644 --- a/include/beehive_tcp_msg.sv +++ b/include/beehive_tcp_msg.sv @@ -25,36 +25,43 @@ package beehive_tcp_msg; localparam [`NOC_FBITS_WIDTH-1:0] TCP_TX_APP_PTR_IF_FBITS = {1'b1, TCP_TX_APP_PTR_IF_FBITS_VALUE[`NOC_FBITS_WIDTH-2:0]}; localparam MAX_PAYLOAD_PTR_W = 32; - localparam MAX_PAYLOAD_IDX_W = 8; - // subscribe(num bytes) - // resp(ptr) - // done(???) - // + localparam MAX_PAYLOAD_IDX_W = 8; // i think 256 buffers per flow is more than enough... +// TODO: what to do about these ptr type lengths being longer than the real ones used? do i need to declare 2 types now, one for the one in the pkt and one for the one here? +// TODO: convert sram write req stuff (e.g. store buf commit ptr rd req) all to idx instead. but what type/bit width? typedef struct packed { - logic [MAX_PAYLOAD_PTR_W-1:0] bufptr; + logic [MAX_PAYLOAD_PTR_W-1:0] ptr; // these need to be one bit longer to save the wrap-around bit - logic [MAX_PAYLOAD_IDX_W:0] idx; logic [MAX_PAYLOAD_PTR_W:0] len; logic [MAX_PAYLOAD_PTR_W:0] cap; - } tcp_buf_info; - localparam TCP_BUF_INFO_W = $bits(tcp_buf_info); + } tcp_buf; + localparam TCP_BUF_W = $bits(tcp_buf); + + typedef struct packed { + logic [MAX_PAYLOAD_IDX_W:0] idx; + } tcp_buf_idx; + + typedef struct packed { + tcp_buf buf_info; + } tcp_buf_with_idx; + localparam TCP_BUF_WITH_IDX_W = $bits(tcp_buf_with_idx); typedef struct packed { - tcp_buf_info old_buf_info; - logic [MAX_PAYLOAD_PTR_W:0] bytes_consumed; + logic [MAX_PAYLOAD_PTR_W:0] leftover_bytes_consumed; // assumed to be 0 at the moment (e.g. you use the entire buffer we give you) + logic [MAX_PAYLOAD_PTR_W:0] bufs_consumed; // assumed to be 1 at the moment (e.g. you use the entire buffer we give you) + tcp_buf_with_idx prev_buf; } tcp_buf_update; localparam TCP_BUF_UPDATE_W = $bits(tcp_buf_update); typedef struct packed { - logic [MAX_PAYLOAD_PTR_W:0] length; + logic [MAX_PAYLOAD_PTR_W:0] __length; // unused at the moment, we just return 1 buf unilaterally (bc we can't return more than 1 yet.) logic [TCP_ADJUST_IDX_W-MAX_PAYLOAD_PTR_W-1:0] padding; } tcp_msg_req; localparam TCP_MSG_REQ_W = $bits(tcp_msg_req); typedef struct packed { - tcp_buf_info buf_info; - logic [TCP_ADJUST_IDX_W-TCP_BUF_INFO_W-1:0] padding; + tcp_buf_with_idx buf; + logic [TCP_ADJUST_IDX_W-TCP_BUF_WITH_IDX_W-1:0] padding; } tcp_msg_resp; localparam TCP_MSG_RESP_W = $bits(tcp_msg_resp); diff --git a/protocols/tcp_slow b/protocols/tcp_slow index a611081..1d5dcc1 160000 --- a/protocols/tcp_slow +++ b/protocols/tcp_slow @@ -1 +1 @@ -Subproject commit a611081dfbda19679286c0a26908b1602b7b9e25 +Subproject commit 1d5dcc1b45cf6d55b25ba34ecd263ea82b2787f7 From aa66c0517631c09e41269290a29dc8baa611e309 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Thu, 9 Jan 2025 17:14:26 -0800 Subject: [PATCH 06/13] get most of the buf store side written --- include/beehive_tcp_msg.sv | 6 +- network_tiles/tcp/beehive_rx_pipe_wrap.sv | 582 --------------- network_tiles/tcp/beehive_tcp.core | 1 - network_tiles/tcp/beehive_tcp_engine_wrap.sv | 682 ------------------ .../tcp/beehive_tcp_slow_engine_wrap.sv | 40 +- network_tiles/tcp/tcp_msg_ptr_poller_datap.sv | 2 +- network_tiles/tcp/tcp_rx_ptr_if.sv | 99 --- network_tiles/tcp/tcp_rx_ptr_if_ctrl.sv | 144 ---- network_tiles/tcp/tcp_rx_ptr_if_datap.sv | 90 --- network_tiles/tcp/tcp_rx_tile.sv | 40 +- network_tiles/tcp/tcp_rx_tile_gen.sv.pyv | 40 +- network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv | 72 +- protocols/tcp_hw | 2 +- protocols/tcp_slow | 2 +- .../ip_encap_tcp_pull_echo_sim.flist | 2 - 15 files changed, 103 insertions(+), 1701 deletions(-) delete mode 100644 network_tiles/tcp/beehive_rx_pipe_wrap.sv delete mode 100644 network_tiles/tcp/beehive_tcp_engine_wrap.sv delete mode 100644 network_tiles/tcp/tcp_rx_ptr_if.sv delete mode 100644 network_tiles/tcp/tcp_rx_ptr_if_ctrl.sv delete mode 100644 network_tiles/tcp/tcp_rx_ptr_if_datap.sv diff --git a/include/beehive_tcp_msg.sv b/include/beehive_tcp_msg.sv index 714949a..f71318d 100644 --- a/include/beehive_tcp_msg.sv +++ b/include/beehive_tcp_msg.sv @@ -25,7 +25,8 @@ package beehive_tcp_msg; localparam [`NOC_FBITS_WIDTH-1:0] TCP_TX_APP_PTR_IF_FBITS = {1'b1, TCP_TX_APP_PTR_IF_FBITS_VALUE[`NOC_FBITS_WIDTH-2:0]}; localparam MAX_PAYLOAD_PTR_W = 32; - localparam MAX_PAYLOAD_IDX_W = 8; // i think 256 buffers per flow is more than enough... + localparam MAX_NUM_BUFS = 8; // i think 8 buffers per flow is enough... who knows?. this is per flow. + localparam MAX_PAYLOAD_IDX_W = $clog2(MAX_NUM_BUFS); // TODO: what to do about these ptr type lengths being longer than the real ones used? do i need to declare 2 types now, one for the one in the pkt and one for the one here? // TODO: convert sram write req stuff (e.g. store buf commit ptr rd req) all to idx instead. but what type/bit width? @@ -43,12 +44,13 @@ package beehive_tcp_msg; typedef struct packed { tcp_buf buf_info; + tcp_buf_idx idx; } tcp_buf_with_idx; localparam TCP_BUF_WITH_IDX_W = $bits(tcp_buf_with_idx); typedef struct packed { logic [MAX_PAYLOAD_PTR_W:0] leftover_bytes_consumed; // assumed to be 0 at the moment (e.g. you use the entire buffer we give you) - logic [MAX_PAYLOAD_PTR_W:0] bufs_consumed; // assumed to be 1 at the moment (e.g. you use the entire buffer we give you) + logic [MAX_PAYLOAD_IDX_W:0] bufs_consumed; // assumed to be 1 at the moment (e.g. you use the entire buffer we give you) tcp_buf_with_idx prev_buf; } tcp_buf_update; localparam TCP_BUF_UPDATE_W = $bits(tcp_buf_update); diff --git a/network_tiles/tcp/beehive_rx_pipe_wrap.sv b/network_tiles/tcp/beehive_rx_pipe_wrap.sv deleted file mode 100644 index f85f575..0000000 --- a/network_tiles/tcp/beehive_rx_pipe_wrap.sv +++ /dev/null @@ -1,582 +0,0 @@ -`include "beehive_tcp_engine_defs.svh" -module beehive_rx_pipe_wrap ( - input clk - ,input rst - - ,input logic [`IP_ADDR_W-1:0] recv_src_ip - ,input logic [`IP_ADDR_W-1:0] recv_dst_ip - ,input logic recv_tcp_hdr_val - ,input tcp_pkt_hdr recv_tcp_hdr - ,input logic recv_payload_val - ,input payload_buf_struct recv_payload_entry - ,output logic recv_hdr_rdy - - ,output logic new_flow_val - ,output logic [FLOWID_W-1:0] new_flow_flow_id - ,output four_tuple_struct new_flow_lookup_entry - ,output tx_state_struct new_flow_tx_state - ,output recv_state_entry new_flow_rx_state - ,input logic new_flow_rdy - - ,output logic app_new_flow_notif_val - ,output logic [FLOWID_W-1:0] app_new_flow_flowid - ,output four_tuple_struct app_new_flow_entry - ,input logic app_new_flow_notif_rdy - - ,output logic curr_recv_state_rd_req_val - ,output logic [FLOWID_W-1:0] curr_recv_state_rd_req_addr - ,input logic curr_recv_state_rd_req_rdy - - ,input logic curr_recv_state_rd_resp_val - ,input recv_state_entry curr_recv_state_rd_resp_data - ,output logic curr_recv_state_rd_resp_rdy - - ,output logic next_recv_state_wr_req_val - ,output logic [FLOWID_W-1:0] next_recv_state_wr_req_addr - ,output recv_state_entry next_recv_state_wr_req_data - ,input logic next_recv_state_wr_req_rdy - - ,output logic curr_tx_state_rd_req_val - ,output logic [FLOWID_W-1:0] curr_tx_state_rd_req_flowid - ,input logic curr_tx_state_rd_req_rdy - - ,input logic curr_tx_state_rd_resp_val - ,input tx_state_struct curr_tx_state_rd_resp_data - ,output logic curr_tx_state_rd_resp_rdy - - ,output logic rx_pipe_tx_state_wr_req_val - ,output logic [FLOWID_W-1:0] rx_pipe_tx_state_wr_req_flowid - ,output tx_state_struct rx_pipe_tx_state_wr_req_data - ,input logic tx_state_rx_pipe_wr_req_rdy - - ,output logic rx_pipe_rt_store_set_rt_flag_val - ,output logic [FLOWID_W-1:0] rx_pipe_rt_store_set_rt_flag_flowid - - ,output rx_pipe_tx_head_ptr_wr_req_val - ,output [FLOWID_W-1:0] rx_pipe_tx_head_ptr_wr_req_flowid - ,output [TX_PAYLOAD_PTR_W:0] rx_pipe_tx_head_ptr_wr_req_data - ,input tx_head_ptr_rx_pipe_wr_req_rdy - - ,output logic rx_send_queue_enq_req_val - ,output rx_send_queue_struct rx_send_queue_enq_req_data - ,input logic send_queue_rx_full - - ,output logic rx_pipe_rx_head_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] rx_pipe_rx_head_ptr_rd_req_addr - ,input logic rx_head_ptr_rx_pipe_rd_req_rdy - - ,input logic rx_head_ptr_rx_pipe_rd_resp_val - ,input logic [RX_PAYLOAD_PTR_W:0] rx_head_ptr_rx_pipe_rd_resp_data - ,output logic rx_pipe_rx_head_ptr_rd_resp_rdy - - ,output logic rx_pipe_rx_tail_ptr_wr_req_val - ,output logic [FLOWID_W-1:0] rx_pipe_rx_tail_ptr_wr_req_addr - ,output logic [RX_PAYLOAD_PTR_W:0] rx_pipe_rx_tail_ptr_wr_req_data - ,input logic rx_tail_ptr_rx_pipe_wr_req_rdy - - ,output logic rx_pipe_rx_tail_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] rx_pipe_rx_tail_ptr_rd_req_addr - ,input logic rx_tail_ptr_rx_pipe_rd_req_rdy - - ,input logic rx_tail_ptr_rx_pipe_rd_resp_val - ,input logic [RX_PAYLOAD_PTR_W:0] rx_tail_ptr_rx_pipe_rd_resp_data - ,output logic rx_pipe_rx_tail_ptr_rd_resp_rdy - - ,input logic rx_store_buf_q_rd_req_val - ,output rx_store_buf_q_struct rx_store_buf_q_rd_req_data - ,output logic rx_store_buf_q_empty -); - - logic tcp_fsm_clear_temp_flowid_val; - four_tuple_struct tcp_fsm_clear_temp_tag; - - logic tcp_fsm_update_tcp_state_val; - logic [FLOWID_W-1:0] tcp_fsm_update_tcp_state_flowid; - tcp_flow_state_struct tcp_fsm_update_tcp_state_data; - logic tcp_fsm_update_tcp_state_rdy; - - logic est_hdr_val; - tcp_pkt_hdr est_tcp_hdr; - logic [FLOWID_W-1:0] est_flowid; - logic est_payload_val; - payload_buf_struct est_payload_entry; - logic est_pipe_rdy; - - logic fsm_send_pkt_enqueue_val; - logic [FLOWID_W-1:0] fsm_send_pkt_enqueue_flowid; - logic [`IP_ADDR_W-1:0] fsm_send_pkt_enqueue_src_ip; - logic [`IP_ADDR_W-1:0] fsm_send_pkt_enqueue_dst_ip; - tcp_pkt_hdr fsm_send_pkt_enqueue_hdr; - logic fsm_send_pkt_enqueue_rdy; - - logic tcp_fsm_new_flow_val; - logic [FLOWID_W-1:0] tcp_fsm_new_flow_flowid; - four_tuple_struct tcp_fsm_new_flow_lookup_entry; - recv_state_entry tcp_fsm_new_flow_rx_state; - tx_state_struct tcp_fsm_new_flow_tx_state; - logic tcp_fsm_clear_flowid_val; - four_tuple_struct tcp_fsm_clear_flowid_tag; - logic tcp_fsm_new_flow_state_rdy; - - rx_send_queue_struct rx_send_queue_entry; - - logic fsm_reinject_q_enq_req_val; - fsm_reinject_queue_struct fsm_reinject_q_enq_req_data; - logic fsm_reinject_q_full; - - logic merger_fsm_reinject_q_deq_req_val; - fsm_reinject_queue_struct fsm_reinject_q_merger_deq_resp_data; - logic fsm_reinject_q_merger_empty; - - logic issue_merger_est_hdr_val; - tcp_pkt_hdr issue_merger_est_tcp_hdr; - logic [FLOWID_W-1:0] issue_merger_est_flowid; - logic issue_merger_est_payload_val; - payload_buf_struct issue_merger_est_payload_entry; - logic merger_issue_est_pipe_rdy; - - logic issue_fsm_q_hdr_val; - logic [`IP_ADDR_W-1:0] issue_fsm_q_hdr_src_ip; - logic [`IP_ADDR_W-1:0] issue_fsm_q_hdr_dst_ip; - tcp_pkt_hdr issue_fsm_q_tcp_hdr; - logic issue_fsm_q_payload_val; - payload_buf_struct issue_fsm_q_payload_entry; - logic issue_fsm_q_new_flow; - logic [FLOWID_W-1:0] issue_fsm_q_flowid; - logic fsm_q_issue_rdy; - - logic issue_fsm_q_enq_req_val; - fsm_input_queue_struct issue_fsm_q_enq_req_data; - logic fsm_q_issue_full; - - logic fsm_q_fsm_pipe_hdr_val; - logic [`IP_ADDR_W-1:0] fsm_q_fsm_pipe_hdr_src_ip; - logic [`IP_ADDR_W-1:0] fsm_q_fsm_pipe_hdr_dst_ip; - tcp_pkt_hdr fsm_q_fsm_pipe_tcp_hdr; - logic fsm_q_fsm_pipe_payload_val; - payload_buf_struct fsm_q_fsm_pipe_payload_entry; - logic fsm_q_fsm_pipe_new_flow; - logic [FLOWID_W-1:0] fsm_q_fsm_pipe_flowid; - logic fsm_pipe_fsm_q_rdy; - - logic fsm_q_fsm_pipe_empty; - fsm_input_queue_struct fsm_q_fsm_pipe_deq_resp_data; - logic fsm_pipe_fsm_q_deq_req_val; - - logic fsm_tcp_state_rd_req_val; - logic [FLOWID_W-1:0] fsm_tcp_state_rd_req_flowid; - logic tcp_state_fsm_rd_req_rdy; - - logic tcp_state_fsm_rd_resp_val; - tcp_flow_state_struct tcp_state_fsm_rd_resp_data; - logic fsm_tcp_state_rd_resp_rdy; - - logic fsm_arbiter_tx_state_rd_req_val; - logic [FLOWID_W-1:0] fsm_arbiter_tx_state_rd_req_flowid; - logic arbiter_fsm_tx_state_rd_req_grant; - - logic fsm_arbiter_rx_state_rd_req_val; - logic [FLOWID_W-1:0] fsm_arbiter_rx_state_rd_req_flowid; - logic arbiter_fsm_rx_state_rd_req_grant; - - logic est_arbiter_tx_state_rd_req_val; - logic [FLOWID_W-1:0] est_arbiter_tx_state_rd_req_flowid; - logic arbiter_est_tx_state_rd_req_grant; - - logic est_arbiter_rx_state_rd_req_val; - logic [FLOWID_W-1:0] est_arbiter_rx_state_rd_req_flowid; - logic arbiter_est_rx_state_rd_req_grant; - - logic arbiter_fsm_tx_state_rd_resp_val; - tx_state_struct arbiter_fsm_tx_state_rd_resp_data; - logic fsm_arbiter_tx_state_rd_resp_rdy; - - logic arbiter_fsm_rx_state_rd_resp_val; - recv_state_entry arbiter_fsm_rx_state_rd_resp_data; - logic fsm_arbiter_rx_state_rd_resp_rdy; - - logic arbiter_est_tx_state_rd_resp_val; - tx_state_struct arbiter_est_tx_state_rd_resp_data; - logic est_arbiter_tx_state_rd_resp_rdy; - - logic arbiter_est_rx_state_rd_resp_val; - recv_state_entry arbiter_est_rx_state_rd_resp_data; - logic est_arbiter_rx_state_rd_resp_rdy; - - logic issue_pipe_flowid_manager_flowid_req; - logic flowid_manager_issue_pipe_flowid_avail; - logic [FLOWID_W-1:0] flowid_manager_issue_pipe_flowid; - - logic rx_store_buf_q_wr_req_val; - rx_store_buf_q_struct rx_store_buf_q_wr_req_data; - logic rx_store_buf_q_full; - - assign rx_send_queue_enq_req_val = fsm_send_pkt_enqueue_val & ~send_queue_rx_full; - assign rx_send_queue_entry.flowid = fsm_send_pkt_enqueue_flowid; - assign rx_send_queue_entry.src_ip = fsm_send_pkt_enqueue_src_ip; - assign rx_send_queue_entry.dst_ip = fsm_send_pkt_enqueue_dst_ip; - assign rx_send_queue_entry.tcp_hdr = fsm_send_pkt_enqueue_hdr; - assign rx_send_queue_enq_req_data = rx_send_queue_entry; - assign fsm_send_pkt_enqueue_rdy = ~send_queue_rx_full; - - assign new_flow_val = tcp_fsm_new_flow_val; - assign new_flow_flow_id = tcp_fsm_new_flow_flowid; - assign new_flow_lookup_entry = tcp_fsm_new_flow_lookup_entry; - assign new_flow_tx_state = tcp_fsm_new_flow_tx_state; - assign new_flow_rx_state = tcp_fsm_new_flow_rx_state; - - assign tcp_fsm_new_flow_state_rdy = new_flow_rdy; - - flowid_manager flowid_manager ( - .clk (clk) - ,.rst (rst) - - ,.flowid_ret_val (1'b0) - ,.flowid_ret_id ('0) - ,.flowid_ret_rdy () - - ,.flowid_req (issue_pipe_flowid_manager_flowid_req ) - ,.flowid_avail (flowid_manager_issue_pipe_flowid_avail ) - ,.flowid (flowid_manager_issue_pipe_flowid ) - ); - - rx_issue_pipe issue_pipe ( - .clk (clk) - ,.rst (rst) - - ,.recv_src_ip (recv_src_ip ) - ,.recv_dst_ip (recv_dst_ip ) - ,.recv_tcp_hdr_val (recv_tcp_hdr_val ) - ,.recv_tcp_hdr (recv_tcp_hdr ) - ,.recv_hdr_rdy (recv_hdr_rdy ) - - ,.recv_payload_val (recv_payload_val ) - ,.recv_payload_entry (recv_payload_entry ) - - ,.tcp_fsm_clear_flowid_val (1'b0) - ,.tcp_fsm_clear_flowid_tag ('0) - ,.tcp_fsm_clear_flowid_flowid ('0) - - ,.issue_pipe_flowid_manager_flowid_req (issue_pipe_flowid_manager_flowid_req ) - ,.flowid_manager_issue_pipe_flowid_avail(flowid_manager_issue_pipe_flowid_avail ) - ,.flowid_manager_issue_pipe_flowid (flowid_manager_issue_pipe_flowid ) - - ,.tcp_fsm_update_tcp_state_val (tcp_fsm_update_tcp_state_val ) - ,.tcp_fsm_update_tcp_state_flowid (tcp_fsm_update_tcp_state_flowid ) - ,.tcp_fsm_update_tcp_state_data (tcp_fsm_update_tcp_state_data ) - ,.tcp_fsm_update_tcp_state_rdy (tcp_fsm_update_tcp_state_rdy ) - - ,.fsm_tcp_state_rd_req_val (fsm_tcp_state_rd_req_val ) - ,.fsm_tcp_state_rd_req_flowid (fsm_tcp_state_rd_req_flowid ) - ,.tcp_state_fsm_rd_req_rdy (tcp_state_fsm_rd_req_rdy ) - - ,.tcp_state_fsm_rd_resp_val (tcp_state_fsm_rd_resp_val ) - ,.tcp_state_fsm_rd_resp_data (tcp_state_fsm_rd_resp_data ) - ,.fsm_tcp_state_rd_resp_rdy (fsm_tcp_state_rd_resp_rdy ) - - ,.est_hdr_val (issue_merger_est_hdr_val ) - ,.est_tcp_hdr (issue_merger_est_tcp_hdr ) - ,.est_flowid (issue_merger_est_flowid ) - ,.est_payload_val (issue_merger_est_payload_val ) - ,.est_payload_entry (issue_merger_est_payload_entry ) - ,.est_pipe_rdy (merger_issue_est_pipe_rdy ) - - ,.fsm_hdr_val (issue_fsm_q_hdr_val ) - ,.fsm_hdr_src_ip (issue_fsm_q_hdr_src_ip ) - ,.fsm_hdr_dst_ip (issue_fsm_q_hdr_dst_ip ) - ,.fsm_tcp_hdr (issue_fsm_q_tcp_hdr ) - ,.fsm_payload_val (issue_fsm_q_payload_val ) - ,.fsm_payload_entry (issue_fsm_q_payload_entry ) - ,.fsm_new_flow (issue_fsm_q_new_flow ) - ,.fsm_flowid (issue_fsm_q_flowid ) - ,.fsm_pipe_rdy (fsm_q_issue_rdy ) - ); - - est_pipe_input_merger est_pipe_input_merger ( - .issue_merger_est_hdr_val (issue_merger_est_hdr_val ) - ,.issue_merger_est_tcp_hdr (issue_merger_est_tcp_hdr ) - ,.issue_merger_est_flowid (issue_merger_est_flowid ) - ,.issue_merger_est_payload_val (issue_merger_est_payload_val ) - ,.issue_merger_est_payload_entry (issue_merger_est_payload_entry ) - ,.merger_issue_est_pipe_rdy (merger_issue_est_pipe_rdy ) - - ,.merger_fsm_reinject_q_deq_req_val (merger_fsm_reinject_q_deq_req_val ) - ,.fsm_reinject_q_merger_deq_resp_data (fsm_reinject_q_merger_deq_resp_data ) - ,.fsm_reinject_q_merger_empty (fsm_reinject_q_merger_empty ) - - ,.est_hdr_val (est_hdr_val ) - ,.est_tcp_hdr (est_tcp_hdr ) - ,.est_flowid (est_flowid ) - ,.est_payload_val (est_payload_val ) - ,.est_payload_entry (est_payload_entry ) - ,.est_pipe_rdy (est_pipe_rdy ) - ); - - // reinject queue - fifo_1r1w #( - .width_p (FSM_REINJECT_QUEUE_STRUCT_W) - ,.log2_els_p (2) - ) reinject_queue ( - .clk (clk) - ,.rst (rst) - - ,.rd_req (merger_fsm_reinject_q_deq_req_val ) - ,.rd_data (fsm_reinject_q_merger_deq_resp_data ) - ,.empty (fsm_reinject_q_merger_empty ) - - ,.wr_req (fsm_reinject_q_enq_req_val ) - ,.wr_data (fsm_reinject_q_enq_req_data ) - ,.full (fsm_reinject_q_full ) - ); - - est_pipe est_flow_pipe ( - .clk (clk) - ,.rst (rst) - - ,.est_hdr_val (est_hdr_val ) - ,.est_tcp_hdr (est_tcp_hdr ) - ,.est_flowid (est_flowid ) - ,.est_payload_val (est_payload_val ) - ,.est_payload_entry (est_payload_entry ) - ,.est_pipe_rdy (est_pipe_rdy ) - - ,.est_pipe_rx_state_rd_req_val (est_arbiter_rx_state_rd_req_val ) - ,.est_pipe_rx_state_rd_req_flowid (est_arbiter_rx_state_rd_req_flowid ) - ,.rx_state_est_pipe_rd_req_rdy (arbiter_est_rx_state_rd_req_grant ) - - ,.rx_state_est_pipe_rd_resp_val (arbiter_est_rx_state_rd_resp_val ) - ,.rx_state_est_pipe_rd_resp_data (arbiter_est_rx_state_rd_resp_data ) - ,.est_pipe_rx_state_rd_resp_rdy (est_arbiter_rx_state_rd_resp_rdy ) - - ,.est_pipe_tx_state_rd_req_val (est_arbiter_tx_state_rd_req_val ) - ,.est_pipe_tx_state_rd_req_flowid (est_arbiter_tx_state_rd_req_flowid ) - ,.tx_state_est_pipe_rd_req_rdy (arbiter_est_tx_state_rd_req_grant ) - - ,.tx_state_est_pipe_rd_resp_val (arbiter_est_tx_state_rd_resp_val ) - ,.tx_state_est_pipe_rd_resp_data (arbiter_est_tx_state_rd_resp_data ) - ,.est_pipe_tx_state_rd_resp_rdy (est_arbiter_tx_state_rd_resp_rdy ) - - ,.next_recv_state_wr_req_val (next_recv_state_wr_req_val ) - ,.next_recv_state_wr_req_addr (next_recv_state_wr_req_addr ) - ,.next_recv_state_wr_req_data (next_recv_state_wr_req_data ) - ,.next_recv_state_wr_req_rdy (next_recv_state_wr_req_rdy ) - - ,.rx_pipe_tx_state_wr_req_val (rx_pipe_tx_state_wr_req_val ) - ,.rx_pipe_tx_state_wr_req_flowid (rx_pipe_tx_state_wr_req_flowid ) - ,.rx_pipe_tx_state_wr_req_data (rx_pipe_tx_state_wr_req_data ) - ,.tx_state_rx_pipe_wr_req_rdy (tx_state_rx_pipe_wr_req_rdy ) - - ,.set_rt_flag_val (rx_pipe_rt_store_set_rt_flag_val ) - ,.set_rt_flag_flowid (rx_pipe_rt_store_set_rt_flag_flowid) - - ,.rx_pipe_tx_head_ptr_wr_req_val (rx_pipe_tx_head_ptr_wr_req_val ) - ,.rx_pipe_tx_head_ptr_wr_req_flowid (rx_pipe_tx_head_ptr_wr_req_flowid ) - ,.rx_pipe_tx_head_ptr_wr_req_data (rx_pipe_tx_head_ptr_wr_req_data ) - ,.tx_head_ptr_rx_pipe_wr_req_rdy (tx_head_ptr_rx_pipe_wr_req_rdy ) - - ,.rx_pipe_rx_head_ptr_rd_req_val (rx_pipe_rx_head_ptr_rd_req_val ) - ,.rx_pipe_rx_head_ptr_rd_req_addr (rx_pipe_rx_head_ptr_rd_req_addr ) - ,.rx_head_ptr_rx_pipe_rd_req_rdy (rx_head_ptr_rx_pipe_rd_req_rdy ) - - ,.rx_head_ptr_rx_pipe_rd_resp_val (rx_head_ptr_rx_pipe_rd_resp_val ) - ,.rx_head_ptr_rx_pipe_rd_resp_data (rx_head_ptr_rx_pipe_rd_resp_data ) - ,.rx_pipe_rx_head_ptr_rd_resp_rdy (rx_pipe_rx_head_ptr_rd_resp_rdy ) - - ,.rx_pipe_rx_tail_ptr_wr_req_val (rx_pipe_rx_tail_ptr_wr_req_val ) - ,.rx_pipe_rx_tail_ptr_wr_req_addr (rx_pipe_rx_tail_ptr_wr_req_addr ) - ,.rx_pipe_rx_tail_ptr_wr_req_data (rx_pipe_rx_tail_ptr_wr_req_data ) - ,.rx_tail_ptr_rx_pipe_wr_req_rdy (rx_tail_ptr_rx_pipe_wr_req_rdy ) - - ,.rx_pipe_rx_tail_ptr_rd_req_val (rx_pipe_rx_tail_ptr_rd_req_val ) - ,.rx_pipe_rx_tail_ptr_rd_req_addr (rx_pipe_rx_tail_ptr_rd_req_addr ) - ,.rx_tail_ptr_rx_pipe_rd_req_rdy (rx_tail_ptr_rx_pipe_rd_req_rdy ) - - ,.rx_tail_ptr_rx_pipe_rd_resp_val (rx_tail_ptr_rx_pipe_rd_resp_val ) - ,.rx_tail_ptr_rx_pipe_rd_resp_data (rx_tail_ptr_rx_pipe_rd_resp_data ) - ,.rx_pipe_rx_tail_ptr_rd_resp_rdy (rx_pipe_rx_tail_ptr_rd_resp_rdy ) - - ,.rx_store_buf_q_wr_req_val (rx_store_buf_q_wr_req_val ) - ,.rx_store_buf_q_wr_req_data (rx_store_buf_q_wr_req_data ) - ,.rx_store_buf_q_full (rx_store_buf_q_full ) - ); - - - fifo_1r1w #( - .width_p (RX_STORE_BUF_Q_STRUCT_W) - ,.log2_els_p(5) - ) rx_store_buf_q ( - .clk (clk ) - ,.rst (rst ) - - ,.wr_req (rx_store_buf_q_wr_req_val ) - ,.wr_data (rx_store_buf_q_wr_req_data ) - ,.full (rx_store_buf_q_full ) - - ,.rd_req (rx_store_buf_q_rd_req_val ) - ,.rd_data (rx_store_buf_q_rd_req_data ) - ,.empty (rx_store_buf_q_empty ) - ); - - assign fsm_q_issue_rdy = ~fsm_q_issue_full; - assign issue_fsm_q_enq_req_val = issue_fsm_q_hdr_val & ~fsm_q_issue_full; - - assign issue_fsm_q_enq_req_data.src_ip = issue_fsm_q_hdr_src_ip; - assign issue_fsm_q_enq_req_data.dst_ip = issue_fsm_q_hdr_dst_ip; - assign issue_fsm_q_enq_req_data.tcp_hdr = issue_fsm_q_tcp_hdr; - assign issue_fsm_q_enq_req_data.payload_val = issue_fsm_q_payload_val; - assign issue_fsm_q_enq_req_data.payload_entry = issue_fsm_q_payload_entry; - assign issue_fsm_q_enq_req_data.new_flow = issue_fsm_q_new_flow; - assign issue_fsm_q_enq_req_data.flowid = issue_fsm_q_flowid; - - // fsm_pipe_queue - fifo_1r1w #( - .width_p (FSM_INPUT_QUEUE_STRUCT_W) - ,.log2_els_p (2) - ) fsm_queue ( - .clk (clk) - ,.rst (rst) - - ,.rd_req (fsm_pipe_fsm_q_deq_req_val ) - ,.empty (fsm_q_fsm_pipe_empty ) - ,.rd_data (fsm_q_fsm_pipe_deq_resp_data ) - - ,.wr_req (issue_fsm_q_enq_req_val ) - ,.wr_data (issue_fsm_q_enq_req_data ) - ,.full (fsm_q_issue_full ) - ); - - assign fsm_q_fsm_pipe_hdr_val = ~fsm_q_fsm_pipe_empty; - assign fsm_pipe_fsm_q_deq_req_val = fsm_pipe_fsm_q_rdy & ~fsm_q_fsm_pipe_empty; - - assign fsm_q_fsm_pipe_hdr_src_ip = fsm_q_fsm_pipe_deq_resp_data.src_ip; - assign fsm_q_fsm_pipe_hdr_dst_ip = fsm_q_fsm_pipe_deq_resp_data.dst_ip; - assign fsm_q_fsm_pipe_tcp_hdr = fsm_q_fsm_pipe_deq_resp_data.tcp_hdr; - assign fsm_q_fsm_pipe_payload_val = fsm_q_fsm_pipe_deq_resp_data.payload_val; - assign fsm_q_fsm_pipe_payload_entry = fsm_q_fsm_pipe_deq_resp_data.payload_entry; - assign fsm_q_fsm_pipe_new_flow = fsm_q_fsm_pipe_deq_resp_data.new_flow; - assign fsm_q_fsm_pipe_flowid = fsm_q_fsm_pipe_deq_resp_data.flowid; - - - rx_fsm_pipe fsm_pipe ( - .clk (clk) - ,.rst (rst) - - ,.fsm_hdr_val (fsm_q_fsm_pipe_hdr_val ) - ,.fsm_hdr_src_ip (fsm_q_fsm_pipe_hdr_src_ip ) - ,.fsm_hdr_dst_ip (fsm_q_fsm_pipe_hdr_dst_ip ) - ,.fsm_tcp_hdr (fsm_q_fsm_pipe_tcp_hdr ) - ,.fsm_payload_val (fsm_q_fsm_pipe_payload_val ) - ,.fsm_payload_entry (fsm_q_fsm_pipe_payload_entry ) - ,.fsm_new_flow (fsm_q_fsm_pipe_new_flow ) - ,.fsm_flowid (fsm_q_fsm_pipe_flowid ) - ,.fsm_hdr_rdy (fsm_pipe_fsm_q_rdy ) - - ,.fsm_tcp_state_rd_req_val (fsm_tcp_state_rd_req_val ) - ,.fsm_tcp_state_rd_req_flowid (fsm_tcp_state_rd_req_flowid ) - ,.tcp_state_fsm_rd_req_rdy (tcp_state_fsm_rd_req_rdy ) - - ,.tcp_state_fsm_rd_resp_val (tcp_state_fsm_rd_resp_val ) - ,.tcp_state_fsm_rd_resp_data (tcp_state_fsm_rd_resp_data ) - ,.fsm_tcp_state_rd_resp_rdy (fsm_tcp_state_rd_resp_rdy ) - - ,.fsm_rx_state_rd_req_val (fsm_arbiter_rx_state_rd_req_val ) - ,.fsm_rx_state_rd_req_flowid (fsm_arbiter_rx_state_rd_req_flowid ) - ,.rx_state_fsm_rd_req_rdy (arbiter_fsm_rx_state_rd_req_grant ) - - ,.rx_state_fsm_rd_resp_val (arbiter_fsm_rx_state_rd_resp_val ) - ,.rx_state_fsm_rd_resp_data (arbiter_fsm_rx_state_rd_resp_data ) - ,.fsm_rx_state_rd_resp_rdy (fsm_arbiter_rx_state_rd_resp_rdy ) - - ,.fsm_tx_state_rd_req_val (fsm_arbiter_tx_state_rd_req_val ) - ,.fsm_tx_state_rd_req_flowid (fsm_arbiter_tx_state_rd_req_flowid ) - ,.tx_state_fsm_rd_req_rdy (arbiter_fsm_tx_state_rd_req_grant ) - - ,.tx_state_fsm_rd_resp_val (arbiter_fsm_tx_state_rd_resp_val ) - ,.tx_state_fsm_rd_resp_data (arbiter_fsm_tx_state_rd_resp_data ) - ,.fsm_tx_state_rd_resp_rdy (fsm_arbiter_tx_state_rd_resp_rdy ) - - ,.fsm_reinject_q_enq_req_val (fsm_reinject_q_enq_req_val ) - ,.fsm_reinject_q_enq_req_data (fsm_reinject_q_enq_req_data ) - ,.fsm_reinject_q_full (fsm_reinject_q_full ) - - ,.fsm_send_pkt_enqueue_val (fsm_send_pkt_enqueue_val ) - ,.fsm_send_pkt_enqueue_flowid (fsm_send_pkt_enqueue_flowid ) - ,.fsm_send_pkt_enqueue_src_ip (fsm_send_pkt_enqueue_src_ip ) - ,.fsm_send_pkt_enqueue_dst_ip (fsm_send_pkt_enqueue_dst_ip ) - ,.fsm_send_pkt_enqueue_hdr (fsm_send_pkt_enqueue_hdr ) - ,.fsm_send_pkt_enqueue_rdy (fsm_send_pkt_enqueue_rdy ) - - ,.next_flow_state_wr_req_val (tcp_fsm_update_tcp_state_val ) - ,.next_flow_state_wr_req_data (tcp_fsm_update_tcp_state_data ) - ,.next_flow_state_wr_req_flowid (tcp_fsm_update_tcp_state_flowid ) - ,.next_flow_state_rdy (tcp_fsm_update_tcp_state_rdy ) - - ,.app_new_flow_notif_val (app_new_flow_notif_val ) - ,.app_new_flow_flowid (app_new_flow_flowid ) - ,.app_new_flow_entry (app_new_flow_entry ) - ,.app_new_flow_notif_rdy (app_new_flow_notif_rdy ) - - ,.new_flow_val (tcp_fsm_new_flow_val ) - ,.new_flow_flowid (tcp_fsm_new_flow_flowid ) - ,.new_flow_lookup_entry (tcp_fsm_new_flow_lookup_entry ) - ,.new_flow_rx_state (tcp_fsm_new_flow_rx_state ) - ,.new_flow_tx_state (tcp_fsm_new_flow_tx_state ) - ,.tcp_fsm_clear_flowid_val (tcp_fsm_clear_flowid_val ) - ,.tcp_fsm_clear_flowid_tag (tcp_fsm_clear_flowid_tag ) - ,.new_flow_rdy (tcp_fsm_new_flow_state_rdy ) - ); - - fsm_est_arbiter fsm_est_pipe_arbiter ( - .clk (clk) - ,.rst (rst) - - ,.fsm_arbiter_tx_state_rd_req_val (fsm_arbiter_tx_state_rd_req_val ) - ,.fsm_arbiter_tx_state_rd_req_flowid (fsm_arbiter_tx_state_rd_req_flowid ) - ,.arbiter_fsm_tx_state_rd_req_grant (arbiter_fsm_tx_state_rd_req_grant ) - - ,.fsm_arbiter_rx_state_rd_req_val (fsm_arbiter_rx_state_rd_req_val ) - ,.fsm_arbiter_rx_state_rd_req_flowid (fsm_arbiter_rx_state_rd_req_flowid ) - ,.arbiter_fsm_rx_state_rd_req_grant (arbiter_fsm_rx_state_rd_req_grant ) - - ,.est_arbiter_tx_state_rd_req_val (est_arbiter_tx_state_rd_req_val ) - ,.est_arbiter_tx_state_rd_req_flowid (est_arbiter_tx_state_rd_req_flowid ) - ,.arbiter_est_tx_state_rd_req_grant (arbiter_est_tx_state_rd_req_grant ) - - ,.est_arbiter_rx_state_rd_req_val (est_arbiter_rx_state_rd_req_val ) - ,.est_arbiter_rx_state_rd_req_flowid (est_arbiter_rx_state_rd_req_flowid ) - ,.arbiter_est_rx_state_rd_req_grant (arbiter_est_rx_state_rd_req_grant ) - - ,.curr_recv_state_rd_req_val (curr_recv_state_rd_req_val ) - ,.curr_recv_state_rd_req_flowid (curr_recv_state_rd_req_addr ) - ,.curr_recv_state_rd_req_rdy (curr_recv_state_rd_req_rdy ) - - ,.curr_recv_state_rd_resp_val (curr_recv_state_rd_resp_val ) - ,.curr_recv_state_rd_resp_data (curr_recv_state_rd_resp_data ) - ,.curr_recv_state_rd_resp_rdy (curr_recv_state_rd_resp_rdy ) - - ,.curr_tx_state_rd_req_val (curr_tx_state_rd_req_val ) - ,.curr_tx_state_rd_req_flowid (curr_tx_state_rd_req_flowid ) - ,.curr_tx_state_rd_req_rdy (curr_tx_state_rd_req_rdy ) - - ,.curr_tx_state_rd_resp_val (curr_tx_state_rd_resp_val ) - ,.curr_tx_state_rd_resp_data (curr_tx_state_rd_resp_data ) - ,.curr_tx_state_rd_resp_rdy (curr_tx_state_rd_resp_rdy ) - - ,.arbiter_fsm_tx_state_rd_resp_val (arbiter_fsm_tx_state_rd_resp_val ) - ,.arbiter_fsm_tx_state_rd_resp_data (arbiter_fsm_tx_state_rd_resp_data ) - ,.fsm_arbiter_tx_state_rd_resp_rdy (fsm_arbiter_tx_state_rd_resp_rdy ) - - ,.arbiter_fsm_rx_state_rd_resp_val (arbiter_fsm_rx_state_rd_resp_val ) - ,.arbiter_fsm_rx_state_rd_resp_data (arbiter_fsm_rx_state_rd_resp_data ) - ,.fsm_arbiter_rx_state_rd_resp_rdy (fsm_arbiter_rx_state_rd_resp_rdy ) - - ,.arbiter_est_tx_state_rd_resp_val (arbiter_est_tx_state_rd_resp_val ) - ,.arbiter_est_tx_state_rd_resp_data (arbiter_est_tx_state_rd_resp_data ) - ,.est_arbiter_tx_state_rd_resp_rdy (est_arbiter_tx_state_rd_resp_rdy ) - - ,.arbiter_est_rx_state_rd_resp_val (arbiter_est_rx_state_rd_resp_val ) - ,.arbiter_est_rx_state_rd_resp_data (arbiter_est_rx_state_rd_resp_data ) - ,.est_arbiter_rx_state_rd_resp_rdy (est_arbiter_rx_state_rd_resp_rdy ) - ); - -endmodule diff --git a/network_tiles/tcp/beehive_tcp.core b/network_tiles/tcp/beehive_tcp.core index cab6e9b..340a4a8 100644 --- a/network_tiles/tcp/beehive_tcp.core +++ b/network_tiles/tcp/beehive_tcp.core @@ -13,7 +13,6 @@ filesets: - include/beehive_tcp_engine_defs.svh: {is_include_file: true} - include/tcp_msg_poller_defs.svh: {is_include_file: true} - beehive_rx_pipe_wrap.sv - - beehive_tcp_engine_wrap.sv - tcp_app_notif.sv - tcp_app_notif_ctrl.sv - tcp_app_notif_datap.sv diff --git a/network_tiles/tcp/beehive_tcp_engine_wrap.sv b/network_tiles/tcp/beehive_tcp_engine_wrap.sv deleted file mode 100644 index dc4866d..0000000 --- a/network_tiles/tcp/beehive_tcp_engine_wrap.sv +++ /dev/null @@ -1,682 +0,0 @@ -`include "beehive_tcp_engine_defs.svh" -module beehive_tcp_engine_wrap ( - input clk - ,input rst - - // Write req inputs - ,input src_tmp_buf_rx_hdr_val - ,output logic tmp_buf_src_rx_hdr_rdy - ,input [`IP_ADDR_W-1:0] src_tmp_buf_rx_src_ip - ,input [`IP_ADDR_W-1:0] src_tmp_buf_rx_dst_ip - ,input [`TOT_LEN_W-1:0] src_tmp_buf_rx_tcp_payload_len - ,input tcp_pkt_hdr src_tmp_buf_rx_tcp_hdr - - ,input src_tmp_buf_rx_data_val - ,input [`MAC_INTERFACE_W-1:0] src_tmp_buf_rx_data - ,input src_tmp_buf_rx_data_last - ,input [`MAC_PADBYTES_W-1:0] src_tmp_buf_rx_data_padbytes - ,output logic tmp_buf_src_rx_data_rdy - - ,output send_dst_tx_val - ,output logic [FLOWID_W-1:0] send_dst_tx_flowid - ,output logic [`IP_ADDR_W-1:0] send_dst_tx_src_ip - ,output logic [`IP_ADDR_W-1:0] send_dst_tx_dst_ip - ,output tcp_pkt_hdr send_dst_tx_tcp_hdr - ,output payload_buf_struct send_dst_tx_payload - ,input dst_send_tx_rdy - - ,output logic app_new_flow_notif_val - ,output logic [FLOWID_W-1:0] app_new_flow_flowid - ,output four_tuple_struct app_new_flow_lookup - ,input logic app_new_flow_notif_rdy - - ,input logic rx_store_buf_q_rd_req_val - ,output rx_store_buf_q_struct rx_store_buf_q_rd_req_data - ,output logic rx_store_buf_q_empty - - ,input logic src_tmp_buf_store_rd_req_val - ,input [PAYLOAD_ENTRY_ADDR_W-1:0] src_tmp_buf_store_rd_req_addr - ,output logic tmp_buf_store_src_rd_req_rdy - - ,output logic tmp_buf_store_src_rd_resp_val - ,output logic [`MAC_INTERFACE_W-1:0] tmp_buf_store_src_rd_resp_data - ,input logic src_tmp_buf_store_rd_resp_rdy - - ,input logic src_tmp_buf_free_slab_req_val - ,input logic [RX_TMP_BUF_ADDR_W-1:0] src_tmp_buf_free_slab_req_addr - ,output logic tmp_buf_free_slab_src_req_rdy - - ,input app_tail_ptr_tx_wr_req_val - ,input [FLOWID_W-1:0] app_tail_ptr_tx_wr_req_flowid - ,input [TX_PAYLOAD_PTR_W:0] app_tail_ptr_tx_wr_req_data - ,output tail_ptr_app_tx_wr_req_rdy - - ,input app_tail_ptr_tx_rd_req_val - ,input [FLOWID_W-1:0] app_tail_ptr_tx_rd_req_flowid - ,output logic tail_ptr_app_tx_rd_req_rdy - - ,output tail_ptr_app_tx_rd_resp_val - ,output logic [FLOWID_W-1:0] tail_ptr_app_tx_rd_resp_flowid - ,output logic [TX_PAYLOAD_PTR_W:0] tail_ptr_app_tx_rd_resp_data - ,input logic app_tail_ptr_tx_rd_resp_rdy - - ,input app_head_ptr_tx_rd_req_val - ,input [FLOWID_W-1:0] app_head_ptr_tx_rd_req_flowid - ,output logic head_ptr_app_tx_rd_req_rdy - - ,output head_ptr_app_tx_rd_resp_val - ,output logic [FLOWID_W-1:0] head_ptr_app_tx_rd_resp_flowid - ,output logic [TX_PAYLOAD_PTR_W:0] head_ptr_app_tx_rd_resp_data - ,input logic app_head_ptr_tx_rd_resp_rdy - - ,input logic app_rx_head_ptr_wr_req_val - ,input logic [FLOWID_W-1:0] app_rx_head_ptr_wr_req_addr - ,input logic [RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data - ,output logic rx_head_ptr_app_wr_req_rdy - - ,input logic app_rx_head_ptr_rd_req_val - ,input logic [FLOWID_W-1:0] app_rx_head_ptr_rd_req_addr - ,output logic rx_head_ptr_app_rd_req_rdy - - ,output logic rx_head_ptr_app_rd_resp_val - ,output logic [RX_PAYLOAD_PTR_W:0] rx_head_ptr_app_rd_resp_data - ,input logic app_rx_head_ptr_rd_resp_rdy - - ,input logic app_rx_commit_ptr_rd_req_val - ,input logic [FLOWID_W-1:0] app_rx_commit_ptr_rd_req_addr - ,output logic rx_commit_ptr_app_rd_req_rdy - - ,output logic rx_commit_ptr_app_rd_resp_val - ,output logic [RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data - ,input logic app_rx_commit_ptr_rd_resp_rdy - - ,input logic store_buf_commit_ptr_wr_req_val - ,input logic [FLOWID_W-1:0] store_buf_commit_ptr_wr_req_addr - ,input logic [RX_PAYLOAD_PTR_W:0] store_buf_commit_ptr_wr_req_data - ,output logic commit_ptr_store_buf_wr_req_rdy - - ,input logic store_buf_commit_ptr_rd_req_val - ,input logic [FLOWID_W-1:0] store_buf_commit_ptr_rd_req_addr - ,output logic commit_ptr_store_buf_rd_req_rdy - - ,output logic commit_ptr_store_buf_rd_resp_val - ,output logic [RX_PAYLOAD_PTR_W:0] commit_ptr_store_buf_rd_resp_data - ,input logic store_buf_commit_ptr_rd_resp_rdy - - ,input logic app_sched_update_val - ,input sched_cmd_struct app_sched_update_cmd - ,output logic sched_app_update_rdy - -); - logic tmp_buf_rx_pipe_rx_hdr_val; - logic [`IP_ADDR_W-1:0] tmp_buf_rx_pipe_rx_src_ip; - logic [`IP_ADDR_W-1:0] tmp_buf_rx_pipe_rx_dst_ip; - tcp_pkt_hdr tmp_buf_rx_pipe_rx_tcp_hdr; - logic rx_pipe_tmp_buf_rx_rdy; - - logic tmp_buf_rx_pipe_rx_payload_val; - payload_buf_struct tmp_buf_rx_pipe_rx_payload_entry; - - logic send_q_tail_ptr_rd_req_val; - logic [FLOWID_W-1:0] send_q_tail_ptr_rd_req_flowid; - logic send_q_tail_ptr_rd_req_rdy; - - logic send_q_tail_ptr_rd_resp_val; - logic [TX_PAYLOAD_PTR_W:0] send_q_tail_ptr_rd_resp_data; - logic send_q_tail_ptr_rd_resp_rdy; - - logic rx_pipe_tx_head_ptr_wr_req_val; - logic [FLOWID_W-1:0] rx_pipe_tx_head_ptr_wr_req_flowid; - logic [TX_PAYLOAD_PTR_W:0] rx_pipe_tx_head_ptr_wr_req_data; - logic tx_head_ptr_rx_pipe_wr_req_rdy; - - logic send_pipe_tx_state_rd_req_val; - logic [FLOWID_W-1:0] send_pipe_tx_state_rd_req_flowid; - logic tx_state_send_pipe_rd_req_rdy; - - logic tx_state_send_pipe_rd_resp_val; - tx_state_struct tx_state_send_pipe_rd_resp_data; - logic send_pipe_tx_state_rd_resp_rdy; - - logic send_pipe_tx_state_wr_req_val; - logic [FLOWID_W-1:0] send_pipe_tx_state_wr_req_flowid; - tx_state_struct send_pipe_tx_state_wr_req_data; - logic tx_state_send_pipe_wr_req_rdy; - - logic new_flow_val; - logic [FLOWID_W-1:0] new_flow_flowid; - four_tuple_struct new_flow_lookup_entry; - tx_state_struct new_flow_tx_state; - recv_state_entry new_flow_rx_state; - logic new_flow_rdy; - - logic new_flow_send_pipe_rdy; - logic new_flow_tx_payload_ptrs_rdy; - logic new_flow_tx_state_rdy; - logic new_flow_rx_state_rdy; - - logic curr_recv_state_rd_req_val; - logic [FLOWID_W-1:0] curr_recv_state_rd_req_addr; - logic curr_recv_state_rd_req_rdy; - - logic curr_recv_state_rd_resp_val; - recv_state_entry curr_recv_state_rd_resp_data; - logic curr_recv_state_rd_resp_rdy; - - logic next_recv_state_wr_req_val; - logic [FLOWID_W-1:0] next_recv_state_wr_req_addr; - recv_state_entry next_recv_state_wr_req_data; - logic next_recv_state_wr_req_rdy; - - logic send_pipe_recv_state_rd_req_val; - logic [FLOWID_W-1:0] send_pipe_recv_state_rd_req_flowid; - logic recv_state_send_pipe_rd_req_rdy; - - logic recv_state_send_pipe_rd_resp_val; - recv_state_entry recv_state_send_pipe_rd_resp_data; - logic send_pipe_recv_state_rd_resp_rdy; - - logic recv_pipe_tx_state_rd_req_val; - logic [FLOWID_W-1:0] recv_pipe_tx_state_rd_req_flowid; - tx_state_struct recv_pipe_tx_state_rd_req_data; - logic tx_state_recv_pipe_rd_req_rdy; - - logic tx_state_recv_pipe_rd_resp_val; - tx_state_struct tx_state_recv_pipe_rd_resp_data; - logic recv_pipe_tx_state_rd_resp_rdy; - - logic recv_pipe_tx_state_wr_req_val; - logic [FLOWID_W-1:0] recv_pipe_tx_state_wr_req_flowid; - tx_state_struct recv_pipe_tx_state_wr_req_data; - logic tx_state_recv_pipe_wr_req_rdy; - - logic rx_send_queue_deq_req_val; - rx_send_queue_struct rx_send_queue_deq_resp_data; - logic rx_send_queue_empty; - - logic rx_send_queue_enq_req_val; - rx_send_queue_struct rx_send_queue_enq_req_data; - logic send_queue_rx_full; - - logic rx_pipe_rt_store_set_rt_flag_val; - logic [FLOWID_W-1:0] rx_pipe_rt_store_set_rt_flag_flowid; - - logic tx_pipe_dst_tx_val; - logic [FLOWID_W-1:0] tx_pipe_dst_tx_flowid; - logic [`IP_ADDR_W-1:0] tx_pipe_dst_tx_src_ip; - logic [`IP_ADDR_W-1:0] tx_pipe_dst_tx_dst_ip; - tcp_pkt_hdr tx_pipe_dst_tx_tcp_hdr; - payload_buf_struct tx_pipe_dst_tx_payload; - logic dst_tx_pipe_tx_rdy; - - - logic rx_pipe_rx_head_ptr_rd_req_val; - logic [FLOWID_W-1:0] rx_pipe_rx_head_ptr_rd_req_addr; - logic rx_head_ptr_rx_pipe_rd_req_rdy; - - logic rx_head_ptr_rx_pipe_rd_resp_val; - logic [RX_PAYLOAD_PTR_W:0] rx_head_ptr_rx_pipe_rd_resp_data; - logic rx_pipe_rx_head_ptr_rd_resp_rdy; - - logic rx_pipe_rx_commit_ptr_wr_req_val; - logic [FLOWID_W-1:0] rx_pipe_rx_commit_ptr_wr_req_addr; - logic [RX_PAYLOAD_PTR_W:0] rx_pipe_rx_commit_ptr_wr_req_data; - logic rx_commit_ptr_rx_pipe_wr_req_rdy; - - logic rx_pipe_rx_commit_ptr_rd_req_val; - logic [FLOWID_W-1:0] rx_pipe_rx_commit_ptr_rd_req_addr; - logic rx_commit_ptr_rx_pipe_rd_req_rdy; - - logic rx_commit_ptr_rx_pipe_rd_resp_val; - logic [RX_PAYLOAD_PTR_W:0] rx_commit_ptr_rx_pipe_rd_resp_data; - logic rx_pipe_rx_commit_ptr_rd_resp_rdy; - - logic rx_pipe_rx_tail_ptr_wr_req_val; - logic [FLOWID_W-1:0] rx_pipe_rx_tail_ptr_wr_req_addr; - logic [RX_PAYLOAD_PTR_W:0] rx_pipe_rx_tail_ptr_wr_req_data; - logic rx_tail_ptr_rx_pipe_wr_req_rdy; - - logic rx_pipe_rx_tail_ptr_rd_req_val; - logic [FLOWID_W-1:0] rx_pipe_rx_tail_ptr_rd_req_addr; - logic rx_tail_ptr_rx_pipe_rd_req_rdy; - - logic rx_tail_ptr_rx_pipe_rd_resp_val; - logic [RX_PAYLOAD_PTR_W:0] rx_tail_ptr_rx_pipe_rd_resp_data; - logic rx_pipe_rx_tail_ptr_rd_resp_rdy; - - logic [RX_PAYLOAD_PTR_W:0] new_rx_head_ptr; - logic [RX_PAYLOAD_PTR_W:0] new_rx_tail_ptr; - logic new_flow_rx_payload_ptrs_rdy; - - assign new_flow_rdy = new_flow_send_pipe_rdy - & new_flow_tx_payload_ptrs_rdy - & new_flow_tx_state_rdy - & new_flow_rx_state_rdy; - - assign sched_app_update_rdy = 1'b1; - - /********************************************************************************** - * TX pipe - *********************************************************************************/ - - send_pipe_wrapper send_pipe ( - .clk (clk) - ,.rst (rst) - - ,.src_new_flow_val (new_flow_val ) - ,.src_new_flow_flowid (new_flow_flowid ) - ,.src_new_flow_lookup_entry (new_flow_lookup_entry ) - ,.new_flow_src_rdy (new_flow_send_pipe_rdy ) - - ,.send_q_tail_ptr_rd_req_val (send_q_tail_ptr_rd_req_val ) - ,.send_q_tail_ptr_rd_req_flowid (send_q_tail_ptr_rd_req_flowid ) - ,.send_q_tail_ptr_rd_req_rdy (send_q_tail_ptr_rd_req_rdy ) - - ,.send_q_tail_ptr_rd_resp_val (send_q_tail_ptr_rd_resp_val ) - ,.send_q_tail_ptr_rd_resp_data (send_q_tail_ptr_rd_resp_data ) - ,.send_q_tail_ptr_rd_resp_rdy (send_q_tail_ptr_rd_resp_rdy ) - - ,.send_pipe_tx_state_rd_req_val (send_pipe_tx_state_rd_req_val ) - ,.send_pipe_tx_state_rd_req_flowid (send_pipe_tx_state_rd_req_flowid ) - ,.tx_state_send_pipe_rd_req_rdy (tx_state_send_pipe_rd_req_rdy ) - - ,.tx_state_send_pipe_rd_resp_val (tx_state_send_pipe_rd_resp_val ) - ,.tx_state_send_pipe_rd_resp_data (tx_state_send_pipe_rd_resp_data ) - ,.send_pipe_tx_state_rd_resp_rdy (send_pipe_tx_state_rd_resp_rdy ) - - ,.send_pipe_tx_state_wr_req_val (send_pipe_tx_state_wr_req_val ) - ,.send_pipe_tx_state_wr_req_flowid (send_pipe_tx_state_wr_req_flowid ) - ,.send_pipe_tx_state_wr_req_data (send_pipe_tx_state_wr_req_data ) - ,.tx_state_send_pipe_wr_req_rdy (tx_state_send_pipe_wr_req_rdy ) - - ,.send_pipe_recv_state_rd_req_val (send_pipe_recv_state_rd_req_val ) - ,.send_pipe_recv_state_rd_req_flowid (send_pipe_recv_state_rd_req_flowid ) - ,.recv_state_send_pipe_rd_req_rdy (recv_state_send_pipe_rd_req_rdy ) - - ,.recv_state_send_pipe_rd_resp_val (recv_state_send_pipe_rd_resp_val ) - ,.recv_state_send_pipe_rd_resp_data (recv_state_send_pipe_rd_resp_data ) - ,.send_pipe_recv_state_rd_resp_rdy (send_pipe_recv_state_rd_resp_rdy ) - - ,.rx_pipe_rt_store_set_rt_flag_val (rx_pipe_rt_store_set_rt_flag_val ) - ,.rx_pipe_rt_store_set_rt_flag_flowid (rx_pipe_rt_store_set_rt_flag_flowid ) - - ,.send_dst_tx_val (tx_pipe_dst_tx_val ) - ,.send_dst_tx_flowid (tx_pipe_dst_tx_flowid ) - ,.send_dst_tx_src_ip (tx_pipe_dst_tx_src_ip ) - ,.send_dst_tx_dst_ip (tx_pipe_dst_tx_dst_ip ) - ,.send_dst_tx_tcp_hdr (tx_pipe_dst_tx_tcp_hdr ) - ,.send_dst_tx_payload (tx_pipe_dst_tx_payload ) - ,.dst_send_tx_rdy (dst_tx_pipe_tx_rdy ) - ); - - logic [TX_PAYLOAD_PTR_W:0] new_tx_head_ptr; - logic [TX_PAYLOAD_PTR_W:0] new_tx_tail_ptr; - - assign new_tx_head_ptr = new_flow_tx_state.tx_curr_ack_state.tx_curr_ack_num[TX_PAYLOAD_PTR_W:0]; - assign new_tx_tail_ptr = new_flow_tx_state.tx_curr_ack_state.tx_curr_ack_num[TX_PAYLOAD_PTR_W:0]; - - payload_pointers send_qs ( - .clk (clk) - ,.rst (rst) - - ,.payload_head_ptr_rd_req0_val (app_head_ptr_tx_rd_req_val ) - ,.payload_head_ptr_rd_req0_flowid (app_head_ptr_tx_rd_req_flowid ) - ,.payload_head_ptr_rd_req0_rdy (head_ptr_app_tx_rd_req_rdy ) - - ,.payload_head_ptr_rd_resp0_val (head_ptr_app_tx_rd_resp_val ) - ,.payload_head_ptr_rd_resp0_flowid (head_ptr_app_tx_rd_resp_flowid ) - ,.payload_head_ptr_rd_resp0_data (head_ptr_app_tx_rd_resp_data ) - ,.payload_head_ptr_rd_resp0_rdy (app_head_ptr_tx_rd_resp_rdy ) - - ,.payload_head_ptr_rd_req1_val (1'b0 ) - ,.payload_head_ptr_rd_req1_flowid ('0 ) - ,.payload_head_ptr_rd_req1_rdy ( ) - - ,.payload_head_ptr_rd_resp1_val ( ) - ,.payload_head_ptr_rd_resp1_flowid ( ) - ,.payload_head_ptr_rd_resp1_data ( ) - ,.payload_head_ptr_rd_resp1_rdy (1'b1 ) - - ,.payload_head_ptr_wr_req_val (rx_pipe_tx_head_ptr_wr_req_val ) - ,.payload_head_ptr_wr_req_flowid (rx_pipe_tx_head_ptr_wr_req_flowid ) - ,.payload_head_ptr_wr_req_data (rx_pipe_tx_head_ptr_wr_req_data ) - ,.payload_head_ptr_wr_req_rdy (tx_head_ptr_rx_pipe_wr_req_rdy ) - - ,.payload_tail_ptr_rd_req0_val (send_q_tail_ptr_rd_req_val ) - ,.payload_tail_ptr_rd_req0_flowid (send_q_tail_ptr_rd_req_flowid ) - ,.payload_tail_ptr_rd_req0_rdy (send_q_tail_ptr_rd_req_rdy ) - - ,.payload_tail_ptr_rd_resp0_val (send_q_tail_ptr_rd_resp_val ) - ,.payload_tail_ptr_rd_resp0_flowid ( ) - ,.payload_tail_ptr_rd_resp0_data (send_q_tail_ptr_rd_resp_data ) - ,.payload_tail_ptr_rd_resp0_rdy (send_q_tail_ptr_rd_resp_rdy ) - - ,.payload_tail_ptr_rd_req1_val (app_tail_ptr_tx_rd_req_val ) - ,.payload_tail_ptr_rd_req1_flowid (app_tail_ptr_tx_rd_req_flowid ) - ,.payload_tail_ptr_rd_req1_rdy (tail_ptr_app_tx_rd_req_rdy ) - - ,.payload_tail_ptr_rd_resp1_val (tail_ptr_app_tx_rd_resp_val ) - ,.payload_tail_ptr_rd_resp1_flowid (tail_ptr_app_tx_rd_resp_flowid ) - ,.payload_tail_ptr_rd_resp1_data (tail_ptr_app_tx_rd_resp_data ) - ,.payload_tail_ptr_rd_resp1_rdy (app_tail_ptr_tx_rd_resp_rdy ) - - ,.payload_tail_ptr_wr_req_val (app_tail_ptr_tx_wr_req_val ) - ,.payload_tail_ptr_wr_req_flowid (app_tail_ptr_tx_wr_req_flowid ) - ,.payload_tail_ptr_wr_req_data (app_tail_ptr_tx_wr_req_data ) - ,.payload_tail_ptr_wr_req_rdy (tail_ptr_app_tx_wr_req_rdy ) - - ,.new_flow_val (new_flow_val ) - ,.new_flow_flowid (new_flow_flowid ) - ,.new_flow_head_ptr (new_tx_head_ptr ) - ,.new_flow_tail_ptr (new_tx_tail_ptr ) - ,.new_flow_rdy (new_flow_tx_payload_ptrs_rdy ) - ); - - tx_state_store tx_state_store ( - .clk (clk) - ,.rst (rst) - - ,.send_pipe_rd_req_val (send_pipe_tx_state_rd_req_val ) - ,.send_pipe_rd_req_flowid (send_pipe_tx_state_rd_req_flowid ) - ,.send_pipe_rd_req_rdy (tx_state_send_pipe_rd_req_rdy ) - - ,.send_pipe_rd_resp_val (tx_state_send_pipe_rd_resp_val ) - ,.send_pipe_rd_resp_flowid () - ,.send_pipe_rd_resp_data (tx_state_send_pipe_rd_resp_data ) - ,.send_pipe_rd_resp_rdy (send_pipe_tx_state_rd_resp_rdy ) - - ,.recv_pipe_rd_req_val (recv_pipe_tx_state_rd_req_val ) - ,.recv_pipe_rd_req_flowid (recv_pipe_tx_state_rd_req_flowid ) - ,.recv_pipe_rd_req_rdy (tx_state_recv_pipe_rd_req_rdy ) - - ,.recv_pipe_rd_resp_val (tx_state_recv_pipe_rd_resp_val ) - ,.recv_pipe_rd_resp_flowid () - ,.recv_pipe_rd_resp_data (tx_state_recv_pipe_rd_resp_data ) - ,.recv_pipe_rd_resp_rdy (recv_pipe_tx_state_rd_resp_rdy ) - - ,.send_pipe_wr_req_val (send_pipe_tx_state_wr_req_val ) - ,.send_pipe_wr_req_flowid (send_pipe_tx_state_wr_req_flowid ) - ,.send_pipe_wr_req_data (send_pipe_tx_state_wr_req_data ) - ,.send_pipe_wr_req_rdy (tx_state_send_pipe_wr_req_rdy ) - - ,.recv_pipe_wr_req_val (recv_pipe_tx_state_wr_req_val ) - ,.recv_pipe_wr_req_flowid (recv_pipe_tx_state_wr_req_flowid ) - ,.recv_pipe_wr_req_data (recv_pipe_tx_state_wr_req_data ) - ,.recv_pipe_wr_req_rdy (tx_state_recv_pipe_wr_req_rdy ) - - ,.new_flow_val (new_flow_val ) - ,.new_flow_flowid (new_flow_flowid ) - ,.new_flow_tx_state (new_flow_tx_state ) - ,.new_flow_rdy (new_flow_tx_state_rdy ) - ); - - /********************************************************************************** - * RX pipe - *********************************************************************************/ - - rx_state_store rx_state_store ( - .clk (clk) - ,.rst (rst) - - ,.recv_state_wr_req_val (next_recv_state_wr_req_val ) - ,.recv_state_wr_req_addr (next_recv_state_wr_req_addr ) - ,.recv_state_wr_req_data (next_recv_state_wr_req_data ) - ,.recv_state_wr_req_rdy (next_recv_state_wr_req_rdy ) - - - ,.curr_recv_state_rd_req_val (curr_recv_state_rd_req_val ) - ,.curr_recv_state_rd_req_addr (curr_recv_state_rd_req_addr ) - ,.curr_recv_state_rd_req_rdy (curr_recv_state_rd_req_rdy ) - - ,.curr_recv_state_rd_resp_val (curr_recv_state_rd_resp_val ) - ,.curr_recv_state_rd_resp_data (curr_recv_state_rd_resp_data ) - ,.curr_recv_state_rd_resp_rdy (curr_recv_state_rd_resp_rdy ) - - ,.send_pipe_recv_state_rd_req_val (send_pipe_recv_state_rd_req_val ) - ,.send_pipe_recv_state_rd_req_addr (send_pipe_recv_state_rd_req_flowid ) - ,.recv_state_send_pipe_rd_req_rdy (recv_state_send_pipe_rd_req_rdy ) - - ,.recv_state_send_pipe_rd_resp_val (recv_state_send_pipe_rd_resp_val ) - ,.recv_state_send_pipe_rd_resp_data (recv_state_send_pipe_rd_resp_data ) - ,.send_pipe_recv_state_rd_resp_rdy (send_pipe_recv_state_rd_resp_rdy ) - - ,.new_flow_val (new_flow_val ) - ,.new_flow_flowid (new_flow_flowid ) - ,.new_flow_recv_state (new_flow_rx_state ) - ,.new_flow_rdy (new_flow_rx_state_rdy ) - ); - - tcp_tmp_rx_buf_wrap tmp_buf ( - .clk (clk) - ,.rst (rst) - - // Write req inputs - ,.src_tmp_buf_rx_hdr_val (src_tmp_buf_rx_hdr_val ) - ,.src_tmp_buf_rx_src_ip (src_tmp_buf_rx_src_ip ) - ,.src_tmp_buf_rx_dst_ip (src_tmp_buf_rx_dst_ip ) - ,.src_tmp_buf_rx_tcp_payload_len (src_tmp_buf_rx_tcp_payload_len ) - ,.src_tmp_buf_rx_tcp_hdr (src_tmp_buf_rx_tcp_hdr ) - ,.tmp_buf_src_rx_hdr_rdy (tmp_buf_src_rx_hdr_rdy ) - - ,.src_tmp_buf_rx_data_val (src_tmp_buf_rx_data_val ) - ,.src_tmp_buf_rx_data (src_tmp_buf_rx_data ) - ,.src_tmp_buf_rx_data_last (src_tmp_buf_rx_data_last ) - ,.src_tmp_buf_rx_data_padbytes (src_tmp_buf_rx_data_padbytes ) - ,.tmp_buf_src_rx_data_rdy (tmp_buf_src_rx_data_rdy ) - - // Write resp - ,.tmp_buf_dst_rx_hdr_val (tmp_buf_rx_pipe_rx_hdr_val ) - ,.tmp_buf_dst_rx_src_ip (tmp_buf_rx_pipe_rx_src_ip ) - ,.tmp_buf_dst_rx_dst_ip (tmp_buf_rx_pipe_rx_dst_ip ) - ,.tmp_buf_dst_rx_tcp_hdr (tmp_buf_rx_pipe_rx_tcp_hdr ) - ,.dst_tmp_buf_rx_rdy (rx_pipe_tmp_buf_rx_rdy ) - - ,.tmp_buf_dst_rx_payload_val (tmp_buf_rx_pipe_rx_payload_val ) - ,.tmp_buf_dst_rx_payload_entry (tmp_buf_rx_pipe_rx_payload_entry ) - - ,.src_tmp_buf_store_rd_req_val (src_tmp_buf_store_rd_req_val ) - ,.src_tmp_buf_store_rd_req_addr (src_tmp_buf_store_rd_req_addr ) - ,.tmp_buf_store_src_rd_req_rdy (tmp_buf_store_src_rd_req_rdy ) - - ,.tmp_buf_store_src_rd_resp_val (tmp_buf_store_src_rd_resp_val ) - ,.tmp_buf_store_src_rd_resp_data (tmp_buf_store_src_rd_resp_data ) - ,.src_tmp_buf_store_rd_resp_rdy (src_tmp_buf_store_rd_resp_rdy ) - - ,.src_tmp_buf_free_slab_req_val (src_tmp_buf_free_slab_req_val ) - ,.src_tmp_buf_free_slab_req_addr (src_tmp_buf_free_slab_req_addr ) - ,.tmp_buf_free_slab_src_req_rdy (tmp_buf_free_slab_src_req_rdy ) - ); - - beehive_rx_pipe_wrap rx_pipe_wrap ( - .clk (clk) - ,.rst (rst) - - ,.recv_tcp_hdr_val (tmp_buf_rx_pipe_rx_hdr_val ) - ,.recv_src_ip (tmp_buf_rx_pipe_rx_src_ip ) - ,.recv_dst_ip (tmp_buf_rx_pipe_rx_dst_ip ) - ,.recv_tcp_hdr (tmp_buf_rx_pipe_rx_tcp_hdr ) - ,.recv_payload_val (tmp_buf_rx_pipe_rx_payload_val ) - ,.recv_payload_entry (tmp_buf_rx_pipe_rx_payload_entry ) - ,.recv_hdr_rdy (rx_pipe_tmp_buf_rx_rdy ) - - ,.new_flow_val (new_flow_val ) - ,.new_flow_flow_id (new_flow_flowid ) - ,.new_flow_lookup_entry (new_flow_lookup_entry ) - ,.new_flow_tx_state (new_flow_tx_state ) - ,.new_flow_rx_state (new_flow_rx_state ) - ,.new_flow_rdy (new_flow_rdy ) - - ,.app_new_flow_notif_val (app_new_flow_notif_val ) - ,.app_new_flow_flowid (app_new_flow_flowid ) - ,.app_new_flow_entry (app_new_flow_lookup ) - ,.app_new_flow_notif_rdy (app_new_flow_notif_rdy ) - - ,.curr_recv_state_rd_req_val (curr_recv_state_rd_req_val ) - ,.curr_recv_state_rd_req_addr (curr_recv_state_rd_req_addr ) - ,.curr_recv_state_rd_req_rdy (curr_recv_state_rd_req_rdy ) - - ,.curr_recv_state_rd_resp_val (curr_recv_state_rd_resp_val ) - ,.curr_recv_state_rd_resp_data (curr_recv_state_rd_resp_data ) - ,.curr_recv_state_rd_resp_rdy (curr_recv_state_rd_resp_rdy ) - - ,.next_recv_state_wr_req_val (next_recv_state_wr_req_val ) - ,.next_recv_state_wr_req_addr (next_recv_state_wr_req_addr ) - ,.next_recv_state_wr_req_data (next_recv_state_wr_req_data ) - ,.next_recv_state_wr_req_rdy (next_recv_state_wr_req_rdy ) - - ,.curr_tx_state_rd_req_val (recv_pipe_tx_state_rd_req_val ) - ,.curr_tx_state_rd_req_flowid (recv_pipe_tx_state_rd_req_flowid ) - ,.curr_tx_state_rd_req_rdy (tx_state_recv_pipe_rd_req_rdy ) - - ,.curr_tx_state_rd_resp_val (tx_state_recv_pipe_rd_resp_val ) - ,.curr_tx_state_rd_resp_data (tx_state_recv_pipe_rd_resp_data ) - ,.curr_tx_state_rd_resp_rdy (recv_pipe_tx_state_rd_resp_rdy ) - - ,.rx_pipe_tx_state_wr_req_val (recv_pipe_tx_state_wr_req_val ) - ,.rx_pipe_tx_state_wr_req_flowid (recv_pipe_tx_state_wr_req_flowid ) - ,.rx_pipe_tx_state_wr_req_data (recv_pipe_tx_state_wr_req_data ) - ,.tx_state_rx_pipe_wr_req_rdy (tx_state_recv_pipe_wr_req_rdy ) - - ,.rx_pipe_rt_store_set_rt_flag_val (rx_pipe_rt_store_set_rt_flag_val ) - ,.rx_pipe_rt_store_set_rt_flag_flowid(rx_pipe_rt_store_set_rt_flag_flowid ) - - ,.rx_pipe_tx_head_ptr_wr_req_val (rx_pipe_tx_head_ptr_wr_req_val ) - ,.rx_pipe_tx_head_ptr_wr_req_flowid (rx_pipe_tx_head_ptr_wr_req_flowid ) - ,.rx_pipe_tx_head_ptr_wr_req_data (rx_pipe_tx_head_ptr_wr_req_data ) - ,.tx_head_ptr_rx_pipe_wr_req_rdy (tx_head_ptr_rx_pipe_wr_req_rdy ) - - ,.rx_send_queue_enq_req_val (rx_send_queue_enq_req_val ) - ,.rx_send_queue_enq_req_data (rx_send_queue_enq_req_data ) - ,.send_queue_rx_full (send_queue_rx_full ) - - ,.rx_pipe_rx_head_ptr_rd_req_val (rx_pipe_rx_head_ptr_rd_req_val ) - ,.rx_pipe_rx_head_ptr_rd_req_addr (rx_pipe_rx_head_ptr_rd_req_addr ) - ,.rx_head_ptr_rx_pipe_rd_req_rdy (rx_head_ptr_rx_pipe_rd_req_rdy ) - - ,.rx_head_ptr_rx_pipe_rd_resp_val (rx_head_ptr_rx_pipe_rd_resp_val ) - ,.rx_head_ptr_rx_pipe_rd_resp_data (rx_head_ptr_rx_pipe_rd_resp_data ) - ,.rx_pipe_rx_head_ptr_rd_resp_rdy (rx_pipe_rx_head_ptr_rd_resp_rdy ) - - ,.rx_pipe_rx_tail_ptr_wr_req_val (rx_pipe_rx_tail_ptr_wr_req_val ) - ,.rx_pipe_rx_tail_ptr_wr_req_addr (rx_pipe_rx_tail_ptr_wr_req_addr ) - ,.rx_pipe_rx_tail_ptr_wr_req_data (rx_pipe_rx_tail_ptr_wr_req_data ) - ,.rx_tail_ptr_rx_pipe_wr_req_rdy (rx_tail_ptr_rx_pipe_wr_req_rdy ) - - ,.rx_pipe_rx_tail_ptr_rd_req_val (rx_pipe_rx_tail_ptr_rd_req_val ) - ,.rx_pipe_rx_tail_ptr_rd_req_addr (rx_pipe_rx_tail_ptr_rd_req_addr ) - ,.rx_tail_ptr_rx_pipe_rd_req_rdy (rx_tail_ptr_rx_pipe_rd_req_rdy ) - - ,.rx_tail_ptr_rx_pipe_rd_resp_val (rx_tail_ptr_rx_pipe_rd_resp_val ) - ,.rx_tail_ptr_rx_pipe_rd_resp_data (rx_tail_ptr_rx_pipe_rd_resp_data ) - ,.rx_pipe_rx_tail_ptr_rd_resp_rdy (rx_pipe_rx_tail_ptr_rd_resp_rdy ) - - ,.rx_store_buf_q_rd_req_val (rx_store_buf_q_rd_req_val ) - ,.rx_store_buf_q_rd_req_data (rx_store_buf_q_rd_req_data ) - ,.rx_store_buf_q_empty (rx_store_buf_q_empty ) - ); - - fifo_1r1w #( - .width_p (RX_SEND_QUEUE_STRUCT_W) - ,.log2_els_p (2) - ) rx_send_queue ( - .clk (clk) - ,.rst (rst) - - ,.rd_req (rx_send_queue_deq_req_val ) - ,.empty (rx_send_queue_empty ) - ,.rd_data (rx_send_queue_deq_resp_data) - - ,.wr_req (rx_send_queue_enq_req_val ) - ,.wr_data (rx_send_queue_enq_req_data) - ,.full (send_queue_rx_full ) - ); - - send_merger send_merger ( - .tx_pipe_merger_tx_val (tx_pipe_dst_tx_val ) - ,.tx_pipe_merger_tx_flowid (tx_pipe_dst_tx_flowid ) - ,.tx_pipe_merger_tx_src_ip (tx_pipe_dst_tx_src_ip ) - ,.tx_pipe_merger_tx_dst_ip (tx_pipe_dst_tx_dst_ip ) - ,.tx_pipe_merger_tx_tcp_hdr (tx_pipe_dst_tx_tcp_hdr ) - ,.tx_pipe_merger_tx_payload (tx_pipe_dst_tx_payload ) - ,.merger_tx_pipe_tx_rdy (dst_tx_pipe_tx_rdy ) - - ,.rx_pipe_merger_tx_deq_req_val (rx_send_queue_deq_req_val ) - ,.rx_pipe_merger_tx_deq_resp_data (rx_send_queue_deq_resp_data) - ,.rx_pipe_merger_tx_empty (rx_send_queue_empty ) - - ,.send_dst_tx_val (send_dst_tx_val ) - ,.send_dst_tx_flowid (send_dst_tx_flowid ) - ,.send_dst_tx_src_ip (send_dst_tx_src_ip ) - ,.send_dst_tx_dst_ip (send_dst_tx_dst_ip ) - ,.send_dst_tx_tcp_hdr (send_dst_tx_tcp_hdr ) - ,.send_dst_tx_payload (send_dst_tx_payload ) - ,.dst_send_tx_rdy (dst_send_tx_rdy ) - ); - - rx_payload_ptrs rx_payload_qs ( - .clk (clk ) - ,.rst (rst ) - - ,.head_ptr_wr_req_val (app_rx_head_ptr_wr_req_val ) - ,.head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.head_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) - ,.head_ptr_wr_req_rdy (rx_head_ptr_app_wr_req_rdy ) - - ,.head_ptr_rd0_req_val (rx_pipe_rx_head_ptr_rd_req_val ) - ,.head_ptr_rd0_req_addr (rx_pipe_rx_head_ptr_rd_req_addr ) - ,.head_ptr_rd0_req_rdy (rx_head_ptr_rx_pipe_rd_req_rdy ) - - ,.head_ptr_rd0_resp_val (rx_head_ptr_rx_pipe_rd_resp_val ) - ,.head_ptr_rd0_resp_data (rx_head_ptr_rx_pipe_rd_resp_data ) - ,.head_ptr_rd0_resp_rdy (rx_pipe_rx_head_ptr_rd_resp_rdy ) - - ,.head_ptr_rd1_req_val (app_rx_head_ptr_rd_req_val ) - ,.head_ptr_rd1_req_addr (app_rx_head_ptr_rd_req_addr ) - ,.head_ptr_rd1_req_rdy (rx_head_ptr_app_rd_req_rdy ) - - ,.head_ptr_rd1_resp_val (rx_head_ptr_app_rd_resp_val ) - ,.head_ptr_rd1_resp_data (rx_head_ptr_app_rd_resp_data ) - ,.head_ptr_rd1_resp_rdy (app_rx_head_ptr_rd_resp_rdy ) - - ,.commit_ptr_wr_req_val (store_buf_commit_ptr_wr_req_val ) - ,.commit_ptr_wr_req_addr (store_buf_commit_ptr_wr_req_addr ) - ,.commit_ptr_wr_req_data (store_buf_commit_ptr_wr_req_data ) - ,.commit_ptr_wr_req_rdy (commit_ptr_store_buf_wr_req_rdy ) - - ,.commit_ptr_rd0_req_val (store_buf_commit_ptr_rd_req_val ) - ,.commit_ptr_rd0_req_addr (store_buf_commit_ptr_rd_req_addr ) - ,.commit_ptr_rd0_req_rdy (commit_ptr_store_buf_rd_req_rdy ) - - ,.commit_ptr_rd0_resp_val (commit_ptr_store_buf_rd_resp_val ) - ,.commit_ptr_rd0_resp_data (commit_ptr_store_buf_rd_resp_data ) - ,.commit_ptr_rd0_resp_rdy (store_buf_commit_ptr_rd_resp_rdy ) - - ,.commit_ptr_rd1_req_val (app_rx_commit_ptr_rd_req_val ) - ,.commit_ptr_rd1_req_addr (app_rx_commit_ptr_rd_req_addr ) - ,.commit_ptr_rd1_req_rdy (rx_commit_ptr_app_rd_req_rdy ) - - ,.commit_ptr_rd1_resp_val (rx_commit_ptr_app_rd_resp_val ) - ,.commit_ptr_rd1_resp_data (rx_commit_ptr_app_rd_resp_data ) - ,.commit_ptr_rd1_resp_rdy (app_rx_commit_ptr_rd_resp_rdy ) - - ,.tail_ptr_wr_req_val (rx_pipe_rx_tail_ptr_wr_req_val ) - ,.tail_ptr_wr_req_addr (rx_pipe_rx_tail_ptr_wr_req_addr ) - ,.tail_ptr_wr_req_data (rx_pipe_rx_tail_ptr_wr_req_data ) - ,.tail_ptr_wr_req_rdy (rx_tail_ptr_rx_pipe_wr_req_rdy ) - - ,.tail_ptr_rd_req_val (rx_pipe_rx_tail_ptr_rd_req_val ) - ,.tail_ptr_rd_req_addr (rx_pipe_rx_tail_ptr_rd_req_addr ) - ,.tail_ptr_rd_req_rdy (rx_tail_ptr_rx_pipe_rd_req_rdy ) - - ,.tail_ptr_rd_resp_val (rx_tail_ptr_rx_pipe_rd_resp_val ) - ,.tail_ptr_rd_resp_data (rx_tail_ptr_rx_pipe_rd_resp_data ) - ,.tail_ptr_rd_resp_rdy (rx_pipe_rx_tail_ptr_rd_resp_rdy ) - - ,.new_flow_val (new_flow_val ) - ,.new_flow_flowid (new_flow_flowid ) - ,.new_rx_head_ptr ('0) - ,.new_rx_tail_ptr ('0) - ,.new_flow_rx_payload_ptrs_rdy (new_flow_rx_payload_ptrs_rdy ) - ); - -endmodule diff --git a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv index 05fd05b..45499fe 100644 --- a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv +++ b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv @@ -95,18 +95,18 @@ import packet_struct_pkg::*; ,output logic [RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data ,input logic app_rx_commit_ptr_rd_resp_rdy - ,input logic store_buf_commit_ptr_wr_req_val - ,input logic [FLOWID_W-1:0] store_buf_commit_ptr_wr_req_addr - ,input logic [RX_PAYLOAD_PTR_W:0] store_buf_commit_ptr_wr_req_data - ,output logic commit_ptr_store_buf_wr_req_rdy + ,input logic store_buf_commit_idx_wr_req_val + ,input logic [FLOWID_W-1:0] store_buf_commit_idx_wr_req_addr + ,input tcp_buf_idx store_buf_commit_idx_wr_req_data + ,output logic commit_idx_store_buf_wr_req_rdy - ,input logic store_buf_commit_ptr_rd_req_val - ,input logic [FLOWID_W-1:0] store_buf_commit_ptr_rd_req_addr - ,output logic commit_ptr_store_buf_rd_req_rdy + ,input logic store_buf_commit_idx_rd_req_val + ,input logic [FLOWID_W-1:0] store_buf_commit_idx_rd_req_addr + ,output logic commit_idx_store_buf_rd_req_rdy - ,output logic commit_ptr_store_buf_rd_resp_val - ,output logic [RX_PAYLOAD_PTR_W:0] commit_ptr_store_buf_rd_resp_data - ,input logic store_buf_commit_ptr_rd_resp_rdy + ,output logic commit_idx_store_buf_rd_resp_val + ,output tcp_buf_idx commit_idx_store_buf_rd_resp_data + ,input logic store_buf_commit_idx_rd_resp_rdy ,input logic app_sched_update_val ,input sched_cmd_struct app_sched_update_cmd @@ -161,18 +161,18 @@ import packet_struct_pkg::*; ,.tcp_rx_dst_payload_entry (tcp_rx_store_buf_payload_entry ) ,.dst_tcp_rx_hdr_rdy (store_buf_tcp_rx_rdy ) - ,.store_buf_commit_ptr_wr_req_val (store_buf_commit_ptr_wr_req_val ) - ,.store_buf_commit_ptr_wr_req_addr (store_buf_commit_ptr_wr_req_addr ) - ,.store_buf_commit_ptr_wr_req_data (store_buf_commit_ptr_wr_req_data ) - ,.commit_ptr_store_buf_wr_req_rdy (commit_ptr_store_buf_wr_req_rdy ) + ,.store_buf_commit_idx_wr_req_val (store_buf_commit_idx_wr_req_val ) + ,.store_buf_commit_idx_wr_req_addr (store_buf_commit_idx_wr_req_addr ) + ,.store_buf_commit_idx_wr_req_data (store_buf_commit_idx_wr_req_data ) + ,.commit_idx_store_buf_wr_req_rdy (commit_idx_store_buf_wr_req_rdy ) - ,.store_buf_commit_ptr_rd_req_val (store_buf_commit_ptr_rd_req_val ) - ,.store_buf_commit_ptr_rd_req_addr (store_buf_commit_ptr_rd_req_addr ) - ,.commit_ptr_store_buf_rd_req_rdy (commit_ptr_store_buf_rd_req_rdy ) + ,.store_buf_commit_idx_rd_req_val (store_buf_commit_idx_rd_req_val ) + ,.store_buf_commit_idx_rd_req_addr (store_buf_commit_idx_rd_req_addr ) + ,.commit_idx_store_buf_rd_req_rdy (commit_idx_store_buf_rd_req_rdy ) - ,.commit_ptr_store_buf_rd_resp_val (commit_ptr_store_buf_rd_resp_val ) - ,.commit_ptr_store_buf_rd_resp_data (commit_ptr_store_buf_rd_resp_data ) - ,.store_buf_commit_ptr_rd_resp_rdy (store_buf_commit_ptr_rd_resp_rdy ) + ,.commit_idx_store_buf_rd_resp_val (commit_idx_store_buf_rd_resp_val ) + ,.commit_idx_store_buf_rd_resp_data (commit_idx_store_buf_rd_resp_data ) + ,.store_buf_commit_idx_rd_resp_rdy (store_buf_commit_idx_rd_resp_rdy ) /******************************** * App interface diff --git a/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv b/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv index 9453017..0cbb4f9 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv @@ -33,7 +33,7 @@ module tcp_msg_ptr_poller_datap #( ,output logic data_ctrl_msg_satis ,input logic ctrl_data_store_req_data - ,input logic ctrl_data_store_ptrs + ,input logic ctrl_data_store_ptrs // TODO: display when this is set to 1 and flowid is good? ,input logic ctrl_data_store_flowid ); logic [FLOWID_W-1:0] flowid_reg; diff --git a/network_tiles/tcp/tcp_rx_ptr_if.sv b/network_tiles/tcp/tcp_rx_ptr_if.sv deleted file mode 100644 index 32ed010..0000000 --- a/network_tiles/tcp/tcp_rx_ptr_if.sv +++ /dev/null @@ -1,99 +0,0 @@ -`include "tcp_rx_tile_defs.svh" -module tcp_rx_ptr_if #( - parameter SRC_X = -1 - ,parameter SRC_Y = -1 -)( - input clk - ,input rst - - ,input logic noc0_ctovr_tcp_rx_ptr_if_val - ,input logic [`NOC_DATA_WIDTH-1:0] noc0_ctovr_tcp_rx_ptr_if_data - ,output logic tcp_rx_app_if_noc0_ctovr_rdy - - ,output logic tcp_rx_ptr_if_noc0_vrtoc_val - ,output logic [`NOC_DATA_WIDTH-1:0] tcp_rx_ptr_if_noc0_vrtoc_data - ,input logic noc0_vrtoc_tcp_rx_ptr_if_rdy - - ,output logic app_rx_head_ptr_wr_req_val - ,output logic [`FLOW_ID_W-1:0] app_rx_head_ptr_wr_req_addr - ,output logic [`RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data - ,input logic rx_head_ptr_app_wr_req_rdy - - ,output logic app_rx_head_ptr_rd_req_val - ,output logic [`FLOW_ID_W-1:0] app_rx_head_ptr_rd_req_addr - ,input logic rx_head_ptr_app_rd_req_rdy - - ,input logic rx_head_ptr_app_rd_resp_val - ,input logic [`RX_PAYLOAD_PTR_W:0] rx_head_ptr_app_rd_resp_data - ,output logic app_rx_head_ptr_rd_resp_rdy - - ,output logic app_rx_commit_ptr_rd_req_val - ,output logic [`FLOW_ID_W-1:0] app_rx_commit_ptr_rd_req_addr - ,input logic rx_commit_ptr_app_rd_req_rdy - - ,input logic rx_commit_ptr_app_rd_resp_val - ,input logic [`RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data - ,output logic app_rx_commit_ptr_rd_resp_rdy -); - - logic ctrl_datap_store_hdr_flit; - logic ctrl_datap_store_ptrs; - - tcp_rx_ptr_if_datap #( - .SRC_X (SRC_X ) - ,.SRC_Y (SRC_Y ) - ) datap ( - .clk (clk) - ,.rst (rst) - - ,.noc0_ctovr_tcp_rx_ptr_if_data (noc0_ctovr_tcp_rx_ptr_if_data ) - - ,.tcp_rx_ptr_if_noc0_vrtoc_data (tcp_rx_ptr_if_noc0_vrtoc_data ) - - ,.app_rx_head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.app_rx_head_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) - - ,.app_rx_head_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) - - ,.rx_head_ptr_app_rd_resp_data (rx_head_ptr_app_rd_resp_data ) - - ,.app_rx_commit_ptr_rd_req_addr (app_rx_commit_ptr_rd_req_addr ) - - ,.rx_commit_ptr_app_rd_resp_data (rx_commit_ptr_app_rd_resp_data ) - - ,.ctrl_datap_store_hdr_flit (ctrl_datap_store_hdr_flit ) - ,.ctrl_datap_store_ptrs (ctrl_datap_store_ptrs ) - ); - - tcp_rx_ptr_if_ctrl ctrl ( - .clk (clk) - ,.rst (rst) - - ,.noc0_ctovr_tcp_rx_ptr_if_val (noc0_ctovr_tcp_rx_ptr_if_val ) - ,.noc0_ctovr_tcp_rx_ptr_if_data (noc0_ctovr_tcp_rx_ptr_if_data ) - ,.tcp_rx_ptr_if_noc0_ctovr_rdy (tcp_rx_app_if_noc0_ctovr_rdy ) - - ,.tcp_rx_ptr_if_noc0_vrtoc_val (tcp_rx_ptr_if_noc0_vrtoc_val ) - ,.noc0_vrtoc_tcp_rx_ptr_if_rdy (noc0_vrtoc_tcp_rx_ptr_if_rdy ) - - ,.app_rx_head_ptr_wr_req_val (app_rx_head_ptr_wr_req_val ) - ,.rx_head_ptr_app_wr_req_rdy (rx_head_ptr_app_wr_req_rdy ) - - ,.app_rx_head_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) - ,.rx_head_ptr_app_rd_req_rdy (rx_head_ptr_app_rd_req_rdy ) - - ,.rx_head_ptr_app_rd_resp_val (rx_head_ptr_app_rd_resp_val ) - ,.app_rx_head_ptr_rd_resp_rdy (app_rx_head_ptr_rd_resp_rdy ) - - ,.app_rx_commit_ptr_rd_req_val (app_rx_commit_ptr_rd_req_val ) - ,.rx_commit_ptr_app_rd_req_rdy (rx_commit_ptr_app_rd_req_rdy ) - - ,.rx_commit_ptr_app_rd_resp_val (rx_commit_ptr_app_rd_resp_val ) - ,.app_rx_commit_ptr_rd_resp_rdy (app_rx_commit_ptr_rd_resp_rdy ) - - ,.ctrl_datap_store_hdr_flit (ctrl_datap_store_hdr_flit ) - ,.ctrl_datap_store_ptrs (ctrl_datap_store_ptrs ) - ); - - -endmodule diff --git a/network_tiles/tcp/tcp_rx_ptr_if_ctrl.sv b/network_tiles/tcp/tcp_rx_ptr_if_ctrl.sv deleted file mode 100644 index 000c336..0000000 --- a/network_tiles/tcp/tcp_rx_ptr_if_ctrl.sv +++ /dev/null @@ -1,144 +0,0 @@ -`include "tcp_rx_tile_defs.svh" -module tcp_rx_ptr_if_ctrl ( - input clk - ,input rst - - ,input logic noc0_ctovr_tcp_rx_ptr_if_val - ,input logic [`NOC_DATA_WIDTH-1:0] noc0_ctovr_tcp_rx_ptr_if_data - ,output logic tcp_rx_ptr_if_noc0_ctovr_rdy - - ,output logic tcp_rx_ptr_if_noc0_vrtoc_val - ,input logic noc0_vrtoc_tcp_rx_ptr_if_rdy - - ,output logic app_rx_head_ptr_wr_req_val - ,input logic rx_head_ptr_app_wr_req_rdy - - ,output logic app_rx_head_ptr_rd_req_val - ,input logic rx_head_ptr_app_rd_req_rdy - - ,input logic rx_head_ptr_app_rd_resp_val - ,output logic app_rx_head_ptr_rd_resp_rdy - - ,output logic app_rx_commit_ptr_rd_req_val - ,input logic rx_commit_ptr_app_rd_req_rdy - - ,input logic rx_commit_ptr_app_rd_resp_val - ,output logic app_rx_commit_ptr_rd_resp_rdy - - ,output logic ctrl_datap_store_hdr_flit - ,output logic ctrl_datap_store_ptrs -); - - typedef enum logic[2:0] { - READY = 3'd0, - WR_HD_PTR = 3'd1, - READ_PTRS = 3'd2, - READ_PTRS_RESP = 3'd3, - HDR_FLIT = 3'd4, - UND = 'X - } state_e; - - state_e state_reg; - state_e state_next; - - beehive_noc_hdr_flit hdr_flit_cast; - - assign hdr_flit_cast = noc0_ctovr_tcp_rx_ptr_if_data; - - always_ff @(posedge clk) begin - if (rst) begin - state_reg <= READY; - end - else begin - state_reg <= state_next; - end - end - - always_comb begin - tcp_rx_ptr_if_noc0_ctovr_rdy = 1'b0; - tcp_rx_ptr_if_noc0_vrtoc_val = 1'b0; - - app_rx_head_ptr_wr_req_val = 1'b0; - app_rx_head_ptr_rd_req_val = 1'b0; - app_rx_commit_ptr_rd_req_val = 1'b0; - app_rx_head_ptr_rd_resp_rdy = 1'b0; - app_rx_commit_ptr_rd_resp_rdy = 1'b0; - - ctrl_datap_store_hdr_flit = 1'b0; - - state_next = state_reg; - case (state_reg) - READY: begin - tcp_rx_ptr_if_noc0_ctovr_rdy = 1'b1; - ctrl_datap_store_hdr_flit = 1'b1; - - if (noc0_ctovr_tcp_rx_ptr_if_val) begin - if (hdr_flit_cast.core.msg_type == TCP_RX_PTRS_REQ) begin - state_next = READ_PTRS; - end - else begin - state_next = WR_HD_PTR; - end - end - else begin - state_next = READY; - end - end - WR_HD_PTR: begin - app_rx_head_ptr_wr_req_val = 1'b1; - - if (rx_head_ptr_app_wr_req_rdy) begin - state_next = READY; - end - else begin - state_next = WR_HD_PTR; - end - end - READ_PTRS: begin - if (rx_head_ptr_app_rd_req_rdy & rx_commit_ptr_app_rd_req_rdy) begin - app_rx_commit_ptr_rd_req_val = 1'b1; - app_rx_head_ptr_rd_req_val = 1'b1; - - state_next = READ_PTRS_RESP; - end - else begin - state_next = READ_PTRS; - end - end - READ_PTRS_RESP: begin - ctrl_datap_store_ptrs = 1'b1; - if (rx_head_ptr_app_rd_resp_val & rx_commit_ptr_app_rd_resp_val) begin - app_rx_head_ptr_rd_resp_rdy = 1'b1; - app_rx_commit_ptr_rd_resp_rdy = 1'b1; - state_next = HDR_FLIT; - end - else begin - state_next = READ_PTRS_RESP; - end - end - HDR_FLIT: begin - tcp_rx_ptr_if_noc0_vrtoc_val = 1'b1; - if (noc0_vrtoc_tcp_rx_ptr_if_rdy) begin - state_next = READY; - end - else begin - state_next = HDR_FLIT; - end - end - default: begin - tcp_rx_ptr_if_noc0_ctovr_rdy = 'X; - tcp_rx_ptr_if_noc0_vrtoc_val = 'X; - - app_rx_head_ptr_wr_req_val = 'X; - app_rx_head_ptr_rd_req_val = 'X; - app_rx_commit_ptr_rd_req_val = 'X; - app_rx_head_ptr_rd_resp_rdy = 'X; - app_rx_commit_ptr_rd_resp_rdy = 'X; - - ctrl_datap_store_hdr_flit = 'X; - - state_next = UND; - end - endcase - end -endmodule diff --git a/network_tiles/tcp/tcp_rx_ptr_if_datap.sv b/network_tiles/tcp/tcp_rx_ptr_if_datap.sv deleted file mode 100644 index ba18e4a..0000000 --- a/network_tiles/tcp/tcp_rx_ptr_if_datap.sv +++ /dev/null @@ -1,90 +0,0 @@ -`include "tcp_rx_tile_defs.svh" -module tcp_rx_ptr_if_datap #( - parameter SRC_X = "inv" - ,parameter SRC_Y = "inv" -)( - input clk - ,input rst - - ,input logic [`NOC_DATA_WIDTH-1:0] noc0_ctovr_tcp_rx_ptr_if_data - - ,output logic [`NOC_DATA_WIDTH-1:0] tcp_rx_ptr_if_noc0_vrtoc_data - - ,input logic [`FLOW_ID_W-1:0] app_rx_head_ptr_wr_req_addr - ,input logic [`RX_PAYLOAD_PTR_W:0] app_rx_head_ptr_wr_req_data - - ,input logic [`FLOW_ID_W-1:0] app_rx_head_ptr_rd_req_addr - - ,output logic [`RX_PAYLOAD_PTR_W:0] rx_head_ptr_app_rd_resp_data - - ,input logic [`FLOW_ID_W-1:0] app_rx_commit_ptr_rd_req_addr - - ,output logic [`RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data - - ,input logic ctrl_datap_store_hdr_flit - ,input logic ctrl_datap_store_ptrs -); - - tcp_noc_hdr_flit hdr_flit_reg; - tcp_noc_hdr_flit hdr_flit_next; - - tcp_noc_hdr_flit resp_flit; - - logic [`PAYLOAD_PTR_W-1:0] head_ptr_reg; - logic [`PAYLOAD_PTR_W-1:0] head_ptr_next; - logic [`PAYLOAD_PTR_W-1:0] commit_ptr_reg; - logic [`PAYLOAD_PTR_W-1:0] commit_ptr_next; - - assign app_rx_head_ptr_wr_req_addr = hdr_flit_reg.flowid; - assign app_rx_head_ptr_rd_req_addr = hdr_flit_reg.flowid; - assign app_rx_commit_ptr_rd_req_addr = hdr_flit_reg.flowid; - - assign app_rx_head_ptr_wr_req_data = hdr_flit_reg.head_ptr; - - always_ff @(posedge clk) begin - if (rst) begin - hdr_flit_reg <= '0; - head_ptr_reg <= '0; - commit_ptr_reg <= '0; - end - else begin - hdr_flit_reg <= hdr_flit_next; - head_ptr_reg <= head_ptr_next; - commit_ptr_reg <= commit_ptr_next; - end - end - - assign hdr_flit_next = ctrl_datap_store_hdr_flit - ? noc0_ctovr_tcp_rx_ptr_if_data - : hdr_flit_reg; - - always_comb begin - if (ctrl_datap_store_ptrs) begin - commit_ptr_next = rx_commit_ptr_app_rd_resp_data; - head_ptr_next = rx_head_ptr_app_rd_resp_data; - end - else begin - commit_ptr_next = commit_ptr_reg; - head_ptr_next = head_ptr_reg; - end - end - - always_comb begin - resp_flit = '0; - - resp_flit.core.dst_x_coord = hdr_flit_reg.core.src_x_coord; - resp_flit.core.dst_y_coord = hdr_flit_reg.core.src_y_coord; - resp_flit.core.dst_fbits = hdr_flit_reg.core.src_fbits; - - resp_flit.core.msg_len = 0; - resp_flit.core.src_x_coord = SRC_X[`XY_WIDTH-1:0]; - resp_flit.core.src_y_coord = SRC_Y[`XY_WIDTH-1:0]; - resp_flit.core.src_fbits = TCP_RX_BUF_IF_FBITS; - - resp_flit.core.msg_type = TCP_RX_PTRS_RESP; - resp_flit.head_ptr = head_ptr_reg; - resp_flit.commit_ptr = commit_ptr_reg; - end - - -endmodule diff --git a/network_tiles/tcp/tcp_rx_tile.sv b/network_tiles/tcp/tcp_rx_tile.sv index e178fd7..2011595 100644 --- a/network_tiles/tcp/tcp_rx_tile.sv +++ b/network_tiles/tcp/tcp_rx_tile.sv @@ -68,18 +68,18 @@ module tcp_rx_tile #( ,output logic [`RX_TMP_BUF_ADDR_W-1:0] store_buf_tmp_buf_free_slab_rx_req_addr ,input logic tmp_buf_free_slab_store_buf_rx_req_rdy - ,output logic store_buf_commit_ptr_rd_req_val - ,output logic [`FLOW_ID_W-1:0] store_buf_commit_ptr_rd_req_flowid - ,input logic commit_ptr_store_buf_rd_req_rdy + ,output logic store_buf_commit_idx_rd_req_val + ,output logic [`FLOW_ID_W-1:0] store_buf_commit_idx_rd_req_flowid + ,input logic commit_idx_store_buf_rd_req_rdy - ,input logic commit_ptr_store_buf_rd_resp_val - ,input logic [`RX_PAYLOAD_PTR_W:0] commit_ptr_store_buf_rd_resp_data - ,output logic store_buf_commit_ptr_rd_resp_rdy + ,input logic commit_idx_store_buf_rd_resp_val + ,input tcp_buf_idx commit_idx_store_buf_rd_resp_data + ,output logic store_buf_commit_idx_rd_resp_rdy - ,output logic store_buf_commit_ptr_wr_req_val - ,output logic [`FLOW_ID_W-1:0] store_buf_commit_ptr_wr_req_flowid - ,output logic [`RX_PAYLOAD_PTR_W:0] store_buf_commit_ptr_wr_req_data - ,input logic commit_ptr_store_buf_wr_req_rdy + ,output logic store_buf_commit_idx_wr_req_val + ,output logic [`FLOW_ID_W-1:0] store_buf_commit_idx_wr_req_flowid + ,output tcp_buf_idx store_buf_commit_idx_wr_req_data + ,input logic commit_idx_store_buf_wr_req_rdy ,input logic app_new_flow_notif_val ,input logic [`FLOW_ID_W-1:0] app_new_flow_flowid @@ -444,18 +444,18 @@ module tcp_rx_tile #( ,.store_buf_tmp_buf_free_slab_rx_req_addr (store_buf_tmp_buf_free_slab_rx_req_addr ) ,.tmp_buf_free_slab_store_buf_rx_req_rdy (tmp_buf_free_slab_store_buf_rx_req_rdy ) - ,.store_buf_commit_ptr_rd_req_val (store_buf_commit_ptr_rd_req_val ) - ,.store_buf_commit_ptr_rd_req_flowid (store_buf_commit_ptr_rd_req_flowid ) - ,.commit_ptr_store_buf_rd_req_rdy (commit_ptr_store_buf_rd_req_rdy ) + ,.store_buf_commit_idx_rd_req_val (store_buf_commit_idx_rd_req_val ) + ,.store_buf_commit_idx_rd_req_flowid (store_buf_commit_idx_rd_req_flowid ) + ,.commit_idx_store_buf_rd_req_rdy (commit_idx_store_buf_rd_req_rdy ) - ,.commit_ptr_store_buf_rd_resp_val (commit_ptr_store_buf_rd_resp_val ) - ,.commit_ptr_store_buf_rd_resp_data (commit_ptr_store_buf_rd_resp_data ) - ,.store_buf_commit_ptr_rd_resp_rdy (store_buf_commit_ptr_rd_resp_rdy ) + ,.commit_idx_store_buf_rd_resp_val (commit_idx_store_buf_rd_resp_val ) + ,.commit_idx_store_buf_rd_resp_data (commit_idx_store_buf_rd_resp_data ) + ,.store_buf_commit_idx_rd_resp_rdy (store_buf_commit_idx_rd_resp_rdy ) - ,.store_buf_commit_ptr_wr_req_val (store_buf_commit_ptr_wr_req_val ) - ,.store_buf_commit_ptr_wr_req_flowid (store_buf_commit_ptr_wr_req_flowid ) - ,.store_buf_commit_ptr_wr_req_data (store_buf_commit_ptr_wr_req_data ) - ,.commit_ptr_store_buf_wr_req_rdy (commit_ptr_store_buf_wr_req_rdy ) + ,.store_buf_commit_idx_wr_req_val (store_buf_commit_idx_wr_req_val ) + ,.store_buf_commit_idx_wr_req_flowid (store_buf_commit_idx_wr_req_flowid ) + ,.store_buf_commit_idx_wr_req_data (store_buf_commit_idx_wr_req_data ) + ,.commit_idx_store_buf_wr_req_rdy (commit_idx_store_buf_wr_req_rdy ) ); diff --git a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv index c811cc4..e9c576d 100644 --- a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv +++ b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv @@ -59,18 +59,18 @@ import tcp_pkg::*; ,output logic [RX_TMP_BUF_ADDR_W-1:0] store_buf_tmp_buf_free_slab_rx_req_addr ,input logic tmp_buf_free_slab_store_buf_rx_req_rdy - ,output logic store_buf_commit_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] store_buf_commit_ptr_rd_req_flowid - ,input logic commit_ptr_store_buf_rd_req_rdy + ,output logic store_buf_commit_idx_rd_req_val + ,output logic [FLOWID_W-1:0] store_buf_commit_idx_rd_req_flowid + ,input logic commit_idx_store_buf_rd_req_rdy - ,input logic commit_ptr_store_buf_rd_resp_val - ,input logic [RX_PAYLOAD_PTR_W:0] commit_ptr_store_buf_rd_resp_data - ,output logic store_buf_commit_ptr_rd_resp_rdy + ,input logic commit_idx_store_buf_rd_resp_val + ,input tcp_buf_idx commit_idx_store_buf_rd_resp_data + ,output logic store_buf_commit_idx_rd_resp_rdy - ,output logic store_buf_commit_ptr_wr_req_val - ,output logic [FLOWID_W-1:0] store_buf_commit_ptr_wr_req_flowid - ,output logic [RX_PAYLOAD_PTR_W:0] store_buf_commit_ptr_wr_req_data - ,input logic commit_ptr_store_buf_wr_req_rdy + ,output logic store_buf_commit_idx_wr_req_val + ,output logic [FLOWID_W-1:0] store_buf_commit_idx_wr_req_flowid + ,output tcp_buf_idx store_buf_commit_idx_wr_req_data + ,input logic commit_idx_store_buf_wr_req_rdy ,input logic app_new_flow_notif_val ,input logic [FLOWID_W-1:0] app_new_flow_flowid @@ -540,18 +540,18 @@ print(router_wires) ,.store_buf_tmp_buf_free_slab_rx_req_addr (store_buf_tmp_buf_free_slab_rx_req_addr ) ,.tmp_buf_free_slab_store_buf_rx_req_rdy (tmp_buf_free_slab_store_buf_rx_req_rdy ) - ,.store_buf_commit_ptr_rd_req_val (store_buf_commit_ptr_rd_req_val ) - ,.store_buf_commit_ptr_rd_req_flowid (store_buf_commit_ptr_rd_req_flowid ) - ,.commit_ptr_store_buf_rd_req_rdy (commit_ptr_store_buf_rd_req_rdy ) + ,.store_buf_commit_idx_rd_req_val (store_buf_commit_idx_rd_req_val ) + ,.store_buf_commit_idx_rd_req_flowid (store_buf_commit_idx_rd_req_flowid ) + ,.commit_idx_store_buf_rd_req_rdy (commit_idx_store_buf_rd_req_rdy ) - ,.commit_ptr_store_buf_rd_resp_val (commit_ptr_store_buf_rd_resp_val ) - ,.commit_ptr_store_buf_rd_resp_data (commit_ptr_store_buf_rd_resp_data ) - ,.store_buf_commit_ptr_rd_resp_rdy (store_buf_commit_ptr_rd_resp_rdy ) + ,.commit_idx_store_buf_rd_resp_val (commit_idx_store_buf_rd_resp_val ) + ,.commit_idx_store_buf_rd_resp_data (commit_idx_store_buf_rd_resp_data ) + ,.store_buf_commit_idx_rd_resp_rdy (store_buf_commit_idx_rd_resp_rdy ) - ,.store_buf_commit_ptr_wr_req_val (store_buf_commit_ptr_wr_req_val ) - ,.store_buf_commit_ptr_wr_req_flowid (store_buf_commit_ptr_wr_req_flowid ) - ,.store_buf_commit_ptr_wr_req_data (store_buf_commit_ptr_wr_req_data ) - ,.commit_ptr_store_buf_wr_req_rdy (commit_ptr_store_buf_wr_req_rdy ) + ,.store_buf_commit_idx_wr_req_val (store_buf_commit_idx_wr_req_val ) + ,.store_buf_commit_idx_wr_req_flowid (store_buf_commit_idx_wr_req_flowid ) + ,.store_buf_commit_idx_wr_req_data (store_buf_commit_idx_wr_req_data ) + ,.commit_idx_store_buf_wr_req_rdy (commit_idx_store_buf_wr_req_rdy ) ); diff --git a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv index 87cf379..c5989da 100644 --- a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv +++ b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv @@ -84,18 +84,18 @@ import tcp_misc_pkg::*; logic [RX_TMP_BUF_ADDR_W-1:0] store_buf_tmp_buf_free_slab_rx_req_addr; logic tmp_buf_free_slab_store_buf_rx_req_rdy; - logic store_buf_commit_ptr_wr_req_val; - logic [FLOWID_W-1:0] store_buf_commit_ptr_wr_req_flowid; - logic [RX_PAYLOAD_PTR_W:0] store_buf_commit_ptr_wr_req_data; - logic commit_ptr_store_buf_wr_req_rdy; + logic store_buf_commit_idx_wr_req_val; + logic [FLOWID_W-1:0] store_buf_commit_idx_wr_req_flowid; + tcp_buf_idx store_buf_commit_idx_wr_req_data; + logic commit_idx_store_buf_wr_req_rdy; - logic store_buf_commit_ptr_rd_req_val; - logic [FLOWID_W-1:0] store_buf_commit_ptr_rd_req_addr; - logic commit_ptr_store_buf_rd_req_rdy; + logic store_buf_commit_idx_rd_req_val; + logic [FLOWID_W-1:0] store_buf_commit_idx_rd_req_addr; + logic commit_idx_store_buf_rd_req_rdy; - logic commit_ptr_store_buf_rd_resp_val; - logic [RX_PAYLOAD_PTR_W:0] commit_ptr_store_buf_rd_resp_data; - logic store_buf_commit_ptr_rd_resp_rdy; + logic commit_idx_store_buf_rd_resp_val; + tcp_buf_idx commit_idx_store_buf_rd_resp_data; + logic store_buf_commit_idx_rd_resp_rdy; logic app_new_flow_notif_val; logic [FLOWID_W-1:0] app_new_flow_flowid; @@ -195,18 +195,18 @@ import tcp_misc_pkg::*; ,.store_buf_tmp_buf_free_slab_rx_req_addr (store_buf_tmp_buf_free_slab_rx_req_addr ) ,.tmp_buf_free_slab_store_buf_rx_req_rdy (tmp_buf_free_slab_store_buf_rx_req_rdy ) - ,.store_buf_commit_ptr_rd_req_val (store_buf_commit_ptr_rd_req_val ) - ,.store_buf_commit_ptr_rd_req_flowid (store_buf_commit_ptr_rd_req_addr ) - ,.commit_ptr_store_buf_rd_req_rdy (commit_ptr_store_buf_rd_req_rdy ) + ,.store_buf_commit_idx_rd_req_val (store_buf_commit_idx_rd_req_val ) + ,.store_buf_commit_idx_rd_req_flowid (store_buf_commit_idx_rd_req_addr ) + ,.commit_idx_store_buf_rd_req_rdy (commit_idx_store_buf_rd_req_rdy ) - ,.commit_ptr_store_buf_rd_resp_val (commit_ptr_store_buf_rd_resp_val ) - ,.commit_ptr_store_buf_rd_resp_data (commit_ptr_store_buf_rd_resp_data ) - ,.store_buf_commit_ptr_rd_resp_rdy (store_buf_commit_ptr_rd_resp_rdy ) + ,.commit_idx_store_buf_rd_resp_val (commit_idx_store_buf_rd_resp_val ) + ,.commit_idx_store_buf_rd_resp_data (commit_idx_store_buf_rd_resp_data ) + ,.store_buf_commit_idx_rd_resp_rdy (store_buf_commit_idx_rd_resp_rdy ) - ,.store_buf_commit_ptr_wr_req_val (store_buf_commit_ptr_wr_req_val ) - ,.store_buf_commit_ptr_wr_req_flowid (store_buf_commit_ptr_wr_req_flowid ) - ,.store_buf_commit_ptr_wr_req_data (store_buf_commit_ptr_wr_req_data ) - ,.commit_ptr_store_buf_wr_req_rdy (commit_ptr_store_buf_wr_req_rdy ) + ,.store_buf_commit_idx_wr_req_val (store_buf_commit_idx_wr_req_val ) + ,.store_buf_commit_idx_wr_req_flowid (store_buf_commit_idx_wr_req_flowid ) + ,.store_buf_commit_idx_wr_req_data (store_buf_commit_idx_wr_req_data ) + ,.commit_idx_store_buf_wr_req_rdy (commit_idx_store_buf_wr_req_rdy ) ,.app_new_flow_notif_val (app_new_flow_notif_val ) ,.app_new_flow_lookup (app_new_flow_lookup ) @@ -321,26 +321,26 @@ import tcp_misc_pkg::*; ,.rx_head_ptr_app_rd_resp_data (rx_head_ptr_app_rd_resp_data ) ,.app_rx_head_ptr_rd_resp_rdy (app_rx_head_ptr_rd_resp_rdy ) - ,.app_rx_commit_ptr_rd_req_val (app_rx_commit_ptr_rd_req_val ) - ,.app_rx_commit_ptr_rd_req_addr (app_rx_commit_ptr_rd_req_addr ) - ,.rx_commit_ptr_app_rd_req_rdy (rx_commit_ptr_app_rd_req_rdy ) + ,.app_rx_commit_idx_rd_req_val (app_rx_commit_idx_rd_req_val ) + ,.app_rx_commit_idx_rd_req_addr (app_rx_commit_idx_rd_req_addr ) + ,.rx_commit_idx_app_rd_req_rdy (rx_commit_idx_app_rd_req_rdy ) - ,.rx_commit_ptr_app_rd_resp_val (rx_commit_ptr_app_rd_resp_val ) - ,.rx_commit_ptr_app_rd_resp_data (rx_commit_ptr_app_rd_resp_data ) - ,.app_rx_commit_ptr_rd_resp_rdy (app_rx_commit_ptr_rd_resp_rdy ) + ,.rx_commit_idx_app_rd_resp_val (rx_commit_idx_app_rd_resp_val ) + ,.rx_commit_idx_app_rd_resp_data (rx_commit_idx_app_rd_resp_data ) + ,.app_rx_commit_idx_rd_resp_rdy (app_rx_commit_idx_rd_resp_rdy ) - ,.store_buf_commit_ptr_wr_req_val (store_buf_commit_ptr_wr_req_val ) - ,.store_buf_commit_ptr_wr_req_addr (store_buf_commit_ptr_wr_req_flowid ) - ,.store_buf_commit_ptr_wr_req_data (store_buf_commit_ptr_wr_req_data ) - ,.commit_ptr_store_buf_wr_req_rdy (commit_ptr_store_buf_wr_req_rdy ) + ,.store_buf_commit_idx_wr_req_val (store_buf_commit_idx_wr_req_val ) + ,.store_buf_commit_idx_wr_req_addr (store_buf_commit_idx_wr_req_flowid ) + ,.store_buf_commit_idx_wr_req_data (store_buf_commit_idx_wr_req_data ) + ,.commit_idx_store_buf_wr_req_rdy (commit_idx_store_buf_wr_req_rdy ) - ,.store_buf_commit_ptr_rd_req_val (store_buf_commit_ptr_rd_req_val ) - ,.store_buf_commit_ptr_rd_req_addr (store_buf_commit_ptr_rd_req_addr ) - ,.commit_ptr_store_buf_rd_req_rdy (commit_ptr_store_buf_rd_req_rdy ) + ,.store_buf_commit_idx_rd_req_val (store_buf_commit_idx_rd_req_val ) + ,.store_buf_commit_idx_rd_req_addr (store_buf_commit_idx_rd_req_addr ) + ,.commit_idx_store_buf_rd_req_rdy (commit_idx_store_buf_rd_req_rdy ) - ,.commit_ptr_store_buf_rd_resp_val (commit_ptr_store_buf_rd_resp_val ) - ,.commit_ptr_store_buf_rd_resp_data (commit_ptr_store_buf_rd_resp_data ) - ,.store_buf_commit_ptr_rd_resp_rdy (store_buf_commit_ptr_rd_resp_rdy ) + ,.commit_idx_store_buf_rd_resp_val (commit_idx_store_buf_rd_resp_val ) + ,.commit_idx_store_buf_rd_resp_data (commit_idx_store_buf_rd_resp_data ) + ,.store_buf_commit_idx_rd_resp_rdy (store_buf_commit_idx_rd_resp_rdy ) ,.app_sched_update_val (app_sched_update_val ) ,.app_sched_update_cmd (app_sched_update_cmd ) diff --git a/protocols/tcp_hw b/protocols/tcp_hw index 59c92b1..72c8586 160000 --- a/protocols/tcp_hw +++ b/protocols/tcp_hw @@ -1 +1 @@ -Subproject commit 59c92b13d330469623b2bcf8510a09f0cb6ed9be +Subproject commit 72c8586707ab154afcd03a6c62a792d2239ba33e diff --git a/protocols/tcp_slow b/protocols/tcp_slow index 1d5dcc1..73a8ebb 160000 --- a/protocols/tcp_slow +++ b/protocols/tcp_slow @@ -1 +1 @@ -Subproject commit 1d5dcc1b45cf6d55b25ba34ecd263ea82b2787f7 +Subproject commit 73a8ebb13d0b23ecc76edb7bb9f13d8cb9e374e2 diff --git a/sample_designs/ip_encap_tcp_pull_echo/ip_encap_tcp_pull_echo_sim.flist b/sample_designs/ip_encap_tcp_pull_echo/ip_encap_tcp_pull_echo_sim.flist index 5ee09d6..b62b95c 100644 --- a/sample_designs/ip_encap_tcp_pull_echo/ip_encap_tcp_pull_echo_sim.flist +++ b/sample_designs/ip_encap_tcp_pull_echo/ip_encap_tcp_pull_echo_sim.flist @@ -79,9 +79,7 @@ $BEEHIVE_PROJECT_ROOT/tcp/include/tcp_rx_tile_pkg.sv $BEEHIVE_PROJECT_ROOT/tcp/include/tcp_tx_tile_pkg.sv $BEEHIVE_PROJECT_ROOT/tcp/beehive_rx_pipe_wrap.sv -$BEEHIVE_PROJECT_ROOT/tcp/beehive_tcp_engine_wrap.sv $BEEHIVE_PROJECT_ROOT/tcp/tcp_tile_wrap.sv - $BEEHIVE_PROJECT_ROOT/tcp/tcp_app_notif.sv $BEEHIVE_PROJECT_ROOT/tcp/tcp_app_notif_cam.sv $BEEHIVE_PROJECT_ROOT/tcp/tcp_app_notif_ctrl.sv From 5d089e00bbadb9720e8d1d662cd3f1356ca12d65 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Thu, 9 Jan 2025 17:14:42 -0800 Subject: [PATCH 07/13] get most of the buf store side written --- network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv | 8 ++++++++ .../ip_encap_tcp_pull_echo_sim.flist | 2 ++ 2 files changed, 10 insertions(+) diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv index 5179845..f0ff64d 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv @@ -92,3 +92,11 @@ module tcp_rx_msg_noc_if_out_datap #( end endmodule + +{ +input data_ready, +output [10:0] data, +output data_valid, +} + +assign data_valid = data_ready && asdfae; \ No newline at end of file diff --git a/sample_designs/ip_encap_tcp_pull_echo/ip_encap_tcp_pull_echo_sim.flist b/sample_designs/ip_encap_tcp_pull_echo/ip_encap_tcp_pull_echo_sim.flist index b62b95c..5ee09d6 100644 --- a/sample_designs/ip_encap_tcp_pull_echo/ip_encap_tcp_pull_echo_sim.flist +++ b/sample_designs/ip_encap_tcp_pull_echo/ip_encap_tcp_pull_echo_sim.flist @@ -79,7 +79,9 @@ $BEEHIVE_PROJECT_ROOT/tcp/include/tcp_rx_tile_pkg.sv $BEEHIVE_PROJECT_ROOT/tcp/include/tcp_tx_tile_pkg.sv $BEEHIVE_PROJECT_ROOT/tcp/beehive_rx_pipe_wrap.sv +$BEEHIVE_PROJECT_ROOT/tcp/beehive_tcp_engine_wrap.sv $BEEHIVE_PROJECT_ROOT/tcp/tcp_tile_wrap.sv + $BEEHIVE_PROJECT_ROOT/tcp/tcp_app_notif.sv $BEEHIVE_PROJECT_ROOT/tcp/tcp_app_notif_cam.sv $BEEHIVE_PROJECT_ROOT/tcp/tcp_app_notif_ctrl.sv From 75ebcc048d75265bc8ad92a4bb9665837509d162 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Fri, 10 Jan 2025 14:55:57 -0800 Subject: [PATCH 08/13] finish store_buf hookup to buf_store --- .../tcp/beehive_tcp_slow_engine_wrap.sv | 18 ++++++++++- network_tiles/tcp/tcp_rx_tile.sv | 18 +++++++++++ network_tiles/tcp/tcp_rx_tile_gen.sv.pyv | 19 ++++++++++++ network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv | 30 +++++++++++++++++++ protocols/tcp_hw | 2 +- protocols/tcp_slow | 2 +- 6 files changed, 86 insertions(+), 3 deletions(-) diff --git a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv index 45499fe..7ed6cc3 100644 --- a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv +++ b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv @@ -111,7 +111,15 @@ import packet_struct_pkg::*; ,input logic app_sched_update_val ,input sched_cmd_struct app_sched_update_cmd ,output logic sched_app_update_rdy - + + ,input rx_store_buf_rx_buf_store_rd_req_val + ,input [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid + ,input [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx + ,output logic rx_buf_store_rx_store_buf_rd_req_rdy + + ,output logic rx_buf_store_rx_store_buf_rd_resp_val + ,output tcp_buf rx_buf_store_rx_store_buf_rd_resp_data + ,input rx_store_buf_rx_buf_store_rd_resp_rdy ); logic tmp_buf_engine_rx_hdr_val; logic engine_tmp_buf_rx_rdy; @@ -230,6 +238,14 @@ import packet_struct_pkg::*; ,.app_sched_update_cmd (app_sched_update_cmd ) ,.sched_app_update_rdy (sched_app_update_rdy ) + ,.rx_store_buf_rx_buf_store_rd_req_val(rx_store_buf_rx_buf_store_rd_req_val) + ,.rx_store_buf_rx_buf_store_rd_req_flowid(rx_store_buf_rx_buf_store_rd_req_flowid) + ,.rx_store_buf_rx_buf_store_rd_req_idx(rx_store_buf_rx_buf_store_rd_req_idx) + ,.rx_buf_store_rx_store_buf_rd_req_rdy(rx_buf_store_rx_store_buf_rd_req_rdy) + + ,.rx_buf_store_rx_store_buf_rd_resp_val(rx_buf_store_rx_store_buf_rd_resp_val) + ,.rx_buf_store_rx_store_buf_rd_resp_data(rx_buf_store_rx_store_buf_rd_resp_data) + ,.rx_store_buf_rx_buf_store_rd_resp_rdy(rx_store_buf_rx_buf_store_rd_resp_rdy) ); // drop if the tmp buf is backpressuring diff --git a/network_tiles/tcp/tcp_rx_tile.sv b/network_tiles/tcp/tcp_rx_tile.sv index 2011595..1c6306f 100644 --- a/network_tiles/tcp/tcp_rx_tile.sv +++ b/network_tiles/tcp/tcp_rx_tile.sv @@ -106,6 +106,15 @@ module tcp_rx_tile #( ,input logic rx_commit_ptr_app_rd_resp_val ,input logic [`RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data ,output logic app_rx_commit_ptr_rd_resp_rdy + + ,output store_buf_buf_store_rd_req_val + ,output [FLOWID_W-1:0] store_buf_buf_store_rd_req_flowid + ,output [RX_PAYLOAD_IDX_W-1:0] store_buf_buf_store_rd_req_idx + ,input logic buf_store_store_buf_rd_req_rdy + + ,input logic buf_store_store_buf_rd_resp_val + ,input tcp_buf buf_store_store_buf_rd_resp_data + ,output store_buf_buf_store_rd_resp_rdy ); logic noc0_vrtoc_tile_rx_router_val; @@ -456,6 +465,15 @@ module tcp_rx_tile #( ,.store_buf_commit_idx_wr_req_flowid (store_buf_commit_idx_wr_req_flowid ) ,.store_buf_commit_idx_wr_req_data (store_buf_commit_idx_wr_req_data ) ,.commit_idx_store_buf_wr_req_rdy (commit_idx_store_buf_wr_req_rdy ) + + ,.store_buf_buf_store_rd_req_val(store_buf_buf_store_rd_req_val) + ,.store_buf_buf_store_rd_req_flowid(store_buf_buf_store_rd_req_flowid) + ,.store_buf_buf_store_rd_req_idx(store_buf_buf_store_rd_req_idx) + ,.buf_store_store_buf_rd_req_rdy(buf_store_store_buf_rd_req_rdy) + + ,.buf_store_store_buf_rd_resp_val(buf_store_store_buf_rd_resp_val) + ,.buf_store_store_buf_rd_resp_data(buf_store_store_buf_rd_resp_data) + ,.store_buf_buf_store_rd_resp_rdy(store_buf_buf_store_rd_resp_rdy) ); diff --git a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv index e9c576d..5f08bbb 100644 --- a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv +++ b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv @@ -97,6 +97,16 @@ import tcp_pkg::*; ,input logic rx_commit_ptr_app_rd_resp_val ,input logic [RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data ,output logic app_rx_commit_ptr_rd_resp_rdy + + + ,output rx_store_buf_rx_buf_store_rd_req_val + ,output [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid + ,output [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx + ,input logic rx_buf_store_rx_store_buf_rd_req_rdy + + ,input logic rx_buf_store_rx_store_buf_rd_resp_val + ,input tcp_buf rx_buf_store_rx_store_buf_rd_resp_data + ,output rx_store_buf_rx_buf_store_rd_resp_rdy ); <% @@ -552,6 +562,15 @@ print(router_wires) ,.store_buf_commit_idx_wr_req_flowid (store_buf_commit_idx_wr_req_flowid ) ,.store_buf_commit_idx_wr_req_data (store_buf_commit_idx_wr_req_data ) ,.commit_idx_store_buf_wr_req_rdy (commit_idx_store_buf_wr_req_rdy ) + + ,.rx_store_buf_rx_buf_store_rd_req_val(rx_store_buf_rx_buf_store_rd_req_val) + ,.rx_store_buf_rx_buf_store_rd_req_flowid(rx_store_buf_rx_buf_store_rd_req_flowid) + ,.rx_store_buf_rx_buf_store_rd_req_idx(rx_store_buf_rx_buf_store_rd_req_idx) + ,.rx_buf_store_rx_store_buf_rd_req_rdy(rx_buf_store_rx_store_buf_rd_req_rdy) + + ,.rx_buf_store_rx_store_buf_rd_resp_val(rx_buf_store_rx_store_buf_rd_resp_val) + ,.rx_buf_store_rx_store_buf_rd_resp_data(rx_buf_store_rx_store_buf_rd_resp_data) + ,.rx_store_buf_rx_buf_store_rd_resp_rdy(rx_store_buf_rx_buf_store_rd_resp_rdy) ); diff --git a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv index c5989da..7cff34f 100644 --- a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv +++ b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv @@ -149,6 +149,16 @@ import tcp_misc_pkg::*; logic app_sched_update_val; sched_cmd_struct app_sched_update_cmd; logic sched_app_update_rdy; + + + logic rx_store_buf_rx_buf_store_rd_req_val + logic [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid + logic [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx + logic rx_buf_store_rx_store_buf_rd_req_rdy + + logic rx_buf_store_rx_store_buf_rd_resp_val + tcp_buf rx_buf_store_rx_store_buf_rd_resp_data + logic rx_store_buf_rx_buf_store_rd_resp_rdy tcp_rx_tile #( .SRC_X (TCP_RX_SRC_X ) @@ -233,6 +243,16 @@ import tcp_misc_pkg::*; ,.rx_commit_ptr_app_rd_resp_val (rx_commit_ptr_app_rd_resp_val ) ,.rx_commit_ptr_app_rd_resp_data (rx_commit_ptr_app_rd_resp_data ) ,.app_rx_commit_ptr_rd_resp_rdy (app_rx_commit_ptr_rd_resp_rdy ) + + + ,.rx_store_buf_rx_buf_store_rd_req_val(rx_store_buf_rx_buf_store_rd_req_val) + ,.rx_store_buf_rx_buf_store_rd_req_flowid(rx_store_buf_rx_buf_store_rd_req_flowid) + ,.rx_store_buf_rx_buf_store_rd_req_idx(rx_store_buf_rx_buf_store_rd_req_idx) + ,.rx_buf_store_rx_store_buf_rd_req_rdy(rx_buf_store_rx_store_buf_rd_req_rdy) + + ,.rx_buf_store_rx_store_buf_rd_resp_val(rx_buf_store_rx_store_buf_rd_resp_val) + ,.rx_buf_store_rx_store_buf_rd_resp_data(rx_buf_store_rx_store_buf_rd_resp_data) + ,.rx_store_buf_rx_buf_store_rd_resp_rdy(rx_store_buf_rx_buf_store_rd_resp_rdy) ); assign tcp_format_tmp_buf_rx_tcp_payload_len = tcp_format_tmp_buf_rx_tcp_tot_len - @@ -345,6 +365,16 @@ import tcp_misc_pkg::*; ,.app_sched_update_val (app_sched_update_val ) ,.app_sched_update_cmd (app_sched_update_cmd ) ,.sched_app_update_rdy (sched_app_update_rdy ) + + + ,.rx_store_buf_rx_buf_store_rd_req_val(rx_store_buf_rx_buf_store_rd_req_val) + ,.rx_store_buf_rx_buf_store_rd_req_flowid(rx_store_buf_rx_buf_store_rd_req_flowid) + ,.rx_store_buf_rx_buf_store_rd_req_idx(rx_store_buf_rx_buf_store_rd_req_idx) + ,.rx_buf_store_rx_store_buf_rd_req_rdy(rx_buf_store_rx_store_buf_rd_req_rdy) + + ,.rx_buf_store_rx_store_buf_rd_resp_val(rx_buf_store_rx_store_buf_rd_resp_val) + ,.rx_buf_store_rx_store_buf_rd_resp_data(rx_buf_store_rx_store_buf_rd_resp_data) + ,.rx_store_buf_rx_buf_store_rd_resp_rdy(rx_store_buf_rx_buf_store_rd_resp_rdy) ); tcp_tx_tile #( diff --git a/protocols/tcp_hw b/protocols/tcp_hw index 72c8586..3cfb638 160000 --- a/protocols/tcp_hw +++ b/protocols/tcp_hw @@ -1 +1 @@ -Subproject commit 72c8586707ab154afcd03a6c62a792d2239ba33e +Subproject commit 3cfb638b240e538528b1c6ace560e6d45faca096 diff --git a/protocols/tcp_slow b/protocols/tcp_slow index 73a8ebb..df3fd02 160000 --- a/protocols/tcp_slow +++ b/protocols/tcp_slow @@ -1 +1 @@ -Subproject commit 73a8ebb13d0b23ecc76edb7bb9f13d8cb9e374e2 +Subproject commit df3fd026b02461812f0fb23c1488a0b753f924ec From d0d4a88192fa32081dd1d0edb90903519082c267 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Fri, 24 Jan 2025 11:36:26 -0800 Subject: [PATCH 09/13] update poller to work with buf --- .../tcp/include/tcp_msg_poller_pkg.sv | 2 +- network_tiles/tcp/tcp_msg_poller.sv | 2 + network_tiles/tcp/tcp_msg_ptr_poller.sv | 84 +++++++++++------- network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv | 88 ++++++++++++------- network_tiles/tcp/tcp_msg_ptr_poller_datap.sv | 78 +++++++++------- network_tiles/tcp/tcp_tx_app_if_wrap.sv | 1 - 6 files changed, 162 insertions(+), 93 deletions(-) diff --git a/network_tiles/tcp/include/tcp_msg_poller_pkg.sv b/network_tiles/tcp/include/tcp_msg_poller_pkg.sv index 697dc95..18ed092 100644 --- a/network_tiles/tcp/include/tcp_msg_poller_pkg.sv +++ b/network_tiles/tcp/include/tcp_msg_poller_pkg.sv @@ -9,7 +9,7 @@ package tcp_msg_poller_pkg; : TX_PAYLOAD_PTR_W; typedef struct packed { - logic [REQ_PTR_W-1:0] length; + logic [REQ_PTR_W-1:0] length; // TODO: change this to tcp_msg_req (w/o padding) (think also about what that type should be...) logic [`XY_WIDTH-1:0] dst_x; logic [`XY_WIDTH-1:0] dst_y; logic [`NOC_FBITS_WIDTH-1:0] dst_fbits; diff --git a/network_tiles/tcp/tcp_msg_poller.sv b/network_tiles/tcp/tcp_msg_poller.sv index 1fd7ae8..4107fd4 100644 --- a/network_tiles/tcp/tcp_msg_poller.sv +++ b/network_tiles/tcp/tcp_msg_poller.sv @@ -172,6 +172,8 @@ module tcp_msg_poller #( ,.meta_active_bitvec (meta_active_bitvec ) ); + // TODO: chnage i/o here and of tcp_msg_poller + tcp_msg_ptr_poller #( .CHK_SPACE_EMPTY (CHK_SPACE_EMPTY) ,.POLLER_PTR_W (POLLER_PTR_W ) diff --git a/network_tiles/tcp/tcp_msg_ptr_poller.sv b/network_tiles/tcp/tcp_msg_ptr_poller.sv index 141b02a..e8bf538 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller.sv @@ -1,6 +1,7 @@ `include "tcp_msg_poller_defs.svh" module tcp_msg_ptr_poller #( parameter CHK_SPACE_EMPTY = 0 + ,parameter POLLER_IDX_W = 0 ,parameter POLLER_PTR_W = 0 )( input clk @@ -27,34 +28,43 @@ module tcp_msg_ptr_poller #( ,output logic poller_msg_dst_meta_val ,output logic [FLOWID_W-1:0] poller_msg_dst_flowid - ,output logic [POLLER_PTR_W:0] poller_msg_dst_base_ptr - ,output logic [POLLER_PTR_W-1:0] poller_msg_dst_len + ,output tcp_buf_with_idx poller_msg_dst_base_buf ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_x ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_y ,output logic [`NOC_FBITS_WIDTH-1:0] poller_msg_dst_dst_fbits ,input logic dst_poller_msg_meta_rdy - ,output logic app_base_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] app_base_ptr_rd_req_addr - ,input logic base_ptr_app_rd_req_rdy + ,output logic app_base_idx_rd_req_val + ,output logic [FLOWID_W-1:0] app_base_idx_rd_req_addr + ,input logic base_idx_app_rd_req_rdy - ,input logic base_ptr_app_rd_resp_val - ,input logic [POLLER_PTR_W:0] base_ptr_app_rd_resp_data - ,output logic app_base_ptr_rd_resp_rdy + ,input logic base_idx_app_rd_resp_val + ,input logic [POLLER_IDX_W:0] base_idx_app_rd_resp_data + ,output logic app_base_idx_rd_resp_rdy - ,output logic app_end_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] app_end_ptr_rd_req_addr - ,input logic end_ptr_app_rd_req_rdy + ,output logic app_end_idx_rd_req_val + ,output logic [FLOWID_W-1:0] app_end_idx_rd_req_addr + ,input logic end_idx_app_rd_req_rdy - ,input logic end_ptr_app_rd_resp_val - ,input logic [POLLER_PTR_W:0] end_ptr_app_rd_resp_data - ,output logic app_end_ptr_rd_resp_rdy + ,input logic end_idx_app_rd_resp_val + ,input logic [POLLER_IDX_W:0] end_idx_app_rd_resp_data + ,output logic app_end_idx_rd_resp_rdy + + ,output logic app_base_buf_rd_req_val + ,output logic [FLOWID_W-1:0] app_base_buf_rd_req_flowid + ,output logic [POLLER_IDX_W-1:0] app_base_buf_rd_req_idx + ,input logic base_buf_app_rd_req_rdy + + ,input logic base_buf_app_rd_resp_val + ,input tcp_buf base_buf_app_rd_resp_data + ,output logic app_base_buf_rd_resp_rdy ); logic data_ctrl_msg_satis; logic ctrl_data_store_req_data; - logic ctrl_data_store_ptrs; + logic ctrl_data_store_idxs; logic ctrl_data_store_flowid; + logic ctrl_data_store_buf; tcp_msg_ptr_poller_ctrl ctrl ( .clk (clk ) @@ -75,29 +85,37 @@ module tcp_msg_ptr_poller #( ,.poller_msg_dst_meta_val (poller_msg_dst_meta_val ) ,.dst_poller_msg_meta_rdy (dst_poller_msg_meta_rdy ) - ,.app_base_ptr_rd_req_val (app_base_ptr_rd_req_val ) - ,.base_ptr_app_rd_req_rdy (base_ptr_app_rd_req_rdy ) + ,.app_base_idx_rd_req_val (app_base_idx_rd_req_val ) + ,.base_idx_app_rd_req_rdy (base_idx_app_rd_req_rdy ) - ,.base_ptr_app_rd_resp_val (base_ptr_app_rd_resp_val ) - ,.app_base_ptr_rd_resp_rdy (app_base_ptr_rd_resp_rdy ) + ,.base_idx_app_rd_resp_val (base_idx_app_rd_resp_val ) + ,.app_base_idx_rd_resp_rdy (app_base_idx_rd_resp_rdy ) - ,.app_end_ptr_rd_req_val (app_end_ptr_rd_req_val ) - ,.end_ptr_app_rd_req_rdy (end_ptr_app_rd_req_rdy ) + ,.app_end_idx_rd_req_val (app_end_idx_rd_req_val ) + ,.end_idx_app_rd_req_rdy (end_idx_app_rd_req_rdy ) - ,.end_ptr_app_rd_resp_val (end_ptr_app_rd_resp_val ) - ,.app_end_ptr_rd_resp_rdy (app_end_ptr_rd_resp_rdy ) + ,.end_idx_app_rd_resp_val (end_idx_app_rd_resp_val ) + ,.app_end_idx_rd_resp_rdy (app_end_idx_rd_resp_rdy ) + + ,.app_base_buf_rd_req_val (app_base_buf_rd_req_val ) + ,.base_buf_app_rd_req_rdy (base_buf_app_rd_req_rdy ) + + ,.base_buf_app_rd_resp_val (base_buf_app_rd_resp_val ) + ,.app_base_buf_rd_resp_rdy (app_base_buf_rd_resp_rdy ) ,.poll_active_bitvec_clear_req_val (poll_active_bitvec_clear_req_val ) ,.data_ctrl_msg_satis (data_ctrl_msg_satis ) ,.ctrl_data_store_req_data (ctrl_data_store_req_data ) - ,.ctrl_data_store_ptrs (ctrl_data_store_ptrs ) + ,.ctrl_data_store_idxs (ctrl_data_store_idxs ) ,.ctrl_data_store_flowid (ctrl_data_store_flowid ) + ,.ctrl_data_store_buf (ctrl_data_store_buf ) ); tcp_msg_ptr_poller_datap #( .CHK_SPACE_EMPTY (CHK_SPACE_EMPTY) ,.POLLER_PTR_W (POLLER_PTR_W ) + ,.POLLER_IDX_W (POLLER_IDX_W ) ) datap ( .clk (clk ) ,.rst (rst ) @@ -111,25 +129,31 @@ module tcp_msg_ptr_poller #( ,.msg_req_mem_poll_data_rd_resp_data (msg_req_mem_poll_data_rd_resp_data ) ,.poller_msg_dst_flowid (poller_msg_dst_flowid ) - ,.poller_msg_dst_base_ptr (poller_msg_dst_base_ptr ) + ,.poller_msg_dst_base_idx (poller_msg_dst_base_idx ) ,.poller_msg_dst_len (poller_msg_dst_len ) ,.poller_msg_dst_dst_x (poller_msg_dst_dst_x ) ,.poller_msg_dst_dst_y (poller_msg_dst_dst_y ) ,.poller_msg_dst_dst_fbits (poller_msg_dst_dst_fbits ) - ,.app_base_ptr_rd_req_addr (app_base_ptr_rd_req_addr ) + ,.app_base_idx_rd_req_addr (app_base_idx_rd_req_addr ) - ,.base_ptr_app_rd_resp_data (base_ptr_app_rd_resp_data ) + ,.base_idx_app_rd_resp_data (base_idx_app_rd_resp_data ) - ,.app_end_ptr_rd_req_addr (app_end_ptr_rd_req_addr ) + ,.app_end_idx_rd_req_addr (app_end_idx_rd_req_addr ) - ,.end_ptr_app_rd_resp_data (end_ptr_app_rd_resp_data ) + ,.end_idx_app_rd_resp_data (end_idx_app_rd_resp_data ) + + ,.app_base_buf_rd_req_flowid (app_base_buf_rd_req_flowid ) + ,.app_base_buf_rd_req_idx (app_base_buf_rd_req_idx ) + + ,.base_buf_app_rd_resp_data (base_buf_app_rd_resp_data ) ,.poll_active_bitvec_clear_req_flowid (poll_active_bitvec_clear_req_flowid ) ,.data_ctrl_msg_satis (data_ctrl_msg_satis ) ,.ctrl_data_store_req_data (ctrl_data_store_req_data ) - ,.ctrl_data_store_ptrs (ctrl_data_store_ptrs ) + ,.ctrl_data_store_idxs (ctrl_data_store_idxs ) ,.ctrl_data_store_flowid (ctrl_data_store_flowid ) + ,.ctrl_data_store_buf (ctrl_data_store_buf ) ); endmodule diff --git a/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv b/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv index f5bcd56..cd435ab 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv @@ -17,32 +17,41 @@ module tcp_msg_ptr_poller_ctrl ( ,output logic poller_msg_dst_meta_val ,input logic dst_poller_msg_meta_rdy - ,output logic app_base_ptr_rd_req_val - ,input logic base_ptr_app_rd_req_rdy + ,output logic app_base_idx_rd_req_val + ,input logic base_idx_app_rd_req_rdy - ,input logic base_ptr_app_rd_resp_val - ,output logic app_base_ptr_rd_resp_rdy + ,input logic base_idx_app_rd_resp_val + ,output logic app_base_idx_rd_resp_rdy - ,output logic app_end_ptr_rd_req_val - ,input logic end_ptr_app_rd_req_rdy + ,output logic app_end_idx_rd_req_val + ,input logic end_idx_app_rd_req_rdy - ,input logic end_ptr_app_rd_resp_val - ,output logic app_end_ptr_rd_resp_rdy + ,input logic end_idx_app_rd_resp_val + ,output logic app_end_idx_rd_resp_rdy + + ,output logic app_base_buf_rd_req_val + ,input logic base_buf_app_rd_req_rdy + + ,input logic base_buf_app_rd_resp_val + ,output logic app_base_buf_rd_resp_rdy ,output logic poll_active_bitvec_clear_req_val ,input data_ctrl_msg_satis ,output logic ctrl_data_store_req_data - ,output logic ctrl_data_store_ptrs + ,output logic ctrl_data_store_idxs ,output logic ctrl_data_store_flowid + ,output logic ctrl_data_store_buf ); typedef enum logic[2:0] { READY = 3'd0, - RD_PTRS = 3'd1, + RD_IDXS = 3'd1, STATE_RESP = 3'd2, CALC = 3'd3, REQUEUE_FLOW = 3'd4, SEND_NOTIF = 3'd5, + BUF_STORE_REQ = 3'd6; + BUF_STORE_RESP = 3'd7; UND = 'X } state_e; @@ -65,16 +74,17 @@ module tcp_msg_ptr_poller_ctrl ( poll_ctrl_msg_req_q_rd_req_val = 1'b0; poll_ctrl_msg_req_mem_rd_req_val = 1'b0; - app_base_ptr_rd_req_val = 1'b0; - app_end_ptr_rd_req_val = 1'b0; + app_base_idx_rd_req_val = 1'b0; + app_end_idx_rd_req_val = 1'b0; - app_base_ptr_rd_resp_rdy = 1'b0; - app_end_ptr_rd_resp_rdy = 1'b0; + app_base_idx_rd_resp_rdy = 1'b0; + app_end_idx_rd_resp_rdy = 1'b0; poll_ctrl_msg_req_mem_rd_resp_rdy = 1'b0; ctrl_data_store_req_data = 1'b0; - ctrl_data_store_ptrs = 1'b0; + ctrl_data_store_idxs = 1'b0; // TODO rename to idxs ctrl_data_store_flowid = 1'b0; + ctrl_data_store_buf = 1'b0; poll_active_bitvec_clear_req_val = 1'b0; @@ -85,28 +95,28 @@ module tcp_msg_ptr_poller_ctrl ( ctrl_data_store_flowid = 1'b1; poll_ctrl_msg_req_q_rd_req_val = 1'b1; poll_ctrl_msg_req_mem_rd_req_val = 1'b1; - state_next = RD_PTRS; + state_next = RD_IDXS; end else begin state_next = READY; end end - RD_PTRS: begin - if (base_ptr_app_rd_req_rdy & end_ptr_app_rd_req_rdy) begin - app_base_ptr_rd_req_val = 1'b1; - app_end_ptr_rd_req_val = 1'b1; + RD_IDXS: begin + if (base_idx_app_rd_req_rdy & end_idx_app_rd_req_rdy) begin + app_base_idx_rd_req_val = 1'b1; + app_end_idx_rd_req_val = 1'b1; state_next = STATE_RESP; end else begin - state_next = RD_PTRS; + state_next = RD_IDXS; end end STATE_RESP: begin ctrl_data_store_req_data = 1'b1; - ctrl_data_store_ptrs = 1'b1; - if (base_ptr_app_rd_resp_val & end_ptr_app_rd_resp_val & msg_req_mem_poll_ctrl_rd_resp_val) begin - app_base_ptr_rd_resp_rdy = 1'b1; - app_end_ptr_rd_resp_rdy = 1'b1; + ctrl_data_store_idxs = 1'b1; + if (base_idx_app_rd_resp_val & end_idx_app_rd_resp_val & msg_req_mem_poll_ctrl_rd_resp_val) begin + app_base_idx_rd_resp_rdy = 1'b1; + app_end_idx_rd_resp_rdy = 1'b1; poll_ctrl_msg_req_mem_rd_resp_rdy = 1'b1; state_next = CALC; @@ -117,7 +127,7 @@ module tcp_msg_ptr_poller_ctrl ( end CALC: begin if (data_ctrl_msg_satis) begin - state_next = SEND_NOTIF; + state_next = BUF_STORE_REQ; end else begin state_next = REQUEUE_FLOW; @@ -132,6 +142,21 @@ module tcp_msg_ptr_poller_ctrl ( state_next = REQUEUE_FLOW; end end + BUF_STORE_REQ: begin + rx_store_buf_rx_buf_store_rd_req_val = 1'b1; + // the idx is stored in datapath during this state. + if (rx_buf_store_rx_store_buf_rd_req_rdy) begin + state_next = BUF_STORE_RESP; + end + end + BUF_STORE_RESP: begin + rx_store_buf_rx_buf_store_rd_resp_rdy = 1'b1; + + if (rx_buf_store_rx_store_buf_rd_resp_val) begin + ctrl_data_store_buf = 1'b1; + state_next = SEND_NOTIF; + end + end SEND_NOTIF: begin poller_msg_dst_meta_val = 1'b1; if (dst_poller_msg_meta_rdy) begin @@ -149,15 +174,16 @@ module tcp_msg_ptr_poller_ctrl ( poll_ctrl_msg_req_q_rd_req_val = 'X; poll_ctrl_msg_req_mem_rd_req_val = 'X; - app_base_ptr_rd_req_val = 'X; - app_end_ptr_rd_req_val = 'X; + app_base_idx_rd_req_val = 'X; + app_end_idx_rd_req_val = 'X; - app_base_ptr_rd_resp_rdy = 'X; - app_end_ptr_rd_resp_rdy = 'X; + app_base_idx_rd_resp_rdy = 'X; + app_end_idx_rd_resp_rdy = 'X; poll_ctrl_msg_req_mem_rd_resp_rdy = 'X; ctrl_data_store_req_data = 'X; - ctrl_data_store_ptrs = 'X; + ctrl_data_store_idxs = 'X; + ctrl_data_store_buf = 'X; poll_active_bitvec_clear_req_val = 'X; diff --git a/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv b/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv index 0cbb4f9..43c2cfb 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv @@ -2,6 +2,7 @@ module tcp_msg_ptr_poller_datap #( parameter CHK_SPACE_EMPTY = 0 ,parameter POLLER_PTR_W = 0 + ,parameter POLLER_IDX_W = 0 )( input clk ,input rst @@ -15,26 +16,31 @@ module tcp_msg_ptr_poller_datap #( ,input msg_req_mem_struct msg_req_mem_poll_data_rd_resp_data ,output logic [FLOWID_W-1:0] poller_msg_dst_flowid - ,output logic [POLLER_PTR_W:0] poller_msg_dst_base_ptr - ,output logic [POLLER_PTR_W-1:0] poller_msg_dst_len + ,output tcp_buf_with_idx poller_msg_dst_base_buf ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_x ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_y ,output logic [`NOC_FBITS_WIDTH-1:0] poller_msg_dst_dst_fbits - ,output logic [FLOWID_W-1:0] app_base_ptr_rd_req_addr + ,output logic [FLOWID_W-1:0] app_base_idx_rd_req_addr - ,input logic [POLLER_PTR_W:0] base_ptr_app_rd_resp_data + ,input logic [POLLER_IDX_W:0] base_idx_app_rd_resp_data - ,output logic [FLOWID_W-1:0] app_end_ptr_rd_req_addr + ,output logic [FLOWID_W-1:0] app_end_idx_rd_req_addr - ,input logic [POLLER_PTR_W:0] end_ptr_app_rd_resp_data + ,input logic [POLLER_IDX_W:0] end_idx_app_rd_resp_data ,output logic [FLOWID_W-1:0] poll_active_bitvec_clear_req_flowid ,output logic data_ctrl_msg_satis ,input logic ctrl_data_store_req_data - ,input logic ctrl_data_store_ptrs // TODO: display when this is set to 1 and flowid is good? + ,input logic ctrl_data_store_idxs ,input logic ctrl_data_store_flowid + ,input logic ctrl_data_store_buf + + ,output logic [FLOWID_W-1:0] app_base_buf_rd_req_flowid + ,output logic [POLLER_IDX_W-1:0] app_base_buf_rd_req_idx + + ,input tcp_buf base_buf_app_rd_resp_data ); logic [FLOWID_W-1:0] flowid_reg; logic [FLOWID_W-1:0] flowid_next; @@ -42,13 +48,16 @@ module tcp_msg_ptr_poller_datap #( msg_req_mem_struct msg_req_data_reg; msg_req_mem_struct msg_req_data_next; - logic [POLLER_PTR_W:0] base_ptr_reg; - logic [POLLER_PTR_W:0] base_ptr_next; - logic [POLLER_PTR_W:0] end_ptr_reg; - logic [POLLER_PTR_W:0] end_ptr_next; + logic [POLLER_IDX_W:0] base_idx_reg; + logic [POLLER_IDX_W:0] base_idx_next; + logic [POLLER_IDX_W:0] end_idx_reg; + logic [POLLER_IDX_W:0] end_idx_next; + + tcp_buf base_buf_reg; + tcp_buf base_buf_next; - logic [POLLER_PTR_W:0] buf_space_used; - logic [POLLER_PTR_W:0] buf_space_empty; + logic [POLLER_IDX_W:0] buf_space_used; + logic [POLLER_IDX_W:0] buf_space_empty; assign poll_active_bitvec_clear_req_flowid = flowid_reg; assign poll_data_msg_req_q_wr_data = flowid_reg; @@ -56,39 +65,45 @@ module tcp_msg_ptr_poller_datap #( assign poll_data_msg_req_mem_rd_req_addr = flowid_next; assign poller_msg_dst_flowid = flowid_reg; - assign poller_msg_dst_base_ptr = base_ptr_reg; - assign poller_msg_dst_len = msg_req_data_reg.length; + assign poller_msg_dst_base_buf.buf_info = base_buf_reg; + assign poller_msg_dst_base_buf.idx.idx = base_idx_reg; + // assign poller_msg_dst_len = msg_req_data_reg.length; assign poller_msg_dst_dst_x = msg_req_data_reg.dst_x; assign poller_msg_dst_dst_y = msg_req_data_reg.dst_y; assign poller_msg_dst_dst_fbits = msg_req_data_reg.dst_fbits; - assign app_base_ptr_rd_req_addr = flowid_reg; - assign app_end_ptr_rd_req_addr = flowid_reg; + assign app_base_idx_rd_req_addr = flowid_reg; + assign app_end_idx_rd_req_addr = flowid_reg; + + assign app_base_buf_rd_req_flowid = flowid_reg; + assign app_base_buf_rd_req_idx = base_idx_reg[POLLER_IDX_W-1:0]; always_ff @(posedge clk) begin if (rst) begin flowid_reg <= '0; msg_req_data_reg <= '0; - base_ptr_reg <= '0; - end_ptr_reg <= '0; + base_idx_reg <= '0; + end_idx_reg <= '0; + base_buf_reg <= '0; end else begin flowid_reg <= flowid_next; msg_req_data_reg <= msg_req_data_next; - base_ptr_reg <= base_ptr_next; - end_ptr_reg <= end_ptr_next; + base_idx_reg <= base_idx_next; + end_idx_reg <= end_idx_next; + base_buf_reg <= base_buf_next; end end // FIXME: check this calculation generate if (CHK_SPACE_EMPTY) begin - assign buf_space_used = base_ptr_reg - end_ptr_reg; - assign buf_space_empty = {1'b1, {(POLLER_PTR_W){1'b0}}} - buf_space_used; + assign buf_space_used = base_idx_reg - end_idx_reg; + assign buf_space_empty = {1'b1, {(POLLER_idx_W){1'b0}}} - buf_space_used; assign data_ctrl_msg_satis = buf_space_empty >= msg_req_data_reg.length; end else begin - assign buf_space_used = end_ptr_reg - base_ptr_reg; + assign buf_space_used = end_idx_reg - base_idx_reg; assign data_ctrl_msg_satis = buf_space_used >= msg_req_data_reg.length; end endgenerate @@ -100,11 +115,14 @@ module tcp_msg_ptr_poller_datap #( assign msg_req_data_next = ctrl_data_store_req_data ? msg_req_mem_poll_data_rd_resp_data : msg_req_data_reg; - assign base_ptr_next = ctrl_data_store_ptrs - ? base_ptr_app_rd_resp_data - : base_ptr_reg; - assign end_ptr_next = ctrl_data_store_ptrs - ? end_ptr_app_rd_resp_data - : end_ptr_reg; + assign base_idx_next = ctrl_data_store_idxs + ? base_idx_app_rd_resp_data + : base_idx_reg; + assign end_idx_next = ctrl_data_store_idxs + ? end_idx_app_rd_resp_data + : end_idx_reg; + assign base_buf_next = ctrl_data_store_buf + ? base_buf_app_rd_resp_data + : base_buf_reg; endmodule diff --git a/network_tiles/tcp/tcp_tx_app_if_wrap.sv b/network_tiles/tcp/tcp_tx_app_if_wrap.sv index 99894ab..3b1671c 100644 --- a/network_tiles/tcp/tcp_tx_app_if_wrap.sv +++ b/network_tiles/tcp/tcp_tx_app_if_wrap.sv @@ -145,5 +145,4 @@ import tcp_misc_pkg::*; ,.app_end_ptr_rd_resp_rdy (app_head_ptr_tx_rd_resp_rdy ) ); - endmodule From 825b5e11b95b8e645ed0f5cd72b06845ade26179 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Fri, 31 Jan 2025 14:16:32 -0800 Subject: [PATCH 10/13] all done with rx --- include/beehive_tcp_msg.sv | 23 +- .../tcp/beehive_tcp_slow_engine_wrap.sv | 76 ++-- .../tcp/include/tcp_msg_poller_pkg.sv | 2 +- network_tiles/tcp/tcp_msg_poller.sv | 42 ++- network_tiles/tcp/tcp_msg_poller_meta.sv | 2 +- .../tcp/tcp_msg_poller_meta_datap.sv | 2 +- network_tiles/tcp/tcp_msg_ptr_poller.sv | 17 +- network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv | 8 +- network_tiles/tcp/tcp_msg_ptr_poller_datap.sv | 21 +- network_tiles/tcp/tcp_rx_app_if_wrap.sv | 88 +++-- network_tiles/tcp/tcp_rx_msg_noc_if.sv | 32 +- network_tiles/tcp/tcp_rx_msg_noc_if_in.sv | 27 +- .../tcp/tcp_rx_msg_noc_if_in_ctrl.sv | 30 +- .../tcp/tcp_rx_msg_noc_if_in_datap.sv | 17 +- network_tiles/tcp/tcp_rx_msg_noc_if_out.sv | 6 +- .../tcp/tcp_rx_msg_noc_if_out_datap.sv | 24 +- network_tiles/tcp/tcp_rx_tile_gen.sv.pyv | 101 ++--- network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv | 135 ++++--- network_tiles/tcp/tcp_tx_app_if_wrap.sv | 1 + protocols/tcp_slow | 2 +- .../tcp_open_loop/tcp_open_loop.flist | 356 ++++++++++++++++++ 21 files changed, 734 insertions(+), 278 deletions(-) create mode 100644 sample_designs/tcp_open_loop/tcp_open_loop.flist diff --git a/include/beehive_tcp_msg.sv b/include/beehive_tcp_msg.sv index f71318d..79b7732 100644 --- a/include/beehive_tcp_msg.sv +++ b/include/beehive_tcp_msg.sv @@ -48,12 +48,12 @@ package beehive_tcp_msg; } tcp_buf_with_idx; localparam TCP_BUF_WITH_IDX_W = $bits(tcp_buf_with_idx); - typedef struct packed { - logic [MAX_PAYLOAD_PTR_W:0] leftover_bytes_consumed; // assumed to be 0 at the moment (e.g. you use the entire buffer we give you) - logic [MAX_PAYLOAD_IDX_W:0] bufs_consumed; // assumed to be 1 at the moment (e.g. you use the entire buffer we give you) - tcp_buf_with_idx prev_buf; - } tcp_buf_update; - localparam TCP_BUF_UPDATE_W = $bits(tcp_buf_update); + // typedef struct packed { + // logic [MAX_PAYLOAD_PTR_W:0] leftover_bytes_consumed; // assumed to be 0 at the moment (e.g. you use the entire buffer we give you) + // logic [MAX_PAYLOAD_IDX_W:0] bufs_consumed; // assumed to be 1 at the moment (e.g. you use the entire buffer we give you) + // tcp_buf_with_idx prev_buf; + // } tcp_buf_update; + // localparam TCP_BUF_UPDATE_W = $bits(tcp_buf_update); typedef struct packed { logic [MAX_PAYLOAD_PTR_W:0] __length; // unused at the moment, we just return 1 buf unilaterally (bc we can't return more than 1 yet.) @@ -63,12 +63,13 @@ package beehive_tcp_msg; typedef struct packed { tcp_buf_with_idx buf; - logic [TCP_ADJUST_IDX_W-TCP_BUF_WITH_IDX_W-1:0] padding; + // logic [TCP_ADJUST_IDX_W-TCP_BUF_WITH_IDX_W-1:0] padding; } tcp_msg_resp; localparam TCP_MSG_RESP_W = $bits(tcp_msg_resp); typedef struct packed { - tcp_buf_update update_info; + // tcp_buf_update update_info; + tcp_buf_with_idx old_buf; } tcp_adjust_idx; localparam TCP_ADJUST_IDX_W = $bits(tcp_adjust_idx); @@ -83,9 +84,9 @@ package beehive_tcp_msg; logic [MAX_FLOWID_W-1:0] flowid; union packed { // TODO: probably change these into the struct type... not logic - logic [TCP_MSG_REQ_W-1:0] tcp_msg_req; - logic [TCP_MSG_RESP_W-1:0] tcp_msg_resp; - logic [TCP_ADJUST_IDX_W-1:0] tcp_adjust_idx; + tcp_msg_req tcp_msg_req; + tcp_msg_resp tcp_msg_resp; + tcp_adjust_idx tcp_adjust_idx; } msg_specific; } tcp_flit_inner; localparam TCP_FLIT_INNER_W = $bits(tcp_flit_inner); diff --git a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv index 7ed6cc3..17fedfe 100644 --- a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv +++ b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv @@ -74,26 +74,31 @@ import packet_struct_pkg::*; ,output logic [TX_PAYLOAD_PTR_W:0] head_ptr_app_tx_rd_resp_data ,input logic app_head_ptr_tx_rd_resp_rdy - ,input logic app_rx_head_buf_wr_req_val - ,input logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr - ,input logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old - ,output logic rx_head_buf_app_wr_req_rdy + ,input logic app_rx_head_idx_wr_req_val + ,input logic [FLOWID_W-1:0] app_rx_head_idx_wr_req_addr + ,input tcp_buf_idx app_rx_head_idx_wr_req_data + ,output logic rx_head_idx_app_wr_req_rdy - ,input logic app_rx_head_ptr_rd_req_val - ,input logic [FLOWID_W-1:0] app_rx_head_ptr_rd_req_addr - ,output logic rx_head_ptr_app_rd_req_rdy + ,input logic app_rx_head_idx_rd_req_val + ,input logic [FLOWID_W-1:0] app_rx_head_idx_rd_req_addr + ,output logic rx_head_idx_app_rd_req_rdy - ,output logic rx_head_ptr_app_rd_resp_val - ,output logic [RX_PAYLOAD_PTR_W:0] rx_head_ptr_app_rd_resp_data - ,input logic app_rx_head_ptr_rd_resp_rdy + ,output logic rx_head_idx_app_rd_resp_val + ,output tcp_buf_idx rx_head_idx_app_rd_resp_data + ,input logic app_rx_head_idx_rd_resp_rdy - ,input logic app_rx_commit_ptr_rd_req_val - ,input logic [FLOWID_W-1:0] app_rx_commit_ptr_rd_req_addr - ,output logic rx_commit_ptr_app_rd_req_rdy + ,input logic app_rx_commit_idx_rd_req_val + ,input logic [FLOWID_W-1:0] app_rx_commit_idx_rd_req_addr + ,output logic rx_commit_idx_app_rd_req_rdy - ,output logic rx_commit_ptr_app_rd_resp_val - ,output logic [RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data - ,input logic app_rx_commit_ptr_rd_resp_rdy + ,output logic rx_commit_idx_app_rd_resp_val + ,output tcp_buf_idx rx_commit_idx_app_rd_resp_data + ,input logic app_rx_commit_idx_rd_resp_rdy + + ,input logic app_rx_free_req_val + ,input logic [RX_PAYLOAD_PTR_W-1:0] app_rx_free_req_addr + ,input logic [MALLOC_LEN_W-1:0] app_rx_free_req_len + ,output logic rx_free_app_req_rdy ,input logic store_buf_commit_idx_wr_req_val ,input logic [FLOWID_W-1:0] store_buf_commit_idx_wr_req_addr @@ -190,27 +195,32 @@ import packet_struct_pkg::*; ,.app_new_flow_entry (app_new_flow_lookup ) ,.app_new_flow_notif_rdy (app_new_flow_notif_rdy ) - ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) - ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) - ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) - ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) - - ,.app_rx_head_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) - ,.app_rx_head_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) - ,.rx_head_ptr_app_rd_req_rdy (rx_head_ptr_app_rd_req_rdy ) + ,.app_rx_head_idx_wr_req_val (app_rx_head_idx_wr_req_val ) + ,.app_rx_head_idx_wr_req_addr (app_rx_head_idx_wr_req_addr ) + ,.app_rx_head_idx_wr_req_data (app_rx_head_idx_wr_req_data ) + ,.rx_head_idx_app_wr_req_rdy (rx_head_idx_app_wr_req_rdy ) + + ,.app_rx_head_idx_rd_req_val (app_rx_head_idx_rd_req_val ) + ,.app_rx_head_idx_rd_req_addr (app_rx_head_idx_rd_req_addr ) + ,.rx_head_idx_app_rd_req_rdy (rx_head_idx_app_rd_req_rdy ) - ,.rx_head_ptr_app_rd_resp_val (rx_head_ptr_app_rd_resp_val ) - ,.rx_head_ptr_app_rd_resp_data (rx_head_ptr_app_rd_resp_data ) - ,.app_rx_head_ptr_rd_resp_rdy (app_rx_head_ptr_rd_resp_rdy ) + ,.rx_head_idx_app_rd_resp_val (rx_head_idx_app_rd_resp_val ) + ,.rx_head_idx_app_rd_resp_data (rx_head_idx_app_rd_resp_data ) + ,.app_rx_head_idx_rd_resp_rdy (app_rx_head_idx_rd_resp_rdy ) - ,.app_rx_commit_ptr_rd_req_val (app_rx_commit_ptr_rd_req_val ) - ,.app_rx_commit_ptr_rd_req_addr (app_rx_commit_ptr_rd_req_addr ) - ,.rx_commit_ptr_app_rd_req_rdy (rx_commit_ptr_app_rd_req_rdy ) + ,.app_rx_commit_idx_rd_req_val (app_rx_commit_idx_rd_req_val ) + ,.app_rx_commit_idx_rd_req_addr (app_rx_commit_idx_rd_req_addr ) + ,.rx_commit_idx_app_rd_req_rdy (rx_commit_idx_app_rd_req_rdy ) - ,.rx_commit_ptr_app_rd_resp_val (rx_commit_ptr_app_rd_resp_val ) - ,.rx_commit_ptr_app_rd_resp_data (rx_commit_ptr_app_rd_resp_data ) - ,.app_rx_commit_ptr_rd_resp_rdy (app_rx_commit_ptr_rd_resp_rdy ) + ,.rx_commit_idx_app_rd_resp_val (rx_commit_idx_app_rd_resp_val ) + ,.rx_commit_idx_app_rd_resp_data (rx_commit_idx_app_rd_resp_data ) + ,.app_rx_commit_idx_rd_resp_rdy (app_rx_commit_idx_rd_resp_rdy ) + ,.app_rx_free_req_val (app_rx_free_req_val ) + ,.app_rx_free_req_addr (app_rx_free_req_addr ) + ,.app_rx_free_req_len (app_rx_free_req_len ) + ,.rx_free_app_req_rdy (rx_free_app_req_rdy ) + ,.app_tx_head_ptr_rd_req_val (app_head_ptr_tx_rd_req_val ) ,.app_tx_head_ptr_rd_req_addr (app_head_ptr_tx_rd_req_flowid ) ,.tx_head_ptr_app_rd_req_rdy (head_ptr_app_tx_rd_req_rdy ) diff --git a/network_tiles/tcp/include/tcp_msg_poller_pkg.sv b/network_tiles/tcp/include/tcp_msg_poller_pkg.sv index 18ed092..7f52ed5 100644 --- a/network_tiles/tcp/include/tcp_msg_poller_pkg.sv +++ b/network_tiles/tcp/include/tcp_msg_poller_pkg.sv @@ -9,7 +9,7 @@ package tcp_msg_poller_pkg; : TX_PAYLOAD_PTR_W; typedef struct packed { - logic [REQ_PTR_W-1:0] length; // TODO: change this to tcp_msg_req (w/o padding) (think also about what that type should be...) + logic [REQ_PTR_W-1:0] tx_length; // TODO: change this to tcp_msg_req (w/o padding) (think also about what that type should be...) logic [`XY_WIDTH-1:0] dst_x; logic [`XY_WIDTH-1:0] dst_y; logic [`NOC_FBITS_WIDTH-1:0] dst_fbits; diff --git a/network_tiles/tcp/tcp_msg_poller.sv b/network_tiles/tcp/tcp_msg_poller.sv index 4107fd4..f77f9ff 100644 --- a/network_tiles/tcp/tcp_msg_poller.sv +++ b/network_tiles/tcp/tcp_msg_poller.sv @@ -2,6 +2,7 @@ module tcp_msg_poller #( parameter CHK_SPACE_EMPTY = 0 ,parameter POLLER_PTR_W = 0 + ,parameter POLLER_IDX_W = 0 )( input clk ,input rst @@ -16,28 +17,38 @@ module tcp_msg_poller #( ,output logic poller_msg_dst_meta_val ,output logic [FLOWID_W-1:0] poller_msg_dst_flowid - ,output logic [POLLER_PTR_W:0] poller_msg_dst_base_ptr - ,output logic [POLLER_PTR_W-1:0] poller_msg_dst_len + ,output logic [POLLER_IDX_W:0] poller_msg_dst_base_ptr // OLD- for tx + ,output logic [POLLER_IDX_W-1:0] poller_msg_dst_len // OLD- for tx + ,output tcp_buf_with_idx poller_msg_dst_base_buf // NEW- for rx ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_x ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_y ,output logic [`NOC_FBITS_WIDTH-1:0] poller_msg_dst_dst_fbits ,input logic dst_poller_msg_meta_rdy - ,output logic app_base_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] app_base_ptr_rd_req_addr - ,input logic base_ptr_app_rd_req_rdy + ,output logic app_base_idx_rd_req_val + ,output logic [FLOWID_W-1:0] app_base_idx_rd_req_addr + ,input logic base_idx_app_rd_req_rdy - ,input logic base_ptr_app_rd_resp_val - ,input logic [POLLER_PTR_W:0] base_ptr_app_rd_resp_data - ,output logic app_base_ptr_rd_resp_rdy + ,input logic base_idx_app_rd_resp_val + ,input logic [POLLER_IDX_W:0] base_idx_app_rd_resp_data + ,output logic app_base_idx_rd_resp_rdy - ,output logic app_end_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] app_end_ptr_rd_req_addr - ,input logic end_ptr_app_rd_req_rdy + ,output logic app_end_idx_rd_req_val + ,output logic [FLOWID_W-1:0] app_end_idx_rd_req_addr + ,input logic end_idx_app_rd_req_rdy + + ,input logic end_idx_app_rd_resp_val + ,input logic [POLLER_IDX_W:0] end_idx_app_rd_resp_data + ,output logic app_end_idx_rd_resp_rdy + + ,output logic app_base_buf_rd_req_val + ,output logic [FLOWID_W-1:0] app_base_buf_rd_req_flowid + ,output logic [POLLER_IDX_W-1:0] app_base_buf_rd_req_idx + ,input logic base_buf_app_rd_req_rdy - ,input logic end_ptr_app_rd_resp_val - ,input logic [POLLER_PTR_W:0] end_ptr_app_rd_resp_data - ,output logic app_end_ptr_rd_resp_rdy + ,input logic base_buf_app_rd_resp_val + ,input tcp_buf base_buf_app_rd_resp_data + ,output logic app_base_buf_rd_resp_rdy ); logic meta_ctrl_msg_req_q_wr_req_val; logic [FLOWID_W-1:0] meta_data_msg_req_q_wr_req_data; @@ -176,7 +187,7 @@ module tcp_msg_poller #( tcp_msg_ptr_poller #( .CHK_SPACE_EMPTY (CHK_SPACE_EMPTY) - ,.POLLER_PTR_W (POLLER_PTR_W ) + ,.POLLER_IDX_W (POLLER_IDX_W ) ) ptr_poller ( .clk (clk ) ,.rst (rst ) @@ -204,6 +215,7 @@ module tcp_msg_poller #( ,.poller_msg_dst_flowid (poller_msg_dst_flowid ) ,.poller_msg_dst_base_ptr (poller_msg_dst_base_ptr ) ,.poller_msg_dst_len (poller_msg_dst_len ) + ,.poller_msg_dst_base_buf (poller_msg_dst_base_buf ) ,.poller_msg_dst_dst_x (poller_msg_dst_dst_x ) ,.poller_msg_dst_dst_y (poller_msg_dst_dst_y ) ,.poller_msg_dst_dst_fbits (poller_msg_dst_dst_fbits ) diff --git a/network_tiles/tcp/tcp_msg_poller_meta.sv b/network_tiles/tcp/tcp_msg_poller_meta.sv index 65744b7..8a263e2 100644 --- a/network_tiles/tcp/tcp_msg_poller_meta.sv +++ b/network_tiles/tcp/tcp_msg_poller_meta.sv @@ -7,7 +7,7 @@ module tcp_msg_poller_meta #( ,input logic src_poller_msg_req_val ,input logic [FLOWID_W-1:0] src_poller_msg_req_flowid - ,input logic [POLLER_PTR_W-1:0] src_poller_msg_req_len + ,input logic [POLLER_PTR_W-1:0] src_poller_msg_req_len // number of bytes requested in the app msg ,input logic [`MSG_SRC_X_WIDTH-1:0] src_poller_msg_dst_x ,input logic [`MSG_SRC_Y_WIDTH-1:0] src_poller_msg_dst_y ,input logic [`NOC_FBITS_WIDTH-1:0] src_poller_msg_dst_fbits diff --git a/network_tiles/tcp/tcp_msg_poller_meta_datap.sv b/network_tiles/tcp/tcp_msg_poller_meta_datap.sv index 51dfc7b..fec4eec 100644 --- a/network_tiles/tcp/tcp_msg_poller_meta_datap.sv +++ b/network_tiles/tcp/tcp_msg_poller_meta_datap.sv @@ -47,7 +47,7 @@ module tcp_msg_poller_meta_datap #( always_comb begin wr_data_next = wr_data_reg; if (ctrl_data_store_inputs) begin - wr_data_next.length = src_poller_msg_req_len; + wr_data_next.tx_length = src_poller_msg_req_len; wr_data_next.dst_x = src_poller_msg_dst_x; wr_data_next.dst_y = src_poller_msg_dst_y; wr_data_next.dst_fbits = src_poller_msg_dst_fbits; diff --git a/network_tiles/tcp/tcp_msg_ptr_poller.sv b/network_tiles/tcp/tcp_msg_ptr_poller.sv index e8bf538..1fa1050 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller.sv @@ -2,7 +2,7 @@ module tcp_msg_ptr_poller #( parameter CHK_SPACE_EMPTY = 0 ,parameter POLLER_IDX_W = 0 - ,parameter POLLER_PTR_W = 0 + // ,parameter POLLER_PTR_W = 0 )( input clk ,input rst @@ -28,7 +28,9 @@ module tcp_msg_ptr_poller #( ,output logic poller_msg_dst_meta_val ,output logic [FLOWID_W-1:0] poller_msg_dst_flowid - ,output tcp_buf_with_idx poller_msg_dst_base_buf + ,output logic [POLLER_IDX_W:0] poller_msg_dst_base_ptr // OLD- for tx only + ,output logic [POLLER_IDX_W-1:0] poller_msg_dst_len // OLD- for tx only + ,output tcp_buf_with_idx poller_msg_dst_base_buf // NEW- for rx ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_x ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_y ,output logic [`NOC_FBITS_WIDTH-1:0] poller_msg_dst_dst_fbits @@ -66,7 +68,9 @@ module tcp_msg_ptr_poller #( logic ctrl_data_store_flowid; logic ctrl_data_store_buf; - tcp_msg_ptr_poller_ctrl ctrl ( + tcp_msg_ptr_poller_ctrl #( + .CHK_SPACE_EMPTY (CHK_SPACE_EMPTY) + ) ctrl ( .clk (clk ) ,.rst (rst ) @@ -114,7 +118,7 @@ module tcp_msg_ptr_poller #( tcp_msg_ptr_poller_datap #( .CHK_SPACE_EMPTY (CHK_SPACE_EMPTY) - ,.POLLER_PTR_W (POLLER_PTR_W ) + // ,.POLLER_PTR_W (POLLER_PTR_W ) ,.POLLER_IDX_W (POLLER_IDX_W ) ) datap ( .clk (clk ) @@ -129,8 +133,9 @@ module tcp_msg_ptr_poller #( ,.msg_req_mem_poll_data_rd_resp_data (msg_req_mem_poll_data_rd_resp_data ) ,.poller_msg_dst_flowid (poller_msg_dst_flowid ) - ,.poller_msg_dst_base_idx (poller_msg_dst_base_idx ) - ,.poller_msg_dst_len (poller_msg_dst_len ) + ,.poller_msg_dst_base_ptr (poller_msg_dst_base_ptr )//old + ,.poller_msg_dst_len (poller_msg_dst_len )//old + ,.poller_msg_dst_base_buf (poller_msg_dst_base_buf )//new ,.poller_msg_dst_dst_x (poller_msg_dst_dst_x ) ,.poller_msg_dst_dst_y (poller_msg_dst_dst_y ) ,.poller_msg_dst_dst_fbits (poller_msg_dst_dst_fbits ) diff --git a/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv b/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv index cd435ab..358b448 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv @@ -1,4 +1,6 @@ -module tcp_msg_ptr_poller_ctrl ( +module tcp_msg_ptr_poller_ctrl #( + parameter CHK_SPACE_EMPTY = 0 +)( input clk ,input rst @@ -82,7 +84,7 @@ module tcp_msg_ptr_poller_ctrl ( poll_ctrl_msg_req_mem_rd_resp_rdy = 1'b0; ctrl_data_store_req_data = 1'b0; - ctrl_data_store_idxs = 1'b0; // TODO rename to idxs + ctrl_data_store_idxs = 1'b0; ctrl_data_store_flowid = 1'b0; ctrl_data_store_buf = 1'b0; @@ -127,7 +129,7 @@ module tcp_msg_ptr_poller_ctrl ( end CALC: begin if (data_ctrl_msg_satis) begin - state_next = BUF_STORE_REQ; + state_next = CHK_SPACE_EMPTY ? SEND_NOTIF : BUF_STORE_REQ; end else begin state_next = REQUEUE_FLOW; diff --git a/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv b/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv index 43c2cfb..a9f770c 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv @@ -1,7 +1,7 @@ `include "tcp_msg_poller_defs.svh" module tcp_msg_ptr_poller_datap #( parameter CHK_SPACE_EMPTY = 0 - ,parameter POLLER_PTR_W = 0 + // ,parameter POLLER_PTR_W = 0 ,parameter POLLER_IDX_W = 0 )( input clk @@ -16,7 +16,9 @@ module tcp_msg_ptr_poller_datap #( ,input msg_req_mem_struct msg_req_mem_poll_data_rd_resp_data ,output logic [FLOWID_W-1:0] poller_msg_dst_flowid - ,output tcp_buf_with_idx poller_msg_dst_base_buf + ,output logic [POLLER_PTR_W:0] poller_msg_dst_base_ptr // OLD: for tx only + ,output logic [POLLER_PTR_W-1:0] poller_msg_dst_len // OLD: for tx only + ,output tcp_buf_with_idx poller_msg_dst_base_buf // NEW: for rx ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_x ,output logic [`XY_WIDTH-1:0] poller_msg_dst_dst_y ,output logic [`NOC_FBITS_WIDTH-1:0] poller_msg_dst_dst_fbits @@ -65,9 +67,10 @@ module tcp_msg_ptr_poller_datap #( assign poll_data_msg_req_mem_rd_req_addr = flowid_next; assign poller_msg_dst_flowid = flowid_reg; - assign poller_msg_dst_base_buf.buf_info = base_buf_reg; - assign poller_msg_dst_base_buf.idx.idx = base_idx_reg; - // assign poller_msg_dst_len = msg_req_data_reg.length; + assign poller_msg_dst_base_ptr = base_idx_reg;//old + assign poller_msg_dst_len = msg_req_data_reg.tx_length;//old + assign poller_msg_dst_base_buf.buf_info = base_buf_reg;//new + assign poller_msg_dst_base_buf.idx.idx = base_idx_reg;//new assign poller_msg_dst_dst_x = msg_req_data_reg.dst_x; assign poller_msg_dst_dst_y = msg_req_data_reg.dst_y; assign poller_msg_dst_dst_fbits = msg_req_data_reg.dst_fbits; @@ -99,12 +102,12 @@ module tcp_msg_ptr_poller_datap #( generate if (CHK_SPACE_EMPTY) begin assign buf_space_used = base_idx_reg - end_idx_reg; - assign buf_space_empty = {1'b1, {(POLLER_idx_W){1'b0}}} - buf_space_used; - assign data_ctrl_msg_satis = buf_space_empty >= msg_req_data_reg.length; + assign buf_space_empty = {1'b1, {(POLLER_IDX_W){1'b0}}} - buf_space_used; + assign data_ctrl_msg_satis = buf_space_empty >= msg_req_data_reg.tx_length; // TODO: change to 1 when TX is done. end - else begin + else begin // RX assign buf_space_used = end_idx_reg - base_idx_reg; - assign data_ctrl_msg_satis = buf_space_used >= msg_req_data_reg.length; + assign data_ctrl_msg_satis = buf_space_used >= 1;//msg_req_data_reg.length; end endgenerate diff --git a/network_tiles/tcp/tcp_rx_app_if_wrap.sv b/network_tiles/tcp/tcp_rx_app_if_wrap.sv index 2c4962c..977b304 100644 --- a/network_tiles/tcp/tcp_rx_app_if_wrap.sv +++ b/network_tiles/tcp/tcp_rx_app_if_wrap.sv @@ -25,26 +25,31 @@ module tcp_rx_app_if_wrap ,output logic [`NOC_DATA_WIDTH-1:0] tcp_rx_ptr_if_noc_data ,input logic noc_tcp_rx_ptr_if_rdy - ,output logic app_rx_head_buf_wr_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr - ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old - ,input logic rx_head_buf_app_wr_req_rdy + ,output logic app_rx_head_idx_wr_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_idx_wr_req_addr + ,output tcp_buf_idx app_rx_head_idx_wr_req_data + ,input logic rx_head_idx_app_wr_req_rdy - ,output logic app_rx_head_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_ptr_rd_req_addr - ,input logic rx_head_ptr_app_rd_req_rdy + ,output logic app_rx_head_idx_rd_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_idx_rd_req_addr + ,input logic rx_head_idx_app_rd_req_rdy - ,input logic rx_head_ptr_app_rd_resp_val - ,input logic [RX_PAYLOAD_PTR_W:0] rx_head_ptr_app_rd_resp_data - ,output logic app_rx_head_ptr_rd_resp_rdy + ,input logic rx_head_idx_app_rd_resp_val + ,input tcp_buf_idx rx_head_idx_app_rd_resp_data + ,output logic app_rx_head_idx_rd_resp_rdy - ,output logic app_rx_commit_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] app_rx_commit_ptr_rd_req_addr - ,input logic rx_commit_ptr_app_rd_req_rdy + ,output logic app_rx_commit_idx_rd_req_val + ,output logic [FLOWID_W-1:0] app_rx_commit_idx_rd_req_addr + ,input logic rx_commit_idx_app_rd_req_rdy - ,input logic rx_commit_ptr_app_rd_resp_val - ,input logic [RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data - ,output logic app_rx_commit_ptr_rd_resp_rdy + ,input logic rx_commit_idx_app_rd_resp_val + ,input tcp_buf_idx rx_commit_idx_app_rd_resp_data + ,output logic app_rx_commit_idx_rd_resp_rdy + + ,output logic app_rx_free_req_val + ,output logic [RX_PAYLOAD_PTR_W-1:0] app_rx_free_req_addr + ,output logic [MALLOC_LEN_W-1:0] app_rx_free_req_len + ,input logic rx_free_app_req_rdy ); logic noc_if_poller_msg_req_val; @@ -57,8 +62,7 @@ module tcp_rx_app_if_wrap logic poller_msg_noc_if_meta_val; logic [FLOWID_W-1:0] poller_msg_noc_if_flowid; - logic [RX_PAYLOAD_PTR_W:0] poller_msg_noc_if_head_ptr; - logic [RX_PAYLOAD_PTR_W-1:0] poller_msg_noc_if_len; + tcp_buf_with_idx poller_msg_noc_if_head_buf; logic [`XY_WIDTH-1:0] poller_msg_noc_if_dst_x; logic [`XY_WIDTH-1:0] poller_msg_noc_if_dst_y; logic [`NOC_FBITS_WIDTH-1:0] poller_msg_noc_if_dst_fbits; @@ -106,22 +110,27 @@ module tcp_rx_app_if_wrap ,.poller_msg_noc_if_meta_val (poller_msg_noc_if_meta_val ) ,.poller_msg_noc_if_flowid (poller_msg_noc_if_flowid ) - ,.poller_msg_noc_if_head_ptr (poller_msg_noc_if_head_ptr ) - ,.poller_msg_noc_if_len (poller_msg_noc_if_len ) + ,.poller_msg_noc_if_head_buf (poller_msg_noc_if_head_buf ) ,.poller_msg_noc_if_dst_x (poller_msg_noc_if_dst_x ) ,.poller_msg_noc_if_dst_y (poller_msg_noc_if_dst_y ) ,.poller_msg_noc_if_dst_fbits (poller_msg_noc_if_dst_fbits ) ,.noc_if_poller_msg_meta_rdy (noc_if_poller_msg_meta_rdy ) - ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) - ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) - ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) - ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) + ,.app_rx_head_idx_wr_req_val (app_rx_head_idx_wr_req_val ) + ,.app_rx_head_idx_wr_req_addr (app_rx_head_idx_wr_req_addr ) + ,.app_rx_head_idx_wr_req_data (app_rx_head_idx_wr_req_data ) + ,.rx_head_idx_app_wr_req_rdy (rx_head_idx_app_wr_req_rdy ) + + ,.app_rx_free_req_val (app_rx_free_req_val ) + ,.app_rx_free_req_addr (app_rx_free_req_addr ) + ,.app_rx_free_req_len (app_rx_free_req_len ) + ,.rx_free_app_req_rdy (rx_free_app_req_rdy ) ); tcp_msg_poller #( .CHK_SPACE_EMPTY (0) - ,.POLLER_PTR_W (RX_PAYLOAD_PTR_W ) + ,.POLLER_PTR_W (RX_PAYLOAD_PTR_W ) // TODO adjust TX + ,.POLLER_IDX_W (RX_PAYLOAD_IDX_W ) ) msg_poller ( .clk (clk ) ,.rst (rst ) @@ -136,28 +145,29 @@ module tcp_rx_app_if_wrap ,.poller_msg_dst_meta_val (poller_msg_noc_if_meta_val ) ,.poller_msg_dst_flowid (poller_msg_noc_if_flowid ) - ,.poller_msg_dst_base_ptr (poller_msg_noc_if_head_ptr ) - ,.poller_msg_dst_len (poller_msg_noc_if_len ) + ,.poller_msg_dst_base_ptr ( ) // only for TX + ,.poller_msg_dst_len ( ) // only for TX + ,.poller_msg_dst_base_buf (poller_msg_noc_if_head_buf ) ,.poller_msg_dst_dst_x (poller_msg_noc_if_dst_x ) ,.poller_msg_dst_dst_y (poller_msg_noc_if_dst_y ) ,.poller_msg_dst_dst_fbits (poller_msg_noc_if_dst_fbits ) ,.dst_poller_msg_meta_rdy (noc_if_poller_msg_meta_rdy ) - ,.app_base_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) - ,.app_base_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) - ,.base_ptr_app_rd_req_rdy (rx_head_ptr_app_rd_req_rdy ) + ,.app_base_idx_rd_req_val (app_rx_head_idx_rd_req_val ) + ,.app_base_idx_rd_req_addr (app_rx_head_idx_rd_req_addr ) + ,.base_idx_app_rd_req_rdy (rx_head_idx_app_rd_req_rdy ) - ,.base_ptr_app_rd_resp_val (rx_head_ptr_app_rd_resp_val ) - ,.base_ptr_app_rd_resp_data (rx_head_ptr_app_rd_resp_data ) - ,.app_base_ptr_rd_resp_rdy (app_rx_head_ptr_rd_resp_rdy ) + ,.base_idx_app_rd_resp_val (rx_head_idx_app_rd_resp_val ) + ,.base_idx_app_rd_resp_data (rx_head_idx_app_rd_resp_data ) + ,.app_base_idx_rd_resp_rdy (app_rx_head_idx_rd_resp_rdy ) - ,.app_end_ptr_rd_req_val (app_rx_commit_ptr_rd_req_val ) - ,.app_end_ptr_rd_req_addr (app_rx_commit_ptr_rd_req_addr ) - ,.end_ptr_app_rd_req_rdy (rx_commit_ptr_app_rd_req_rdy ) + ,.app_end_idx_rd_req_val (app_rx_commit_idx_rd_req_val ) + ,.app_end_idx_rd_req_addr (app_rx_commit_idx_rd_req_addr ) + ,.end_idx_app_rd_req_rdy (rx_commit_idx_app_rd_req_rdy ) - ,.end_ptr_app_rd_resp_val (rx_commit_ptr_app_rd_resp_val ) - ,.end_ptr_app_rd_resp_data (rx_commit_ptr_app_rd_resp_data ) - ,.app_end_ptr_rd_resp_rdy (app_rx_commit_ptr_rd_resp_rdy ) + ,.end_idx_app_rd_resp_val (rx_commit_idx_app_rd_resp_val ) + ,.end_idx_app_rd_resp_data (rx_commit_idx_app_rd_resp_data ) + ,.app_end_idx_rd_resp_rdy (app_rx_commit_idx_rd_resp_rdy ) ); endmodule diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if.sv b/network_tiles/tcp/tcp_rx_msg_noc_if.sv index c369f2a..bceb884 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if.sv @@ -24,17 +24,21 @@ module tcp_rx_msg_noc_if #( ,input logic poller_msg_noc_if_meta_val ,input logic [FLOWID_W-1:0] poller_msg_noc_if_flowid - ,input logic [RX_PAYLOAD_PTR_W:0] poller_msg_noc_if_head_ptr - ,input logic [RX_PAYLOAD_PTR_W-1:0] poller_msg_noc_if_len + ,input tcp_buf_with_idx poller_msg_noc_if_head_buf ,input logic [`XY_WIDTH-1:0] poller_msg_noc_if_dst_x ,input logic [`XY_WIDTH-1:0] poller_msg_noc_if_dst_y ,input logic [`NOC_FBITS_WIDTH-1:0] poller_msg_noc_if_dst_fbits ,output logic noc_if_poller_msg_meta_rdy - ,output logic app_rx_head_buf_wr_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr - ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old - ,input logic rx_head_buf_app_wr_req_rdy + ,output logic app_rx_head_idx_wr_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_idx_wr_req_addr + ,output tcp_buf_idx app_rx_head_idx_wr_req_data + ,input logic rx_head_idx_app_wr_req_rdy + + ,output logic app_rx_free_req_val + ,output logic [RX_PAYLOAD_PTR_W-1:0] app_rx_free_req_addr + ,output logic [MALLOC_LEN_W-1:0] app_rx_free_req_len + ,input logic rx_free_app_req_rdy ); tcp_rx_msg_noc_if_in noc_if_in ( @@ -53,10 +57,15 @@ module tcp_rx_msg_noc_if #( ,.noc_if_poller_msg_dst_fbits (noc_if_poller_msg_dst_fbits ) ,.poller_noc_if_msg_req_rdy (poller_noc_if_msg_req_rdy ) - ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) - ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) - ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) - ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) + ,.app_rx_head_idx_wr_req_val (app_rx_head_idx_wr_req_val ) + ,.app_rx_head_idx_wr_req_addr (app_rx_head_idx_wr_req_addr ) + ,.app_rx_head_idx_wr_req_data (app_rx_head_idx_wr_req_data ) + ,.rx_head_idx_app_wr_req_rdy (rx_head_idx_app_wr_req_rdy ) + + ,.app_rx_free_req_val (app_rx_free_req_val ) + ,.app_rx_free_req_addr (app_rx_free_req_addr ) + ,.app_rx_free_req_len (app_rx_free_req_len ) + ,.rx_free_app_req_rdy (rx_free_app_req_rdy ) ); tcp_rx_msg_noc_if_out #( @@ -72,8 +81,7 @@ module tcp_rx_msg_noc_if #( ,.poller_msg_noc_if_meta_val (poller_msg_noc_if_meta_val ) ,.poller_msg_noc_if_flowid (poller_msg_noc_if_flowid ) - ,.poller_msg_noc_if_head_ptr (poller_msg_noc_if_head_ptr ) - ,.poller_msg_noc_if_len (poller_msg_noc_if_len ) + ,.poller_msg_noc_if_head_buf (poller_msg_noc_if_head_buf ) ,.poller_msg_noc_if_dst_x (poller_msg_noc_if_dst_x ) ,.poller_msg_noc_if_dst_y (poller_msg_noc_if_dst_y ) ,.poller_msg_noc_if_dst_fbits (poller_msg_noc_if_dst_fbits ) diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_in.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_in.sv index 4fbd1cb..c039d81 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_in.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_in.sv @@ -15,10 +15,15 @@ module tcp_rx_msg_noc_if_in ( ,output logic [`MSG_SRC_FBITS_WIDTH-1:0] noc_if_poller_msg_dst_fbits ,input logic poller_noc_if_msg_req_rdy - ,output logic app_rx_head_buf_wr_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr - ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old - ,input logic rx_head_buf_app_wr_req_rdy + ,output logic app_rx_head_idx_wr_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_idx_wr_req_addr + ,output tcp_buf_idx app_rx_head_idx_wr_req_data + ,input logic rx_head_idx_app_wr_req_rdy + + ,output logic app_rx_free_req_val + ,output logic [RX_PAYLOAD_PTR_W-1:0] app_rx_free_req_addr + ,output logic [MALLOC_LEN_W-1:0] app_rx_free_req_len + ,input logic rx_free_app_req_rdy ); tcp_rx_msg_noc_if_in_ctrl ctrl ( @@ -32,8 +37,11 @@ module tcp_rx_msg_noc_if_in ( ,.noc_if_poller_msg_req_val (noc_if_poller_msg_req_val ) ,.poller_noc_if_msg_req_rdy (poller_noc_if_msg_req_rdy ) - ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) - ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) + ,.app_rx_head_idx_wr_req_val (app_rx_head_idx_wr_req_val ) + ,.rx_head_idx_app_wr_req_rdy (rx_head_idx_app_wr_req_rdy ) + + ,.app_rx_free_req_val (app_rx_free_req_val ) + ,.rx_free_app_req_rdy (rx_free_app_req_rdy ) ,.ctrl_datap_store_hdr_flit (ctrl_datap_store_hdr_flit ) ); @@ -50,8 +58,11 @@ module tcp_rx_msg_noc_if_in ( ,.noc_if_poller_msg_dst_y (noc_if_poller_msg_dst_y ) ,.noc_if_poller_msg_dst_fbits (noc_if_poller_msg_dst_fbits ) - ,.app_rx_head_ptr_wr_req_addr (app_rx_head_ptr_wr_req_addr ) - ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) + ,.app_rx_head_idx_wr_req_addr (app_rx_head_idx_wr_req_addr ) + ,.app_rx_head_idx_wr_req_data (app_rx_head_idx_wr_req_data ) + + ,.app_rx_free_req_addr (app_rx_free_req_addr ) + ,.app_rx_free_req_len (app_rx_free_req_len ) ,.ctrl_datap_store_hdr_flit (ctrl_datap_store_hdr_flit ) ); diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv index c049726..ace1b33 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv @@ -10,8 +10,11 @@ module tcp_rx_msg_noc_if_in_ctrl ( ,output logic noc_if_poller_msg_req_val ,input logic poller_noc_if_msg_req_rdy - ,output logic app_rx_head_buf_wr_req_val - ,input logic rx_head_buf_app_wr_req_rdy + ,output logic app_rx_head_idx_wr_req_val + ,input logic rx_head_idx_app_wr_req_rdy + + ,output logic app_rx_free_req_val, + ,input logic rx_free_app_req_rdy, ,output logic ctrl_datap_store_hdr_flit ); @@ -20,6 +23,7 @@ module tcp_rx_msg_noc_if_in_ctrl ( READY = 3'd0, RX_REQ_MSG = 3'd1, RX_ADJUST_PTR = 3'd2, + FREE_BUF = 3'd3; UND = 'X } state_e; @@ -44,7 +48,9 @@ module tcp_rx_msg_noc_if_in_ctrl ( noc_if_poller_msg_req_val = 1'b0; - app_rx_head_buf_wr_req_val = 1'b0; + app_rx_head_idx_wr_req_val = 1'b0; + + app_rx_free_req_val = 1'b0; ctrl_datap_store_hdr_flit = 1'b0; @@ -75,15 +81,25 @@ module tcp_rx_msg_noc_if_in_ctrl ( end end RX_ADJUST_PTR: begin - app_rx_head_buf_wr_req_val = 1'b1; + app_rx_head_idx_wr_req_val = 1'b1; - if (rx_head_buf_app_wr_req_rdy) begin - state_next = READY; + if (rx_head_idx_app_wr_req_rdy) begin + state_next = FREE_BUF; end else begin state_next = RX_ADJUST_PTR; end end + FREE_BUF: begin + app_rx_free_req_val = 1'b1; + + if (rx_free_app_req_rdy) begin + state_next = READY; + end + else begin + state_next = FREE_BUF; + end + end default: begin tcp_rx_ptr_if_noc_rdy = 'X; @@ -91,6 +107,8 @@ module tcp_rx_msg_noc_if_in_ctrl ( app_rx_head_ptr_wr_req_val = 'X; + app_rx_free_req_val = 'X; + state_next = state_reg; end endcase diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv index bfa9eb3..3da65a9 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv @@ -11,8 +11,11 @@ module tcp_rx_msg_noc_if_in_datap ( ,output logic [`MSG_SRC_Y_WIDTH-1:0] noc_if_poller_msg_dst_y ,output logic [`MSG_SRC_FBITS_WIDTH-1:0] noc_if_poller_msg_dst_fbits - ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr - ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old // now, the app returns the same buffer info that it got, to allow tcp_slow to do the +1 + ,output logic [FLOWID_W-1:0] app_rx_head_idx_wr_req_addr + ,output tcp_buf_idx app_rx_head_idx_wr_req_data + + ,output logic [RX_PAYLOAD_PTR_W-1:0] app_rx_free_req_addr + ,output logic [MALLOC_LEN_W-1:0] app_rx_free_req_len ,input logic ctrl_datap_store_hdr_flit ); @@ -20,11 +23,15 @@ module tcp_rx_msg_noc_if_in_datap ( tcp_noc_hdr_flit hdr_flit_reg; tcp_noc_hdr_flit hdr_flit_next; - assign app_rx_head_buf_wr_req_addr = hdr_flit_reg.inner.flowid; - assign app_rx_head_buf_wr_req_data_old = hdr_flit_reg.inner.msg_specific.tcp_adjust_idx;// TODO: do i need to do it field by field + // for adjust_ptr + assign app_rx_head_idx_wr_req_addr = hdr_flit_reg.inner.flowid; + assign app_rx_head_idx_wr_req_data.idx = hdr_flit_reg.inner.msg_specific.tcp_adjust_idx.old_buf.idx.idx + 1; // go to the next idx. this buffer is done. + assign app_rx_free_req_addr = hdr_flit_reg.inner.msg_specific.tcp_adjust_idx.old_buf.buf_info.ptr; + assign app_rx_free_req_len = hdr_flit_reg.inner.msg_specific.tcp_adjust_idx.old_buf.buf_info.cap; // TODO: bit widths here are different... + // for tcp_msg_req assign noc_if_poller_msg_req_flowid = hdr_flit_reg.inner.flowid; - assign noc_if_poller_msg_req_len = hdr_flit_reg.inner.msg_specific.tcp_msg_req.length; + assign noc_if_poller_msg_req_len = hdr_flit_reg.inner.msg_specific.tcp_msg_req.__length; assign noc_if_poller_msg_dst_x = hdr_flit_reg.core.src_x_coord; assign noc_if_poller_msg_dst_y = hdr_flit_reg.core.src_y_coord; assign noc_if_poller_msg_dst_fbits = hdr_flit_reg.core.src_fbits; diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_out.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_out.sv index 042b66a..8200af3 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_out.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_out.sv @@ -12,8 +12,7 @@ module tcp_rx_msg_noc_if_out #( ,input logic poller_msg_noc_if_meta_val ,input logic [FLOWID_W-1:0] poller_msg_noc_if_flowid - ,input logic [RX_PAYLOAD_PTR_W:0] poller_msg_noc_if_head_ptr - ,input logic [RX_PAYLOAD_PTR_W-1:0] poller_msg_noc_if_len + ,input tcp_buf_with_idx poller_msg_noc_if_head_buf ,input logic [`XY_WIDTH-1:0] poller_msg_noc_if_dst_x ,input logic [`XY_WIDTH-1:0] poller_msg_noc_if_dst_y ,input logic [`NOC_FBITS_WIDTH-1:0] poller_msg_noc_if_dst_fbits @@ -45,8 +44,7 @@ module tcp_rx_msg_noc_if_out #( ,.tcp_rx_ptr_if_noc_data (tcp_rx_ptr_if_noc_data ) ,.poller_msg_noc_if_flowid (poller_msg_noc_if_flowid ) - ,.poller_msg_noc_if_head_ptr (poller_msg_noc_if_head_ptr ) - ,.poller_msg_noc_if_len (poller_msg_noc_if_len ) + ,.poller_msg_noc_if_head_buf (poller_msg_noc_if_head_buf ) ,.poller_msg_noc_if_dst_x (poller_msg_noc_if_dst_x ) ,.poller_msg_noc_if_dst_y (poller_msg_noc_if_dst_y ) ,.poller_msg_noc_if_dst_fbits (poller_msg_noc_if_dst_fbits ) diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv index f0ff64d..b3314b4 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv @@ -9,8 +9,7 @@ module tcp_rx_msg_noc_if_out_datap #( ,output logic [`NOC_DATA_WIDTH-1:0] tcp_rx_ptr_if_noc_data ,input logic [FLOWID_W-1:0] poller_msg_noc_if_flowid - ,input logic [RX_PAYLOAD_PTR_W:0] poller_msg_noc_if_head_ptr - ,input logic [RX_PAYLOAD_PTR_W-1:0] poller_msg_noc_if_len + ,input tcp_buf_with_idx poller_msg_noc_if_head_buf ,input logic [`XY_WIDTH-1:0] poller_msg_noc_if_dst_x ,input logic [`XY_WIDTH-1:0] poller_msg_noc_if_dst_y ,input logic [`NOC_FBITS_WIDTH-1:0] poller_msg_noc_if_dst_fbits @@ -19,15 +18,13 @@ module tcp_rx_msg_noc_if_out_datap #( ); logic [FLOWID_W-1:0] flowid_reg; - logic [RX_PAYLOAD_PTR_W-1:0] len_reg; - logic [RX_PAYLOAD_PTR_W:0] head_ptr_reg; + tcp_buf_with_idx head_buf_reg; logic [`XY_WIDTH-1:0] dst_x_reg; logic [`XY_WIDTH-1:0] dst_y_reg; logic [`NOC_FBITS_WIDTH-1:0] dst_fbits_reg; logic [FLOWID_W-1:0] flowid_next; - logic [RX_PAYLOAD_PTR_W-1:0] len_next; - logic [RX_PAYLOAD_PTR_W:0] head_ptr_next; + tcp_buf_with_idx head_buf_next; logic [`XY_WIDTH-1:0] dst_x_next; logic [`XY_WIDTH-1:0] dst_y_next; logic [`NOC_FBITS_WIDTH-1:0] dst_fbits_next; @@ -39,16 +36,14 @@ module tcp_rx_msg_noc_if_out_datap #( always_ff @(posedge clk) begin if (rst) begin flowid_reg <= '0; - len_reg <= '0; - head_ptr_reg <= '0; + head_buf_reg <= '0; dst_x_reg <= '0; dst_y_reg <= '0; dst_fbits_reg <= '0; end else begin flowid_reg <= flowid_next; - len_reg <= len_next; - head_ptr_reg <= head_ptr_next; + head_buf_reg <= head_buf_next; dst_x_reg <= dst_x_next; dst_y_reg <= dst_y_next; dst_fbits_reg <= dst_fbits_next; @@ -58,16 +53,14 @@ module tcp_rx_msg_noc_if_out_datap #( always_comb begin if (ctrl_datap_store_inputs) begin flowid_next = poller_msg_noc_if_flowid; - head_ptr_next = poller_msg_noc_if_head_ptr; - len_next = poller_msg_noc_if_len; + head_buf_next = poller_msg_noc_if_head_buf; dst_x_next = poller_msg_noc_if_dst_x; dst_y_next = poller_msg_noc_if_dst_y; dst_fbits_next = poller_msg_noc_if_dst_fbits; end else begin flowid_next = flowid_reg; - head_ptr_next = head_ptr_reg; - len_next = len_reg; + head_buf_next = head_buf_reg; dst_x_next = dst_x_reg; dst_y_next = dst_y_reg; dst_fbits_next = dst_fbits_reg; @@ -87,8 +80,7 @@ module tcp_rx_msg_noc_if_out_datap #( hdr_flit_cast.core.src_fbits = TCP_RX_APP_PTR_IF_FBITS; hdr_flit_cast.inner.flowid = flowid_reg; - hdr_flit_cast.inner.head_ptr = head_ptr_reg; - hdr_flit_cast.inner.length = len_reg; + hdr_flit_cast.inner.msg_specific.tcp_msg_resp.buf = head_buf_reg; end endmodule diff --git a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv index 5f08bbb..c74470e 100644 --- a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv +++ b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv @@ -77,36 +77,40 @@ import tcp_pkg::*; ,input four_tuple_struct app_new_flow_lookup ,output logic app_new_flow_notif_rdy - ,output logic app_rx_head_buf_wr_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr - ,output logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old - ,input logic rx_head_buf_app_wr_req_rdy - - ,output logic app_rx_head_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] app_rx_head_ptr_rd_req_addr - ,input logic rx_head_ptr_app_rd_req_rdy - - ,input logic rx_head_ptr_app_rd_resp_val - ,input logic [RX_PAYLOAD_PTR_W:0] rx_head_ptr_app_rd_resp_data - ,output logic app_rx_head_ptr_rd_resp_rdy - - ,output logic app_rx_commit_ptr_rd_req_val - ,output logic [FLOWID_W-1:0] app_rx_commit_ptr_rd_req_addr - ,input logic rx_commit_ptr_app_rd_req_rdy - - ,input logic rx_commit_ptr_app_rd_resp_val - ,input logic [RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data - ,output logic app_rx_commit_ptr_rd_resp_rdy - - - ,output rx_store_buf_rx_buf_store_rd_req_val - ,output [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid - ,output [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx - ,input logic rx_buf_store_rx_store_buf_rd_req_rdy - - ,input logic rx_buf_store_rx_store_buf_rd_resp_val - ,input tcp_buf rx_buf_store_rx_store_buf_rd_resp_data - ,output rx_store_buf_rx_buf_store_rd_resp_rdy + ,output logic app_rx_head_idx_wr_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_idx_wr_req_addr + ,output tcp_buf_idx app_rx_head_idx_wr_req_data + ,input logic rx_head_idx_app_wr_req_rdy + + ,output logic app_rx_head_idx_rd_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_idx_rd_req_addr + ,input logic rx_head_idx_app_rd_req_rdy + + ,input logic rx_head_idx_app_rd_resp_val + ,input tcp_buf_idx rx_head_idx_app_rd_resp_data + ,output logic app_rx_head_idx_rd_resp_rdy + + ,output logic app_rx_commit_idx_rd_req_val + ,output logic [FLOWID_W-1:0] app_rx_commit_idx_rd_req_addr + ,input logic rx_commit_idx_app_rd_req_rdy + + ,input logic rx_commit_idx_app_rd_resp_val + ,input tcp_buf_idx rx_commit_idx_app_rd_resp_data + ,output logic app_rx_commit_idx_rd_resp_rdy + + ,output logic app_rx_free_req_val + ,output logic [RX_PAYLOAD_PTR_W-1:0] app_rx_free_req_addr + ,output logic [MALLOC_LEN_W-1:0] app_rx_free_req_len + ,input logic rx_free_app_req_rdy + + ,output rx_store_buf_rx_buf_store_rd_req_val + ,output [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid + ,output [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx + ,input logic rx_buf_store_rx_store_buf_rd_req_rdy + + ,input logic rx_buf_store_rx_store_buf_rd_resp_val + ,input tcp_buf rx_buf_store_rx_store_buf_rd_resp_data + ,output rx_store_buf_rx_buf_store_rd_resp_rdy ); <% @@ -598,25 +602,30 @@ print(router_wires) ,.tcp_rx_ptr_if_noc_data (rx_app_dtc_ctrl_noc1_data ) ,.noc_tcp_rx_ptr_if_rdy (dtc_rx_app_ctrl_noc1_rdy ) - ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) - ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) - ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) - ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) + ,.app_rx_head_idx_wr_req_val (app_rx_head_idx_wr_req_val ) + ,.app_rx_head_idx_wr_req_addr (app_rx_head_idx_wr_req_addr ) + ,.app_rx_head_idx_wr_req_data (app_rx_head_idx_wr_req_data ) + ,.rx_head_idx_app_wr_req_rdy (rx_head_idx_app_wr_req_rdy ) - ,.app_rx_head_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) - ,.app_rx_head_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) - ,.rx_head_ptr_app_rd_req_rdy (rx_head_ptr_app_rd_req_rdy ) + ,.app_rx_head_idx_rd_req_val (app_rx_head_idx_rd_req_val ) + ,.app_rx_head_idx_rd_req_addr (app_rx_head_idx_rd_req_addr ) + ,.rx_head_idx_app_rd_req_rdy (rx_head_idx_app_rd_req_rdy ) - ,.rx_head_ptr_app_rd_resp_val (rx_head_ptr_app_rd_resp_val ) - ,.rx_head_ptr_app_rd_resp_data (rx_head_ptr_app_rd_resp_data ) - ,.app_rx_head_ptr_rd_resp_rdy (app_rx_head_ptr_rd_resp_rdy ) + ,.rx_head_idx_app_rd_resp_val (rx_head_idx_app_rd_resp_val ) + ,.rx_head_idx_app_rd_resp_data (rx_head_idx_app_rd_resp_data ) + ,.app_rx_head_idx_rd_resp_rdy (app_rx_head_idx_rd_resp_rdy ) - ,.app_rx_commit_ptr_rd_req_val (app_rx_commit_ptr_rd_req_val ) - ,.app_rx_commit_ptr_rd_req_addr (app_rx_commit_ptr_rd_req_addr ) - ,.rx_commit_ptr_app_rd_req_rdy (rx_commit_ptr_app_rd_req_rdy ) + ,.app_rx_commit_idx_rd_req_val (app_rx_commit_idx_rd_req_val ) + ,.app_rx_commit_idx_rd_req_addr (app_rx_commit_idx_rd_req_addr ) + ,.rx_commit_idx_app_rd_req_rdy (rx_commit_idx_app_rd_req_rdy ) - ,.rx_commit_ptr_app_rd_resp_val (rx_commit_ptr_app_rd_resp_val ) - ,.rx_commit_ptr_app_rd_resp_data (rx_commit_ptr_app_rd_resp_data ) - ,.app_rx_commit_ptr_rd_resp_rdy (app_rx_commit_ptr_rd_resp_rdy ) + ,.rx_commit_idx_app_rd_resp_val (rx_commit_idx_app_rd_resp_val ) + ,.rx_commit_idx_app_rd_resp_data (rx_commit_idx_app_rd_resp_data ) + ,.app_rx_commit_idx_rd_resp_rdy (app_rx_commit_idx_rd_resp_rdy ) + + ,.app_rx_free_req_val (app_rx_free_req_val ) + ,.app_rx_free_req_addr (app_rx_free_req_addr ) + ,.app_rx_free_req_len (app_rx_free_req_len ) + ,.rx_free_app_req_rdy (rx_free_app_req_rdy ) ); endmodule diff --git a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv index 7cff34f..2744df3 100644 --- a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv +++ b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv @@ -125,40 +125,44 @@ import tcp_misc_pkg::*; logic [TX_PAYLOAD_PTR_W:0] head_ptr_app_tx_rd_resp_data; logic app_head_ptr_tx_rd_resp_rdy; - logic app_rx_head_buf_wr_req_val; - logic [FLOWID_W-1:0] app_rx_head_buf_wr_req_addr; - logic [TCP_ADJUST_IDX_W-1:0] app_rx_head_buf_wr_req_data_old; - logic rx_head_buf_app_wr_req_rdy; - - logic app_rx_head_ptr_rd_req_val; - logic [FLOWID_W-1:0] app_rx_head_ptr_rd_req_addr; - logic rx_head_ptr_app_rd_req_rdy; + logic app_rx_head_idx_wr_req_val; + logic [FLOWID_W-1:0] app_rx_head_idx_wr_req_addr; + tcp_buf_idx app_rx_head_idx_wr_req_data; + logic rx_head_idx_app_wr_req_rdy; + + logic app_rx_head_idx_rd_req_val; + logic [FLOWID_W-1:0] app_rx_head_idx_rd_req_addr; + logic rx_head_idx_app_rd_req_rdy; - logic rx_head_ptr_app_rd_resp_val; - logic [RX_PAYLOAD_PTR_W:0] rx_head_ptr_app_rd_resp_data; - logic app_rx_head_ptr_rd_resp_rdy; + logic rx_head_idx_app_rd_resp_val; + tcp_buf_idx rx_head_idx_app_rd_resp_data; + logic app_rx_head_idx_rd_resp_rdy; - logic app_rx_commit_ptr_rd_req_val; - logic [FLOWID_W-1:0] app_rx_commit_ptr_rd_req_addr; - logic rx_commit_ptr_app_rd_req_rdy; + logic app_rx_commit_idx_rd_req_val; + logic [FLOWID_W-1:0] app_rx_commit_idx_rd_req_addr; + logic rx_commit_idx_app_rd_req_rdy; - logic rx_commit_ptr_app_rd_resp_val; - logic [RX_PAYLOAD_PTR_W:0] rx_commit_ptr_app_rd_resp_data; - logic app_rx_commit_ptr_rd_resp_rdy; + logic rx_commit_idx_app_rd_resp_val; + tcp_buf_idx rx_commit_idx_app_rd_resp_data; + logic app_rx_commit_idx_rd_resp_rdy; logic app_sched_update_val; sched_cmd_struct app_sched_update_cmd; logic sched_app_update_rdy; + logic app_rx_free_req_val; + logic [RX_PAYLOAD_PTR_W-1:0] app_rx_free_req_addr; + logic [MALLOC_LEN_W-1:0] app_rx_free_req_len; + logic rx_free_app_req_rdy; - logic rx_store_buf_rx_buf_store_rd_req_val - logic [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid - logic [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx - logic rx_buf_store_rx_store_buf_rd_req_rdy + logic rx_store_buf_rx_buf_store_rd_req_val + logic [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid + logic [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx + logic rx_buf_store_rx_store_buf_rd_req_rdy - logic rx_buf_store_rx_store_buf_rd_resp_val - tcp_buf rx_buf_store_rx_store_buf_rd_resp_data - logic rx_store_buf_rx_buf_store_rd_resp_rdy + logic rx_buf_store_rx_store_buf_rd_resp_val + tcp_buf rx_buf_store_rx_store_buf_rd_resp_data + logic rx_store_buf_rx_buf_store_rd_resp_rdy tcp_rx_tile #( .SRC_X (TCP_RX_SRC_X ) @@ -223,36 +227,40 @@ import tcp_misc_pkg::*; ,.app_new_flow_flowid (app_new_flow_flowid ) ,.app_new_flow_notif_rdy (app_new_flow_notif_rdy ) - ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) - ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) - ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) - ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) + ,.app_rx_head_idx_wr_req_val (app_rx_head_idx_wr_req_val ) + ,.app_rx_head_idx_wr_req_addr (app_rx_head_idx_wr_req_addr ) + ,.app_rx_head_idx_wr_req_data (app_rx_head_idx_wr_req_data ) + ,.rx_head_idx_app_wr_req_rdy (rx_head_idx_app_wr_req_rdy ) - ,.app_rx_head_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) - ,.app_rx_head_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) - ,.rx_head_ptr_app_rd_req_rdy (rx_head_ptr_app_rd_req_rdy ) + ,.app_rx_head_idx_rd_req_val (app_rx_head_idx_rd_req_val ) + ,.app_rx_head_idx_rd_req_addr (app_rx_head_idx_rd_req_addr ) + ,.rx_head_idx_app_rd_req_rdy (rx_head_idx_app_rd_req_rdy ) - ,.rx_head_ptr_app_rd_resp_val (rx_head_ptr_app_rd_resp_val ) - ,.rx_head_ptr_app_rd_resp_data (rx_head_ptr_app_rd_resp_data ) - ,.app_rx_head_ptr_rd_resp_rdy (app_rx_head_ptr_rd_resp_rdy ) + ,.rx_head_idx_app_rd_resp_val (rx_head_idx_app_rd_resp_val ) + ,.rx_head_idx_app_rd_resp_data (rx_head_idx_app_rd_resp_data ) + ,.app_rx_head_idx_rd_resp_rdy (app_rx_head_idx_rd_resp_rdy ) - ,.app_rx_commit_ptr_rd_req_val (app_rx_commit_ptr_rd_req_val ) - ,.app_rx_commit_ptr_rd_req_addr (app_rx_commit_ptr_rd_req_addr ) - ,.rx_commit_ptr_app_rd_req_rdy (rx_commit_ptr_app_rd_req_rdy ) + ,.app_rx_commit_idx_rd_req_val (app_rx_commit_idx_rd_req_val ) + ,.app_rx_commit_idx_rd_req_addr (app_rx_commit_idx_rd_req_addr ) + ,.rx_commit_idx_app_rd_req_rdy (rx_commit_idx_app_rd_req_rdy ) - ,.rx_commit_ptr_app_rd_resp_val (rx_commit_ptr_app_rd_resp_val ) - ,.rx_commit_ptr_app_rd_resp_data (rx_commit_ptr_app_rd_resp_data ) - ,.app_rx_commit_ptr_rd_resp_rdy (app_rx_commit_ptr_rd_resp_rdy ) - - - ,.rx_store_buf_rx_buf_store_rd_req_val(rx_store_buf_rx_buf_store_rd_req_val) - ,.rx_store_buf_rx_buf_store_rd_req_flowid(rx_store_buf_rx_buf_store_rd_req_flowid) - ,.rx_store_buf_rx_buf_store_rd_req_idx(rx_store_buf_rx_buf_store_rd_req_idx) - ,.rx_buf_store_rx_store_buf_rd_req_rdy(rx_buf_store_rx_store_buf_rd_req_rdy) - - ,.rx_buf_store_rx_store_buf_rd_resp_val(rx_buf_store_rx_store_buf_rd_resp_val) - ,.rx_buf_store_rx_store_buf_rd_resp_data(rx_buf_store_rx_store_buf_rd_resp_data) - ,.rx_store_buf_rx_buf_store_rd_resp_rdy(rx_store_buf_rx_buf_store_rd_resp_rdy) + ,.rx_commit_idx_app_rd_resp_val (rx_commit_idx_app_rd_resp_val ) + ,.rx_commit_idx_app_rd_resp_data (rx_commit_idx_app_rd_resp_data ) + ,.app_rx_commit_idx_rd_resp_rdy (app_rx_commit_idx_rd_resp_rdy ) + + ,.app_rx_free_req_val (app_rx_free_req_val ) + ,.app_rx_free_req_addr (app_rx_free_req_addr ) + ,.app_rx_free_req_len (app_rx_free_req_len ) + ,.rx_free_app_req_rdy (rx_free_app_req_rdy ) + + ,.rx_store_buf_rx_buf_store_rd_req_val (rx_store_buf_rx_buf_store_rd_req_val ) + ,.rx_store_buf_rx_buf_store_rd_req_flowid (rx_store_buf_rx_buf_store_rd_req_flowid ) + ,.rx_store_buf_rx_buf_store_rd_req_idx (rx_store_buf_rx_buf_store_rd_req_idx ) + ,.rx_buf_store_rx_store_buf_rd_req_rdy (rx_buf_store_rx_store_buf_rd_req_rdy ) + + ,.rx_buf_store_rx_store_buf_rd_resp_val (rx_buf_store_rx_store_buf_rd_resp_val ) + ,.rx_buf_store_rx_store_buf_rd_resp_data (rx_buf_store_rx_store_buf_rd_resp_data ) + ,.rx_store_buf_rx_buf_store_rd_resp_rdy (rx_store_buf_rx_buf_store_rd_resp_rdy ) ); assign tcp_format_tmp_buf_rx_tcp_payload_len = tcp_format_tmp_buf_rx_tcp_tot_len - @@ -328,19 +336,19 @@ import tcp_misc_pkg::*; ,.head_ptr_app_tx_rd_resp_data (head_ptr_app_tx_rd_resp_data ) ,.app_head_ptr_tx_rd_resp_rdy (app_head_ptr_tx_rd_resp_rdy ) - ,.app_rx_head_buf_wr_req_val (app_rx_head_buf_wr_req_val ) - ,.app_rx_head_buf_wr_req_addr (app_rx_head_buf_wr_req_addr ) - ,.app_rx_head_buf_wr_req_data_old (app_rx_head_buf_wr_req_data_old ) - ,.rx_head_buf_app_wr_req_rdy (rx_head_buf_app_wr_req_rdy ) + ,.app_rx_head_idx_wr_req_val (app_rx_head_idx_wr_req_val ) + ,.app_rx_head_idx_wr_req_addr (app_rx_head_idx_wr_req_addr ) + ,.app_rx_head_idx_wr_req_data (app_rx_head_idx_wr_req_data ) + ,.rx_head_idx_app_wr_req_rdy (rx_head_idx_app_wr_req_rdy ) - ,.app_rx_head_ptr_rd_req_val (app_rx_head_ptr_rd_req_val ) - ,.app_rx_head_ptr_rd_req_addr (app_rx_head_ptr_rd_req_addr ) - ,.rx_head_ptr_app_rd_req_rdy (rx_head_ptr_app_rd_req_rdy ) - - ,.rx_head_ptr_app_rd_resp_val (rx_head_ptr_app_rd_resp_val ) - ,.rx_head_ptr_app_rd_resp_data (rx_head_ptr_app_rd_resp_data ) - ,.app_rx_head_ptr_rd_resp_rdy (app_rx_head_ptr_rd_resp_rdy ) + ,.app_rx_head_idx_rd_req_val (app_rx_head_idx_rd_req_val ) + ,.app_rx_head_idx_rd_req_addr (app_rx_head_idx_rd_req_addr ) + ,.rx_head_idx_app_rd_req_rdy (rx_head_idx_app_rd_req_rdy ) + ,.rx_head_idx_app_rd_resp_val (rx_head_idx_app_rd_resp_val ) + ,.rx_head_idx_app_rd_resp_data (rx_head_idx_app_rd_resp_data ) + ,.app_rx_head_idx_rd_resp_rdy (app_rx_head_idx_rd_resp_rdy ) + ,.app_rx_commit_idx_rd_req_val (app_rx_commit_idx_rd_req_val ) ,.app_rx_commit_idx_rd_req_addr (app_rx_commit_idx_rd_req_addr ) ,.rx_commit_idx_app_rd_req_rdy (rx_commit_idx_app_rd_req_rdy ) @@ -348,6 +356,11 @@ import tcp_misc_pkg::*; ,.rx_commit_idx_app_rd_resp_val (rx_commit_idx_app_rd_resp_val ) ,.rx_commit_idx_app_rd_resp_data (rx_commit_idx_app_rd_resp_data ) ,.app_rx_commit_idx_rd_resp_rdy (app_rx_commit_idx_rd_resp_rdy ) + + ,.app_rx_free_req_val (app_rx_free_req_val ) + ,.app_rx_free_req_addr (app_rx_free_req_addr ) + ,.app_rx_free_req_len (app_rx_free_req_len ) + ,.rx_free_app_req_rdy (rx_free_app_req_rdy ) ,.store_buf_commit_idx_wr_req_val (store_buf_commit_idx_wr_req_val ) ,.store_buf_commit_idx_wr_req_addr (store_buf_commit_idx_wr_req_flowid ) diff --git a/network_tiles/tcp/tcp_tx_app_if_wrap.sv b/network_tiles/tcp/tcp_tx_app_if_wrap.sv index 3b1671c..fc7433e 100644 --- a/network_tiles/tcp/tcp_tx_app_if_wrap.sv +++ b/network_tiles/tcp/tcp_tx_app_if_wrap.sv @@ -106,6 +106,7 @@ import tcp_misc_pkg::*; tcp_msg_poller #( .CHK_SPACE_EMPTY (1) + ,.POLLER_IDX_W (TX_PAYLOAD_PTR_W ) ,.POLLER_PTR_W (TX_PAYLOAD_PTR_W ) ) tx_msg_poller ( .clk (clk ) diff --git a/protocols/tcp_slow b/protocols/tcp_slow index df3fd02..704cc35 160000 --- a/protocols/tcp_slow +++ b/protocols/tcp_slow @@ -1 +1 @@ -Subproject commit df3fd026b02461812f0fb23c1488a0b753f924ec +Subproject commit 704cc35bff7373c9b206d6c8fa9ecc174761bff4 diff --git a/sample_designs/tcp_open_loop/tcp_open_loop.flist b/sample_designs/tcp_open_loop/tcp_open_loop.flist new file mode 100644 index 0000000..e0087c0 --- /dev/null +++ b/sample_designs/tcp_open_loop/tcp_open_loop.flist @@ -0,0 +1,356 @@ ++incdir+/home/mgiordan/apiary/network_tiles/dram/include ++incdir+/home/mgiordan/apiary/network_tiles/udp/include ++incdir+/home/mgiordan/apiary/util/common_noc_adapters/include ++incdir+/home/mgiordan/apiary/include ++incdir+/home/mgiordan/apiary/network_tiles/eth/include ++incdir+/home/mgiordan/apiary/network_tiles/tcp/logger/include ++incdir+/home/mgiordan/apiary/network_tiles/ip/include ++incdir+/home/mgiordan/apiary/util/logging/include ++incdir+/home/mgiordan/apiary/network_tiles/tcp/include ++incdir+/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/include ++incdir+/home/mgiordan/apiary/protocols/tcp_hw/include/common +/home/mgiordan/apiary/include/packet_struct_pkg.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/packet_queue/packet_queue.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/packet_queue/packet_queue_controller.sv +/home/mgiordan/apiary/protocols/tcp_slow/include/tcp_pkg.sv +/home/mgiordan/apiary/protocols/tcp_slow/include/tcp_misc_pkg.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_cam_1r1w_tag_array.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_cam_1r1w_unmanaged.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_1r1w.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_1r1w_one_hot.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_1r1w_sync.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_1r1w_sync_synth.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_1r1w_synth.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_1rw_sync.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_1rw_sync_mask_write_byte.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_1rw_sync_mask_write_byte_synth.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_1rw_sync_synth.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_2r1w_sync.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_mem/bsg_mem_2r1w_sync_synth.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_arb_round_robin.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_circular_ptr.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_counter_clear_up.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_dff_en.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_dff_reset_en.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_encode_one_hot.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_lfsr.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_mux.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_mux_one_hot.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_popcount.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_priority_encode.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_priority_encode_one_hot_out.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_misc/bsg_scan.sv +/home/mgiordan/apiary/util/valid_bitvector.sv +/home/mgiordan/apiary/util/packet_queue_reader.sv +/home/mgiordan/apiary/util/demux_one_hot.sv +/home/mgiordan/apiary/util/demux.sv +/home/mgiordan/apiary/util/mem_mux.sv +/home/mgiordan/apiary/util/mem_mux_param.sv +/home/mgiordan/apiary/util/stream_mux.sv +/home/mgiordan/apiary/beehive_noc/beehive_dynamic_input_control.v +/home/mgiordan/apiary/beehive_noc/beehive_dynamic_input_route_request_calc.v +/home/mgiordan/apiary/beehive_noc/beehive_dynamic_input_top_16.v +/home/mgiordan/apiary/beehive_noc/beehive_dynamic_input_top_4.v +/home/mgiordan/apiary/beehive_noc/beehive_dynamic_node_top.v +/home/mgiordan/apiary/beehive_noc/beehive_dynamic_node_top_wrap.v +/home/mgiordan/apiary/beehive_noc/beehive_dynamic_output_control.v +/home/mgiordan/apiary/beehive_noc/beehive_dynamic_output_datapath.v +/home/mgiordan/apiary/beehive_noc/beehive_dynamic_output_top.v +/home/mgiordan/apiary/beehive_noc/beehive_noc_splitter.sv +/home/mgiordan/apiary/beehive_noc/beehive_noc_fbits_splitter.v +/home/mgiordan/apiary/beehive_noc/beehive_noc_msg_type_splitter.v +/home/mgiordan/apiary/beehive_noc/beehive_noc_prio_merger.v +/home/mgiordan/apiary/beehive_noc/common/beehive_bus_compare_equal.v +/home/mgiordan/apiary/beehive_noc/common/beehive_credit_to_valrdy.v +/home/mgiordan/apiary/beehive_noc/common/beehive_flip_bus.v +/home/mgiordan/apiary/beehive_noc/common/beehive_net_dff.v +/home/mgiordan/apiary/beehive_noc/common/beehive_network_input_blk_multi_out.v +/home/mgiordan/apiary/beehive_noc/common/beehive_one_of_eight.v +/home/mgiordan/apiary/beehive_noc/common/beehive_one_of_five.v +/home/mgiordan/apiary/beehive_noc/common/beehive_space_avail_top.v +/home/mgiordan/apiary/beehive_noc/common/beehive_valrdy_to_credit.v +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_topology-pyhp_generate_0.1-df1e7341ddddebaa88949be6c5a170813e6dc5faf2b63723f5dc34c57bdae6ab/beehive_topology_gen.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_dataflow/bsg_fifo_1r1w_small.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_dataflow/bsg_two_fifo.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_dataflow/bsg_fifo_1r1w_small_hardened.sv +/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/bsg_dataflow/bsg_fifo_tracker.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/mem_allocator/slab_alloc_tracker.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/bank_valid_mem.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/ram_1r1w_sync_backpressure.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/ram_1rw1w_byte_mask_sync.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/ram_1r1w_sync.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/ram_1rw1w_sync.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/ram_2r1w_sync_backpressure.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/ram_2rw_sync.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/ram_1rw_byte_mask_sync.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/ram_1rw_byte_mask_out_reg.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/ram/ram_1w_byte_mask_out_reg_wrap.sv +/home/mgiordan/apiary/util/l4_hash/include/hash_pkg.sv +/home/mgiordan/apiary/util/l4_hash/hash_lookup3.sv +/home/mgiordan/apiary/util/l4_hash/l4_hash_table.sv +/home/mgiordan/apiary/util/l4_hash/hash_table_init.sv +/home/mgiordan/apiary/include/beehive_noc_msg.sv +/home/mgiordan/apiary/include/beehive_eth_msg.sv +/home/mgiordan/apiary/include/beehive_ip_msg.sv +/home/mgiordan/apiary/include/beehive_ip_rewrite_msg.sv +/home/mgiordan/apiary/include/beehive_tcp_msg.sv +/home/mgiordan/apiary/include/beehive_udp_msg.sv +/home/mgiordan/apiary/include/beehive_rs_app_stats_msg.sv +/home/mgiordan/apiary/include/beehive_tcp_logger_msg.sv +/home/mgiordan/apiary/include/beehive_udp_app_logger_msg.sv +/home/mgiordan/apiary/include/beehive_eth_latency_logger_msg.sv +/home/mgiordan/apiary/include/beehive_echo_app_logger_msg.sv +/home/mgiordan/apiary/include/beehive_ctrl_noc_msg.sv +/home/mgiordan/apiary/include/parameter_checker.sv +/home/mgiordan/apiary/util/common_noc_adapters/noc_helpers/include/mem_noc_helper_pkg.sv +/home/mgiordan/apiary/util/common_noc_adapters/noc_helpers/rd_mem_noc_module.sv +/home/mgiordan/apiary/util/common_noc_adapters/noc_helpers/wr_mem_noc_module.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_router_block-pyhp_generate_0.1-2b363f4e047f1df06bd7bbf901171740c9877afd1a27e48b26db54b15b1cbcb5/noc_router_block_gen.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/fifo/axis_fifo.v +/home/mgiordan/apiary/protocols/tcp_hw/common/fifo/fifo_1r1w.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/fifo/fifo_2w.v +/home/mgiordan/apiary/protocols/tcp_hw/common/fifo/peek_fifo_1r1w.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/circ_buf_helpers/rd_circ_buf_new.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/circ_buf_helpers/rd_circ_buf_ctrl_new.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/circ_buf_helpers/rd_circ_buf_datap_new.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/circ_buf_helpers/wr_circ_buf.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/circ_buf_helpers/wr_circ_buf_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/common/circ_buf_helpers/wr_circ_buf_datapath.sv +/home/mgiordan/apiary/util/common_noc_adapters/include/to_ip_tx_pkg.sv +/home/mgiordan/apiary/util/common_noc_adapters/extra_hdr_noc_ctrl_to_data.sv +/home/mgiordan/apiary/util/common_noc_adapters/extra_hdr_noc_data_to_ctrl.sv +/home/mgiordan/apiary/util/common_noc_adapters/to_ip_tx_noc_out.sv +/home/mgiordan/apiary/util/common_noc_adapters/to_ip_tx_noc_out_ctrl.sv +/home/mgiordan/apiary/util/common_noc_adapters/to_ip_tx_noc_out_datap.sv +/home/mgiordan/apiary/util/common_noc_adapters/flit_hdr_join.sv +/home/mgiordan/apiary/util/common_noc_adapters/flit_hdr_strip.sv +/home/mgiordan/apiary/util/common_noc_adapters/hdr_flit_modify.sv +/home/mgiordan/apiary/util/common_noc_adapters/ip_lb_parse.sv +/home/mgiordan/apiary/util/common_noc_adapters/noc_data_to_ctrl.sv +/home/mgiordan/apiary/util/common_noc_adapters/noc_ctrl_to_data.sv +/home/mgiordan/apiary/util/data_converters/bit_flipper.sv +/home/mgiordan/apiary/util/data_converters/byte_flipper.sv +/home/mgiordan/apiary/util/data_converters/data_masker.sv +/home/mgiordan/apiary/util/data_converters/if_w_startframe_convert.sv +/home/mgiordan/apiary/util/data_converters/narrow_to_wide.sv +/home/mgiordan/apiary/util/data_converters/wide_to_narrow.sv +/home/mgiordan/apiary/util/data_converters/realign_compile.sv +/home/mgiordan/apiary/util/data_converters/realign_runtime.sv +/home/mgiordan/apiary/util/data_converters/inserter_compile.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_empty_tile-pyhp_generate_0.1-57ec30caa3bb04cdf63f50703898af63f8c41ad04ac75f94f0dd24f8ebccd7d7/empty_tile_gen.sv +/home/mgiordan/apiary/util/l4_field_extract/include/parser_pkg.sv +/home/mgiordan/apiary/util/l4_field_extract/fixed_parser.sv +/home/mgiordan/apiary/util/logging/include/simple_log_udp_noc_read_pkg.sv +/home/mgiordan/apiary/util/logging/simple_log.sv +/home/mgiordan/apiary/util/logging/simple_log_udp_noc_read.sv +/home/mgiordan/apiary/util/logging/simple_log_udp_noc_read_ctrl.sv +/home/mgiordan/apiary/util/logging/simple_log_udp_noc_read_datap.sv +/home/mgiordan/apiary/protocols/tcp_slow/flowid_manager.sv +/home/mgiordan/apiary/protocols/tcp_slow/mem_mux.sv +/home/mgiordan/apiary/protocols/tcp_slow/new_state_mux.sv +/home/mgiordan/apiary/protocols/tcp_slow/our_ack_process.sv +/home/mgiordan/apiary/protocols/tcp_slow/prio0_mux.sv +/home/mgiordan/apiary/protocols/tcp_slow/rr_sched_engine.sv +/home/mgiordan/apiary/protocols/tcp_slow/rx_buf_ptrs.sv +/home/mgiordan/apiary/protocols/tcp_slow/sched_cmd_flag_update.sv +/home/mgiordan/apiary/protocols/tcp_slow/sched_req_fill.sv +/home/mgiordan/apiary/protocols/tcp_slow/seg_size_calc.sv +/home/mgiordan/apiary/protocols/tcp_slow/seg_size_calc_w_window.sv +/home/mgiordan/apiary/protocols/tcp_slow/send_pkt_mux.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp_hdr_assembler.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp_malloc.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp_rx.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp_rx_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp_rx_datap.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp_rx_new_flow.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp_tx.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp_tx_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_slow/tcp_tx_datap.sv +/home/mgiordan/apiary/protocols/tcp_slow/their_ack_process.sv +/home/mgiordan/apiary/protocols/tcp_slow/tx_buf_ptrs.sv +/home/mgiordan/apiary/protocols/tcp_slow/tx_timeout_eng.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/include/tcp_logger_pkg.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/tcp_logger_read_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/tcp_logger_read_datap.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/tcp_logger_read_top.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/tcp_logger_record_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/tcp_logger_record_datap.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/tcp_logger_record_top.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/tcp_logger_wrap.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/tcp_log_replay.sv +/home/mgiordan/apiary/network_tiles/tcp/logger/tcp_logger_param_checker.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_tcp_logger-pyhp_generate_0.1-b1d809f140ea78acbb644c56b80276ff3d3e614ec028224894323bdbe4fb2f8d/tcp_logger_tile_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_tcp_logger-pyhp_generate_0.1-b1d809f140ea78acbb644c56b80276ff3d3e614ec028224894323bdbe4fb2f8d/tcp_log_replay_tile_gen.sv +/home/mgiordan/apiary/util/logging/include/tracker_pkg.sv +/home/mgiordan/apiary/util/logging/tracker_read.sv +/home/mgiordan/apiary/util/logging/tracker_read_ctrl.sv +/home/mgiordan/apiary/util/logging/tracker_read_datap.sv +/home/mgiordan/apiary/util/logging/tracker_record_ctrl.sv +/home/mgiordan/apiary/util/logging/tracker_record_datap.sv +/home/mgiordan/apiary/util/logging/tracker_top.sv +/home/mgiordan/apiary/network_tiles/eth/include/eth_latency_stats_pkg.sv +/home/mgiordan/apiary/network_tiles/eth/eth_latency_stats.sv +/home/mgiordan/apiary/network_tiles/eth/eth_latency_stats_record.sv +/home/mgiordan/apiary/network_tiles/dram/masked_mem_controller_rd_pipe.sv +/home/mgiordan/apiary/network_tiles/dram/masked_mem_rd_pipe_ctrl.sv +/home/mgiordan/apiary/network_tiles/dram/masked_mem_rd_pipe_datap.sv +/home/mgiordan/apiary/network_tiles/dram/masked_mem_rd_pipe_in_ctrl.sv +/home/mgiordan/apiary/network_tiles/dram/masked_mem_rd_pipe_out_ctrl.sv +/home/mgiordan/apiary/network_tiles/dram/masked_mem_wr_ctrl.sv +/home/mgiordan/apiary/network_tiles/dram/masked_mem_wrap_valrdy.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/include/open_loop_pkg.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/include/rx_open_loop_pkg.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/include/setup_open_loop_pkg.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/include/tx_open_loop_pkg.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/new_flow_notif.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/open_loop_app_wrap.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/rx_engine.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/rx_engine_ctrl.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/rx_engine_datap.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/setup_handler.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/setup_handler_ctrl.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/setup_handler_datap.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/tx_engine.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/tx_engine_ctrl.sv +/home/mgiordan/apiary/apps/tcp_apps/open_loop_app/tx_engine_datap.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_tcp_open_loop_app-pyhp_generate_0.1-e387fc73f5f5e41b188ac0df420d125c7f207e295c58e57fe76ab3788990d8cb/open_loop_tile_gen.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/include/ip_hdr_assembler_pkg.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/include/ip_stream_format_pkg.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/eth_frame_format.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/eth_hdrtostream.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/eth_hdr_assembler.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_stream_format.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_stream_format_pipe.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_stream_format_pipe_in.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_stream_format_pipe_out.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_header_assembler.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_hdr_assembler_pipe.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_hdr_assembler_pipe_in.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_hdr_assembler_pipe_out.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_to_mac.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_to_ethstream.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/ip_rx_chksum_calc_wrap.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/udp_to_stream.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/udp_stream_format.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/udp_tx_chksum_input_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/udp_tx_chksum_output_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/udp_rx_chksum_input_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/udp_rx_chksum_output_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/chksum_calc.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/frontend_tx_chksum_engine.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/frontend_tx_payload_engine.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/tcp_tx_chksum_input_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/tcp_tx_chksum_output_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/rx_tcp_format_wrap.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/rx_tcp_format_input_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/rx_tcp_format_output_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/frontend/tcp_to_stream.sv +/home/mgiordan/apiary/protocols/tcp_hw/recv_pipe/rx_payload_store_buf_cp.sv +/home/mgiordan/apiary/protocols/tcp_hw/recv_pipe/rx_payload_store_buf_cp_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/recv_pipe/rx_payload_store_buf_cp_datapath.sv +/home/mgiordan/apiary/protocols/tcp_hw/recv_pipe/tcp_tmp_rx_buf_ctrl.sv +/home/mgiordan/apiary/protocols/tcp_hw/recv_pipe/tcp_tmp_rx_buf_datapath.sv +/home/mgiordan/apiary/protocols/tcp_hw/recv_pipe/tcp_tmp_rx_buf_wrap.sv +/home/mgiordan/apiary/network_tiles/eth/include/eth_rx_tile_pkg.sv +/home/mgiordan/apiary/network_tiles/eth/include/eth_tx_tile_pkg.sv +/home/mgiordan/apiary/network_tiles/eth/eth_rx_noc_out_copy.sv +/home/mgiordan/apiary/network_tiles/eth/eth_rx_noc_out_ctrl.sv +/home/mgiordan/apiary/network_tiles/eth/eth_rx_noc_out_datap.sv +/home/mgiordan/apiary/network_tiles/eth/eth_rx_noc_in.sv +/home/mgiordan/apiary/network_tiles/eth/eth_tx_noc_in.sv +/home/mgiordan/apiary/network_tiles/eth/eth_tx_noc_in_ctrl.sv +/home/mgiordan/apiary/network_tiles/eth/eth_tx_noc_in_datap.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_eth-pyhp_generate_0.1-4691fafb71ecdd9f5c692a40851f7be424f9ee3079d535cc8967bf5771fcf085/eth_rx_out_cam_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_eth-pyhp_generate_0.1-4691fafb71ecdd9f5c692a40851f7be424f9ee3079d535cc8967bf5771fcf085/eth_rx_out_cam_multi_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_eth-pyhp_generate_0.1-4691fafb71ecdd9f5c692a40851f7be424f9ee3079d535cc8967bf5771fcf085/eth_rx_tile_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_eth-pyhp_generate_0.1-4691fafb71ecdd9f5c692a40851f7be424f9ee3079d535cc8967bf5771fcf085/eth_tx_tile_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_eth-pyhp_generate_0.1-4691fafb71ecdd9f5c692a40851f7be424f9ee3079d535cc8967bf5771fcf085/eth_rx_hash_table_init_rom_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_eth-pyhp_generate_0.1-4691fafb71ecdd9f5c692a40851f7be424f9ee3079d535cc8967bf5771fcf085/eth_rx_lb_out_gen.sv +/home/mgiordan/apiary/network_tiles/ip/include/ip_rx_tile_pkg.sv +/home/mgiordan/apiary/network_tiles/ip/include/ip_tx_tile_pkg.sv +/home/mgiordan/apiary/network_tiles/ip/ip_rx_noc_in.sv +/home/mgiordan/apiary/network_tiles/ip/ip_rx_noc_in_ctrl.sv +/home/mgiordan/apiary/network_tiles/ip/ip_rx_noc_in_datap.sv +/home/mgiordan/apiary/network_tiles/ip/ip_rx_noc_out.sv +/home/mgiordan/apiary/network_tiles/ip/ip_rx_noc_out_copy.sv +/home/mgiordan/apiary/network_tiles/ip/ip_rx_noc_out_ctrl.sv +/home/mgiordan/apiary/network_tiles/ip/ip_rx_noc_out_datap.sv +/home/mgiordan/apiary/network_tiles/ip/ip_tx_noc_in.sv +/home/mgiordan/apiary/network_tiles/ip/ip_tx_noc_in_ctrl.sv +/home/mgiordan/apiary/network_tiles/ip/ip_tx_noc_in_datap.sv +/home/mgiordan/apiary/network_tiles/ip/ip_tx_noc_out.sv +/home/mgiordan/apiary/network_tiles/ip/ip_tx_noc_out_ctrl.sv +/home/mgiordan/apiary/network_tiles/ip/ip_tx_noc_out_datap.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_ip-pyhp_generate_0.1-5ae9207ba894953e095e96316b3d10d08111f307a8218b26bc20b1511fe6be67/ip_rx_out_cam_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_ip-pyhp_generate_0.1-5ae9207ba894953e095e96316b3d10d08111f307a8218b26bc20b1511fe6be67/ip_rx_out_cam_multi_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_ip-pyhp_generate_0.1-5ae9207ba894953e095e96316b3d10d08111f307a8218b26bc20b1511fe6be67/ip_rx_hash_table_init_rom_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_ip-pyhp_generate_0.1-5ae9207ba894953e095e96316b3d10d08111f307a8218b26bc20b1511fe6be67/ip_rx_tile_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_ip-pyhp_generate_0.1-5ae9207ba894953e095e96316b3d10d08111f307a8218b26bc20b1511fe6be67/ip_tx_tile_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_ip-pyhp_generate_0.1-5ae9207ba894953e095e96316b3d10d08111f307a8218b26bc20b1511fe6be67/ip_tx_noc_out_copy_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_ip-pyhp_generate_0.1-5ae9207ba894953e095e96316b3d10d08111f307a8218b26bc20b1511fe6be67/ip_rx_lb_out_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_ip-pyhp_generate_0.1-5ae9207ba894953e095e96316b3d10d08111f307a8218b26bc20b1511fe6be67/ip_tx_lb_out_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_ip-pyhp_generate_0.1-5ae9207ba894953e095e96316b3d10d08111f307a8218b26bc20b1511fe6be67/ip_tx_hash_table_init_rom_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_mem_controller-pyhp_generate_0-c8a4bb01a362447064bb4dd2ec6e9032737cd645e2d99ebcfca0ce3b4e43687b/masked_mem_tile_gen.sv +/home/mgiordan/apiary/network_tiles/tcp/include/tcp_rx_tile_pkg.sv +/home/mgiordan/apiary/network_tiles/tcp/include/tcp_tx_tile_pkg.sv +/home/mgiordan/apiary/network_tiles/tcp/include/tcp_msg_poller_pkg.sv +/home/mgiordan/apiary/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_app_notif.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_app_notif_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_app_notif_datap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_msg_poller.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_msg_poller_meta.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_msg_poller_meta_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_msg_poller_meta_datap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_msg_ptr_poller.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_app_if_wrap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_msg_noc_if.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_msg_noc_if_in.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_msg_noc_if_in_datap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_msg_noc_if_out.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_msg_noc_if_out_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_noc_in.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_noc_in_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_rx_noc_in_datap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_tx_app_if_wrap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_tx_msg_noc_if.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_tx_msg_noc_if_in.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_tx_msg_noc_if_in_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_tx_msg_noc_if_in_datap.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_tx_msg_noc_if_out.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_tx_msg_noc_if_out_ctrl.sv +/home/mgiordan/apiary/network_tiles/tcp/tcp_tx_msg_noc_if_out_datap.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_tcp_slow-pyhp_generate_0.1-32efb5cd683a50446946f1ca1e039c85f88a55b4c18fa46878a1cb0fae626483/tcp_app_notif_cam_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_tcp_slow-pyhp_generate_0.1-32efb5cd683a50446946f1ca1e039c85f88a55b4c18fa46878a1cb0fae626483/tcp_rx_tile_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_tcp_slow-pyhp_generate_0.1-32efb5cd683a50446946f1ca1e039c85f88a55b4c18fa46878a1cb0fae626483/tcp_tx_tile_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_tcp_slow-pyhp_generate_0.1-32efb5cd683a50446946f1ca1e039c85f88a55b4c18fa46878a1cb0fae626483/tcp_tile_wrap_gen.sv +/home/mgiordan/apiary/network_tiles/udp/include/udp_rx_tile_pkg.sv +/home/mgiordan/apiary/network_tiles/udp/include/udp_tx_tile_pkg.sv +/home/mgiordan/apiary/network_tiles/udp/udp_rx_noc_in.sv +/home/mgiordan/apiary/network_tiles/udp/udp_rx_noc_in_ctrl.sv +/home/mgiordan/apiary/network_tiles/udp/udp_rx_noc_in_datap.sv +/home/mgiordan/apiary/network_tiles/udp/udp_rx_noc_out.sv +/home/mgiordan/apiary/network_tiles/udp/udp_rx_noc_out_copy.sv +/home/mgiordan/apiary/network_tiles/udp/udp_rx_noc_out_ctrl.sv +/home/mgiordan/apiary/network_tiles/udp/udp_rx_noc_out_datap.sv +/home/mgiordan/apiary/network_tiles/udp/udp_rx_out_steer.sv +/home/mgiordan/apiary/network_tiles/udp/udp_tx_noc_in.sv +/home/mgiordan/apiary/network_tiles/udp/udp_tx_noc_in_ctrl.sv +/home/mgiordan/apiary/network_tiles/udp/udp_tx_noc_in_datap.sv +/home/mgiordan/apiary/network_tiles/udp/udp_tx_noc_out.sv +/home/mgiordan/apiary/network_tiles/udp/udp_tx_noc_out_ctrl.sv +/home/mgiordan/apiary/network_tiles/udp/udp_tx_noc_out_datap.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_udp-pyhp_generate_0.1-9b31145dcf7dcf1347e8d4a0979323ba5e0a5b1acba494e71b4a1177b336588c/udp_rx_out_cam_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_udp-pyhp_generate_0.1-9b31145dcf7dcf1347e8d4a0979323ba5e0a5b1acba494e71b4a1177b336588c/udp_rx_out_cam_multi_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_udp-pyhp_generate_0.1-9b31145dcf7dcf1347e8d4a0979323ba5e0a5b1acba494e71b4a1177b336588c/udp_tx_noc_out_copy_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_udp-pyhp_generate_0.1-9b31145dcf7dcf1347e8d4a0979323ba5e0a5b1acba494e71b4a1177b336588c/udp_rx_tile_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_udp-pyhp_generate_0.1-9b31145dcf7dcf1347e8d4a0979323ba5e0a5b1acba494e71b4a1177b336588c/udp_tx_tile_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_udp-pyhp_generate_0.1-9b31145dcf7dcf1347e8d4a0979323ba5e0a5b1acba494e71b4a1177b336588c/udp_tx_lb_out_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_udp-pyhp_generate_0.1-9b31145dcf7dcf1347e8d4a0979323ba5e0a5b1acba494e71b4a1177b336588c/udp_tx_hash_table_init_rom_gen.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/tb_tcp_open_loop_top.sv +/home/mgiordan/apiary/sample_designs/tcp_open_loop/build/uwcse_beehive_tcp_open_loop_0.1/sim-modelsim/generator_cache/uwcse_beehive_tcp_open_loop-pyhp_generate_0.1-365ad0bd64385ca67128d4a878107931824c0260ea4be0d6432a8cbcea38b735/tcp_open_loop_top_gen.sv From b9dff448d18ab9e1b86897827dccece98a1d3beb Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Fri, 31 Jan 2025 18:29:08 -0800 Subject: [PATCH 11/13] hookup missing wire, bugfixes --- include/beehive_tcp_msg.sv | 31 +++++++++-------- .../tcp/beehive_tcp_slow_engine_wrap.sv | 18 ++++++++++ network_tiles/tcp/tcp_msg_poller.sv | 34 ++++++++++++------- network_tiles/tcp/tcp_msg_ptr_poller.sv | 4 +-- network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv | 16 +++++---- network_tiles/tcp/tcp_msg_ptr_poller_datap.sv | 2 +- network_tiles/tcp/tcp_rx_app_if_wrap.sv | 20 ++++++++++- network_tiles/tcp/tcp_rx_tile_gen.sv.pyv | 18 ++++++++++ network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv | 26 ++++++++++++++ protocols/tcp_slow | 2 +- 10 files changed, 134 insertions(+), 37 deletions(-) diff --git a/include/beehive_tcp_msg.sv b/include/beehive_tcp_msg.sv index 79b7732..b994a72 100644 --- a/include/beehive_tcp_msg.sv +++ b/include/beehive_tcp_msg.sv @@ -27,6 +27,7 @@ package beehive_tcp_msg; localparam MAX_PAYLOAD_PTR_W = 32; localparam MAX_NUM_BUFS = 8; // i think 8 buffers per flow is enough... who knows?. this is per flow. localparam MAX_PAYLOAD_IDX_W = $clog2(MAX_NUM_BUFS); + localparam RX_PAYLOAD_IDX_W = MAX_PAYLOAD_IDX_W; // TODO: what to do about these ptr type lengths being longer than the real ones used? do i need to declare 2 types now, one for the one in the pkt and one for the one here? // TODO: convert sram write req stuff (e.g. store buf commit ptr rd req) all to idx instead. but what type/bit width? @@ -55,24 +56,25 @@ package beehive_tcp_msg; // } tcp_buf_update; // localparam TCP_BUF_UPDATE_W = $bits(tcp_buf_update); +// has to be sorted biggest to smallest to make padding calculation work + typedef struct packed { + // tcp_buf_update update_info; + tcp_buf_with_idx old_buf; + } tcp_adjust_idx; + localparam TCP_ADJUST_IDX_W = $bits(tcp_adjust_idx); + typedef struct packed { logic [MAX_PAYLOAD_PTR_W:0] __length; // unused at the moment, we just return 1 buf unilaterally (bc we can't return more than 1 yet.) - logic [TCP_ADJUST_IDX_W-MAX_PAYLOAD_PTR_W-1:0] padding; + logic [TCP_ADJUST_IDX_W-MAX_PAYLOAD_PTR_W-2:0] padding; } tcp_msg_req; localparam TCP_MSG_REQ_W = $bits(tcp_msg_req); typedef struct packed { - tcp_buf_with_idx buf; + tcp_buf_with_idx resp_buf; // logic [TCP_ADJUST_IDX_W-TCP_BUF_WITH_IDX_W-1:0] padding; } tcp_msg_resp; localparam TCP_MSG_RESP_W = $bits(tcp_msg_resp); - typedef struct packed { - // tcp_buf_update update_info; - tcp_buf_with_idx old_buf; - } tcp_adjust_idx; - localparam TCP_ADJUST_IDX_W = $bits(tcp_adjust_idx); - // problem: what does the mechanism to update a ptr look like? ideally it would be incr(amt), but that requires a rd req to first read it and then update. // maybe incr(amt, old_data)? then the tcp_slow module adds amt to old.ptr, if it's > len, it will know to incr idx. and for now assert that it should always be == len. // that's the most flexible interface bc if we just had idx_update_req then it wouldn't support compaction, if we just did ptr_update_to then it wouldn't really be what it's doing @@ -80,14 +82,15 @@ package beehive_tcp_msg; // TODO: update tcp.sv interface to have ptr reads and writes be the right way // this is a TCP specific NoC flit + typedef union packed { + tcp_msg_req tcp_msg_req; + tcp_msg_resp tcp_msg_resp; + tcp_adjust_idx tcp_adjust_idx; + } msg_specific; + typedef struct packed { logic [MAX_FLOWID_W-1:0] flowid; - union packed { - // TODO: probably change these into the struct type... not logic - tcp_msg_req tcp_msg_req; - tcp_msg_resp tcp_msg_resp; - tcp_adjust_idx tcp_adjust_idx; - } msg_specific; + msg_specific msg_specific; } tcp_flit_inner; localparam TCP_FLIT_INNER_W = $bits(tcp_flit_inner); diff --git a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv index 17fedfe..4a0db8f 100644 --- a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv +++ b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv @@ -117,6 +117,15 @@ import packet_struct_pkg::*; ,input sched_cmd_struct app_sched_update_cmd ,output logic sched_app_update_rdy + ,input logic app_rx_head_buf_rd_req_val + ,input logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid + ,input logic [POLLER_IDX_W-1:0] app_rx_head_buf_rd_req_idx + ,output logic rx_head_buf_app_rd_req_rdy + + ,output logic rx_head_buf_app_rd_resp_val + ,output tcp_buf rx_head_buf_app_rd_resp_data + ,input logic app_rx_head_buf_rd_resp_rdy + ,input rx_store_buf_rx_buf_store_rd_req_val ,input [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid ,input [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx @@ -247,6 +256,15 @@ import packet_struct_pkg::*; ,.app_sched_update_val (app_sched_update_val ) ,.app_sched_update_cmd (app_sched_update_cmd ) ,.sched_app_update_rdy (sched_app_update_rdy ) + + ,.app_rx_head_buf_rd_req_val (app_rx_head_buf_rd_req_val ) + ,.app_rx_head_buf_rd_req_flowid (app_rx_head_buf_rd_req_flowid ) + ,.app_rx_head_buf_rd_req_idx (app_rx_head_buf_rd_req_idx ) + ,.rx_head_buf_app_rd_req_rdy (rx_head_buf_app_rd_req_rdy ) + + ,.rx_head_buf_app_rd_resp_val (rx_head_buf_app_rd_resp_val ) + ,.rx_head_buf_app_rd_resp_data (rx_head_buf_app_rd_resp_data ) + ,.app_rx_head_buf_rd_resp_rdy (app_rx_head_buf_rd_resp_rdy ) ,.rx_store_buf_rx_buf_store_rd_req_val(rx_store_buf_rx_buf_store_rd_req_val) ,.rx_store_buf_rx_buf_store_rd_req_flowid(rx_store_buf_rx_buf_store_rd_req_flowid) diff --git a/network_tiles/tcp/tcp_msg_poller.sv b/network_tiles/tcp/tcp_msg_poller.sv index f77f9ff..fa667c8 100644 --- a/network_tiles/tcp/tcp_msg_poller.sv +++ b/network_tiles/tcp/tcp_msg_poller.sv @@ -187,6 +187,7 @@ module tcp_msg_poller #( tcp_msg_ptr_poller #( .CHK_SPACE_EMPTY (CHK_SPACE_EMPTY) + ,.POLLER_PTR_W (POLLER_PTR_W ) ,.POLLER_IDX_W (POLLER_IDX_W ) ) ptr_poller ( .clk (clk ) @@ -221,20 +222,29 @@ module tcp_msg_poller #( ,.poller_msg_dst_dst_fbits (poller_msg_dst_dst_fbits ) ,.dst_poller_msg_meta_rdy (dst_poller_msg_meta_rdy ) - ,.app_base_ptr_rd_req_val (app_base_ptr_rd_req_val ) - ,.app_base_ptr_rd_req_addr (app_base_ptr_rd_req_addr ) - ,.base_ptr_app_rd_req_rdy (base_ptr_app_rd_req_rdy ) + ,.app_base_idx_rd_req_val (app_base_idx_rd_req_val ) + ,.app_base_idx_rd_req_addr (app_base_idx_rd_req_addr ) + ,.base_idx_app_rd_req_rdy (base_idx_app_rd_req_rdy ) - ,.base_ptr_app_rd_resp_val (base_ptr_app_rd_resp_val ) - ,.base_ptr_app_rd_resp_data (base_ptr_app_rd_resp_data ) - ,.app_base_ptr_rd_resp_rdy (app_base_ptr_rd_resp_rdy ) + ,.base_idx_app_rd_resp_val (base_idx_app_rd_resp_val ) + ,.base_idx_app_rd_resp_data (base_idx_app_rd_resp_data ) + ,.app_base_idx_rd_resp_rdy (app_base_idx_rd_resp_rdy ) - ,.app_end_ptr_rd_req_val (app_end_ptr_rd_req_val ) - ,.app_end_ptr_rd_req_addr (app_end_ptr_rd_req_addr ) - ,.end_ptr_app_rd_req_rdy (end_ptr_app_rd_req_rdy ) + ,.app_end_idx_rd_req_val (app_end_idx_rd_req_val ) + ,.app_end_idx_rd_req_addr (app_end_idx_rd_req_addr ) + ,.end_idx_app_rd_req_rdy (end_idx_app_rd_req_rdy ) - ,.end_ptr_app_rd_resp_val (end_ptr_app_rd_resp_val ) - ,.end_ptr_app_rd_resp_data (end_ptr_app_rd_resp_data ) - ,.app_end_ptr_rd_resp_rdy (app_end_ptr_rd_resp_rdy ) + ,.end_idx_app_rd_resp_val (end_idx_app_rd_resp_val ) + ,.end_idx_app_rd_resp_data (end_idx_app_rd_resp_data ) + ,.app_end_idx_rd_resp_rdy (app_end_idx_rd_resp_rdy ) + + ,.app_base_buf_rd_req_val (app_base_buf_rd_req_val ) + ,.app_base_buf_rd_req_flowid (app_base_buf_rd_req_flowid ) + ,.app_base_buf_rd_req_idx (app_base_buf_rd_req_idx ) + ,.base_buf_app_rd_req_rdy (base_buf_app_rd_req_rdy ) + + ,.base_buf_app_rd_resp_val (base_buf_app_rd_resp_val ) + ,.base_buf_app_rd_resp_data (base_buf_app_rd_resp_data ) + ,.app_base_buf_rd_resp_rdy (app_base_buf_rd_resp_rdy ) ); endmodule diff --git a/network_tiles/tcp/tcp_msg_ptr_poller.sv b/network_tiles/tcp/tcp_msg_ptr_poller.sv index 1fa1050..5132b2d 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller.sv @@ -2,7 +2,7 @@ module tcp_msg_ptr_poller #( parameter CHK_SPACE_EMPTY = 0 ,parameter POLLER_IDX_W = 0 - // ,parameter POLLER_PTR_W = 0 + ,parameter POLLER_PTR_W = 0 )( input clk ,input rst @@ -118,7 +118,7 @@ module tcp_msg_ptr_poller #( tcp_msg_ptr_poller_datap #( .CHK_SPACE_EMPTY (CHK_SPACE_EMPTY) - // ,.POLLER_PTR_W (POLLER_PTR_W ) + ,.POLLER_PTR_W (POLLER_PTR_W ) ,.POLLER_IDX_W (POLLER_IDX_W ) ) datap ( .clk (clk ) diff --git a/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv b/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv index 358b448..9d55eac 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller_ctrl.sv @@ -52,8 +52,8 @@ module tcp_msg_ptr_poller_ctrl #( CALC = 3'd3, REQUEUE_FLOW = 3'd4, SEND_NOTIF = 3'd5, - BUF_STORE_REQ = 3'd6; - BUF_STORE_RESP = 3'd7; + BUF_STORE_REQ = 3'd6, + BUF_STORE_RESP = 3'd7, UND = 'X } state_e; @@ -81,6 +81,8 @@ module tcp_msg_ptr_poller_ctrl #( app_base_idx_rd_resp_rdy = 1'b0; app_end_idx_rd_resp_rdy = 1'b0; + app_base_buf_rd_req_val = 1'b0; + app_base_buf_rd_resp_rdy = 1'b0; poll_ctrl_msg_req_mem_rd_resp_rdy = 1'b0; ctrl_data_store_req_data = 1'b0; @@ -145,16 +147,16 @@ module tcp_msg_ptr_poller_ctrl #( end end BUF_STORE_REQ: begin - rx_store_buf_rx_buf_store_rd_req_val = 1'b1; + app_base_buf_rd_req_val = 1'b1; // the idx is stored in datapath during this state. - if (rx_buf_store_rx_store_buf_rd_req_rdy) begin + if (base_buf_app_rd_req_rdy) begin state_next = BUF_STORE_RESP; end end BUF_STORE_RESP: begin - rx_store_buf_rx_buf_store_rd_resp_rdy = 1'b1; + base_buf_app_rd_resp_val = 1'b1; - if (rx_buf_store_rx_store_buf_rd_resp_val) begin + if (app_base_buf_rd_resp_rdy) begin ctrl_data_store_buf = 1'b1; state_next = SEND_NOTIF; end @@ -181,6 +183,8 @@ module tcp_msg_ptr_poller_ctrl #( app_base_idx_rd_resp_rdy = 'X; app_end_idx_rd_resp_rdy = 'X; + app_base_buf_rd_req_val = 'X; + app_base_buf_rd_resp_rdy = 'X; poll_ctrl_msg_req_mem_rd_resp_rdy = 'X; ctrl_data_store_req_data = 'X; diff --git a/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv b/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv index a9f770c..3dcdafd 100644 --- a/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv +++ b/network_tiles/tcp/tcp_msg_ptr_poller_datap.sv @@ -1,7 +1,7 @@ `include "tcp_msg_poller_defs.svh" module tcp_msg_ptr_poller_datap #( parameter CHK_SPACE_EMPTY = 0 - // ,parameter POLLER_PTR_W = 0 + ,parameter POLLER_PTR_W = 0 ,parameter POLLER_IDX_W = 0 )( input clk diff --git a/network_tiles/tcp/tcp_rx_app_if_wrap.sv b/network_tiles/tcp/tcp_rx_app_if_wrap.sv index 977b304..3c9cb7f 100644 --- a/network_tiles/tcp/tcp_rx_app_if_wrap.sv +++ b/network_tiles/tcp/tcp_rx_app_if_wrap.sv @@ -50,6 +50,15 @@ module tcp_rx_app_if_wrap ,output logic [RX_PAYLOAD_PTR_W-1:0] app_rx_free_req_addr ,output logic [MALLOC_LEN_W-1:0] app_rx_free_req_len ,input logic rx_free_app_req_rdy + + ,output logic app_rx_head_buf_rd_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid + ,output logic [POLLER_IDX_W-1:0] app_rx_head_buf_rd_req_idx + ,input logic rx_head_buf_app_rd_req_rdy + + ,input logic rx_head_buf_app_rd_resp_val + ,input tcp_buf rx_head_buf_app_rd_resp_data + ,output logic app_rx_head_buf_rd_resp_rdy ); logic noc_if_poller_msg_req_val; @@ -129,7 +138,7 @@ module tcp_rx_app_if_wrap tcp_msg_poller #( .CHK_SPACE_EMPTY (0) - ,.POLLER_PTR_W (RX_PAYLOAD_PTR_W ) // TODO adjust TX + ,.POLLER_PTR_W (RX_PAYLOAD_PTR_W ) ,.POLLER_IDX_W (RX_PAYLOAD_IDX_W ) ) msg_poller ( .clk (clk ) @@ -168,6 +177,15 @@ module tcp_rx_app_if_wrap ,.end_idx_app_rd_resp_val (rx_commit_idx_app_rd_resp_val ) ,.end_idx_app_rd_resp_data (rx_commit_idx_app_rd_resp_data ) ,.app_end_idx_rd_resp_rdy (app_rx_commit_idx_rd_resp_rdy ) + + ,.app_base_buf_rd_req_val (app_rx_head_buf_rd_req_val ) // TODO for tx + ,.app_base_buf_rd_req_flowid(app_rx_head_buf_rd_req_flowid ) + ,.app_base_buf_rd_req_idx (app_rx_head_buf_rd_req_idx ) + ,.base_buf_app_rd_req_rdy (rx_head_buf_app_rd_req_rdy ) + + ,.base_buf_app_rd_resp_val (rx_head_buf_app_rd_resp_val ) + ,.base_buf_app_rd_resp_data (rx_head_buf_app_rd_resp_data ) + ,.app_base_buf_rd_resp_rdy (app_rx_head_buf_rd_resp_rdy ) ); endmodule diff --git a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv index c74470e..cca191d 100644 --- a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv +++ b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv @@ -103,6 +103,15 @@ import tcp_pkg::*; ,output logic [MALLOC_LEN_W-1:0] app_rx_free_req_len ,input logic rx_free_app_req_rdy + ,output logic app_rx_head_buf_rd_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid + ,output logic [POLLER_IDX_W-1:0] app_rx_head_buf_rd_req_idx + ,input logic rx_head_buf_app_rd_req_rdy + + ,input logic rx_head_buf_app_rd_resp_val + ,input tcp_buf rx_head_buf_app_rd_resp_data + ,output logic app_rx_head_buf_rd_resp_rdy + ,output rx_store_buf_rx_buf_store_rd_req_val ,output [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid ,output [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx @@ -627,5 +636,14 @@ print(router_wires) ,.app_rx_free_req_addr (app_rx_free_req_addr ) ,.app_rx_free_req_len (app_rx_free_req_len ) ,.rx_free_app_req_rdy (rx_free_app_req_rdy ) + + ,.app_rx_head_buf_rd_req_val (app_rx_head_buf_rd_req_val ) + ,.app_rx_head_buf_rd_req_flowid (app_rx_head_buf_rd_req_flowid ) + ,.app_rx_head_buf_rd_req_idx (app_rx_head_buf_rd_req_idx ) + ,.rx_head_buf_app_rd_req_rdy (rx_head_buf_app_rd_req_rdy ) + + ,.rx_head_buf_app_rd_resp_val (rx_head_buf_app_rd_resp_val ) + ,.rx_head_buf_app_rd_resp_data (rx_head_buf_app_rd_resp_data ) + ,.app_rx_head_buf_rd_resp_rdy (app_rx_head_buf_rd_resp_rdy ) ); endmodule diff --git a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv index 2744df3..4440821 100644 --- a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv +++ b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv @@ -155,6 +155,15 @@ import tcp_misc_pkg::*; logic [MALLOC_LEN_W-1:0] app_rx_free_req_len; logic rx_free_app_req_rdy; + logic app_rx_head_buf_rd_req_val + logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid + logic [POLLER_IDX_W-1:0] app_rx_head_buf_rd_req_idx + logic rx_head_buf_app_rd_req_rdy + + logic rx_head_buf_app_rd_resp_val + tcp_buf rx_head_buf_app_rd_resp_data + logic app_rx_head_buf_rd_resp_rdy + logic rx_store_buf_rx_buf_store_rd_req_val logic [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid logic [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx @@ -253,6 +262,15 @@ import tcp_misc_pkg::*; ,.app_rx_free_req_len (app_rx_free_req_len ) ,.rx_free_app_req_rdy (rx_free_app_req_rdy ) + ,.app_rx_head_buf_rd_req_val (app_rx_head_buf_rd_req_val ) + ,.app_rx_head_buf_rd_req_flowid (app_rx_head_buf_rd_req_flowid ) + ,.app_rx_head_buf_rd_req_idx (app_rx_head_buf_rd_req_idx ) + ,.rx_head_buf_app_rd_req_rdy (rx_head_buf_app_rd_req_rdy ) + + ,.rx_head_buf_app_rd_resp_val (rx_head_buf_app_rd_resp_val ) + ,.rx_head_buf_app_rd_resp_data (rx_head_buf_app_rd_resp_data ) + ,.app_rx_head_buf_rd_resp_rdy (app_rx_head_buf_rd_resp_rdy ) + ,.rx_store_buf_rx_buf_store_rd_req_val (rx_store_buf_rx_buf_store_rd_req_val ) ,.rx_store_buf_rx_buf_store_rd_req_flowid (rx_store_buf_rx_buf_store_rd_req_flowid ) ,.rx_store_buf_rx_buf_store_rd_req_idx (rx_store_buf_rx_buf_store_rd_req_idx ) @@ -379,6 +397,14 @@ import tcp_misc_pkg::*; ,.app_sched_update_cmd (app_sched_update_cmd ) ,.sched_app_update_rdy (sched_app_update_rdy ) + ,.app_rx_head_buf_rd_req_val (app_rx_head_buf_rd_req_val ) + ,.app_rx_head_buf_rd_req_flowid (app_rx_head_buf_rd_req_flowid ) + ,.app_rx_head_buf_rd_req_idx (app_rx_head_buf_rd_req_idx ) + ,.rx_head_buf_app_rd_req_rdy (rx_head_buf_app_rd_req_rdy ) + + ,.rx_head_buf_app_rd_resp_val (rx_head_buf_app_rd_resp_val ) + ,.rx_head_buf_app_rd_resp_data (rx_head_buf_app_rd_resp_data ) + ,.app_rx_head_buf_rd_resp_rdy (app_rx_head_buf_rd_resp_rdy ) ,.rx_store_buf_rx_buf_store_rd_req_val(rx_store_buf_rx_buf_store_rd_req_val) ,.rx_store_buf_rx_buf_store_rd_req_flowid(rx_store_buf_rx_buf_store_rd_req_flowid) diff --git a/protocols/tcp_slow b/protocols/tcp_slow index 704cc35..9023f3f 160000 --- a/protocols/tcp_slow +++ b/protocols/tcp_slow @@ -1 +1 @@ -Subproject commit 704cc35bff7373c9b206d6c8fa9ecc174761bff4 +Subproject commit 9023f3f13dbf0d719ef5064f14f0aa63a78dc4ff From b9aa80f1c0d15d9353657c1a2c673ec3a94422d3 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Fri, 31 Jan 2025 18:37:19 -0800 Subject: [PATCH 12/13] compiles! --- .../tcp/beehive_tcp_slow_engine_wrap.sv | 2 +- network_tiles/tcp/tcp_rx_app_if_wrap.sv | 2 +- .../tcp/tcp_rx_msg_noc_if_in_ctrl.sv | 8 ++--- .../tcp/tcp_rx_msg_noc_if_out_datap.sv | 10 +----- network_tiles/tcp/tcp_rx_tile_gen.sv.pyv | 2 +- network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv | 34 +++++++++---------- protocols/tcp_slow | 2 +- .../tcp_open_loop/tcp_open_loop.flist | 16 ++++----- 8 files changed, 34 insertions(+), 42 deletions(-) diff --git a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv index 4a0db8f..1c0a067 100644 --- a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv +++ b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv @@ -119,7 +119,7 @@ import packet_struct_pkg::*; ,input logic app_rx_head_buf_rd_req_val ,input logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid - ,input logic [POLLER_IDX_W-1:0] app_rx_head_buf_rd_req_idx + ,input logic [RX_PAYLOAD_IDX_W-1:0] app_rx_head_buf_rd_req_idx ,output logic rx_head_buf_app_rd_req_rdy ,output logic rx_head_buf_app_rd_resp_val diff --git a/network_tiles/tcp/tcp_rx_app_if_wrap.sv b/network_tiles/tcp/tcp_rx_app_if_wrap.sv index 3c9cb7f..1676b0e 100644 --- a/network_tiles/tcp/tcp_rx_app_if_wrap.sv +++ b/network_tiles/tcp/tcp_rx_app_if_wrap.sv @@ -53,7 +53,7 @@ module tcp_rx_app_if_wrap ,output logic app_rx_head_buf_rd_req_val ,output logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid - ,output logic [POLLER_IDX_W-1:0] app_rx_head_buf_rd_req_idx + ,output logic [RX_PAYLOAD_IDX_W-1:0] app_rx_head_buf_rd_req_idx ,input logic rx_head_buf_app_rd_req_rdy ,input logic rx_head_buf_app_rd_resp_val diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv index ace1b33..46687a2 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv @@ -13,8 +13,8 @@ module tcp_rx_msg_noc_if_in_ctrl ( ,output logic app_rx_head_idx_wr_req_val ,input logic rx_head_idx_app_wr_req_rdy - ,output logic app_rx_free_req_val, - ,input logic rx_free_app_req_rdy, + ,output logic app_rx_free_req_val + ,input logic rx_free_app_req_rdy ,output logic ctrl_datap_store_hdr_flit ); @@ -23,7 +23,7 @@ module tcp_rx_msg_noc_if_in_ctrl ( READY = 3'd0, RX_REQ_MSG = 3'd1, RX_ADJUST_PTR = 3'd2, - FREE_BUF = 3'd3; + FREE_BUF = 3'd3, UND = 'X } state_e; @@ -105,7 +105,7 @@ module tcp_rx_msg_noc_if_in_ctrl ( noc_if_poller_msg_req_val = 'X; - app_rx_head_ptr_wr_req_val = 'X; + app_rx_head_idx_wr_req_val = 'X; app_rx_free_req_val = 'X; diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv index b3314b4..6f489c2 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv @@ -80,15 +80,7 @@ module tcp_rx_msg_noc_if_out_datap #( hdr_flit_cast.core.src_fbits = TCP_RX_APP_PTR_IF_FBITS; hdr_flit_cast.inner.flowid = flowid_reg; - hdr_flit_cast.inner.msg_specific.tcp_msg_resp.buf = head_buf_reg; + hdr_flit_cast.inner.msg_specific.tcp_msg_resp.resp_buf = head_buf_reg; end endmodule - -{ -input data_ready, -output [10:0] data, -output data_valid, -} - -assign data_valid = data_ready && asdfae; \ No newline at end of file diff --git a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv index cca191d..2e590b1 100644 --- a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv +++ b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv @@ -105,7 +105,7 @@ import tcp_pkg::*; ,output logic app_rx_head_buf_rd_req_val ,output logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid - ,output logic [POLLER_IDX_W-1:0] app_rx_head_buf_rd_req_idx + ,output logic [RX_PAYLOAD_IDX_W-1:0] app_rx_head_buf_rd_req_idx ,input logic rx_head_buf_app_rd_req_rdy ,input logic rx_head_buf_app_rd_resp_val diff --git a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv index 4440821..236847f 100644 --- a/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv +++ b/network_tiles/tcp/tcp_tile_wrap_gen.sv.pyv @@ -155,23 +155,23 @@ import tcp_misc_pkg::*; logic [MALLOC_LEN_W-1:0] app_rx_free_req_len; logic rx_free_app_req_rdy; - logic app_rx_head_buf_rd_req_val - logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid - logic [POLLER_IDX_W-1:0] app_rx_head_buf_rd_req_idx - logic rx_head_buf_app_rd_req_rdy - - logic rx_head_buf_app_rd_resp_val - tcp_buf rx_head_buf_app_rd_resp_data - logic app_rx_head_buf_rd_resp_rdy - - logic rx_store_buf_rx_buf_store_rd_req_val - logic [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid - logic [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx - logic rx_buf_store_rx_store_buf_rd_req_rdy - - logic rx_buf_store_rx_store_buf_rd_resp_val - tcp_buf rx_buf_store_rx_store_buf_rd_resp_data - logic rx_store_buf_rx_buf_store_rd_resp_rdy + logic app_rx_head_buf_rd_req_val; + logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid; + logic [RX_PAYLOAD_IDX_W-1:0] app_rx_head_buf_rd_req_idx; + logic rx_head_buf_app_rd_req_rdy; + + logic rx_head_buf_app_rd_resp_val; + tcp_buf rx_head_buf_app_rd_resp_data; + logic app_rx_head_buf_rd_resp_rdy; + + logic rx_store_buf_rx_buf_store_rd_req_val; + logic [FLOWID_W-1:0] rx_store_buf_rx_buf_store_rd_req_flowid; + logic [RX_PAYLOAD_IDX_W-1:0] rx_store_buf_rx_buf_store_rd_req_idx; + logic rx_buf_store_rx_store_buf_rd_req_rdy; + + logic rx_buf_store_rx_store_buf_rd_resp_val; + tcp_buf rx_buf_store_rx_store_buf_rd_resp_data; + logic rx_store_buf_rx_buf_store_rd_resp_rdy; tcp_rx_tile #( .SRC_X (TCP_RX_SRC_X ) diff --git a/protocols/tcp_slow b/protocols/tcp_slow index 9023f3f..372de44 160000 --- a/protocols/tcp_slow +++ b/protocols/tcp_slow @@ -1 +1 @@ -Subproject commit 9023f3f13dbf0d719ef5064f14f0aa63a78dc4ff +Subproject commit 372de4444ef2ebd4e9e393d398bf5de2d3e689e0 diff --git a/sample_designs/tcp_open_loop/tcp_open_loop.flist b/sample_designs/tcp_open_loop/tcp_open_loop.flist index e0087c0..bf00f70 100644 --- a/sample_designs/tcp_open_loop/tcp_open_loop.flist +++ b/sample_designs/tcp_open_loop/tcp_open_loop.flist @@ -1,14 +1,14 @@ -+incdir+/home/mgiordan/apiary/network_tiles/dram/include -+incdir+/home/mgiordan/apiary/network_tiles/udp/include -+incdir+/home/mgiordan/apiary/util/common_noc_adapters/include -+incdir+/home/mgiordan/apiary/include -+incdir+/home/mgiordan/apiary/network_tiles/eth/include -+incdir+/home/mgiordan/apiary/network_tiles/tcp/logger/include -+incdir+/home/mgiordan/apiary/network_tiles/ip/include +incdir+/home/mgiordan/apiary/util/logging/include +incdir+/home/mgiordan/apiary/network_tiles/tcp/include -+incdir+/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/include +incdir+/home/mgiordan/apiary/protocols/tcp_hw/include/common ++incdir+/home/mgiordan/apiary/network_tiles/eth/include ++incdir+/home/mgiordan/apiary/util/common_noc_adapters/include ++incdir+/home/mgiordan/apiary/protocols/tcp_hw/basejump_files/include ++incdir+/home/mgiordan/apiary/network_tiles/ip/include ++incdir+/home/mgiordan/apiary/network_tiles/dram/include ++incdir+/home/mgiordan/apiary/network_tiles/udp/include ++incdir+/home/mgiordan/apiary/network_tiles/tcp/logger/include ++incdir+/home/mgiordan/apiary/include /home/mgiordan/apiary/include/packet_struct_pkg.sv /home/mgiordan/apiary/protocols/tcp_hw/common/packet_queue/packet_queue.sv /home/mgiordan/apiary/protocols/tcp_hw/common/packet_queue/packet_queue_controller.sv From 2ad8685ff8b0a68f00aea2e02c96e1fce32793a6 Mon Sep 17 00:00:00 2001 From: Matthew Giordano Date: Mon, 3 Feb 2025 15:03:15 -0800 Subject: [PATCH 13/13] working on testbench --- .../open_loop_app/include/open_loop_pkg.sv | 5 +++-- apps/tcp_apps/open_loop_app/rx_engine_datap.sv | 15 +++++++++------ .../tcp_apps/open_loop_app/setup_handler_datap.sv | 2 +- include/beehive_noc_msg.sv | 6 +++--- network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv | 2 +- network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv | 2 +- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/apps/tcp_apps/open_loop_app/include/open_loop_pkg.sv b/apps/tcp_apps/open_loop_app/include/open_loop_pkg.sv index eb9c8a9..386aa56 100644 --- a/apps/tcp_apps/open_loop_app/include/open_loop_pkg.sv +++ b/apps/tcp_apps/open_loop_app/include/open_loop_pkg.sv @@ -23,8 +23,9 @@ package open_loop_pkg; localparam APP_CNTXT_W = $bits(app_cntxt_struct); typedef struct packed { - logic [PAYLOAD_PTR_W:0] ptr; - logic [PAYLOAD_PTR_W:0] len; + // logic [PAYLOAD_PTR_W:0] ptr; + // logic [PAYLOAD_PTR_W:0] len; + tcp_buf_with_idx stored_buf; } notif_struct; localparam APP_NOTIF_IF_FBITS = TCP_RX_APP_NOTIF_FBITS; diff --git a/apps/tcp_apps/open_loop_app/rx_engine_datap.sv b/apps/tcp_apps/open_loop_app/rx_engine_datap.sv index c87ad3b..5c3a669 100644 --- a/apps/tcp_apps/open_loop_app/rx_engine_datap.sv +++ b/apps/tcp_apps/open_loop_app/rx_engine_datap.sv @@ -100,8 +100,9 @@ import beehive_tcp_msg::*; always_comb begin notif_next = notif_reg; if (ctrl_datap_store_notif) begin - notif_next.ptr = notif_hdr_flit_cast.inner.head_ptr; - notif_next.len = flow_cntxt_reg.bufsize; + // notif_next.ptr = notif_hdr_flit_cast.inner.head_ptr; + // notif_next.len = flow_cntxt_reg.bufsize; + notif_next.stored_buf = notif_hdr_flit_cast.inner.msg_specific.tcp_msg_resp.resp_buf; end end @@ -117,14 +118,16 @@ import beehive_tcp_msg::*; req_hdr_flit.inner.flowid = recv_q_data_reg; - req_hdr_flit.inner.length = flow_cntxt_reg.bufsize; + // req_hdr_flit.inner.length = flow_cntxt_reg.bufsize; if (ctrl_datap_out_mux_sel == PTR_UPDATE) begin - req_hdr_flit.core.msg_type = TCP_RX_ADJUST_PTR; - req_hdr_flit.inner.head_ptr = notif_reg.ptr + flow_cntxt_reg.bufsize; + req_hdr_flit.core.msg_type = TCP_RX_ADJUST_IDX; + // req_hdr_flit.inner.head_ptr = notif_reg.ptr + flow_cntxt_reg.bufsize; + req_hdr_flit.inner.msg_specific.tcp_adjust_idx.old_buf = notif_reg.stored_buf; // TODO: add notif_reg.buf end else begin - req_hdr_flit.core.msg_type = TCP_RX_MSG_REQ; + req_hdr_flit.core.msg_type = TCP_RX_MSG_REQ2; + req_hdr_flit.inner.msg_specific.tcp_msg_req.__length = 1; end end endmodule diff --git a/apps/tcp_apps/open_loop_app/setup_handler_datap.sv b/apps/tcp_apps/open_loop_app/setup_handler_datap.sv index e3eb787..e444918 100644 --- a/apps/tcp_apps/open_loop_app/setup_handler_datap.sv +++ b/apps/tcp_apps/open_loop_app/setup_handler_datap.sv @@ -182,7 +182,7 @@ import beehive_tcp_msg::*; req_hdr_flit.inner.flowid = flowid_reg; req_hdr_flit.inner.length = SETUP_HDR_BYTES; - + // TODO: same thing here if (ctrl_datap_buf_mux_sel == setup_open_loop_pkg::PTR_UPDATE) begin req_hdr_flit.core.msg_type = TCP_RX_ADJUST_PTR; req_hdr_flit.inner.head_ptr = notif_reg.ptr + SETUP_HDR_BYTES; diff --git a/include/beehive_noc_msg.sv b/include/beehive_noc_msg.sv index e40bfbd..8bed1c6 100644 --- a/include/beehive_noc_msg.sv +++ b/include/beehive_noc_msg.sv @@ -82,13 +82,13 @@ package beehive_noc_msg; localparam [`MSG_TYPE_WIDTH-1:0] IP_TX_DATAGRAM = `MSG_TYPE_WIDTH'd4; localparam [`MSG_TYPE_WIDTH-1:0] TCP_NEW_FLOW_NOTIF = `MSG_TYPE_WIDTH'd5; - localparam [`MSG_TYPE_WIDTH-1:0] TCP_RX_MSG_REQ = `MSG_TYPE_WIDTH'd6; - localparam [`MSG_TYPE_WIDTH-1:0] TCP_RX_MSG_RESP = `MSG_TYPE_WIDTH'd8; + localparam [`MSG_TYPE_WIDTH-1:0] TCP_RX_MSG_REQ2 = `MSG_TYPE_WIDTH'd6; + localparam [`MSG_TYPE_WIDTH-1:0] TCP_RX_MSG_RESP2 = `MSG_TYPE_WIDTH'd8; localparam [`MSG_TYPE_WIDTH-1:0] TCP_RX_ADJUST_IDX = `MSG_TYPE_WIDTH'd7; localparam [`MSG_TYPE_WIDTH-1:0] TCP_TX_MSG_REQ = `MSG_TYPE_WIDTH'd9; localparam [`MSG_TYPE_WIDTH-1:0] TCP_TX_MSG_RESP = `MSG_TYPE_WIDTH'd10; - localparam [`MSG_TYPE_WIDTH-1:0] TCP_TX_ADJUST_IDX = `MSG_TYPE_WIDTH'd11; + localparam [`MSG_TYPE_WIDTH-1:0] TCP_TX_ADJUST_PTR = `MSG_TYPE_WIDTH'd11; localparam [`MSG_TYPE_WIDTH-1:0] IP_REWRITE_ADJUST_TABLE = `MSG_TYPE_WIDTH'd15; diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv index 46687a2..fd59962 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_in_ctrl.sv @@ -60,7 +60,7 @@ module tcp_rx_msg_noc_if_in_ctrl ( tcp_rx_ptr_if_noc_rdy = 1'b1; ctrl_datap_store_hdr_flit = 1'b1; if (noc_tcp_rx_ptr_if_val) begin - if (hdr_flit_cast.core.core.msg_type == TCP_RX_MSG_REQ) begin + if (hdr_flit_cast.core.core.msg_type == TCP_RX_MSG_REQ2) begin state_next = RX_REQ_MSG; end else begin diff --git a/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv b/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv index 6f489c2..59f4970 100644 --- a/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv +++ b/network_tiles/tcp/tcp_rx_msg_noc_if_out_datap.sv @@ -74,7 +74,7 @@ module tcp_rx_msg_noc_if_out_datap #( hdr_flit_cast.core.dst_y_coord = dst_y_reg; hdr_flit_cast.core.dst_fbits = dst_fbits_reg; hdr_flit_cast.core.msg_len = '0; - hdr_flit_cast.core.msg_type = TCP_RX_MSG_RESP; + hdr_flit_cast.core.msg_type = TCP_RX_MSG_RESP2; hdr_flit_cast.core.src_x_coord = SRC_X[`MSG_SRC_X_WIDTH-1:0]; hdr_flit_cast.core.src_y_coord = SRC_Y[`MSG_SRC_Y_WIDTH-1:0]; hdr_flit_cast.core.src_fbits = TCP_RX_APP_PTR_IF_FBITS;