xref: /XiangShan/src/main/scala/top/Configs.scala (revision 45c767e322bf89cd3027d4875232d571d96292e1)
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)