HI,
We are using PSDK 08.06.00.11.
appPerfStatsDdrStatsPrintAll() ( vision_apps/utils/perf_stats/src/app_perf_stats_api.c ) shows peak bandwidth too large, exceeding TDA4VM EVM hardware specification ( 14.9GB/s ).
DDR performance statistics,
===========================
DDR: READ BW: AVG = 7555 MB/s, PEAK = 29782 MB/s
DDR: WRITE BW: AVG = 8623 MB/s, PEAK = 33800 MB/s
DDR: TOTAL BW: AVG = 16178 MB/s, PEAK = 63582 MB/s
appPerfStatsDddrStatsUpdate() function that calculates the bandwidth looks like this
====
...
appPerfStatsDdrStatsReadCounters(&val0, &val1, &val2, &val3, false);
uint64_t write_bytes = val0 * APP_PERF_DDR_BURST_SIZE_BYTES;
uint64_t read_bytes = val1 * APP_PERF_DDR_BURST_SIZE_BYTES;
..
uint32_t read_bw_peak = read_bytes/elapsed_time; /* in MB/s */
uint32_t write_bw_peak = write_bytes/elapsed_time; /* in MB/s */
====
If we print the above variables when peak bandwidth is too large,
elapsed_time is small and DDR performace counter value is too large, so bandwidth is calculated too large.
Example)
elapsed_time : 49 us , read_bytes : 3302400
read_bw_peak = 67395 MB/s
In this case, should the DDR performace counter and peak values be considered normal?
According to TDA4VM EVM hardware specification (14.9GB/s), peak should be up to 735KB in 49 us, right?
Any ideas why the reported peak would exceed the theoretical limit of the device?
Is there a way to accurately measure the peak DDR bandwidth?