From b50d10418c95720827c2c57dfaffd1144665a23d Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 14 Nov 2023 23:38:29 -0800 Subject: [PATCH] Add RocketBoundaryBuffers fragment --- .../main/scala/config/fragments/TileFragments.scala | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 + )) + } +})