xref: /XiangShan/src/main/scala/xiangshan/backend/datapath/DataSource.scala (revision 0dbae67a60e26368067cdc62060373bf5010270d)
1c0be7f33SXuan Hupackage xiangshan.backend.datapath
2c0be7f33SXuan Hu
3c0be7f33SXuan Huimport chisel3._
4c0be7f33SXuan Hu
5c0be7f33SXuan Huclass DataSource extends Bundle {
6*0dbae67aSxiaofeibao-xjtu  val value = UInt(3.W)
7c0be7f33SXuan Hu
8*0dbae67aSxiaofeibao-xjtu  def readReg: Bool = value(2)
9c0be7f33SXuan Hu
10*0dbae67aSxiaofeibao-xjtu  def readZero: Bool = value === DataSource.zero
11c0be7f33SXuan Hu
12*0dbae67aSxiaofeibao-xjtu  def readForward: Bool = value === DataSource.forward
13*0dbae67aSxiaofeibao-xjtu
14*0dbae67aSxiaofeibao-xjtu  def readBypass: Bool = value === DataSource.bypass
15*0dbae67aSxiaofeibao-xjtu
16*0dbae67aSxiaofeibao-xjtu  def readImm: Bool = value === DataSource.imm
17*0dbae67aSxiaofeibao-xjtu
18c0be7f33SXuan Hu}
19c0be7f33SXuan Hu
20c0be7f33SXuan Huobject DataSource {
21c0be7f33SXuan Hu  def apply() = new DataSource
22c0be7f33SXuan Hu
23*0dbae67aSxiaofeibao-xjtu  def reg: UInt = "b100".U
24c0be7f33SXuan Hu
25*0dbae67aSxiaofeibao-xjtu  // read int preg addr is 0
26*0dbae67aSxiaofeibao-xjtu  def zero: UInt = "b000".U
27c0be7f33SXuan Hu
28*0dbae67aSxiaofeibao-xjtu  def forward: UInt = "b001".U
29c0be7f33SXuan Hu
30*0dbae67aSxiaofeibao-xjtu  def bypass: UInt = "b010".U
31*0dbae67aSxiaofeibao-xjtu
32*0dbae67aSxiaofeibao-xjtu  def imm: UInt = "b011".U
33c0be7f33SXuan Hu
34c0be7f33SXuan Hu}
35c0be7f33SXuan Hu
36