summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/MultiIOModule.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/chiselTests/MultiIOModule.scala')
-rw-r--r--src/test/scala/chiselTests/MultiIOModule.scala56
1 files changed, 0 insertions, 56 deletions
diff --git a/src/test/scala/chiselTests/MultiIOModule.scala b/src/test/scala/chiselTests/MultiIOModule.scala
deleted file mode 100644
index c65d8fc4..00000000
--- a/src/test/scala/chiselTests/MultiIOModule.scala
+++ /dev/null
@@ -1,56 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-package chiselTests
-
-import chisel3._
-import chisel3.testers.BasicTester
-
-class MultiIOPlusOne extends Module {
- val in = IO(Input(UInt(32.W)))
- val out = IO(Output(UInt(32.W)))
-
- out := in + 1.asUInt
-}
-
-class MultiIOTester extends BasicTester {
- val plusModule = Module(new MultiIOPlusOne)
- plusModule.in := 42.U
- assert(plusModule.out === 43.U)
- stop()
-}
-
-// Demonstrate multiple IOs with inheritance where the IO is assigned to internally
-trait LiteralOutputTrait extends Module {
- val myLiteralIO = IO(Output(UInt(32.W)))
- myLiteralIO := 2.U
-}
-
-// Demonstrate multiple IOs with inheritance where the IO is not assigned
-// (and must be assigned by what extends this trait).
-trait MultiIOTrait extends Module {
- val myTraitIO = IO(Output(UInt(32.W)))
-}
-
-// Composition of the two above traits, example of IO composition directly using multiple top-level
-// IOs rather than indirectly by constraining the type of the single .io field.
-class ComposedMultiIOModule extends Module with LiteralOutputTrait with MultiIOTrait {
- val topModuleIO = IO(Input(UInt(32.W)))
- myTraitIO := topModuleIO
-}
-
-class ComposedMultiIOTester extends BasicTester {
- val composedModule = Module(new ComposedMultiIOModule)
- composedModule.topModuleIO := 42.U
- assert(composedModule.myTraitIO === 42.U)
- assert(composedModule.myLiteralIO === 2.U)
- stop()
-}
-
-class MultiIOSpec extends ChiselFlatSpec {
- "Multiple IOs in MultiIOModule" should "work" in {
- assertTesterPasses({ new MultiIOTester })
- }
- "Composed MultiIO Modules" should "work" in {
- assertTesterPasses({ new ComposedMultiIOTester })
- }
-}