mirror of
https://github.com/openhwgroup/cvw.git
synced 2025-04-25 06:17:10 -04:00
Formatting.
This commit is contained in:
parent
40d62ec0d1
commit
75391f4b56
2 changed files with 26 additions and 27 deletions
|
@ -1,13 +1,12 @@
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
// bpred.sv
|
// bpred.sv
|
||||||
//
|
//
|
||||||
// Written: Ross Thomposn
|
// Written: Ross Thomposn ross1728@gmail.com
|
||||||
// Email: ross1728@gmail.com
|
// Created: 12 February 2021
|
||||||
// Created: February 12, 2021
|
// Modified: 19 January 2023
|
||||||
// Modified:
|
|
||||||
//
|
//
|
||||||
// Purpose: Branch prediction unit
|
// Purpose: Branch direction prediction and jump/branch target prediction.
|
||||||
// Produces a branch prediction based on branch history.
|
// Prediction made during the fetch stage and corrected in the execution stage.
|
||||||
//
|
//
|
||||||
// A component of the CORE-V-WALLY configurable RISC-V project.
|
// A component of the CORE-V-WALLY configurable RISC-V project.
|
||||||
//
|
//
|
||||||
|
@ -35,30 +34,29 @@ module bpred (
|
||||||
input logic FlushD, FlushE, FlushM, FlushW,
|
input logic FlushD, FlushE, FlushM, FlushW,
|
||||||
// Fetch stage
|
// Fetch stage
|
||||||
// the prediction
|
// the prediction
|
||||||
input logic [31:0] InstrD, // Decompressed decode stage instruction
|
input logic [31:0] InstrD, // Decompressed decode stage instruction. Used to decode instruction class
|
||||||
input logic [`XLEN-1:0] PCNextF, // Next Fetch Address
|
input logic [`XLEN-1:0] PCNextF, // Next Fetch Address
|
||||||
input logic [`XLEN-1:0] PCPlus2or4F, // PCF+2/4
|
input logic [`XLEN-1:0] PCPlus2or4F, // PCF+2/4
|
||||||
output logic [`XLEN-1:0] PCNext1F, // Branch Predictor predicted or corrected fetch address on miss prediction
|
output logic [`XLEN-1:0] PCNext1F, // Branch Predictor predicted or corrected fetch address on miss prediction
|
||||||
output logic [`XLEN-1:0] NextValidPCE, // Address of next valid instruction after the instruction in the Memory stage.
|
output logic [`XLEN-1:0] NextValidPCE, // Address of next valid instruction after the instruction in the Memory stage.
|
||||||
|
|
||||||
// Update Predictor
|
// Update Predictor
|
||||||
input logic [`XLEN-1:0] PCF, // Fetch stage instruction address.
|
input logic [`XLEN-1:0] PCF, // Fetch stage instruction address.
|
||||||
input logic [`XLEN-1:0] PCD, // Decode stage instruction address. Also the address the branch predictor took.
|
input logic [`XLEN-1:0] PCD, // Decode stage instruction address. Also the address the branch predictor took.
|
||||||
input logic [`XLEN-1:0] PCE, // Execution stage instruction address.
|
input logic [`XLEN-1:0] PCE, // Execution stage instruction address.
|
||||||
input logic [`XLEN-1:0] PCM, // Memory stage instruction address.
|
input logic [`XLEN-1:0] PCM, // Memory stage instruction address.
|
||||||
|
|
||||||
// *** after reviewing the compressed instruction set I am leaning towards having the btb predict the instruction class.
|
// Branch and jump outcome
|
||||||
// *** the specifics of how this is encode is subject to change.
|
input logic PCSrcE, // Executation stage branch is taken
|
||||||
input logic PCSrcE, // Executation stage branch is taken
|
input logic [`XLEN-1:0] IEUAdrE, // The branch/jump target address
|
||||||
input logic [`XLEN-1:0] IEUAdrE, // The branch/jump target address
|
input logic [`XLEN-1:0] PCLinkE, // The address following the branch instruction. (AKA Fall through address)
|
||||||
input logic [`XLEN-1:0] PCLinkE, // The address following the branch instruction. (AKA Fall through address)
|
output logic [3:0] InstrClassM, // The valid instruction class. 1-hot encoded as jalr, ret, jr (not ret), j, br
|
||||||
output logic [3:0] InstrClassM, // The valid instruction class. 1-hot encoded as jalr, ret, jr (not ret), j, br
|
|
||||||
|
|
||||||
// Report branch prediction status
|
// Report branch prediction status
|
||||||
output logic BPPredWrongE, // Prediction is wrong.
|
output logic BPPredWrongE, // Prediction is wrong.
|
||||||
output logic DirPredictionWrongM, // Prediction direction is wrong.
|
output logic DirPredictionWrongM, // Prediction direction is wrong.
|
||||||
output logic BTBPredPCWrongM, // Prediction target wrong.
|
output logic BTBPredPCWrongM, // Prediction target wrong.
|
||||||
output logic RASPredPCWrongM, // RAS prediction is wrong.
|
output logic RASPredPCWrongM, // RAS prediction is wrong.
|
||||||
output logic PredictionInstrClassWrongM // Class prediction is wrong.
|
output logic PredictionInstrClassWrongM // Class prediction is wrong.
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
// spill.sv
|
// spill.sv
|
||||||
//
|
//
|
||||||
// Written: Ross Thompson ross1728@gmail.com January 28, 2022
|
// Written: Ross Thompson ross1728@gmail.com
|
||||||
// Modified:
|
// Created: 28 January 2022
|
||||||
|
// Modified: 19 January 2023
|
||||||
//
|
//
|
||||||
// Purpose: allows the IFU to make extra memory request if instruction address crosses
|
// Purpose: allows the IFU to make extra memory request if instruction address crosses
|
||||||
// cache line boundaries or if instruction address without a cache crosses
|
// cache line boundaries or if instruction address without a cache crosses
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue