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