xref: /XiangShan/src/main/scala/xiangshan/backend/regfile/PregParams.scala (revision 5edcc45f37ad5425c2b3b88ed8d8e01d43652ecd)
1730cfbc0SXuan Hupackage xiangshan.backend.regfile
2730cfbc0SXuan Hu
3730cfbc0SXuan Huimport chisel3.util.log2Up
4730cfbc0SXuan Huimport xiangshan.backend.datapath.DataConfig._
5730cfbc0SXuan Hu
6730cfbc0SXuan Huabstract class PregParams {
7730cfbc0SXuan Hu  val numEntries: Int
839c59369SXuan Hu  val numRead: Option[Int]
939c59369SXuan Hu  val numWrite: Option[Int]
10730cfbc0SXuan Hu  val dataCfg: DataConfig
11*5edcc45fSHaojin Tang  val isFake: Boolean
12730cfbc0SXuan Hu
13730cfbc0SXuan Hu  def addrWidth = log2Up(numEntries)
14730cfbc0SXuan Hu}
15730cfbc0SXuan Hu
16730cfbc0SXuan Hucase class IntPregParams(
17730cfbc0SXuan Hu  numEntries: Int,
1839c59369SXuan Hu  numRead   : Option[Int],
1939c59369SXuan Hu  numWrite  : Option[Int],
20730cfbc0SXuan Hu) extends PregParams {
2139c59369SXuan Hu
22*5edcc45fSHaojin Tang  val dataCfg: DataConfig = IntData()
23*5edcc45fSHaojin Tang  val isFake: Boolean = false
24730cfbc0SXuan Hu}
25730cfbc0SXuan Hu
26730cfbc0SXuan Hucase class VfPregParams(
27730cfbc0SXuan Hu  numEntries: Int,
2839c59369SXuan Hu  numRead   : Option[Int],
2939c59369SXuan Hu  numWrite  : Option[Int],
30730cfbc0SXuan Hu) extends PregParams {
3139c59369SXuan Hu
32*5edcc45fSHaojin Tang  val dataCfg: DataConfig = VecData()
33*5edcc45fSHaojin Tang  val isFake: Boolean = false
34730cfbc0SXuan Hu}
35730cfbc0SXuan Hu
3639c59369SXuan Hucase class NoPregParams() extends PregParams {
3739c59369SXuan Hu  val numEntries: Int = 0
3839c59369SXuan Hu  val numRead   : Option[Int] = None
3939c59369SXuan Hu  val numWrite  : Option[Int] = None
4039c59369SXuan Hu
41*5edcc45fSHaojin Tang  val dataCfg: DataConfig = NoData()
42*5edcc45fSHaojin Tang  val isFake: Boolean = false
43*5edcc45fSHaojin Tang}
44*5edcc45fSHaojin Tang
45*5edcc45fSHaojin Tangcase class FakeIntPregParams(
46*5edcc45fSHaojin Tang  numEntries: Int,
47*5edcc45fSHaojin Tang  numRead   : Option[Int],
48*5edcc45fSHaojin Tang  numWrite  : Option[Int],
49*5edcc45fSHaojin Tang) extends PregParams {
50*5edcc45fSHaojin Tang
51*5edcc45fSHaojin Tang  val dataCfg: DataConfig = FakeIntData()
52*5edcc45fSHaojin Tang  val isFake: Boolean = true
5339c59369SXuan Hu}
54