1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// 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
}
|