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 V0PregParams( 47 numEntries: Int, 48 numRead : Option[Int], 49 numWrite : Option[Int], 50) extends PregParams { 51 52 val dataCfg: DataConfig = V0Data() 53 val isFake: Boolean = false 54} 55 56case class VlPregParams( 57 numEntries: Int, 58 numRead : Option[Int], 59 numWrite : Option[Int], 60) extends PregParams { 61 62 val dataCfg: DataConfig = VlData() 63 val isFake: Boolean = false 64} 65 66case class NoPregParams() extends PregParams { 67 val numEntries: Int = 0 68 val numRead : Option[Int] = None 69 val numWrite : Option[Int] = None 70 71 val dataCfg: DataConfig = NoData() 72 val isFake: Boolean = false 73} 74 75case class FakeIntPregParams( 76 numEntries: Int, 77 numRead : Option[Int], 78 numWrite : Option[Int], 79) extends PregParams { 80 81 val dataCfg: DataConfig = FakeIntData() 82 val isFake: Boolean = true 83} 84