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
12 def masked(m_out
, m_in
, mask
):
13 return (m_out
& ~mask
) |
(m_in
& mask
)
16 class Mask(Elaboratable
):
17 def __init__(self
, sz
):
19 self
.shift
= Signal(log2_int(sz
, False)+1)
20 self
.mask
= Signal(sz
)
22 def elaborate(self
, platform
):
25 for i
in range(self
.sz
):
26 with m
.If(self
.shift
> i
):
27 m
.d
.comb
+= self
.mask
[i
].eq(1)