25fd1429d94921b9453de863a92914fd8fa8027b
1 from nmigen
import Module
, Signal
, Elaboratable
2 from nmigen
.utils
import log2_int
4 def masked(m_out
, m_in
, mask
):
5 return (m_out
& ~mask
) |
(m_in
& mask
)
8 class Mask(Elaboratable
):
9 def __init__(self
, sz
):
11 self
.shift
= Signal(log2_int(sz
, False)+1)
12 self
.mask
= Signal(sz
)
14 def elaborate(self
, platform
):
17 for i
in range(self
.sz
):
18 with m
.If(self
.shift
> i
):
19 m
.d
.comb
+= self
.mask
[i
].eq(1)