mirror of
https://github.com/fpganinja/taxi.git
synced 2025-12-07 00:28:38 -08:00
axi: Dereference interface arrays in interconnect modules when extracting parameters
Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
@@ -56,15 +56,15 @@ module taxi_axi_interconnect_rd #
|
||||
);
|
||||
|
||||
// extract parameters
|
||||
localparam DATA_W = s_axi_rd.DATA_W;
|
||||
localparam S_ADDR_W = s_axi_rd.ADDR_W;
|
||||
localparam STRB_W = s_axi_rd.STRB_W;
|
||||
localparam S_ID_W = s_axi_rd.ID_W;
|
||||
localparam DATA_W = s_axi_rd[0].DATA_W;
|
||||
localparam S_ADDR_W = s_axi_rd[0].ADDR_W;
|
||||
localparam STRB_W = s_axi_rd[0].STRB_W;
|
||||
localparam S_ID_W = s_axi_rd[0].ID_W;
|
||||
localparam M_ID_W = m_axi_rd.ID_W;
|
||||
localparam logic ARUSER_EN = s_axi_rd.ARUSER_EN && m_axi_rd.ARUSER_EN;
|
||||
localparam ARUSER_W = s_axi_rd.ARUSER_W;
|
||||
localparam logic RUSER_EN = s_axi_rd.RUSER_EN && m_axi_rd.RUSER_EN;
|
||||
localparam RUSER_W = s_axi_rd.RUSER_W;
|
||||
localparam logic ARUSER_EN = s_axi_rd[0].ARUSER_EN && m_axi_rd.ARUSER_EN;
|
||||
localparam ARUSER_W = s_axi_rd[0].ARUSER_W;
|
||||
localparam logic RUSER_EN = s_axi_rd[0].RUSER_EN && m_axi_rd.RUSER_EN;
|
||||
localparam RUSER_W = s_axi_rd[0].RUSER_W;
|
||||
|
||||
localparam CL_S_COUNT = $clog2(S_COUNT);
|
||||
localparam CL_M_COUNT = $clog2(M_COUNT);
|
||||
@@ -102,7 +102,7 @@ endfunction
|
||||
localparam [M_COUNT*M_REGIONS-1:0][ADDR_W-1:0] M_BASE_ADDR_INT = M_BASE_ADDR != 0 ? (M_COUNT*M_REGIONS*ADDR_W)'(M_BASE_ADDR) : calcBaseAddrs(0);
|
||||
|
||||
// check configuration
|
||||
if (s_axi_rd.ADDR_W != ADDR_W)
|
||||
if (s_axi_rd[0].ADDR_W != ADDR_W)
|
||||
$fatal(0, "Error: Interface ADDR_W parameter mismatch (instance %m)");
|
||||
|
||||
if (m_axi_rd.DATA_W != DATA_W)
|
||||
@@ -111,12 +111,10 @@ if (m_axi_rd.DATA_W != DATA_W)
|
||||
if (m_axi_rd.STRB_W != STRB_W)
|
||||
$fatal(0, "Error: Interface STRB_W parameter mismatch (instance %m)");
|
||||
|
||||
initial begin
|
||||
if (M_REGIONS < 1 || M_REGIONS > 16) begin
|
||||
$error("Error: M_REGIONS must be between 1 and 16 (instance %m)");
|
||||
$finish;
|
||||
end
|
||||
if (M_REGIONS < 1 || M_REGIONS > 16)
|
||||
$fatal(0, "Error: M_REGIONS must be between 1 and 16 (instance %m)");
|
||||
|
||||
initial begin
|
||||
for (integer i = 0; i < M_COUNT*M_REGIONS; i = i + 1) begin
|
||||
/* verilator lint_off UNSIGNED */
|
||||
if (M_ADDR_W_INT[i] != 0 && (M_ADDR_W_INT[i] < $clog2(STRB_W) || M_ADDR_W_INT[i] > ADDR_W)) begin
|
||||
|
||||
@@ -56,17 +56,17 @@ module taxi_axi_interconnect_wr #
|
||||
);
|
||||
|
||||
// extract parameters
|
||||
localparam DATA_W = s_axi_wr.DATA_W;
|
||||
localparam S_ADDR_W = s_axi_wr.ADDR_W;
|
||||
localparam STRB_W = s_axi_wr.STRB_W;
|
||||
localparam S_ID_W = s_axi_wr.ID_W;
|
||||
localparam M_ID_W = m_axi_wr.ID_W;
|
||||
localparam logic AWUSER_EN = s_axi_wr.AWUSER_EN && m_axi_wr.AWUSER_EN;
|
||||
localparam AWUSER_W = s_axi_wr.AWUSER_W;
|
||||
localparam logic WUSER_EN = s_axi_wr.WUSER_EN && m_axi_wr.WUSER_EN;
|
||||
localparam WUSER_W = s_axi_wr.WUSER_W;
|
||||
localparam logic BUSER_EN = s_axi_wr.BUSER_EN && m_axi_wr.BUSER_EN;
|
||||
localparam BUSER_W = s_axi_wr.BUSER_W;
|
||||
localparam DATA_W = s_axi_wr[0].DATA_W;
|
||||
localparam S_ADDR_W = s_axi_wr[0].ADDR_W;
|
||||
localparam STRB_W = s_axi_wr[0].STRB_W;
|
||||
localparam S_ID_W = s_axi_wr[0].ID_W;
|
||||
localparam M_ID_W = m_axi_wr[0].ID_W;
|
||||
localparam logic AWUSER_EN = s_axi_wr[0].AWUSER_EN && m_axi_wr[0].AWUSER_EN;
|
||||
localparam AWUSER_W = s_axi_wr[0].AWUSER_W;
|
||||
localparam logic WUSER_EN = s_axi_wr[0].WUSER_EN && m_axi_wr[0].WUSER_EN;
|
||||
localparam WUSER_W = s_axi_wr[0].WUSER_W;
|
||||
localparam logic BUSER_EN = s_axi_wr[0].BUSER_EN && m_axi_wr[0].BUSER_EN;
|
||||
localparam BUSER_W = s_axi_wr[0].BUSER_W;
|
||||
|
||||
localparam CL_S_COUNT = $clog2(S_COUNT);
|
||||
localparam CL_M_COUNT = $clog2(M_COUNT);
|
||||
@@ -104,13 +104,13 @@ endfunction
|
||||
localparam [M_COUNT*M_REGIONS-1:0][ADDR_W-1:0] M_BASE_ADDR_INT = M_BASE_ADDR != 0 ? (M_COUNT*M_REGIONS*ADDR_W)'(M_BASE_ADDR) : calcBaseAddrs(0);
|
||||
|
||||
// check configuration
|
||||
if (s_axi_wr.ADDR_W != ADDR_W)
|
||||
if (s_axi_wr[0].ADDR_W != ADDR_W)
|
||||
$fatal(0, "Error: Interface ADDR_W parameter mismatch (instance %m)");
|
||||
|
||||
if (m_axi_wr.DATA_W != DATA_W)
|
||||
if (m_axi_wr[0].DATA_W != DATA_W)
|
||||
$fatal(0, "Error: Interface DATA_W parameter mismatch (instance %m)");
|
||||
|
||||
if (m_axi_wr.STRB_W != STRB_W)
|
||||
if (m_axi_wr[0].STRB_W != STRB_W)
|
||||
$fatal(0, "Error: Interface STRB_W parameter mismatch (instance %m)");
|
||||
|
||||
initial begin
|
||||
|
||||
@@ -56,13 +56,13 @@ module taxi_axil_interconnect_rd #
|
||||
);
|
||||
|
||||
// extract parameters
|
||||
localparam DATA_W = s_axil_rd.DATA_W;
|
||||
localparam S_ADDR_W = s_axil_rd.ADDR_W;
|
||||
localparam STRB_W = s_axil_rd.STRB_W;
|
||||
localparam logic ARUSER_EN = s_axil_rd.ARUSER_EN && m_axil_rd.ARUSER_EN;
|
||||
localparam ARUSER_W = s_axil_rd.ARUSER_W;
|
||||
localparam logic RUSER_EN = s_axil_rd.RUSER_EN && m_axil_rd.RUSER_EN;
|
||||
localparam RUSER_W = s_axil_rd.RUSER_W;
|
||||
localparam DATA_W = s_axil_rd[0].DATA_W;
|
||||
localparam S_ADDR_W = s_axil_rd[0].ADDR_W;
|
||||
localparam STRB_W = s_axil_rd[0].STRB_W;
|
||||
localparam logic ARUSER_EN = s_axil_rd[0].ARUSER_EN && m_axil_rd[0].ARUSER_EN;
|
||||
localparam ARUSER_W = s_axil_rd[0].ARUSER_W;
|
||||
localparam logic RUSER_EN = s_axil_rd[0].RUSER_EN && m_axil_rd[0].RUSER_EN;
|
||||
localparam RUSER_W = s_axil_rd[0].RUSER_W;
|
||||
|
||||
localparam CL_S_COUNT = $clog2(S_COUNT);
|
||||
localparam CL_M_COUNT = $clog2(M_COUNT);
|
||||
@@ -100,13 +100,13 @@ endfunction
|
||||
localparam [M_COUNT*M_REGIONS-1:0][ADDR_W-1:0] M_BASE_ADDR_INT = M_BASE_ADDR != 0 ? (M_COUNT*M_REGIONS*ADDR_W)'(M_BASE_ADDR) : calcBaseAddrs(0);
|
||||
|
||||
// check configuration
|
||||
if (s_axil_rd.ADDR_W != ADDR_W)
|
||||
if (s_axil_rd[0].ADDR_W != ADDR_W)
|
||||
$fatal(0, "Error: Interface ADDR_W parameter mismatch (instance %m)");
|
||||
|
||||
if (m_axil_rd.DATA_W != DATA_W)
|
||||
if (m_axil_rd[0].DATA_W != DATA_W)
|
||||
$fatal(0, "Error: Interface DATA_W parameter mismatch (instance %m)");
|
||||
|
||||
if (m_axil_rd.STRB_W != STRB_W)
|
||||
if (m_axil_rd[0].STRB_W != STRB_W)
|
||||
$fatal(0, "Error: Interface STRB_W parameter mismatch (instance %m)");
|
||||
|
||||
initial begin
|
||||
|
||||
@@ -56,15 +56,15 @@ module taxi_axil_interconnect_wr #
|
||||
);
|
||||
|
||||
// extract parameters
|
||||
localparam DATA_W = s_axil_wr.DATA_W;
|
||||
localparam S_ADDR_W = s_axil_wr.ADDR_W;
|
||||
localparam STRB_W = s_axil_wr.STRB_W;
|
||||
localparam logic AWUSER_EN = s_axil_wr.AWUSER_EN && m_axil_wr.AWUSER_EN;
|
||||
localparam AWUSER_W = s_axil_wr.AWUSER_W;
|
||||
localparam logic WUSER_EN = s_axil_wr.WUSER_EN && m_axil_wr.WUSER_EN;
|
||||
localparam WUSER_W = s_axil_wr.WUSER_W;
|
||||
localparam logic BUSER_EN = s_axil_wr.BUSER_EN && m_axil_wr.BUSER_EN;
|
||||
localparam BUSER_W = s_axil_wr.BUSER_W;
|
||||
localparam DATA_W = s_axil_wr[0].DATA_W;
|
||||
localparam S_ADDR_W = s_axil_wr[0].ADDR_W;
|
||||
localparam STRB_W = s_axil_wr[0].STRB_W;
|
||||
localparam logic AWUSER_EN = s_axil_wr[0].AWUSER_EN && m_axil_wr.AWUSER_EN;
|
||||
localparam AWUSER_W = s_axil_wr[0].AWUSER_W;
|
||||
localparam logic WUSER_EN = s_axil_wr[0].WUSER_EN && m_axil_wr.WUSER_EN;
|
||||
localparam WUSER_W = s_axil_wr[0].WUSER_W;
|
||||
localparam logic BUSER_EN = s_axil_wr[0].BUSER_EN && m_axil_wr.BUSER_EN;
|
||||
localparam BUSER_W = s_axil_wr[0].BUSER_W;
|
||||
|
||||
localparam CL_S_COUNT = $clog2(S_COUNT);
|
||||
localparam CL_M_COUNT = $clog2(M_COUNT);
|
||||
@@ -102,7 +102,7 @@ endfunction
|
||||
localparam [M_COUNT*M_REGIONS-1:0][ADDR_W-1:0] M_BASE_ADDR_INT = M_BASE_ADDR != 0 ? (M_COUNT*M_REGIONS*ADDR_W)'(M_BASE_ADDR) : calcBaseAddrs(0);
|
||||
|
||||
// check configuration
|
||||
if (s_axil_wr.ADDR_W != ADDR_W)
|
||||
if (s_axil_wr[0].ADDR_W != ADDR_W)
|
||||
$fatal(0, "Error: Interface ADDR_W parameter mismatch (instance %m)");
|
||||
|
||||
if (m_axil_wr.DATA_W != DATA_W)
|
||||
|
||||
Reference in New Issue
Block a user