BTB target updated
This commit is contained in:
		
							parent
							
								
									0da296342e
								
							
						
					
					
						commit
						78d5c66f84
					
				
							
								
								
									
										52551
									
								
								el2_ifu_bp_ctl.fir
								
								
								
								
							
							
						
						
									
										52551
									
								
								el2_ifu_bp_ctl.fir
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										17072
									
								
								el2_ifu_bp_ctl.v
								
								
								
								
							
							
						
						
									
										17072
									
								
								el2_ifu_bp_ctl.v
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -299,12 +299,12 @@ class el2_ifu_bp_ctl extends Module with el2_lib with RequireAsyncReset {
 | 
				
			||||||
  val btb_fg_crossing_f = fetch_start_f(0) & btb_sel_f(0) & btb_rd_pc4_f
 | 
					  val btb_fg_crossing_f = fetch_start_f(0) & btb_sel_f(0) & btb_rd_pc4_f
 | 
				
			||||||
  val bp_total_branch_offset_f = bloc_f(1)^btb_rd_pc4_f
 | 
					  val bp_total_branch_offset_f = bloc_f(1)^btb_rd_pc4_f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  val ifc_fetch_adder_prior = RegEnable(io.ifc_fetch_addr_f, 0.U, (io.ifc_fetch_req_f & !io.ifu_bp_hit_taken_f & io.ic_hit_f).asBool)
 | 
					  val ifc_fetch_adder_prior = RegEnable(io.ifc_fetch_addr_f(30,1), 0.U, (io.ifc_fetch_req_f & !io.ifu_bp_hit_taken_f & io.ic_hit_f).asBool)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  io.ifu_bp_poffset_f := btb_rd_tgt_f
 | 
					  io.ifu_bp_poffset_f := btb_rd_tgt_f
 | 
				
			||||||
  val adder_pc_in_f = Mux1H(Seq(use_fa_plus.asBool->fetch_addr_p1_f,
 | 
					  val adder_pc_in_f = Mux1H(Seq(use_fa_plus.asBool                      -> fetch_addr_p1_f,
 | 
				
			||||||
                                btb_fg_crossing_f.asBool->ifc_fetch_adder_prior,
 | 
					                                btb_fg_crossing_f.asBool                -> ifc_fetch_adder_prior,
 | 
				
			||||||
                              (!btb_fg_crossing_f & !use_fa_plus).asBool->io.ifc_fetch_addr_f(30,1)))
 | 
					                              (!btb_fg_crossing_f & !use_fa_plus).asBool-> io.ifc_fetch_addr_f(30,1)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  val bp_btb_target_adder_f = rvbradder(Cat(adder_pc_in_f(29,0),bp_total_branch_offset_f, 0.U), Cat(btb_rd_tgt_f,0.U))
 | 
					  val bp_btb_target_adder_f = rvbradder(Cat(adder_pc_in_f(29,0),bp_total_branch_offset_f, 0.U), Cat(btb_rd_tgt_f,0.U))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -377,13 +377,9 @@ class el2_ifu_bp_ctl extends Module with el2_lib with RequireAsyncReset {
 | 
				
			||||||
                            (bht_wr_en2(i) & ((bht_wr_addr2(BHT_ADDR_HI-BHT_ADDR_LO,NUM_BHT_LOOP_OUTER_LO-2)===k.U) |  BHT_NO_ADDR_MATCH.B))
 | 
					                            (bht_wr_en2(i) & ((bht_wr_addr2(BHT_ADDR_HI-BHT_ADDR_LO,NUM_BHT_LOOP_OUTER_LO-2)===k.U) |  BHT_NO_ADDR_MATCH.B))
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  val bht_bank_wr_data = (0 until 2).map(i=>(0 until BHT_ARRAY_DEPTH/NUM_BHT_LOOP).map(k=>(0 until NUM_BHT_LOOP).map(j=>
 | 
					  val bht_bank_wr_data = (0 until 2).map(i=>(0 until BHT_ARRAY_DEPTH/NUM_BHT_LOOP).map(k=>(0 until NUM_BHT_LOOP).map(j=>
 | 
				
			||||||
    Mux((bht_wr_en2(i)&(bht_wr_addr2(NUM_BHT_LOOP_INNER_HI-BHT_ADDR_LO,0)===j.U)&(bht_wr_addr2(BHT_ADDR_HI-BHT_ADDR_LO,NUM_BHT_LOOP_OUTER_LO-BHT_ADDR_LO)===k.U)|BHT_NO_ADDR_MATCH.B).asBool, bht_wr_data2, bht_wr_data0))))
 | 
					    Mux((bht_wr_en2(i)&(bht_wr_addr2(NUM_BHT_LOOP_INNER_HI-BHT_ADDR_LO,0)===j.U)&(bht_wr_addr2(BHT_ADDR_HI-BHT_ADDR_LO,NUM_BHT_LOOP_OUTER_LO-BHT_ADDR_LO)===k.U)|BHT_NO_ADDR_MATCH.B).asBool, bht_wr_data2, bht_wr_data0))))
 | 
				
			||||||
  //BHT_ADDR_HI-NUM_BHT_LOOP_OUTER_LO,                                         NUM_BHT_LOOP_OUTER_LO-BHT_ADDR_LO
 | 
					
 | 
				
			||||||
  println(s"The addresses we are checking are ${BHT_ADDR_HI-BHT_ADDR_LO} : ${NUM_BHT_LOOP_OUTER_LO-BHT_ADDR_LO}")
 | 
					 | 
				
			||||||
  println(s"The addresses we are checking are ${NUM_BHT_LOOP_INNER_HI-BHT_ADDR_LO} : 0")
 | 
					 | 
				
			||||||
                                                //NUM_BHT_LOOP_INNER_HI-BHT_ADDR_LO
 | 
					 | 
				
			||||||
  val bht_bank_sel = Wire(Vec(2, Vec(BHT_ARRAY_DEPTH/NUM_BHT_LOOP, Vec(NUM_BHT_LOOP, Bool()))))
 | 
					  val bht_bank_sel = Wire(Vec(2, Vec(BHT_ARRAY_DEPTH/NUM_BHT_LOOP, Vec(NUM_BHT_LOOP, Bool()))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for(i<-0 until 2; k<-0 until BHT_ARRAY_DEPTH/NUM_BHT_LOOP; j<- 0 until NUM_BHT_LOOP){
 | 
					  for(i<-0 until 2; k<-0 until BHT_ARRAY_DEPTH/NUM_BHT_LOOP; j<- 0 until NUM_BHT_LOOP){
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -212,9 +212,9 @@ trait el2_lib extends param{
 | 
				
			||||||
    val pc_inc = pc(31,13)+1.U
 | 
					    val pc_inc = pc(31,13)+1.U
 | 
				
			||||||
    val pc_dec = pc(31,13)-1.U
 | 
					    val pc_dec = pc(31,13)-1.U
 | 
				
			||||||
    val sign = offset(12)
 | 
					    val sign = offset(12)
 | 
				
			||||||
    Cat(Mux1H(Seq((sign ^ !dout_lower(dout_lower.getWidth-1)).asBool -> pc(31,13),
 | 
					    Cat(Mux1H(Seq(( sign ^ !dout_lower(dout_lower.getWidth-1)).asBool -> pc(31,13),
 | 
				
			||||||
                  (!sign &  dout_lower(dout_lower.getWidth-1)).asBool -> pc_inc,
 | 
					                  (!sign &  dout_lower(dout_lower.getWidth-1)).asBool -> pc_inc,
 | 
				
			||||||
      (sign & !dout_lower(dout_lower.getWidth-1)).asBool -> pc_dec))  , dout_lower(11,0), 0.U)
 | 
					                  ( sign & !dout_lower(dout_lower.getWidth-1)).asBool -> pc_dec)), dout_lower(11,0), 0.U)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // RV range
 | 
					  // RV range
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue