From b17966f73deedfad2f4562acfb96e6f42f52a40c Mon Sep 17 00:00:00 2001 From: Alex Forencich Date: Sun, 16 Jun 2019 20:01:08 -0700 Subject: [PATCH] store_last_word timing optimization --- rtl/ip_eth_rx_64.v | 3 ++- rtl/ip_eth_tx_64.v | 3 ++- rtl/udp_ip_rx_64.v | 3 ++- rtl/udp_ip_tx_64.v | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/rtl/ip_eth_rx_64.v b/rtl/ip_eth_rx_64.v index 781c2146..11bc89c2 100644 --- a/rtl/ip_eth_rx_64.v +++ b/rtl/ip_eth_rx_64.v @@ -396,6 +396,8 @@ always @* begin m_ip_payload_axis_tlast_int = shift_eth_payload_axis_tlast; m_ip_payload_axis_tuser_int = shift_eth_payload_axis_tuser; + store_last_word = 1'b1; + if (m_ip_payload_axis_tready_int_reg && shift_eth_payload_axis_tvalid) begin // word transfer through frame_ptr_next = frame_ptr_reg+keep2count(shift_eth_payload_axis_tkeep); @@ -410,7 +412,6 @@ always @* begin s_eth_hdr_ready_next = !m_ip_hdr_valid_reg && !check_hdr_reg; state_next = STATE_IDLE; end else begin - store_last_word = 1'b1; m_ip_payload_axis_tvalid_int = 1'b0; state_next = STATE_READ_PAYLOAD_LAST; end diff --git a/rtl/ip_eth_tx_64.v b/rtl/ip_eth_tx_64.v index 74276c02..40c3c670 100644 --- a/rtl/ip_eth_tx_64.v +++ b/rtl/ip_eth_tx_64.v @@ -407,6 +407,8 @@ always @* begin m_eth_payload_axis_tlast_int = shift_ip_payload_axis_tlast; m_eth_payload_axis_tuser_int = shift_ip_payload_axis_tuser; + store_last_word = 1'b1; + if (m_eth_payload_axis_tready_int_reg && shift_ip_payload_axis_tvalid) begin // word transfer through frame_ptr_next = frame_ptr_reg+keep2count(shift_ip_payload_axis_tkeep); @@ -421,7 +423,6 @@ always @* begin s_ip_hdr_ready_next = !m_eth_hdr_valid_next; state_next = STATE_IDLE; end else begin - store_last_word = 1'b1; m_eth_payload_axis_tvalid_int = 1'b0; state_next = STATE_WRITE_PAYLOAD_LAST; end diff --git a/rtl/udp_ip_rx_64.v b/rtl/udp_ip_rx_64.v index b51b64cf..a9279ce2 100644 --- a/rtl/udp_ip_rx_64.v +++ b/rtl/udp_ip_rx_64.v @@ -334,6 +334,8 @@ always @* begin m_udp_payload_axis_tlast_int = s_ip_payload_axis_tlast; m_udp_payload_axis_tuser_int = s_ip_payload_axis_tuser; + store_last_word = 1'b1; + if (s_ip_payload_axis_tready && s_ip_payload_axis_tvalid) begin // word transfer through frame_ptr_next = frame_ptr_reg+keep2count(s_ip_payload_axis_tkeep); @@ -346,7 +348,6 @@ always @* begin s_ip_hdr_ready_next = !m_udp_hdr_valid_next; state_next = STATE_IDLE; end else begin - store_last_word = 1'b1; m_udp_payload_axis_tvalid_int = 1'b0; state_next = STATE_READ_PAYLOAD_LAST; end diff --git a/rtl/udp_ip_tx_64.v b/rtl/udp_ip_tx_64.v index 967f0a50..bd7f5638 100644 --- a/rtl/udp_ip_tx_64.v +++ b/rtl/udp_ip_tx_64.v @@ -334,6 +334,8 @@ always @* begin m_ip_payload_axis_tlast_int = s_udp_payload_axis_tlast; m_ip_payload_axis_tuser_int = s_udp_payload_axis_tuser; + store_last_word = 1'b1; + if (m_ip_payload_axis_tready_int_reg && s_udp_payload_axis_tvalid) begin // word transfer through frame_ptr_next = frame_ptr_reg+keep2count(s_udp_payload_axis_tkeep); @@ -346,7 +348,6 @@ always @* begin s_udp_hdr_ready_next = !m_ip_hdr_valid_next; state_next = STATE_IDLE; end else begin - store_last_word = 1'b1; m_ip_payload_axis_tvalid_int = 1'b0; state_next = STATE_WRITE_PAYLOAD_LAST; end