From b4b165112cc64354a31c834739576efc8155551d Mon Sep 17 00:00:00 2001 From: "Wesley W. Terpstra" Date: Tue, 13 Jun 2017 16:04:57 -0700 Subject: [PATCH] PeripheryErrorSlave: do not put a TLMonitor between the fragmenter and slave This edge has the largest number of source bits by far. Let's just exclude it. --- src/main/scala/rocketchip/Periphery.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/scala/rocketchip/Periphery.scala b/src/main/scala/rocketchip/Periphery.scala index 91c87ceb..fa817d5e 100644 --- a/src/main/scala/rocketchip/Periphery.scala +++ b/src/main/scala/rocketchip/Periphery.scala @@ -346,7 +346,11 @@ trait HasPeripheryErrorSlave extends HasSystemNetworks { private val config = p(ErrorConfig) private val maxXfer = min(config.address.map(_.alignment).max.toInt, 4096) val error = LazyModule(new TLError(config.address, peripheryBusConfig.beatBytes)) - error.node := TLFragmenter(peripheryBusConfig.beatBytes, maxXfer)(peripheryBus.node) + + // Override the default Parameters to exclude the TLMonitor between the Fragmenter and error slave. + // Most slaves do not support a 4kB burst so this slave ends up with many more source bits than others. + private def sourceInfo(implicit x: chisel3.internal.sourceinfo.SourceInfo) = x + error.node.:=(TLFragmenter(peripheryBusConfig.beatBytes, maxXfer)(peripheryBus.node))(new WithoutTLMonitors ++ p, sourceInfo) }