Fix iBusSimplePlugin MMU integration
This commit is contained in:
parent
befc54a444
commit
4ad1215873
|
@ -317,15 +317,16 @@ class IBusSimplePlugin( resetVector : BigInt,
|
||||||
|
|
||||||
cmd.pc := mmuBus.rsp.physicalAddress(31 downto 2) @@ U"00"
|
cmd.pc := mmuBus.rsp.physicalAddress(31 downto 2) @@ U"00"
|
||||||
|
|
||||||
//do not emit memory request if MMU miss
|
//do not emit memory request if MMU had issues
|
||||||
when(mmuBus.rsp.exception || mmuBus.rsp.refilling){
|
when(cmdForkStage.input.valid) {
|
||||||
cmdForkStage.halt := False
|
when(mmuBus.rsp.refilling) {
|
||||||
cmd.valid := False
|
cmdForkStage.halt := True
|
||||||
}
|
cmd.valid := False
|
||||||
|
}
|
||||||
when(mmuBus.busy){
|
when(mmuBus.rsp.exception) {
|
||||||
cmdForkStage.input.valid := False
|
cmdForkStage.halt := False
|
||||||
cmdForkStage.input.ready := False
|
cmd.valid := False
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val joinCtx = stageXToIBusRsp(cmdForkStage, mmuBus.rsp)
|
val joinCtx = stageXToIBusRsp(cmdForkStage, mmuBus.rsp)
|
||||||
|
@ -354,6 +355,7 @@ class IBusSimplePlugin( resetVector : BigInt,
|
||||||
c.io.push << iBus.rsp.throwWhen(discardCounter =/= 0).toStream
|
c.io.push << iBus.rsp.throwWhen(discardCounter =/= 0).toStream
|
||||||
c.io.flush := iBusRsp.stages.last.flush
|
c.io.flush := iBusRsp.stages.last.flush
|
||||||
if(compressedGen) c.io.flush setWhen(decompressor.consumeCurrent)
|
if(compressedGen) c.io.flush setWhen(decompressor.consumeCurrent)
|
||||||
|
if(!compressedGen && isDrivingDecode(IBUS_RSP)) c.io.flush setWhen(decode.arbitration.flushNext && iBusRsp.output.ready)
|
||||||
rspBufferOutput << c.io.pop
|
rspBufferOutput << c.io.pop
|
||||||
} else new Area{
|
} else new Area{
|
||||||
val rspStream = iBus.rsp.throwWhen(discardCounter =/= 0).toStream
|
val rspStream = iBus.rsp.throwWhen(discardCounter =/= 0).toStream
|
||||||
|
|
Loading…
Reference in New Issue