diff options
| author | Jim Lawson | 2015-08-13 13:13:37 -0700 |
|---|---|---|
| committer | Jim Lawson | 2015-08-13 13:13:37 -0700 |
| commit | 29132b9eddb12a6cbd0391be8c1fd6ee5b02838c (patch) | |
| tree | 9228b273a99f3452a34157ca125fc8abd04147d8 /src/test/scala/chiselTests/BitsOps.scala | |
| parent | 0b4dc5457433659e52a8c36f043435762be94309 (diff) | |
rename package (lowercase)
Diffstat (limited to 'src/test/scala/chiselTests/BitsOps.scala')
| -rw-r--r-- | src/test/scala/chiselTests/BitsOps.scala | 41 |
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) }) + } + } +} |
