Skip to content

Move Handshake and Aux Chain out of Opgroups

Created by: Lynx005F

PR to keep in sync with https://github.com/pulp-platform/cvfpu/pull/10

Summary

Introduces new modules that hold the handshake and aux data and use reg-enable to pass data through individual lanes. This has the following benefits:

  • Removes "play" in between lanes so they can no longer get out of sync due to single event upsets in handshake (original reason for implementing it)
  • Fixes bug where division lanes could get out of sync and output result twice when different lanes take different amount of cycles.
  • Fixes bug where if the unit is stalled and a lower precision FP op follows a higher precision one the lower precision one can "lose" the upper lane results.

In the future this change could also allow operations where Lane 0 is not used e.g. non-vectorial lower precision formats could be calculated on low-precision only units.

Testing

So far I ran the following tests

  • This Version:
    • Mixed Opgroup Test
    • Mixed Vector / Non-vector and Opgroup Test
    • Tests specifically targeting TH32, THMULTI and PULP dividers
  • Pulp Version
    • All of the above
    • Standalone Synthesis to check that Area & Critical Path does not change significantly
    • Full System Synthesis to check that this does not introduce any kind of external Loop

If you want any of my testbenches, please contact Luca Bertaccini

Structure

The commits in this PR have the following structure:

  1. Revert any changes regarding the external reg_enable
  2. Change to aux modules
  3. Re-implement external reg_enable

Notes:

  • This implements the FSM restart on external reg enable for PULPDIVSQRT and THMULTI but not for TH32 - this matches the previous implementation, but it might make more sense to support it everywhere.
  • In fpnew_opgroup_multifmt_slice.sv the signals conv_target_q, result_vec_op and result_is_cpk are not used, meaning the section L490 - L519 (and a few other lines) are superfluous. I modified them as if they were used.

Merge request reports

Loading