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