Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for multi-packed DSP58s for VVUs #907

Closed
wants to merge 250 commits into from

Conversation

mmrahorovic
Copy link
Contributor

@mmrahorovic mmrahorovic commented Oct 13, 2023

Note: this PR depends on


  1. Adds support for utilizing multi-packed DSP58s for the HLS-based VVAU 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 DSP58, which depends on the targeted board and quantization.

Functionalities to be added for the VVU

  • rtllib: RTL implementation for the DSP58-based VVU
    • See mvu_vvu_8sx9_dsp58
  • Custom-op for the new RTL component: see vectorvectoractivation_rtl.py
    • Code geneneration
    • IP-stitching
    • Resource estimations
    • Cycle estimations
  • Transformation to instantiate the newly created custom-op: see specialize_to_rtl_layers.py. Note, this is part of PR Support for packed MV(A)Us #794.

Tests

  • Test for the VVU custom-op & transformation: test_fpgadataflow_vvau_rtl

Outstanding bugs & features

preusser and others added 30 commits November 17, 2022 09:20
…sion, no HLS support for this class required).

The following functions have been removed when compared to the original Thresholding_Batch class:
    - get_weightstream_width_padded()
        needed for cppsim
    - get_ap_int_max_w()
        needed for cppsim
    - get_template_param_values()
        needed for cppsim
    - get_hls_compatible_threshold_tensor()
        needed for cppsim/hlslib
    - get_verilog_top_module_intf_names()
        already have TOP verilog module interface names I think
    - get_op_and_param_counts()
        not used anywhere
    - ipgen_extra_directives()
        needed for cppsim/hlslib

Signed-off-by: Fionn O'Donohoe <[email protected]>
…reshold_binary_search class

Signed-off-by: Fionn O'Donohoe <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants