summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests
diff options
context:
space:
mode:
authorMegan Wachs2022-01-11 10:10:20 -0800
committerGitHub2022-01-11 18:10:20 +0000
commit747d16311bdf185d2e98e452b14cb5d8ccca004c (patch)
tree4f73b2e875107153d324b9062ec0bf955c2ddb18 /src/test/scala/chiselTests
parent2b48fd15a7711dcd44334fbbc538667a102a581a (diff)
Lookupable: add Either version (#2335)
* Add Lookupable for Either * Lookupable: enhance the @public/@instantiable error message to include traits and Eithers Co-authored-by: Jack Koenig <koenig@sifive.com>
Diffstat (limited to 'src/test/scala/chiselTests')
-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") {