Skip to content

Commit eee2640

Browse files
author
Parham Farrokhi
committed
Fix stalling
1 parent 32ebe9c commit eee2640

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

Sec_8/ForwardUnit.v

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ module ForwardUnit
55
WB_En1,
66
WB_En2,
77
mem_W_En,
8-
MEM_R_En,
8+
mem_R_En1,
9+
mem_R_En2,
910
Is_Imm,
1011
src1,
1112
src2,
@@ -19,14 +20,16 @@ module ForwardUnit
1920
memOut,
2021
shouldForward1,
2122
shouldForward2,
23+
loadForwardStall
2224
);
2325

2426
// define input and output ports
2527
input WB_En1;
2628
input WB_En2;
2729
input Is_Imm;
2830
input mem_W_En;
29-
input mem_R_En;
31+
input mem_R_En1;
32+
input mem_R_En2;
3033
input [1:0] BR_Type;
3134
input [4:0] src1;
3235
input [4:0] src2;
@@ -47,8 +50,12 @@ module ForwardUnit
4750
wire shouldForward2FromExe;
4851
wire shouldForward1FromMem;
4952
wire shouldForward2FromMem;
50-
wire shouldForwardMemWriteFromExe;
51-
wire shouldForwardMemWriteFromMem;
53+
wire shouldForwardMemWriteFromExe;
54+
wire shouldForwardMemWriteFromMem;
55+
wire shouldForward1FromMemLoadExe; // depends on ld result
56+
wire shouldForward2FromMemLoadExe;
57+
wire shouldForward1FromMemLoadMem;
58+
wire shouldForward2FromMemLoadMem;
5259
reg [31:0] srcOut1;
5360
reg [31:0] srcOut2;
5461
reg [31:0] memOut;
@@ -68,7 +75,14 @@ module ForwardUnit
6875
assign shouldForward1 = shouldForward1FromExe | shouldForward1FromMem;
6976
assign shouldForward2 = shouldForward2FromExe | shouldForward2FromMem;
7077

71-
assign loadForwardStall = !( src2 ^ dest1 ) & WB_En1 & mem_R_En & |dest1;
78+
// assign shouldForward1FromMemLoadExe = !( src1 ^ dest1 ) & mem_R_En1 & |dest1;
79+
// assign shouldForward2FromMemLoadExe = !( src2 ^ dest1 ) & mem_R_En1 & |dest1;
80+
assign shouldForward1FromMemLoadMem = !( src1 ^ dest2 ) & mem_R_En2 & |dest2;
81+
assign shouldForward2FromMemLoadMem = !( src2 ^ dest2 ) & mem_R_En2 & |dest2;
82+
83+
assign loadForwardStall =
84+
// (shouldForward1FromMemLoadExe | shouldForward2FromMemLoadExe) |
85+
(shouldForward1FromMemLoadMem | shouldForward2FromMemLoadMem);
7286
// build module
7387
always @(*)
7488
begin

Sec_8/MIPS.v

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,8 @@ module MIPS
201201
.WB_En1(WB_En32),
202202
.WB_En2(WB_En42),
203203
.mem_W_En(MEM_W_En22),
204-
.MEM_R_En(MEM_R_En22),
204+
.mem_R_En1(MEM_R_En32),
205+
.mem_R_En2(MEM_R_En42),
205206
.Is_Imm(Is_Imm2),
206207
.src1(src12),
207208
.src2(src22),

0 commit comments

Comments
 (0)