Visible to Intel only — GUID: ryw1685981803873
Ixiasoft
Visible to Intel only — GUID: ryw1685981803873
Ixiasoft
3.3.2. 1565895: TPIU generates spurious data when stopped
Description
This erratum affects the following components:
- Trace Port Interface Unit (TPIU)
- css600_tpiu
- Component Revisions: r0p0, r1p0
The TPIU generates a tracectl output for compatibility with legacy Trace Port Analyzers (TPAs). The tracectl pin is not required when the TPIU operates in continuous mode, which should be supported by all modern TPAs. Arm recommends that the tracectl pin is not exported off chip, thus saving an IO pin.
As a result of this erratum, the TPIU outputs h0001 on tracedata[] when stopped. If the TPA does not see the tracectl pin it interprets the static tracedata[] value as further trace packets.
Conditions
- The TPIU trace port interface to the TPA does not include the tracectl pin and is programmed to operate in Continuous mode.
- The TPIU is programmed to stop, and enters the Stopped state.
Impact
When the TPIU stops the TPA will receive the expected trace data followed by a continuous stream of spurious trace packets. When CSPSR is configured for 1 bit, tracedata[0] is static 1, which is interpreted as ATID=h7F, a reserved value. When CSPSR is configured for N=2..32 bits, tracedata[N-1:0] is h0001.
This can be interpreted as new trace packets, starting with a static or changing trace ID, followed by static or changing trace data, followed by a static or changing auxiliary byte.
- When CSPSR is configured for 1 bit: Spurious trace data with ATID=h7F (reserved value)
- When CSPSR is configured for 2 bits: Spurious trace data with ATID=h00 and ATID=h2A
- When CSPSR is configured for 3 bits: Spurious trace data with ATID=h00 and ATID=h24
- When CSPSR is configured for 4 bits: Spurious trace data with ATID=h00 and ATID=h08
- When CSPSR is configured for 5 bits: Spurious trace data with ATID=h00 and ATID=h10
- When CSPSR is configured for 6 bits: Spurious trace data with ATID=h00 and ATID=h20
- When CSPSR is configured for 7 bits: Spurious trace data with ATID=h00 and ATID=h40
- When CSPSR is configured for 8 to 32 bits: Spurious trace data with ATID=h00
Workaround
When a trigger would be used to cause the TPIU to stop, debug tools need to program the TPIU:
- To not stop, by ensuring FFCR.StopTrig=0 and FFCR.StopFl=0.
- To generate a flush on a trigger event (FFCR.FOnTrig=1),
- To generate a trigger on flush completion (FFCR.TrigFl=1).
The debug tools need to detect the trigger generated on the trace port and then decide to stop trace capture. The debug tool might need to wait for an amount of time or data to ensure enough data has been captured from the TPIU.
If a trigger packet was inserted on ATB, the debug tool has to deal with two triggers on the trace port. In such a scenario, on detecting the first trigger the debug tool should wait for an amount of time or data to ensure enough data has been captured from the TPIU, although this might not guarantee all flushed data is captured.
When any other condition would be used to stop the TPIU, the debug tool might need to manually stop capture of trace.
Category
Category B