From 5f58e0c7c66970989ddf80375109bb7a4a19adb7 Mon Sep 17 00:00:00 2001 From: Martijn Bastiaan Date: Fri, 22 Mar 2024 21:24:32 +0100 Subject: [PATCH] Handle `ERR` in `toWishbone` --- src/main/scala/vexriscv/ip/DataCache.scala | 6 +++--- src/main/scala/vexriscv/ip/InstructionCache.scala | 8 ++++---- src/main/scala/vexriscv/plugin/DBusSimplePlugin.scala | 6 +++--- src/main/scala/vexriscv/plugin/IBusSimplePlugin.scala | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/scala/vexriscv/ip/DataCache.scala b/src/main/scala/vexriscv/ip/DataCache.scala index 5ed44f671..a7506e655 100644 --- a/src/main/scala/vexriscv/ip/DataCache.scala +++ b/src/main/scala/vexriscv/ip/DataCache.scala @@ -368,13 +368,13 @@ case class DataCacheMemBus(p : DataCacheConfig) extends Bundle with IMasterSlave bus.WE := cmdBridge.wr bus.DAT_MOSI := cmdBridge.data - cmdBridge.ready := cmdBridge.valid && bus.ACK + cmdBridge.ready := cmdBridge.valid && (bus.ACK || bus.ERR) bus.CYC := cmdBridge.valid bus.STB := cmdBridge.valid - rsp.valid := RegNext(cmdBridge.valid && !bus.WE && bus.ACK) init(False) + rsp.valid := RegNext(cmdBridge.valid && !bus.WE && (bus.ACK || bus.ERR)) init(False) rsp.data := RegNext(bus.DAT_MISO) - rsp.error := False //TODO + rsp.error := RegNext(bus.ERR) bus } diff --git a/src/main/scala/vexriscv/ip/InstructionCache.scala b/src/main/scala/vexriscv/ip/InstructionCache.scala index e09712cbd..20584a661 100644 --- a/src/main/scala/vexriscv/ip/InstructionCache.scala +++ b/src/main/scala/vexriscv/ip/InstructionCache.scala @@ -239,15 +239,15 @@ case class InstructionCacheMemBus(p : InstructionCacheConfig) extends Bundle wit when(cmd.valid || pending){ bus.CYC := True bus.STB := True - when(bus.ACK){ + when(bus.ACK || bus.ERR){ counter := counter + 1 } } - cmd.ready := cmd.valid && bus.ACK - rsp.valid := RegNext(bus.CYC && bus.ACK) init(False) + cmd.ready := cmd.valid && (bus.ACK || bus.ERR) + rsp.valid := RegNext(bus.CYC && (bus.ACK || bus.ERR)) init(False) rsp.data := RegNext(bus.DAT_MISO) - rsp.error := False //TODO + rsp.error := RegNext(bus.ERR) bus } diff --git a/src/main/scala/vexriscv/plugin/DBusSimplePlugin.scala b/src/main/scala/vexriscv/plugin/DBusSimplePlugin.scala index 84cf9e5c2..5733ac7f8 100644 --- a/src/main/scala/vexriscv/plugin/DBusSimplePlugin.scala +++ b/src/main/scala/vexriscv/plugin/DBusSimplePlugin.scala @@ -199,13 +199,13 @@ case class DBusSimpleBus(bigEndian : Boolean = false) extends Bundle with IMaste bus.WE := cmdStage.wr bus.DAT_MOSI := cmdStage.data - cmdStage.ready := cmdStage.valid && bus.ACK + cmdStage.ready := cmdStage.valid && (bus.ACK || bus.ERR) bus.CYC := cmdStage.valid bus.STB := cmdStage.valid - rsp.ready := cmdStage.valid && !bus.WE && bus.ACK + rsp.ready := cmdStage.valid && !bus.WE && (bus.ACK || bus.ERR) rsp.data := bus.DAT_MISO - rsp.error := False //TODO + rsp.error := bus.ERR bus } diff --git a/src/main/scala/vexriscv/plugin/IBusSimplePlugin.scala b/src/main/scala/vexriscv/plugin/IBusSimplePlugin.scala index 1bb02bf22..dc19d4341 100644 --- a/src/main/scala/vexriscv/plugin/IBusSimplePlugin.scala +++ b/src/main/scala/vexriscv/plugin/IBusSimplePlugin.scala @@ -156,10 +156,10 @@ case class IBusSimpleBus(plugin: IBusSimplePlugin) extends Bundle with IMasterSl bus.STB := cmdPipe.valid - cmdPipe.ready := cmdPipe.valid && bus.ACK - rsp.valid := bus.CYC && bus.ACK + cmdPipe.ready := cmdPipe.valid && (bus.ACK || bus.ERR) + rsp.valid := bus.CYC && (bus.ACK || bus.ERR) rsp.inst := bus.DAT_MISO - rsp.error := False //TODO + rsp.error := bus.ERR bus }