mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Prep to fix gshare critical path.
This commit is contained in:
		
							parent
							
								
									4ffaa75c2a
								
							
						
					
					
						commit
						c2021927ce
					
				| @ -94,9 +94,9 @@ module bpred ( | ||||
|   logic 					RetD, JalD; | ||||
|   logic 					RetE, JalE; | ||||
|   logic 					BranchM, JumpM, RetM, JalM; | ||||
|   logic 					BranchW, JumpW, RetW, JalW; | ||||
|   logic 					WrongBPRetD; | ||||
| 
 | ||||
|   logic [`XLEN-1:0] 		PCW; | ||||
|   logic [`XLEN-1:0] 		PCW, IEUAdrW; | ||||
| 
 | ||||
|   // Part 1 branch direction prediction
 | ||||
|   // look into the 2 port Sram model. something is wrong. 
 | ||||
| @ -152,8 +152,9 @@ module bpred ( | ||||
|           .BTAF, .BTAD, | ||||
|           .BTBPredInstrClassF({BTBJalF, BTBRetF, BTBJumpF, BTBBranchF}), | ||||
|           .PredictionInstrClassWrongM, | ||||
|           .IEUAdrE, .IEUAdrM, | ||||
|           .InstrClassD({JalD, RetD, JumpD, BranchD}), .InstrClassE({JalE, RetE, JumpE, BranchE}), .InstrClassM({JalM, RetM, JumpM, BranchM})); | ||||
|           .IEUAdrE, .IEUAdrM, .IEUAdrW, | ||||
|           .InstrClassD({JalD, RetD, JumpD, BranchD}), .InstrClassE({JalE, RetE, JumpE, BranchE}), .InstrClassM({JalM, RetM, JumpM, BranchM}), | ||||
|           .InstrClassW({JalW, RetW, JumpW, BranchW})); | ||||
| 
 | ||||
|   if (!`INSTR_CLASS_PRED) begin : DirectClassDecode | ||||
| 	// This section is mainly for testing, verification, and PPA comparison.
 | ||||
| @ -205,6 +206,7 @@ module bpred ( | ||||
| 
 | ||||
|   flopenrc #(2) InstrClassRegE(clk, reset,  FlushE, ~StallE, {JalD, RetD}, {JalE, RetE}); | ||||
|   flopenrc #(4) InstrClassRegM(clk, reset,  FlushM, ~StallM, {JalE, RetE, JumpE, BranchE}, {JalM, RetM, JumpM, BranchM}); | ||||
|   flopenrc #(4) InstrClassRegW(clk, reset,  FlushM, ~StallW, {JalM, RetM, JumpM, BranchM}, {JalW, RetW, JumpW, BranchW}); | ||||
|   flopenrc #(1) BPPredWrongMReg(clk, reset, FlushM, ~StallM, BPPredWrongE, BPPredWrongM); | ||||
| 
 | ||||
|   // branch predictor
 | ||||
| @ -283,5 +285,7 @@ module bpred ( | ||||
|   // **** Fix me
 | ||||
|   assign InstrClassM = {JalM, RetM, JumpM, BranchM}; | ||||
|   flopenr #(`XLEN) PCWReg(clk, reset, ~StallW, PCM, PCW); | ||||
|   flopenrc #(`XLEN) IEUAdrWReg(clk, reset, FlushW, ~StallW, IEUAdrM, IEUAdrW); | ||||
| 
 | ||||
|    | ||||
| endmodule | ||||
|  | ||||
| @ -42,9 +42,11 @@ module btb #(parameter Depth = 10 ) ( | ||||
|   input  logic 			   PredictionInstrClassWrongM, // BTB's instruction class guess was wrong
 | ||||
|   input  logic [`XLEN-1:0] IEUAdrE, // Branch/jump target address to insert into btb
 | ||||
|   input  logic [`XLEN-1:0] IEUAdrM, // Branch/jump target address to insert into btb
 | ||||
|   input  logic [`XLEN-1:0] IEUAdrW, | ||||
|   input  logic [3:0] 	   InstrClassD, // Instruction class to insert into btb
 | ||||
|   input  logic [3:0] 	   InstrClassE, // Instruction class to insert into btb
 | ||||
|   input  logic [3:0] 	   InstrClassM                            // Instruction class to insert into btb
 | ||||
|   input  logic [3:0] 	   InstrClassM,                            // Instruction class to insert into btb
 | ||||
|   input  logic [3:0]       InstrClassW | ||||
| ); | ||||
| 
 | ||||
|   logic [Depth-1:0]         PCNextFIndex, PCFIndex, PCDIndex, PCEIndex, PCMIndex, PCWIndex; | ||||
| @ -53,8 +55,6 @@ module btb #(parameter Depth = 10 ) ( | ||||
|   logic [`XLEN+3:0] 		ForwardBTBPrediction, ForwardBTBPredictionF; | ||||
|   logic [`XLEN+3:0] 		TableBTBPredictionF; | ||||
|   logic 					UpdateEn; | ||||
|   logic [3:0] 				InstrClassW; | ||||
|   logic [`XLEN-1:0] 		IEUAdrW; | ||||
|      | ||||
|   // hashing function for indexing the PC
 | ||||
|   // We have Depth bits to index, but XLEN bits as the input.
 | ||||
| @ -103,6 +103,4 @@ module btb #(parameter Depth = 10 ) ( | ||||
| 
 | ||||
|   flopenrc #(`XLEN) BTBD(clk, reset, FlushD, ~StallD, BTAF, BTAD); | ||||
| 
 | ||||
|   flopenrc #(`XLEN+4) IEUAdrWReg(clk, reset, FlushW, ~StallW, {InstrClassM, IEUAdrM}, {InstrClassW, IEUAdrW}); | ||||
| 
 | ||||
| endmodule | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user