+ def eq(self, rhs):
+ return self.eq_from(rhs.reg_partition_points, rhs.inputs, rhs.part_ops)
+
+
+class FinalReduceData:
+
+ def __init__(self, ppoints, output_width, n_parts):
+ self.part_ops = [Signal(2, name=f"part_ops_{i}")
+ for i in range(n_parts)]
+ self.output = Signal(output_width)
+ self.reg_partition_points = ppoints.like()
+
+ def eq_from(self, reg_partition_points, output, part_ops):
+ return [self.reg_partition_points.eq(reg_partition_points)] + \
+ [self.output.eq(output)] + \
+ [self.part_ops[i].eq(part_ops[i])
+ for i in range(len(self.part_ops))]
+
+ def eq(self, rhs):
+ return self.eq_from(rhs.reg_partition_points, rhs.output, rhs.part_ops)
+