xref: /XiangShan/src/main/scala/xiangshan/backend/regfile/PregParams.scala (revision 39c59369af6e7d78fa72e13aae3735f1a6e98f5c)
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
8*39c59369SXuan Hu  val numRead: Option[Int]
9*39c59369SXuan Hu  val numWrite: Option[Int]
10730cfbc0SXuan Hu  val dataCfg: DataConfig
11730cfbc0SXuan Hu
12730cfbc0SXuan Hu  def addrWidth = log2Up(numEntries)
13730cfbc0SXuan Hu}
14730cfbc0SXuan Hu
15730cfbc0SXuan Hucase class IntPregParams(
16730cfbc0SXuan Hu  numEntries: Int,
17*39c59369SXuan Hu  numRead   : Option[Int],
18*39c59369SXuan Hu  numWrite  : Option[Int],
19730cfbc0SXuan Hu) extends PregParams {
20*39c59369SXuan Hu
21730cfbc0SXuan Hu  override val dataCfg: DataConfig = IntData()
22730cfbc0SXuan Hu}
23730cfbc0SXuan Hu
24730cfbc0SXuan Hucase class VfPregParams(
25730cfbc0SXuan Hu  numEntries: Int,
26*39c59369SXuan Hu  numRead   : Option[Int],
27*39c59369SXuan Hu  numWrite  : Option[Int],
28730cfbc0SXuan Hu) extends PregParams {
29*39c59369SXuan Hu
30730cfbc0SXuan Hu  override val dataCfg: DataConfig = VecData()
31730cfbc0SXuan Hu}
32730cfbc0SXuan Hu
33*39c59369SXuan Hucase class NoPregParams() extends PregParams {
34*39c59369SXuan Hu  val numEntries: Int = 0
35*39c59369SXuan Hu  val numRead   : Option[Int] = None
36*39c59369SXuan Hu  val numWrite  : Option[Int] = None
37*39c59369SXuan Hu
38*39c59369SXuan Hu  override val dataCfg: DataConfig = NoData()
39*39c59369SXuan Hu}
40