summaryrefslogtreecommitdiff
path: root/src/main/scala/chisel3/util/experimental/decode
diff options
context:
space:
mode:
authorJiuyang Liu2021-05-06 16:16:52 +0000
committerJiuyang Liu2021-06-16 10:32:04 +0800
commit819e806664da117172b6d46aa1adf83d39042d48 (patch)
tree26b60db1ff7563672e03482dd2befa7c667e3ec6 /src/main/scala/chisel3/util/experimental/decode
parentf3318e52e4338dc558de8a900f93bc5757223642 (diff)
implement abstract Minimizer as a general API.
Diffstat (limited to 'src/main/scala/chisel3/util/experimental/decode')
-rw-r--r--src/main/scala/chisel3/util/experimental/decode/Minimizer.scala29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/scala/chisel3/util/experimental/decode/Minimizer.scala b/src/main/scala/chisel3/util/experimental/decode/Minimizer.scala
new file mode 100644
index 00000000..86847710
--- /dev/null
+++ b/src/main/scala/chisel3/util/experimental/decode/Minimizer.scala
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: Apache-2.0
+
+package chisel3.util.experimental.decode
+
+abstract class Minimizer {
+ /** Minimize a multi-input multi-output logic function given by the truth table `table`, with function output values
+ * on unspecified inputs treated as `default`, and return a minimized PLA-like representation of the function.
+ *
+ * Each bit of `table[]._1` encodes one 1-bit input variable of the logic function, and each bit of `default` and
+ * `table[]._2` represents one 1-bit output value of the function.
+ *
+ * @param table Truth table, can have don't cares in both inputs and outputs, specified as [(inputs, outputs), ...]
+ * @return Minimized truth table, [(inputs, outputs), ...]
+ *
+ * @example {{{
+ * minimize(BitPat("b?"), Seq(
+ * (BitPat("b000"), BitPat("b0")),
+ * // (BitPat("b001"), BitPat("b?")), // same as default, can be omitted
+ * // (BitPat("b010"), BitPat("b?")), // same as default, can be omitted
+ * (BitPat("b011"), BitPat("b0")),
+ * (BitPat("b100"), BitPat("b1")),
+ * (BitPat("b101"), BitPat("b1")),
+ * (BitPat("b110"), BitPat("b0")),
+ * (BitPat("b111"), BitPat("b1")),
+ * ))
+ * }}}
+ */
+ def minimize(table: TruthTable): TruthTable
+} \ No newline at end of file