Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 11/27/2024
Public
Document Table of Contents

3.5.3.12.4. Embedded Trace Macrocell

The embedded trace macrocell (ETM) unit is a module that performs real-time instruction flow tracing that is based on the ETMv4 architecture.
The Cortex* -A76 ETM trace unit implements the following:
  • 8-byte instruction address size
  • 4-byte virtual machine ID size
  • 4-byte context ID size
  • Cycle counting in the instruction trace
  • Branch broadcast tracing
  • Four events supported in the trace
  • Return stack support
  • Tracing of SError exception support
  • 7-bit trace ID
  • 64-bit global timestamp size
  • ATB trigger support
The following figure shows the main functional blocks of the ETM trace unit.
Figure 5. ETM Functional Blocks
Table 46.  ETM Block Description
Component Description
Core interface This block monitors the behavior of the core and generates P0 elements that are essentially executed branches and exceptions traced in program order.
Trace generation The trace generation block generates various trace packets based on P0 elements.
Filtering and triggering resources You can limit the amount of trace data generated by the ETM through the process of filtering. For example, generating trace only in a certain address range. The ETM trace unit can also generate a trigger that is a signal to the Trace Capture Device to stop capturing trace.
FIFO The trace generated by the ETM trace unit is in a highly compressed form. The FIFO enables trace bursts to be flattened out. When the FIFO becomes full, the FIFO signals an overflow. The trace generation logic does not generate any new trace until the FIFO is emptied.
Trace out Trace from FIFO is output on the AMBA ATB interface.
The reset for the ETM trace unit is the same as a cold reset for the core. The ETM trace unit is not reset when warm reset is applied to the core so that tracing through warm core reset is possible. If the ETM trace unit is reset, tracing stops until the ETM trace unit is reprogrammed and re-enabled. If the core is reset using warm reset, the last few instructions that are executed by the core before the reset might not be traced.