PartialProduct constructor

PartialProduct(
  1. Logic multiplicand,
  2. Logic multiplier,
  3. RadixEncoder radixEncoder, {
  4. bool signedMultiplicand = false,
  5. bool signedMultiplier = false,
  6. Logic? selectSignedMultiplicand,
  7. Logic? selectSignedMultiplier,
  8. PartialProductGeneratorBase genPPG(
    1. Logic multiplicand,
    2. Logic multiplier,
    3. RadixEncoder radixEncoder, {
    4. Logic? selectSignedMultiplicand,
    5. Logic? selectSignedMultiplier,
    6. bool signedMultiplicand,
    7. bool signedMultiplier,
    }) = PartialProductGenerator.new,
  9. String name = 'partial_product',
  10. bool reserveName = false,
  11. bool reserveDefinitionName = false,
  12. String? definitionName,
})

Create a PartialProduct Module which manages a PartialProductArray.

Implementation

PartialProduct(
    Logic multiplicand, Logic multiplier, RadixEncoder radixEncoder,
    {bool signedMultiplicand = false,
    bool signedMultiplier = false,
    Logic? selectSignedMultiplicand,
    Logic? selectSignedMultiplier,
    PartialProductGeneratorBase Function(
            Logic multiplicand, Logic multiplier, RadixEncoder radixEncoder,
            {bool signedMultiplicand,
            bool signedMultiplier,
            Logic? selectSignedMultiplicand,
            Logic? selectSignedMultiplier})
        genPPG = PartialProductGenerator.new,
    super.name = 'partial_product',
    super.reserveName,
    super.reserveDefinitionName,
    String? definitionName})
    : super(
          definitionName: definitionName ??
              'PartialProduct_W${multiplicand.width}x${multiplier.width}'
                  '_${Multiplier.signedMD(signedMultiplicand)}_'
                  '${Multiplier.signedML(signedMultiplier)}') {
  final selectSignedMultiplicandInternal = selectSignedMultiplicand != null
      ? addInput(selectSignedMultiplicand.name, selectSignedMultiplicand)
      : null;
  final selectSignedMultiplierInternal = selectSignedMultiplier != null
      ? addInput(selectSignedMultiplier.name, selectSignedMultiplier)
      : null;

  final localMultiplicand =
      addInput('multiplicand', multiplicand, width: multiplicand.width);
  final localMultiplier =
      addInput('multiplier', multiplier, width: multiplier.width);
  _array = genPPG(localMultiplicand, localMultiplier, radixEncoder,
      signedMultiplicand: signedMultiplicand,
      signedMultiplier: signedMultiplier,
      selectSignedMultiplicand: selectSignedMultiplicandInternal,
      selectSignedMultiplier: selectSignedMultiplierInternal);
}