Configs.scala (e4f69d78f24895ac36a5a6c704cec53e4af72485) Configs.scala (15ee59e46c33fe60e4408711f9ea0a6078d50510)
1/***************************************************************************************
2* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3* Copyright (c) 2020-2021 Peng Cheng Laboratory
4*
5* XiangShan is licensed under Mulan PSL v2.
6* You can use this software according to the terms and conditions of the Mulan PSL v2.
7* You may obtain a copy of Mulan PSL v2 at:
8* http://license.coscl.org.cn/MulanPSL2

--- 19 unchanged lines hidden (view full) ---

28import freechips.rocketchip.devices.debug._
29import freechips.rocketchip.tile.MaxHartIdBits
30import xiangshan.backend.dispatch.DispatchParameters
31import xiangshan.backend.exu.ExuParameters
32import xiangshan.cache.DCacheParameters
33import xiangshan.cache.mmu.{L2TLBParameters, TLBParameters}
34import device.{EnableJtag, XSDebugModuleParams}
35import huancun._
1/***************************************************************************************
2* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3* Copyright (c) 2020-2021 Peng Cheng Laboratory
4*
5* XiangShan is licensed under Mulan PSL v2.
6* You can use this software according to the terms and conditions of the Mulan PSL v2.
7* You may obtain a copy of Mulan PSL v2 at:
8* http://license.coscl.org.cn/MulanPSL2

--- 19 unchanged lines hidden (view full) ---

28import freechips.rocketchip.devices.debug._
29import freechips.rocketchip.tile.MaxHartIdBits
30import xiangshan.backend.dispatch.DispatchParameters
31import xiangshan.backend.exu.ExuParameters
32import xiangshan.cache.DCacheParameters
33import xiangshan.cache.mmu.{L2TLBParameters, TLBParameters}
34import device.{EnableJtag, XSDebugModuleParams}
35import huancun._
36import coupledL2._
36
37class BaseConfig(n: Int) extends Config((site, here, up) => {
38 case XLen => 64
39 case DebugOptionsKey => DebugOptions()
40 case SoCParamsKey => SoCParameters()
41 case PMParameKey => PMParameters()
42 case XSTileKey => Seq.tabulate(n){ i => XSCoreParameters(HartId = i) }
43 case ExportDebug => DebugAttachParams(protocols = Set(JTAG))

--- 131 unchanged lines hidden (view full) ---

175 l2tlbParameters = L2TLBParameters(
176 l1Size = 4,
177 l2nSets = 4,
178 l2nWays = 4,
179 l3nSets = 4,
180 l3nWays = 8,
181 spSize = 2,
182 ),
37
38class BaseConfig(n: Int) extends Config((site, here, up) => {
39 case XLen => 64
40 case DebugOptionsKey => DebugOptions()
41 case SoCParamsKey => SoCParameters()
42 case PMParameKey => PMParameters()
43 case XSTileKey => Seq.tabulate(n){ i => XSCoreParameters(HartId = i) }
44 case ExportDebug => DebugAttachParams(protocols = Set(JTAG))

--- 131 unchanged lines hidden (view full) ---

176 l2tlbParameters = L2TLBParameters(
177 l1Size = 4,
178 l2nSets = 4,
179 l2nWays = 4,
180 l3nSets = 4,
181 l3nWays = 8,
182 spSize = 2,
183 ),
183 L2CacheParamsOpt = None, // remove L2 Cache
184 L2CacheParamsOpt = Some(L2Param(
185 name = "L2",
186 ways = 8,
187 sets = 128,
188 echoField = Seq(huancun.DirtyField()),
189 prefetch = None
190 )),
191 L2NBanks = 2,
184 prefetcher = None // if L2 pf_recv_node does not exist, disable SMS prefetcher
185 )
186 )
187 case SoCParamsKey =>
188 val tiles = site(XSTileKey)
189 up(SoCParamsKey).copy(
190 L3CacheParamsOpt = Some(up(SoCParamsKey).L3CacheParamsOpt.get.copy(
191 sets = 1024,
192 inclusive = false,
192 prefetcher = None // if L2 pf_recv_node does not exist, disable SMS prefetcher
193 )
194 )
195 case SoCParamsKey =>
196 val tiles = site(XSTileKey)
197 up(SoCParamsKey).copy(
198 L3CacheParamsOpt = Some(up(SoCParamsKey).L3CacheParamsOpt.get.copy(
199 sets = 1024,
200 inclusive = false,
193 clientCaches = tiles.map{ p =>
194 CacheParameters(
195 "dcache",
196 sets = 2 * p.dcacheParametersOpt.get.nSets,
197 ways = p.dcacheParametersOpt.get.nWays + 2,
198 blockGranularity = log2Ceil(2 * p.dcacheParametersOpt.get.nSets),
199 aliasBitsOpt = None
200 )
201 clientCaches = tiles.map{ core =>
202 val clientDirBytes = tiles.map{ t =>
203 t.L2NBanks * t.L2CacheParamsOpt.map(_.toCacheParams.capacity).getOrElse(0)
204 }.sum
205 val l2params = core.L2CacheParamsOpt.get.toCacheParams
206 l2params.copy(sets = 2 * clientDirBytes / core.L2NBanks / l2params.ways / 64)
201 },
202 simulation = !site(DebugOptionsKey).FPGAPlatform
203 )),
204 L3NBanks = 1
205 )
206 })
207)
208

--- 34 unchanged lines hidden (view full) ---

243 inclusive: Boolean = true,
244 banks: Int = 1,
245 alwaysReleaseData: Boolean = false
246) extends Config((site, here, up) => {
247 case XSTileKey =>
248 val upParams = up(XSTileKey)
249 val l2sets = n * 1024 / banks / ways / 64
250 upParams.map(p => p.copy(
207 },
208 simulation = !site(DebugOptionsKey).FPGAPlatform
209 )),
210 L3NBanks = 1
211 )
212 })
213)
214

--- 34 unchanged lines hidden (view full) ---

249 inclusive: Boolean = true,
250 banks: Int = 1,
251 alwaysReleaseData: Boolean = false
252) extends Config((site, here, up) => {
253 case XSTileKey =>
254 val upParams = up(XSTileKey)
255 val l2sets = n * 1024 / banks / ways / 64
256 upParams.map(p => p.copy(
251 L2CacheParamsOpt = Some(HCCacheParameters(
257 L2CacheParamsOpt = Some(L2Param(
252 name = "L2",
258 name = "L2",
253 level = 2,
254 ways = ways,
255 sets = l2sets,
259 ways = ways,
260 sets = l2sets,
256 inclusive = inclusive,
257 alwaysReleaseData = alwaysReleaseData,
258 clientCaches = Seq(CacheParameters(
261 clientCaches = Seq(L1Param(
259 "dcache",
260 sets = 2 * p.dcacheParametersOpt.get.nSets / banks,
261 ways = p.dcacheParametersOpt.get.nWays + 2,
262 "dcache",
263 sets = 2 * p.dcacheParametersOpt.get.nSets / banks,
264 ways = p.dcacheParametersOpt.get.nWays + 2,
262 blockGranularity = log2Ceil(2 * p.dcacheParametersOpt.get.nSets / banks),
263 aliasBitsOpt = p.dcacheParametersOpt.get.aliasBitsOpt
264 )),
265 aliasBitsOpt = p.dcacheParametersOpt.get.aliasBitsOpt
266 )),
265 reqField = Seq(PreferCacheField()),
266 echoField = Seq(DirtyField()),
267 prefetch = Some(huancun.prefetch.PrefetchReceiverParams()),
268 enablePerf = true,
269 sramDepthDiv = 2,
270 tagECC = Some("secded"),
271 dataECC = Some("secded"),
272 simulation = !site(DebugOptionsKey).FPGAPlatform
267 echoField = Seq(huancun.DirtyField()),
268 prefetch = Some(coupledL2.prefetch.PrefetchReceiverParams())
273 )),
274 L2NBanks = banks
275 ))
276})
277
278class WithNKBL3(n: Int, ways: Int = 8, inclusive: Boolean = true, banks: Int = 1) extends Config((site, here, up) => {
279 case SoCParamsKey =>
280 val sets = n * 1024 / banks / ways / 64

--- 62 unchanged lines hidden ---
269 )),
270 L2NBanks = banks
271 ))
272})
273
274class WithNKBL3(n: Int, ways: Int = 8, inclusive: Boolean = true, banks: Int = 1) extends Config((site, here, up) => {
275 case SoCParamsKey =>
276 val sets = n * 1024 / banks / ways / 64

--- 62 unchanged lines hidden ---