diff --git a/src/main/scala/xiangshan/frontend/SC.scala b/src/main/scala/xiangshan/frontend/SC.scala index 59626580d5074348ec3ca243a671ced5b4f042e5..87799f1bd0cfe24e63553e8be05d61bbda5ebc01 100644 --- a/src/main/scala/xiangshan/frontend/SC.scala +++ b/src/main/scala/xiangshan/frontend/SC.scala @@ -68,7 +68,7 @@ class SCTable(val nRows: Int, val ctrBits: Int, val histLen: Int)(implicit p: Pa val io = IO(new SCTableIO(ctrBits)) // val table = Module(new SRAMTemplate(SInt(ctrBits.W), set=nRows, way=2*TageBanks, shouldReset=true, holdRead=true, singlePort=false)) - val table = Module(new SRAMTemplate(SInt(ctrBits.W), set=nRows, way=2*TageBanks, shouldReset=false, holdRead=true, singlePort=false)) + val table = Module(new SRAMTemplate(SInt(ctrBits.W), set=nRows, way=2*TageBanks, shouldReset=false, holdRead=true, singlePort=false, bypassWrite=true)) // def getIdx(hist: UInt, pc: UInt) = { // (compute_folded_ghist(hist, log2Ceil(nRows)) ^ (pc >> instOffsetBits))(log2Ceil(nRows)-1,0) diff --git a/src/main/scala/xiangshan/frontend/Tage.scala b/src/main/scala/xiangshan/frontend/Tage.scala index 31d20f0fe8d1da7c54d5c0a489d63335412535c7..9edd0d440528bbd85baa5649b5575fa7055652ef 100644 --- a/src/main/scala/xiangshan/frontend/Tage.scala +++ b/src/main/scala/xiangshan/frontend/Tage.scala @@ -326,13 +326,13 @@ class TageTable val s1_tag = RegEnable(s0_tag, io.req.fire) val s1_pc = RegEnable(io.req.bits.pc, io.req.fire) val s1_bank_req_1h = RegEnable(s0_bank_req_1h, io.req.fire) - val s1_bank_has_write_last_cycle = RegNext(VecInit(table_banks.map(_.io.w.req.valid))) + val s1_bank_has_write_on_this_req = RegEnable(VecInit(table_banks.map(_.io.w.req.valid)), io.req.valid) val tables_r = table_banks.map(_.io.r.resp.data) // s1 val resp_selected = Mux1H(s1_bank_req_1h, tables_r) - val resp_invalid_by_write = Mux1H(s1_bank_req_1h, s1_bank_has_write_last_cycle) + val resp_invalid_by_write = Mux1H(s1_bank_req_1h, s1_bank_has_write_on_this_req) val per_br_resp = VecInit((0 until numBr).map(i => Mux1H(UIntToOH(get_phy_br_idx(s1_unhashed_idx, i), numBr), resp_selected)))