From 4bf0bcca8a801b7c959d6a2c77ab22e3ef7261f0 Mon Sep 17 00:00:00 2001 From: felsabbagh3 Date: Sat, 16 May 2020 17:56:15 -0700 Subject: [PATCH] Fix incorrect CSR forwarding for GID between different warps --- hw/rtl/VX_csr_pipe.v | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/rtl/VX_csr_pipe.v b/hw/rtl/VX_csr_pipe.v index 397aa0f0..4efa4a93 100644 --- a/hw/rtl/VX_csr_pipe.v +++ b/hw/rtl/VX_csr_pipe.v @@ -38,7 +38,10 @@ module VX_csr_pipe #( .wb_valid (| writeback_if.valid) ); - assign csr_read_data = (csr_address_s2 == csr_req_if.csr_address) ? csr_updated_data_s2 : csr_read_data_unqual; + // wire hazard = (csr_address_s2 == csr_req_if.csr_address) & (warp_num_s2 == csr_req_if.warp_num) & |(valid_s2) & is_csr_s2; + wire car_hazard = (csr_address_s2 == csr_req_if.csr_address) & (warp_num_s2 == csr_req_if.warp_num) & |(valid_s2) & is_csr_s2; + + assign csr_read_data = car_hazard ? csr_updated_data_s2 : csr_read_data_unqual; reg [31:0] csr_updated_data;