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