summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/BitsOps.scala
diff options
context:
space:
mode:
authorJim Lawson2015-08-13 13:13:37 -0700
committerJim Lawson2015-08-13 13:13:37 -0700
commit29132b9eddb12a6cbd0391be8c1fd6ee5b02838c (patch)
tree9228b273a99f3452a34157ca125fc8abd04147d8 /src/test/scala/chiselTests/BitsOps.scala
parent0b4dc5457433659e52a8c36f043435762be94309 (diff)
rename package (lowercase)
Diffstat (limited to 'src/test/scala/chiselTests/BitsOps.scala')
-rw-r--r--src/test/scala/chiselTests/BitsOps.scala41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/BitsOps.scala b/src/test/scala/chiselTests/BitsOps.scala
new file mode 100644
index 00000000..62f28038
--- /dev/null
+++ b/src/test/scala/chiselTests/BitsOps.scala
@@ -0,0 +1,41 @@
+package Chisel
+import Chisel.testers._
+import org.scalatest._
+import org.scalatest.prop._
+import org.scalatest.prop.GeneratorDrivenPropertyChecks._
+
+class BitwiseOps(w: Int) extends Module {
+ val io = new Bundle {
+ val a = Bits(INPUT, w)
+ val b = Bits(INPUT, w)
+ val not = Bits(OUTPUT, w)
+ val and = Bits(OUTPUT, w)
+ val or = Bits(OUTPUT, w)
+ val xor = Bits(OUTPUT, w)
+ }
+ io.not := ~io.a
+ io.and := io.a & io.b
+ io.or := io.a | io.b
+ io.xor := io.a ^ io.b
+}
+
+class BitwiseOpsSpec extends ChiselSpec {
+
+ class BitwiseOpsTester(w: Int, a: Int, b: Int) extends BasicTester {
+ val mask = (1 << w)-1;
+ val dut = Module(new BitwiseOps(w))
+ io.done := Bool(true)
+ dut.io.a := UInt(a)
+ dut.io.b := UInt(b)
+ when(dut.io.not != UInt(mask & ~a)) { io.error := UInt(1) }
+ when(dut.io.and != UInt(mask & (a & b))) { io.error := UInt(2) }
+ when(dut.io.or != UInt(mask & (a | b))) { io.error := UInt(3) }
+ when(dut.io.xor != UInt(mask & (a ^ b))) { io.error := UInt(4) }
+ }
+
+ "BitwiseOps" should "return the correct result" in {
+ forAll(safeUInts, safeUInts) { (a: Int, b: Int) =>
+ assert(TesterDriver.execute{ new BitwiseOpsTester(32, a, b) })
+ }
+ }
+}