1package xiangshan.backend.regfile 2 3import chisel3.util.log2Up 4import xiangshan.backend.datapath.DataConfig._ 5 6abstract class PregParams { 7 val numEntries: Int 8 val numRead: Option[Int] 9 val numWrite: Option[Int] 10 val dataCfg: DataConfig 11 val isFake: Boolean 12 13 def addrWidth = log2Up(numEntries) 14} 15 16case class IntPregParams( 17 numEntries: Int, 18 numRead : Option[Int], 19 numWrite : Option[Int], 20) extends PregParams { 21 22 val dataCfg: DataConfig = IntData() 23 val isFake: Boolean = false 24} 25 26case class VfPregParams( 27 numEntries: Int, 28 numRead : Option[Int], 29 numWrite : Option[Int], 30) extends PregParams { 31 32 val dataCfg: DataConfig = VecData() 33 val isFake: Boolean = false 34} 35 36case class NoPregParams() extends PregParams { 37 val numEntries: Int = 0 38 val numRead : Option[Int] = None 39 val numWrite : Option[Int] = None 40 41 val dataCfg: DataConfig = NoData() 42 val isFake: Boolean = false 43} 44 45case class FakeIntPregParams( 46 numEntries: Int, 47 numRead : Option[Int], 48 numWrite : Option[Int], 49) extends PregParams { 50 51 val dataCfg: DataConfig = FakeIntData() 52 val isFake: Boolean = true 53} 54