mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
887 B
30 lines
887 B
`include "settings.h" |
|
|
|
module Forwarding_Unit ( |
|
input enable, |
|
input [`REG_FILE_DEPTH-1:0] src1, |
|
input [`REG_FILE_DEPTH-1:0] src2, |
|
input [`REG_FILE_DEPTH-1:0] MEM_dest, |
|
input [`REG_FILE_DEPTH-1:0] WB_dest, |
|
input MEM_WB_en, |
|
input WB_WB_en, |
|
output reg [1:0] sel_src1, |
|
output reg [1:0] sel_src2 |
|
); |
|
|
|
always @(*) begin |
|
sel_src1 = `FORWARDING_SEL_NOP; |
|
sel_src2 = `FORWARDING_SEL_NOP; |
|
if(enable) begin |
|
if ((src1 == MEM_dest) && (MEM_WB_en == 1'b1)) |
|
sel_src1 = `FORWARDING_SEL_MEM; |
|
else if ((src1 == WB_dest) && (WB_WB_en == 1'b1)) |
|
sel_src1 = `FORWARDING_SEL_WB; |
|
if ((src2 == MEM_dest) && (MEM_WB_en == 1'b1)) |
|
sel_src2 = `FORWARDING_SEL_MEM; |
|
else if ((src2 == WB_dest) && (WB_WB_en == 1'b1)) |
|
sel_src2 = `FORWARDING_SEL_WB; |
|
end |
|
end |
|
|
|
endmodule
|
|
|