25 lines
717 B
Scala
25 lines
717 B
Scala
import chisel3._
|
|
import chisel3.util._
|
|
|
|
class ReservationStation(p: CoreParams = CoreParams(), entries: Int = 16) extends Module {
|
|
val io = IO(new Bundle {
|
|
val enqValid = Input(Bool())
|
|
val enq = Input(new RenamePacket(p))
|
|
val enqReady = Output(Bool())
|
|
val issueValid = Output(Bool())
|
|
val issue = Output(new RenamePacket(p))
|
|
val issueReady = Input(Bool())
|
|
val flush = Input(Bool())
|
|
})
|
|
|
|
val q = Module(new Queue(new RenamePacket(p), entries, flow = false, pipe = true))
|
|
q.io.enq.valid := io.enqValid
|
|
q.io.enq.bits := io.enq
|
|
q.io.deq.ready := io.issueReady || io.flush
|
|
|
|
io.enqReady := q.io.enq.ready
|
|
io.issueValid := q.io.deq.valid && !io.flush
|
|
io.issue := q.io.deq.bits
|
|
}
|
|
|