1package xiangshan.backend.issue 2 3import chisel3._ 4import chisel3.util._ 5import xiangshan._ 6 7class IssueQueue(val fuTypeInt: BigInt, wakeupCnt: Int, val bypassCnt: Int) extends XSModule with NeedImpl { 8 9 val useBypass = bypassCnt > 0 10 11 val io = IO(new Bundle() { 12 // flush Issue Queue 13 val redirect = Flipped(ValidIO(new Redirect)) 14 15 // enq Ctrl sigs at dispatch-2 16 val enqCtrl = Flipped(DecoupledIO(new MicroOp)) 17 // enq Data at next cycle (regfile has 1 cycle latency) 18 val enqData = Flipped(ValidIO(new ExuInput)) 19 20 // broadcast selected uop to other issue queues which has bypasses 21 val selectedUop = if(useBypass) DecoupledIO(new MicroOp) else null 22 23 // send to exu 24 val deq = DecoupledIO(new ExuInput) 25 26 // listen to write back bus 27 val wakeUpPorts = Vec(wakeupCnt, Flipped(DecoupledIO(new ExuOutput))) 28 29 // use bypass uops to speculative wake-up 30 val bypassUops = if(useBypass) Vec(bypassCnt, Flipped(DecoupledIO(new MicroOp))) else null 31 val bypassData = if(useBypass) Vec(bypassCnt, Flipped(DecoupledIO(new ExuOutput))) else null 32 }) 33} 34