From 63ac8b05087bd586025397f6cd35907df09f4621 Mon Sep 17 00:00:00 2001 From: dofingert Date: Sun, 12 May 2024 20:19:48 +0800 Subject: [PATCH 1/2] Fixing an issue where the MaxSize parameter wasn't taking effect in the tl_broadcast module. Signed-off-by: gmlayer0 --- ip/tl/rtl/tl_broadcast.sv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ip/tl/rtl/tl_broadcast.sv b/ip/tl/rtl/tl_broadcast.sv index 0ce2a7e..9b9e38c 100644 --- a/ip/tl/rtl/tl_broadcast.sv +++ b/ip/tl/rtl/tl_broadcast.sv @@ -498,8 +498,8 @@ module tl_broadcast import tl_pkg::*; #( assign host_b_valid = |probe_pending_q; assign host_b.opcode = ProbeBlock; assign host_b.param = probe_param_q; - assign host_b.size = 6; - assign host_b.address = {address_q[AddrWidth-1:6], 6'd0}; + assign host_b.size = MaxSize; + assign host_b.address = {address_q[AddrWidth-1:MaxSize], {MaxSize{1'b0}}}; // Zero or onehot bit mask of currently probing host. logic [NumCachedHosts-1:0] probe_selected; From d78630818107728e359e2fb870d9eb4d2d25f7bd Mon Sep 17 00:00:00 2001 From: dofingert Date: Sun, 12 May 2024 20:22:05 +0800 Subject: [PATCH 2/2] Update logic for probe_ack_pending_d in the tl_broadcast module to avoid potential deadlock issues Signed-off-by: gmlayer0 --- ip/tl/rtl/tl_broadcast.sv | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ip/tl/rtl/tl_broadcast.sv b/ip/tl/rtl/tl_broadcast.sv index 9b9e38c..97d2a4f 100644 --- a/ip/tl/rtl/tl_broadcast.sv +++ b/ip/tl/rtl/tl_broadcast.sv @@ -419,9 +419,7 @@ module tl_broadcast import tl_pkg::*; #( // Wait for all probes to be acked. StateInv: begin - if (probe_ack_complete || probe_ack_data_complete) begin - probe_ack_pending_d = probe_ack_pending_q - 1; - end + probe_ack_pending_d = probe_ack_pending_q - probe_ack_complete - probe_ack_data_complete; if (probe_ack_pending_d == 0) begin // We can return to the caller.