2 This work is funded through NLnet under Grant 2019-02-012
9 from nmigen
import Module
, Signal
, Elaboratable
10 from nmigen
.utils
import log2_int
13 def masked(m_out
, m_in
, mask
):
14 return (m_out
& ~mask
) |
(m_in
& mask
)
17 class Mask(Elaboratable
):
18 def __init__(self
, sz
):
20 self
.shift
= Signal(log2_int(sz
, False)+1)
21 self
.mask
= Signal(sz
)
23 def elaborate(self
, platform
):
26 for i
in range(self
.sz
):
27 with m
.If(self
.shift
> i
):
28 m
.d
.comb
+= self
.mask
[i
].eq(1)