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