1e2801f97Slinjiaweipackage utils 2e2801f97Slinjiawei 3e2801f97Slinjiaweiimport chisel3._ 4e2801f97Slinjiaweiimport freechips.rocketchip.tilelink.{TLBundle, TLBundleA, TLBundleB, TLBundleC, TLBundleD, TLBundleE, TLChannel} 5*1865a66fSlinjiaweiimport xiangshan.HasXSLog 6e2801f97Slinjiawei 7*1865a66fSlinjiaweitrait HasTLDump { this: HasXSLog => 8e2801f97Slinjiawei 9e2801f97Slinjiawei implicit class dumpA(a: TLBundleA) { 10e2801f97Slinjiawei def dump = 11*1865a66fSlinjiawei XSDebug(false, true.B, 1224b11ca3Slinjiawei a.channelName + " opcode: %x param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n", 13e2801f97Slinjiawei a.opcode, a.param, a.size, a.source, a.address, a.mask, a.data, a.corrupt 14e2801f97Slinjiawei ) 15e2801f97Slinjiawei } 16e2801f97Slinjiawei 17e2801f97Slinjiawei implicit class dumpB(b: TLBundleB) { 18e2801f97Slinjiawei def dump = 19*1865a66fSlinjiawei XSDebug(false, true.B, 2024b11ca3Slinjiawei b.channelName + " opcode: %x param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n", 21e2801f97Slinjiawei b.opcode, b.param, b.size, b.source, b.address, b.mask, b.data, b.corrupt 22e2801f97Slinjiawei ) 23e2801f97Slinjiawei } 24e2801f97Slinjiawei 25e2801f97Slinjiawei implicit class dumpC(c: TLBundleC) { 26e2801f97Slinjiawei def dump = 27*1865a66fSlinjiawei XSDebug(false, true.B, 2824b11ca3Slinjiawei c.channelName + " opcode: %x param: %x size: %x source: %d address: %x data: %x corrupt: %b\n", 29e2801f97Slinjiawei c.opcode, c.param, c.size, c.source, c.address, c.data, c.corrupt 30e2801f97Slinjiawei ) 31e2801f97Slinjiawei } 32e2801f97Slinjiawei 33e2801f97Slinjiawei implicit class dumpD(d: TLBundleD) { 34e2801f97Slinjiawei def dump = 35*1865a66fSlinjiawei XSDebug(false, true.B, 3624b11ca3Slinjiawei d.channelName + " opcode: %x param: %x size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n", 37e2801f97Slinjiawei d.opcode, d.param, d.size, d.source, d.sink, d.denied, d.data, d.corrupt 38e2801f97Slinjiawei ) 39e2801f97Slinjiawei } 40e2801f97Slinjiawei 41e2801f97Slinjiawei implicit class dumpE(e: TLBundleE) { 42e2801f97Slinjiawei def dump = 43*1865a66fSlinjiawei XSDebug(false, true.B, e.channelName + " sink: %d\n", e.sink) 44e2801f97Slinjiawei } 45e2801f97Slinjiawei} 46