From b2f968c283e98e40e7e3ed3737c5c5b385de6809 Mon Sep 17 00:00:00 2001 From: Alex Forencich Date: Mon, 11 May 2026 23:21:13 -0700 Subject: [PATCH] eth: Remove padding logic from 10G/25G MAC TX modules Signed-off-by: Alex Forencich --- src/eth/rtl/taxi_axis_baser_tx_32.sv | 50 +--------------- src/eth/rtl/taxi_axis_baser_tx_64.sv | 58 +------------------ src/eth/rtl/taxi_axis_xgmii_tx_32.sv | 50 +--------------- src/eth/rtl/taxi_axis_xgmii_tx_64.sv | 58 +------------------ src/eth/rtl/taxi_eth_mac_10g.sv | 2 - src/eth/rtl/taxi_eth_mac_phy_10g_tx.sv | 2 - src/eth/tb/taxi_axis_baser_tx_32/Makefile | 2 - .../test_taxi_axis_baser_tx_32.py | 10 ++-- .../test_taxi_axis_baser_tx_32.sv | 4 -- src/eth/tb/taxi_axis_baser_tx_64/Makefile | 2 - .../test_taxi_axis_baser_tx_64.py | 10 ++-- .../test_taxi_axis_baser_tx_64.sv | 4 -- src/eth/tb/taxi_axis_xgmii_tx_32/Makefile | 2 - .../test_taxi_axis_xgmii_tx_32.py | 10 ++-- .../test_taxi_axis_xgmii_tx_32.sv | 4 -- src/eth/tb/taxi_axis_xgmii_tx_64/Makefile | 2 - .../test_taxi_axis_xgmii_tx_64.py | 10 ++-- .../test_taxi_axis_xgmii_tx_64.sv | 4 -- 18 files changed, 24 insertions(+), 260 deletions(-) diff --git a/src/eth/rtl/taxi_axis_baser_tx_32.sv b/src/eth/rtl/taxi_axis_baser_tx_32.sv index 6b89ba3..54b5dbd 100644 --- a/src/eth/rtl/taxi_axis_baser_tx_32.sv +++ b/src/eth/rtl/taxi_axis_baser_tx_32.sv @@ -21,9 +21,7 @@ module taxi_axis_baser_tx_32 # parameter HDR_W = 2, parameter logic GBX_IF_EN = 1'b0, parameter GBX_CNT = 1, - parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, - parameter MIN_FRAME_LEN = 64, parameter logic PTP_TS_EN = 1'b0, parameter PTP_TS_W = 96, parameter logic TX_CPL_CTRL_IN_TUSER = 1'b1 @@ -84,7 +82,6 @@ localparam USER_W = TX_CPL_CTRL_IN_TUSER ? 2 : 1; localparam TX_TAG_W = s_axis_tx.ID_W; localparam EMPTY_W = $clog2(KEEP_W); -localparam MIN_LEN_W = $clog2(MIN_FRAME_LEN-4-KEEP_W+1); // check configuration if (DATA_W != 32) @@ -162,7 +159,6 @@ typedef enum logic [3:0] { STATE_IDLE, STATE_PREAMBLE, STATE_PAYLOAD, - STATE_PAD, STATE_FCS_1, STATE_FCS_2, STATE_FCS_3, @@ -191,7 +187,6 @@ logic extra_cycle; logic frame_reg = 1'b0, frame_next; logic frame_error_reg = 1'b0, frame_error_next; logic frame_oversize_reg = 1'b0, frame_oversize_next; -logic [MIN_LEN_W-1:0] frame_min_count_reg = '0, frame_min_count_next; logic [2:0] hdr_ptr_reg = '0, hdr_ptr_next; logic is_mcast_reg = 1'b0, is_mcast_next; logic is_bcast_reg = 1'b0, is_bcast_next; @@ -355,7 +350,6 @@ always_comb begin frame_next = frame_reg; frame_error_next = frame_error_reg; frame_oversize_next = frame_oversize_reg; - frame_min_count_next = frame_min_count_reg; hdr_ptr_next = hdr_ptr_reg; is_mcast_next = is_mcast_reg; is_bcast_next = is_bcast_reg; @@ -415,13 +409,6 @@ always_comb begin state_next = state_reg; s_axis_tx_tready_next = s_axis_tx_tready_reg; end else begin - // counter for min frame length enforcement - if (frame_min_count_reg > MIN_LEN_W'(KEEP_W)) begin - frame_min_count_next = MIN_LEN_W'(frame_min_count_reg - KEEP_W); - end else begin - frame_min_count_next = 0; - end - // counter to measure frame length if (&frame_len_reg[15:2] == 0) begin frame_len_next = frame_len_reg + 16'(KEEP_W); @@ -468,7 +455,6 @@ always_comb begin // idle state - wait for data frame_error_next = 1'b0; frame_oversize_next = 1'b0; - frame_min_count_next = MIN_LEN_W'(MIN_FRAME_LEN-4); hdr_ptr_next = 0; frame_len_next = 0; {frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len; @@ -538,50 +524,17 @@ always_comb begin end end - if (PADDING_EN && frame_min_count_reg != 0) begin - if (frame_min_count_reg > MIN_LEN_W'(KEEP_W)) begin - s_empty_next = 0; - end else if (keep2empty(s_axis_tx.tkeep) > 2'(KEEP_W-frame_min_count_reg)) begin - s_empty_next = 2'(KEEP_W-frame_min_count_reg); - end - end - if (!s_axis_tx.tvalid || s_axis_tx.tlast || frame_oversize_next) begin s_axis_tx_tready_next = frame_next; // drop frame frame_error_next = !s_axis_tx.tvalid || s_axis_tx.tuser[0] || frame_oversize_next; stat_tx_err_user_next = s_axis_tx.tuser[0]; stat_tx_err_underflow_next = !s_axis_tx.tvalid; - if (PADDING_EN && frame_min_count_reg != 0 && frame_min_count_reg > MIN_LEN_W'(KEEP_W)) begin - state_next = STATE_PAD; - end else begin - state_next = STATE_FCS_1; - end + state_next = STATE_FCS_1; end else begin state_next = STATE_PAYLOAD; end end - STATE_PAD: begin - // pad frame to MIN_FRAME_LEN - s_axis_tx_tready_next = frame_next; // drop frame - - output_data_next = s_tdata_reg; - output_type_next = OUTPUT_TYPE_DATA; - - s_tdata_next = 32'd0; - s_empty_next = 0; - - stat_tx_byte_next = 3'(KEEP_W); - - update_crc = 1'b1; - - if (frame_min_count_reg > MIN_LEN_W'(KEEP_W)) begin - state_next = STATE_PAD; - end else begin - s_empty_next = 2'(KEEP_W-frame_min_count_reg); - state_next = STATE_FCS_1; - end - end STATE_FCS_1: begin // last cycle s_axis_tx_tready_next = frame_next; // drop frame @@ -720,7 +673,6 @@ always_ff @(posedge clk) begin frame_reg <= frame_next; frame_error_reg <= frame_error_next; frame_oversize_reg <= frame_oversize_next; - frame_min_count_reg <= frame_min_count_next; hdr_ptr_reg <= hdr_ptr_next; is_mcast_reg <= is_mcast_next; is_bcast_reg <= is_bcast_next; diff --git a/src/eth/rtl/taxi_axis_baser_tx_64.sv b/src/eth/rtl/taxi_axis_baser_tx_64.sv index 65a2578..a134a95 100644 --- a/src/eth/rtl/taxi_axis_baser_tx_64.sv +++ b/src/eth/rtl/taxi_axis_baser_tx_64.sv @@ -21,9 +21,7 @@ module taxi_axis_baser_tx_64 # parameter HDR_W = 2, parameter logic GBX_IF_EN = 1'b0, parameter GBX_CNT = 1, - parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, - parameter MIN_FRAME_LEN = 64, parameter logic PTP_TS_EN = 1'b0, parameter logic PTP_TS_FMT_TOD = 1'b1, parameter PTP_TS_W = PTP_TS_FMT_TOD ? 96 : 64, @@ -85,7 +83,6 @@ localparam USER_W = TX_CPL_CTRL_IN_TUSER ? 2 : 1; localparam TX_TAG_W = s_axis_tx.ID_W; localparam EMPTY_W = $clog2(KEEP_W); -localparam MIN_LEN_W = $clog2(MIN_FRAME_LEN-4-KEEP_W+1); // check configuration if (DATA_W != 64) @@ -167,7 +164,6 @@ typedef enum logic [3:0] { typedef enum logic [2:0] { STATE_IDLE, STATE_PAYLOAD, - STATE_PAD, STATE_FCS_1, STATE_FCS_2, STATE_ERR, @@ -200,7 +196,6 @@ logic frame_start_reg = 1'b0, frame_start_next; logic frame_reg = 1'b0, frame_next; logic frame_error_reg = 1'b0, frame_error_next; logic frame_oversize_reg = 1'b0, frame_oversize_next; -logic [MIN_LEN_W-1:0] frame_min_count_reg = '0, frame_min_count_next; logic [1:0] hdr_ptr_reg = '0, hdr_ptr_next; logic is_mcast_reg = 1'b0, is_mcast_next; logic is_bcast_reg = 1'b0, is_bcast_next; @@ -399,7 +394,6 @@ always_comb begin frame_next = frame_reg; frame_error_next = frame_error_reg; frame_oversize_next = frame_oversize_reg; - frame_min_count_next = frame_min_count_reg; hdr_ptr_next = hdr_ptr_reg; is_mcast_next = is_mcast_reg; is_bcast_next = is_bcast_reg; @@ -445,13 +439,6 @@ always_comb begin frame_start_next = frame_start_reg; s_axis_tx_tready_next = s_axis_tx_tready_reg; end else begin - // counter for min frame length enforcement - if (frame_min_count_reg > MIN_LEN_W'(KEEP_W)) begin - frame_min_count_next = MIN_LEN_W'(frame_min_count_reg - KEEP_W); - end else begin - frame_min_count_next = 0; - end - // counter to measure frame length if (&frame_len_reg[15:3] == 0) begin frame_len_next = frame_len_reg + 16'(KEEP_W); @@ -503,7 +490,6 @@ always_comb begin // idle state - wait for data frame_error_next = 1'b0; frame_oversize_next = 1'b0; - frame_min_count_next = MIN_LEN_W'(MIN_FRAME_LEN-4-KEEP_W); hdr_ptr_next = 0; frame_len_next = 0; {frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len ^ 4; @@ -559,56 +545,19 @@ always_comb begin end end - if (PADDING_EN && frame_min_count_reg != 0) begin - if (frame_min_count_reg > MIN_LEN_W'(KEEP_W)) begin - s_empty_next = 0; - end else if (keep2empty(s_axis_tx.tkeep) > 3'(KEEP_W-frame_min_count_reg)) begin - s_empty_next = 3'(KEEP_W-frame_min_count_reg); - end - end - if (!s_axis_tx.tvalid || s_axis_tx.tlast || frame_oversize_next) begin s_axis_tx_tready_next = frame_next; // drop frame frame_error_next = !s_axis_tx.tvalid || s_axis_tx.tuser[0] || frame_oversize_next; stat_tx_err_user_next = s_axis_tx.tuser[0]; stat_tx_err_underflow_next = !s_axis_tx.tvalid; - if (PADDING_EN && frame_min_count_reg != 0 && frame_min_count_reg > MIN_LEN_W'(KEEP_W)) begin - state_next = STATE_PAD; - end else begin - if (frame_error_next) begin - state_next = STATE_ERR; - end else begin - state_next = STATE_FCS_1; - end - end - end else begin - state_next = STATE_PAYLOAD; - end - end - STATE_PAD: begin - // pad frame to MIN_FRAME_LEN - s_axis_tx_tready_next = frame_next; // drop frame - - output_data_next = s_tdata_reg; - output_type_next = OUTPUT_TYPE_DATA; - - s_tdata_next = 64'd0; - s_empty_next = 0; - - stat_tx_byte_next = 4'(KEEP_W); - - update_crc = 1'b1; - - if (frame_min_count_reg > MIN_LEN_W'(KEEP_W)) begin - state_next = STATE_PAD; - end else begin - s_empty_next = 3'(KEEP_W-frame_min_count_reg); - if (frame_error_reg) begin + if (frame_error_next) begin state_next = STATE_ERR; end else begin state_next = STATE_FCS_1; end + end else begin + state_next = STATE_PAYLOAD; end end STATE_FCS_1: begin @@ -762,7 +711,6 @@ always_ff @(posedge clk) begin frame_reg <= frame_next; frame_error_reg <= frame_error_next; frame_oversize_reg <= frame_oversize_next; - frame_min_count_reg <= frame_min_count_next; hdr_ptr_reg <= hdr_ptr_next; is_mcast_reg <= is_mcast_next; is_bcast_reg <= is_bcast_next; diff --git a/src/eth/rtl/taxi_axis_xgmii_tx_32.sv b/src/eth/rtl/taxi_axis_xgmii_tx_32.sv index 95a281f..86b9c8a 100644 --- a/src/eth/rtl/taxi_axis_xgmii_tx_32.sv +++ b/src/eth/rtl/taxi_axis_xgmii_tx_32.sv @@ -21,9 +21,7 @@ module taxi_axis_xgmii_tx_32 # parameter CTRL_W = (DATA_W/8), parameter logic GBX_IF_EN = 1'b0, parameter GBX_CNT = 1, - parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, - parameter MIN_FRAME_LEN = 64, parameter logic PTP_TS_EN = 1'b0, parameter PTP_TS_W = 96, parameter logic TX_CPL_CTRL_IN_TUSER = 1'b1 @@ -83,7 +81,6 @@ localparam USER_W = TX_CPL_CTRL_IN_TUSER ? 2 : 1; localparam TX_TAG_W = s_axis_tx.ID_W; localparam EMPTY_W = $clog2(KEEP_W); -localparam MIN_LEN_W = $clog2(MIN_FRAME_LEN-4-CTRL_W+1); // check configuration if (DATA_W != 32) @@ -123,7 +120,6 @@ typedef enum logic [3:0] { STATE_IDLE, STATE_PREAMBLE, STATE_PAYLOAD, - STATE_PAD, STATE_FCS_1, STATE_FCS_2, STATE_FCS_3, @@ -152,7 +148,6 @@ logic extra_cycle; logic frame_reg = 1'b0, frame_next; logic frame_error_reg = 1'b0, frame_error_next; logic frame_oversize_reg = 1'b0, frame_oversize_next; -logic [MIN_LEN_W-1:0] frame_min_count_reg = '0, frame_min_count_next; logic [2:0] hdr_ptr_reg = '0, hdr_ptr_next; logic is_mcast_reg = 1'b0, is_mcast_next; logic is_bcast_reg = 1'b0, is_bcast_next; @@ -309,7 +304,6 @@ always_comb begin frame_next = frame_reg; frame_error_next = frame_error_reg; frame_oversize_next = frame_oversize_reg; - frame_min_count_next = frame_min_count_reg; hdr_ptr_next = hdr_ptr_reg; is_mcast_next = is_mcast_reg; is_bcast_next = is_bcast_reg; @@ -371,13 +365,6 @@ always_comb begin // frame_start_next = frame_start_reg; s_axis_tx_tready_next = s_axis_tx_tready_reg; end else begin - // counter for min frame length enforcement - if (frame_min_count_reg > MIN_LEN_W'(CTRL_W)) begin - frame_min_count_next = MIN_LEN_W'(frame_min_count_reg - CTRL_W); - end else begin - frame_min_count_next = 0; - end - // counter to measure frame length if (&frame_len_reg[15:2] == 0) begin frame_len_next = frame_len_reg + 16'(CTRL_W); @@ -424,7 +411,6 @@ always_comb begin // idle state - wait for data frame_error_next = 1'b0; frame_oversize_next = 1'b0; - frame_min_count_next = MIN_LEN_W'(MIN_FRAME_LEN-4); hdr_ptr_next = 0; frame_len_next = 0; {frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len; @@ -495,50 +481,17 @@ always_comb begin end end - if (PADDING_EN && frame_min_count_reg != 0) begin - if (frame_min_count_reg > MIN_LEN_W'(CTRL_W)) begin - s_empty_next = 0; - end else if (keep2empty(s_axis_tx.tkeep) > 2'(CTRL_W-frame_min_count_reg)) begin - s_empty_next = 2'(CTRL_W-frame_min_count_reg); - end - end - if (!s_axis_tx.tvalid || s_axis_tx.tlast || frame_oversize_next) begin s_axis_tx_tready_next = frame_next; // drop frame frame_error_next = !s_axis_tx.tvalid || s_axis_tx.tuser[0] || frame_oversize_next; stat_tx_err_user_next = s_axis_tx.tuser[0]; stat_tx_err_underflow_next = !s_axis_tx.tvalid; - if (PADDING_EN && frame_min_count_reg != 0 && frame_min_count_reg > MIN_LEN_W'(CTRL_W)) begin - state_next = STATE_PAD; - end else begin - state_next = STATE_FCS_1; - end + state_next = STATE_FCS_1; end else begin state_next = STATE_PAYLOAD; end end - STATE_PAD: begin - // pad frame to MIN_FRAME_LEN - s_axis_tx_tready_next = frame_next; // drop frame - - xgmii_txd_next = s_tdata_reg; - xgmii_txc_next = {CTRL_W{1'b0}}; - - s_tdata_next = 32'd0; - s_empty_next = 0; - - stat_tx_byte_next = 3'(CTRL_W); - - update_crc = 1'b1; - - if (frame_min_count_reg > MIN_LEN_W'(CTRL_W)) begin - state_next = STATE_PAD; - end else begin - s_empty_next = 2'(CTRL_W-frame_min_count_reg); - state_next = STATE_FCS_1; - end - end STATE_FCS_1: begin // last cycle s_axis_tx_tready_next = frame_next; // drop frame @@ -679,7 +632,6 @@ always_ff @(posedge clk) begin frame_reg <= frame_next; frame_error_reg <= frame_error_next; frame_oversize_reg <= frame_oversize_next; - frame_min_count_reg <= frame_min_count_next; hdr_ptr_reg <= hdr_ptr_next; is_mcast_reg <= is_mcast_next; is_bcast_reg <= is_bcast_next; diff --git a/src/eth/rtl/taxi_axis_xgmii_tx_64.sv b/src/eth/rtl/taxi_axis_xgmii_tx_64.sv index 77c12ae..3643d4d 100644 --- a/src/eth/rtl/taxi_axis_xgmii_tx_64.sv +++ b/src/eth/rtl/taxi_axis_xgmii_tx_64.sv @@ -21,9 +21,7 @@ module taxi_axis_xgmii_tx_64 # parameter CTRL_W = (DATA_W/8), parameter logic GBX_IF_EN = 1'b0, parameter GBX_CNT = 1, - parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, - parameter MIN_FRAME_LEN = 64, parameter logic PTP_TS_EN = 1'b0, parameter logic PTP_TS_FMT_TOD = 1'b1, parameter PTP_TS_W = PTP_TS_FMT_TOD ? 96 : 64, @@ -84,7 +82,6 @@ localparam USER_W = TX_CPL_CTRL_IN_TUSER ? 2 : 1; localparam TX_TAG_W = s_axis_tx.ID_W; localparam EMPTY_W = $clog2(KEEP_W); -localparam MIN_LEN_W = $clog2(MIN_FRAME_LEN-4-CTRL_W+1); // check configuration if (DATA_W != 64) @@ -123,7 +120,6 @@ typedef enum logic [7:0] { typedef enum logic [2:0] { STATE_IDLE, STATE_PAYLOAD, - STATE_PAD, STATE_FCS_1, STATE_FCS_2, STATE_ERR, @@ -154,7 +150,6 @@ logic frame_start_reg = 1'b0, frame_start_next; logic frame_reg = 1'b0, frame_next; logic frame_error_reg = 1'b0, frame_error_next; logic frame_oversize_reg = 1'b0, frame_oversize_next; -logic [MIN_LEN_W-1:0] frame_min_count_reg = '0, frame_min_count_next; logic [1:0] hdr_ptr_reg = '0, hdr_ptr_next; logic is_mcast_reg = 1'b0, is_mcast_next; logic is_bcast_reg = 1'b0, is_bcast_next; @@ -348,7 +343,6 @@ always_comb begin frame_next = frame_reg; frame_error_next = frame_error_reg; frame_oversize_next = frame_oversize_reg; - frame_min_count_next = frame_min_count_reg; hdr_ptr_next = hdr_ptr_reg; is_mcast_next = is_mcast_reg; is_bcast_next = is_bcast_reg; @@ -395,13 +389,6 @@ always_comb begin frame_start_next = frame_start_reg; s_axis_tx_tready_next = s_axis_tx_tready_reg; end else begin - // counter for min frame length enforcement - if (frame_min_count_reg > MIN_LEN_W'(CTRL_W)) begin - frame_min_count_next = MIN_LEN_W'(frame_min_count_reg - CTRL_W); - end else begin - frame_min_count_next = 0; - end - // counter to measure frame length if (&frame_len_reg[15:3] == 0) begin frame_len_next = frame_len_reg + 16'(CTRL_W); @@ -453,7 +440,6 @@ always_comb begin // idle state - wait for data frame_error_next = 1'b0; frame_oversize_next = 1'b0; - frame_min_count_next = MIN_LEN_W'(MIN_FRAME_LEN-4-CTRL_W); hdr_ptr_next = 0; frame_len_next = 0; {frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len ^ 4; @@ -510,56 +496,19 @@ always_comb begin end end - if (PADDING_EN && frame_min_count_reg != 0) begin - if (frame_min_count_reg > MIN_LEN_W'(CTRL_W)) begin - s_empty_next = 0; - end else if (keep2empty(s_axis_tx.tkeep) > 3'(CTRL_W-frame_min_count_reg)) begin - s_empty_next = 3'(CTRL_W-frame_min_count_reg); - end - end - if (!s_axis_tx.tvalid || s_axis_tx.tlast || frame_oversize_next) begin s_axis_tx_tready_next = frame_next; // drop frame frame_error_next = !s_axis_tx.tvalid || s_axis_tx.tuser[0] || frame_oversize_next; stat_tx_err_user_next = s_axis_tx.tuser[0]; stat_tx_err_underflow_next = !s_axis_tx.tvalid; - if (PADDING_EN && frame_min_count_reg != 0 && frame_min_count_reg > MIN_LEN_W'(CTRL_W)) begin - state_next = STATE_PAD; - end else begin - if (frame_error_next) begin - state_next = STATE_ERR; - end else begin - state_next = STATE_FCS_1; - end - end - end else begin - state_next = STATE_PAYLOAD; - end - end - STATE_PAD: begin - // pad frame to MIN_FRAME_LEN - s_axis_tx_tready_next = frame_next; // drop frame - - xgmii_txd_next = s_tdata_reg; - xgmii_txc_next = {CTRL_W{1'b0}}; - - s_tdata_next = 64'd0; - s_empty_next = 0; - - stat_tx_byte_next = 4'(CTRL_W); - - update_crc = 1'b1; - - if (frame_min_count_reg > MIN_LEN_W'(CTRL_W)) begin - state_next = STATE_PAD; - end else begin - s_empty_next = 3'(CTRL_W-frame_min_count_reg); - if (frame_error_reg) begin + if (frame_error_next) begin state_next = STATE_ERR; end else begin state_next = STATE_FCS_1; end + end else begin + state_next = STATE_PAYLOAD; end end STATE_FCS_1: begin @@ -711,7 +660,6 @@ always_ff @(posedge clk) begin frame_reg <= frame_next; frame_error_reg <= frame_error_next; frame_oversize_reg <= frame_oversize_next; - frame_min_count_reg <= frame_min_count_next; hdr_ptr_reg <= hdr_ptr_next; is_mcast_reg <= is_mcast_next; is_bcast_reg <= is_bcast_next; diff --git a/src/eth/rtl/taxi_eth_mac_10g.sv b/src/eth/rtl/taxi_eth_mac_10g.sv index 9e5c573..95a81b8 100644 --- a/src/eth/rtl/taxi_eth_mac_10g.sv +++ b/src/eth/rtl/taxi_eth_mac_10g.sv @@ -445,7 +445,6 @@ if (DATA_W == 64) begin .CTRL_W(CTRL_W), .GBX_IF_EN(TX_GBX_IF_EN), .GBX_CNT(GBX_CNT), - .PADDING_EN(1'b0), .DIC_EN(DIC_EN), .PTP_TS_EN(PTP_TS_EN), .PTP_TS_FMT_TOD(PTP_TS_FMT_TOD), @@ -566,7 +565,6 @@ end else if (DATA_W == 32) begin .CTRL_W(CTRL_W), .GBX_IF_EN(TX_GBX_IF_EN), .GBX_CNT(GBX_CNT), - .PADDING_EN(1'b0), .DIC_EN(DIC_EN), .PTP_TS_EN(PTP_TS_EN), .PTP_TS_W(PTP_TS_W), diff --git a/src/eth/rtl/taxi_eth_mac_phy_10g_tx.sv b/src/eth/rtl/taxi_eth_mac_phy_10g_tx.sv index 679cc92..4a4bcc9 100644 --- a/src/eth/rtl/taxi_eth_mac_phy_10g_tx.sv +++ b/src/eth/rtl/taxi_eth_mac_phy_10g_tx.sv @@ -140,7 +140,6 @@ if (DATA_W == 64) begin .HDR_W(HDR_W), .GBX_IF_EN(GBX_IF_EN), .GBX_CNT(1), - .PADDING_EN(1'b0), .DIC_EN(DIC_EN), .PTP_TS_EN(PTP_TS_EN), .PTP_TS_FMT_TOD(PTP_TS_FMT_TOD), @@ -204,7 +203,6 @@ end else begin .HDR_W(HDR_W), .GBX_IF_EN(GBX_IF_EN), .GBX_CNT(1), - .PADDING_EN(1'b0), .DIC_EN(DIC_EN), .PTP_TS_EN(PTP_TS_EN), .PTP_TS_W(PTP_TS_W), diff --git a/src/eth/tb/taxi_axis_baser_tx_32/Makefile b/src/eth/tb/taxi_axis_baser_tx_32/Makefile index b815462..8e4e354 100644 --- a/src/eth/tb/taxi_axis_baser_tx_32/Makefile +++ b/src/eth/tb/taxi_axis_baser_tx_32/Makefile @@ -38,9 +38,7 @@ export PARAM_DATA_W := 32 export PARAM_HDR_W := 2 export PARAM_GBX_IF_EN := 1 export PARAM_GBX_CNT := 1 -export PARAM_PADDING_EN := 1 export PARAM_DIC_EN := 1 -export PARAM_MIN_FRAME_LEN := 64 export PARAM_PTP_TS_EN := 1 export PARAM_PTP_TS_FMT_TOD := 1 export PARAM_PTP_TS_W := $(if $(filter-out 1,$(PARAM_PTP_TS_FMT_TOD)),64,96) diff --git a/src/eth/tb/taxi_axis_baser_tx_32/test_taxi_axis_baser_tx_32.py b/src/eth/tb/taxi_axis_baser_tx_32/test_taxi_axis_baser_tx_32.py index 8c17b3c..6b548ec 100644 --- a/src/eth/tb/taxi_axis_baser_tx_32/test_taxi_axis_baser_tx_32.py +++ b/src/eth/tb/taxi_axis_baser_tx_32/test_taxi_axis_baser_tx_32.py @@ -132,7 +132,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i for test_data in test_frames: await tb.source.send(AxiStreamFrame(test_data, tid=0, tuser=0)) - total_bytes += max(len(test_data), 60)+4 + total_bytes += len(test_data)+4 total_pkts += 1 for test_data in test_frames: @@ -151,7 +151,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns) tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns)) - assert rx_frame.get_payload() == test_data.ljust(60, b'\x00') + assert rx_frame.get_payload() == test_data assert rx_frame.check_fcs() assert rx_frame.ctrl is None if gbx_cfg is None: @@ -224,8 +224,8 @@ async def run_test_underrun(dut, gbx_cfg=None, ifg=12): for stat, val in tb.stats.items(): tb.log.info("%s: %d", stat, val) - assert tb.stats["stat_tx_byte"] > 64*2 + 32 - assert tb.stats["stat_tx_pkt_len"] > 64*2 + 32 + assert tb.stats["stat_tx_byte"] > 64*2 + 8 + assert tb.stats["stat_tx_pkt_len"] > 64*2 + 8 assert tb.stats["stat_tx_pkt_ucast"] == 3 assert tb.stats["stat_tx_pkt_mcast"] == 0 assert tb.stats["stat_tx_pkt_bcast"] == 0 @@ -465,9 +465,7 @@ def test_taxi_axis_baser_tx_32(request, gbx_en, dic_en): parameters['HDR_W'] = 2 parameters['GBX_IF_EN'] = gbx_en parameters['GBX_CNT'] = 1 - parameters['PADDING_EN'] = 1 parameters['DIC_EN'] = dic_en - parameters['MIN_FRAME_LEN'] = 64 parameters['PTP_TS_EN'] = 1 parameters['PTP_TS_FMT_TOD'] = 1 parameters['PTP_TS_W'] = 96 if parameters['PTP_TS_FMT_TOD'] else 64 diff --git a/src/eth/tb/taxi_axis_baser_tx_32/test_taxi_axis_baser_tx_32.sv b/src/eth/tb/taxi_axis_baser_tx_32/test_taxi_axis_baser_tx_32.sv index 8adaabe..cac7e3a 100644 --- a/src/eth/tb/taxi_axis_baser_tx_32/test_taxi_axis_baser_tx_32.sv +++ b/src/eth/tb/taxi_axis_baser_tx_32/test_taxi_axis_baser_tx_32.sv @@ -22,9 +22,7 @@ module test_taxi_axis_baser_tx_32 # parameter HDR_W = 2, parameter logic GBX_IF_EN = 1'b0, parameter GBX_CNT = 1, - parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, - parameter MIN_FRAME_LEN = 64, parameter logic PTP_TS_EN = 1'b0, parameter logic PTP_TS_FMT_TOD = 1'b1, parameter PTP_TS_W = PTP_TS_FMT_TOD ? 96 : 64, @@ -73,9 +71,7 @@ taxi_axis_baser_tx_32 #( .DATA_W(DATA_W), .HDR_W(HDR_W), .GBX_IF_EN(GBX_IF_EN), - .PADDING_EN(PADDING_EN), .DIC_EN(DIC_EN), - .MIN_FRAME_LEN(MIN_FRAME_LEN), .PTP_TS_EN(PTP_TS_EN), .PTP_TS_W(PTP_TS_W), .TX_CPL_CTRL_IN_TUSER(TX_CPL_CTRL_IN_TUSER) diff --git a/src/eth/tb/taxi_axis_baser_tx_64/Makefile b/src/eth/tb/taxi_axis_baser_tx_64/Makefile index ae54662..ec83f38 100644 --- a/src/eth/tb/taxi_axis_baser_tx_64/Makefile +++ b/src/eth/tb/taxi_axis_baser_tx_64/Makefile @@ -38,9 +38,7 @@ export PARAM_DATA_W := 64 export PARAM_HDR_W := 2 export PARAM_GBX_IF_EN := 1 export PARAM_GBX_CNT := 1 -export PARAM_PADDING_EN := 1 export PARAM_DIC_EN := 1 -export PARAM_MIN_FRAME_LEN := 64 export PARAM_PTP_TS_EN := 1 export PARAM_PTP_TS_FMT_TOD := 1 export PARAM_PTP_TS_W := $(if $(filter-out 1,$(PARAM_PTP_TS_FMT_TOD)),64,96) diff --git a/src/eth/tb/taxi_axis_baser_tx_64/test_taxi_axis_baser_tx_64.py b/src/eth/tb/taxi_axis_baser_tx_64/test_taxi_axis_baser_tx_64.py index c68efcd..a2e0fd8 100644 --- a/src/eth/tb/taxi_axis_baser_tx_64/test_taxi_axis_baser_tx_64.py +++ b/src/eth/tb/taxi_axis_baser_tx_64/test_taxi_axis_baser_tx_64.py @@ -132,7 +132,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i for test_data in test_frames: await tb.source.send(AxiStreamFrame(test_data, tid=0, tuser=0)) - total_bytes += max(len(test_data), 60)+4 + total_bytes += len(test_data)+4 total_pkts += 1 for test_data in test_frames: @@ -151,7 +151,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns) tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns)) - assert rx_frame.get_payload() == test_data.ljust(60, b'\x00') + assert rx_frame.get_payload() == test_data assert rx_frame.check_fcs() assert rx_frame.ctrl is None if gbx_cfg is None: @@ -337,8 +337,8 @@ async def run_test_underrun(dut, gbx_cfg=None, ifg=12): for stat, val in tb.stats.items(): tb.log.info("%s: %d", stat, val) - assert tb.stats["stat_tx_byte"] > 64*2 + 32 - assert tb.stats["stat_tx_pkt_len"] > 64*2 + 32 + assert tb.stats["stat_tx_byte"] > 64*2 + 8 + assert tb.stats["stat_tx_pkt_len"] > 64*2 + 8 assert tb.stats["stat_tx_pkt_ucast"] == 3 assert tb.stats["stat_tx_pkt_mcast"] == 0 assert tb.stats["stat_tx_pkt_bcast"] == 0 @@ -584,9 +584,7 @@ def test_taxi_axis_baser_tx_64(request, gbx_en, dic_en): parameters['HDR_W'] = 2 parameters['GBX_IF_EN'] = gbx_en parameters['GBX_CNT'] = 1 - parameters['PADDING_EN'] = 1 parameters['DIC_EN'] = dic_en - parameters['MIN_FRAME_LEN'] = 64 parameters['PTP_TS_EN'] = 1 parameters['PTP_TS_FMT_TOD'] = 1 parameters['PTP_TS_W'] = 96 if parameters['PTP_TS_FMT_TOD'] else 64 diff --git a/src/eth/tb/taxi_axis_baser_tx_64/test_taxi_axis_baser_tx_64.sv b/src/eth/tb/taxi_axis_baser_tx_64/test_taxi_axis_baser_tx_64.sv index 663454c..8c4dfaf 100644 --- a/src/eth/tb/taxi_axis_baser_tx_64/test_taxi_axis_baser_tx_64.sv +++ b/src/eth/tb/taxi_axis_baser_tx_64/test_taxi_axis_baser_tx_64.sv @@ -22,9 +22,7 @@ module test_taxi_axis_baser_tx_64 # parameter HDR_W = 2, parameter logic GBX_IF_EN = 1'b0, parameter GBX_CNT = 1, - parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, - parameter MIN_FRAME_LEN = 64, parameter logic PTP_TS_EN = 1'b0, parameter logic PTP_TS_FMT_TOD = 1'b1, parameter PTP_TS_W = PTP_TS_FMT_TOD ? 96 : 64, @@ -73,9 +71,7 @@ taxi_axis_baser_tx_64 #( .DATA_W(DATA_W), .HDR_W(HDR_W), .GBX_IF_EN(GBX_IF_EN), - .PADDING_EN(PADDING_EN), .DIC_EN(DIC_EN), - .MIN_FRAME_LEN(MIN_FRAME_LEN), .PTP_TS_EN(PTP_TS_EN), .PTP_TS_W(PTP_TS_W), .TX_CPL_CTRL_IN_TUSER(TX_CPL_CTRL_IN_TUSER) diff --git a/src/eth/tb/taxi_axis_xgmii_tx_32/Makefile b/src/eth/tb/taxi_axis_xgmii_tx_32/Makefile index 6c7a4f4..db3b83f 100644 --- a/src/eth/tb/taxi_axis_xgmii_tx_32/Makefile +++ b/src/eth/tb/taxi_axis_xgmii_tx_32/Makefile @@ -37,9 +37,7 @@ VERILOG_SOURCES := $(call uniq_base,$(call process_f_files,$(VERILOG_SOURCES))) export PARAM_DATA_W := 32 export PARAM_GBX_IF_EN := 0 export PARAM_GBX_CNT := 1 -export PARAM_PADDING_EN := 1 export PARAM_DIC_EN := 1 -export PARAM_MIN_FRAME_LEN := 64 export PARAM_PTP_TS_EN := 1 export PARAM_PTP_TS_W := 96 export PARAM_TX_TAG_W := 16 diff --git a/src/eth/tb/taxi_axis_xgmii_tx_32/test_taxi_axis_xgmii_tx_32.py b/src/eth/tb/taxi_axis_xgmii_tx_32/test_taxi_axis_xgmii_tx_32.py index c797e6b..99d4da1 100644 --- a/src/eth/tb/taxi_axis_xgmii_tx_32/test_taxi_axis_xgmii_tx_32.py +++ b/src/eth/tb/taxi_axis_xgmii_tx_32/test_taxi_axis_xgmii_tx_32.py @@ -102,7 +102,7 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12): for test_data in test_frames: await tb.source.send(AxiStreamFrame(test_data, tid=0, tuser=0)) - total_bytes += max(len(test_data), 60)+4 + total_bytes += len(test_data)+4 total_pkts += 1 for test_data in test_frames: @@ -117,7 +117,7 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12): tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns) tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns)) - assert rx_frame.get_payload() == test_data.ljust(60, b'\x00') + assert rx_frame.get_payload() == test_data assert rx_frame.check_fcs() assert rx_frame.ctrl is None assert abs(rx_frame_sfd_ns - ptp_ts_ns - 3.2) < 0.01 @@ -292,8 +292,8 @@ async def run_test_underrun(dut, ifg=12): tb.log.info("%s: %d", stat, val) assert tb.stats["tx_start_packet"] == 3 - assert tb.stats["stat_tx_byte"] > 64*2 + 32 - assert tb.stats["stat_tx_pkt_len"] > 64*2 + 32 + assert tb.stats["stat_tx_byte"] > 64*2 + 8 + assert tb.stats["stat_tx_pkt_len"] > 64*2 + 8 assert tb.stats["stat_tx_pkt_ucast"] == 3 assert tb.stats["stat_tx_pkt_mcast"] == 0 assert tb.stats["stat_tx_pkt_bcast"] == 0 @@ -522,9 +522,7 @@ def test_taxi_axis_xgmii_tx_32(request, dic_en): parameters['DATA_W'] = 32 parameters['GBX_IF_EN'] = 0 parameters['GBX_CNT'] = 1 - parameters['PADDING_EN'] = 1 parameters['DIC_EN'] = dic_en - parameters['MIN_FRAME_LEN'] = 64 parameters['PTP_TS_EN'] = 1 parameters['PTP_TS_W'] = 96 parameters['TX_TAG_W'] = 16 diff --git a/src/eth/tb/taxi_axis_xgmii_tx_32/test_taxi_axis_xgmii_tx_32.sv b/src/eth/tb/taxi_axis_xgmii_tx_32/test_taxi_axis_xgmii_tx_32.sv index ea1b565..fb24d27 100644 --- a/src/eth/tb/taxi_axis_xgmii_tx_32/test_taxi_axis_xgmii_tx_32.sv +++ b/src/eth/tb/taxi_axis_xgmii_tx_32/test_taxi_axis_xgmii_tx_32.sv @@ -21,9 +21,7 @@ module test_taxi_axis_xgmii_tx_32 # parameter DATA_W = 32, parameter logic GBX_IF_EN = 1'b0, parameter GBX_CNT = 1, - parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, - parameter MIN_FRAME_LEN = 64, parameter logic PTP_TS_EN = 1'b0, parameter PTP_TS_W = 96, parameter TX_TAG_W = 16, @@ -72,9 +70,7 @@ taxi_axis_xgmii_tx_32 #( .CTRL_W(CTRL_W), .GBX_IF_EN(GBX_IF_EN), .GBX_CNT(GBX_CNT), - .PADDING_EN(PADDING_EN), .DIC_EN(DIC_EN), - .MIN_FRAME_LEN(MIN_FRAME_LEN), .PTP_TS_EN(PTP_TS_EN), .PTP_TS_W(PTP_TS_W), .TX_CPL_CTRL_IN_TUSER(TX_CPL_CTRL_IN_TUSER) diff --git a/src/eth/tb/taxi_axis_xgmii_tx_64/Makefile b/src/eth/tb/taxi_axis_xgmii_tx_64/Makefile index 92e9b0d..a38e17f 100644 --- a/src/eth/tb/taxi_axis_xgmii_tx_64/Makefile +++ b/src/eth/tb/taxi_axis_xgmii_tx_64/Makefile @@ -37,9 +37,7 @@ VERILOG_SOURCES := $(call uniq_base,$(call process_f_files,$(VERILOG_SOURCES))) export PARAM_DATA_W := 64 export PARAM_GBX_IF_EN := 0 export PARAM_GBX_CNT := 1 -export PARAM_PADDING_EN := 1 export PARAM_DIC_EN := 1 -export PARAM_MIN_FRAME_LEN := 64 export PARAM_PTP_TS_EN := 1 export PARAM_PTP_TS_FMT_TOD := 1 export PARAM_PTP_TS_W := $(if $(filter-out 1,$(PARAM_PTP_TS_FMT_TOD)),64,96) diff --git a/src/eth/tb/taxi_axis_xgmii_tx_64/test_taxi_axis_xgmii_tx_64.py b/src/eth/tb/taxi_axis_xgmii_tx_64/test_taxi_axis_xgmii_tx_64.py index 42a5961..4b875cc 100644 --- a/src/eth/tb/taxi_axis_xgmii_tx_64/test_taxi_axis_xgmii_tx_64.py +++ b/src/eth/tb/taxi_axis_xgmii_tx_64/test_taxi_axis_xgmii_tx_64.py @@ -101,7 +101,7 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12): for test_data in test_frames: await tb.source.send(AxiStreamFrame(test_data, tid=0, tuser=0)) - total_bytes += max(len(test_data), 60)+4 + total_bytes += len(test_data)+4 total_pkts += 1 for test_data in test_frames: @@ -120,7 +120,7 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12): tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns) tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns)) - assert rx_frame.get_payload() == test_data.ljust(60, b'\x00') + assert rx_frame.get_payload() == test_data assert rx_frame.check_fcs() assert rx_frame.ctrl is None assert abs(rx_frame_sfd_ns - ptp_ts_ns - 6.4) < 0.01 @@ -296,8 +296,8 @@ async def run_test_underrun(dut, ifg=12): for stat, val in tb.stats.items(): tb.log.info("%s: %d", stat, val) - assert tb.stats["stat_tx_byte"] > 64*2 + 32 - assert tb.stats["stat_tx_pkt_len"] > 64*2 + 32 + assert tb.stats["stat_tx_byte"] > 64*2 + 8 + assert tb.stats["stat_tx_pkt_len"] > 64*2 + 8 assert tb.stats["stat_tx_pkt_ucast"] == 3 assert tb.stats["stat_tx_pkt_mcast"] == 0 assert tb.stats["stat_tx_pkt_bcast"] == 0 @@ -524,9 +524,7 @@ def test_taxi_axis_xgmii_tx_64(request, enable_dic): parameters['DATA_W'] = 64 parameters['GBX_IF_EN'] = 0 parameters['GBX_CNT'] = 1 - parameters['PADDING_EN'] = 1 parameters['DIC_EN'] = enable_dic - parameters['MIN_FRAME_LEN'] = 64 parameters['PTP_TS_EN'] = 1 parameters['PTP_TS_FMT_TOD'] = 1 parameters['PTP_TS_W'] = 96 if parameters['PTP_TS_FMT_TOD'] else 64 diff --git a/src/eth/tb/taxi_axis_xgmii_tx_64/test_taxi_axis_xgmii_tx_64.sv b/src/eth/tb/taxi_axis_xgmii_tx_64/test_taxi_axis_xgmii_tx_64.sv index ad29ca8..2afe2de 100644 --- a/src/eth/tb/taxi_axis_xgmii_tx_64/test_taxi_axis_xgmii_tx_64.sv +++ b/src/eth/tb/taxi_axis_xgmii_tx_64/test_taxi_axis_xgmii_tx_64.sv @@ -21,9 +21,7 @@ module test_taxi_axis_xgmii_tx_64 # parameter DATA_W = 64, parameter logic GBX_IF_EN = 1'b0, parameter GBX_CNT = 1, - parameter logic PADDING_EN = 1'b1, parameter logic DIC_EN = 1'b1, - parameter MIN_FRAME_LEN = 64, parameter logic PTP_TS_EN = 1'b0, parameter logic PTP_TS_FMT_TOD = 1'b1, parameter PTP_TS_W = PTP_TS_FMT_TOD ? 96 : 64, @@ -73,9 +71,7 @@ taxi_axis_xgmii_tx_64 #( .CTRL_W(CTRL_W), .GBX_IF_EN(GBX_IF_EN), .GBX_CNT(GBX_CNT), - .PADDING_EN(PADDING_EN), .DIC_EN(DIC_EN), - .MIN_FRAME_LEN(MIN_FRAME_LEN), .PTP_TS_EN(PTP_TS_EN), .PTP_TS_W(PTP_TS_W), .TX_CPL_CTRL_IN_TUSER(TX_CPL_CTRL_IN_TUSER)