With debugging enabled, non-intrusive profiling is provided,
which uses a Profiling Buffer to store program execution statistics. The size of the
profiling buffer can be configured from 4 KB to 128 KB using the parameter C_DEBUG_PROFILE_SIZE. By setting C_DEBUG_PROFILE_SIZE to 0 (None), non-intrusive profiling is disabled.
The Profiling Buffer is divided into a number of bins, each counting the number of executed instructions or clock cycles within a certain address range. Each bin counts up to 236 - 1 = 68,719,476,735 instructions or cycles.
The address range of each bin is determined by the buffer size and the profiled address range defined using the Profiling Low Address Register and Profiling High Address Register.
Profiling can be started or stopped using the Profiling Control Register.
The memory/mapped registers used to configure and control profiling, and to read or write the Profiling Buffer, are listed in the following table.
| Register Name | Size (bits) | Offset | R/W | Description |
|---|---|---|---|---|
| Profiling Control | 8 | 0x1040 | W | Enable or disable profiling, configure counting method and bin usage |
| Profiling Low Address | 32 | 0x1080 | W | Defines the low address of the profiled address range |
| C_ADDR_SIZE - 32 | 0x1084 | |||
| Profiling High Address | 32 | 0x10C0 | W | Defines the high address of the profiled address range |
| C_ADDR_SIZE - 32 | 0x10C4 | |||
| Profiling Buffer Address | 9 - 14 | 0x1100 | W | Sets the address (bin) in the Profiling Buffer to read or write |
| Profiling Data Read | 32 | 0x1180 | R | Read data from the Profiling Buffer |
| 4 | 0x1184 | |||
| Profiling Data Write | 32 | 0x11C0 | W | Write data to the Profiling Buffer |