xref: /XiangShan/src/main/scala/xiangshan/backend/regfile/PregParams.scala (revision 07b5cc60b2646a575f7349f2629e7c406ffc986e)
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
2660f0c5aeSxiaofeibaocase class FpPregParams(
2760f0c5aeSxiaofeibao                          numEntries: Int,
2860f0c5aeSxiaofeibao                          numRead   : Option[Int],
2960f0c5aeSxiaofeibao                          numWrite  : Option[Int],
3060f0c5aeSxiaofeibao                        ) extends PregParams {
3160f0c5aeSxiaofeibao
3260f0c5aeSxiaofeibao  val dataCfg: DataConfig = FpData()
3360f0c5aeSxiaofeibao  val isFake: Boolean = false
3460f0c5aeSxiaofeibao}
3560f0c5aeSxiaofeibao
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
462aa3a761Ssinsanctioncase class V0PregParams(
472aa3a761Ssinsanction  numEntries: Int,
482aa3a761Ssinsanction  numRead   : Option[Int],
492aa3a761Ssinsanction  numWrite  : Option[Int],
502aa3a761Ssinsanction) extends PregParams {
512aa3a761Ssinsanction
52*07b5cc60Sxiaofeibao  val dataCfg: DataConfig = V0Data()
532aa3a761Ssinsanction  val isFake: Boolean = false
542aa3a761Ssinsanction}
552aa3a761Ssinsanction
562aa3a761Ssinsanctioncase class VlPregParams(
572aa3a761Ssinsanction  numEntries: Int,
582aa3a761Ssinsanction  numRead   : Option[Int],
592aa3a761Ssinsanction  numWrite  : Option[Int],
602aa3a761Ssinsanction) extends PregParams {
612aa3a761Ssinsanction
62*07b5cc60Sxiaofeibao  val dataCfg: DataConfig = VlData()
632aa3a761Ssinsanction  val isFake: Boolean = false
642aa3a761Ssinsanction}
652aa3a761Ssinsanction
6639c59369SXuan Hucase class NoPregParams() extends PregParams {
6739c59369SXuan Hu  val numEntries: Int = 0
6839c59369SXuan Hu  val numRead   : Option[Int] = None
6939c59369SXuan Hu  val numWrite  : Option[Int] = None
7039c59369SXuan Hu
715edcc45fSHaojin Tang  val dataCfg: DataConfig = NoData()
725edcc45fSHaojin Tang  val isFake: Boolean = false
735edcc45fSHaojin Tang}
745edcc45fSHaojin Tang
755edcc45fSHaojin Tangcase class FakeIntPregParams(
765edcc45fSHaojin Tang  numEntries: Int,
775edcc45fSHaojin Tang  numRead   : Option[Int],
785edcc45fSHaojin Tang  numWrite  : Option[Int],
795edcc45fSHaojin Tang) extends PregParams {
805edcc45fSHaojin Tang
815edcc45fSHaojin Tang  val dataCfg: DataConfig = FakeIntData()
825edcc45fSHaojin Tang  val isFake: Boolean = true
8339c59369SXuan Hu}
84