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