From 0d91f8771e0addd8d8e6f2303188aedb726b5ccc Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 7 Sep 2021 23:28:54 -0700 Subject: [PATCH] Workaround fix for Verilator bug with array indexing --- hw/rtl/libs/VX_stream_arbiter.v | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/hw/rtl/libs/VX_stream_arbiter.v b/hw/rtl/libs/VX_stream_arbiter.v index c97798c8..f1d89b60 100644 --- a/hw/rtl/libs/VX_stream_arbiter.v +++ b/hw/rtl/libs/VX_stream_arbiter.v @@ -102,11 +102,27 @@ module VX_stream_arbiter #( for (genvar i = 0; i < NUM_REQS; i++) begin assign valid_data_in[i] = {valid_in[i], data_in[i]}; end - assign {valid_in_sel, data_in_sel} = valid_data_in[sel_index]; + + VX_mux #( + .DATAW (LANES * (1 + DATAW)), + .N (NUM_REQS) + ) data_in_mux ( + .data_in (valid_data_in), + .sel_in (sel_index), + .data_out ({valid_in_sel, data_in_sel}) + ); `UNUSED_VAR (sel_valid) end else begin - assign data_in_sel = data_in[sel_index]; + VX_mux #( + .DATAW (DATAW), + .N (NUM_REQS) + ) data_in_mux ( + .data_in (data_in), + .sel_in (sel_index), + .data_out (data_in_sel) + ); + assign valid_in_sel = sel_valid; end