summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chiselFrontend/src/main/scala/chisel3/Aggregate.scala9
1 files changed, 6 insertions, 3 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/Aggregate.scala b/chiselFrontend/src/main/scala/chisel3/Aggregate.scala
index 84e959a5..6c1e8dfb 100644
--- a/chiselFrontend/src/main/scala/chisel3/Aggregate.scala
+++ b/chiselFrontend/src/main/scala/chisel3/Aggregate.scala
@@ -165,9 +165,12 @@ sealed class Vec[T <: Data] private[chisel3] (gen: => T, val length: Int)
// Note: the constructor takes a gen() function instead of a Seq to enforce
// that all elements must be the same and because it makes FIRRTL generation
// simpler.
- private val self: Seq[T] = Vector.fill(length)(gen)
- for ((elt, i) <- self.zipWithIndex)
- elt.setRef(this, i)
+ private lazy val self: Seq[T] = {
+ val _self = Vector.fill(length)(gen)
+ for ((elt, i) <- _self.zipWithIndex)
+ elt.setRef(this, i)
+ _self
+ }
/**
* sample_element 'tracks' all changes to the elements.