xref: /XiangShan/src/main/scala/utils/DataDontCareNode.scala (revision 279a83c2ebd4acbddb0de626444e1eda88f8ec23)
1*279a83c2SAllenpackage utils
2*279a83c2SAllen
3*279a83c2SAllenimport chisel3._
4*279a83c2SAllenimport chipsalliance.rocketchip.config.Parameters
5*279a83c2SAllenimport chisel3.util.DecoupledIO
6*279a83c2SAllenimport freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp}
7*279a83c2SAllenimport freechips.rocketchip.tilelink.{TLBundle, TLClientNode, TLIdentityNode, TLMasterParameters, TLMasterPortParameters}
8*279a83c2SAllenimport xiangshan.HasXSLog
9*279a83c2SAllen
10*279a83c2SAllenclass DataDontCareNode(a: Boolean = false, b: Boolean = false, c: Boolean = false, d: Boolean = false)(implicit p: Parameters) extends LazyModule  {
11*279a83c2SAllen
12*279a83c2SAllen  val node = TLIdentityNode()
13*279a83c2SAllen
14*279a83c2SAllen  val n = TLClientNode(Seq(TLMasterPortParameters.v1(
15*279a83c2SAllen    Seq(
16*279a83c2SAllen      TLMasterParameters.v1("DataDontCareNode")
17*279a83c2SAllen    )
18*279a83c2SAllen  )))
19*279a83c2SAllen
20*279a83c2SAllen  lazy val module = new LazyModuleImp(this) with HasXSLog with HasTLDump{
21*279a83c2SAllen    val (out, _) = node.out(0)
22*279a83c2SAllen    val (in, _) = node.in(0)
23*279a83c2SAllen
24*279a83c2SAllen    if (a) {
25*279a83c2SAllen      out.a.bits.data := DontCare
26*279a83c2SAllen    }
27*279a83c2SAllen    if (b) {
28*279a83c2SAllen      in.b.bits.data := DontCare
29*279a83c2SAllen    }
30*279a83c2SAllen    if (c) {
31*279a83c2SAllen      out.c.bits.data := DontCare
32*279a83c2SAllen    }
33*279a83c2SAllen    if (d) {
34*279a83c2SAllen      in.d.bits.data := DontCare
35*279a83c2SAllen    }
36*279a83c2SAllen  }
37*279a83c2SAllen}
38*279a83c2SAllen
39*279a83c2SAllenobject DataDontCareNode {
40*279a83c2SAllen  def apply(a: Boolean = false, b: Boolean = false, c: Boolean = false, d: Boolean = false)(implicit p: Parameters): TLIdentityNode = {
41*279a83c2SAllen    val dataDontCareNode = LazyModule(new DataDontCareNode(a, b, c, d))
42*279a83c2SAllen    dataDontCareNode.node
43*279a83c2SAllen  }
44*279a83c2SAllen}
45