xref: /XiangShan/src/main/scala/xiangshan/PMParameters.scala (revision 8882eb685de93177da606ee717b5ec8e459a768a)
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
19935edac4STang Haojinimport chisel3.util.log2Ceil
208891a219SYinan Xuimport org.chipsalliance.cde.config.{Field, Parameters}
2198c71602SJiawei Linimport freechips.rocketchip.tile.XLen
2298c71602SJiawei Linimport system.SoCParamsKey
23*8882eb68SXin Tianimport system.CVMParamskey
2498c71602SJiawei Linimport xiangshan.backend.fu.{MMPMAConfig, MMPMAMethod}
2598c71602SJiawei Lin
2698c71602SJiawei Lincase object PMParameKey extends Field[PMParameters]
2798c71602SJiawei Lin
2898c71602SJiawei Lincase class PMParameters
2998c71602SJiawei Lin(
3098c71602SJiawei Lin  NumPMP: Int = 16,
3198c71602SJiawei Lin  NumPMA: Int = 16,
3298c71602SJiawei Lin
335b7ef044SLemover  PlatformGrain: Int = log2Ceil(4*1024), // 4KB, a normal page
3498c71602SJiawei Lin  mmpma: MMPMAConfig = MMPMAConfig(
3598c71602SJiawei Lin    address = 0x38021000,
365b7ef044SLemover    mask = 0xfff,
3798c71602SJiawei Lin    lgMaxSize = 3,
3898c71602SJiawei Lin    sameCycle = true,
3998c71602SJiawei Lin    num = 2
4098c71602SJiawei Lin  )
4198c71602SJiawei Lin)
4298c71602SJiawei Lin//trait HasPMParameters extends PMParameters
4398c71602SJiawei Lintrait HasPMParameters {
4498c71602SJiawei Lin  implicit val p: Parameters
4598c71602SJiawei Lin
4645def856STang Haojin  def PMPAddrBits = p(SoCParamsKey).PAddrBits
4745def856STang Haojin  def PMPPmemRanges = p(SoCParamsKey).PmemRanges
485bd65c56STang Haojin  def PMAConfigs = p(SoCParamsKey).PMAConfigs
49*8882eb68SXin Tian  val PMPKeyIDBits = p(CVMParamskey).KeyIDBits
5045def856STang Haojin  def PMXLEN = p(XLen)
5145def856STang Haojin  def pmParams = p(PMParameKey)
5245def856STang Haojin  def NumPMP = pmParams.NumPMP
5345def856STang Haojin  def NumPMA = pmParams.NumPMA
5498c71602SJiawei Lin
5545def856STang Haojin  def PlatformGrain = pmParams.PlatformGrain
5645def856STang Haojin  def mmpma = pmParams.mmpma
5798c71602SJiawei Lin}
58