PartialProduct constructor
- Logic multiplicand,
- Logic multiplier,
- RadixEncoder radixEncoder, {
- bool signedMultiplicand = false,
- bool signedMultiplier = false,
- Logic? selectSignedMultiplicand,
- Logic? selectSignedMultiplier,
- PartialProductGeneratorBase genPPG(
- Logic multiplicand,
- Logic multiplier,
- RadixEncoder radixEncoder, {
- Logic? selectSignedMultiplicand,
- Logic? selectSignedMultiplier,
- bool signedMultiplicand,
- bool signedMultiplier,
- String name = 'partial_product',
- bool reserveName = false,
- bool reserveDefinitionName = false,
- 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);
}