Fragmenter: add an option for earlyAck only on PutFulls (#1095)
Fragmenter: add a third case for earlyAck (PutFulls only) It seems quite common to have a device that is backed by ECC. When performing a multibeat PutPartial, these devices can exhibit their first error on the last beat (if it had an incomplete write mask for that beat, which required read-write-modifying corrupted data). Generally, these devices have ECC granularity <= the bus width. In those cases, if you send a PutFull, the first beat carries the error value for the whole burst. Consider: If the PutFull was below the granularity, it was a single beat. If the PutFull was multi-beat, it exceeds the granularity. Therefore, an important variation on the earlyAck optimization is the case where only PutFulls receive an earlyAck.
This commit is contained in:
committed by
GitHub
parent
4514adb77c
commit
b59880fe8e
@ -122,7 +122,7 @@ trait CanHaveScratchpad extends HasHellaCache with HasICacheFrontend {
|
||||
val xbar = LazyModule(new TLXbar)
|
||||
xbar.node := slaveNode
|
||||
xbarPorts.foreach { case (port, bytes) =>
|
||||
(Seq(port, TLFragmenter(bytes, cacheBlockBytes, earlyAck=true))
|
||||
(Seq(port, TLFragmenter(bytes, cacheBlockBytes, earlyAck=EarlyAck.PutFulls))
|
||||
++ (xBytes != bytes).option(TLWidthWidget(xBytes)))
|
||||
.foldRight(xbar.node:TLOutwardNode)(_ := _)
|
||||
}
|
||||
|
Reference in New Issue
Block a user