24 lines
603 B
Scala
24 lines
603 B
Scala
import chisel3._
|
|
import chisel3.util._
|
|
|
|
class LoadQueue(p: CoreParams = CoreParams()) extends Module {
|
|
val io = IO(new Bundle {
|
|
val enqValid = Input(Bool())
|
|
val enqAddr = Input(UInt(p.xlen.W))
|
|
val enqReady = Output(Bool())
|
|
val complete = Input(Bool())
|
|
val flush = Input(Bool())
|
|
})
|
|
|
|
val count = RegInit(0.U(log2Ceil(p.loadQueueEntries + 1).W))
|
|
io.enqReady := count =/= p.loadQueueEntries.U
|
|
|
|
when(io.flush) {
|
|
count := 0.U
|
|
}.otherwise {
|
|
when(io.enqValid && io.enqReady) { count := count + 1.U }
|
|
when(io.complete && count =/= 0.U) { count := count - 1.U }
|
|
}
|
|
}
|
|
|