xref: /XiangShan/src/main/scala/utils/DebugIdentityNode.scala (revision 8511d7729c80ba125e48f99ef3d0ca502dd092dc)
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