diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/scala/ChiselTests/BitsOps.scala | 41 | ||||
| -rw-r--r-- | src/test/scala/ChiselTests/ChiselSpec.scala | 12 | ||||
| -rw-r--r-- | src/test/scala/ChiselTests/GCD.scala | 50 | ||||
| -rw-r--r-- | src/test/scala/chiselTests/BitsOps.scala | 73 | ||||
| -rw-r--r-- | src/test/scala/chiselTests/ChiselSpec.scala | 43 | ||||
| -rw-r--r-- | src/test/scala/chiselTests/GCD.scala | 82 |
6 files changed, 198 insertions, 103 deletions
diff --git a/src/test/scala/ChiselTests/BitsOps.scala b/src/test/scala/ChiselTests/BitsOps.scala deleted file mode 100644 index 62f28038..00000000 --- a/src/test/scala/ChiselTests/BitsOps.scala +++ /dev/null @@ -1,41 +0,0 @@ -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) }) - } - } -} diff --git a/src/test/scala/ChiselTests/ChiselSpec.scala b/src/test/scala/ChiselTests/ChiselSpec.scala deleted file mode 100644 index 25ccf947..00000000 --- a/src/test/scala/ChiselTests/ChiselSpec.scala +++ /dev/null @@ -1,12 +0,0 @@ -package Chisel -import org.scalatest._ -import org.scalatest.prop._ -import org.scalacheck._ - -class ChiselSpec extends FlatSpec with PropertyChecks { - - val safeUIntWidth = Gen.choose(1, 31) - val safeUInts = Gen.choose(0, (1 << 30)) - -} - diff --git a/src/test/scala/ChiselTests/GCD.scala b/src/test/scala/ChiselTests/GCD.scala deleted file mode 100644 index 4f861201..00000000 --- a/src/test/scala/ChiselTests/GCD.scala +++ /dev/null @@ -1,50 +0,0 @@ -package Chisel -import Chisel.testers._ -import org.scalatest._ -import org.scalatest.prop._ -import org.scalatest.prop.TableDrivenPropertyChecks._ - -class GCD extends Module { - val io = new Bundle { - val a = Bits(INPUT, 16) - val b = Bits(INPUT, 16) - val e = Bool(INPUT) - val z = Bits(OUTPUT, 16) - val v = Bool(OUTPUT) - } - val x = Reg(Bits(width = 16)) - val y = Reg(Bits(width = 16)) - when (x > y) { x := x -% y } - .otherwise { y := y -% x } - when (io.e) { x := io.a; y := io.b } - io.z := x - io.v := y === Bits(0) -} - -class GCDSpec extends ChiselSpec { - - class GCDTester(a: Int, b: Int, z: Int) extends BasicTester { - val dut = Module(new GCD) - val first = Reg(init=Bool(true)) - dut.io.a := UInt(a) - dut.io.b := UInt(b) - dut.io.e := first - when(first) { first := Bool(false) } - when(dut.io.v) { - io.done := Bool(true) - io.error := (dut.io.z != UInt(z)).toUInt - } - } - - val gcds = Table( - ("a", "b", "z"), // First tuple defines column names - ( 64, 48, 16), // Subsequent tuples define the data - ( 12, 9, 3), - ( 48, 64, 12)) - - "GCD" should "return the correct result" in { - forAll (gcds) { (a: Int, b: Int, z: Int) => - assert(TesterDriver.execute{ new GCDTester(a, b, z) }) - } - } -} diff --git a/src/test/scala/chiselTests/BitsOps.scala b/src/test/scala/chiselTests/BitsOps.scala new file mode 100644 index 00000000..0c9128c4 --- /dev/null +++ b/src/test/scala/chiselTests/BitsOps.scala @@ -0,0 +1,73 @@ +/* + Copyright (c) 2011-2015 The Regents of the University of + California (Regents). All Rights Reserved. Redistribution and use in + source and binary forms, with or without modification, are permitted + provided that the following conditions are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + two paragraphs of disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + two paragraphs of disclaimer in the documentation and/or other materials + provided with the distribution. + * Neither the name of the Regents nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. + + IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, + SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, + ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF + REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF + ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION + TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR + MODIFICATIONS. +*/ + +package chiselTests + +import 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) }) + } + } +} diff --git a/src/test/scala/chiselTests/ChiselSpec.scala b/src/test/scala/chiselTests/ChiselSpec.scala new file mode 100644 index 00000000..299eb9af --- /dev/null +++ b/src/test/scala/chiselTests/ChiselSpec.scala @@ -0,0 +1,43 @@ +/* + Copyright (c) 2011-2015 The Regents of the University of + California (Regents). All Rights Reserved. Redistribution and use in + source and binary forms, with or without modification, are permitted + provided that the following conditions are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + two paragraphs of disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + two paragraphs of disclaimer in the documentation and/or other materials + provided with the distribution. + * Neither the name of the Regents nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. + + IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, + SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, + ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF + REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF + ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION + TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR + MODIFICATIONS. +*/ + +package chiselTests + +import org.scalatest._ +import org.scalatest.prop._ +import org.scalacheck._ + +class ChiselSpec extends FlatSpec with PropertyChecks { + + val safeUIntWidth = Gen.choose(1, 31) + val safeUInts = Gen.choose(0, (1 << 30)) + +} + diff --git a/src/test/scala/chiselTests/GCD.scala b/src/test/scala/chiselTests/GCD.scala new file mode 100644 index 00000000..7a612bc7 --- /dev/null +++ b/src/test/scala/chiselTests/GCD.scala @@ -0,0 +1,82 @@ +/* + Copyright (c) 2011-2015 The Regents of the University of + California (Regents). All Rights Reserved. Redistribution and use in + source and binary forms, with or without modification, are permitted + provided that the following conditions are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + two paragraphs of disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + two paragraphs of disclaimer in the documentation and/or other materials + provided with the distribution. + * Neither the name of the Regents nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. + + IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, + SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, + ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF + REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF + ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION + TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR + MODIFICATIONS. +*/ + +package chiselTests + +import Chisel._ +import Chisel.testers._ +import org.scalatest._ +import org.scalatest.prop._ +import org.scalatest.prop.TableDrivenPropertyChecks._ + +class GCD extends Module { + val io = new Bundle { + val a = Bits(INPUT, 16) + val b = Bits(INPUT, 16) + val e = Bool(INPUT) + val z = Bits(OUTPUT, 16) + val v = Bool(OUTPUT) + } + val x = Reg(Bits(width = 16)) + val y = Reg(Bits(width = 16)) + when (x > y) { x := x -% y } + .otherwise { y := y -% x } + when (io.e) { x := io.a; y := io.b } + io.z := x + io.v := y === Bits(0) +} + +class GCDSpec extends ChiselSpec { + + class GCDTester(a: Int, b: Int, z: Int) extends BasicTester { + val dut = Module(new GCD) + val first = Reg(init=Bool(true)) + dut.io.a := UInt(a) + dut.io.b := UInt(b) + dut.io.e := first + when(first) { first := Bool(false) } + when(dut.io.v) { + io.done := Bool(true) + io.error := (dut.io.z != UInt(z)).toUInt + } + } + + val gcds = Table( + ("a", "b", "z"), // First tuple defines column names + ( 64, 48, 16), // Subsequent tuples define the data + ( 12, 9, 3), + ( 48, 64, 12)) + + "GCD" should "return the correct result" in { + forAll (gcds) { (a: Int, b: Int, z: Int) => + assert(TesterDriver.execute{ new GCDTester(a, b, z) }) + } + } +} |
