From 5e9be183f98d32164332fa0548fe80686f50c851 Mon Sep 17 00:00:00 2001 From: Henry Cook Date: Fri, 14 Aug 2015 00:53:57 -0700 Subject: added MulLookup and Tbl tests --- src/test/scala/chiselTests/MulLookup.scala | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/test/scala/chiselTests/MulLookup.scala (limited to 'src/test/scala/chiselTests/MulLookup.scala') diff --git a/src/test/scala/chiselTests/MulLookup.scala b/src/test/scala/chiselTests/MulLookup.scala new file mode 100644 index 00000000..1fe77a93 --- /dev/null +++ b/src/test/scala/chiselTests/MulLookup.scala @@ -0,0 +1,38 @@ +package chiselTests + +import Chisel._ +import org.scalatest._ +import org.scalatest.prop._ +import Chisel.testers.BasicTester + +class MulLookup(val w: Int) extends Module { + val io = new Bundle { + val x = UInt(INPUT, w) + val y = UInt(INPUT, w) + val z = UInt(OUTPUT, 2 * w) + } + val tbl = Vec( + for { + i <- 0 until 1 << w + j <- 0 until 1 << w + } yield UInt(i * j, 2 * w) + ) + io.z := tbl(((io.x << w) | io.y)) +} + +class MulLookupSpec extends ChiselPropSpec { + + class MulLookupTester(w: Int, x: Int, y: Int) extends BasicTester { + val dut = Module(new MulLookup(w)) + dut.io.x := UInt(x) + dut.io.y := UInt(y) + io.done := Bool(true) + io.error := dut.io.z != UInt(x * y) + } + + property("Mul lookup table should return the correct result") { + forAll(smallPosInts, smallPosInts) { (x: Int, y: Int) => + assert(execute{ new MulLookupTester(3, x, y) }) + } + } +} -- cgit v1.2.3