xref: /XiangShan/src/main/scala/top/Configs.scala (revision 175bcfe9ae63c4f6c46e0386e26656f6fa9fe4d3)
145c767e3SLinJiaweipackage top
245c767e3SLinJiawei
345c767e3SLinJiaweiimport chisel3._
445c767e3SLinJiaweiimport chisel3.util._
545c767e3SLinJiaweiimport xiangshan._
645c767e3SLinJiaweiimport utils._
745c767e3SLinJiaweiimport system._
845c767e3SLinJiaweiimport chipsalliance.rocketchip.config._
945c767e3SLinJiaweiimport freechips.rocketchip.tile.{BusErrorUnit, BusErrorUnitParams, XLen}
1045c767e3SLinJiaweiimport sifive.blocks.inclusivecache.{InclusiveCache, InclusiveCacheMicroParameters, CacheParameters}
1145c767e3SLinJiaweiimport xiangshan.backend.dispatch.DispatchParameters
1245c767e3SLinJiaweiimport xiangshan.cache.{DCacheParameters, ICacheParameters, L1plusCacheParameters}
1345c767e3SLinJiaweiimport xiangshan.cache.prefetch.{BOPParameters, L1plusPrefetcherParameters, L2PrefetcherParameters, StreamPrefetchParameters}
1445c767e3SLinJiawei
1545c767e3SLinJiaweiclass DefaultConfig(n: Int) extends Config((site, here, up) => {
1645c767e3SLinJiawei  case XLen => 64
1745c767e3SLinJiawei  case DebugOptionsKey => DebugOptions()
1845c767e3SLinJiawei  case SoCParamsKey => SoCParameters(
1945c767e3SLinJiawei    cores = List.tabulate(n){ i => XSCoreParameters(HartId = i) }
2045c767e3SLinJiawei  )
2145c767e3SLinJiawei})
2245c767e3SLinJiawei
2345c767e3SLinJiawei// TODO: disable L2 and L3
2445c767e3SLinJiaweiclass MinimalConfig(n: Int = 1) extends Config(
2545c767e3SLinJiawei  new DefaultConfig(n).alter((site, here, up) => {
2645c767e3SLinJiawei    case SoCParamsKey => up(SoCParamsKey).copy(
2745c767e3SLinJiawei      cores = up(SoCParamsKey).cores.map(_.copy(
2845c767e3SLinJiawei        IssQueSize = 8,
2945c767e3SLinJiawei        NRPhyRegs = 80,
3045c767e3SLinJiawei        LoadQueueSize = 16,
3145c767e3SLinJiawei        StoreQueueSize = 16,
3245c767e3SLinJiawei        RoqSize = 32,
3345c767e3SLinJiawei        BrqSize = 8,
3445c767e3SLinJiawei        FtqSize = 16,
3545c767e3SLinJiawei        IBufSize = 16,
3645c767e3SLinJiawei        dpParams = DispatchParameters(
3745c767e3SLinJiawei          IntDqSize = 8,
3845c767e3SLinJiawei          FpDqSize = 8,
3945c767e3SLinJiawei          LsDqSize = 8,
4045c767e3SLinJiawei          IntDqDeqWidth = 4,
4145c767e3SLinJiawei          FpDqDeqWidth = 4,
4245c767e3SLinJiawei          LsDqDeqWidth = 4
4345c767e3SLinJiawei        ),
4445c767e3SLinJiawei        EnableBPD = false, // disable TAGE
4545c767e3SLinJiawei        EnableLoop = false,
46*175bcfe9SLinJiawei        TlbEntrySize = 4,
47*175bcfe9SLinJiawei        TlbSPEntrySize = 2,
48*175bcfe9SLinJiawei        PtwL1EntrySize = 2,
49*175bcfe9SLinJiawei        PtwL2EntrySize = 2,
50*175bcfe9SLinJiawei        PtwL3EntrySize = 4,
51*175bcfe9SLinJiawei        PtwSPEntrySize = 2,
52*175bcfe9SLinJiawei        useFakeDCache = true,
53*175bcfe9SLinJiawei        useFakePTW = true,
54*175bcfe9SLinJiawei        useFakeL1plusCache = true,
55*175bcfe9SLinJiawei      )),
56*175bcfe9SLinJiawei      useFakeL3Cache = true
5745c767e3SLinJiawei    )
5845c767e3SLinJiawei  })
5945c767e3SLinJiawei)