1*e2801f97Slinjiaweipackage utils 2*e2801f97Slinjiawei 3*e2801f97Slinjiaweiimport chisel3._ 4*e2801f97Slinjiaweiimport freechips.rocketchip.tilelink.{TLBundle, TLBundleA, TLBundleB, TLBundleC, TLBundleD, TLBundleE, TLChannel} 5*e2801f97Slinjiawei 6*e2801f97Slinjiaweitrait HasTLDump { 7*e2801f97Slinjiawei 8*e2801f97Slinjiawei implicit class dumpA(a: TLBundleA) { 9*e2801f97Slinjiawei def dump = 10*e2801f97Slinjiawei printf( 11*e2801f97Slinjiawei s"${a.channelName} opcode: %x param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n", 12*e2801f97Slinjiawei a.opcode, a.param, a.size, a.source, a.address, a.mask, a.data, a.corrupt 13*e2801f97Slinjiawei ) 14*e2801f97Slinjiawei } 15*e2801f97Slinjiawei 16*e2801f97Slinjiawei implicit class dumpB(b: TLBundleB) { 17*e2801f97Slinjiawei def dump = 18*e2801f97Slinjiawei printf( 19*e2801f97Slinjiawei s"${b.channelName} opcode: %x param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n", 20*e2801f97Slinjiawei b.opcode, b.param, b.size, b.source, b.address, b.mask, b.data, b.corrupt 21*e2801f97Slinjiawei ) 22*e2801f97Slinjiawei } 23*e2801f97Slinjiawei 24*e2801f97Slinjiawei implicit class dumpC(c: TLBundleC) { 25*e2801f97Slinjiawei def dump = 26*e2801f97Slinjiawei printf( 27*e2801f97Slinjiawei s"${c.channelName} opcode: %x param: %x size: %x source: %d address: %x data: %x corrupt: %b\n", 28*e2801f97Slinjiawei c.opcode, c.param, c.size, c.source, c.address, c.data, c.corrupt 29*e2801f97Slinjiawei ) 30*e2801f97Slinjiawei } 31*e2801f97Slinjiawei 32*e2801f97Slinjiawei implicit class dumpD(d: TLBundleD) { 33*e2801f97Slinjiawei def dump = 34*e2801f97Slinjiawei printf( 35*e2801f97Slinjiawei s"${d.channelName} opcode: %x param: %x size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n", 36*e2801f97Slinjiawei d.opcode, d.param, d.size, d.source, d.sink, d.denied, d.data, d.corrupt 37*e2801f97Slinjiawei ) 38*e2801f97Slinjiawei } 39*e2801f97Slinjiawei 40*e2801f97Slinjiawei implicit class dumpE(e: TLBundleE) { 41*e2801f97Slinjiawei def dump = 42*e2801f97Slinjiawei printf(s"${e.channelName} sink: %d\n", e.sink) 43*e2801f97Slinjiawei } 44*e2801f97Slinjiawei} 45