xref: /XiangShan/src/main/scala/xiangshan/PMParameters.scala (revision 98c716025d86d6220b2762171d9383f72e72cfe7)
1*98c71602SJiawei Lin/***************************************************************************************
2*98c71602SJiawei Lin  * Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3*98c71602SJiawei Lin  * Copyright (c) 2020-2021 Peng Cheng Laboratory
4*98c71602SJiawei Lin  *
5*98c71602SJiawei Lin  * XiangShan is licensed under Mulan PSL v2.
6*98c71602SJiawei Lin  * You can use this software according to the terms and conditions of the Mulan PSL v2.
7*98c71602SJiawei Lin  * You may obtain a copy of Mulan PSL v2 at:
8*98c71602SJiawei Lin  *          http://license.coscl.org.cn/MulanPSL2
9*98c71602SJiawei Lin  *
10*98c71602SJiawei Lin  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11*98c71602SJiawei Lin  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12*98c71602SJiawei Lin  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13*98c71602SJiawei Lin  *
14*98c71602SJiawei Lin  * See the Mulan PSL v2 for more details.
15*98c71602SJiawei Lin  ***************************************************************************************/
16*98c71602SJiawei Lin
17*98c71602SJiawei Linpackage xiangshan
18*98c71602SJiawei Lin
19*98c71602SJiawei Linimport Chisel.log2Ceil
20*98c71602SJiawei Linimport chipsalliance.rocketchip.config.{Field, Parameters}
21*98c71602SJiawei Linimport freechips.rocketchip.tile.XLen
22*98c71602SJiawei Linimport system.SoCParamsKey
23*98c71602SJiawei Linimport xiangshan.backend.fu.{MMPMAConfig, MMPMAMethod}
24*98c71602SJiawei Lin
25*98c71602SJiawei Lincase object PMParameKey extends Field[PMParameters]
26*98c71602SJiawei Lin
27*98c71602SJiawei Lincase class PMParameters
28*98c71602SJiawei Lin(
29*98c71602SJiawei Lin  NumPMP: Int = 16,
30*98c71602SJiawei Lin  NumPMA: Int = 16,
31*98c71602SJiawei Lin
32*98c71602SJiawei Lin  PlatformGrain: Int = log2Ceil(512/8), // 512 bits
33*98c71602SJiawei Lin  mmpma: MMPMAConfig = MMPMAConfig(
34*98c71602SJiawei Lin    address = 0x38021000,
35*98c71602SJiawei Lin    mask = 0x1ff,
36*98c71602SJiawei Lin    lgMaxSize = 3,
37*98c71602SJiawei Lin    sameCycle = true,
38*98c71602SJiawei Lin    num = 2
39*98c71602SJiawei Lin  )
40*98c71602SJiawei Lin)
41*98c71602SJiawei Lin//trait HasPMParameters extends PMParameters
42*98c71602SJiawei Lintrait HasPMParameters {
43*98c71602SJiawei Lin  implicit val p: Parameters
44*98c71602SJiawei Lin
45*98c71602SJiawei Lin  val PMPAddrBits = p(SoCParamsKey).PAddrBits
46*98c71602SJiawei Lin  val PMXLEN = p(XLen)
47*98c71602SJiawei Lin  val pmParams = p(PMParameKey)
48*98c71602SJiawei Lin  val NumPMP = pmParams.NumPMP
49*98c71602SJiawei Lin  val NumPMA = pmParams.NumPMA
50*98c71602SJiawei Lin
51*98c71602SJiawei Lin  val PlatformGrain = pmParams.PlatformGrain
52*98c71602SJiawei Lin  val mmpma = pmParams.mmpma
53*98c71602SJiawei Lin}