1730cfbc0SXuan Hupackage xiangshan.backend.datapath 2730cfbc0SXuan Hu 3730cfbc0SXuan Huobject DataConfig { 4730cfbc0SXuan Hu sealed abstract class DataConfig ( 5730cfbc0SXuan Hu val name: String, 6730cfbc0SXuan Hu val dataWidth: Int, 7730cfbc0SXuan Hu ) { 8730cfbc0SXuan Hu override def toString: String = name 9730cfbc0SXuan Hu } 10730cfbc0SXuan Hu 11730cfbc0SXuan Hu case class IntData() extends DataConfig("int", 64) 12730cfbc0SXuan Hu case class FpData() extends DataConfig("fp", 64) 13730cfbc0SXuan Hu case class VecData() extends DataConfig("vec", 128) 14730cfbc0SXuan Hu case class ImmData(len: Int) extends DataConfig("int", len) 15730cfbc0SXuan Hu case class VAddrData() extends DataConfig("vaddr", 39) // Todo: associate it with the width of vaddr 16730cfbc0SXuan Hu case class MaskSrcData() extends DataConfig("masksrc", VecData().dataWidth) // 128 17730cfbc0SXuan Hu case class MaskDstData() extends DataConfig("maskdst", VecData().dataWidth / 8) // 16 18730cfbc0SXuan Hu case class VConfigData() extends DataConfig("vconfig", VecData().dataWidth) // Todo: use 16 bit instead 19730cfbc0SXuan Hu case class NoData() extends DataConfig("nodata", 0) 20730cfbc0SXuan Hu 21730cfbc0SXuan Hu def RegSrcDataSet : Set[DataConfig] = Set(IntData(), FpData(), VecData(), MaskSrcData(), VConfigData()) 22730cfbc0SXuan Hu def IntRegSrcDataSet: Set[DataConfig] = Set(IntData()) 23730cfbc0SXuan Hu def FpRegSrcDataSet : Set[DataConfig] = Set(FpData()) 24730cfbc0SXuan Hu def VecRegSrcDataSet: Set[DataConfig] = Set(VecData(), MaskSrcData(), VConfigData()) 25730cfbc0SXuan Hu def VfRegSrcDataSet : Set[DataConfig] = Set(FpData(), VecData(), MaskSrcData(), VConfigData()) 26*5d2b9cadSXuan Hu 27*5d2b9cadSXuan Hu def RegDataMaxWidth : Int = RegSrcDataSet.map(_.dataWidth).max 28730cfbc0SXuan Hu} 29