diff --git a/src/main/scala/utils/ExcitingUtils.scala b/src/main/scala/utils/ExcitingUtils.scala index 14cd5bba276eccbb588b6c39131f72b8216488a9..4281f3fe1493c6f7094f6d14c7f0eed9e7c09be4 100644 --- a/src/main/scala/utils/ExcitingUtils.scala +++ b/src/main/scala/utils/ExcitingUtils.scala @@ -59,7 +59,7 @@ object ExcitingUtils { forceExists: Boolean = false ): Unit = { val conn = map.getOrElseUpdate(name, new Connection(connType)) - require(conn.sinkModule.isEmpty) + // require(conn.sinkModule.isEmpty) require(conn.connType == connType) conn.sinkModule = Some(component.parentModName) BoringUtils.addSink(component, name, disableDedup, forceExists) diff --git a/src/main/scala/xiangshan/backend/fu/CSR.scala b/src/main/scala/xiangshan/backend/fu/CSR.scala index b7b2381ae1253de49c7370d26aba75e9d0039708..4fd98c8455a74619a2d7cc559db08b87b65a644d 100644 --- a/src/main/scala/xiangshan/backend/fu/CSR.scala +++ b/src/main/scala/xiangshan/backend/fu/CSR.scala @@ -803,7 +803,7 @@ class CSR extends FunctionUnit with HasCSRConst "LoopExit" -> (0x102a, "perfCntLoopExit" ), "isReplay" -> (0x102b, "Replay" ), // "FetchFromICache" -> (0x102a, "CntFetchFromICache"), - "ICacheMMIO" -> (0x102a, "perfCntIcacheMMIOCnt"), + "ICacheMMIO" -> (0x102c, "perfCntIcacheMMIOCnt"), // "FetchFromLoopBuffer" -> (0x102b, "CntFetchFromLoopBuffer"), // "ExitLoop1" -> (0x102c, "CntExitLoop1"), // "ExitLoop2" -> (0x102d, "CntExitLoop2"), @@ -820,19 +820,19 @@ class CSR extends FunctionUnit with HasCSRConst // "L2cacheHit" -> (0x1023, "perfCntCondL2cacheHit") ) ++ ( (0 until dcacheParameters.nMissEntries).map(i => - ("DCacheMissQueuePenalty" + Integer.toString(i, 10), (0x102a + i, "perfCntDCacheMissQueuePenaltyEntry" + Integer.toString(i, 10))) + ("DCacheMissQueuePenalty" + Integer.toString(i, 10), (0x1040 + i, "perfCntDCacheMissQueuePenaltyEntry" + Integer.toString(i, 10))) ).toMap ) ++ ( (0 until icacheParameters.nMissEntries).map(i => - ("ICacheMissQueuePenalty" + Integer.toString(i, 10), (0x102a + dcacheParameters.nMissEntries + i, "perfCntICacheMissQueuePenaltyEntry" + Integer.toString(i, 10))) + ("ICacheMissQueuePenalty" + Integer.toString(i, 10), (0x1040 + dcacheParameters.nMissEntries + i, "perfCntICacheMissQueuePenaltyEntry" + Integer.toString(i, 10))) ).toMap ) ++ ( (0 until l1plusPrefetcherParameters.nEntries).map(i => - ("L1+PrefetchPenalty" + Integer.toString(i, 10), (0x102a + dcacheParameters.nMissEntries + icacheParameters.nMissEntries + i, "perfCntL1plusPrefetchPenaltyEntry" + Integer.toString(i, 10))) + ("L1+PrefetchPenalty" + Integer.toString(i, 10), (0x1040 + dcacheParameters.nMissEntries + icacheParameters.nMissEntries + i, "perfCntL1plusPrefetchPenaltyEntry" + Integer.toString(i, 10))) ).toMap ) ++ ( (0 until l2PrefetcherParameters.nEntries).map(i => - ("L2PrefetchPenalty" + Integer.toString(i, 10), (0x102a + dcacheParameters.nMissEntries + icacheParameters.nMissEntries + l1plusPrefetcherParameters.nEntries + i, "perfCntL2PrefetchPenaltyEntry" + Integer.toString(i, 10))) + ("L2PrefetchPenalty" + Integer.toString(i, 10), (0x1040 + dcacheParameters.nMissEntries + icacheParameters.nMissEntries + l1plusPrefetcherParameters.nEntries + i, "perfCntL2PrefetchPenaltyEntry" + Integer.toString(i, 10))) ).toMap ) diff --git a/src/main/scala/xiangshan/frontend/Btb.scala b/src/main/scala/xiangshan/frontend/Btb.scala index ca274a5993a5126804539dda087336d6a0487ae0..1b1e797a41374af5fe86be487c327803eed7dde5 100644 --- a/src/main/scala/xiangshan/frontend/Btb.scala +++ b/src/main/scala/xiangshan/frontend/Btb.scala @@ -189,7 +189,7 @@ class BTB extends BasePredictor with BTBParams{ val dataWrite = BtbDataEntry(new_lower, new_extended) val jalFirstEncountered = !u.isMisPred && !u.bpuMeta.btbHitJal && updateType === BTBtype.J - val updateValid = io.update.valid && (u.isMisPred || jalFirstEncountered) && !u.isReplay + val updateValid = io.update.bits.taken && io.update.valid && (u.isMisPred || jalFirstEncountered) && !u.isReplay // Update btb for (w <- 0 until BtbWays) { for (b <- 0 until BtbBanks) { diff --git a/src/main/scala/xiangshan/frontend/uBTB.scala b/src/main/scala/xiangshan/frontend/uBTB.scala index 86ff187fc1159081b469959e515ea723691355ba..3040e4b0b19d89a052353a7c25b79d91dfc1a1ff 100644 --- a/src/main/scala/xiangshan/frontend/uBTB.scala +++ b/src/main/scala/xiangshan/frontend/uBTB.scala @@ -229,7 +229,7 @@ class MicroBTB extends BasePredictor val jalFirstEncountered = !u.isMisPred && !u.bpuMeta.btbHitJal && (u.pd.brType === BrType.jal) - val entry_write_valid = io.update.valid && (u.isMisPred || jalFirstEncountered) && !u.isReplay //io.update.valid //&& update_is_BR_or_JAL + val entry_write_valid = io.update.valid && update_taken && (u.isMisPred || jalFirstEncountered) && !u.isReplay //io.update.valid //&& update_is_BR_or_JAL val meta_write_valid = io.update.valid && (u.isMisPred || jalFirstEncountered) && !u.isReplay//io.update.valid //&& update_is_BR_or_JAL for (b <- 0 until PredictWidth) {