Added HW threads - Infinite loop
This commit is contained in:
@@ -10,7 +10,7 @@ module VX_forwarding (
|
||||
// INFO FROM EXE
|
||||
input wire[4:0] in_execute_dest,
|
||||
input wire[1:0] in_execute_wb,
|
||||
input wire[31:0] in_execute_alu_result,
|
||||
input wire[31:0] in_execute_alu_result[`NT_M1:0],
|
||||
input wire[31:0] in_execute_PC_next,
|
||||
input wire in_execute_is_csr,
|
||||
input wire[11:0] in_execute_csr_address,
|
||||
@@ -18,8 +18,8 @@ module VX_forwarding (
|
||||
// INFO FROM MEM
|
||||
input wire[4:0] in_memory_dest,
|
||||
input wire[1:0] in_memory_wb,
|
||||
input wire[31:0] in_memory_alu_result,
|
||||
input wire[31:0] in_memory_mem_data,
|
||||
input wire[31:0] in_memory_alu_result[`NT_M1:0],
|
||||
input wire[31:0] in_memory_mem_data[`NT_M1:0],
|
||||
input wire[31:0] in_memory_PC_next,
|
||||
input wire in_memory_is_csr,
|
||||
input wire[11:0] in_memory_csr_address,
|
||||
@@ -28,16 +28,16 @@ module VX_forwarding (
|
||||
// INFO FROM WB
|
||||
input wire[4:0] in_writeback_dest,
|
||||
input wire[1:0] in_writeback_wb,
|
||||
input wire[31:0] in_writeback_alu_result,
|
||||
input wire[31:0] in_writeback_mem_data,
|
||||
input wire[31:0] in_writeback_alu_result[`NT_M1:0],
|
||||
input wire[31:0] in_writeback_mem_data[`NT_M1:0],
|
||||
input wire[31:0] in_writeback_PC_next,
|
||||
|
||||
// OUT SIGNALS
|
||||
output wire out_src1_fwd,
|
||||
output wire out_src2_fwd,
|
||||
output wire out_csr_fwd,
|
||||
output wire[31:0] out_src1_fwd_data,
|
||||
output wire[31:0] out_src2_fwd_data,
|
||||
output wire[31:0] out_src1_fwd_data[`NT_M1:0],
|
||||
output wire[31:0] out_src2_fwd_data[`NT_M1:0],
|
||||
output wire[31:0] out_csr_fwd_data,
|
||||
output wire out_fwd_stall
|
||||
);
|
||||
@@ -61,6 +61,21 @@ module VX_forwarding (
|
||||
wire csr_exe_fwd;
|
||||
wire csr_mem_fwd;
|
||||
|
||||
wire[31:0] use_execute_PC_next[`NT_M1:0];
|
||||
wire[31:0] use_memory_PC_next[`NT_M1:0];
|
||||
wire[31:0] use_writeback_PC_next[`NT_M1:0];
|
||||
|
||||
|
||||
genvar index;
|
||||
generate
|
||||
for (index=0; index < `NT; index=index+1)
|
||||
begin: gen_code_label
|
||||
assign use_execute_PC_next[index] = in_execute_PC_next;
|
||||
assign use_memory_PC_next[index] = in_memory_PC_next;
|
||||
assign use_writeback_PC_next[index] = in_writeback_PC_next;
|
||||
end
|
||||
endgenerate
|
||||
|
||||
|
||||
assign exe_mem_read = (in_execute_wb == `WB_MEM);
|
||||
assign mem_mem_read = (in_memory_wb == `WB_MEM);
|
||||
@@ -134,19 +149,19 @@ module VX_forwarding (
|
||||
// if (out_fwd_stall) $display("FWD STALL");
|
||||
// end
|
||||
|
||||
assign out_src1_fwd_data = src1_exe_fwd ? ((exe_jal) ? in_execute_PC_next : in_execute_alu_result) :
|
||||
(src1_mem_fwd) ? ((mem_jal) ? in_memory_PC_next : (mem_mem_read ? in_memory_mem_data : in_memory_alu_result)) :
|
||||
( src1_wb_fwd ) ? (wb_jal ? in_writeback_PC_next : (wb_mem_read ? in_writeback_mem_data : in_writeback_alu_result)) :
|
||||
32'hdeadbeef; // COMMENT
|
||||
assign out_src1_fwd_data = src1_exe_fwd ? ((exe_jal) ? use_execute_PC_next : in_execute_alu_result) :
|
||||
(src1_mem_fwd) ? ((mem_jal) ? use_memory_PC_next : (mem_mem_read ? in_memory_mem_data : in_memory_alu_result)) :
|
||||
( src1_wb_fwd ) ? (wb_jal ? use_writeback_PC_next : (wb_mem_read ? in_writeback_mem_data : in_writeback_alu_result)) :
|
||||
in_execute_alu_result; // last one should be deadbeef
|
||||
|
||||
assign out_src2_fwd_data = src2_exe_fwd ? ((exe_jal) ? in_execute_PC_next : in_execute_alu_result) :
|
||||
(src2_mem_fwd) ? ((mem_jal) ? in_memory_PC_next : (mem_mem_read ? in_memory_mem_data : in_memory_alu_result)) :
|
||||
( src2_wb_fwd ) ? (wb_jal ? in_writeback_PC_next : (wb_mem_read ? in_writeback_mem_data : in_writeback_alu_result)) :
|
||||
32'hdeadbeef; // COMMENT
|
||||
assign out_src2_fwd_data = src2_exe_fwd ? ((exe_jal) ? use_execute_PC_next : in_execute_alu_result) :
|
||||
(src2_mem_fwd) ? ((mem_jal) ? use_memory_PC_next : (mem_mem_read ? in_memory_mem_data : in_memory_alu_result)) :
|
||||
( src2_wb_fwd ) ? (wb_jal ? use_writeback_PC_next : (wb_mem_read ? in_writeback_mem_data : in_writeback_alu_result)) :
|
||||
in_execute_alu_result; // last one should be deadbeef
|
||||
|
||||
assign out_csr_fwd_data = csr_exe_fwd ? in_execute_alu_result :
|
||||
csr_mem_fwd ? in_memory_csr_result :
|
||||
32'hdeadbeef; // COMMENT
|
||||
in_execute_alu_result; // last one should be deadbeef
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user