xref: /XiangShan/src/main/scala/utils/DebugIdentityNode.scala (revision 5c5bd416ce761d956348a8e2fbbf268922371d8b)
1618fb109Slinjiaweipackage utils
2618fb109Slinjiawei
3618fb109Slinjiaweiimport chisel3._
4618fb109Slinjiaweiimport chipsalliance.rocketchip.config.Parameters
58f653805SLinJiaweiimport chisel3.util.DecoupledIO
6618fb109Slinjiaweiimport freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp}
78f653805SLinJiaweiimport freechips.rocketchip.tilelink.{TLBundle, TLClientNode, TLIdentityNode, TLMasterParameters, TLMasterPortParameters}
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*5c5bd416Sljw  lazy val module = new LazyModuleImp(this) with HasTLDump{
20618fb109Slinjiawei    val (out, _) = node.out(0)
21618fb109Slinjiawei    val (in, _) = node.in(0)
228f653805SLinJiawei
238f653805SLinJiawei    def debug(t: TLBundle, valid: Boolean = false): Unit ={
248f653805SLinJiawei      def fire[T <: Data](x: DecoupledIO[T]) = if(valid) x.valid else x.fire()
258f653805SLinJiawei      val channels = Seq(t.a, t.b, t.c, t.d, t.e)
268f653805SLinJiawei      channels.foreach(c =>
278f653805SLinJiawei        when(fire(c)){
28ab3aa7eeSBigWhiteDog          XSDebug(" isFire:%d ",c.fire())
298f653805SLinJiawei          c.bits.dump
30618fb109Slinjiawei        }
318f653805SLinJiawei      )
32618fb109Slinjiawei    }
33fd8d353aSBigWhiteDog    debug(in, false)
34618fb109Slinjiawei  }
35618fb109Slinjiawei}
360ccdef88Slinjiawei
370ccdef88Slinjiaweiobject DebugIdentityNode {
380ccdef88Slinjiawei  def apply()(implicit p: Parameters): TLIdentityNode = {
390ccdef88Slinjiawei    val identityNode = LazyModule(new DebugIdentityNode())
400ccdef88Slinjiawei    identityNode.node
410ccdef88Slinjiawei  }
420ccdef88Slinjiawei}
43