From d40c169ad9e9fa475c07e5e29c2217c55c52c0e7 Mon Sep 17 00:00:00 2001 From: Luca Balboni Date: Mon, 10 Nov 2025 16:43:03 +0100 Subject: [PATCH] Fixed sbr_port_rsp_o.gnt stuck at 1 --- src/obi_cut.sv | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/obi_cut.sv b/src/obi_cut.sv index b5f42d5..c2f257e 100644 --- a/src/obi_cut.sv +++ b/src/obi_cut.sv @@ -32,6 +32,11 @@ module obi_cut #( input obi_rsp_t mgr_port_rsp_i ); + // PATCH: Internal ready signal to fix OBI protocol violation + // BUG FIX: spill_register can assert ready_o even when valid_i=0, + // violating OBI protocol which requires gnt=0 when req=0 + logic internal_ready; + spill_register #( .T ( obi_a_chan_t ), .Bypass ( BypassReq ) @@ -39,13 +44,16 @@ module obi_cut #( .clk_i, .rst_ni, .valid_i ( sbr_port_req_i.req ), - .ready_o ( sbr_port_rsp_o.gnt ), + .ready_o ( internal_ready ), // Use internal signal .data_i ( sbr_port_req_i.a ), .valid_o ( mgr_port_req_o.req ), .ready_i ( mgr_port_rsp_i.gnt ), .data_o ( mgr_port_req_o.a ) ); + // PATCH: Ensure gnt=0 when req=0 to comply with OBI protocol + assign sbr_port_rsp_o.gnt = internal_ready & sbr_port_req_i.req; + logic ready_o; logic ready_i; @@ -70,4 +78,4 @@ module obi_cut #( .data_o ( sbr_port_rsp_o.r ) ); -endmodule +endmodule \ No newline at end of file