1730cfbc0SXuan Hupackage xiangshan.backend.issue 2730cfbc0SXuan Hu 3*83ba63b3SXuan Huimport org.chipsalliance.cde.config.Parameters 4730cfbc0SXuan Huimport chisel3._ 5730cfbc0SXuan Huimport chisel3.util._ 6730cfbc0SXuan Huimport utility.SelectOne 7730cfbc0SXuan Huimport xiangshan.XSModule 8730cfbc0SXuan Hu 9730cfbc0SXuan Huclass DeqPolicyIO(implicit p: IssueBlockParams) extends Bundle { 10730cfbc0SXuan Hu val request = Input(UInt(p.numEntries.W)) 11730cfbc0SXuan Hu val deqSelOHVec = Vec(p.numDeq, ValidIO(UInt(p.numEntries.W))) 12730cfbc0SXuan Hu} 13730cfbc0SXuan Hu 14730cfbc0SXuan Huclass DeqPolicy(implicit p: Parameters, iqP: IssueBlockParams) extends XSModule { 15730cfbc0SXuan Hu val io = IO(new DeqPolicyIO) 16730cfbc0SXuan Hu 17730cfbc0SXuan Hu private val requestVec = VecInit(io.request.asBools) 18730cfbc0SXuan Hu // Todo: support more policies 19730cfbc0SXuan Hu private val selVec: Seq[(Bool, Vec[Bool])] = io.deqSelOHVec.indices.map(i => SelectOne("circ", requestVec, iqP.numDeq).getNthOH(i + 1)) 20730cfbc0SXuan Hu 21730cfbc0SXuan Hu io.deqSelOHVec.zip(selVec).foreach { case (deqOH, (selValid, selOH)) => 22730cfbc0SXuan Hu deqOH.valid := selValid 23730cfbc0SXuan Hu deqOH.bits := selOH.asUInt 24730cfbc0SXuan Hu } 25730cfbc0SXuan Hu} 26