Collect the clock and crossing evidence for symptoms 2, 5, 6 and 10. Collect the evidence a reviewer would need beyond the frequencies.
What to notice. clk_per bypasses the PLL; requests and responses travel in opposite directions; crossing mechanisms require separate evidence.
The crystal bypass feeding clk_per at 24 MHz.
Write all ten crossing rows with source, receiver, width and mechanism. Compare the observed implementation with an independent requirement. Find and inject a fault that reproduces the relevant symptom, then state the structural evidence that rejects it.
The clock and crossing tables in The NanoSoC Tour: crystal, PLL ratio, dividers, and the ten crossings X1 to X10.
The three clock domains (CPU, system, peripheral) and which blocks sit in each.
Symptoms 2, 5, 6 and 10 in the symptom table.
Deliverable. A clock table (source, divider, frequency for each of the three clocks) and a ten-row crossing table (ID, source clock, receiver clock, width, mechanism).
Pass criterion. Each frequency derives from the crystal and the PLL ratio, the ten IDs are distinct, every row names a mechanism that suits its width, and the check rejects a table with one mechanism blank or mismatched.
The clock table with the arithmetic for each frequency.
The crossing table, plus the symptoms you think depend on a crossing and why.
The structural evidence (not a simulation run) that would show a crossing is safe.
Keep your diagnosis in your own report. After the stage checks, compare it with Solutions and run the provided injection checks.