File tree Expand file tree Collapse file tree 2 files changed +16
-15
lines changed
Expand file tree Collapse file tree 2 files changed +16
-15
lines changed Original file line number Diff line number Diff 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 );
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments