1 # SPDX-License-Identifier: LGPL-3-or-later
3 This work is funded through NLnet under Grant 2019-02-012
10 from nmigen
import Module
, Signal
, Elaboratable
11 from nmigen
.utils
import log2_int
14 def masked(m_out
, m_in
, mask
):
15 return (m_out
& ~mask
) |
(m_in
& mask
)
18 class Mask(Elaboratable
):
19 def __init__(self
, sz
):
21 self
.shift
= Signal(sz
.bit_length()+1)
22 self
.mask
= Signal(sz
)
24 def elaborate(self
, platform
):
27 for i
in range(self
.sz
):
28 with m
.If(i
< self
.shift
):
29 m
.d
.comb
+= self
.mask
[i
].eq(1)