Merge pull request #32 from ucb-bar/pr-btb-masking
separate btb response mask from the frontend mask
This commit is contained in:
commit
5ce3527b88
@ -115,8 +115,8 @@ class RASUpdate(implicit p: Parameters) extends BtbBundle()(p) {
|
|||||||
|
|
||||||
// - "bridx" is the low-order PC bits of the predicted branch (after
|
// - "bridx" is the low-order PC bits of the predicted branch (after
|
||||||
// shifting off the lowest log(inst_bytes) bits off).
|
// shifting off the lowest log(inst_bytes) bits off).
|
||||||
// - "resp.mask" provides a mask of valid instructions (instructions are
|
// - "mask" provides a mask of valid instructions (instructions are
|
||||||
// masked off by the predicted taken branch).
|
// masked off by the predicted taken branch from the BTB).
|
||||||
class BTBResp(implicit p: Parameters) extends BtbBundle()(p) {
|
class BTBResp(implicit p: Parameters) extends BtbBundle()(p) {
|
||||||
val taken = Bool()
|
val taken = Bool()
|
||||||
val mask = Bits(width = fetchWidth)
|
val mask = Bits(width = fetchWidth)
|
||||||
|
@ -131,7 +131,7 @@ class Frontend(implicit p: Parameters) extends CoreModule()(p) with HasL1CachePa
|
|||||||
|
|
||||||
val all_ones = UInt((1 << (fetchWidth+1))-1)
|
val all_ones = UInt((1 << (fetchWidth+1))-1)
|
||||||
val msk_pc = if (fetchWidth == 1) all_ones else all_ones << s2_pc(log2Up(fetchWidth) -1+2,2)
|
val msk_pc = if (fetchWidth == 1) all_ones else all_ones << s2_pc(log2Up(fetchWidth) -1+2,2)
|
||||||
io.cpu.resp.bits.mask := Mux(s2_btb_resp_valid, msk_pc & s2_btb_resp_bits.mask, msk_pc)
|
io.cpu.resp.bits.mask := msk_pc
|
||||||
io.cpu.resp.bits.xcpt_if := s2_xcpt_if
|
io.cpu.resp.bits.xcpt_if := s2_xcpt_if
|
||||||
|
|
||||||
io.cpu.btb_resp.valid := s2_btb_resp_valid
|
io.cpu.btb_resp.valid := s2_btb_resp_valid
|
||||||
|
Loading…
Reference in New Issue
Block a user