Remove the legacy pipelining from Axi4 cacheless bridges
This commit is contained in:
parent
7d99a70e9c
commit
c738246610
|
@ -82,7 +82,7 @@ case class DBusSimpleBus() extends Bundle with IMasterSlave{
|
||||||
slave(rsp)
|
slave(rsp)
|
||||||
}
|
}
|
||||||
|
|
||||||
def toAxi4Shared(stageCmd : Boolean = true): Axi4Shared = {
|
def toAxi4Shared(stageCmd : Boolean = false): Axi4Shared = {
|
||||||
val axi = Axi4Shared(DBusSimpleBus.getAxi4Config())
|
val axi = Axi4Shared(DBusSimpleBus.getAxi4Config())
|
||||||
val pendingWritesMax = 7
|
val pendingWritesMax = 7
|
||||||
val pendingWrites = CounterUpDown(
|
val pendingWrites = CounterUpDown(
|
||||||
|
@ -92,7 +92,7 @@ case class DBusSimpleBus() extends Bundle with IMasterSlave{
|
||||||
)
|
)
|
||||||
|
|
||||||
val cmdPreFork = if (stageCmd) cmd.stage.stage().s2mPipe() else cmd
|
val cmdPreFork = if (stageCmd) cmd.stage.stage().s2mPipe() else cmd
|
||||||
val (cmdFork, dataFork) = StreamFork2(cmdPreFork.haltWhen((pendingWrites =/= 0 && !cmdPreFork.wr) || pendingWrites === pendingWritesMax))
|
val (cmdFork, dataFork) = StreamFork2(cmdPreFork.haltWhen((pendingWrites =/= 0 && cmdPreFork.valid && !cmdPreFork.wr) || pendingWrites === pendingWritesMax))
|
||||||
axi.sharedCmd.arbitrationFrom(cmdFork)
|
axi.sharedCmd.arbitrationFrom(cmdFork)
|
||||||
axi.sharedCmd.write := cmdFork.wr
|
axi.sharedCmd.write := cmdFork.wr
|
||||||
axi.sharedCmd.prot := "010"
|
axi.sharedCmd.prot := "010"
|
||||||
|
@ -117,16 +117,7 @@ case class DBusSimpleBus() extends Bundle with IMasterSlave{
|
||||||
|
|
||||||
axi.r.ready := True
|
axi.r.ready := True
|
||||||
axi.b.ready := True
|
axi.b.ready := True
|
||||||
|
axi
|
||||||
|
|
||||||
//TODO remove
|
|
||||||
val axi2 = Axi4Shared(DBusSimpleBus.getAxi4Config())
|
|
||||||
axi.arw >-> axi2.arw
|
|
||||||
axi.w >> axi2.w
|
|
||||||
axi.r << axi2.r
|
|
||||||
axi.b << axi2.b
|
|
||||||
// axi2 << axi
|
|
||||||
axi2
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def toAxi4(stageCmd : Boolean = true) = this.toAxi4Shared(stageCmd).toAxi4()
|
def toAxi4(stageCmd : Boolean = true) = this.toAxi4Shared(stageCmd).toAxi4()
|
||||||
|
|
|
@ -68,7 +68,7 @@ object IBusSimpleBus{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
case class IBusSimpleBus(interfaceKeepData : Boolean = false) extends Bundle with IMasterSlave {
|
case class IBusSimpleBus(cmdIsPersistente : Boolean = false) extends Bundle with IMasterSlave {
|
||||||
var cmd = Stream(IBusSimpleCmd())
|
var cmd = Stream(IBusSimpleCmd())
|
||||||
var rsp = Flow(IBusSimpleRsp())
|
var rsp = Flow(IBusSimpleRsp())
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ case class IBusSimpleBus(interfaceKeepData : Boolean = false) extends Bundle wit
|
||||||
|
|
||||||
|
|
||||||
def toAxi4ReadOnly(): Axi4ReadOnly = {
|
def toAxi4ReadOnly(): Axi4ReadOnly = {
|
||||||
assert(!interfaceKeepData)
|
assert(cmdIsPersistente)
|
||||||
val axi = Axi4ReadOnly(IBusSimpleBus.getAxi4Config())
|
val axi = Axi4ReadOnly(IBusSimpleBus.getAxi4Config())
|
||||||
|
|
||||||
axi.ar.valid := cmd.valid
|
axi.ar.valid := cmd.valid
|
||||||
|
@ -94,17 +94,11 @@ case class IBusSimpleBus(interfaceKeepData : Boolean = false) extends Bundle wit
|
||||||
rsp.error := !axi.r.isOKAY()
|
rsp.error := !axi.r.isOKAY()
|
||||||
axi.r.ready := True
|
axi.r.ready := True
|
||||||
|
|
||||||
|
axi
|
||||||
//TODO remove
|
|
||||||
val axi2 = Axi4ReadOnly(IBusSimpleBus.getAxi4Config())
|
|
||||||
axi.ar >-> axi2.ar
|
|
||||||
axi.r << axi2.r
|
|
||||||
// axi2 << axi
|
|
||||||
axi2
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def toAvalon(): AvalonMM = {
|
def toAvalon(): AvalonMM = {
|
||||||
assert(!interfaceKeepData)
|
assert(cmdIsPersistente)
|
||||||
val avalonConfig = IBusSimpleBus.getAvalonConfig()
|
val avalonConfig = IBusSimpleBus.getAvalonConfig()
|
||||||
val mm = AvalonMM(avalonConfig)
|
val mm = AvalonMM(avalonConfig)
|
||||||
|
|
||||||
|
@ -199,7 +193,7 @@ class IBusSimplePlugin(resetVector : BigInt,
|
||||||
|
|
||||||
override def setup(pipeline: VexRiscv): Unit = {
|
override def setup(pipeline: VexRiscv): Unit = {
|
||||||
super.setup(pipeline)
|
super.setup(pipeline)
|
||||||
iBus = master(IBusSimpleBus(false)).setName("iBus")
|
iBus = master(IBusSimpleBus(cmdForkPersistence)).setName("iBus")
|
||||||
|
|
||||||
val decoderService = pipeline.service(classOf[DecoderService])
|
val decoderService = pipeline.service(classOf[DecoderService])
|
||||||
decoderService.add(FENCE_I, Nil)
|
decoderService.add(FENCE_I, Nil)
|
||||||
|
|
Loading…
Reference in New Issue