1*45c767e3SLinJiaweipackage top 2*45c767e3SLinJiawei 3*45c767e3SLinJiaweiimport chisel3._ 4*45c767e3SLinJiaweiimport chisel3.util._ 5*45c767e3SLinJiaweiimport xiangshan._ 6*45c767e3SLinJiaweiimport utils._ 7*45c767e3SLinJiaweiimport system._ 8*45c767e3SLinJiaweiimport chipsalliance.rocketchip.config._ 9*45c767e3SLinJiaweiimport freechips.rocketchip.tile.{BusErrorUnit, BusErrorUnitParams, XLen} 10*45c767e3SLinJiaweiimport sifive.blocks.inclusivecache.{InclusiveCache, InclusiveCacheMicroParameters, CacheParameters} 11*45c767e3SLinJiaweiimport xiangshan.backend.dispatch.DispatchParameters 12*45c767e3SLinJiaweiimport xiangshan.cache.{DCacheParameters, ICacheParameters, L1plusCacheParameters} 13*45c767e3SLinJiaweiimport xiangshan.cache.prefetch.{BOPParameters, L1plusPrefetcherParameters, L2PrefetcherParameters, StreamPrefetchParameters} 14*45c767e3SLinJiawei 15*45c767e3SLinJiaweiclass DefaultConfig(n: Int) extends Config((site, here, up) => { 16*45c767e3SLinJiawei case XLen => 64 17*45c767e3SLinJiawei case DebugOptionsKey => DebugOptions() 18*45c767e3SLinJiawei case SoCParamsKey => SoCParameters( 19*45c767e3SLinJiawei cores = List.tabulate(n){ i => XSCoreParameters(HartId = i) } 20*45c767e3SLinJiawei ) 21*45c767e3SLinJiawei}) 22*45c767e3SLinJiawei 23*45c767e3SLinJiawei// TODO: disable L2 and L3 24*45c767e3SLinJiaweiclass MinimalConfig(n: Int = 1) extends Config( 25*45c767e3SLinJiawei new DefaultConfig(n).alter((site, here, up) => { 26*45c767e3SLinJiawei case SoCParamsKey => up(SoCParamsKey).copy( 27*45c767e3SLinJiawei cores = up(SoCParamsKey).cores.map(_.copy( 28*45c767e3SLinJiawei HasL2Cache = false, 29*45c767e3SLinJiawei IssQueSize = 8, 30*45c767e3SLinJiawei NRPhyRegs = 80, 31*45c767e3SLinJiawei LoadQueueSize = 16, 32*45c767e3SLinJiawei StoreQueueSize = 16, 33*45c767e3SLinJiawei RoqSize = 32, 34*45c767e3SLinJiawei BrqSize = 8, 35*45c767e3SLinJiawei FtqSize = 16, 36*45c767e3SLinJiawei IBufSize = 16, 37*45c767e3SLinJiawei dpParams = DispatchParameters( 38*45c767e3SLinJiawei IntDqSize = 8, 39*45c767e3SLinJiawei FpDqSize = 8, 40*45c767e3SLinJiawei LsDqSize = 8, 41*45c767e3SLinJiawei IntDqDeqWidth = 4, 42*45c767e3SLinJiawei FpDqDeqWidth = 4, 43*45c767e3SLinJiawei LsDqDeqWidth = 4 44*45c767e3SLinJiawei ), 45*45c767e3SLinJiawei EnableBPD = false, // disable TAGE 46*45c767e3SLinJiawei EnableLoop = false, 47*45c767e3SLinJiawei )) 48*45c767e3SLinJiawei ) 49*45c767e3SLinJiawei }) 50*45c767e3SLinJiawei)