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}