tiny code-shuffle on GatedBitReverse
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 26 Feb 2020 17:31:01 +0000 (17:31 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 26 Feb 2020 17:31:01 +0000 (17:31 +0000)
src/ieee754/part_shift/bitrev.py

index 47523b101433687210ad3720e373a0ef0f05c257..7f1c1bbb6b892fcefe9aa3486b2bcc4b252f66b2 100644 (file)
@@ -1,20 +1,26 @@
 from nmigen import Signal, Module, Elaboratable, Cat, Mux
 
 class GatedBitReverse(Elaboratable):
+
     def __init__(self, width):
         self.width = width
         self.data = Signal(width, reset_less=True)
         self.reverse_en = Signal(reset_less=True)
         self.output = Signal(width, reset_less=True)
+
     def elaborate(self, platform):
         m = Module()
         comb = m.d.comb
         width = self.width
 
+        l, r = [], []
         for i in range(width):
-            with m.If(self.reverse_en):
-                comb += self.output[i].eq(self.data[width-i-1])
-            with m.Else():
-                comb += self.output[i].eq(self.data[i])
+            l.append(self.data[i])
+            r.append(self.data[width-i-1])
+
+        with m.If(self.reverse_en):
+            comb += self.output.eq(Cat(*r))
+        with m.Else():
+            comb += self.output.eq(Cat(*l))
 
         return m