Arbiter constructor

Arbiter(
  1. List<Logic> requests, {
  2. String name = 'arbiter',
  3. bool reserveName = false,
  4. bool reserveDefinitionName = false,
  5. String? definitionName,
})

Constructs an arbiter where each element in requests is a one-bit signal requesting a corresponding bit from grants.

Implementation

Arbiter(List<Logic> requests,
    {super.name = 'arbiter',
    super.reserveName,
    super.reserveDefinitionName,
    String? definitionName})
    : super(definitionName: definitionName ?? 'Arbiter_W${requests.length}') {
  for (var i = 0; i < requests.length; i++) {
    if (requests[i].width != 1) {
      throw RohdHclException('Each request must be 1 bit,'
          ' but found ${requests[i]} at index $i.');
    }

    _requests.add(addInput('request_$i', requests[i]));
    _grants.add(addOutput('grant_$i'));
  }
}