summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/Decoder.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/chiselTests/Decoder.scala')
-rw-r--r--src/test/scala/chiselTests/Decoder.scala59
1 files changed, 0 insertions, 59 deletions
diff --git a/src/test/scala/chiselTests/Decoder.scala b/src/test/scala/chiselTests/Decoder.scala
deleted file mode 100644
index 0c644b49..00000000
--- a/src/test/scala/chiselTests/Decoder.scala
+++ /dev/null
@@ -1,59 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-package chiselTests
-
-import org.scalacheck._
-
-import chisel3._
-import chisel3.testers.BasicTester
-import chisel3.util._
-
-class Decoder(bitpats: List[String]) extends Module {
- val io = IO(new Bundle {
- val inst = Input(UInt(32.W))
- val matched = Output(Bool())
- })
- io.matched := VecInit(bitpats.map(BitPat(_) === io.inst)).reduce(_ || _)
-}
-
-class DecoderTester(pairs: List[(String, String)]) extends BasicTester {
- val (insts, bitpats) = pairs.unzip
- val (cnt, wrap) = Counter(true.B, pairs.size)
- val dut = Module(new Decoder(bitpats))
- dut.io.inst := VecInit(insts.map(_.asUInt))(cnt)
- when(!dut.io.matched) {
- assert(cnt === 0.U)
- stop()
- }
- when(wrap) {
- stop()
- }
-}
-
-class DecoderSpec extends ChiselPropSpec {
-
- // Use a single Int to make both a specific instruction and a BitPat that will match it
- val bitpatPair = for (seed <- Arbitrary.arbitrary[Int]) yield {
- val rnd = new scala.util.Random(seed)
- val bs = seed.toBinaryString
- val bp = bs.map(if (rnd.nextBoolean) _ else "?")
-
- // The following randomly throws in white space and underscores which are legal and ignored.
- val bpp = bp.map { a =>
- if (rnd.nextBoolean) {
- a
- } else {
- a + (if (rnd.nextBoolean) "_" else " ")
- }
- }.mkString
-
- ("b" + bs, "b" + bpp)
- }
- private def nPairs(n: Int) = Gen.containerOfN[List, (String, String)](n, bitpatPair)
-
- property("BitPat wildcards should be usable in decoding") {
- forAll(nPairs(4)) { (pairs: List[(String, String)]) =>
- assertTesterPasses { new DecoderTester(pairs) }
- }
- }
-}