diff --git a/src/axi/rtl/taxi_axi_tie_rd.sv b/src/axi/rtl/taxi_axi_tie_rd.sv index 98de758..e4e1d8a 100644 --- a/src/axi/rtl/taxi_axi_tie_rd.sv +++ b/src/axi/rtl/taxi_axi_tie_rd.sv @@ -48,7 +48,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)"); -assign m_axi_rd.arid = s_axi_rd.arid; +if (m_axi_rd.ID_W < ID_W) + $fatal(0, "Error: Output ID_W is narrower than input ID_W, cannot discard ID bits (instance %m)"); + +assign m_axi_rd.arid = m_axi_rd.ID_W'(s_axi_rd.arid); assign m_axi_rd.araddr = m_axi_wr.ADDR_W'(s_axi_rd.araddr); assign m_axi_rd.arlen = s_axi_rd.arlen; assign m_axi_rd.arsize = s_axi_rd.arsize; @@ -62,7 +65,7 @@ assign m_axi_rd.aruser = ARUSER_EN ? s_axi_rd.aruser : '0; assign m_axi_rd.arvalid = s_axi_rd.arvalid; assign s_axi_rd.arready = m_axi_rd.arready; -assign s_axi_rd.rid = m_axi_rd.rid; +assign s_axi_rd.rid = s_axi_rd.ID_W'(m_axi_rd.rid); assign s_axi_rd.rdata = m_axi_rd.rdata; assign s_axi_rd.rresp = m_axi_rd.rresp; assign s_axi_rd.rlast = m_axi_rd.rlast; diff --git a/src/axi/rtl/taxi_axi_tie_wr.sv b/src/axi/rtl/taxi_axi_tie_wr.sv index 52b0955..d940289 100644 --- a/src/axi/rtl/taxi_axi_tie_wr.sv +++ b/src/axi/rtl/taxi_axi_tie_wr.sv @@ -50,8 +50,10 @@ if (m_axi_wr.DATA_W != DATA_W) if (m_axi_wr.STRB_W != STRB_W) $fatal(0, "Error: Interface STRB_W parameter mismatch (instance %m)"); -// bypass AW channel -assign m_axi_wr.awid = s_axi_wr.awid; +if (m_axi_wr.ID_W < ID_W) + $fatal(0, "Error: Output ID_W is narrower than input ID_W, cannot discard ID bits (instance %m)"); + +assign m_axi_wr.awid = m_axi_wr.ID_W'(s_axi_wr.awid); assign m_axi_wr.awaddr = m_axi_wr.ADDR_W'(s_axi_wr.awaddr); assign m_axi_wr.awlen = s_axi_wr.awlen; assign m_axi_wr.awsize = s_axi_wr.awsize; @@ -72,7 +74,7 @@ assign m_axi_wr.wuser = WUSER_EN ? s_axi_wr.wuser : '0; assign m_axi_wr.wvalid = s_axi_wr.wvalid; assign s_axi_wr.wready = m_axi_wr.wready; -assign s_axi_wr.bid = m_axi_wr.bid; +assign s_axi_wr.bid = s_axi_wr.ID_W'(m_axi_wr.bid); assign s_axi_wr.bresp = m_axi_wr.bresp; assign s_axi_wr.buser = BUSER_EN ? m_axi_wr.buser : '0; assign s_axi_wr.bvalid = m_axi_wr.bvalid;