Skip to content

Commit aa5a0d2

Browse files
committed
bug fixes
1 parent b0d7e45 commit aa5a0d2

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

hw/rtl/core/VX_opc_unit.sv

+1-1
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ module VX_opc_unit import VX_gpu_pkg::*; #(
199199
always @(*) begin
200200
other_pending_regs = '0;
201201
for (integer i = 0; i < `NUM_OPCS-1; ++i) begin
202-
other_pending_regs = other_pending_regs | pending_regs_in[i] & {NUM_REGS{staging_if.data.wis == pending_wis_in[i]}};
202+
other_pending_regs |= pending_regs_in[i] & {NUM_REGS{staging_if.data.wis == pending_wis_in[i]}};
203203
end
204204
end
205205
wire war_dp_check = staging_if.data.wb && (other_pending_regs[rd] != 0);

hw/rtl/core/VX_operands.sv

+15-14
Original file line numberDiff line numberDiff line change
@@ -53,20 +53,21 @@ module VX_operands import VX_gpu_pkg::*; #(
5353
reg [`NUM_OPCS-1:0] select_opcs;
5454
always @(*) begin
5555
select_opcs = '1;
56-
if (`NUM_OPCS > 1 && SIMD_COUNT > 1) begin
57-
// SFU cannot handle multiple inflight WCTL instructions, always assign them same collector
58-
// LD/ST instructions should also be ordered via the same collector
59-
if (scoreboard_if.data.ex_type == EX_SFU
60-
&& inst_sfu_is_wctl(scoreboard_if.data.op_type)) begin
61-
// select collector 0
62-
for (int i = 0; i < `NUM_OPCS; ++i) begin
63-
if (i != 0) select_opcs[i] = 0;
64-
end
65-
end else if (scoreboard_if.data.ex_type == EX_LSU) begin
66-
// select collector 1
67-
for (int i = 0; i < `NUM_OPCS; ++i) begin
68-
if (i != 1) select_opcs[i] = 0;
69-
end
56+
// SFU cannot handle multiple inflight WCTL instructions, should use same collector
57+
if (`NUM_OPCS > 1 && SIMD_COUNT > 1
58+
&& scoreboard_if.data.ex_type == EX_SFU
59+
&& inst_sfu_is_wctl(scoreboard_if.data.op_type)) begin
60+
// select collector 0
61+
for (int i = 0; i < `NUM_OPCS; ++i) begin
62+
if (i != 0) select_opcs[i] = 0;
63+
end
64+
end
65+
// LSU cannot handle out of order LD/ST instructions, should use same collector
66+
if (`NUM_OPCS > 1
67+
&& scoreboard_if.data.ex_type == EX_LSU) begin
68+
// select collector 1
69+
for (int i = 0; i < `NUM_OPCS; ++i) begin
70+
if (i != 1) select_opcs[i] = 0;
7071
end
7172
end
7273
end

0 commit comments

Comments
 (0)