write-enable sram into common wen signal, use that to enable wen from sel
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 26 Jun 2020 17:54:41 +0000 (18:54 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 26 Jun 2020 17:54:41 +0000 (18:54 +0100)
nmigen_soc/wishbone/sram.py

index c518ff9a718bea68f334b853783936b761d7b273..300717209fec80b1698de5a092c49d6e330f6290 100644 (file)
@@ -1,4 +1,4 @@
-from nmigen import Elaboratable, Memory, Module
+from nmigen import Elaboratable, Memory, Module, Signal
 from nmigen.utils import log2_int
 
 from nmigen_soc.wishbone.bus import Interface
@@ -90,9 +90,10 @@ class SRAM(Elaboratable):
             n_bussel = self.bus.sel.shape()[0]
             assert n_wrport == n_bussel, "bus enable count %d " \
                     "must match memory wen count %d" % (n_wrport, n_bussel)
-            for i in range(n_wrport):
-                m.d.comb += wrport.en[i].eq(self.bus.cyc & self.bus.stb &
-                                            self.bus.we & self.bus.sel[i])
+            wen = Signal()
+            m.d.comb += wen.eq(self.bus.cyc & self.bus.stb & self.bus.we)
+            with m.If(wen):
+                m.d.comb += wrport.en.eq(self.bus.sel)
 
         # generate ack
         m.d.sync += self.bus.ack.eq(0)