xref: /XiangShan/src/main/scala/utils/DebugIdentityNode.scala (revision e2801f9751af7390b9496601ccf3fda95fb70430)
1618fb109Slinjiaweipackage utils
2618fb109Slinjiawei
3618fb109Slinjiaweiimport chisel3._
4618fb109Slinjiaweiimport chipsalliance.rocketchip.config.Parameters
5618fb109Slinjiaweiimport freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp}
6618fb109Slinjiaweiimport freechips.rocketchip.tilelink.{TLClientNode, TLIdentityNode, TLMasterParameters, TLMasterPortParameters}
7*e2801f97Slinjiaweiimport xiangshan.HasXSLog
8618fb109Slinjiawei
9618fb109Slinjiaweiclass DebugIdentityNode()(implicit p: Parameters) extends LazyModule  {
10618fb109Slinjiawei
11618fb109Slinjiawei  val node = TLIdentityNode()
12618fb109Slinjiawei
13618fb109Slinjiawei  val n = TLClientNode(Seq(TLMasterPortParameters.v1(
14618fb109Slinjiawei    Seq(
15618fb109Slinjiawei      TLMasterParameters.v1("debug node")
16618fb109Slinjiawei    )
17618fb109Slinjiawei  )))
18618fb109Slinjiawei
19*e2801f97Slinjiawei  lazy val module = new LazyModuleImp(this) with HasXSLog with HasTLDump{
20618fb109Slinjiawei    val (out, _) = node.out(0)
21618fb109Slinjiawei    val (in, _) = node.in(0)
22618fb109Slinjiawei    when(in.a.fire()){
23*e2801f97Slinjiawei      XSDebug(" ")
24*e2801f97Slinjiawei      in.a.bits.dump
25618fb109Slinjiawei    }
26618fb109Slinjiawei    when(in.d.fire()){
27*e2801f97Slinjiawei      XSDebug(" ")
28*e2801f97Slinjiawei      in.d.bits.dump
29618fb109Slinjiawei    }
30618fb109Slinjiawei  }
31618fb109Slinjiawei}
320ccdef88Slinjiawei
330ccdef88Slinjiaweiobject DebugIdentityNode {
340ccdef88Slinjiawei  def apply()(implicit p: Parameters): TLIdentityNode = {
350ccdef88Slinjiawei    val identityNode = LazyModule(new DebugIdentityNode())
360ccdef88Slinjiawei    identityNode.node
370ccdef88Slinjiawei  }
380ccdef88Slinjiawei}