Add DDR-based MLO support for Zynq devices#1607
Draft
klassen9 wants to merge 16 commits into
Draft
Conversation
Modify build Zynq for DDR MLO
modified: finn-rtllib/cdma/cdma_u/axi_dma_wr_u.sv
Fix weight dat file generation for fetch weights
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Extends FINN's MLO flow (loop-based weight offloading via FINNLoop) to store weights and intermediate frames in DDR rather than only HBM, enabling MLO on Zynq-class boards without HBM. Memory placement is selectable via build config, with address offsets generated automatically and threaded through the RTL, Zynq build, and PYNQ driver. The existing HBM path is unchanged by default.
• Build config: new mlo_weight_mem option to select between HBM and DDR
• Address handling: new AssignMemoryOffset transform assigns offsets to weight and intermediate-frame regions in a shared DDR layout. Offset and base-address signals added to fetch_weights/loop_control, plus a new address_config RTL module.
• Zynq build & driver: make_zynq_proj/stitched IP wired up for DDR base addresses. PYNQ driver extended for MLO.
• RTL fixes: byte-aligned intermediate_frames padding, mux prioritizes intermediate frames to fix a batch-size bug, corrected fetch-weight sizing and .dat generation.
• Testing: New end-to-end DDR MLO test plus extended FINNLoop tests covering additional MLO edge cases.
TODO:
Misc: