mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Forwarding logic factoring
This commit is contained in:
parent
10dfefa8ad
commit
23c6b6370f
@ -37,6 +37,8 @@ module forward(
|
||||
output logic FPUStallD, LoadStallD, MulDivStallD, CSRRdStallD
|
||||
);
|
||||
|
||||
logic MatchDE;
|
||||
|
||||
always_comb begin
|
||||
ForwardAE = 2'b00;
|
||||
ForwardBE = 2'b00;
|
||||
@ -50,9 +52,10 @@ module forward(
|
||||
end
|
||||
|
||||
// Stall on dependent operations that finish in Mem Stage and can't bypass in time
|
||||
assign FPUStallD = FWriteIntE & ((Rs1D == RdE) | (Rs2D == RdE));
|
||||
assign LoadStallD = (MemReadE|SCE) & ((Rs1D == RdE) | (Rs2D == RdE));
|
||||
assign MulDivStallD = MulDivE & ((Rs1D == RdE) | (Rs2D == RdE));
|
||||
assign CSRRdStallD = CSRReadE & ((Rs1D == RdE) | (Rs2D == RdE));
|
||||
assign MatchDE = (Rs1D == RdE) | (Rs2D == RdE); // Decode-stage instruction source depends on result from execute stage instruction
|
||||
assign FPUStallD = FWriteIntE & MatchDE;
|
||||
assign LoadStallD = (MemReadE|SCE) & MatchDE;
|
||||
assign MulDivStallD = MulDivE & MatchDE;
|
||||
assign CSRRdStallD = CSRReadE & MatchDE;
|
||||
|
||||
endmodule
|
||||
|
Loading…
Reference in New Issue
Block a user