System debug and cross-trigger
Observe the processor and programmable logic in one debug experiment using ILA, VIO, breakpoints and cross-triggers.
Chargement…
Observe the processor and programmable logic in one debug experiment using ILA, VIO, breakpoints and cross-triggers.
The debugger shows software state; ILA captures PL signals. For a PS/PL failure, find one event visible from both sides.
Connect ILA probes or mark signals before implementation. Width and depth consume resources, including BRAM. Its clock must suit captured signals; an asynchronous bus can produce an inconsistent snapshot.
VIO reads or drives small internal signals such as test modes. Check that a debug override does not conflict with another control source.
This fragment writes a counter into AXI GPIO:
for (count = 0U; count < 256U; count++) {
XGpio_DiscreteWrite(&gpio, 1, count);
if (count == 0x85U) {
xil_printf("Special count reached\r\n");
}
}0x85 is a marker in the code and captured AXI transaction. A nearby breakpoint shows variables subject to binary optimization. A variable may be removed or kept only in a register.
| Trigger | Result | Use |
|---|---|---|
| Processor breakpoint | ILA capture | See transactions before a C line |
| ILA condition | Processor halt | Inspect software when hardware detects a fault |
| ILA A | ILA B | Correlate two hardware domains |
Cross-trigger transfers events between the processor and PL debug resources, or between ILAs. Configure trigger and acknowledgement signals in the design and tools.
It correlates observations rather than making events exactly simultaneous. Distribution, capture, and stopping introduce latency; the processor may continue before the halt takes effect.
Start with a hypothesis: a write of 0x85 to a register, an AXI error response, or an unacknowledged interrupt. Write address and data handshakes are independent and need not occur in the same cycle.
Broad conditions fill capture too early; overly strict conditions never trigger. Add criteria progressively.
Capture before and after the event to see cause and consequence. Long sequences may need fewer probes, greater depth, or several captures.
State the invariant, identify software and hardware representations, then capture a correct case before the failure. Compare addresses, data, AXI responses, and driver state. Both views then support the same diagnosis.
UG908 documents ILA cross-trigger and debug probes.
Test your knowledge - Chapter quiz