exe访存时需要allow_to_go
This commit is contained in:
parent
140dad44a8
commit
b9f0def62e
|
@ -14,6 +14,9 @@ class Lsu extends Module {
|
||||||
val dataSram = new DataSram()
|
val dataSram = new DataSram()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
val allow_to_go = Wire(Bool())
|
||||||
|
BoringUtils.addSink(allow_to_go, "exe_allow_to_go")
|
||||||
|
|
||||||
def genWmask(addr: UInt, sizeEncode: UInt): UInt = {
|
def genWmask(addr: UInt, sizeEncode: UInt): UInt = {
|
||||||
LookupTree(
|
LookupTree(
|
||||||
sizeEncode,
|
sizeEncode,
|
||||||
|
@ -58,7 +61,7 @@ class Lsu extends Module {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val valid = io.info.valid && io.info.fusel === FuType.lsu // && 无异常
|
val valid = io.info.valid && io.info.fusel === FuType.lsu && allow_to_go// && 无异常
|
||||||
val op = io.info.op
|
val op = io.info.op
|
||||||
val is_load = valid && LSUOpType.isLoad(op)
|
val is_load = valid && LSUOpType.isLoad(op)
|
||||||
val is_store = valid && LSUOpType.isStore(op)
|
val is_store = valid && LSUOpType.isStore(op)
|
||||||
|
@ -114,10 +117,6 @@ class Lsu extends Module {
|
||||||
"b11".U -> (addr(2, 0) === 0.U) //d
|
"b11".U -> (addr(2, 0) === 0.U) //d
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
val allow_to_go = Wire(Bool())
|
|
||||||
BoringUtils.addSink(allow_to_go, "exe_allow_to_go")
|
|
||||||
|
|
||||||
val addr_last = RegEnable(addr, allow_to_go)
|
val addr_last = RegEnable(addr, allow_to_go)
|
||||||
|
|
||||||
io.dataSram.en := valid && addr_aligned
|
io.dataSram.en := valid && addr_aligned
|
||||||
|
|
Loading…
Reference in New Issue