diff --git a/src/main/scala/rocket/ICache.scala b/src/main/scala/rocket/ICache.scala index 8e03e1fe..f5abe304 100644 --- a/src/main/scala/rocket/ICache.scala +++ b/src/main/scala/rocket/ICache.scala @@ -109,8 +109,7 @@ class ICacheModule(outer: ICache) extends LazyModuleImp(outer) val io = IO(new ICacheBundle(outer)) val (tl_out, edge_out) = outer.masterNode.out(0) // Option.unzip does not exist :-( - val tl_in = outer.slaveNode.in.headOption.map(_._1) - val edge_in = outer.slaveNode.in.headOption.map(_._2) + val (tl_in, edge_in) = outer.slaveNode.in.headOption.unzip val tECC = cacheParams.tagECC val dECC = cacheParams.dataECC diff --git a/src/main/scala/util/package.scala b/src/main/scala/util/package.scala index 9661201c..37b06da1 100644 --- a/src/main/scala/util/package.scala +++ b/src/main/scala/util/package.scala @@ -6,6 +6,10 @@ import Chisel._ import scala.math.min package object util { + implicit class UnzippableOption[S, T](val x: Option[(S, T)]) { + def unzip = (x.map(_._1), x.map(_._2)) + } + implicit class UIntIsOneOf(val x: UInt) extends AnyVal { def isOneOf(s: Seq[UInt]): Bool = s.map(x === _).reduce(_||_)