summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests
diff options
context:
space:
mode:
authormergify[bot]2022-08-12 20:04:33 +0000
committerGitHub2022-08-12 20:04:33 +0000
commit7bad3d2ec316f24f3da79d1dfef19e128cfe8bf5 (patch)
tree67337939dbb98f8a6c127560156213c3c2420515 /src/test/scala/chiselTests
parentdb18ae16a26dab5231ca83172c88b9735a977582 (diff)
Add ability to suppress enum cast warnings (#2671) (#2674)
(cherry picked from commit 1ad820f7f549eddcd7188b737f59a240e48a7f0a) Co-authored-by: Zachary Yedidia <zyedidia@gmail.com>
Diffstat (limited to 'src/test/scala/chiselTests')
-rw-r--r--src/test/scala/chiselTests/StrongEnum.scala41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/StrongEnum.scala b/src/test/scala/chiselTests/StrongEnum.scala
index 44ed77f9..5b1b13fd 100644
--- a/src/test/scala/chiselTests/StrongEnum.scala
+++ b/src/test/scala/chiselTests/StrongEnum.scala
@@ -5,6 +5,7 @@ package chiselTests
import chisel3._
import chisel3.experimental.ChiselEnum
import chisel3.experimental.AffectsChiselPrefix
+import chisel3.experimental.suppressEnumCastWarning
import chisel3.internal.firrtl.UnknownWidth
import chisel3.stage.{ChiselGeneratorAnnotation, ChiselStage}
import chisel3.util._
@@ -481,6 +482,46 @@ class StrongEnumSpec extends ChiselFlatSpec with Utils {
(log should not).include("warn")
}
+ it should "suppress warning using suppressEnumCastWarning" in {
+ object TestEnum extends ChiselEnum {
+ val e0, e1, e2 = Value
+ }
+
+ class MyModule extends Module {
+ val in = IO(Input(UInt(2.W)))
+ val out = IO(Output(TestEnum()))
+ suppressEnumCastWarning {
+ val res = TestEnum(in)
+ out := res
+ }
+ }
+ val (log, _) = grabLog(ChiselStage.elaborate(new MyModule))
+ (log should not).include("warn")
+ }
+
+ it should "suppress exactly one warning using suppressEnumCastWarning" in {
+ object TestEnum1 extends ChiselEnum {
+ val e0, e1, e2 = Value
+ }
+ object TestEnum2 extends ChiselEnum {
+ val e0, e1, e2 = Value
+ }
+
+ class MyModule extends Module {
+ val in = IO(Input(UInt(2.W)))
+ val out1 = IO(Output(TestEnum1()))
+ val out2 = IO(Output(TestEnum2()))
+ suppressEnumCastWarning {
+ out1 := TestEnum1(in)
+ }
+ out2 := TestEnum2(in)
+ }
+ val (log, _) = grabLog(ChiselStage.elaborate(new MyModule))
+ log should include("warn")
+ log should include("TestEnum2") // not suppressed
+ (log should not).include("TestEnum1") // suppressed
+ }
+
"Casting a UInt to an Enum with .safe" should "NOT warn" in {
object MyEnum extends ChiselEnum {
val e0, e1, e2 = Value