Prototypical implementation of an app custom interface pass-through approach #173
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.
Overview
As discussed in past dev meetings, MLE, more specifically Oskar, provides a prototype for the proposed way to pass custom interfaces through the mqnic hierarchies into the APP.
If this prototypical implementation is the way to go, we are happy to apply this approach to the existing template and dma_bench apps, as well as to all the modules in the hierarchy and the implementations (i.e. adapting the makefiles, etc.), and create a separate pull request or rewrite the branch this PR is based on.
The idea is to use verilog defines provided by a customizable verilog header file to add
The existence of the header file is mandatory, but it would be provided alongside the future template app then.
Implementation
To prove that the approach is actually feasible, we created an additional app and ZCU102 based design implementing this app.
We also copied the relevant core files to be enriched with the macros. To test if everything works as intended and at least the Vivado flow is not affected by the changes, we “redirect” the AXI-L slave interface of mqnic_app (s_axil_app_ctrl_*)back up through the hierarchy, where it is then used to control the board LEDs on the top level.
Commit b1bb6dd duplicates the template app infrastructure for the prototype app.
Commit 3737311 adds a copy of infrastructure modules.
The next commit assembles the project together and adapts the APP_ID, see commit f6b8b9f.
The next step adds the verilog macros to the various places, see commit 7132f66.
The last commit establishes the demo functionality by adding an AXI-L register to fpga_core and connecting the custom interface within the mqnic_app_block. See commit fdd62c6.
Next Steps
Does this implementation reflect the idea of passing custom interfaces through the hierarchies to the app? Should we modify the branch this PR is based on to then provide a pullable version?