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