Post clock merge: test_dma fails #222
Labels
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: M-Labs/artiq-zynq#222
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
test_full_stack
fails with:Happens due to changes in mainline ARTIQ. As DMA tests work there I assume it's due to some little incompatibility in Zynq DMA module.
Running a vcdiff tool against previous iteration pinpoints first difference:
(status at 010 points to RTIO underflow already, as a consequence I assume)
I found the culprit.
Turns out to be not much of a deal, but with DMA being important, I could not let it go by.
The DMA operation did not fit within
minimum_coarse_timestamp
in RTIO SED.This is the line that caused the issue:
ad000609ce (diff-5e06a98d471b8294533a49a8a654b41349ff57e21557a0cb21e5a66d554eec15L69)
There used to be
coarse_ts
andcoarse_ts_sys
, the latter used here. By looking at vcd waveforms I found that they differed by 4.The things about
coarse_ts_sys
was that it essentially wascoarse_ts
from RTIO domain that was transferred to the SYS domain. The transfer took 4 cycles in total (twosync
s + MultiReg).Essentially at any given moment
coarse_ts_sys = coarse_ts - 4
.Thus minimum_coarse_delay should be coarse_ts + 12, rather than 16. And after I decreased that value, the test would pass.
I will make a PR for mainline ARTIQ fixing that tiny ommission after I verify that no tests in ARTIQ are broken after that change either.