From 8ef8a90c823cd7edb4d85c8099e9a912adbe4ea4 Mon Sep 17 00:00:00 2001 From: Michael Nolan Date: Mon, 2 Mar 2020 10:40:28 -0500 Subject: [PATCH] Add recursive decoding --- src/decoder/power_decoder.py | 5 ++++- src/decoder/test/test_power_decoder.py | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/decoder/power_decoder.py b/src/decoder/power_decoder.py index f0d44876..148e1c37 100644 --- a/src/decoder/power_decoder.py +++ b/src/decoder/power_decoder.py @@ -83,6 +83,8 @@ class PowerDecoder(Elaboratable): self.op = PowerOp() self.suffix = suffix + if suffix[1] - suffix[0] >= width: + self.suffix = None self.width = width def suffix_mask(self): @@ -116,7 +118,8 @@ class PowerDecoder(Elaboratable): for key, row in opcodes.items(): subdecoder = PowerDecoder(width=self.width - opc_in.width, opcodes=row, - opint=False) + opint=False, + suffix=self.suffix) setattr(m.submodules, "dec%d" % key, subdecoder) comb += subdecoder.opcode_in.eq(self.opcode_in[self.suffix[1]:]) with m.Case(key): diff --git a/src/decoder/test/test_power_decoder.py b/src/decoder/test/test_power_decoder.py index b1851c91..c0a82863 100644 --- a/src/decoder/test/test_power_decoder.py +++ b/src/decoder/test/test_power_decoder.py @@ -105,5 +105,6 @@ class DecoderTestCase(FHDLTestCase): self.run_test(32, "extra.csv", False) self.generate_ilang(32, "extra.csv", False) + if __name__ == "__main__": unittest.main() -- 2.30.2