summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/scala/ChiselTests/BitsOps.scala41
-rw-r--r--src/test/scala/ChiselTests/ChiselSpec.scala12
-rw-r--r--src/test/scala/ChiselTests/GCD.scala50
-rw-r--r--src/test/scala/chiselTests/BitsOps.scala73
-rw-r--r--src/test/scala/chiselTests/ChiselSpec.scala43
-rw-r--r--src/test/scala/chiselTests/GCD.scala82
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) })
+ }
+ }
+}