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 FpPregParams( 27 numEntries: Int, 28 numRead : Option[Int], 29 numWrite : Option[Int], 30 ) extends PregParams { 31 32 val dataCfg: DataConfig = FpData() 33 val isFake: Boolean = false 34} 35 36case class VfPregParams( 37 numEntries: Int, 38 numRead : Option[Int], 39 numWrite : Option[Int], 40) extends PregParams { 41 42 val dataCfg: DataConfig = VecData() 43 val isFake: Boolean = false 44} 45 46case class NoPregParams() extends PregParams { 47 val numEntries: Int = 0 48 val numRead : Option[Int] = None 49 val numWrite : Option[Int] = None 50 51 val dataCfg: DataConfig = NoData() 52 val isFake: Boolean = false 53} 54 55case class FakeIntPregParams( 56 numEntries: Int, 57 numRead : Option[Int], 58 numWrite : Option[Int], 59) extends PregParams { 60 61 val dataCfg: DataConfig = FakeIntData() 62 val isFake: Boolean = true 63} 64