xref: /XiangShan/src/main/scala/utils/TLDump.scala (revision 2225d46ebbe2fd16b9b29963c27a7d0385a42709)
1e2801f97Slinjiaweipackage utils
2e2801f97Slinjiawei
3*2225d46eSJiawei Linimport chipsalliance.rocketchip.config.Parameters
4e2801f97Slinjiaweiimport chisel3._
56a527891SBigWhiteDogimport chisel3.util._
66a527891SBigWhiteDogimport freechips.rocketchip.tilelink.TLMessages._
76a527891SBigWhiteDogimport freechips.rocketchip.tilelink.TLPermissions._
8e2801f97Slinjiaweiimport freechips.rocketchip.tilelink.{TLBundle, TLBundleA, TLBundleB, TLBundleC, TLBundleD, TLBundleE, TLChannel}
9e2801f97Slinjiawei
106a527891SBigWhiteDogtrait HasTLDump {
11e2801f97Slinjiawei
12*2225d46eSJiawei Lin  implicit val p: Parameters
13*2225d46eSJiawei Lin
148f653805SLinJiawei  implicit class TLDump(channel: TLChannel) {
158f653805SLinJiawei    def dump = channel match {
168f653805SLinJiawei      case a: TLBundleA =>
176a527891SBigWhiteDog        printChannelA(a)
188f653805SLinJiawei      case b: TLBundleB =>
196a527891SBigWhiteDog        printChannelB(b)
208f653805SLinJiawei      case c: TLBundleC =>
216a527891SBigWhiteDog        printChannelC(c)
228f653805SLinJiawei      case d: TLBundleD =>
236a527891SBigWhiteDog        printChannelD(d)
248f653805SLinJiawei      case e: TLBundleE =>
256a527891SBigWhiteDog        printChannelE(e)
26e2801f97Slinjiawei    }
27e2801f97Slinjiawei  }
286a527891SBigWhiteDog
296a527891SBigWhiteDog  def printChannelA(a: TLBundleA): Unit = {
306a527891SBigWhiteDog    switch(a.opcode) {
316a527891SBigWhiteDog      is(PutFullData) {
326a527891SBigWhiteDog        XSDebug(false, true.B,
336a527891SBigWhiteDog          a.channelName + " PutFullData param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
346a527891SBigWhiteDog          a.param, a.size, a.source, a.address, a.mask, a.data, a.corrupt
356a527891SBigWhiteDog        )
366a527891SBigWhiteDog      }
376a527891SBigWhiteDog
386a527891SBigWhiteDog      is(PutPartialData) {
396a527891SBigWhiteDog        XSDebug(false, true.B,
406a527891SBigWhiteDog          a.channelName + " PutPartialData param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
416a527891SBigWhiteDog          a.param, a.size, a.source, a.address, a.mask, a.data, a.corrupt
426a527891SBigWhiteDog        )
436a527891SBigWhiteDog      }
446a527891SBigWhiteDog
456a527891SBigWhiteDog      is(ArithmeticData) {
466a527891SBigWhiteDog        XSDebug(false, true.B,
476a527891SBigWhiteDog          a.channelName + " ArithmeticData param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
486a527891SBigWhiteDog          a.param, a.size, a.source, a.address, a.mask, a.data, a.corrupt
496a527891SBigWhiteDog        )
506a527891SBigWhiteDog      }
516a527891SBigWhiteDog
526a527891SBigWhiteDog      is(LogicalData) {
536a527891SBigWhiteDog        XSDebug(false, true.B,
546a527891SBigWhiteDog          a.channelName + " LogicalData param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
556a527891SBigWhiteDog          a.param, a.size, a.source, a.address, a.mask, a.data, a.corrupt
566a527891SBigWhiteDog        )
576a527891SBigWhiteDog      }
586a527891SBigWhiteDog
596a527891SBigWhiteDog      is(Get) {
606a527891SBigWhiteDog        XSDebug(false, true.B,
616a527891SBigWhiteDog          a.channelName + " Get param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
626a527891SBigWhiteDog          a.param, a.size, a.source, a.address, a.mask, a.data, a.corrupt
636a527891SBigWhiteDog        )
646a527891SBigWhiteDog      }
656a527891SBigWhiteDog
666a527891SBigWhiteDog      is(Hint) {
676a527891SBigWhiteDog        XSDebug(false, true.B,
686a527891SBigWhiteDog          a.channelName + " Intent param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
696a527891SBigWhiteDog          a.param, a.size, a.source, a.address, a.mask, a.data, a.corrupt
706a527891SBigWhiteDog        )
716a527891SBigWhiteDog      }
726a527891SBigWhiteDog
736a527891SBigWhiteDog      is(AcquireBlock) {
746a527891SBigWhiteDog        switch(a.param) {
756a527891SBigWhiteDog          is(NtoB) {
766a527891SBigWhiteDog            XSDebug(false, true.B,
776a527891SBigWhiteDog              a.channelName + " AcquireBlock NtoB size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
786a527891SBigWhiteDog              a.size, a.source, a.address, a.mask, a.data, a.corrupt
796a527891SBigWhiteDog            )
806a527891SBigWhiteDog          }
816a527891SBigWhiteDog          is(NtoT) {
826a527891SBigWhiteDog            XSDebug(false, true.B,
836a527891SBigWhiteDog              a.channelName + " AcquireBlock NtoT size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
846a527891SBigWhiteDog              a.size, a.source, a.address, a.mask, a.data, a.corrupt
856a527891SBigWhiteDog            )
866a527891SBigWhiteDog          }
876a527891SBigWhiteDog          is(BtoT) {
886a527891SBigWhiteDog            XSDebug(false, true.B,
896a527891SBigWhiteDog              a.channelName + " AcquireBlock BtoT size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
906a527891SBigWhiteDog              a.size, a.source, a.address, a.mask, a.data, a.corrupt
916a527891SBigWhiteDog            )
926a527891SBigWhiteDog          }
936a527891SBigWhiteDog        }
946a527891SBigWhiteDog      }
956a527891SBigWhiteDog
966a527891SBigWhiteDog      is(AcquirePerm) {
976a527891SBigWhiteDog        switch(a.param) {
986a527891SBigWhiteDog          is(NtoB) {
996a527891SBigWhiteDog            XSDebug(false, true.B,
1006a527891SBigWhiteDog              a.channelName + " AcquirePerm NtoB size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1016a527891SBigWhiteDog              a.size, a.source, a.address, a.mask, a.data, a.corrupt
1026a527891SBigWhiteDog            )
1036a527891SBigWhiteDog          }
1046a527891SBigWhiteDog          is(NtoT) {
1056a527891SBigWhiteDog            XSDebug(false, true.B,
1066a527891SBigWhiteDog              a.channelName + " AcquirePerm NtoT size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1076a527891SBigWhiteDog              a.size, a.source, a.address, a.mask, a.data, a.corrupt
1086a527891SBigWhiteDog            )
1096a527891SBigWhiteDog          }
1106a527891SBigWhiteDog          is(BtoT) {
1116a527891SBigWhiteDog            XSDebug(false, true.B,
1126a527891SBigWhiteDog              a.channelName + " AcquirePerm BtoT size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1136a527891SBigWhiteDog              a.size, a.source, a.address, a.mask, a.data, a.corrupt
1146a527891SBigWhiteDog            )
1156a527891SBigWhiteDog          }
1166a527891SBigWhiteDog        }
1176a527891SBigWhiteDog      }
1186a527891SBigWhiteDog
1196a527891SBigWhiteDog    }
1206a527891SBigWhiteDog  }
1216a527891SBigWhiteDog
1226a527891SBigWhiteDog  def printChannelB(b: TLBundleB): Unit = {
1236a527891SBigWhiteDog    switch(b.opcode) {
1246a527891SBigWhiteDog      is(PutFullData) {
1256a527891SBigWhiteDog        XSDebug(false, true.B,
1266a527891SBigWhiteDog          b.channelName + " PutFullData param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1276a527891SBigWhiteDog          b.param, b.size, b.source, b.address, b.mask, b.data, b.corrupt
1286a527891SBigWhiteDog        )
1296a527891SBigWhiteDog      }
1306a527891SBigWhiteDog
1316a527891SBigWhiteDog      is(PutPartialData) {
1326a527891SBigWhiteDog        XSDebug(false, true.B,
1336a527891SBigWhiteDog          b.channelName + " PutPartialData param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1346a527891SBigWhiteDog          b.param, b.size, b.source, b.address, b.mask, b.data, b.corrupt
1356a527891SBigWhiteDog        )
1366a527891SBigWhiteDog      }
1376a527891SBigWhiteDog
1386a527891SBigWhiteDog      is(ArithmeticData) {
1396a527891SBigWhiteDog        XSDebug(false, true.B,
1406a527891SBigWhiteDog          b.channelName + " ArithmeticData param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1416a527891SBigWhiteDog          b.param, b.size, b.source, b.address, b.mask, b.data, b.corrupt
1426a527891SBigWhiteDog        )
1436a527891SBigWhiteDog      }
1446a527891SBigWhiteDog
1456a527891SBigWhiteDog      is(LogicalData) {
1466a527891SBigWhiteDog        XSDebug(false, true.B,
1476a527891SBigWhiteDog          b.channelName + " LogicalData param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1486a527891SBigWhiteDog          b.param, b.size, b.source, b.address, b.mask, b.data, b.corrupt
1496a527891SBigWhiteDog        )
1506a527891SBigWhiteDog      }
1516a527891SBigWhiteDog
1526a527891SBigWhiteDog      is(Get) {
1536a527891SBigWhiteDog        XSDebug(false, true.B,
1546a527891SBigWhiteDog          b.channelName + " Get param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1556a527891SBigWhiteDog          b.param, b.size, b.source, b.address, b.mask, b.data, b.corrupt
1566a527891SBigWhiteDog        )
1576a527891SBigWhiteDog      }
1586a527891SBigWhiteDog
1596a527891SBigWhiteDog      is(Hint) {
1606a527891SBigWhiteDog        XSDebug(false, true.B,
1616a527891SBigWhiteDog          b.channelName + " Intent param: %x size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1626a527891SBigWhiteDog          b.param, b.size, b.source, b.address, b.mask, b.data, b.corrupt
1636a527891SBigWhiteDog        )
1646a527891SBigWhiteDog      }
1656a527891SBigWhiteDog
1666a527891SBigWhiteDog      is(Probe) {
1676a527891SBigWhiteDog        switch(b.param) {
1686a527891SBigWhiteDog          is(toN) {
1696a527891SBigWhiteDog            XSDebug(false, true.B,
1706a527891SBigWhiteDog              b.channelName + " Probe toN size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1716a527891SBigWhiteDog              b.size, b.source, b.address, b.mask, b.data, b.corrupt
1726a527891SBigWhiteDog            )
1736a527891SBigWhiteDog          }
1746a527891SBigWhiteDog          is(toB) {
1756a527891SBigWhiteDog            XSDebug(false, true.B,
1766a527891SBigWhiteDog              b.channelName + " Probe toB size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1776a527891SBigWhiteDog              b.size, b.source, b.address, b.mask, b.data, b.corrupt
1786a527891SBigWhiteDog            )
1796a527891SBigWhiteDog          }
1806a527891SBigWhiteDog          is(toT) {
1816a527891SBigWhiteDog            XSDebug(false, true.B,
1826a527891SBigWhiteDog              b.channelName + " Probe toT size: %x source: %d address: %x mask: %x data: %x corrupt: %b\n",
1836a527891SBigWhiteDog              b.size, b.source, b.address, b.mask, b.data, b.corrupt
1846a527891SBigWhiteDog            )
1856a527891SBigWhiteDog          }
1866a527891SBigWhiteDog        }
1876a527891SBigWhiteDog      }
1886a527891SBigWhiteDog
1896a527891SBigWhiteDog    }
1906a527891SBigWhiteDog  }
1916a527891SBigWhiteDog
1926a527891SBigWhiteDog  def printChannelC(c: TLBundleC): Unit = {
1936a527891SBigWhiteDog    switch(c.opcode) {
1946a527891SBigWhiteDog      is(AccessAck) {
1956a527891SBigWhiteDog        XSDebug(false, true.B,
1966a527891SBigWhiteDog          c.channelName + " AccessAck param: %x size: %x source: %d address: %x data: %x corrupt: %b\n",
1976a527891SBigWhiteDog          c.param, c.size, c.source, c.address, c.data, c.corrupt
1986a527891SBigWhiteDog        )
1996a527891SBigWhiteDog      }
2006a527891SBigWhiteDog
2016a527891SBigWhiteDog      is(AccessAckData) {
2026a527891SBigWhiteDog        XSDebug(false, true.B,
2036a527891SBigWhiteDog          c.channelName + " AccessAckData param: %x size: %x source: %d address: %x data: %x corrupt: %b\n",
2046a527891SBigWhiteDog          c.param, c.size, c.source, c.address, c.data, c.corrupt
2056a527891SBigWhiteDog        )
2066a527891SBigWhiteDog      }
2076a527891SBigWhiteDog
2086a527891SBigWhiteDog      is(HintAck) {
2096a527891SBigWhiteDog        XSDebug(false, true.B,
2106a527891SBigWhiteDog          c.channelName + " HintAck param: %x size: %x source: %d address: %x data: %x corrupt: %b\n",
2116a527891SBigWhiteDog          c.param, c.size, c.source, c.address, c.data, c.corrupt
2126a527891SBigWhiteDog        )
2136a527891SBigWhiteDog      }
2146a527891SBigWhiteDog
2156a527891SBigWhiteDog      is(ProbeAck) {
2166a527891SBigWhiteDog        switch(c.param) {
2176a527891SBigWhiteDog          is(TtoB) {
2186a527891SBigWhiteDog            XSDebug(false, true.B,
2196a527891SBigWhiteDog              c.channelName + " ProbeAck TtoB size: %x source: %d address: %x data: %x corrupt: %b\n",
2206a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2216a527891SBigWhiteDog            )
2226a527891SBigWhiteDog          }
2236a527891SBigWhiteDog          is(TtoN) {
2246a527891SBigWhiteDog            XSDebug(false, true.B,
2256a527891SBigWhiteDog              c.channelName + " ProbeAck TtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
2266a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2276a527891SBigWhiteDog            )
2286a527891SBigWhiteDog          }
2296a527891SBigWhiteDog          is(BtoN) {
2306a527891SBigWhiteDog            XSDebug(false, true.B,
2316a527891SBigWhiteDog              c.channelName + " ProbeAck BtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
2326a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2336a527891SBigWhiteDog            )
2346a527891SBigWhiteDog          }
2356a527891SBigWhiteDog          is(TtoT) {
2366a527891SBigWhiteDog            XSDebug(false, true.B,
2376a527891SBigWhiteDog              c.channelName + " ProbeAck TtoT size: %x source: %d address: %x data: %x corrupt: %b\n",
2386a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2396a527891SBigWhiteDog            )
2406a527891SBigWhiteDog          }
2416a527891SBigWhiteDog          is(BtoB) {
2426a527891SBigWhiteDog            XSDebug(false, true.B,
2436a527891SBigWhiteDog              c.channelName + " ProbeAck BtoB size: %x source: %d address: %x data: %x corrupt: %b\n",
2446a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2456a527891SBigWhiteDog            )
2466a527891SBigWhiteDog          }
2476a527891SBigWhiteDog          is(NtoN) {
2486a527891SBigWhiteDog            XSDebug(false, true.B,
2496a527891SBigWhiteDog              c.channelName + " ProbeAck NtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
2506a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2516a527891SBigWhiteDog            )
2526a527891SBigWhiteDog          }
2536a527891SBigWhiteDog        }
2546a527891SBigWhiteDog      }
2556a527891SBigWhiteDog
2566a527891SBigWhiteDog      is(ProbeAckData) {
2576a527891SBigWhiteDog        switch(c.param) {
2586a527891SBigWhiteDog          is(TtoB) {
2596a527891SBigWhiteDog            XSDebug(false, true.B,
2606a527891SBigWhiteDog              c.channelName + " ProbeAckData TtoB size: %x source: %d address: %x data: %x corrupt: %b\n",
2616a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2626a527891SBigWhiteDog            )
2636a527891SBigWhiteDog          }
2646a527891SBigWhiteDog          is(TtoN) {
2656a527891SBigWhiteDog            XSDebug(false, true.B,
2666a527891SBigWhiteDog              c.channelName + " ProbeAckData TtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
2676a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2686a527891SBigWhiteDog            )
2696a527891SBigWhiteDog          }
2706a527891SBigWhiteDog          is(BtoN) {
2716a527891SBigWhiteDog            XSDebug(false, true.B,
2726a527891SBigWhiteDog              c.channelName + " ProbeAckData BtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
2736a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2746a527891SBigWhiteDog            )
2756a527891SBigWhiteDog          }
2766a527891SBigWhiteDog          is(TtoT) {
2776a527891SBigWhiteDog            XSDebug(false, true.B,
2786a527891SBigWhiteDog              c.channelName + " ProbeAckData TtoT size: %x source: %d address: %x data: %x corrupt: %b\n",
2796a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2806a527891SBigWhiteDog            )
2816a527891SBigWhiteDog          }
2826a527891SBigWhiteDog          is(BtoB) {
2836a527891SBigWhiteDog            XSDebug(false, true.B,
2846a527891SBigWhiteDog              c.channelName + " ProbeAckData BtoB size: %x source: %d address: %x data: %x corrupt: %b\n",
2856a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2866a527891SBigWhiteDog            )
2876a527891SBigWhiteDog          }
2886a527891SBigWhiteDog          is(NtoN) {
2896a527891SBigWhiteDog            XSDebug(false, true.B,
2906a527891SBigWhiteDog              c.channelName + " ProbeAckData NtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
2916a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
2926a527891SBigWhiteDog            )
2936a527891SBigWhiteDog          }
2946a527891SBigWhiteDog        }
2956a527891SBigWhiteDog      }
2966a527891SBigWhiteDog
2976a527891SBigWhiteDog      is(Release) {
2986a527891SBigWhiteDog        switch(c.param) {
2996a527891SBigWhiteDog          is(TtoB) {
3006a527891SBigWhiteDog            XSDebug(false, true.B,
3016a527891SBigWhiteDog              c.channelName + " Release TtoB size: %x source: %d address: %x data: %x corrupt: %b\n",
3026a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3036a527891SBigWhiteDog            )
3046a527891SBigWhiteDog          }
3056a527891SBigWhiteDog          is(TtoN) {
3066a527891SBigWhiteDog            XSDebug(false, true.B,
3076a527891SBigWhiteDog              c.channelName + " Release TtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
3086a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3096a527891SBigWhiteDog            )
3106a527891SBigWhiteDog          }
3116a527891SBigWhiteDog          is(BtoN) {
3126a527891SBigWhiteDog            XSDebug(false, true.B,
3136a527891SBigWhiteDog              c.channelName + " Release BtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
3146a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3156a527891SBigWhiteDog            )
3166a527891SBigWhiteDog          }
3176a527891SBigWhiteDog          is(TtoT) {
3186a527891SBigWhiteDog            XSDebug(false, true.B,
3196a527891SBigWhiteDog              c.channelName + " Release TtoT size: %x source: %d address: %x data: %x corrupt: %b\n",
3206a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3216a527891SBigWhiteDog            )
3226a527891SBigWhiteDog          }
3236a527891SBigWhiteDog          is(BtoB) {
3246a527891SBigWhiteDog            XSDebug(false, true.B,
3256a527891SBigWhiteDog              c.channelName + " Release BtoB size: %x source: %d address: %x data: %x corrupt: %b\n",
3266a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3276a527891SBigWhiteDog            )
3286a527891SBigWhiteDog          }
3296a527891SBigWhiteDog          is(NtoN) {
3306a527891SBigWhiteDog            XSDebug(false, true.B,
3316a527891SBigWhiteDog              c.channelName + " Release NtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
3326a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3336a527891SBigWhiteDog            )
3346a527891SBigWhiteDog          }
3356a527891SBigWhiteDog        }
3366a527891SBigWhiteDog      }
3376a527891SBigWhiteDog
3386a527891SBigWhiteDog      is(ReleaseData) {
3396a527891SBigWhiteDog        switch(c.param) {
3406a527891SBigWhiteDog          is(TtoB) {
3416a527891SBigWhiteDog            XSDebug(false, true.B,
3426a527891SBigWhiteDog              c.channelName + " ReleaseData TtoB size: %x source: %d address: %x data: %x corrupt: %b\n",
3436a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3446a527891SBigWhiteDog            )
3456a527891SBigWhiteDog          }
3466a527891SBigWhiteDog          is(TtoN) {
3476a527891SBigWhiteDog            XSDebug(false, true.B,
3486a527891SBigWhiteDog              c.channelName + " ReleaseData TtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
3496a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3506a527891SBigWhiteDog            )
3516a527891SBigWhiteDog          }
3526a527891SBigWhiteDog          is(BtoN) {
3536a527891SBigWhiteDog            XSDebug(false, true.B,
3546a527891SBigWhiteDog              c.channelName + " ReleaseData BtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
3556a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3566a527891SBigWhiteDog            )
3576a527891SBigWhiteDog          }
3586a527891SBigWhiteDog          is(TtoT) {
3596a527891SBigWhiteDog            XSDebug(false, true.B,
3606a527891SBigWhiteDog              c.channelName + " ReleaseData TtoT size: %x source: %d address: %x data: %x corrupt: %b\n",
3616a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3626a527891SBigWhiteDog            )
3636a527891SBigWhiteDog          }
3646a527891SBigWhiteDog          is(BtoB) {
3656a527891SBigWhiteDog            XSDebug(false, true.B,
3666a527891SBigWhiteDog              c.channelName + " ReleaseData BtoB size: %x source: %d address: %x data: %x corrupt: %b\n",
3676a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3686a527891SBigWhiteDog            )
3696a527891SBigWhiteDog          }
3706a527891SBigWhiteDog          is(NtoN) {
3716a527891SBigWhiteDog            XSDebug(false, true.B,
3726a527891SBigWhiteDog              c.channelName + " ReleaseData NtoN size: %x source: %d address: %x data: %x corrupt: %b\n",
3736a527891SBigWhiteDog              c.size, c.source, c.address, c.data, c.corrupt
3746a527891SBigWhiteDog            )
3756a527891SBigWhiteDog          }
3766a527891SBigWhiteDog        }
3776a527891SBigWhiteDog      }
3786a527891SBigWhiteDog
3796a527891SBigWhiteDog    }
3806a527891SBigWhiteDog  }
3816a527891SBigWhiteDog
3826a527891SBigWhiteDog  def printChannelD(d: TLBundleD): Unit = {
3836a527891SBigWhiteDog    switch(d.opcode) {
3846a527891SBigWhiteDog      is(AccessAck) {
3856a527891SBigWhiteDog        XSDebug(false, true.B,
3866a527891SBigWhiteDog          d.channelName + " AccessAck param: %x size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
3876a527891SBigWhiteDog          d.param, d.size, d.source, d.sink, d.denied, d.data, d.corrupt
3886a527891SBigWhiteDog        )
3896a527891SBigWhiteDog      }
3906a527891SBigWhiteDog
3916a527891SBigWhiteDog      is(AccessAckData) {
3926a527891SBigWhiteDog        XSDebug(false, true.B,
3936a527891SBigWhiteDog          d.channelName + " AccessAckData param: %x size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
3946a527891SBigWhiteDog          d.param, d.size, d.source, d.sink, d.denied, d.data, d.corrupt
3956a527891SBigWhiteDog        )
3966a527891SBigWhiteDog      }
3976a527891SBigWhiteDog
3986a527891SBigWhiteDog      is(HintAck) {
3996a527891SBigWhiteDog        XSDebug(false, true.B,
4006a527891SBigWhiteDog          d.channelName + " HintAck param: %x size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
4016a527891SBigWhiteDog          d.param, d.size, d.source, d.sink, d.denied, d.data, d.corrupt
4026a527891SBigWhiteDog        )
4036a527891SBigWhiteDog      }
4046a527891SBigWhiteDog
4056a527891SBigWhiteDog      is(Grant) {
4066a527891SBigWhiteDog        switch(d.param) {
4076a527891SBigWhiteDog          is(toT) {
4086a527891SBigWhiteDog            XSDebug(false, true.B,
4096a527891SBigWhiteDog              d.channelName + " Grant toT size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
4106a527891SBigWhiteDog              d.size, d.source, d.sink, d.denied, d.data, d.corrupt
4116a527891SBigWhiteDog            )
4126a527891SBigWhiteDog          }
4136a527891SBigWhiteDog          is(toB) {
4146a527891SBigWhiteDog            XSDebug(false, true.B,
4156a527891SBigWhiteDog              d.channelName + " Grant toB size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
4166a527891SBigWhiteDog              d.size, d.source, d.sink, d.denied, d.data, d.corrupt
4176a527891SBigWhiteDog            )
4186a527891SBigWhiteDog          }
4196a527891SBigWhiteDog          is(toN) {
4206a527891SBigWhiteDog            XSDebug(false, true.B,
4216a527891SBigWhiteDog              d.channelName + " Grant toN size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
4226a527891SBigWhiteDog              d.size, d.source, d.sink, d.denied, d.data, d.corrupt
4236a527891SBigWhiteDog            )
4246a527891SBigWhiteDog          }
4256a527891SBigWhiteDog        }
4266a527891SBigWhiteDog      }
4276a527891SBigWhiteDog
4286a527891SBigWhiteDog      is(GrantData) {
4296a527891SBigWhiteDog        switch(d.param) {
4306a527891SBigWhiteDog          is(toT) {
4316a527891SBigWhiteDog            XSDebug(false, true.B,
4326a527891SBigWhiteDog              d.channelName + " GrantData toT size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
4336a527891SBigWhiteDog              d.size, d.source, d.sink, d.denied, d.data, d.corrupt
4346a527891SBigWhiteDog            )
4356a527891SBigWhiteDog          }
4366a527891SBigWhiteDog          is(toB) {
4376a527891SBigWhiteDog            XSDebug(false, true.B,
4386a527891SBigWhiteDog              d.channelName + " GrantData toB size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
4396a527891SBigWhiteDog              d.size, d.source, d.sink, d.denied, d.data, d.corrupt
4406a527891SBigWhiteDog            )
4416a527891SBigWhiteDog          }
4426a527891SBigWhiteDog          is(toN) {
4436a527891SBigWhiteDog            XSDebug(false, true.B,
4446a527891SBigWhiteDog              d.channelName + " GrantData toN size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
4456a527891SBigWhiteDog              d.size, d.source, d.sink, d.denied, d.data, d.corrupt
4466a527891SBigWhiteDog            )
4476a527891SBigWhiteDog          }
4486a527891SBigWhiteDog        }
4496a527891SBigWhiteDog      }
4506a527891SBigWhiteDog
4516a527891SBigWhiteDog      is(ReleaseAck) {
4526a527891SBigWhiteDog        XSDebug(false, true.B,
4536a527891SBigWhiteDog          d.channelName + " ReleaseAck param: %x size: %x source: %d sink: %d denied: %b data: %x corrupt: %b\n",
4546a527891SBigWhiteDog          d.param, d.size, d.source, d.sink, d.denied, d.data, d.corrupt
4556a527891SBigWhiteDog        )
4566a527891SBigWhiteDog      }
4576a527891SBigWhiteDog
4586a527891SBigWhiteDog    }
4596a527891SBigWhiteDog  }
4606a527891SBigWhiteDog
4616a527891SBigWhiteDog  def printChannelE(e: TLBundleE): Unit = {
4626a527891SBigWhiteDog    XSDebug(false, true.B, e.channelName + "GrantAck sink: %d\n", e.sink)
4636a527891SBigWhiteDog  }
4646a527891SBigWhiteDog
4658f653805SLinJiawei}
466