diff --git a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala index abd26769..6262fbcd 100644 --- a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala @@ -105,3 +105,13 @@ class WithTilePrefetchers extends Config((site, here, up) => { master = TilePrefetchingMasterPortParams(tp.tileParams.hartId, tp.crossingParams.master))) } }) + +// Adds boundary buffers to RocketTiles, which places buffers between the caches and the TileLink interface +// This typically makes it easier to close timing +class WithRocketBoundaryBuffers(buffers: Option[RocketTileBoundaryBufferParams] = Some(RocketTileBoundaryBufferParams(true))) extends Config((site, here, up) => { + case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem)) map { + case tp: RocketTileAttachParams => tp.copy(tileParams=tp.tileParams.copy( + boundaryBuffers=buffers + )) + } +})