X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fnmutil%2Flatch.py;h=7d6a1efe22c881585a626e397590337186f6ef1b;hb=HEAD;hp=813ad64bd7318691560ca8c3740c81b2516307b5;hpb=0bc469afb6c9a7739de1cb7f2add2881c44bf3ff;p=nmutil.git diff --git a/src/nmutil/latch.py b/src/nmutil/latch.py index 813ad64..e2d7541 100644 --- a/src/nmutil/latch.py +++ b/src/nmutil/latch.py @@ -1,3 +1,11 @@ +# SPDX-License-Identifier: LGPL-3-or-later +""" + This work is funded through NLnet under Grant 2019-02-012 + + License: LGPLv3+ + + +""" from nmigen.compat.sim import run_simulation from nmigen.cli import verilog, rtlil from nmigen import Record, Signal, Module, Const, Elaboratable, Mux @@ -38,8 +46,9 @@ def latchregister(m, incoming, outgoing, settrue, name=None): else: reg = Signal.like(incoming, name=name) m.d.comb += outgoing.eq(Mux(settrue, incoming, reg)) - with m.If(settrue): # pass in some kind of expression/condition here + with m.If(settrue): # pass in some kind of expression/condition here m.d.sync += reg.eq(incoming) # latch input into register + return reg def mkname(prefix, suffix): @@ -54,24 +63,27 @@ class SRLatch(Elaboratable): self.llen = llen s_n, r_n = mkname("s", name), mkname("r", name) q_n, qn_n = mkname("q", name), mkname("qn", name) + qint = mkname("qint", name) qlq_n = mkname("qlq", name) self.s = Signal(llen, name=s_n, reset=0) - self.r = Signal(llen, name=r_n, reset=(1<