RippleCarryAdder constructor

RippleCarryAdder(
  1. Logic a,
  2. Logic b, {
  3. Logic? carryIn,
  4. String name = 'ripple_carry_adder_carry_in',
  5. bool reserveName = false,
  6. bool reserveDefinitionName = false,
  7. String? definitionName,
})

Constructs an n-bit adder based on inputs List of inputs.

Implementation

RippleCarryAdder(super.a, super.b,
    {super.carryIn,
    super.name = 'ripple_carry_adder_carry_in',
    super.reserveName,
    super.reserveDefinitionName,
    String? definitionName})
    : super(
          definitionName: definitionName ?? 'RippleCarryAdder_W${a.width}') {
  Logic? carry;
  final sumList = <Logic>[];
  for (var i = 0; i < a.width; i++) {
    final fullAdder =
        FullAdder(a[i], b[i], carryIn: carry ?? (carryIn ?? Const(0)));

    carry = fullAdder.sum[1];
    sumList.add(fullAdder.sum[0]);
  }

  sumList.add(carry!);
  sum <= sumList.rswizzle();
}