@@ -6,14 +6,17 @@ import org.chipsalliance.cde.config.{Field, Parameters, Config}
66import freechips .rocketchip .tile ._
77import freechips .rocketchip .subsystem ._
88import freechips .rocketchip .rocket .{RocketCoreParams , MulDivParams , DCacheParams , ICacheParams }
9+ import freechips .rocketchip .diplomacy ._
910
1011import cva6 .{CVA6TileAttachParams }
1112import sodor .common .{SodorTileAttachParams }
1213import ibex .{IbexTileAttachParams }
1314import vexiiriscv .{VexiiRiscvTileAttachParams }
1415import testchipip .cosim .{TracePortKey , TracePortParams }
1516import barf .{TilePrefetchingMasterPortParams }
16-
17+ import freechips .rocketchip .trace .{TraceEncoderParams , TraceCoreParams }
18+ import tacit .{TacitEncoder }
19+ import shuttle .common .{ShuttleTileAttachParams }
1720class WithL2TLBs (entries : Int ) extends Config ((site, here, up) => {
1821 case TilesLocated (InSubsystem ) => up(TilesLocated (InSubsystem ), site) map {
1922 case tp : RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
@@ -64,6 +67,46 @@ class WithNPerfCounters(n: Int = 29) extends Config((site, here, up) => {
6467 }
6568})
6669
70+ // Add a Tacit encoder to each tile
71+ class WithTacitEncoder extends Config ((site, here, up) => {
72+ case TilesLocated (InSubsystem ) => up(TilesLocated (InSubsystem ), site) map {
73+ case tp : RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
74+ traceParams = Some (TraceEncoderParams (
75+ encoderBaseAddr = 0x3000000 + tp.tileParams.tileId * 0x1000 ,
76+ buildEncoder = (p : Parameters ) => LazyModule (new TacitEncoder (new TraceCoreParams (
77+ nGroups = 1 ,
78+ xlen = tp.tileParams.core.xLen,
79+ iaddrWidth = tp.tileParams.core.xLen
80+ ),
81+ bufferDepth = 16 ,
82+ coreStages = 5 )(p)),
83+ useArbiterMonitor = false
84+ )),
85+ core = tp.tileParams.core.copy(enableTraceCoreIngress= true )))
86+ case tp : ShuttleTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
87+ traceParams = Some (TraceEncoderParams (
88+ encoderBaseAddr = 0x3000000 + tp.tileParams.tileId * 0x1000 ,
89+ buildEncoder = (p : Parameters ) => LazyModule (new TacitEncoder (new TraceCoreParams (
90+ nGroups = tp.tileParams.core.retireWidth,
91+ xlen = tp.tileParams.core.xLen,
92+ iaddrWidth = tp.tileParams.core.xLen
93+ ), bufferDepth = 16 , coreStages = 7 )(p)),
94+ useArbiterMonitor = false
95+ )),
96+ core = tp.tileParams.core.copy(enableTraceCoreIngress= true )))
97+ }
98+ })
99+
100+ // Add a monitor to RTL print the sinked packets into a file for debugging
101+ class WithTraceArbiterMonitor extends Config ((site, here, up) => {
102+ case TilesLocated (InSubsystem ) => up(TilesLocated (InSubsystem ), site) map {
103+ case tp : RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
104+ traceParams = Some (tp.tileParams.traceParams.get.copy(useArbiterMonitor = true ))))
105+ case tp : ShuttleTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
106+ traceParams = Some (tp.tileParams.traceParams.get.copy(useArbiterMonitor = true ))))
107+ }
108+ })
109+
67110class WithNPMPs (n : Int = 8 ) extends Config ((site, here, up) => {
68111 case TilesLocated (InSubsystem ) => up(TilesLocated (InSubsystem ), site) map {
69112 case tp : RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy(
0 commit comments