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(sz
.bit_length()+1)
21 self
.mask
= Signal(sz
)
23 def elaborate(self
, platform
):
26 for i
in range(self
.sz
):
27 with m
.If(i
< self
.shift
):
28 m
.d
.comb
+= self
.mask
[i
].eq(1)