memtest/LFSR: use module decorators
authorSebastien Bourdeauducq <sebastien@milkymist.org>
Thu, 25 Jul 2013 15:57:17 +0000 (17:57 +0200)
committerSebastien Bourdeauducq <sebastien@milkymist.org>
Thu, 25 Jul 2013 15:57:17 +0000 (17:57 +0200)
milkymist/memtest/__init__.py

index 6cc7256d8592113de151eefefd154409b689fa6f..92522295e068485dfd887333ab0afd3c7866bc72 100644 (file)
@@ -4,10 +4,10 @@ from migen.bank.description import *
 from migen.actorlib import dma_lasmi
 from migen.actorlib.spi import *
 
+@DecorateModule(InsertReset)
+@DecorateModule(InsertCE)
 class LFSR(Module):
        def __init__(self, n_out, n_state=31, taps=[27, 30]):
-               self.ce = Signal()
-               self.reset = Signal()
                self.o = Signal(n_out)
 
                ###
@@ -20,18 +20,15 @@ class LFSR(Module):
                        curval.insert(0, nv)
                        curval.pop()
 
-               self.sync += If(self.reset,
-                               state.eq(0),
-                               self.o.eq(0)
-                       ).Elif(self.ce,
-                               state.eq(Cat(*curval[:n_state])),
-                               self.o.eq(Cat(*curval))
-                       )
+               self.sync += [
+                       state.eq(Cat(*curval[:n_state])),
+                       self.o.eq(Cat(*curval))
+               ]
 
 def _print_lfsr_code():
        from migen.fhdl import verilog
        dut = LFSR(3, 4, [3, 2])
-       print(verilog.convert(dut, ios={dut.ce, dut.o}))
+       print(verilog.convert(dut, ios={dut.ce, dut.reset, dut.o}))
 
 class _LFSRTB(Module):
        def __init__(self, *args, **kwargs):