xref: /XiangShan/src/main/scala/xiangshan/PMParameters.scala (revision 5b7ef044f8410da3ad97ddb6a93c37566891fa86)
198c71602SJiawei Lin/***************************************************************************************
298c71602SJiawei Lin  * Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
398c71602SJiawei Lin  * Copyright (c) 2020-2021 Peng Cheng Laboratory
498c71602SJiawei Lin  *
598c71602SJiawei Lin  * XiangShan is licensed under Mulan PSL v2.
698c71602SJiawei Lin  * You can use this software according to the terms and conditions of the Mulan PSL v2.
798c71602SJiawei Lin  * You may obtain a copy of Mulan PSL v2 at:
898c71602SJiawei Lin  *          http://license.coscl.org.cn/MulanPSL2
998c71602SJiawei Lin  *
1098c71602SJiawei Lin  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
1198c71602SJiawei Lin  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
1298c71602SJiawei Lin  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
1398c71602SJiawei Lin  *
1498c71602SJiawei Lin  * See the Mulan PSL v2 for more details.
1598c71602SJiawei Lin  ***************************************************************************************/
1698c71602SJiawei Lin
1798c71602SJiawei Linpackage xiangshan
1898c71602SJiawei Lin
1998c71602SJiawei Linimport Chisel.log2Ceil
2098c71602SJiawei Linimport chipsalliance.rocketchip.config.{Field, Parameters}
2198c71602SJiawei Linimport freechips.rocketchip.tile.XLen
2298c71602SJiawei Linimport system.SoCParamsKey
2398c71602SJiawei Linimport xiangshan.backend.fu.{MMPMAConfig, MMPMAMethod}
2498c71602SJiawei Lin
2598c71602SJiawei Lincase object PMParameKey extends Field[PMParameters]
2698c71602SJiawei Lin
2798c71602SJiawei Lincase class PMParameters
2898c71602SJiawei Lin(
2998c71602SJiawei Lin  NumPMP: Int = 16,
3098c71602SJiawei Lin  NumPMA: Int = 16,
3198c71602SJiawei Lin
32*5b7ef044SLemover  PlatformGrain: Int = log2Ceil(4*1024), // 4KB, a normal page
3398c71602SJiawei Lin  mmpma: MMPMAConfig = MMPMAConfig(
3498c71602SJiawei Lin    address = 0x38021000,
35*5b7ef044SLemover    mask = 0xfff,
3698c71602SJiawei Lin    lgMaxSize = 3,
3798c71602SJiawei Lin    sameCycle = true,
3898c71602SJiawei Lin    num = 2
3998c71602SJiawei Lin  )
4098c71602SJiawei Lin)
4198c71602SJiawei Lin//trait HasPMParameters extends PMParameters
4298c71602SJiawei Lintrait HasPMParameters {
4398c71602SJiawei Lin  implicit val p: Parameters
4498c71602SJiawei Lin
4598c71602SJiawei Lin  val PMPAddrBits = p(SoCParamsKey).PAddrBits
4698c71602SJiawei Lin  val PMXLEN = p(XLen)
4798c71602SJiawei Lin  val pmParams = p(PMParameKey)
4898c71602SJiawei Lin  val NumPMP = pmParams.NumPMP
4998c71602SJiawei Lin  val NumPMA = pmParams.NumPMA
5098c71602SJiawei Lin
5198c71602SJiawei Lin  val PlatformGrain = pmParams.PlatformGrain
5298c71602SJiawei Lin  val mmpma = pmParams.mmpma
5398c71602SJiawei Lin}