diff options
| author | mergify[bot] | 2022-10-06 21:26:30 +0000 |
|---|---|---|
| committer | GitHub | 2022-10-06 21:26:30 +0000 |
| commit | b72cc42f4f23906db0f201b1d9543a64accbc2ec (patch) | |
| tree | d602090543769f613bfc3ae292c17a6de78c0c37 /src | |
| parent | cb1bb67194ccf4c17d76f5ad2e8b1e8818c252b8 (diff) | |
Update toPrintable for Enums (#2707) (#2763)
(cherry picked from commit 0ff99ca8d573e3487ef496a21c95d962689c3cba)
Co-authored-by: Aditya Naik <91489422+adkian-sifive@users.noreply.github.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/scala/chiselTests/StrongEnum.scala | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/StrongEnum.scala b/src/test/scala/chiselTests/StrongEnum.scala index 5b1b13fd..cee1777e 100644 --- a/src/test/scala/chiselTests/StrongEnum.scala +++ b/src/test/scala/chiselTests/StrongEnum.scala @@ -164,6 +164,39 @@ class StrongEnumFSM extends Module { } } +object Opcode extends ChiselEnum { + val load = Value(0x03.U) + val imm = Value(0x13.U) + val auipc = Value(0x17.U) + val store = Value(0x23.U) + val litValues = List(0x03.U, 0x13.U, 0x17.U, 0x23.U) +} + +class PrintableExecutionTest extends BasicTester { + val (count, done) = Counter(true.B, 6) + val w = WireDefault(Opcode.load) + when(count === 0.U) { + w := Opcode.load + } + when(count === 1.U) { + w := Opcode.imm + } + when(count === 2.U) { + w := Opcode.auipc + } + when(count === 3.U) { + w := Opcode.store + } + when(count === 4.U) { // invalid state + val invalidWire = WireInit(UInt(6.W), 0.U) + w := Opcode.safe(invalidWire)._1 + } + when(done) { + stop() + } + printf(cf"'$w'\n") +} + class CastToUIntTester extends BasicTester { for ((enum, lit) <- EnumExample.all.zip(EnumExample.litValues)) { val mod = Module(new CastToUInt) @@ -555,6 +588,15 @@ class StrongEnumSpec extends ChiselFlatSpec with Utils { it should "correctly check if the enumeration is one of the values in a given sequence" in { assertTesterPasses(new IsOneOfTester) } + + it should "work with Printables" in { + val (log, _, _) = grabStdOutErr(assertTesterPasses { new PrintableExecutionTest }) + log should include("load") + log should include("imm") + log should include("auipc") + log should include("store") + log should include("?????") + } } class StrongEnumAnnotator extends Module { |
