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