1package utils 2 3import chisel3._ 4import chipsalliance.rocketchip.config.Parameters 5import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp} 6import freechips.rocketchip.tilelink.{TLClientNode, TLIdentityNode, TLMasterParameters, TLMasterPortParameters} 7 8class DebugIdentityNode()(implicit p: Parameters) extends LazyModule { 9 10 val node = TLIdentityNode() 11 12 val n = TLClientNode(Seq(TLMasterPortParameters.v1( 13 Seq( 14 TLMasterParameters.v1("debug node") 15 ) 16 ))) 17 18 lazy val module = new LazyModuleImp(this){ 19 val (out, _) = node.out(0) 20 val (in, _) = node.in(0) 21 val timer = GTimer() 22 when(in.a.fire()){ 23 printf(p"[$timer][A] addr: ${Hexadecimal(in.a.bits.address)} " + 24 p"opcode: ${in.a.bits.opcode} data: ${Hexadecimal(in.a.bits.data)} size: ${in.a.bits.size} source: ${in.a.bits.source}\n" 25 ) 26 } 27 when(in.d.fire()){ 28 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") 29 } 30 } 31} 32