RecursivePriorityEncoder constructor

RecursivePriorityEncoder(
  1. Logic inp, {
  2. Logic? valid,
  3. String name = 'recursive_priority_encoder',
})

RecursivePriorityEncoder constructor

Implementation

RecursivePriorityEncoder(super.inp,
    {super.valid, super.name = 'recursive_priority_encoder'})
    : super(definitionName: 'RecursivePriorityEncoder_W${inp.width}') {
  final lo = recurseFinder(inp.elements);
  if (valid != null) {
    valid! <= lo.lt(inp.width);
  }
  final sz = output('out').width;
  output('out') <= ((lo.width < sz) ? lo.zeroExtend(sz) : lo.getRange(0, sz));
}