1
0

HeterogeneousBag: a handy container for differently parameterized bundles

This commit is contained in:
Wesley W. Terpstra 2017-02-03 16:21:33 -08:00
parent 7afe383db3
commit fc9ea62d38

View File

@ -0,0 +1,13 @@
package util
import Chisel._
import chisel3.core.Record
import scala.collection.immutable.ListMap
final case class HeterogeneousBag[T <: Data](elts: Seq[T]) extends Record with collection.IndexedSeq[T] {
def apply(x: Int) = elts(x)
def length = elts.length
val elements = ListMap(elts.zipWithIndex.map { case (n,i) => (i.toString, n) }:_*)
override def cloneType: this.type = (new HeterogeneousBag(elts.map(_.cloneType))).asInstanceOf[this.type]
}