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 155c321a22SZhangZifei def isPcImm(srcType: UInt) = isPc(srcType) || isImm(srcType) 165c321a22SZhangZifei 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 { 29cafb3558SLinJiawei def num = exuParameters.NRFuType 30cafb3558SLinJiawei 31cafb3558SLinJiawei def jmp = "b0000".U 32cafb3558SLinJiawei def i2f = "b0001".U 33cafb3558SLinJiawei def csr = "b0010".U 34cafb3558SLinJiawei def alu = "b0011".U 35cafb3558SLinJiawei def mul = "b0100".U 36cafb3558SLinJiawei def div = "b0101".U 37b8f08ca0SZhangZifei def fence = "b0110".U 38cafb3558SLinJiawei 39cafb3558SLinJiawei def fmac = "b1000".U 40cafb3558SLinJiawei def fmisc = "b1001".U 41cafb3558SLinJiawei def fDivSqrt = "b1010".U 42cafb3558SLinJiawei 43cafb3558SLinJiawei def ldu = "b1100".U 44cafb3558SLinJiawei def stu = "b1101".U 453366070dSWilliam Wang def mou = "b1110".U // for amo, lr, sc, fence 469a2e6b8aSLinJiawei 479a2e6b8aSLinJiawei def apply() = UInt(log2Up(num).W) 489a2e6b8aSLinJiawei 49cafb3558SLinJiawei def isIntExu(fuType: UInt) = !fuType(3) 50cafb3558SLinJiawei def isFpExu(fuType: UInt) = fuType(3, 2) === "b10".U 51cafb3558SLinJiawei def isMemExu(fuType: UInt) = fuType(3, 2) === "b11".U 523366070dSWilliam Wang def isLoadExu(fuType: UInt) = fuType === ldu || fuType===mou 53de593423SWilliam Wang def isStoreExu(fuType: UInt) = fuType === stu 54cafb3558SLinJiawei 55cafb3558SLinJiawei val functionNameMap = Map( 56cafb3558SLinJiawei jmp.litValue() -> "jmp", 57cafb3558SLinJiawei i2f.litValue() -> "int to float", 58cafb3558SLinJiawei csr.litValue() -> "csr", 59cafb3558SLinJiawei alu.litValue() -> "alu", 60cafb3558SLinJiawei mul.litValue() -> "mul", 61cafb3558SLinJiawei div.litValue() -> "div", 62b8f08ca0SZhangZifei fence.litValue() -> "fence", 63cafb3558SLinJiawei fmac.litValue() -> "fmac", 64cafb3558SLinJiawei fmisc.litValue() -> "fmisc", 65cafb3558SLinJiawei fDivSqrt.litValue() -> "fdiv/fsqrt", 66cafb3558SLinJiawei ldu.litValue() -> "load", 67cafb3558SLinJiawei stu.litValue() -> "store" 68cafb3558SLinJiawei ) 69cafb3558SLinJiawei 709a2e6b8aSLinJiawei } 719a2e6b8aSLinJiawei 729a2e6b8aSLinJiawei object FuOpType extends HasXSParameter { 73cafb3558SLinJiawei def apply() = UInt(exuParameters.FuOpWidth.W) 749a2e6b8aSLinJiawei } 75ebd97ecbSzhanglinjuan 76ebd97ecbSzhanglinjuan object BTBtype { 77ebd97ecbSzhanglinjuan def B = "b00".U // branch 78ebd97ecbSzhanglinjuan def J = "b01".U // jump 79ebd97ecbSzhanglinjuan def I = "b10".U // indirect 80ebd97ecbSzhanglinjuan def R = "b11".U // return 81ebd97ecbSzhanglinjuan 82ebd97ecbSzhanglinjuan def apply() = UInt(2.W) 83ebd97ecbSzhanglinjuan } 84518d8658SYinan Xu 85a3edac52SYinan Xu object CommitType { 86a3edac52SYinan Xu def INT = "b00".U // int 87a3edac52SYinan Xu def FP = "b01".U // fp 88a3edac52SYinan Xu def LOAD = "b10".U // load 89a3edac52SYinan Xu def STORE = "b11".U // store 90518d8658SYinan Xu 91518d8658SYinan Xu def apply() = UInt(2.W) 92a3edac52SYinan Xu def isLoadStore(commitType: UInt) = commitType(1) 93*4fb541a1SYinan Xu def lsInstIsStore(commitType: UInt) = commitType(0) 94518d8658SYinan Xu } 959a2e6b8aSLinJiawei} 96