RecursiveModulePriorityEncoder constructor

RecursiveModulePriorityEncoder(
  1. Logic inp, {
  2. bool generateValid = false,
  3. String name = 'recursive_module_priority_encoder',
  4. bool reserveName = false,
  5. bool reserveDefinitionName = false,
  6. String? definitionName,
})

RecursiveModulePriorityEncoder constructor builds a tree of RecursiveModulePriorityEncoderNodes to compute the position of the trailing 1 from the LSB of inp.

Implementation

RecursiveModulePriorityEncoder(
  super.inp, {
  super.generateValid,
  super.name = 'recursive_module_priority_encoder',
  super.reserveName,
  super.reserveDefinitionName,
  String? definitionName,
}) : super(
          definitionName: definitionName ??
              'RecursiveModulePriorityEncoder_W${inp.width}') {
  final topNode = RecursiveModulePriorityEncoderNode(inp);
  final lo = topNode.ret;
  if (valid != null) {
    valid! <= topNode.ret.lt(inp.width);
  }
  final sz = output('out').width;
  out <= ((lo.width < sz) ? lo.zeroExtend(sz) : lo.getRange(0, sz));
}