rocket: do not require FIFO order for memory-like regions
This commit is contained in:
parent
09b9d33a9a
commit
4eface8a9e
@ -61,7 +61,7 @@ trait HasRocketTiles extends CoreplexRISCVPlatform {
|
|||||||
case SynchronousCrossing(params) => {
|
case SynchronousCrossing(params) => {
|
||||||
val wrapper = LazyModule(new SyncRocketTile(c, i)(pWithExtra))
|
val wrapper = LazyModule(new SyncRocketTile(c, i)(pWithExtra))
|
||||||
val buffer = LazyModule(new TLBuffer(params))
|
val buffer = LazyModule(new TLBuffer(params))
|
||||||
val fixer = LazyModule(new TLFIFOFixer)
|
val fixer = LazyModule(new TLFIFOFixer(TLFIFOFixer.allUncacheable))
|
||||||
buffer.node :=* wrapper.masterNode
|
buffer.node :=* wrapper.masterNode
|
||||||
fixer.node :=* buffer.node
|
fixer.node :=* buffer.node
|
||||||
tile_splitter.node :=* fixer.node
|
tile_splitter.node :=* fixer.node
|
||||||
@ -79,7 +79,7 @@ trait HasRocketTiles extends CoreplexRISCVPlatform {
|
|||||||
val wrapper = LazyModule(new AsyncRocketTile(c, i)(pWithExtra))
|
val wrapper = LazyModule(new AsyncRocketTile(c, i)(pWithExtra))
|
||||||
val sink = LazyModule(new TLAsyncCrossingSink(depth, sync))
|
val sink = LazyModule(new TLAsyncCrossingSink(depth, sync))
|
||||||
val source = LazyModule(new TLAsyncCrossingSource(sync))
|
val source = LazyModule(new TLAsyncCrossingSource(sync))
|
||||||
val fixer = LazyModule(new TLFIFOFixer)
|
val fixer = LazyModule(new TLFIFOFixer(TLFIFOFixer.allUncacheable))
|
||||||
sink.node :=* wrapper.masterNode
|
sink.node :=* wrapper.masterNode
|
||||||
fixer.node :=* sink.node
|
fixer.node :=* sink.node
|
||||||
tile_splitter.node :=* fixer.node
|
tile_splitter.node :=* fixer.node
|
||||||
@ -99,7 +99,7 @@ trait HasRocketTiles extends CoreplexRISCVPlatform {
|
|||||||
val wrapper = LazyModule(new RationalRocketTile(c, i)(pWithExtra))
|
val wrapper = LazyModule(new RationalRocketTile(c, i)(pWithExtra))
|
||||||
val sink = LazyModule(new TLRationalCrossingSink(direction))
|
val sink = LazyModule(new TLRationalCrossingSink(direction))
|
||||||
val source = LazyModule(new TLRationalCrossingSource)
|
val source = LazyModule(new TLRationalCrossingSource)
|
||||||
val fixer = LazyModule(new TLFIFOFixer)
|
val fixer = LazyModule(new TLFIFOFixer(TLFIFOFixer.allUncacheable))
|
||||||
sink.node :=* wrapper.masterNode
|
sink.node :=* wrapper.masterNode
|
||||||
fixer.node :=* sink.node
|
fixer.node :=* sink.node
|
||||||
tile_splitter.node :=* fixer.node
|
tile_splitter.node :=* fixer.node
|
||||||
|
@ -183,8 +183,10 @@ class HellaCacheModule(outer: HellaCache) extends LazyModuleImp(outer)
|
|||||||
val io = new HellaCacheBundle(outer)
|
val io = new HellaCacheBundle(outer)
|
||||||
val tl_out = io.mem(0)
|
val tl_out = io.mem(0)
|
||||||
|
|
||||||
// IOMSHRs must be FIFO
|
// IOMSHRs must be FIFO for all regions with effects
|
||||||
edge.manager.requireFifo()
|
edge.manager.managers.foreach { m =>
|
||||||
|
require (m.fifoId == Some(0) || !TLFIFOFixer.allUncacheable(m))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object HellaCache {
|
object HellaCache {
|
||||||
|
Loading…
Reference in New Issue
Block a user