mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Parameterized testbench branch predictor preload.
This commit is contained in:
parent
22ef051603
commit
b64b3016e2
@ -46,7 +46,7 @@ module speculativegshare #(parameter int k = 10 ) (
|
|||||||
logic MatchNextX, MatchXF;
|
logic MatchNextX, MatchXF;
|
||||||
|
|
||||||
logic [1:0] TableDirPredictionF, DirPredictionD, DirPredictionE;
|
logic [1:0] TableDirPredictionF, DirPredictionD, DirPredictionE;
|
||||||
logic [1:0] NewDirPredictionF, NewDirPredictionD, NewDirPredictionE;
|
logic [1:0] NewDirPredictionE;
|
||||||
|
|
||||||
logic [k-1:0] GHRF, GHRD, GHRE;
|
logic [k-1:0] GHRF, GHRD, GHRE;
|
||||||
logic GHRLastF;
|
logic GHRLastF;
|
||||||
@ -79,8 +79,8 @@ module speculativegshare #(parameter int k = 10 ) (
|
|||||||
|
|
||||||
flopenr #(1) MatchReg(clk, reset, ~StallF, MatchNextX, MatchXF);
|
flopenr #(1) MatchReg(clk, reset, ~StallF, MatchNextX, MatchXF);
|
||||||
|
|
||||||
assign ForwardNewDirPrediction = MatchF ? NewDirPredictionF :
|
assign ForwardNewDirPrediction = MatchF ? {2{DirPredictionF[1]}} :
|
||||||
MatchD ? NewDirPredictionD :
|
MatchD ? {2{DirPredictionD[1]}} :
|
||||||
NewDirPredictionE ;
|
NewDirPredictionE ;
|
||||||
|
|
||||||
flopenr #(2) ForwardDirPredicitonReg(clk, reset, ~StallF, ForwardNewDirPrediction, ForwardDirPredictionF);
|
flopenr #(2) ForwardDirPredicitonReg(clk, reset, ~StallF, ForwardNewDirPrediction, ForwardDirPredictionF);
|
||||||
@ -91,10 +91,7 @@ module speculativegshare #(parameter int k = 10 ) (
|
|||||||
flopenr #(2) PredictionRegD(clk, reset, ~StallD, DirPredictionF, DirPredictionD);
|
flopenr #(2) PredictionRegD(clk, reset, ~StallD, DirPredictionF, DirPredictionD);
|
||||||
flopenr #(2) PredictionRegE(clk, reset, ~StallE, DirPredictionD, DirPredictionE);
|
flopenr #(2) PredictionRegE(clk, reset, ~StallE, DirPredictionD, DirPredictionE);
|
||||||
|
|
||||||
// New prediction pipeline
|
|
||||||
assign NewDirPredictionF = {DirPredictionF[1], DirPredictionF[1]};
|
|
||||||
|
|
||||||
flopenr #(2) NewPredDReg(clk, reset, ~StallD, NewDirPredictionF, NewDirPredictionD);
|
|
||||||
satCounter2 BPDirUpdateE(.BrDir(PCSrcE), .OldState(DirPredictionE), .NewState(NewDirPredictionE));
|
satCounter2 BPDirUpdateE(.BrDir(PCSrcE), .OldState(DirPredictionE), .NewState(NewDirPredictionE));
|
||||||
|
|
||||||
// GHR pipeline
|
// GHR pipeline
|
||||||
|
@ -471,7 +471,7 @@ logic [3:0] dummy;
|
|||||||
genvar adrindex;
|
genvar adrindex;
|
||||||
|
|
||||||
// Initializing all zeroes into the branch predictor memory.
|
// Initializing all zeroes into the branch predictor memory.
|
||||||
for(adrindex = 0; adrindex < 1024; adrindex++) begin
|
for(adrindex = 0; adrindex < 2**`BPRED_SIZE; adrindex++) begin
|
||||||
initial begin
|
initial begin
|
||||||
force dut.core.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem[adrindex] = 0;
|
force dut.core.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem[adrindex] = 0;
|
||||||
force dut.core.ifu.bpred.bpred.TargetPredictor.memory.mem[adrindex] = 0;
|
force dut.core.ifu.bpred.bpred.TargetPredictor.memory.mem[adrindex] = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user