diff options
| author | Jiuyang Liu | 2021-05-06 16:16:52 +0000 |
|---|---|---|
| committer | Jiuyang Liu | 2021-06-16 10:32:04 +0800 |
| commit | 819e806664da117172b6d46aa1adf83d39042d48 (patch) | |
| tree | 26b60db1ff7563672e03482dd2befa7c667e3ec6 /src | |
| parent | f3318e52e4338dc558de8a900f93bc5757223642 (diff) | |
implement abstract Minimizer as a general API.
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/chisel3/util/experimental/decode/Minimizer.scala | 29 |
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 |
