blob: 743a3cd89d8a9a924ebd62f7b6a8e566be20d9f7 (
plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
// SPDX-License-Identifier: Apache-2.0
package chiselTests.util.experimental
import chisel3.util.BitPat
import chisel3.util.experimental.decode.TruthTable
import org.scalatest.flatspec.AnyFlatSpec
class TruthTableSpec extends AnyFlatSpec {
val table = TruthTable(
Map(
// BitPat("b000") -> BitPat("b0"),
BitPat("b001") -> BitPat("b?"),
BitPat("b010") -> BitPat("b?"),
// BitPat("b011") -> BitPat("b0"),
BitPat("b100") -> BitPat("b1"),
BitPat("b101") -> BitPat("b1"),
// BitPat("b110") -> BitPat("b0"),
BitPat("b111") -> BitPat("b1")
),
BitPat("b0")
)
val str = """001->?
|010->?
|100->1
|101->1
|111->1
|0""".stripMargin
"TruthTable" should "serialize" in {
assert(table.toString contains "001->?")
assert(table.toString contains "010->?")
assert(table.toString contains "100->1")
assert(table.toString contains "111->1")
assert(table.toString contains " 0")
}
"TruthTable" should "deserialize" in {
assert(TruthTable(str) == table)
}
"TruthTable" should "merge same key" in {
assert(
TruthTable(
"""001100->??1
|001100->1??
|???
|""".stripMargin
) == TruthTable(
"""001100->1?1
|???
|""".stripMargin
)
)
}
"TruthTable" should "crash when merging 0 and 1" in {
intercept[IllegalArgumentException] {
TruthTable(
"""0->0
|0->1
|???
|""".stripMargin
)
}
}
}
|