xref: /XiangShan/src/main/scala/xiangshan/package.scala (revision 9a2e6b8ae06ed24bb317fa76e397982fa714877b)
1*9a2e6b8aSLinJiaweiimport chisel3._
2*9a2e6b8aSLinJiaweiimport chisel3.util._
3*9a2e6b8aSLinJiawei
4*9a2e6b8aSLinJiaweipackage object xiangshan {
5*9a2e6b8aSLinJiawei  object SrcType {
6*9a2e6b8aSLinJiawei    def reg = "b00".U
7*9a2e6b8aSLinJiawei    def pc  = "b01".U
8*9a2e6b8aSLinJiawei    def imm = "b01".U
9*9a2e6b8aSLinJiawei    def fp  = "b10".U
10*9a2e6b8aSLinJiawei    def apply() = UInt(2.W)
11*9a2e6b8aSLinJiawei  }
12*9a2e6b8aSLinJiawei
13*9a2e6b8aSLinJiawei  object SrcState {
14*9a2e6b8aSLinJiawei    def busy    = "b00".U
15*9a2e6b8aSLinJiawei    def rdy     = "b01".U
16*9a2e6b8aSLinJiawei    def specRdy = "b10".U // speculative ready, for future use
17*9a2e6b8aSLinJiawei    def apply() = UInt(2.W)
18*9a2e6b8aSLinJiawei  }
19*9a2e6b8aSLinJiawei
20*9a2e6b8aSLinJiawei  object FuType extends HasXSParameter {
21*9a2e6b8aSLinJiawei    def num           = exuConfig.NRFuType
22*9a2e6b8aSLinJiawei    def bru          = "b0000".U
23*9a2e6b8aSLinJiawei    def alu          = "b0001".U
24*9a2e6b8aSLinJiawei    def mul          = "b0010".U
25*9a2e6b8aSLinJiawei    def mdu          = "b0011".U
26*9a2e6b8aSLinJiawei    def fmac         = "b0100".U
27*9a2e6b8aSLinJiawei    def fmisc        = "b0101".U
28*9a2e6b8aSLinJiawei    def fmiscDivSqrt = "b0110".U
29*9a2e6b8aSLinJiawei    def ldu          = "b1001".U
30*9a2e6b8aSLinJiawei    def stu          = "b1000".U
31*9a2e6b8aSLinJiawei
32*9a2e6b8aSLinJiawei    def apply() = UInt(log2Up(num).W)
33*9a2e6b8aSLinJiawei
34*9a2e6b8aSLinJiawei    def isIntExu(fuType: UInt) =  fuType(3, 2) === "b00".U
35*9a2e6b8aSLinJiawei    def isFpExu(fuType: UInt) = fuType(2)
36*9a2e6b8aSLinJiawei    def isMemExu(fuType: UInt) = fuType(3)
37*9a2e6b8aSLinJiawei  }
38*9a2e6b8aSLinJiawei
39*9a2e6b8aSLinJiawei  object FuOpType extends HasXSParameter {
40*9a2e6b8aSLinJiawei    def apply() = UInt(exuConfig.FuOpWidth.W)
41*9a2e6b8aSLinJiawei  }
42*9a2e6b8aSLinJiawei}
43