1730cfbc0SXuan Hupackage xiangshan.backend.datapath 2730cfbc0SXuan Hu 32aa3a761Ssinsanctionimport chisel3.util.log2Up 42aa3a761Ssinsanction 5730cfbc0SXuan Huobject DataConfig { 6730cfbc0SXuan Hu sealed abstract class DataConfig ( 7730cfbc0SXuan Hu val name: String, 8730cfbc0SXuan Hu val dataWidth: Int, 9730cfbc0SXuan Hu ) { 10730cfbc0SXuan Hu override def toString: String = name 11730cfbc0SXuan Hu } 12730cfbc0SXuan Hu 13730cfbc0SXuan Hu case class IntData() extends DataConfig("int", 64) 14730cfbc0SXuan Hu case class FpData() extends DataConfig("fp", 64) 15730cfbc0SXuan Hu case class VecData() extends DataConfig("vec", 128) 16730cfbc0SXuan Hu case class ImmData(len: Int) extends DataConfig("int", len) 17730cfbc0SXuan Hu case class VAddrData() extends DataConfig("vaddr", 39) // Todo: associate it with the width of vaddr 18*07b5cc60Sxiaofeibao case class V0Data() extends DataConfig("v0", 128) 19*07b5cc60Sxiaofeibao case class VlData() extends DataConfig("vl", log2Up(VecData().dataWidth) + 1 ) // 8 205edcc45fSHaojin Tang case class FakeIntData() extends DataConfig("fakeint", 64) 21730cfbc0SXuan Hu case class NoData() extends DataConfig("nodata", 0) 22730cfbc0SXuan Hu 23*07b5cc60Sxiaofeibao def RegSrcDataSet : Set[DataConfig] = Set(IntData(), FpData(), VecData(), V0Data(), VlData()) 24730cfbc0SXuan Hu def IntRegSrcDataSet: Set[DataConfig] = Set(IntData()) 25730cfbc0SXuan Hu def FpRegSrcDataSet : Set[DataConfig] = Set(FpData()) 262aa3a761Ssinsanction def VecRegSrcDataSet: Set[DataConfig] = Set(VecData()) 272aa3a761Ssinsanction def VfRegSrcDataSet : Set[DataConfig] = Set(VecData()) 28*07b5cc60Sxiaofeibao def V0RegSrcDataSet : Set[DataConfig] = Set(V0Data()) 29*07b5cc60Sxiaofeibao def VlRegSrcDataSet : Set[DataConfig] = Set(VlData()) 302aa3a761Ssinsanction 315d2b9cadSXuan Hu 325d2b9cadSXuan Hu def RegDataMaxWidth : Int = RegSrcDataSet.map(_.dataWidth).max 33730cfbc0SXuan Hu} 34