Predictor hash check
This commit is contained in:
		
							parent
							
								
									82fdda8291
								
							
						
					
					
						commit
						9c6ff7dc68
					
				
							
								
								
									
										41896
									
								
								el2_ifu_bp_ctl.fir
								
								
								
								
							
							
						
						
									
										41896
									
								
								el2_ifu_bp_ctl.fir
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										7618
									
								
								el2_ifu_bp_ctl.v
								
								
								
								
							
							
						
						
									
										7618
									
								
								el2_ifu_bp_ctl.v
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -89,6 +89,10 @@ class el2_ifu_bp_ctl extends Module with el2_lib { | ||||||
|   val dec_tlu_br0_start_error_wb  = io.dec_tlu_br0_r_pkt.br_start_error |   val dec_tlu_br0_start_error_wb  = io.dec_tlu_br0_r_pkt.br_start_error | ||||||
|   val exu_i0_br_fghr_wb           = io.exu_i0_br_fghr_r |   val exu_i0_br_fghr_wb           = io.exu_i0_br_fghr_r | ||||||
| 
 | 
 | ||||||
|  |   dec_tlu_error_wb := dec_tlu_br0_start_error_wb | dec_tlu_br0_error_wb | ||||||
|  |   btb_error_addr_wb := dec_tlu_br0_addr_wb | ||||||
|  |   dec_tlu_way_wb := dec_tlu_br0_way_wb | ||||||
|  | 
 | ||||||
|   // Hash the first PC |   // Hash the first PC | ||||||
|   val btb_rd_addr_f = el2_btb_addr_hash(io.ifc_fetch_addr_f) |   val btb_rd_addr_f = el2_btb_addr_hash(io.ifc_fetch_addr_f) | ||||||
|   io.test_hash := btb_rd_addr_f |   io.test_hash := btb_rd_addr_f | ||||||
|  | @ -121,6 +125,7 @@ class el2_ifu_bp_ctl extends Module with el2_lib { | ||||||
|   val dec_tlu_way_wb_f = RegNext(dec_tlu_way_wb, init = 0.U) |   val dec_tlu_way_wb_f = RegNext(dec_tlu_way_wb, init = 0.U) | ||||||
|   val exu_mp_way_f = RegNext(exu_mp_way, init = 0.U) |   val exu_mp_way_f = RegNext(exu_mp_way, init = 0.U) | ||||||
|   val exu_flush_final_d1 = RegNext(io.exu_flush_final, init = 0.U) |   val exu_flush_final_d1 = RegNext(io.exu_flush_final, init = 0.U) | ||||||
|  | 
 | ||||||
|   // TODO |   // TODO | ||||||
|   leak_one_f := (io.dec_tlu_flush_leak_one_wb & io.dec_tlu_flush_lower_wb) | (leak_one_f_d1 & io.dec_tlu_flush_lower_wb) |   leak_one_f := (io.dec_tlu_flush_leak_one_wb & io.dec_tlu_flush_lower_wb) | (leak_one_f_d1 & io.dec_tlu_flush_lower_wb) | ||||||
| 
 | 
 | ||||||
|  | @ -328,9 +333,6 @@ class el2_ifu_bp_ctl extends Module with el2_lib { | ||||||
| 
 | 
 | ||||||
|   rets_out := (0 until RET_STACK_SIZE).map(i=>RegEnable(rets_in(i),0.U,rsenable(i).asBool)) |   rets_out := (0 until RET_STACK_SIZE).map(i=>RegEnable(rets_in(i),0.U,rsenable(i).asBool)) | ||||||
| 
 | 
 | ||||||
|   dec_tlu_error_wb := dec_tlu_br0_start_error_wb | dec_tlu_br0_error_wb |  | ||||||
|   btb_error_addr_wb := dec_tlu_br0_addr_wb |  | ||||||
|   dec_tlu_way_wb := dec_tlu_br0_way_wb |  | ||||||
|   val btb_valid = exu_mp_valid & (!dec_tlu_error_wb) |   val btb_valid = exu_mp_valid & (!dec_tlu_error_wb) | ||||||
|   val btb_wr_tag = io.exu_mp_btag |   val btb_wr_tag = io.exu_mp_btag | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -170,7 +170,7 @@ trait el2_lib extends param{ | ||||||
|   val Tag_Word = MEM_CAL._4 |   val Tag_Word = MEM_CAL._4 | ||||||
| 
 | 
 | ||||||
|   def el2_btb_tag_hash(pc : UInt) = |   def el2_btb_tag_hash(pc : UInt) = | ||||||
|     VecInit.tabulate(3)(i => pc(BTB_ADDR_HI+((i+1)*(BTB_BTAG_SIZE)),BTB_ADDR_HI+(i*BTB_BTAG_SIZE)+1)).reduce(_^_) |     VecInit.tabulate(3)(i => pc(BTB_ADDR_HI-1+((i+1)*(BTB_BTAG_SIZE)),BTB_ADDR_HI+(i*BTB_BTAG_SIZE))).reduce(_^_) | ||||||
| 
 | 
 | ||||||
|   def el2_btb_tag_hash_fold(pc : UInt) = |   def el2_btb_tag_hash_fold(pc : UInt) = | ||||||
|     pc(BTB_ADDR_HI+(2*BTB_BTAG_SIZE),BTB_ADDR_HI+BTB_BTAG_SIZE+1)^pc(BTB_ADDR_HI+BTB_BTAG_SIZE,BTB_ADDR_HI+1) |     pc(BTB_ADDR_HI+(2*BTB_BTAG_SIZE),BTB_ADDR_HI+BTB_BTAG_SIZE+1)^pc(BTB_ADDR_HI+BTB_BTAG_SIZE,BTB_ADDR_HI+1) | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue