+ return m
+
+ mask = self._reg_partition_points.as_mask(len(self.output))
+ m.d.comb += self.part_mask.eq(mask)
+
+ # add and link the intermediate term modules
+ for i, (iidx, adder_i) in enumerate(self.adders):
+ setattr(m.submodules, f"adder_{i}", adder_i)
+
+ m.d.comb += adder_i.in0.eq(self._resized_inputs[iidx])
+ m.d.comb += adder_i.in1.eq(self._resized_inputs[iidx + 1])
+ m.d.comb += adder_i.in2.eq(self._resized_inputs[iidx + 2])
+ m.d.comb += adder_i.mask.eq(self.part_mask)
+
+ return m
+
+ def create_next_terms(self):