summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/ParameterizedModule.scala
diff options
context:
space:
mode:
authorducky2015-12-17 11:07:13 -0800
committerducky2016-01-27 12:16:38 -0800
commit93621cd06d239b44b0c523add535788d096042d6 (patch)
tree6c242ea9a8fb45cd0f7ea237ee30debcf4322238 /src/test/scala/chiselTests/ParameterizedModule.scala
parent9017ec37d0eb7bb3bd10ed7863c0706ff1020cd9 (diff)
Add unit test for module deduplication
Diffstat (limited to 'src/test/scala/chiselTests/ParameterizedModule.scala')
-rw-r--r--src/test/scala/chiselTests/ParameterizedModule.scala41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/ParameterizedModule.scala b/src/test/scala/chiselTests/ParameterizedModule.scala
new file mode 100644
index 00000000..f356cebd
--- /dev/null
+++ b/src/test/scala/chiselTests/ParameterizedModule.scala
@@ -0,0 +1,41 @@
+// See LICENSE for license details.
+
+package chiselTests
+
+import org.scalatest._
+import Chisel._
+import Chisel.testers.BasicTester
+
+class ParameterizedModule(invert: Boolean) extends Module {
+ val io = new Bundle {
+ val in = new Bool(INPUT)
+ val out = new Bool(OUTPUT)
+ }
+ if (invert) {
+ io.out := !io.in
+ } else {
+ io.out := io.in
+ }
+}
+
+/** A simple test to check Module deduplication doesn't affect correctness (two
+ * modules with the same name but different contents aren't aliased). Doesn't
+ * check that deduplication actually happens, though.
+ */
+class ParameterizedModuleTester() extends BasicTester {
+ val invert = Module(new ParameterizedModule(true))
+ val noninvert = Module(new ParameterizedModule(false))
+
+ invert.io.in := Bool(true)
+ noninvert.io.in := Bool(true)
+ assert(invert.io.out === Bool(false))
+ assert(noninvert.io.out === Bool(true))
+
+ stop()
+}
+
+class ParameterizedModuleSpec extends ChiselFlatSpec {
+ "Different parameterized modules" should "have different behavior" in {
+ assert(execute{ new ParameterizedModuleTester() })
+ }
+}