Fix to interleaving interrupts with floating-point operations #7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR resolves the observed issue with interleaving interrupts using floating-point registers and with different priority levels, as reported in #5.
The size of the array holding the floating point registers was extended by a factor of 16, as many as available PL-PS interrupts on an Ultrascale+ platform, following information from table 13-1 from the Ultrascale+ technical manual.
I intended to add a payload allowing future users to run a test on their hardware to make sure it is resolved. However, I didn't find a way to do so without making assumptions about the FPGA IP cores existing on the given device. Therefore, unless @mcejp has an idea how to achieve that, I propose to merge it as-is. I have tested it on an Ultrascale+ of the CERN's FGC4 project, where we have over 8 available interrupt sources in the FPGA, and they all were successfully interleaving in my manual tests. I will add this to the FGC4 code repository.