Swizzle constructor

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 = Naming.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();
    });
  }
}