1730cfbc0SXuan Hupackage xiangshan.backend.issue 2730cfbc0SXuan Hu 383ba63b3SXuan 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 EnqPolicyIO(implicit p: IssueBlockParams) extends Bundle { 10*8321ef33Ssinsanction val canEnq = Input(UInt((p.numEntries-p.numEnq).W)) 115db4956bSzhanglyGit val enqSelOHVec = Vec(p.numEnq, ValidIO(UInt((p.numEntries-p.numEnq).W))) 12730cfbc0SXuan Hu} 13730cfbc0SXuan Hu 14730cfbc0SXuan Huclass EnqPolicy(implicit p: Parameters, iqP: IssueBlockParams) extends XSModule { 15730cfbc0SXuan Hu val io = IO(new EnqPolicyIO) 16730cfbc0SXuan Hu 17*8321ef33Ssinsanction val canEnqVec = io.canEnq.asBools 18730cfbc0SXuan Hu // Todo: support more policies 19*8321ef33Ssinsanction val selVec: Seq[(Bool, Vec[Bool])] = io.enqSelOHVec.indices.map(i => SelectOne("circ", canEnqVec, iqP.numEnq).getNthOH(i + 1)) 20730cfbc0SXuan Hu 21730cfbc0SXuan Hu io.enqSelOHVec.zip(selVec).foreach { case (enqOH, (selValid, selOH)) => 22730cfbc0SXuan Hu enqOH.valid := selValid 23730cfbc0SXuan Hu enqOH.bits := selOH.asUInt 24730cfbc0SXuan Hu } 25730cfbc0SXuan Hu} 26