add SPDX-License-Identifier comments rather than using License:
[nmutil.git] / src / nmutil / mask.py
1 # SPDX-License-Identifier: LGPL-3-or-later
2 """
3 This work is funded through NLnet under Grant 2019-02-012
4
5 License: LGPLv3+
6
7
8 """
9
10 from nmigen import Module, Signal, Elaboratable
11 from nmigen.utils import log2_int
12
13
14 def masked(m_out, m_in, mask):
15 return (m_out & ~mask) | (m_in & mask)
16
17
18 class Mask(Elaboratable):
19 def __init__(self, sz):
20 self.sz = sz
21 self.shift = Signal(sz.bit_length()+1)
22 self.mask = Signal(sz)
23
24 def elaborate(self, platform):
25 m = Module()
26
27 for i in range(self.sz):
28 with m.If(i < self.shift):
29 m.d.comb += self.mask[i].eq(1)
30
31 return m