From 9955b79fcd96bd9d3d9d54d689ea9f4da4263287 Mon Sep 17 00:00:00 2001 From: Alex Forencich Date: Wed, 13 Aug 2025 17:17:34 -0700 Subject: [PATCH] zircon: Add FIFO configuration parameters Signed-off-by: Alex Forencich --- src/zircon/rtl/zircon_ip_rx_egress.sv | 10 ++++++---- src/zircon/rtl/zircon_ip_rx_ingress.sv | 16 +++++++++------- src/zircon/rtl/zircon_ip_tx_egress.sv | 10 ++++++---- src/zircon/rtl/zircon_ip_tx_ingress.sv | 10 ++++++---- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/zircon/rtl/zircon_ip_rx_egress.sv b/src/zircon/rtl/zircon_ip_rx_egress.sv index eebe6b2..97fc0bb 100644 --- a/src/zircon/rtl/zircon_ip_rx_egress.sv +++ b/src/zircon/rtl/zircon_ip_rx_egress.sv @@ -17,7 +17,9 @@ Authors: */ module zircon_ip_rx_egress # ( - parameter N_UI = 4 + parameter N_UI = 4, + parameter UI_RX_FIFO_DEPTH = 32, + parameter logic UI_RX_FIFO_EB_MODE = 1'b1 ) ( input wire logic clk, @@ -41,14 +43,14 @@ localparam DATA_W = s_axis_pkt.DATA_W; // RX FIFO taxi_axis_async_fifo #( - .DEPTH((UI_DATA_W > DATA_W ? UI_DATA_W : DATA_W)/8*32), + .DEPTH(UI_RX_FIFO_EB_MODE ? (UI_DATA_W > DATA_W ? UI_DATA_W : DATA_W)/8*UI_RX_FIFO_DEPTH : UI_RX_FIFO_DEPTH), .RAM_PIPELINE(1), .OUTPUT_FIFO_EN(1'b0), .FRAME_FIFO(1'b0), .USER_BAD_FRAME_VALUE(1'b1), .USER_BAD_FRAME_MASK(1'b1), - .DROP_OVERSIZE_FRAME(1'b0), - .DROP_BAD_FRAME(1'b0), + .DROP_OVERSIZE_FRAME(!UI_RX_FIFO_EB_MODE), + .DROP_BAD_FRAME(!UI_RX_FIFO_EB_MODE), .DROP_WHEN_FULL(1'b0), .MARK_WHEN_FULL(1'b0), .PAUSE_EN(1'b0) diff --git a/src/zircon/rtl/zircon_ip_rx_ingress.sv b/src/zircon/rtl/zircon_ip_rx_ingress.sv index dd1fb92..6f8c357 100644 --- a/src/zircon/rtl/zircon_ip_rx_ingress.sv +++ b/src/zircon/rtl/zircon_ip_rx_ingress.sv @@ -18,7 +18,9 @@ Authors: module zircon_ip_rx_ingress # ( parameter logic IPV6_EN = 1'b1, - parameter logic HASH_EN = 1'b1 + parameter logic HASH_EN = 1'b1, + parameter MAC_RX_FIFO_DEPTH = 32, + parameter logic MAC_RX_FIFO_EB_MODE = 1'b1 ) ( input wire logic clk, @@ -49,16 +51,16 @@ taxi_axis_if #(.DATA_W(32), .USER_EN(1), .USER_W(RX_USER_W)) rx_pkt_hdr(); taxi_axis_if #(.DATA_W(DATA_W), .USER_EN(1), .USER_W(RX_USER_W)) rx_bcast_int[2](); taxi_axis_async_fifo_adapter #( - .DEPTH((MAC_DATA_W > DATA_W ? MAC_DATA_W : DATA_W)/8*32), + .DEPTH(MAC_RX_FIFO_EB_MODE ? (MAC_DATA_W > DATA_W ? MAC_DATA_W : DATA_W)/8*MAC_RX_FIFO_DEPTH : MAC_RX_FIFO_DEPTH), .RAM_PIPELINE(1), .OUTPUT_FIFO_EN(1'b0), - .FRAME_FIFO(1'b0), + .FRAME_FIFO(!MAC_RX_FIFO_EB_MODE), .USER_BAD_FRAME_VALUE(1'b1), .USER_BAD_FRAME_MASK(1'b1), - .DROP_OVERSIZE_FRAME(1'b0), - .DROP_BAD_FRAME(1'b0), - .DROP_WHEN_FULL(1'b0), - .MARK_WHEN_FULL(1'b1), + .DROP_OVERSIZE_FRAME(!MAC_RX_FIFO_EB_MODE), + .DROP_BAD_FRAME(!MAC_RX_FIFO_EB_MODE), + .DROP_WHEN_FULL(!MAC_RX_FIFO_EB_MODE), + .MARK_WHEN_FULL(MAC_RX_FIFO_EB_MODE), .PAUSE_EN(1'b0) ) rx_fifo_inst ( diff --git a/src/zircon/rtl/zircon_ip_tx_egress.sv b/src/zircon/rtl/zircon_ip_tx_egress.sv index f3ccc21..381be62 100644 --- a/src/zircon/rtl/zircon_ip_tx_egress.sv +++ b/src/zircon/rtl/zircon_ip_tx_egress.sv @@ -17,7 +17,9 @@ Authors: */ module zircon_ip_tx_egress # ( - parameter logic IPV6_EN = 1'b1 + parameter logic IPV6_EN = 1'b1, + parameter MAC_TX_FIFO_DEPTH = 32, + parameter logic MAC_TX_FIFO_EB_MODE = 1'b1 ) ( input wire logic clk, @@ -116,14 +118,14 @@ tx_hdr_concat_inst ( // TX FIFO taxi_axis_async_fifo #( - .DEPTH((MAC_DATA_W > DATA_W ? MAC_DATA_W : DATA_W)/8*32), + .DEPTH(MAC_TX_FIFO_EB_MODE ? (MAC_DATA_W > DATA_W ? MAC_DATA_W : DATA_W)/8*MAC_TX_FIFO_DEPTH : MAC_TX_FIFO_DEPTH), .RAM_PIPELINE(1), .OUTPUT_FIFO_EN(1'b0), .FRAME_FIFO(1'b1), .USER_BAD_FRAME_VALUE(1'b1), .USER_BAD_FRAME_MASK(1'b1), - .DROP_OVERSIZE_FRAME(1'b0), - .DROP_BAD_FRAME(1'b0), + .DROP_OVERSIZE_FRAME(!MAC_TX_FIFO_EB_MODE), + .DROP_BAD_FRAME(!MAC_TX_FIFO_EB_MODE), .DROP_WHEN_FULL(1'b0), .MARK_WHEN_FULL(1'b0), .PAUSE_EN(1'b0) diff --git a/src/zircon/rtl/zircon_ip_tx_ingress.sv b/src/zircon/rtl/zircon_ip_tx_ingress.sv index 5755a9d..f5ffff0 100644 --- a/src/zircon/rtl/zircon_ip_tx_ingress.sv +++ b/src/zircon/rtl/zircon_ip_tx_ingress.sv @@ -17,7 +17,9 @@ Authors: */ module zircon_ip_tx_ingress # ( - parameter N_UI = 4 + parameter N_UI = 4, + parameter UI_TX_FIFO_DEPTH = 32, + parameter logic UI_TX_FIFO_EB_MODE = 1'b1 ) ( input wire logic clk, @@ -42,14 +44,14 @@ localparam DATA_W = m_axis_pkt.DATA_W; // TX FIFO taxi_axis_async_fifo #( - .DEPTH((UI_DATA_W > DATA_W ? UI_DATA_W : DATA_W)/8*32), + .DEPTH(UI_TX_FIFO_EB_MODE ? (UI_DATA_W > DATA_W ? UI_DATA_W : DATA_W)/8*UI_TX_FIFO_DEPTH : UI_TX_FIFO_DEPTH), .RAM_PIPELINE(1), .OUTPUT_FIFO_EN(1'b0), .FRAME_FIFO(1'b0), .USER_BAD_FRAME_VALUE(1'b1), .USER_BAD_FRAME_MASK(1'b1), - .DROP_OVERSIZE_FRAME(1'b0), - .DROP_BAD_FRAME(1'b0), + .DROP_OVERSIZE_FRAME(!UI_TX_FIFO_EB_MODE), + .DROP_BAD_FRAME(!UI_TX_FIFO_EB_MODE), .DROP_WHEN_FULL(1'b0), .MARK_WHEN_FULL(1'b0), .PAUSE_EN(1'b0)