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
|
output logic FPUStallD, LoadStallD, MulDivStallD, CSRRdStallD
|
||||||
);
|
);
|
||||||
|
|
||||||
|
logic MatchDE;
|
||||||
|
|
||||||
always_comb begin
|
always_comb begin
|
||||||
ForwardAE = 2'b00;
|
ForwardAE = 2'b00;
|
||||||
ForwardBE = 2'b00;
|
ForwardBE = 2'b00;
|
||||||
@ -50,9 +52,10 @@ module forward(
|
|||||||
end
|
end
|
||||||
|
|
||||||
// Stall on dependent operations that finish in Mem Stage and can't bypass in time
|
// Stall on dependent operations that finish in Mem Stage and can't bypass in time
|
||||||
assign FPUStallD = FWriteIntE & ((Rs1D == RdE) | (Rs2D == RdE));
|
assign MatchDE = (Rs1D == RdE) | (Rs2D == RdE); // Decode-stage instruction source depends on result from execute stage instruction
|
||||||
assign LoadStallD = (MemReadE|SCE) & ((Rs1D == RdE) | (Rs2D == RdE));
|
assign FPUStallD = FWriteIntE & MatchDE;
|
||||||
assign MulDivStallD = MulDivE & ((Rs1D == RdE) | (Rs2D == RdE));
|
assign LoadStallD = (MemReadE|SCE) & MatchDE;
|
||||||
assign CSRRdStallD = CSRReadE & ((Rs1D == RdE) | (Rs2D == RdE));
|
assign MulDivStallD = MulDivE & MatchDE;
|
||||||
|
assign CSRRdStallD = CSRReadE & MatchDE;
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
Loading…
Reference in New Issue
Block a user