xref: /XiangShan/src/main/scala/xiangshan/backend/regfile/PregParams.scala (revision 60f0c5ae701c71b6347e32d54543e5e7858f2038)
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
115edcc45fSHaojin 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
225edcc45fSHaojin Tang  val dataCfg: DataConfig = IntData()
235edcc45fSHaojin Tang  val isFake: Boolean = false
24730cfbc0SXuan Hu}
25730cfbc0SXuan Hu
26*60f0c5aeSxiaofeibaocase class FpPregParams(
27*60f0c5aeSxiaofeibao                          numEntries: Int,
28*60f0c5aeSxiaofeibao                          numRead   : Option[Int],
29*60f0c5aeSxiaofeibao                          numWrite  : Option[Int],
30*60f0c5aeSxiaofeibao                        ) extends PregParams {
31*60f0c5aeSxiaofeibao
32*60f0c5aeSxiaofeibao  val dataCfg: DataConfig = FpData()
33*60f0c5aeSxiaofeibao  val isFake: Boolean = false
34*60f0c5aeSxiaofeibao}
35*60f0c5aeSxiaofeibao
36730cfbc0SXuan Hucase class VfPregParams(
37730cfbc0SXuan Hu  numEntries: Int,
3839c59369SXuan Hu  numRead   : Option[Int],
3939c59369SXuan Hu  numWrite  : Option[Int],
40730cfbc0SXuan Hu) extends PregParams {
4139c59369SXuan Hu
425edcc45fSHaojin Tang  val dataCfg: DataConfig = VecData()
435edcc45fSHaojin Tang  val isFake: Boolean = false
44730cfbc0SXuan Hu}
45730cfbc0SXuan Hu
4639c59369SXuan Hucase class NoPregParams() extends PregParams {
4739c59369SXuan Hu  val numEntries: Int = 0
4839c59369SXuan Hu  val numRead   : Option[Int] = None
4939c59369SXuan Hu  val numWrite  : Option[Int] = None
5039c59369SXuan Hu
515edcc45fSHaojin Tang  val dataCfg: DataConfig = NoData()
525edcc45fSHaojin Tang  val isFake: Boolean = false
535edcc45fSHaojin Tang}
545edcc45fSHaojin Tang
555edcc45fSHaojin Tangcase class FakeIntPregParams(
565edcc45fSHaojin Tang  numEntries: Int,
575edcc45fSHaojin Tang  numRead   : Option[Int],
585edcc45fSHaojin Tang  numWrite  : Option[Int],
595edcc45fSHaojin Tang) extends PregParams {
605edcc45fSHaojin Tang
615edcc45fSHaojin Tang  val dataCfg: DataConfig = FakeIntData()
625edcc45fSHaojin Tang  val isFake: Boolean = true
6339c59369SXuan Hu}
64