X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fsoc%2Ffu%2Flogical%2Fbpermd.py;h=83eaf989ca08df99b4f23eba8dc026215a3dbab7;hb=2adbe7711bec6c228e9cb6ffb7c7ef30b1621c8f;hp=dc086faefb70a5f217a6ee3cb894c4553a18371f;hpb=8d0c40fdf6335120e440a6bdba9aa0875239e843;p=soc.git diff --git a/src/soc/fu/logical/bpermd.py b/src/soc/fu/logical/bpermd.py index dc086fae..83eaf989 100644 --- a/src/soc/fu/logical/bpermd.py +++ b/src/soc/fu/logical/bpermd.py @@ -58,15 +58,16 @@ class Bpermd(Elaboratable): def elaborate(self, platform): m = Module() perm = Signal(self.width, reset_less=True) - rb64 = [Signal(1, reset_less=True, name=f"rb64_{i}") for i in range(64)] - for i in range(64): - m.d.comb += rb64[i].eq(self.rb[63-i]) + rb64 = [Signal(1, reset_less=True, name=f"rb64_{i}") + for i in range(self.width)] + for i in range(self.width): + m.d.comb += rb64[i].eq(self.rb[self.width-1-i]) rb64 = Array(rb64) - for i in range(8): + for i in range(self.width//8): index = self.rs[8*i:8*i+8] idx = Signal(8, name=f"idx_{i}", reset_less=True) m.d.comb += idx.eq(index) - with m.If(idx < 64): + with m.If(idx < self.width): m.d.comb += perm[i].eq(rb64[idx]) m.d.comb += self.ra[0:8].eq(perm) return m