axi4: massage test cases into shape again
This commit is contained in:
parent
9f08c484bd
commit
e1a072a644
@ -134,12 +134,16 @@ trait PeripheryMasterAXI4Mem {
|
|||||||
beatBytes = config.beatBytes)
|
beatBytes = config.beatBytes)
|
||||||
})
|
})
|
||||||
|
|
||||||
private val converter = LazyModule(new TLToAXI4(config.idBits))
|
private val converter = LazyModule(new TLToAXI4(config.beatBytes))
|
||||||
|
private val trim = LazyModule(new AXI4IdIndexer(config.idBits))
|
||||||
|
private val yank = LazyModule(new AXI4UserYanker)
|
||||||
private val buffer = LazyModule(new AXI4Buffer)
|
private val buffer = LazyModule(new AXI4Buffer)
|
||||||
|
|
||||||
mem foreach { case xbar =>
|
mem foreach { case xbar =>
|
||||||
converter.node := xbar.node
|
converter.node := xbar.node
|
||||||
buffer.node := converter.node
|
trim.node := converter.node
|
||||||
|
yank.node := trim.node
|
||||||
|
buffer.node := yank.node
|
||||||
mem_axi4 := buffer.node
|
mem_axi4 := buffer.node
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -207,10 +211,12 @@ trait PeripheryMasterAXI4MMIO {
|
|||||||
|
|
||||||
mmio_axi4 :=
|
mmio_axi4 :=
|
||||||
AXI4Buffer()(
|
AXI4Buffer()(
|
||||||
|
AXI4UserYanker()(
|
||||||
AXI4Deinterleaver(cacheBlockBytes)(
|
AXI4Deinterleaver(cacheBlockBytes)(
|
||||||
TLToAXI4(idBits = config.idBits)( // use idBits = 0 for AXI4-Lite
|
AXI4IdIndexer(config.idBits)(
|
||||||
|
TLToAXI4(config.beatBytes)(
|
||||||
TLWidthWidget(socBusConfig.beatBytes)( // convert width before attaching to socBus
|
TLWidthWidget(socBusConfig.beatBytes)( // convert width before attaching to socBus
|
||||||
socBus.node))))
|
socBus.node))))))
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryMasterAXI4MMIOBundle {
|
trait PeripheryMasterAXI4MMIOBundle {
|
||||||
@ -241,7 +247,7 @@ trait PeripherySlaveAXI4 extends HasTopLevelNetworks {
|
|||||||
fsb.node :=
|
fsb.node :=
|
||||||
TLWidthWidget(config.beatBytes)(
|
TLWidthWidget(config.beatBytes)(
|
||||||
AXI4ToTL()(
|
AXI4ToTL()(
|
||||||
AXI4UserYanker(1 << (config.sourceBits - fifoBits - 1))(
|
AXI4UserYanker(Some(1 << (config.sourceBits - fifoBits - 1)))(
|
||||||
AXI4Fragmenter()(
|
AXI4Fragmenter()(
|
||||||
AXI4IdIndexer(fifoBits)(
|
AXI4IdIndexer(fifoBits)(
|
||||||
l2FrontendAXI4Node)))))
|
l2FrontendAXI4Node)))))
|
||||||
|
@ -26,8 +26,8 @@ class AXI4LiteFuzzRAM()(implicit p: Parameters) extends LazyModule
|
|||||||
|
|
||||||
model.node := fuzz.node
|
model.node := fuzz.node
|
||||||
xbar.node := TLDelayer(0.1)(TLBuffer(BufferParams.flow)(TLDelayer(0.2)(model.node)))
|
xbar.node := TLDelayer(0.1)(TLBuffer(BufferParams.flow)(TLDelayer(0.2)(model.node)))
|
||||||
ram.node := AXI4Fragmenter()(AXI4Deinterleaver(16)(TLToAXI4(0, true )(xbar.node)))
|
ram.node := AXI4Fragmenter()(AXI4Deinterleaver(16)(TLToAXI4(4, true )(xbar.node)))
|
||||||
gpio.node := AXI4Fragmenter()(AXI4Deinterleaver(16)(TLToAXI4(0, false)(xbar.node)))
|
gpio.node := AXI4Fragmenter()(AXI4Deinterleaver(16)(TLToAXI4(4, false)(xbar.node)))
|
||||||
|
|
||||||
lazy val module = new LazyModuleImp(this) with HasUnitTestIO {
|
lazy val module = new LazyModuleImp(this) with HasUnitTestIO {
|
||||||
io.finished := fuzz.module.io.finished
|
io.finished := fuzz.module.io.finished
|
||||||
@ -104,7 +104,7 @@ class AXI4FuzzSlave()(implicit p: Parameters) extends LazyModule
|
|||||||
TLBuffer(BufferParams.flow)(
|
TLBuffer(BufferParams.flow)(
|
||||||
TLDelayer(0.1)(
|
TLDelayer(0.1)(
|
||||||
AXI4ToTL()(
|
AXI4ToTL()(
|
||||||
AXI4UserYanker(4)(
|
AXI4UserYanker(Some(4))(
|
||||||
AXI4Fragmenter()(
|
AXI4Fragmenter()(
|
||||||
AXI4IdIndexer(2)(
|
AXI4IdIndexer(2)(
|
||||||
node))))))))
|
node))))))))
|
||||||
|
@ -8,8 +8,10 @@ import config._
|
|||||||
import diplomacy._
|
import diplomacy._
|
||||||
import uncore.tilelink2.UIntToOH1
|
import uncore.tilelink2.UIntToOH1
|
||||||
|
|
||||||
class AXI4UserYanker(maxFlightPerId: Int)(implicit p: Parameters) extends LazyModule
|
class AXI4UserYanker(capMaxFlight: Option[Int] = None)(implicit p: Parameters) extends LazyModule
|
||||||
{
|
{
|
||||||
|
// !!! make maxFlightPerId a cap and maxFlight a per AXI4 Master parameter
|
||||||
|
val maxFlightPerId = capMaxFlight.getOrElse(8)
|
||||||
require (maxFlightPerId >= 1)
|
require (maxFlightPerId >= 1)
|
||||||
|
|
||||||
val node = AXI4AdapterNode(
|
val node = AXI4AdapterNode(
|
||||||
@ -80,8 +82,8 @@ class AXI4UserYanker(maxFlightPerId: Int)(implicit p: Parameters) extends LazyMo
|
|||||||
object AXI4UserYanker
|
object AXI4UserYanker
|
||||||
{
|
{
|
||||||
// applied to the AXI4 source node; y.node := AXI4UserYanker(idBits, maxFlight)(x.node)
|
// applied to the AXI4 source node; y.node := AXI4UserYanker(idBits, maxFlight)(x.node)
|
||||||
def apply(maxFlight: Int)(x: AXI4OutwardNode)(implicit p: Parameters, sourceInfo: SourceInfo): AXI4OutwardNode = {
|
def apply(capMaxFlight: Option[Int] = None)(x: AXI4OutwardNode)(implicit p: Parameters, sourceInfo: SourceInfo): AXI4OutwardNode = {
|
||||||
val yanker = LazyModule(new AXI4UserYanker(maxFlight))
|
val yanker = LazyModule(new AXI4UserYanker(capMaxFlight))
|
||||||
yanker.node := x
|
yanker.node := x
|
||||||
yanker.node
|
yanker.node
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user