%SOCMEMORYPROFILER Retrieve and display memory performance data
%   
% This object collects and displays two types of memory performance data
% from an AXI memory interconnect IP running on the hardware board. Either
% collect average transaction latency and counts of bytes and bursts, then
% plot bandwidth, burst counts, and transaction latency, or collect
% detailed memory transaction event data and view them as waveforms.
%
% Creation:
%
%   profiler = socMemoryProfiler(hardware,performanceMonitor) creates an
%   object that accesses the AXI interconnect monitor IP on the board
%   specified by the socHardwareBoard object, hardware, and uses the IP
%   configuration from the IP core object, performanceMonitor.
%
%   Input Arguments:
%               hardware - Hardware object
%                          socHardwareBoard object
%     performanceMonitor - AXI interconnect monitor IP core object
%                          socIPCore object
%
% Object Functions:
% 
%   collectMemoryStatistics - Collect memory statistics
%      plotMemoryStatistics - Plot memory statistics
%
% Examples:
%
%   % Collect memory profiling statistics
%   load('soc_memory_traffic_generator_zc706_aximaster.mat');
%   hwObj = socHardwareBoard('Xilinx Zynq ZC706 evaluation kit','Connect',false);
%   AXIMasterObj = socAXIMaster(hwObj);
%   apmCoreObj = socIPCore(AXIMasterObj,perf_mon,'PerformanceMonitor','Mode','Profile');
%   profilerObj = socMemoryProfiler(hwObj,apmCoreObj);
%   for n = 1:100
%       collectMemoryStatistics(profilerObj);
%   end

% Copyright 2019 The MathWorks, Inc.