summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/util/experimental/TruthTableSpec.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/chiselTests/util/experimental/TruthTableSpec.scala')
-rw-r--r--src/test/scala/chiselTests/util/experimental/TruthTableSpec.scala126
1 files changed, 0 insertions, 126 deletions
diff --git a/src/test/scala/chiselTests/util/experimental/TruthTableSpec.scala b/src/test/scala/chiselTests/util/experimental/TruthTableSpec.scala
deleted file mode 100644
index b5dcee6b..00000000
--- a/src/test/scala/chiselTests/util/experimental/TruthTableSpec.scala
+++ /dev/null
@@ -1,126 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-package chiselTests.util.experimental
-
-import chisel3._
-import chisel3.util.BitPat
-import chisel3.util.experimental.decode.{decoder, 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 {
- val table2 = TruthTable.fromString(str)
- assert(table2 === table)
- assert(table2.hashCode === table.hashCode)
- }
- "TruthTable" should "merge same key" in {
- assert(
- TruthTable.fromString(
- """001100->??1
- |001100->1??
- |???
- |""".stripMargin
- ) == TruthTable.fromString(
- """001100->1?1
- |???
- |""".stripMargin
- )
- )
- }
- "TruthTable" should "crash when merging 0 and 1" in {
- intercept[IllegalArgumentException] {
- TruthTable.fromString(
- """0->0
- |0->1
- |???
- |""".stripMargin
- )
- }
- }
- "TruthTable" should "be reproducible" in {
- class Foo extends Module {
-
- val io = IO(new Bundle {
- val in = Input(UInt(4.W))
- val out = Output(UInt(16.W))
- })
-
- val table = TruthTable(
- (0 until 16).map { i =>
- BitPat(i.U(4.W)) -> BitPat((1 << i).U(16.W))
- },
- BitPat.dontCare(16)
- )
-
- io.out := decoder.qmc(io.in, table)
- }
- assert(chisel3.stage.ChiselStage.emitChirrtl(new Foo) == chisel3.stage.ChiselStage.emitChirrtl(new Foo))
- }
- "TruthTable" should "accept unknown input width" in {
- val t = TruthTable(
- Seq(
- BitPat(0.U) -> BitPat.dontCare(1),
- BitPat(1.U) -> BitPat.dontCare(1),
- BitPat(2.U) -> BitPat.dontCare(1),
- BitPat(3.U) -> BitPat.dontCare(1),
- BitPat(4.U) -> BitPat.dontCare(1),
- BitPat(5.U) -> BitPat.dontCare(1),
- BitPat(6.U) -> BitPat.dontCare(1),
- BitPat(7.U) -> BitPat.dontCare(1)
- ),
- BitPat.N(1)
- )
- assert(t.toString contains "000->?")
- assert(t.toString contains "001->?")
- assert(t.toString contains "010->?")
- assert(t.toString contains "011->?")
- assert(t.toString contains "100->?")
- assert(t.toString contains "101->?")
- assert(t.toString contains "110->?")
- assert(t.toString contains "111->?")
- assert(t.toString contains " 0")
- }
-
- "Using TruthTable.fromEspressoOutput" should "merge rows on conflict" in {
- val mapping = List(
- (BitPat("b110"), BitPat("b001")),
- (BitPat("b111"), BitPat("b001")),
- (BitPat("b111"), BitPat("b010")),
- (BitPat("b111"), BitPat("b100"))
- )
-
- assert(
- TruthTable.fromEspressoOutput(mapping, BitPat("b?")) ==
- TruthTable.fromString("""110->001
- |111->111
- |?
- |""".stripMargin)
- )
- }
-}