Xilinx / finn

Dataflow compiler for QNN inference on FPGAs
https://xilinx.github.io/finn
BSD 3-Clause "New" or "Revised" License
681 stars 218 forks source link

Refactoring of RTL MVAU #995

Closed mmrahorovic closed 3 months ago

mmrahorovic commented 4 months ago

(PR combines the previously closed PRs: PR #976 , PR #975 and PR #794)

Adds support for utilizing multi-packed DSP48s and DSP58s for the 'MatrixVectorActivation' layer. For weights and activations that are between 4- and 8-bits wide (with the exception of 9-bits for activations for DSP58), the custom layer packs 2, 3 or 4 elements on the input datapath of the DSP to achieve multiple MACs per cycle per DSP48/DSP58 (either 2, 3 or 4 depending on bit-width and board).

Important: note that the commit-hash of PyVerilator is set to point to ce0a08c (https://github.com/maltanar/pyverilator/tree/refactor/drive_rising_edge) to ensure the RTL simulation (for MVU) tests pass.


Functionalities to be added for the MVU

Tests

Outstanding bugs & features