From 65eef8b5e8d125279281ffe792e906b3fc620eb1 Mon Sep 17 00:00:00 2001 From: Alex Forencich Date: Fri, 13 Jun 2025 19:28:21 -0700 Subject: [PATCH] eth: Parameter cleanup Signed-off-by: Alex Forencich --- src/eth/rtl/us/taxi_eth_mac_25g_us.sv | 2 ++ src/eth/rtl/us/taxi_eth_mac_25g_us_ch.sv | 2 +- src/eth/rtl/us/taxi_eth_phy_25g_us_gt.sv | 7 +++++++ src/eth/rtl/us/taxi_eth_phy_25g_us_gt_ll.sv | 7 +++++++ src/eth/tb/taxi_eth_mac_25g_us/Makefile | 1 + src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.py | 4 +++- src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.sv | 3 ++- 7 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/eth/rtl/us/taxi_eth_mac_25g_us.sv b/src/eth/rtl/us/taxi_eth_mac_25g_us.sv index 1d17ff9..ae0d9a3 100644 --- a/src/eth/rtl/us/taxi_eth_mac_25g_us.sv +++ b/src/eth/rtl/us/taxi_eth_mac_25g_us.sv @@ -52,6 +52,7 @@ module taxi_eth_mac_25g_us # // MAC/PHY parameters parameter logic COMBINED_MAC_PCS = 1'b1, + parameter DATA_W = 64, parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, parameter MIN_FRAME_LEN = 64, @@ -368,6 +369,7 @@ for (genvar n = 0; n < CNT; n = n + 1) begin : ch // MAC/PHY parameters .COMBINED_MAC_PCS(COMBINED_MAC_PCS), + .DATA_W(DATA_W), .PADDING_EN(PADDING_EN), .DIC_EN(DIC_EN), .MIN_FRAME_LEN(MIN_FRAME_LEN), diff --git a/src/eth/rtl/us/taxi_eth_mac_25g_us_ch.sv b/src/eth/rtl/us/taxi_eth_mac_25g_us_ch.sv index aed228b..32671c3 100644 --- a/src/eth/rtl/us/taxi_eth_mac_25g_us_ch.sv +++ b/src/eth/rtl/us/taxi_eth_mac_25g_us_ch.sv @@ -52,6 +52,7 @@ module taxi_eth_mac_25g_us_ch # // MAC/PHY parameters parameter logic COMBINED_MAC_PCS = 1'b1, + parameter DATA_W = 64, parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, parameter MIN_FRAME_LEN = 64, @@ -279,7 +280,6 @@ module taxi_eth_mac_25g_us_ch # input wire logic cfg_rx_pfc_en = 1'b0 ); -localparam DATA_W = 64; localparam HDR_W = 2; wire rx_reset_req; diff --git a/src/eth/rtl/us/taxi_eth_phy_25g_us_gt.sv b/src/eth/rtl/us/taxi_eth_phy_25g_us_gt.sv index 46330c4..fbaa23e 100644 --- a/src/eth/rtl/us/taxi_eth_phy_25g_us_gt.sv +++ b/src/eth/rtl/us/taxi_eth_phy_25g_us_gt.sv @@ -126,6 +126,13 @@ module taxi_eth_phy_25g_us_gt # localparam GT_USP = FAMILY == "kintexuplus" || FAMILY == "virtexuplus" || FAMILY == "virtexuplusHBM" || FAMILY == "virtexuplus58G" || FAMILY == "zynquplus" || FAMILY == "zynquplusRFSOC"; +// check configuration +if (DATA_W != 64) + $fatal(0, "Error: Interface width must be 64"); + +if (HDR_W != 2) + $fatal(0, "Error: HDR_W must be 2"); + wire xcvr_ctrl_rst_sync; taxi_sync_reset #( diff --git a/src/eth/rtl/us/taxi_eth_phy_25g_us_gt_ll.sv b/src/eth/rtl/us/taxi_eth_phy_25g_us_gt_ll.sv index aa02e7e..628684f 100644 --- a/src/eth/rtl/us/taxi_eth_phy_25g_us_gt_ll.sv +++ b/src/eth/rtl/us/taxi_eth_phy_25g_us_gt_ll.sv @@ -126,6 +126,13 @@ module taxi_eth_phy_25g_us_gt_ll # localparam GT_USP = FAMILY == "kintexuplus" || FAMILY == "virtexuplus" || FAMILY == "virtexuplusHBM" || FAMILY == "virtexuplus58G" || FAMILY == "zynquplus" || FAMILY == "zynquplusRFSOC"; +// check configuration +if (DATA_W != 64) + $fatal(0, "Error: Interface width must be 64"); + +if (HDR_W != 2) + $fatal(0, "Error: HDR_W must be 2"); + wire xcvr_ctrl_rst_sync; taxi_sync_reset #( diff --git a/src/eth/tb/taxi_eth_mac_25g_us/Makefile b/src/eth/tb/taxi_eth_mac_25g_us/Makefile index e79c29f..c00500b 100644 --- a/src/eth/tb/taxi_eth_mac_25g_us/Makefile +++ b/src/eth/tb/taxi_eth_mac_25g_us/Makefile @@ -43,6 +43,7 @@ export PARAM_QPLL1_PD := 1 export PARAM_QPLL0_EXT_CTRL := 0 export PARAM_QPLL1_EXT_CTRL := 0 export PARAM_COMBINED_MAC_PCS := 1 +export PARAM_DATA_W := 64 export PARAM_PADDING_EN := 1 export PARAM_DIC_EN := 1 export PARAM_MIN_FRAME_LEN := 64 diff --git a/src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.py b/src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.py index b92d2b8..eeb8081 100644 --- a/src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.py +++ b/src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.py @@ -913,7 +913,8 @@ def process_f_files(files): @pytest.mark.parametrize(("dic_en", "pfc_en"), [(1, 1), (1, 0), (0, 0)]) @pytest.mark.parametrize("low_latency", [1, 0]) @pytest.mark.parametrize("combined_mac_pcs", [1, 0]) -def test_taxi_eth_mac_25g_us(request, combined_mac_pcs, low_latency, dic_en, pfc_en): +@pytest.mark.parametrize("data_w", [64]) +def test_taxi_eth_mac_25g_us(request, data_w, combined_mac_pcs, low_latency, dic_en, pfc_en): dut = "taxi_eth_mac_25g_us" module = os.path.splitext(os.path.basename(__file__))[0] toplevel = module @@ -938,6 +939,7 @@ def test_taxi_eth_mac_25g_us(request, combined_mac_pcs, low_latency, dic_en, pfc parameters['QPLL0_EXT_CTRL'] = 0 parameters['QPLL1_EXT_CTRL'] = 0 parameters['COMBINED_MAC_PCS'] = combined_mac_pcs + parameters['DATA_W'] = data_w parameters['PADDING_EN'] = 1 parameters['DIC_EN'] = dic_en parameters['MIN_FRAME_LEN'] = 64 diff --git a/src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.sv b/src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.sv index 689ddcb..c8072e4 100644 --- a/src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.sv +++ b/src/eth/tb/taxi_eth_mac_25g_us/test_taxi_eth_mac_25g_us.sv @@ -42,6 +42,7 @@ module test_taxi_eth_mac_25g_us # parameter logic [CNT-1:0] GT_RX_LPM_EN = '0, parameter logic [CNT-1:0] GT_RX_POLARITY = '0, parameter logic COMBINED_MAC_PCS = 1'b1, + parameter DATA_W = 64, parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, parameter MIN_FRAME_LEN = 64, @@ -68,7 +69,6 @@ module test_taxi_eth_mac_25g_us # ) (); -localparam DATA_W = 64; localparam TX_USER_W = 1; localparam RX_USER_W = (PTP_TS_EN ? PTP_TS_W : 0) + 1; @@ -247,6 +247,7 @@ taxi_eth_mac_25g_us #( .GT_RX_LPM_EN(GT_RX_LPM_EN), .GT_RX_POLARITY(GT_RX_POLARITY), .COMBINED_MAC_PCS(COMBINED_MAC_PCS), + .DATA_W(DATA_W), .PADDING_EN(PADDING_EN), .DIC_EN(DIC_EN), .MIN_FRAME_LEN(MIN_FRAME_LEN),