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 9bdb42d..8bed1c6 100644 --- a/include/beehive_noc_msg.sv +++ b/include/beehive_noc_msg.sv @@ -82,9 +82,9 @@ 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_ADJUST_PTR = `MSG_TYPE_WIDTH'd7; + 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; diff --git a/include/beehive_tcp_msg.sv b/include/beehive_tcp_msg.sv index 1569e56..b994a72 100644 --- a/include/beehive_tcp_msg.sv +++ b/include/beehive_tcp_msg.sv @@ -25,16 +25,76 @@ 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_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? + typedef struct packed { + logic [MAX_PAYLOAD_PTR_W-1:0] ptr; + // these need to be one bit longer to save the wrap-around bit + logic [MAX_PAYLOAD_PTR_W:0] len; + logic [MAX_PAYLOAD_PTR_W:0] cap; + } 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_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_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); + +// 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-2:0] padding; + } tcp_msg_req; + localparam TCP_MSG_REQ_W = $bits(tcp_msg_req); + + typedef struct packed { + 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); + + // 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 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; - logic [MAX_PAYLOAD_PTR_W:0] length; - // 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; + msg_specific msg_specific; } 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/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 a80980e..1c0a067 100644 --- a/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv +++ b/network_tiles/tcp/beehive_tcp_slow_engine_wrap.sv @@ -74,44 +74,66 @@ 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_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_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 ,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 [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 + ,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 + ,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; @@ -161,18 +183,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 @@ -182,27 +204,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_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_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 ) @@ -229,7 +256,24 @@ 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) + ,.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/include/tcp_msg_poller_pkg.sv b/network_tiles/tcp/include/tcp_msg_poller_pkg.sv index 697dc95..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; + 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 1fd7ae8..fa667c8 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; @@ -172,9 +183,12 @@ 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 ) + ,.POLLER_IDX_W (POLLER_IDX_W ) ) ptr_poller ( .clk (clk ) ,.rst (rst ) @@ -202,25 +216,35 @@ 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 ) ,.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_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 141b02a..5132b2d 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,36 +28,49 @@ 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 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 ,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 ( + tcp_msg_ptr_poller_ctrl #( + .CHK_SPACE_EMPTY (CHK_SPACE_EMPTY) + ) ctrl ( .clk (clk ) ,.rst (rst ) @@ -75,29 +89,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 +133,32 @@ 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_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 ) - ,.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..9d55eac 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 @@ -17,32 +19,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 +76,19 @@ 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; + 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; - ctrl_data_store_ptrs = 1'b0; + ctrl_data_store_idxs = 1'b0; ctrl_data_store_flowid = 1'b0; + ctrl_data_store_buf = 1'b0; poll_active_bitvec_clear_req_val = 1'b0; @@ -85,28 +99,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 +131,7 @@ module tcp_msg_ptr_poller_ctrl ( end CALC: begin if (data_ctrl_msg_satis) begin - state_next = SEND_NOTIF; + state_next = CHK_SPACE_EMPTY ? SEND_NOTIF : BUF_STORE_REQ; end else begin state_next = REQUEUE_FLOW; @@ -132,6 +146,21 @@ module tcp_msg_ptr_poller_ctrl ( state_next = REQUEUE_FLOW; end end + BUF_STORE_REQ: begin + app_base_buf_rd_req_val = 1'b1; + // the idx is stored in datapath during this state. + if (base_buf_app_rd_req_rdy) begin + state_next = BUF_STORE_RESP; + end + end + BUF_STORE_RESP: begin + base_buf_app_rd_resp_val = 1'b1; + + if (app_base_buf_rd_resp_rdy) 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 +178,18 @@ 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; + 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; - 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 9453017..3dcdafd 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,33 @@ 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 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 - ,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 + ,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 +50,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,40 +67,47 @@ 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_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; - 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 data_ctrl_msg_satis = buf_space_empty >= msg_req_data_reg.length; + 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.tx_length; // TODO: change to 1 when TX is done. end - else begin - assign buf_space_used = end_ptr_reg - base_ptr_reg; - assign data_ctrl_msg_satis = buf_space_used >= msg_req_data_reg.length; + else begin // RX + assign buf_space_used = end_idx_reg - base_idx_reg; + assign data_ctrl_msg_satis = buf_space_used >= 1;//msg_req_data_reg.length; end endgenerate @@ -100,11 +118,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_rx_app_if_wrap.sv b/network_tiles/tcp/tcp_rx_app_if_wrap.sv index ac4904b..1676b0e 100644 --- a/network_tiles/tcp/tcp_rx_app_if_wrap.sv +++ b/network_tiles/tcp/tcp_rx_app_if_wrap.sv @@ -25,26 +25,40 @@ 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_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 + + ,output logic app_rx_head_buf_rd_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid + ,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 + ,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; @@ -57,8 +71,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 +119,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_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_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_IDX_W (RX_PAYLOAD_IDX_W ) ) msg_poller ( .clk (clk ) ,.rst (rst ) @@ -136,28 +154,38 @@ 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 ) + + ,.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_msg_noc_if.sv b/network_tiles/tcp/tcp_rx_msg_noc_if.sv index 370917f..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_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_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_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_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 acc69dc..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_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_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_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_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_ptr_wr_req_data (app_rx_head_ptr_wr_req_data ) + ,.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 a00afd3..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 @@ -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_ptr_wr_req_val - ,input logic rx_head_ptr_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_ptr_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; @@ -54,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 @@ -75,21 +81,33 @@ 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_idx_wr_req_val = 1'b1; - if (rx_head_ptr_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; 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; state_next = state_reg; end 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..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_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_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_ptr_wr_req_addr = hdr_flit_reg.inner.flowid; - assign app_rx_head_ptr_wr_req_data = hdr_flit_reg.inner.head_ptr; + // 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.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 5179845..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 @@ -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; @@ -81,14 +74,13 @@ 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; 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.resp_buf = head_buf_reg; end endmodule 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..1c6306f 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 @@ -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; @@ -444,18 +453,27 @@ 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 ) + + ,.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 b48dc59..2e590b1 100644 --- a/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv +++ b/network_tiles/tcp/tcp_rx_tile_gen.sv.pyv @@ -59,44 +59,67 @@ 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 ,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_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 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 logic app_rx_head_buf_rd_req_val + ,output logic [FLOWID_W-1:0] app_rx_head_buf_rd_req_flowid + ,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 + ,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 + ,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 ); <% @@ -540,18 +563,27 @@ 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 ) + + ,.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) ); @@ -579,25 +611,39 @@ 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_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 ) + + ,.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 266d9ce..236847f 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; @@ -125,30 +125,53 @@ 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_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 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 ) @@ -195,44 +218,67 @@ 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 ) ,.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_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 ) + + ,.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 ) + ,.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 - @@ -308,43 +354,66 @@ 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_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 ) - ,.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 ) - ,.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 ) + ,.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 ) - ,.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 ) - ,.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 ) ,.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) + ,.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/network_tiles/tcp/tcp_tx_app_if_wrap.sv b/network_tiles/tcp/tcp_tx_app_if_wrap.sv index 99894ab..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 ) @@ -145,5 +146,4 @@ import tcp_misc_pkg::*; ,.app_end_ptr_rd_resp_rdy (app_head_ptr_tx_rd_resp_rdy ) ); - endmodule diff --git a/protocols/tcp_hw b/protocols/tcp_hw index 59c92b1..3cfb638 160000 --- a/protocols/tcp_hw +++ b/protocols/tcp_hw @@ -1 +1 @@ -Subproject commit 59c92b13d330469623b2bcf8510a09f0cb6ed9be +Subproject commit 3cfb638b240e538528b1c6ace560e6d45faca096 diff --git a/protocols/tcp_slow b/protocols/tcp_slow index 7edb737..372de44 160000 --- a/protocols/tcp_slow +++ b/protocols/tcp_slow @@ -1 +1 @@ -Subproject commit 7edb737fd43b7828a01a9dccf7472be3fcc04d45 +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 new file mode 100644 index 0000000..bf00f70 --- /dev/null +++ b/sample_designs/tcp_open_loop/tcp_open_loop.flist @@ -0,0 +1,356 @@ ++incdir+/home/mgiordan/apiary/util/logging/include ++incdir+/home/mgiordan/apiary/network_tiles/tcp/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 +/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