cptracer probes can measure #1 latency, #2 throughput, and describe #3 transactions.

The throughput and latency probes measure over a sample period. The default
value in the Period field is 0x3FFF. For example, the DDR probe period can
be changed by:
      CPTracer.MAIN.DDR_NON_RT.PERiod 0x<value>.

The value represents bits 23-10 of a 24-bit field. Bits 9:0 are fixed
at 0x3FF.  A probe's speed is typically set to match the speed of the
interconnect its connected to. For example, the CBASS to DDR
typically runs at 500MHz.

The default probe counter will accumulate events over the interval of:
0x00FFFFFF * 1/500MHz = 33.6mS
A '0' for gives 0x3FF * 1/500MHz = 2.048uS

To find average throughput use (total bytes / time in sample period)
To find the average transaction length use (total bytes / total matched)

To find average latency use (total wait time) / (total tracked)

First usage typically is broad total usage. However, zooming in is possible
by using routeid and address filtering.

Since multiple routes exist to some destinations, traffic monitoring may be needed
at multiple points to get a fuller picture.

#3 Transaction probes provide a summary of transaction attributes as seen at a probe.
These attributes can help identify which initiator (core or DMA) is accessing targets
and how. The attributes can be emitted as debugger reports or used as filters.

The transaction probes capture rate is determined by the transaction latency to
the endpoint and the number of transactions. A dump window might only show a
transaction every 10mS (poll rate for start of window) where a CPU running code
generate transactions in the 10s of nS. Message size and FIFO depth will
determine how many transactions are sampled.

Filtering for all probe types (#1/#2/#3) can be based on the initiator and/or access
type (read vs. write) is possible using the GUI (other types of filters are possible
using direct mask writes).

To filter based on read, write or read+write the CBA bus protocol at the probe needs
to be known. The VBUSM or VBUSP protocols use the DIRection attribute.
  For VBUSM or VBUSP (like DDR & SRAM) use:
        All READ:   CPTracer.MAIN.DDR_NON_RT.DIRection.Read
        All Write:  CPTracer.MAIN.DDR_NON_RT.DIRection.Write
        READ+WRITE: CPTracer.MAIN.DDR_NON_RT.DIRection.ReadWrite

To filter for a given initiator use a RouteID filter. The RouteIDs are in the TRM,
however, list is also in the example CMM script:
../mpu-a53/onchip_trace/system_trace/map_active_bus_routes.cmm
  To filter A53-L2Cache-write traffic use:
	CPTracer.MAIN.DDR_NON_RT.RouteID 4.
  To filter all DM_R5FSS0_CORE0_MEM_RD use:
	CPTracer.MAIN.DDR_NON_RT.RouteID 4089.

---
Transaction probes can be viewed in the CPTT GUI by any core. However, some
versions of TRACE32 only show a 32-bit address in the GUI. The use of a 64-bit
core may be needed to see some address representations.

03/24/2025
