xref: /XiangShan/src/main/scala/xiangshan/backend/datapath/DataConfig.scala (revision 07b5cc60b2646a575f7349f2629e7c406ffc986e)
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