kasli-soc & zc706: Fix GTX Clock Path during Initialization #280
No reviewers
Labels
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: M-Labs/artiq-zynq#280
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "linuswck/artiq-zynq:gtx_clock_path_fix"
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?
Description of Changes
This PR fixes two issues that is caused by wrong GTX TX clock path at initialization.
Tests Done
Kasli-Soc
The test setup for Kasli-Soc is similar to the related PR in the artiq repo. For all DRTIO roles(standalone, master, satellite), the phase of system clock is deterministic relative the outside analog clock source.
To check if Issue #246 is resolved, the additional delay added in commit
dc08c382a2
is rolled back. Then, Kasli-Soc Satellite is compiled and booted on SD card. The system starts up normally without the panic message "System Clock does not switch" in multiple restarts.ZC706
The following variants are compiled and checked if the system can startup correctly.
Related PR
Artiq Repo: https://github.com/m-labs/artiq/pull/2278
Related Issue
Closes #246
Action required
Do you think we could roll back the delay for both runtime and satman with these changes? Hard to say if it actually fixes that issue, as it was not affecting all Kasli-SoC boards, have you tried rolling back the delay without introducing the fix?
I think we can roll back the delay.
The root cause of problem is in indeed due to wrong GTX Clock Path is set before Init. Before the fix, the determination of whether the clock is switched is done through the monitoring of the clk sw fsm. Only if the GTX TX initialization has been completed, the clock switch FSM starts. If GTX TX's clock path is not configured correctly in the first place, this can explain why it takes longer time to init or GTX TX fails to init.
Will test rolling back the delay without introducing the fix later.