minor
This commit is contained in:
@@ -79,7 +79,7 @@ module VX_fetch (
|
|||||||
assign fe_inst_meta_fd.valid = thread_mask;
|
assign fe_inst_meta_fd.valid = thread_mask;
|
||||||
|
|
||||||
// assign fe_inst_meta_fd.instruction = (pipe_stall || warp_stall) ? 32'b0 : icache_response.instruction;;
|
// assign fe_inst_meta_fd.instruction = (pipe_stall || warp_stall) ? 32'b0 : icache_response.instruction;;
|
||||||
assign fe_inst_meta_fd.instruction = (thread_mask == 0) ? 32'0 : icache_response.instruction;;
|
assign fe_inst_meta_fd.instruction = (thread_mask == 0) ? 32'b0 : icache_response.instruction;;
|
||||||
assign fe_inst_meta_fd.inst_pc = warp_pc;
|
assign fe_inst_meta_fd.inst_pc = warp_pc;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,25 @@ module VX_warp_scheduler (
|
|||||||
reg[`NT_M1:0] thread_masks[`NW-1:0];
|
reg[`NT_M1:0] thread_masks[`NW-1:0];
|
||||||
reg[31:0] warp_pcs[`NW-1:0];
|
reg[31:0] warp_pcs[`NW-1:0];
|
||||||
|
|
||||||
|
|
||||||
|
// Choosing a warp to wsapwn
|
||||||
|
wire[`NW_M1:0] warp_to_wsapwn;
|
||||||
|
wire found_wspawn;
|
||||||
|
|
||||||
|
wire[`NW_M1:0] warp_to_schedule;
|
||||||
|
wire schedule;
|
||||||
|
|
||||||
|
wire hazard;
|
||||||
|
wire global_stall;
|
||||||
|
|
||||||
|
wire real_schedule;
|
||||||
|
|
||||||
|
wire[31:0] new_pc;
|
||||||
|
|
||||||
|
/* verilator lint_off UNUSED */
|
||||||
|
wire[`NW_M1:0] num_active;
|
||||||
|
/* verilator lint_on UNUSED */
|
||||||
|
|
||||||
reg[1:0] start;
|
reg[1:0] start;
|
||||||
initial begin
|
initial begin
|
||||||
warp_pcs[0] = (32'h80000000 - 4);
|
warp_pcs[0] = (32'h80000000 - 4);
|
||||||
@@ -123,11 +142,11 @@ module VX_warp_scheduler (
|
|||||||
wire should_jal = (jal && (warp_to_schedule == jal_warp_num));
|
wire should_jal = (jal && (warp_to_schedule == jal_warp_num));
|
||||||
wire should_bra = (branch_dir && (warp_to_schedule == branch_warp_num));
|
wire should_bra = (branch_dir && (warp_to_schedule == branch_warp_num));
|
||||||
|
|
||||||
wire hazard = (should_jal || should_bra) && schedule;
|
assign hazard = (should_jal || should_bra) && schedule;
|
||||||
|
|
||||||
wire real_schedule = schedule && !warp_stalled[warp_to_schedule];
|
assign real_schedule = schedule && !warp_stalled[warp_to_schedule];
|
||||||
|
|
||||||
wire global_stall = (stall || wstall || hazard || !real_schedule);
|
assign global_stall = (stall || wstall || hazard || !real_schedule);
|
||||||
|
|
||||||
|
|
||||||
assign warp_pc = warp_pcs[warp_to_schedule];
|
assign warp_pc = warp_pcs[warp_to_schedule];
|
||||||
@@ -135,23 +154,19 @@ module VX_warp_scheduler (
|
|||||||
assign warp_num = warp_to_schedule;
|
assign warp_num = warp_to_schedule;
|
||||||
|
|
||||||
|
|
||||||
wire[31:0] new_pc = warp_pc + 4;
|
assign new_pc = warp_pc + 4;
|
||||||
|
|
||||||
|
|
||||||
assign use_active = (num_active <= 1) ? (warp_active & (~warp_stalled)) : visible_active;
|
assign use_active = (num_active <= 1) ? (warp_active & (~warp_stalled)) : visible_active;
|
||||||
|
|
||||||
// Choosing a warp to schedule
|
// Choosing a warp to schedule
|
||||||
wire[`NW_M1:0] warp_to_schedule;
|
|
||||||
wire schedule;
|
|
||||||
VX_priority_encoder choose_schedule(
|
VX_priority_encoder choose_schedule(
|
||||||
.valids(use_active),
|
.valids(use_active),
|
||||||
.index (warp_to_schedule),
|
.index (warp_to_schedule),
|
||||||
.found (schedule)
|
.found (schedule)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Choosing a warp to wsapwn
|
|
||||||
wire[`NW_M1:0] warp_to_wsapwn;
|
|
||||||
wire found_wspawn;
|
|
||||||
VX_priority_encoder choose_wsapwn(
|
VX_priority_encoder choose_wsapwn(
|
||||||
.valids(~warp_active),
|
.valids(~warp_active),
|
||||||
.index (warp_to_wsapwn),
|
.index (warp_to_wsapwn),
|
||||||
@@ -160,9 +175,6 @@ module VX_warp_scheduler (
|
|||||||
|
|
||||||
|
|
||||||
// Valid counter
|
// Valid counter
|
||||||
/* verilator lint_off UNUSED */
|
|
||||||
wire[`NW_M1:0] num_active;
|
|
||||||
/* verilator lint_on UNUSED */
|
|
||||||
VX_one_counter valid_counter(
|
VX_one_counter valid_counter(
|
||||||
.valids(visible_active),
|
.valids(visible_active),
|
||||||
.ones_found(num_active)
|
.ones_found(num_active)
|
||||||
|
|||||||
Reference in New Issue
Block a user