1e2801f97Slinjiaweipackage utils 2e2801f97Slinjiawei 3e2801f97Slinjiaweiimport chisel3._ 4e2801f97Slinjiaweiimport freechips.rocketchip.tilelink.{TLBundle, TLBundleA, TLBundleB, TLBundleC, TLBundleD, TLBundleE, TLChannel} 51865a66fSlinjiaweiimport xiangshan.HasXSLog 6e2801f97Slinjiawei 71865a66fSlinjiaweitrait HasTLDump { this: HasXSLog => 8e2801f97Slinjiawei 9*8f653805SLinJiawei implicit class TLDump(channel: TLChannel) { 10*8f653805SLinJiawei def dump = channel match { 11*8f653805SLinJiawei case a: TLBundleA => 121865a66fSlinjiawei XSDebug(false, true.B, 1324b11ca3Slinjiawei a.channelName + " opcode: %x param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n", 14e2801f97Slinjiawei a.opcode, a.param, a.size, a.source, a.address, a.mask, a.data, a.corrupt 15e2801f97Slinjiawei ) 16*8f653805SLinJiawei case b: TLBundleB => 171865a66fSlinjiawei XSDebug(false, true.B, 1824b11ca3Slinjiawei b.channelName + " opcode: %x param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n", 19e2801f97Slinjiawei b.opcode, b.param, b.size, b.source, b.address, b.mask, b.data, b.corrupt 20e2801f97Slinjiawei ) 21*8f653805SLinJiawei case c: TLBundleC => 221865a66fSlinjiawei XSDebug(false, true.B, 2324b11ca3Slinjiawei c.channelName + " opcode: %x param: %x size: %x source: %d address: %x data: %x corrupt: %b\n", 24e2801f97Slinjiawei c.opcode, c.param, c.size, c.source, c.address, c.data, c.corrupt 25e2801f97Slinjiawei ) 26*8f653805SLinJiawei case d: TLBundleD => 271865a66fSlinjiawei XSDebug(false, true.B, 2824b11ca3Slinjiawei d.channelName + " opcode: %x param: %x size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n", 29e2801f97Slinjiawei d.opcode, d.param, d.size, d.source, d.sink, d.denied, d.data, d.corrupt 30e2801f97Slinjiawei ) 31*8f653805SLinJiawei case e: TLBundleE => 321865a66fSlinjiawei XSDebug(false, true.B, e.channelName + " sink: %d\n", e.sink) 33e2801f97Slinjiawei } 34e2801f97Slinjiawei } 35*8f653805SLinJiawei} 36