mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	BPPredWrongM needs to be 0 when there is no branch predictor. BPPredWRongM is only used when there is an icacheflush.
This commit is contained in:
		
							parent
							
								
									3ebcd35a8c
								
							
						
					
					
						commit
						db0a0bd29e
					
				@ -334,7 +334,6 @@ module ifu (
 | 
			
		||||
  mux2 #(`XLEN) pcmuxBPWrongInvalidateFlush(.d0(PCE), .d1(PCF), .s(BPPredWrongM), .y(PCBPWrongInvalidate));
 | 
			
		||||
  mux2 #(`XLEN) pcmux3(.d0(PCNext2F), .d1(PrivilegedNextPCM), .s(PrivilegedChangePCM), .y(UnalignedPCNextF));
 | 
			
		||||
 | 
			
		||||
  flopenrc #(1) BPPredWrongMReg(.clk, .reset, .en(~StallM), .clear(FlushM), .d(BPPredWrongE), .q(BPPredWrongM));
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
  assign  PCNextF = {UnalignedPCNextF[`XLEN-1:1], 1'b0}; // hart-SPEC p. 21 about 16-bit alignment
 | 
			
		||||
@ -344,6 +343,8 @@ module ifu (
 | 
			
		||||
  if (`BPRED_ENABLED) begin : bpred
 | 
			
		||||
    logic BPPredDirWrongE, BTBPredPCWrongE, RASPredPCWrongE, BPPredClassNonCFIWrongE;
 | 
			
		||||
 | 
			
		||||
  flopenrc #(1) BPPredWrongMReg(.clk, .reset, .en(~StallM), .clear(FlushM), .d(BPPredWrongE), .q(BPPredWrongM));
 | 
			
		||||
 | 
			
		||||
    bpred bpred(.clk, .reset,
 | 
			
		||||
        .StallF, .StallD, .StallE,
 | 
			
		||||
        .FlushF, .FlushD, .FlushE,
 | 
			
		||||
@ -369,6 +370,7 @@ module ifu (
 | 
			
		||||
  end else begin : bpred
 | 
			
		||||
    assign BPPredPCF = '0;
 | 
			
		||||
    assign BPPredWrongE = PCSrcE;
 | 
			
		||||
    assign BPPredWrongM = '0;
 | 
			
		||||
    assign {SelBPPredF, BPPredDirWrongM, BTBPredPCWrongM, RASPredPCWrongM, BPPredClassNonCFIWrongM} = '0;
 | 
			
		||||
  end      
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user