Operator Library: Debugging
The MemoryInterfaceAnalyzer operator provides information about the data flow of memory interfaces. It does not change, add, or remove any image data or control signals.
![]() |
Runtime Testing |
|---|---|
|
This operator is intended for testing and analyzing your design during runtime. You must build (synthesize) the design, load it onto the target hardware, and run actual image processing before you can use the operator for debugging. The operator is not intended for design simulation within VisualApplets. |
You can use the operator to detect blocking conditions and to observe how multiple memory operators share the available memory bandwidth. For more information about the shared memory concept, see: Application Note: Shared Memory and ' Shared Memory Concept '.
The MemoryInterfaceAnalyzer operator only works when it is attached to an existing memory operator that uses a resource of type RAM. The operator attaches itself to the specified RAM port (RamResourceId) and observes the data flow. Each memory operator that uses Frame Grabber RAM (DRAM) has both a write interface and a read interface.
-
Write Interface:
The memory operator requests write access, and the memory controller grants access if possible. Whether access is granted depends on all connected memory operators and their current read or write requests. The write interface can be in one of the following states:
-
Write Transfer:
A write transfer occurs when the operator requests write access and the memory controller grants the request.
-
Write Wait:
If the operator requests write access but the memory controller is currently processing requests from another memory interface, the request is not granted. The operator waits for write access.
-
Write Idle:
The operator is not requesting write access and the write interface is currently unused.
-
-
Read Interface:
The memory operator requests read access, and the memory controller grants access if possible. Whether access is granted depends on all connected memory operators and their current read or write requests. The read interface can be in one of the following states:
-
Read Transfer:
A read transfer occurs when the operator requests read access and the memory controller grants the request.
-
Read Wait:
If the operator requests read access but the memory controller is currently processing requests from another memory interface, the request is not granted. The operator waits for read access.
-
Read Idle:
The operator is not requesting read access and the read interface is currently unused.
-
The image below shows how the MemoryInterfaceAnalyzer attaches to a specified memory interface. Each interface consists of:
-
A request signal from the memory operator, and
-
An acknowledge signal from the memory controller, which grants or denies access.
Each memory operator has both a write and a read interface. In the example below, the MemoryPortId is 1.

The read interface only describes the transfer of the read address to the memory, because it can be assumed, that transferring the read address to the memory controller will always initiate a read data transfer to the memory operator.
For more information on the shared memory concept read: Application Note: Shared Memory and ' Shared Memory Concept '.
The MemoryInterfaceAnalyzer operator measures how much time within the specified measurement period (MeasurementPeriod) the memory operator spends in each of the following states:
-
Write Transfer
-
Write Wait
-
Write Idle
-
Read Transfer
-
Read Wait
-
Read Idle
The operator provides these results through its read parameters. Because it only reports measurements and does not process data, the MemoryInterfaceAnalyzer has no input or output ports.
| RamResourceId | |
|---|---|
| Type | static write parameter |
| Default | 0 |
| Range | [0, number of available RAM interfaces - 1] |
|
This parameter specifies the RAM resource ID of the memory operator whose memory interface is being observed. If no memory operator is assigned to the specified RAM resource ID, the design is invalid. |
|
| MeasurementPeriod | |
|---|---|
| Type | dynamic/static write parameter |
| Default | 1000 |
| Range | [1, 1000] |
|
This parameter calculates the time in milliseconds of the performance measurement period. The definition of the measurement period is important for analyzing time fractions and for calculating mean values. |
|
| WriteTransferFraction | |
|---|---|
| Type | dynamic read parameter |
| Default | 0 |
| Range | [0, 100] |
|
This parameter calculates the percentage of cycles within the MeasurementPeriod during which data is written to memory. A write transfer occurs when the operator requests write access and the memory controller grants the request. |
|
| WriteWaitFraction | |
|---|---|
| Type | dynamic read parameter |
| Default | 0 |
| Range | [0, 100] |
|
This parameter calculates the percentage of cycles within the MeasurementPeriod during which the memory operator requests write access, but the memory controller denies it. A write transfer occurs only when the operator requests write access and the memory controller grants the request. |
|
| WriteIdleFraction | |
|---|---|
| Type | dynamic read parameter |
| Default | 0 |
| Range | [0, 100] |
|
This parameter calculates the percentage of cycles within the MeasurementPeriod during which the write interface is unused. No write requests are issued and therefore none are granted. |
|
| ReadTransferFraction | |
|---|---|
| Type | dynamic read parameter |
| Default | 0 |
| Range | [0, 100] |
|
This parameter calculates the percentage of cycles within the MeasurementPeriod during which data is read from memory. A read transfer occurs when the operator requests read access and the memory controller grants the request. |
|
| ReadWaitFraction | |
|---|---|
| Type | dynamic read parameter |
| Default | 0 |
| Range | [0, 100] |
|
This parameter calculates the percentage of cycles within the MeasurementPeriod during which the memory operator requests read access, but the memory controller denies it. A read transfer occurs only when the operator requests read access and the memory controller grants the request. |
|
| ReadIdleFraction | |
|---|---|
| Type | dynamic read parameter |
| Default | 0 |
| Range | [0, 100] |
|
This parameter calculates the percentage of cycles within the MeasurementPeriod during which the read interface is unused. No read requests are issued and therefore none are granted. |
|
| WriteReadRatio | |
|---|---|
| Type | dynamic read parameter |
| Default | 0.0 |
| Range | [0.0, 1000.0] |
|
This parameter specifies the ratio of successful write transfers to successful read transfers. It helps to indicate whether the observed memory operator may run into a buffer overflow.
|
|

![[Important]](../common/images/admon/important.png)
Prev

