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 1004b56283SZhangZifei 1104b56283SZhangZifei def isReg(srcType: UInt) = srcType===reg 1204b56283SZhangZifei def isPc(srcType: UInt) = srcType===pc 1304b56283SZhangZifei def isImm(srcType: UInt) = srcType===imm 1404b56283SZhangZifei def isFp(srcType: UInt) = srcType===fp 15*5c321a22SZhangZifei def isPcImm(srcType: UInt) = isPc(srcType) || isImm(srcType) 16*5c321a22SZhangZifei def isRegFp(srcType: UInt) = isReg(srcType) || isFp(srcType) 1704b56283SZhangZifei 189a2e6b8aSLinJiawei def apply() = UInt(2.W) 199a2e6b8aSLinJiawei } 209a2e6b8aSLinJiawei 219a2e6b8aSLinJiawei object SrcState { 229a2e6b8aSLinJiawei def busy = "b00".U 239a2e6b8aSLinJiawei def rdy = "b01".U 249a2e6b8aSLinJiawei def specRdy = "b10".U // speculative ready, for future use 259a2e6b8aSLinJiawei def apply() = UInt(2.W) 269a2e6b8aSLinJiawei } 279a2e6b8aSLinJiawei 289a2e6b8aSLinJiawei object FuType extends HasXSParameter { 299a2e6b8aSLinJiawei def num = exuConfig.NRFuType 309a2e6b8aSLinJiawei def bru = "b0000".U 319a2e6b8aSLinJiawei def alu = "b0001".U 329a2e6b8aSLinJiawei def mul = "b0010".U 339a2e6b8aSLinJiawei def mdu = "b0011".U 349a2e6b8aSLinJiawei def fmac = "b0100".U 359a2e6b8aSLinJiawei def fmisc = "b0101".U 369a2e6b8aSLinJiawei def fmiscDivSqrt = "b0110".U 379a2e6b8aSLinJiawei def ldu = "b1001".U 389a2e6b8aSLinJiawei def stu = "b1000".U 399a2e6b8aSLinJiawei 409a2e6b8aSLinJiawei def apply() = UInt(log2Up(num).W) 419a2e6b8aSLinJiawei 429a2e6b8aSLinJiawei def isIntExu(fuType: UInt) = fuType(3, 2) === "b00".U 439a2e6b8aSLinJiawei def isFpExu(fuType: UInt) = fuType(2) 449a2e6b8aSLinJiawei def isMemExu(fuType: UInt) = fuType(3) 459a2e6b8aSLinJiawei } 469a2e6b8aSLinJiawei 479a2e6b8aSLinJiawei object FuOpType extends HasXSParameter { 489a2e6b8aSLinJiawei def apply() = UInt(exuConfig.FuOpWidth.W) 499a2e6b8aSLinJiawei } 509a2e6b8aSLinJiawei} 51