summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/chiselTests/experimental/hierarchy/DefinitionSpec.scala10
-rw-r--r--src/test/scala/chiselTests/experimental/hierarchy/Examples.scala5
-rw-r--r--src/test/scala/chiselTests/experimental/hierarchy/InstanceSpec.scala10
3 files changed, 25 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/experimental/hierarchy/DefinitionSpec.scala b/src/test/scala/chiselTests/experimental/hierarchy/DefinitionSpec.scala
index efc81f94..63beb394 100644
--- a/src/test/scala/chiselTests/experimental/hierarchy/DefinitionSpec.scala
+++ b/src/test/scala/chiselTests/experimental/hierarchy/DefinitionSpec.scala
@@ -319,6 +319,16 @@ class DefinitionSpec extends ChiselFunSpec with Utils {
val (_, annos) = getFirrtlAndAnnos(new Top)
annos should contain(MarkAnnotation("~Top|ConcreteHasBlah".mt, "10"))
}
+ it("3.11: should work on eithers") {
+ class Top() extends Module {
+ val i = Definition(new HasEither())
+ i.x.map(x => mark(x, "xright")).left.map(x => mark(x, "xleft"))
+ i.y.map(x => mark(x, "yright")).left.map(x => mark(x, "yleft"))
+ }
+ val (_, annos) = getFirrtlAndAnnos(new Top)
+ annos should contain(MarkAnnotation("~Top|HasEither>x".rt, "xright"))
+ annos should contain(MarkAnnotation("~Top|HasEither>y".rt, "yleft"))
+ }
}
describe("4: toDefinition") {
it("4.0: should work on modules") {
diff --git a/src/test/scala/chiselTests/experimental/hierarchy/Examples.scala b/src/test/scala/chiselTests/experimental/hierarchy/Examples.scala
index de03b74b..5b78b7cc 100644
--- a/src/test/scala/chiselTests/experimental/hierarchy/Examples.scala
+++ b/src/test/scala/chiselTests/experimental/hierarchy/Examples.scala
@@ -195,6 +195,11 @@ object Examples {
@public val x: Option[UInt] = Some(Wire(UInt(3.W)))
}
@instantiable
+ class HasEither() extends Module {
+ @public val x: Either[Bool, UInt] = Right(Wire(UInt(3.W)).suggestName("x"))
+ @public val y: Either[Bool, UInt] = Left(Wire(Bool()).suggestName("y"))
+ }
+ @instantiable
class HasVec() extends Module {
@public val x = VecInit(1.U, 2.U, 3.U)
}
diff --git a/src/test/scala/chiselTests/experimental/hierarchy/InstanceSpec.scala b/src/test/scala/chiselTests/experimental/hierarchy/InstanceSpec.scala
index e6bf04c1..f62d1e49 100644
--- a/src/test/scala/chiselTests/experimental/hierarchy/InstanceSpec.scala
+++ b/src/test/scala/chiselTests/experimental/hierarchy/InstanceSpec.scala
@@ -288,6 +288,16 @@ class InstanceSpec extends ChiselFunSpec with Utils {
val (_, annos) = getFirrtlAndAnnos(new Top)
annos should contain(MarkAnnotation("~Top|Top/i:HasPublicConstructorArgs>x".rt, "10"))
}
+ it("3.11: should work on eithers") {
+ class Top() extends Module {
+ val i = Instance(Definition(new HasEither()))
+ i.x.map(x => mark(x, "xright")).left.map(x => mark(x, "xleft"))
+ i.y.map(x => mark(x, "yright")).left.map(x => mark(x, "yleft"))
+ }
+ val (_, annos) = getFirrtlAndAnnos(new Top)
+ annos should contain(MarkAnnotation("~Top|Top/i:HasEither>x".rt, "xright"))
+ annos should contain(MarkAnnotation("~Top|Top/i:HasEither>y".rt, "yleft"))
+ }
}
describe("4: toInstance") {
it("4.0: should work on modules") {