1618fb109Slinjiaweipackage utils 2618fb109Slinjiawei 3618fb109Slinjiaweiimport chisel3._ 4618fb109Slinjiaweiimport chipsalliance.rocketchip.config.Parameters 5618fb109Slinjiaweiimport freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp} 6618fb109Slinjiaweiimport freechips.rocketchip.tilelink.{TLClientNode, TLIdentityNode, TLMasterParameters, TLMasterPortParameters} 7618fb109Slinjiawei 8618fb109Slinjiaweiclass DebugIdentityNode()(implicit p: Parameters) extends LazyModule { 9618fb109Slinjiawei 10618fb109Slinjiawei val node = TLIdentityNode() 11618fb109Slinjiawei 12618fb109Slinjiawei val n = TLClientNode(Seq(TLMasterPortParameters.v1( 13618fb109Slinjiawei Seq( 14618fb109Slinjiawei TLMasterParameters.v1("debug node") 15618fb109Slinjiawei ) 16618fb109Slinjiawei ))) 17618fb109Slinjiawei 18618fb109Slinjiawei lazy val module = new LazyModuleImp(this){ 19618fb109Slinjiawei val (out, _) = node.out(0) 20618fb109Slinjiawei val (in, _) = node.in(0) 218511d772Slinjiawei val timer = GTimer() 22618fb109Slinjiawei when(in.a.fire()){ 238511d772Slinjiawei printf(p"[$timer][A] addr: ${Hexadecimal(in.a.bits.address)} " + 248511d772Slinjiawei p"opcode: ${in.a.bits.opcode} data: ${Hexadecimal(in.a.bits.data)} size: ${in.a.bits.size} source: ${in.a.bits.source}\n" 25618fb109Slinjiawei ) 26618fb109Slinjiawei } 27618fb109Slinjiawei when(in.d.fire()){ 288511d772Slinjiawei printf(p"[$timer][D] opcode: ${in.d.bits.opcode} data: ${Hexadecimal(in.d.bits.data)} size:${in.d.bits.size} source: ${in.d.bits.source}\n") 29618fb109Slinjiawei } 30618fb109Slinjiawei } 31618fb109Slinjiawei} 32*0ccdef88Slinjiawei 33*0ccdef88Slinjiaweiobject DebugIdentityNode { 34*0ccdef88Slinjiawei def apply()(implicit p: Parameters): TLIdentityNode = { 35*0ccdef88Slinjiawei val identityNode = LazyModule(new DebugIdentityNode()) 36*0ccdef88Slinjiawei identityNode.node 37*0ccdef88Slinjiawei } 38*0ccdef88Slinjiawei}