xref: /XiangShan/src/main/scala/xiangshan/backend/regfile/PregParams.scala (revision bb2f3f51dd67f6e16e0cc1ffe43368c9fc7e4aef)
1package xiangshan.backend.regfile
2
3import chisel3.util.log2Up
4import xiangshan.backend.datapath.DataConfig._
5
6abstract class PregParams {
7  val numEntries: Int
8  val numRead: Option[Int]
9  val numWrite: Option[Int]
10  val dataCfg: DataConfig
11  val isFake: Boolean
12
13  def addrWidth = log2Up(numEntries)
14}
15
16case class IntPregParams(
17  numEntries: Int,
18  numRead   : Option[Int],
19  numWrite  : Option[Int],
20) extends PregParams {
21
22  val dataCfg: DataConfig = IntData()
23  val isFake: Boolean = false
24}
25
26case class FpPregParams(
27                          numEntries: Int,
28                          numRead   : Option[Int],
29                          numWrite  : Option[Int],
30                        ) extends PregParams {
31
32  val dataCfg: DataConfig = FpData()
33  val isFake: Boolean = false
34}
35
36case class VfPregParams(
37  numEntries: Int,
38  numRead   : Option[Int],
39  numWrite  : Option[Int],
40) extends PregParams {
41
42  val dataCfg: DataConfig = VecData()
43  val isFake: Boolean = false
44}
45
46case class V0PregParams(
47  numEntries: Int,
48  numRead   : Option[Int],
49  numWrite  : Option[Int],
50) extends PregParams {
51
52  val dataCfg: DataConfig = V0Data()
53  val isFake: Boolean = false
54}
55
56case class VlPregParams(
57  numEntries: Int,
58  numRead   : Option[Int],
59  numWrite  : Option[Int],
60) extends PregParams {
61
62  val dataCfg: DataConfig = VlData()
63  val isFake: Boolean = false
64}
65
66case class NoPregParams() extends PregParams {
67  val numEntries: Int = 0
68  val numRead   : Option[Int] = None
69  val numWrite  : Option[Int] = None
70
71  val dataCfg: DataConfig = NoData()
72  val isFake: Boolean = false
73}
74
75case class FakeIntPregParams(
76  numEntries: Int,
77  numRead   : Option[Int],
78  numWrite  : Option[Int],
79) extends PregParams {
80
81  val dataCfg: DataConfig = FakeIntData()
82  val isFake: Boolean = true
83}
84