summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/utils.scala13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/main/scala/utils.scala b/src/main/scala/utils.scala
index 0fb275d6..a86c81e8 100644
--- a/src/main/scala/utils.scala
+++ b/src/main/scala/utils.scala
@@ -398,3 +398,16 @@ object Queue
q.io.deq
}
}
+
+object PriorityEncoderOH
+{
+ private def encode(in: Seq[Bool]): UInt = {
+ val outs = Vec.tabulate(in.size)(i => UInt(BigInt(1) << i, in.size))
+ PriorityMux(in :+ Bool(true), outs :+ UInt(0, in.size))
+ }
+ def apply(in: Seq[Bool]): Vec[Bool] = {
+ val enc = encode(in)
+ Vec.tabulate(in.size)(enc(_))
+ }
+ def apply(in: Bits): UInt = encode((0 until in.getWidth).map(i => in(i)))
+}