Skip to content

Commit 253a846

Browse files
committed
bug fixes
1 parent aa5a0d2 commit 253a846

File tree

1 file changed

+29
-28
lines changed

1 file changed

+29
-28
lines changed

hw/rtl/core/VX_operands.sv

+29-28
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ module VX_operands import VX_gpu_pkg::*; #(
4646
wire [ISSUE_WIS_W-1:0] per_opc_pending_wis[`NUM_OPCS];
4747
wire [NUM_REGS-1:0] per_opc_pending_regs[`NUM_OPCS];
4848

49-
`AOS_TO_ITF (per_opc_scoreboard, per_opc_scoreboard_if, `NUM_OPCS, SCB_DATAW)
50-
5149
// collector selection
5250

5351
reg [`NUM_OPCS-1:0] select_opcs;
@@ -72,26 +70,28 @@ module VX_operands import VX_gpu_pkg::*; #(
7270
end
7371
end
7472

75-
wire opc_sel_valid;
76-
wire [`NUM_OPCS-1:0] opc_sel_mask;
77-
78-
wire [`NUM_OPCS-1:0] ready_opcs = select_opcs & per_opc_scoreboard_ready;
73+
`IGNORE_UNOPTFLAT_BEGIN
74+
`AOS_TO_ITF (per_opc_scoreboard, per_opc_scoreboard_if, `NUM_OPCS, SCB_DATAW)
75+
`IGNORE_UNOPTFLAT_END
7976

80-
VX_priority_encoder #(
81-
.N (`NUM_OPCS)
82-
) opc_sel (
83-
.data_in (ready_opcs),
84-
.valid_out (opc_sel_valid),
85-
.onehot_out(opc_sel_mask),
86-
`UNUSED_PIN (index_out)
77+
VX_stream_arb #(
78+
.NUM_INPUTS (1),
79+
.NUM_OUTPUTS (`NUM_OPCS),
80+
.DATAW (SCB_DATAW),
81+
.ARBITER ("P"),
82+
.OUT_BUF (0)
83+
) input_arb (
84+
.clk (clk),
85+
.reset (reset),
86+
.valid_in (scoreboard_if.valid),
87+
.data_in (scoreboard_if.data),
88+
.ready_in (scoreboard_if.ready),
89+
.valid_out (per_opc_scoreboard_valid),
90+
.data_out (per_opc_scoreboard_data),
91+
.ready_out (per_opc_scoreboard_ready & select_opcs),
92+
`UNUSED_PIN(sel_out)
8793
);
8894

89-
for (genvar i = 0; i < `NUM_OPCS; ++i) begin : g_opc_sel
90-
assign per_opc_scoreboard_valid[i] = scoreboard_if.valid && opc_sel_mask[i];
91-
assign per_opc_scoreboard_data[i] = scoreboard_if.data;
92-
assign scoreboard_if.ready = opc_sel_valid;
93-
end
94-
9595
for (genvar i = 0; i < `NUM_OPCS; ++i) begin : g_collectors
9696
wire [`UP(`NUM_OPCS-1)-1:0][ISSUE_WIS_W-1:0] pending_wis_in;
9797
wire [`UP(`NUM_OPCS-1)-1:0][NUM_REGS-1:0] pending_regs_in;
@@ -138,16 +138,17 @@ module VX_operands import VX_gpu_pkg::*; #(
138138
.NUM_INPUTS (`NUM_OPCS),
139139
.NUM_OUTPUTS (1),
140140
.DATAW (OPD_DATAW),
141+
.ARBITER ("R"),
141142
.OUT_BUF (3)
142-
) operands_arb (
143-
.clk (clk),
144-
.reset (reset),
145-
.valid_in (per_opc_operands_valid),
146-
.data_in (per_opc_operands_data),
147-
.ready_in (per_opc_operands_ready),
148-
.valid_out (operands_if.valid),
149-
.data_out (operands_if.data),
150-
.ready_out (operands_if.ready),
143+
) output_arb (
144+
.clk (clk),
145+
.reset (reset),
146+
.valid_in (per_opc_operands_valid),
147+
.data_in (per_opc_operands_data),
148+
.ready_in (per_opc_operands_ready),
149+
.valid_out (operands_if.valid),
150+
.data_out (operands_if.data),
151+
.ready_out (operands_if.ready),
151152
`UNUSED_PIN(sel_out)
152153
);
153154

0 commit comments

Comments
 (0)