diff options
| author | Schuyler Eldridge | 2020-06-16 11:59:15 -0400 |
|---|---|---|
| committer | Schuyler Eldridge | 2020-06-22 20:00:10 -0400 |
| commit | 6e03f63d525aac0bdf4a59b6fe66a0b4d5a3a25a (patch) | |
| tree | 482481bcfe93ea5dfcece80772ce1957fb68c74c /src/test/scala/chiselTests/BundleLiteralSpec.scala | |
| parent | cc4fa583690292d690804144fe92427f0c9f5fdf (diff) | |
Use ChiselStage in Tests
This migrates the tests to Chisel 3.4/FIRRTL 1.4. This primarily
involves removing usages of deprecated methods including:
- Remove usages of Driver
- Use ChiselStage methods instead of BackendCompilationUtilities
methods
- Use Dependency API for custom transforms
- Use extractCause to unpack StackError
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src/test/scala/chiselTests/BundleLiteralSpec.scala')
| -rw-r--r-- | src/test/scala/chiselTests/BundleLiteralSpec.scala | 76 |
1 files changed, 56 insertions, 20 deletions
diff --git a/src/test/scala/chiselTests/BundleLiteralSpec.scala b/src/test/scala/chiselTests/BundleLiteralSpec.scala index eea22e11..baf1022e 100644 --- a/src/test/scala/chiselTests/BundleLiteralSpec.scala +++ b/src/test/scala/chiselTests/BundleLiteralSpec.scala @@ -3,12 +3,13 @@ package chiselTests import chisel3._ +import chisel3.stage.ChiselStage import chisel3.testers.BasicTester import chisel3.experimental.BundleLiterals._ import chisel3.experimental.BundleLiteralException import chisel3.experimental.ChiselEnum -class BundleLiteralSpec extends ChiselFlatSpec { +class BundleLiteralSpec extends ChiselFlatSpec with Utils { object MyEnum extends ChiselEnum { val sA, sB = Value } @@ -134,49 +135,84 @@ class BundleLiteralSpec extends ChiselFlatSpec { } "bundle literals with bad field specifiers" should "fail" in { - val exc = intercept[BundleLiteralException] { elaborate { new RawModule { - val bundle = new MyBundle - bundle.Lit(x => bundle.a -> 0.U) // DONT DO THIS, this gets past a syntax error to exercise the failure - }}} + val exc = intercept[BundleLiteralException] { + extractCause[BundleLiteralException] { + ChiselStage.elaborate { + new RawModule { + val bundle = new MyBundle + bundle.Lit(x => bundle.a -> 0.U) // DONT DO THIS, this gets past a syntax error to exercise the failure + } + } + } + } exc.getMessage should include ("not a field") } "bundle literals with duplicate fields" should "fail" in { - val exc = intercept[BundleLiteralException] { elaborate { new RawModule { - (new MyBundle).Lit(_.a -> 0.U, _.a -> 0.U) - }}} + val exc = intercept[BundleLiteralException] { + extractCause[BundleLiteralException] { + ChiselStage.elaborate { + new RawModule { + (new MyBundle).Lit(_.a -> 0.U, _.a -> 0.U) + } + } + } + } exc.getMessage should include ("duplicate") exc.getMessage should include (".a") } "bundle literals with non-literal values" should "fail" in { - val exc = intercept[BundleLiteralException] { elaborate { new RawModule { - (new MyBundle).Lit(_.a -> UInt()) - }}} + val exc = intercept[BundleLiteralException] { + extractCause[BundleLiteralException] { + ChiselStage.elaborate { new RawModule { + (new MyBundle).Lit(_.a -> UInt()) + } + } + } + } exc.getMessage should include ("non-literal value") exc.getMessage should include (".a") } "bundle literals with non-type-equivalent element fields" should "fail" in { - val exc = intercept[BundleLiteralException] { elaborate { new RawModule { - (new MyBundle).Lit(_.a -> true.B) - }}} + val exc = intercept[BundleLiteralException] { + extractCause[BundleLiteralException] { + ChiselStage.elaborate { + new RawModule { + (new MyBundle).Lit(_.a -> true.B) + } + } + } + } exc.getMessage should include ("non-type-equivalent value") exc.getMessage should include (".a") } "bundle literals with non-type-equivalent sub-bundles" should "fail" in { - val exc = intercept[BundleLiteralException] { elaborate { new RawModule { - (new MyOuterBundle).Lit(_.b -> (new MyBundle).Lit(_.a -> 0.U)) - }}} + val exc = intercept[BundleLiteralException] { + extractCause[BundleLiteralException] { + ChiselStage.elaborate { + new RawModule { + (new MyOuterBundle).Lit(_.b -> (new MyBundle).Lit(_.a -> 0.U)) + } + } + } + } exc.getMessage should include ("non-type-equivalent value") exc.getMessage should include (".b") } "bundle literals with non-type-equivalent enum element fields" should "fail" in { - val exc = intercept[BundleLiteralException] { elaborate { new RawModule { - (new MyBundle).Lit(_.c -> MyEnumB.sB) - }}} + val exc = intercept[BundleLiteralException] { + extractCause[BundleLiteralException] { + ChiselStage.elaborate { + new RawModule { + (new MyBundle).Lit(_.c -> MyEnumB.sB) + } + } + } + } exc.getMessage should include ("non-type-equivalent enum value") exc.getMessage should include (".c") } |
