From efc907e4c9452831d5703b99516a76e98bb4f671 Mon Sep 17 00:00:00 2001 From: Alex Forencich Date: Thu, 6 Nov 2025 17:58:33 -0800 Subject: [PATCH] axis: Add assertions to FIFO modules for USER_EN settings Signed-off-by: Alex Forencich --- src/axis/rtl/taxi_axis_async_fifo.sv | 6 ++++++ src/axis/rtl/taxi_axis_fifo.sv | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/axis/rtl/taxi_axis_async_fifo.sv b/src/axis/rtl/taxi_axis_async_fifo.sv index b6d2cab..d900c46 100644 --- a/src/axis/rtl/taxi_axis_async_fifo.sv +++ b/src/axis/rtl/taxi_axis_async_fifo.sv @@ -142,6 +142,12 @@ if (m_axis.DATA_W != DATA_W) if (KEEP_EN && m_axis.KEEP_W != KEEP_W) $fatal(0, "Error: Interface KEEP_W parameter mismatch (instance %m)"); +if (DROP_BAD_FRAME && !s_axis.USER_EN) + $fatal(0, "Error: DROP_BAD_FRAME set requires s_axis.USER_EN (instance %m)"); + +if (MARK_WHEN_FULL && !m_axis.USER_EN) + $fatal(0, "Error: MARK_WHEN_FULL set requires m_axis.USER_EN (instance %m)"); + localparam KEEP_OFFSET = DATA_W; localparam STRB_OFFSET = KEEP_OFFSET + (KEEP_EN ? KEEP_W : 0); localparam LAST_OFFSET = STRB_OFFSET + (STRB_EN ? KEEP_W : 0); diff --git a/src/axis/rtl/taxi_axis_fifo.sv b/src/axis/rtl/taxi_axis_fifo.sv index a4fce7a..a936089 100644 --- a/src/axis/rtl/taxi_axis_fifo.sv +++ b/src/axis/rtl/taxi_axis_fifo.sv @@ -130,10 +130,16 @@ if (m_axis.DATA_W != DATA_W) if (KEEP_EN && m_axis.KEEP_W != KEEP_W) $fatal(0, "Error: Interface KEEP_W parameter mismatch (instance %m)"); +if (DROP_BAD_FRAME && !s_axis.USER_EN) + $fatal(0, "Error: DROP_BAD_FRAME set requires s_axis.USER_EN (instance %m)"); + +if (MARK_WHEN_FULL && !m_axis.USER_EN) + $fatal(0, "Error: MARK_WHEN_FULL set requires m_axis.USER_EN (instance %m)"); + localparam KEEP_OFFSET = DATA_W; localparam STRB_OFFSET = KEEP_OFFSET + (KEEP_EN ? KEEP_W : 0); localparam LAST_OFFSET = STRB_OFFSET + (STRB_EN ? KEEP_W : 0); -localparam ID_OFFSET = LAST_OFFSET + (LAST_EN ? 1 : 0); +localparam ID_OFFSET = LAST_OFFSET + (LAST_EN ? 1 : 0); localparam DEST_OFFSET = ID_OFFSET + (ID_EN ? ID_W : 0); localparam USER_OFFSET = DEST_OFFSET + (DEST_EN ? DEST_W : 0); localparam WIDTH = USER_OFFSET + (USER_EN ? USER_W : 0);