Before ISA2.0
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
module VX_back_end (
|
module VX_back_end (
|
||||||
input wire clk,
|
input wire clk,
|
||||||
input wire reset,
|
input wire reset,
|
||||||
input wire fetch_delay,
|
|
||||||
input wire schedule_delay,
|
input wire schedule_delay,
|
||||||
|
|
||||||
input wire[31:0] csr_decode_csr_data,
|
input wire[31:0] csr_decode_csr_data,
|
||||||
@@ -23,12 +22,6 @@ module VX_back_end (
|
|||||||
VX_csr_write_request_inter VX_csr_w_req
|
VX_csr_write_request_inter VX_csr_w_req
|
||||||
);
|
);
|
||||||
|
|
||||||
wire memory_delay;
|
|
||||||
|
|
||||||
assign out_mem_delay = memory_delay;
|
|
||||||
|
|
||||||
|
|
||||||
wire total_freeze = fetch_delay || memory_delay;
|
|
||||||
|
|
||||||
wire[11:0] execute_csr_address;
|
wire[11:0] execute_csr_address;
|
||||||
wire execute_is_csr;
|
wire execute_is_csr;
|
||||||
@@ -84,7 +77,7 @@ VX_lsu load_store_unit(
|
|||||||
.VX_mem_wb (VX_mem_wb),
|
.VX_mem_wb (VX_mem_wb),
|
||||||
.VX_dcache_rsp(VX_dcache_rsp),
|
.VX_dcache_rsp(VX_dcache_rsp),
|
||||||
.VX_dcache_req(VX_dcache_req),
|
.VX_dcache_req(VX_dcache_req),
|
||||||
.out_delay (memory_delay)
|
.out_delay (out_mem_delay)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,11 @@
|
|||||||
|
|
||||||
module VX_fetch (
|
module VX_fetch (
|
||||||
input wire clk,
|
input wire clk,
|
||||||
input wire in_memory_delay,
|
|
||||||
VX_wstall_inter VX_wstall,
|
VX_wstall_inter VX_wstall,
|
||||||
input wire schedule_delay,
|
input wire schedule_delay,
|
||||||
VX_icache_response_inter icache_response,
|
VX_icache_response_inter icache_response,
|
||||||
VX_icache_request_inter icache_request,
|
VX_icache_request_inter icache_request,
|
||||||
|
|
||||||
output wire out_delay,
|
|
||||||
output wire out_ebreak,
|
output wire out_ebreak,
|
||||||
VX_jal_response_inter VX_jal_rsp,
|
VX_jal_response_inter VX_jal_rsp,
|
||||||
VX_branch_response_inter VX_branch_rsp,
|
VX_branch_response_inter VX_branch_rsp,
|
||||||
@@ -17,15 +15,11 @@ module VX_fetch (
|
|||||||
VX_warp_ctl_inter VX_warp_ctl
|
VX_warp_ctl_inter VX_warp_ctl
|
||||||
);
|
);
|
||||||
|
|
||||||
// Inputs
|
|
||||||
wire in_freeze = out_delay || in_memory_delay;
|
|
||||||
|
|
||||||
|
|
||||||
// Locals
|
// Locals
|
||||||
wire pipe_stall;
|
wire pipe_stall;
|
||||||
|
|
||||||
|
|
||||||
assign pipe_stall = in_freeze || schedule_delay;
|
assign pipe_stall = schedule_delay;
|
||||||
|
|
||||||
wire[`NT_M1:0] thread_mask;
|
wire[`NT_M1:0] thread_mask;
|
||||||
wire[`NW_M1:0] warp_num;
|
wire[`NW_M1:0] warp_num;
|
||||||
@@ -66,8 +60,6 @@ module VX_fetch (
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
assign out_delay = 0;
|
|
||||||
|
|
||||||
assign icache_request.pc_address = warp_pc;
|
assign icache_request.pc_address = warp_pc;
|
||||||
assign fe_inst_meta_fd.warp_num = warp_num;
|
assign fe_inst_meta_fd.warp_num = warp_num;
|
||||||
assign fe_inst_meta_fd.valid = thread_mask;
|
assign fe_inst_meta_fd.valid = thread_mask;
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ module VX_front_end (
|
|||||||
input wire clk,
|
input wire clk,
|
||||||
input wire reset,
|
input wire reset,
|
||||||
|
|
||||||
input wire memory_delay,
|
|
||||||
input wire schedule_delay,
|
input wire schedule_delay,
|
||||||
|
|
||||||
VX_warp_ctl_inter VX_warp_ctl,
|
VX_warp_ctl_inter VX_warp_ctl,
|
||||||
@@ -19,7 +18,6 @@ module VX_front_end (
|
|||||||
|
|
||||||
|
|
||||||
output wire[11:0] decode_csr_address,
|
output wire[11:0] decode_csr_address,
|
||||||
output wire fetch_delay,
|
|
||||||
output wire fetch_ebreak
|
output wire fetch_ebreak
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -33,7 +31,7 @@ VX_inst_meta_inter fd_inst_meta_de();
|
|||||||
wire decode_branch_stall;
|
wire decode_branch_stall;
|
||||||
|
|
||||||
|
|
||||||
wire total_freeze = memory_delay || fetch_delay || schedule_delay;
|
wire total_freeze = schedule_delay;
|
||||||
|
|
||||||
/* verilator lint_off UNUSED */
|
/* verilator lint_off UNUSED */
|
||||||
wire real_fetch_ebreak;
|
wire real_fetch_ebreak;
|
||||||
@@ -45,7 +43,6 @@ VX_wstall_inter VX_wstall();
|
|||||||
VX_fetch vx_fetch(
|
VX_fetch vx_fetch(
|
||||||
.clk (clk),
|
.clk (clk),
|
||||||
.VX_wstall (VX_wstall),
|
.VX_wstall (VX_wstall),
|
||||||
.in_memory_delay (memory_delay),
|
|
||||||
.schedule_delay (schedule_delay),
|
.schedule_delay (schedule_delay),
|
||||||
.VX_jal_rsp (VX_jal_rsp),
|
.VX_jal_rsp (VX_jal_rsp),
|
||||||
.icache_response (icache_response_fe),
|
.icache_response (icache_response_fe),
|
||||||
@@ -53,7 +50,6 @@ VX_fetch vx_fetch(
|
|||||||
|
|
||||||
.icache_request (icache_request_fe),
|
.icache_request (icache_request_fe),
|
||||||
.VX_branch_rsp (VX_branch_rsp),
|
.VX_branch_rsp (VX_branch_rsp),
|
||||||
.out_delay (fetch_delay),
|
|
||||||
.out_ebreak (real_fetch_ebreak), // fetch_ebreak
|
.out_ebreak (real_fetch_ebreak), // fetch_ebreak
|
||||||
.fe_inst_meta_fd (fe_inst_meta_fd)
|
.fe_inst_meta_fd (fe_inst_meta_fd)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
module VX_scheduler (
|
module VX_scheduler (
|
||||||
input wire clk,
|
input wire clk,
|
||||||
|
input wire memory_delay,
|
||||||
VX_frE_to_bckE_req_inter VX_bckE_req,
|
VX_frE_to_bckE_req_inter VX_bckE_req,
|
||||||
VX_wb_inter VX_writeback_inter,
|
VX_wb_inter VX_writeback_inter,
|
||||||
|
|
||||||
@@ -38,7 +39,7 @@ module VX_scheduler (
|
|||||||
wire rename_valid = rs1_rename_qual || rs2_rename_qual ;
|
wire rename_valid = rs1_rename_qual || rs2_rename_qual ;
|
||||||
|
|
||||||
|
|
||||||
assign schedule_delay = (rename_valid) && (|VX_bckE_req.valid);
|
assign schedule_delay = (rename_valid) && (|VX_bckE_req.valid) || memory_delay;
|
||||||
|
|
||||||
|
|
||||||
always @(posedge clk) begin
|
always @(posedge clk) begin
|
||||||
|
|||||||
@@ -43,14 +43,12 @@ assign icache_request_pc_address = icache_request_fe.pc_address;
|
|||||||
|
|
||||||
// Front-end to Back-end
|
// Front-end to Back-end
|
||||||
VX_frE_to_bckE_req_inter VX_bckE_req(); // New instruction request to EXE/MEM
|
VX_frE_to_bckE_req_inter VX_bckE_req(); // New instruction request to EXE/MEM
|
||||||
wire fetch_delay;
|
|
||||||
|
|
||||||
|
|
||||||
// Back-end to Front-end
|
// Back-end to Front-end
|
||||||
VX_wb_inter VX_writeback_inter(); // Writeback to GPRs
|
VX_wb_inter VX_writeback_inter(); // Writeback to GPRs
|
||||||
VX_branch_response_inter VX_branch_rsp(); // Branch Resolution to Fetch
|
VX_branch_response_inter VX_branch_rsp(); // Branch Resolution to Fetch
|
||||||
VX_jal_response_inter VX_jal_rsp(); // Jump resolution to Fetch
|
VX_jal_response_inter VX_jal_rsp(); // Jump resolution to Fetch
|
||||||
wire memory_delay;
|
|
||||||
|
|
||||||
// CSR Buses
|
// CSR Buses
|
||||||
VX_csr_write_request_inter VX_csr_w_req();
|
VX_csr_write_request_inter VX_csr_w_req();
|
||||||
@@ -61,6 +59,7 @@ wire[11:0] decode_csr_address;
|
|||||||
VX_warp_ctl_inter VX_warp_ctl();
|
VX_warp_ctl_inter VX_warp_ctl();
|
||||||
|
|
||||||
|
|
||||||
|
wire memory_delay;
|
||||||
wire schedule_delay;
|
wire schedule_delay;
|
||||||
|
|
||||||
|
|
||||||
@@ -70,8 +69,6 @@ VX_front_end vx_front_end(
|
|||||||
.VX_warp_ctl (VX_warp_ctl),
|
.VX_warp_ctl (VX_warp_ctl),
|
||||||
.VX_bckE_req (VX_bckE_req),
|
.VX_bckE_req (VX_bckE_req),
|
||||||
.decode_csr_address (decode_csr_address),
|
.decode_csr_address (decode_csr_address),
|
||||||
.memory_delay (memory_delay),
|
|
||||||
.fetch_delay (fetch_delay),
|
|
||||||
.schedule_delay (schedule_delay),
|
.schedule_delay (schedule_delay),
|
||||||
.icache_response_fe (icache_response_fe),
|
.icache_response_fe (icache_response_fe),
|
||||||
.icache_request_fe (icache_request_fe),
|
.icache_request_fe (icache_request_fe),
|
||||||
@@ -82,6 +79,7 @@ VX_front_end vx_front_end(
|
|||||||
|
|
||||||
VX_scheduler schedule(
|
VX_scheduler schedule(
|
||||||
.clk (clk),
|
.clk (clk),
|
||||||
|
.memory_delay (memory_delay),
|
||||||
.VX_bckE_req (VX_bckE_req),
|
.VX_bckE_req (VX_bckE_req),
|
||||||
.VX_writeback_inter(VX_writeback_inter),
|
.VX_writeback_inter(VX_writeback_inter),
|
||||||
.schedule_delay (schedule_delay)
|
.schedule_delay (schedule_delay)
|
||||||
@@ -91,7 +89,6 @@ VX_back_end vx_back_end(
|
|||||||
.clk (clk),
|
.clk (clk),
|
||||||
.reset (reset),
|
.reset (reset),
|
||||||
.schedule_delay (schedule_delay),
|
.schedule_delay (schedule_delay),
|
||||||
.fetch_delay (fetch_delay),
|
|
||||||
.VX_warp_ctl (VX_warp_ctl),
|
.VX_warp_ctl (VX_warp_ctl),
|
||||||
.VX_bckE_req (VX_bckE_req),
|
.VX_bckE_req (VX_bckE_req),
|
||||||
.csr_decode_csr_data (csr_decode_csr_data),
|
.csr_decode_csr_data (csr_decode_csr_data),
|
||||||
|
|||||||
Reference in New Issue
Block a user