Operator Library: Debugging
With operator ImageFlowControl, you can control the data flow that is received from infinite sources.
Availability | |
---|---|
To use the ImageFlowControl operator, you need either an Expert license, a Debugging Module license, or the VisualApplets 4 license. |
Operator ImageFlowControl is especially helpful if your design
- is fed by unstoppable (infinite) sources and does not make use of RAM-based image buffers.
- contains loops and you want to detect and prevent data loss in loops.
Using this operator, you make sure that no overflows of FIFOs occur in the following pipeline.
The operator works similar to operator ImageFifo - it has a built-in FIFO.
In addition, the operator provides a specific overflow control mechanism. In case of overflow
- Images are cut (and only the first part of the image is forwarded).
- Images are discarded as long as the overflow situation is there. (When the overflow situation is over, the transfer starts with the first pixel of the next frame.)
This way, the operator ensures the design can be run.
Specific count parameters inform you how many frames were lost and how many frames were forwarded incomplete due to cutting them in an overflow situation. This allows you to track the data loss in your design (or, for example, in a loop).
Additionally, lost frames can be compensated with dummy frames of selectable width and height. This feature allows to keep the rate of incoming and outgoing frames constant in case of a temporal bandwidth restriction at the output link. However, this will only work as long as the generated dummy frames are small enough in size compared to the lost frames.
Runtime Testing | |
---|---|
This operator is designed for testing and analyzing your design during runtime: You need to build (synthesize) the design, load it onto the target hardware, and start actual image processing, before you can use the operator for debugging. The operator is not intended for design simulation within VisualApplets. |
Property | Value |
---|---|
Operator Type | M |
Input Links | TerminateI (optional), external terminate signal input. If set to one, the current input image is terminated, i.e.,
the operator acts as a sink. Compensation of lost frames can be enabled through the CompensateLostFrames parameter. I, image data input |
Output Links | O, image data output StatusO (optional), statusO port is synchronous to image data output port O. This port is two bit wide. Bit 0: Signals truncation of the current frame if set. Bit 1: Signals a dummy frame if set. Only the last data word inside a frame must be evaluated. |
Link Parameter | Input Link TerminateI (optional) | Input Link I | Output Link O | Output Link StatusO (optional) |
---|---|---|---|---|
Bit Width | 1 | [1, 64] | as I | 2 |
Arithmetic | none | {unsigned, signed} | as I | as I |
Parallelism | none | any | as I | as I |
Kernel Columns | none | any | as I | as I |
Kernel Rows | none | any | as I | as I |
Img Protocol | SIGNAL | VALT_IMAGE2D | as I | as I |
Color Format | none | any | as I | GRAY |
Color Flavor | none | any | as I | none |
Max. Img Width | none | any | as I | as I |
Max. Img Height | none | any | as I | as I |
EntitiesToStore | |
---|---|
Type | static write parameter |
Default | 8 |
Range | [1, (2^32)-1] |
Number of fifo entities to store. |
EntitiesType | |
---|---|
Type | static write parameter |
Default | LINE |
Range | {FRAME, LINE, PIXEL} |
Defines the storage entity. |
ImplementationType | |
---|---|
Type | static write parameter |
Default | AUTO |
Range | {AUTO, BRAM, LUTRAM} |
Defines the fifo implementation type. |
FifoFillLevel | |
---|---|
Type | dynamic write parameter |
Default | 0% |
Range | [0%, 100%] |
Actual fifo fill level in percent. |
MaxFifoFillLevel | |
---|---|
Type | dynamic write parameter |
Default | 0% |
Range | [0%, 100%] |
Stores the maximum fifo fill level ever reached. |
CounterWidth | |
---|---|
Type | static write parameter |
Default | 16 |
Range | [8, 32] |
Sets the bit width of all counters inside this operator. |
LostFrameCount | |
---|---|
Type | dynamic read parameter |
Default | 16 |
Range | [0, (2^CounterWidth)-1] |
Counts whole frames which were lost due blocking of the output link or the optional TerminateI input.ra> |
IncompleteFrameCount | |
---|---|
Type | dynamic read parameter |
Default | 16 |
Range | [0, (2^CounterWidth)-1] |
Counts incomplete frames which where prematurely terminated. |
FullFrameCount | |
---|---|
Type | dynamic read parameter |
Default | 16 |
Range | [0, (2^CounterWidth)-1] |
Counts full frames which were passed through to the output link. |
ClearStatus | |
---|---|
Type | dynamic write parameter |
Default | No |
Range | {Yes, No} |
If set to "yes" all counters are cleared. |
CompensateLostFrame | |
---|---|
Type | dynamic write parameter |
Default | No |
Range | {Yes, No} |
If set to Yes all lost frame are compensated through the insertion of dummy frames. |
DummyFrameWidth | |
---|---|
Type | dynamic write parameter |
Default | 1024 |
Range | [2, MaxImageWidth] |
Width of the dummy frame to be generated. |
DummyFrameHeight | |
---|---|
Type | dynamic write parameter |
Default | 1 |
Range | [1, MaxImageHeight] |
Height of the dummy frame to be generated. |
DummyFrameCount | |
---|---|
Type | dynamic read parameter |
Default | 0 |
Range | [0,(2^CounterWidth)-1] |
Counts all generated dummy frames. |
EofDifferenceFrameCount | |
---|---|
Type | dynamic read parameter |
Default | 0 |
Range | [-(2^CounterWidth), (2^CounterWidth)-1] |
Difference between the number of outgoing and incoming frames: OutgoingEofCounter-IncomingEofCounter. |
The use of operator ImageFlowControl is shown in the following examples:
-
Example - For debugging purposes of the designs internal data flow control in hardware and a possible compensation.