mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Fixed bug in basic gshare.
This commit is contained in:
parent
6d604f7af5
commit
1af7b8051e
@ -42,7 +42,7 @@ module gsharebasic #(parameter k = 10,
|
|||||||
input logic BranchInstrE, BranchInstrM, PCSrcE
|
input logic BranchInstrE, BranchInstrM, PCSrcE
|
||||||
);
|
);
|
||||||
|
|
||||||
logic [k-1:0] IndexNextF, IndexE;
|
logic [k-1:0] IndexNextF, IndexM;
|
||||||
logic [1:0] DirPredictionD, DirPredictionE;
|
logic [1:0] DirPredictionD, DirPredictionE;
|
||||||
logic [1:0] NewDirPredictionE, NewDirPredictionM;
|
logic [1:0] NewDirPredictionE, NewDirPredictionM;
|
||||||
|
|
||||||
@ -52,19 +52,19 @@ module gsharebasic #(parameter k = 10,
|
|||||||
|
|
||||||
if(TYPE == 1) begin
|
if(TYPE == 1) begin
|
||||||
assign IndexNextF = GHR ^ {PCNextF[k+1] ^ PCNextF[1], PCNextF[k:2]};
|
assign IndexNextF = GHR ^ {PCNextF[k+1] ^ PCNextF[1], PCNextF[k:2]};
|
||||||
assign IndexE = GHRM ^ {PCM[k+1] ^ PCM[1], PCM[k:2]};
|
assign IndexM = GHRM ^ {PCM[k+1] ^ PCM[1], PCM[k:2]};
|
||||||
end else if(TYPE == 0) begin
|
end else if(TYPE == 0) begin
|
||||||
assign IndexNextF = GHRNext;
|
assign IndexNextF = GHRNext;
|
||||||
assign IndexE = GHRE;
|
assign IndexM = GHRM;
|
||||||
end
|
end
|
||||||
|
|
||||||
ram2p1r1wbe #(2**k, 2) PHT(.clk(clk),
|
ram2p1r1wbe #(2**k, 2) PHT(.clk(clk),
|
||||||
.ce1(~StallF), .ce2(~StallM & ~FlushM),
|
.ce1(~StallF), .ce2(~StallW & ~FlushW),
|
||||||
.ra1(IndexNextF),
|
.ra1(IndexNextF),
|
||||||
.rd1(DirPredictionF),
|
.rd1(DirPredictionF),
|
||||||
.wa2(IndexE),
|
.wa2(IndexM),
|
||||||
.wd2(NewDirPredictionM),
|
.wd2(NewDirPredictionM),
|
||||||
.we2(BranchInstrM & ~StallW & ~FlushW),
|
.we2(BranchInstrM),
|
||||||
.bwe2(1'b1));
|
.bwe2(1'b1));
|
||||||
|
|
||||||
flopenrc #(2) PredictionRegD(clk, reset, FlushD, ~StallD, DirPredictionF, DirPredictionD);
|
flopenrc #(2) PredictionRegD(clk, reset, FlushD, ~StallD, DirPredictionF, DirPredictionD);
|
||||||
|
Loading…
Reference in New Issue
Block a user