clean up CLMulAdd.elaborate
authorJacob Lifshay <programmerjake@gmail.com>
Fri, 8 Apr 2022 22:41:22 +0000 (15:41 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Fri, 8 Apr 2022 22:41:22 +0000 (15:41 -0700)
src/nmigen_gf/hdl/clmul.py

index 103fc08d68c5aca21c2cc12946203ae0c130419e..ad4317316b3a5a3e5655e908e7f9e13564918373 100644 (file)
@@ -63,15 +63,15 @@ class CLMulAdd(Elaboratable):
     def elaborate(self, platform):
         m = Module()
 
-        parts = self.terms
+        all_terms = self.terms.copy()  # create copy to avoid modifying self
         for shift in range(self.factor_width):
             part_prod = Signal(self.output.width, name=f"part_prod_{shift}")
-            # TODO comment (nice ASCII diagram in docstring then refer to it?)
+            # construct partial product term
             mask = Repl(self.factor2[shift], self.factor_width)
             m.d.comb += part_prod.eq((self.factor1 & mask) << shift)
-            parts.append(part_prod)
+            all_terms.append(part_prod)
 
-        # TODO comment
-        output = treereduce(parts, operator.xor)
+        # merge all terms together
+        output = treereduce(all_terms, operator.xor)
         m.d.comb += self.output.eq(output)
         return m