dma: Use SV enums in DMA components

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich
2026-02-27 20:12:47 -08:00
parent ee204d1665
commit 901606a64d
9 changed files with 156 additions and 121 deletions

View File

@@ -107,13 +107,14 @@ if (AXI_MAX_BURST_LEN < 1 || AXI_MAX_BURST_LEN > 256)
if (rd_desc_req.SRC_ADDR_W < AXI_ADDR_W)
$fatal(0, "Error: Descriptor address width is not sufficient (instance %m)");
localparam logic [1:0]
typedef enum logic [1:0] {
AXI_RESP_OKAY = 2'b00,
AXI_RESP_EXOKAY = 2'b01,
AXI_RESP_SLVERR = 2'b10,
AXI_RESP_DECERR = 2'b11;
AXI_RESP_DECERR = 2'b11
} axi_resp_t;
localparam logic [3:0]
typedef enum logic [3:0] {
DMA_ERROR_NONE = 4'd0,
DMA_ERROR_TIMEOUT = 4'd1,
DMA_ERROR_PARITY = 4'd2,
@@ -124,19 +125,22 @@ localparam logic [3:0]
DMA_ERROR_PCIE_FLR = 4'd8,
DMA_ERROR_PCIE_CPL_POISONED = 4'd9,
DMA_ERROR_PCIE_CPL_STATUS_UR = 4'd10,
DMA_ERROR_PCIE_CPL_STATUS_CA = 4'd11;
DMA_ERROR_PCIE_CPL_STATUS_CA = 4'd11
} dma_error_t;
localparam logic [0:0]
AXI_STATE_IDLE = 1'd0,
AXI_STATE_START = 1'd1;
typedef enum logic [0:0] {
AXI_STATE_IDLE,
AXI_STATE_START
} axi_state_t;
logic [0:0] axi_state_reg = AXI_STATE_IDLE, axi_state_next;
axi_state_t axi_state_reg = AXI_STATE_IDLE, axi_state_next;
localparam logic [0:0]
AXIS_STATE_IDLE = 1'd0,
AXIS_STATE_READ = 1'd1;
typedef enum logic [0:0] {
AXIS_STATE_IDLE,
AXIS_STATE_READ
} axis_state_t;
logic [0:0] axis_state_reg = AXIS_STATE_IDLE, axis_state_next;
axis_state_t axis_state_reg = AXIS_STATE_IDLE, axis_state_next;
// datapath control signals
logic transfer_in_save;