ColumnCompressor constructor

ColumnCompressor(
  1. PartialProductArray pp, {
  2. Logic? clk,
  3. Logic? reset,
  4. Logic? enable,
})

Initialize a ColumnCompressor for a set of partial products

If clk is not null then a set of flops are used to latch the output after compression (see extractRow). reset and enable are optional inputs to control these flops when clk is provided. If clk is null, the ColumnCompressor is built as a combinational tree of compressors.

Implementation

ColumnCompressor(this.pp, {this.clk, this.reset, this.enable}) {
  columns = List.generate(pp.maxWidth(), (i) => ColumnQueue());

  for (var row = 0; row < pp.rows; row++) {
    for (var col = 0; col < pp.partialProducts[row].length; col++) {
      final trueColumn = pp.rowShift[row] + col;
      final term = CompressTerm(CompressTermType.pp,
          pp.partialProducts[row][col], [], row, trueColumn);
      columns[trueColumn].add(term);
    }
  }
}