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