ParallelPrefixIncr constructor
Increment constructor.
Implementation
ParallelPrefixIncr(Logic inp,
{ParallelPrefix Function(
List<Logic> inps, Logic Function(Logic term1, Logic term2) op)
ppGen = KoggeStone.new,
super.name = 'parallel_prefix_incr',
super.reserveName,
super.reserveDefinitionName,
String? definitionName})
: super(
definitionName:
definitionName ?? 'ParallelPrefixIncr_W${inp.width}') {
inp = addInput('inp', inp, width: inp.width);
final u = ppGen(inp.elements, (lhs, rhs) => rhs & lhs);
addOutput('out', width: inp.width) <=
(List<Logic>.generate(
inp.width,
(i) =>
((i == 0) ? ~inp[i] : inp[i] ^ u.val[i - 1]).named('o_$i'))
.rswizzle());
}