-
Notifications
You must be signed in to change notification settings - Fork 202
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
Implement Burst Memory Access for RTIO DMA & Analyzer #2592
base: master
Are you sure you want to change the base?
Conversation
with an additional FIFO to regulate data flow
Built on a DRTIO master without any peripherals. From timing report:
It appears the timing of
Given the RAM has a 128-bits wide interface, and the maximum RTIO output data width being 32 (due to RTIO log channel), the Manually pass a smaller |
Likely caused by BRAM under-utilization when testing with changes in #2647. No tight setup and hold time pins are reported anymore. |
CTI can be inferred by the last signal.
ARTIQ Pull Request
Description of Changes
The PR changes one-by-one memory access from DMA and Analyzer to burst memory read/write. Availability of burst access is indicated by the corresponding streaming FIFO control signals within DMA and the analyzer.
Performance
Using the
DMASaturate
script in #946 on local I/O on standalone/master variant:Before: 490mu
After: 65mu
It is on par with Zynq variants' performance reported in #946.
The analyzer memory buffer is expanded to observe the RTIO slack (in machine unit).
The end-to-beginning transition of DMA playbacks is indicated by a sudden drop of RTIO slack. RTIO slack gradually recovers to the maximum value (SED FIFO depth * DMA events period / DMA events per period).
Test
Passes unittests in
artiq.test
withtest_dma_playback_time
re-enabled.TODOs:
Related Issue
Closes #946
See MiSoC 151, MiSoC 150.
Type of Changes
Steps (Choose relevant, delete irrelevant before submitting)
All Pull Requests
Code Changes
flake8
to check code style (follow PEP-8 style).flake8
has issues with parsing Migen/gateware code, ignore as necessary.Git Logistics
git rebase --interactive
). Merge/squash/fixup commits that just fix or amend previous commits. Remove unintended changes & cleanup. See tutorial.git show
). Format:Licensing
See copyright & licensing for more info.
ARTIQ files that do not contain a license header are copyrighted by M-Labs Limited and are licensed under LGPLv3+.