xref: /XiangShan/src/main/scala/xiangshan/package.scala (revision 04b56283a565e53e190384ba3bc642ad5f76a836)
19a2e6b8aSLinJiaweiimport chisel3._
29a2e6b8aSLinJiaweiimport chisel3.util._
39a2e6b8aSLinJiawei
49a2e6b8aSLinJiaweipackage object xiangshan {
59a2e6b8aSLinJiawei  object SrcType {
69a2e6b8aSLinJiawei    def reg = "b00".U
79a2e6b8aSLinJiawei    def pc  = "b01".U
89a2e6b8aSLinJiawei    def imm = "b01".U
99a2e6b8aSLinJiawei    def fp  = "b10".U
10*04b56283SZhangZifei
11*04b56283SZhangZifei    def isReg(srcType: UInt) = srcType===reg
12*04b56283SZhangZifei    def isPc(srcType: UInt) = srcType===pc
13*04b56283SZhangZifei    def isImm(srcType: UInt) = srcType===imm
14*04b56283SZhangZifei    def isFp(srcType: UInt) = srcType===fp
15*04b56283SZhangZifei
169a2e6b8aSLinJiawei    def apply() = UInt(2.W)
179a2e6b8aSLinJiawei  }
189a2e6b8aSLinJiawei
199a2e6b8aSLinJiawei  object SrcState {
209a2e6b8aSLinJiawei    def busy    = "b00".U
219a2e6b8aSLinJiawei    def rdy     = "b01".U
229a2e6b8aSLinJiawei    def specRdy = "b10".U // speculative ready, for future use
239a2e6b8aSLinJiawei    def apply() = UInt(2.W)
249a2e6b8aSLinJiawei  }
259a2e6b8aSLinJiawei
269a2e6b8aSLinJiawei  object FuType extends HasXSParameter {
279a2e6b8aSLinJiawei    def num           = exuConfig.NRFuType
289a2e6b8aSLinJiawei    def bru          = "b0000".U
299a2e6b8aSLinJiawei    def alu          = "b0001".U
309a2e6b8aSLinJiawei    def mul          = "b0010".U
319a2e6b8aSLinJiawei    def mdu          = "b0011".U
329a2e6b8aSLinJiawei    def fmac         = "b0100".U
339a2e6b8aSLinJiawei    def fmisc        = "b0101".U
349a2e6b8aSLinJiawei    def fmiscDivSqrt = "b0110".U
359a2e6b8aSLinJiawei    def ldu          = "b1001".U
369a2e6b8aSLinJiawei    def stu          = "b1000".U
379a2e6b8aSLinJiawei
389a2e6b8aSLinJiawei    def apply() = UInt(log2Up(num).W)
399a2e6b8aSLinJiawei
409a2e6b8aSLinJiawei    def isIntExu(fuType: UInt) =  fuType(3, 2) === "b00".U
419a2e6b8aSLinJiawei    def isFpExu(fuType: UInt) = fuType(2)
429a2e6b8aSLinJiawei    def isMemExu(fuType: UInt) = fuType(3)
439a2e6b8aSLinJiawei  }
449a2e6b8aSLinJiawei
459a2e6b8aSLinJiawei  object FuOpType extends HasXSParameter {
469a2e6b8aSLinJiawei    def apply() = UInt(exuConfig.FuOpWidth.W)
479a2e6b8aSLinJiawei  }
489a2e6b8aSLinJiawei}
49