eth: Use SV enums in MAC logic

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich
2026-02-27 15:04:08 -08:00
parent 8d7cdaa689
commit 5df2aa3cfd
12 changed files with 266 additions and 179 deletions

View File

@@ -93,11 +93,12 @@ if (m_axis_rx.DATA_W != DATA_W)
if (m_axis_rx.USER_W != USER_W)
$fatal(0, "Error: Interface USER_W parameter mismatch (instance %m)");
localparam [7:0]
typedef enum logic [7:0] {
ETH_PRE = 8'h55,
ETH_SFD = 8'hD5;
ETH_SFD = 8'hD5
} eth_pre_t;
localparam [6:0]
typedef enum logic [6:0] {
CTRL_IDLE = 7'h00,
CTRL_LPI = 7'h06,
CTRL_ERROR = 7'h1e,
@@ -106,17 +107,20 @@ localparam [6:0]
CTRL_RES_2 = 7'h4b,
CTRL_RES_3 = 7'h55,
CTRL_RES_4 = 7'h66,
CTRL_RES_5 = 7'h78;
CTRL_RES_5 = 7'h78
} baser_ctrl_t;
localparam [3:0]
typedef enum logic [3:0] {
O_SEQ_OS = 4'h0,
O_SIG_OS = 4'hf;
O_SIG_OS = 4'hf
} baser_o_t;
localparam [1:0]
typedef enum logic [1:0] {
SYNC_DATA = 2'b10,
SYNC_CTRL = 2'b01;
SYNC_CTRL = 2'b01
} baser_sync_t;
localparam [7:0]
typedef enum logic [7:0] {
BLOCK_TYPE_CTRL = 8'h1e, // C7 C6 C5 C4 C3 C2 C1 C0 BT
BLOCK_TYPE_OS_4 = 8'h2d, // D7 D6 D5 O4 C3 C2 C1 C0 BT
BLOCK_TYPE_START_4 = 8'h33, // D7 D6 D5 C3 C2 C1 C0 BT
@@ -131,14 +135,16 @@ localparam [7:0]
BLOCK_TYPE_TERM_4 = 8'hcc, // C7 C6 C5 D3 D2 D1 D0 BT
BLOCK_TYPE_TERM_5 = 8'hd2, // C7 C6 D4 D3 D2 D1 D0 BT
BLOCK_TYPE_TERM_6 = 8'he1, // C7 D5 D4 D3 D2 D1 D0 BT
BLOCK_TYPE_TERM_7 = 8'hff; // D6 D5 D4 D3 D2 D1 D0 BT
BLOCK_TYPE_TERM_7 = 8'hff // D6 D5 D4 D3 D2 D1 D0 BT
} baser_block_type_t;
localparam [1:0]
STATE_IDLE = 2'd0,
STATE_PAYLOAD = 2'd1,
STATE_LAST = 2'd2;
typedef enum logic [1:0] {
STATE_IDLE,
STATE_PAYLOAD,
STATE_LAST
} state_t;
logic [1:0] state_reg = STATE_IDLE, state_next;
state_t state_reg = STATE_IDLE, state_next;
logic lanes_swapped_reg = 1'b0;
logic lanes_swapped_d1_reg = 1'b0;