Swizzle constructor Null safety

Swizzle(
  1. List<Logic> signals,
  2. {String name = 'swizzle'}
)

Constructs a Module which concatenates signals into one large out.

Implementation

Swizzle(List<Logic> signals, {super.name = 'swizzle'}) {
  var idx = 0;
  var outputWidth = 0;
  for (final signal in signals.reversed) {
    //reverse so bit 0 is the last thing in the input list
    final inputName = Module.unpreferredName('in${idx++}');
    _swizzleInputs.add(
      addInput(inputName, signal, width: signal.width),
    );
    outputWidth += signal.width;
  }
  addOutput(_out, width: outputWidth);

  _execute(); // for initial values
  for (final swizzleInput in _swizzleInputs) {
    swizzleInput.glitch.listen((args) {
      _execute();
    });
  }
}