diff --git a/src/main/scala/xiangshan/backend/issue/ReservationStation.scala b/src/main/scala/xiangshan/backend/issue/ReservationStation.scala index 098bf49f8b80bda2cebc0bc405adaddea75f8ea0..b336e40244a6538581d5c04dbd8f1fd13a768db4 100644 --- a/src/main/scala/xiangshan/backend/issue/ReservationStation.scala +++ b/src/main/scala/xiangshan/backend/issue/ReservationStation.scala @@ -199,13 +199,7 @@ class ReservationStationSelect val fastPortsCnt = fastPortsCfg.size val slowPortsCnt = slowPortsCfg.size require(nonBlocked==fastWakeup) - val delayMap = Map( - 0 -> 5, - 1 -> 10, - 2 -> 40, - 3 -> 40 - ) - def replayDelay(times: UInt) = ParallelMux((0 until 4).map( i => (i.U === times, delayMap(i).U))) + val replayDelay = VecInit(Seq(5, 10, 40, 40).map(_.U(6.W))) val io = IO(new Bundle { val redirect = Flipped(ValidIO(new Redirect)) @@ -248,7 +242,7 @@ class ReservationStationSelect val indexQueue = RegInit(VecInit((0 until iqSize).map(_.U(iqIdxWidth.W)))) val validQueue = VecInit(stateQueue.map(_ === s_valid)) val emptyQueue = VecInit(stateQueue.map(_ === s_idle)) - val countQueue = Reg(Vec(iqSize, UInt(log2Up(delayMap(3)).W))) + val countQueue = Reg(Vec(iqSize, UInt(replayDelay(3).getWidth.W))) val cntCountQueue = Reg(Vec(iqSize, UInt(2.W))) val validIdxQueue = widthMap(i => validQueue(indexQueue(i))) val readyIdxQueue = widthMap(i => validQueue(indexQueue(i)) && io.readyVec(indexQueue(i)))