xref: /XiangShan/src/main/scala/utils/TLDump.scala (revision 8f6538053a8fbad46d067e6cc6072958571acd52)
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