xref: /XiangShan/src/main/scala/utils/SeqUtils.scala (revision edb1dfaf7d290ae99724594507dc46c2c2125384)
1package utils
2
3import chisel3._
4import chisel3.util._
5object SeqUtils {
6  type Seq2[+T] = Seq[Seq[T]]
7  type Seq3[+T] = Seq2[Seq[T]]
8  type MixedVec2[T <: Data] = MixedVec[MixedVec[T]]
9  type MixedVec3[T <: Data] = MixedVec2[MixedVec[T]]
10
11  def mapToMixedVec[T, A <: Data](in: Seq[T], f: T => A): MixedVec[A] = {
12    MixedVec(in.map(f))
13  }
14
15  def mapToMixedVec2[T, A <: Data](in: Seq2[T], f: T => A): MixedVec2[A] = {
16    MixedVec(in.map(x => mapToMixedVec(x, f)))
17  }
18
19  def mapToMixedVec3[T, A <: Data](in: Seq3[T], f: T => A): MixedVec3[A] = {
20    MixedVec(in.map(x => mapToMixedVec2(x, f)))
21  }
22}
23