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