summaryrefslogtreecommitdiff
path: root/core/src/main/scala/chisel3/Aggregate.scala
diff options
context:
space:
mode:
authorAditya Naik2024-07-24 01:07:36 -0700
committerAditya Naik2024-07-24 01:08:07 -0700
commitf998a07cc51d62db7f66be059d2a69d54a43e0b1 (patch)
tree4053026a0f49a3d44c752996614c41629b186ffa /core/src/main/scala/chisel3/Aggregate.scala
parent9c6253691eec325a2b69abe68bfdf16f5d378827 (diff)
Update Builder.scala
Diffstat (limited to 'core/src/main/scala/chisel3/Aggregate.scala')
-rw-r--r--core/src/main/scala/chisel3/Aggregate.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/core/src/main/scala/chisel3/Aggregate.scala b/core/src/main/scala/chisel3/Aggregate.scala
index ab7fe53f..2c4f67db 100644
--- a/core/src/main/scala/chisel3/Aggregate.scala
+++ b/core/src/main/scala/chisel3/Aggregate.scala
@@ -148,8 +148,9 @@ class Vec[T <: Data] private[chisel3] (gen: => T, val vec_length: Int) extends A
// simpler.
private lazy val self: Seq[T] = {
val _self = Vector.fill(vec_length)(gen)
+ val thisNode = Node(this) // Share the same Node for all elements.
for ((elt, i) <- _self.zipWithIndex)
- elt.setRef(this, i)
+ elt.setRef(thisNode, i)
_self
}
@@ -225,7 +226,7 @@ class Vec[T <: Data] private[chisel3] (gen: => T, val vec_length: Int) extends A
port.bind(ChildBinding(this), reconstructedResolvedDirection)
val i = Vec.truncateIndex(p, length)
- port.setRef(this, i)
+ port.setRef(Node(this), i)
port
}
@@ -728,8 +729,9 @@ abstract class Record extends Aggregate {
!opaqueType || (elements.size == 1 && elements.head._1 == ""),
s"Opaque types must have exactly one element with an empty name, not ${elements.size}: ${elements.keys.mkString(", ")}"
)
+ val thisNode = Node(this) // Share the same Node for all elements.
for ((name, elt) <- elements) {
- elt.setRef(this, _namespace.name(name, leadingDigitOk = true), opaque = opaqueType)
+ elt.setRef(thisNode, _namespace.name(name, leadingDigitOk = true), opaque = opaqueType)
}
}