add Mask class
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 17 Aug 2020 11:10:51 +0000 (12:10 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 17 Aug 2020 11:10:51 +0000 (12:10 +0100)
src/nmutil/mask.py [new file with mode: 0644]

diff --git a/src/nmutil/mask.py b/src/nmutil/mask.py
new file mode 100644 (file)
index 0000000..a75d7e3
--- /dev/null
@@ -0,0 +1,19 @@
+from nmigen import Module, Signal, Elaboratable
+from nmigen.utils import log2_int
+
+
+class Mask(Elaboratable):
+    def __init__(self, sz):
+        self.sz = sz
+        self.shift = Signal(log2_int(sz, False))
+        self.mask = Signal(sz)
+
+    def elaborate(self, platform):
+        m = Module()
+
+        for i in range(self.sz):
+            with m.If(self.shift > i):
+                m.d.comb += self.mask[i].eq(1)
+
+        return m
+