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 12 def addrWidth = log2Up(numEntries) 13} 14 15case class IntPregParams( 16 numEntries: Int, 17 numRead : Option[Int], 18 numWrite : Option[Int], 19) extends PregParams { 20 21 override val dataCfg: DataConfig = IntData() 22} 23 24case class VfPregParams( 25 numEntries: Int, 26 numRead : Option[Int], 27 numWrite : Option[Int], 28) extends PregParams { 29 30 override val dataCfg: DataConfig = VecData() 31} 32 33case class NoPregParams() extends PregParams { 34 val numEntries: Int = 0 35 val numRead : Option[Int] = None 36 val numWrite : Option[Int] = None 37 38 override val dataCfg: DataConfig = NoData() 39} 40