Visible to Intel only — GUID: zfg1619620560252
Ixiasoft
Visible to Intel only — GUID: zfg1619620560252
Ixiasoft
23.4. Warp IP Registers
Register Name | Offset Address | Access Type | Description |
---|---|---|---|
vid_pid | 0x000 | RO | Warp IP product and vendor ID |
version_number | 0x004 | RO | The version for this release of the Warp IP |
Reserved | 0x008 | RO | |
Reserved | 0x00C | RO | |
pip | 0x010 | RO | Indicates the value of pixels in parallel parameter |
color_planes | 0x014 | RO | Indicates the value of number of color planes parameter |
cps | 0x018 | RO | Indicates the value of bits per color sample parameter |
num_engines | 0x01C | RO | Indicates the value of number of engines parameter |
max_input_width | 0x020 | RO | Indicates the value of maximum input video width parameter |
max_output_width | 0x024 | RO | Indicates the value of maximum output video width parameter |
memory_buffer_size | 0x028 | RO | Indicates the value of memory frame buffer size parameter |
easy_warp | 0x02C | RO | Indicates the value of Use easy warp parameter |
Reserved | 0x030-0x16C | RO | - |
int_control | 0x170 | RW | Turns on the interrupt |
int_status | 0x174 | RW1C | Read interrupt status and clear interrupt |
Bits | Name | Description |
---|---|---|
31:16 | VID | Vendor ID that returns a value of 0x6AF7 |
15:0 | PID | Warp product ID that returns a value of 0x016F |
Bits | Name | Description |
---|---|---|
31:0 | Version Number | The version number of the Warp IP |
Bits | Name | Description |
---|---|---|
31:0 | Pixels in Parallel | The pixel in parallel parameter. Returns a value of 1 or 2. |
Bits | Name | Description |
---|---|---|
31:0 | Number of Color Planes | The number of color planes parameter. Returns a value of 3. |
Bits | Name | Description |
---|---|---|
31:0 | Bits per Color Sample | The bits per color sample parameter. Returns a value of 10. |
Bits | Name | Description |
---|---|---|
31:0 | Number of Engines | The number of engines parameter. Returns a value of 1 or 2. |
Bits | Name | Description |
---|---|---|
31:0 | Maximum input video width | The maximum input video width parameter. Returns a value of 2048 or 3840. |
Bits | Name | Description |
---|---|---|
31:0 | Maximum output video width | The maximum output video width parameter. Returns a value of 2048 or 3840. |
Bits | Name | Description |
31:0 | Memory frame buffer size | The memory frame buffer size parameter. Returns a value of 0, 1 or 2. 0 = SD, 1=HD and 2=UHD |
Bits | Name | Description |
31:0 | Use easy warp | The Use easy warp parameter. Returns a value of 0 or 1. |
Bits | Name | Description |
---|---|---|
0 | Interrupt Enable | Setting this bit to 1 will enable the interrupt. Setting to 0 will disable the interrupt. |
Bits | Name | Description |
---|---|---|
0 | Interrupt Status | Reading from this bit returns the status of the interrupt. Writing a 1 to this bit will clear the interrupt. Once triggered, the interrupt will remain set until it is cleared by writing a 1 to this bit.
|
Debug and Measurement Registers
When you turn on Enable Debug Registers in the configuration settings of the Warp IP, a set of read only registers are available that provide various debug and measurement readings. The registers provide information useful during system bring up and debug and are accessed using the software API.
The available measurements are:
- Input section:
- INPUT_FRAME_COUNT
- INPUT_FRAME_PERIOD
- Output section
- OUTPUT_FRAME_COUNT
- OUTPUT_FRAME_PERIOD
- Engine section
- ENGINE_FRAME_COUNT
- ENGINE_FRAME_PERIOD
- ENGINE_BUSY_CYCLES
- ENGINE_FRAME_DELAY
- ENGINE_FAILED_TO_COMPLETE_FRAME
- General section
- MEM_WR_QUEUES0
- MEM_WR_QUEUES1
- MEM_RD_QUEUES0
- MEM_RD_QUEUES1
Name | Description |
---|---|
Input Section The IP reads the debug registers relating to the input section of the Warp IP using the intel_vvp_warp_get_input_debug_register () API call. |
|
INPUT_FRAME_COUNT | A count of the number of frames that have started at the input of the Warp IP. The last frame counted may be incomplete. This counter can indicate the video activity at the input of the Warp IP. Sampling this count periodically indicates frame rate. A static count indicates that the upstream pipeline to the Warp IP is not producing video data. |
INPUT_FRAME_PERIOD | The number of axi4s_vid_in_0_clock cycles seen between the last two start of frames seen at the input. Use this counter to indicate the frame rate by comparing its value with the input clock frequency. If the value from this register varies greatly, it indicates an unstable processing pipeline upstream of the Warp IP. |
Output Section The debug registers relating to the output section of the Warp IP are read using the intel_vvp_warp_get_output_debug_register () API call. |
|
OUTPUT_FRAME_COUNT | A count of the number of frames that have started at the output. The last frame counted may be incomplete. This counter can indicate the video activity at the output of the Warp IP. Sampling this count periodically gives an indication of frame rate and a static count indicates that the downstream pipeline from the Warp IP is blocked and not accepting video data. |
OUTPUT_FRAME_PERIOD | The number of axi4s_vid_out_0_clock cycles seen between the last two start of frames seen at the output. This counter can indicate the frame rate by comparing its value with the output clock frequency. If the value from this register varies wildly, it indicates an unstable processing pipeline downstream of the Warp IP. |
Engine Section The debug registers relating to the engine section of the Warp IP are read using the intel_vvp_warp_get_engine_debug_register () API call. |
|
ENGINE_FRAME_COUNT | A count of the number of frames that have started to be processed by the engine being referenced. The processing of the last frame counted may be in progress. This counter is useful for indicating the video activity within the Warp IP. It will give indication that the Warp IP has been set up and that the engine has been configured to process correctly. |
ENGINE_FRAME_PERIOD | The number of core_clock cycles seen between the last two start of frames seen at the engine. This counter is useful for confirming that the core_clock is set correctly given the expected frame rate. It is also useful for comparing against the ENGINE_BUSY _CYCLES value as an indication of how busy the engine is. |
ENGINE_BUSY CYCLES | The number of core_clock cycles for which the engine actively processes video data during the last frame. The counter starts when the processing of a frame begins and continues until either the IP completes the frame or encounters the start of the next frame. For the latter the engine fails to complete the processing of the frame in time, refer to the ENGINE_FAILED_TO_COMPLETE_FRAME status indicator. When compared to the ENGINE_FRAME_PERIOD, the value of ENGINE_BUSY_CYCLES gives an indication of how busy an engine is during the processing of a frame. |
ENGINE_FRAME_DELAY | The number of core_clock cycles between the start of the last input frame and the start of the engine’s processing phase. Use this counter for low latency behavior to determine if you have enough delay when programming the low latency settings. It also indicates the input and output frame synchronization that is a requirement for correct low latency behavior. This delay must be stable for low latency IPs to work correctly. If the IP does not see a stable value, the delay is changing over time, which indicates the input to output frame synchronization may not be operating correctly. |
ENGINE_FAILED_TO_COMPLETE_FRAME | A sticky flag that indicates that the engine has failed to complete the processing of a frame in the required frame period. The flag is cleared each time it is interrogated. The IP sets this to indicate that the engine has not had sufficient time to process the video frame as required and image corruption occurs. The most likely reason is insufficient memory bandwidth available to the engine. Insufficient memory bandwidth gives processing stalls either while waiting for read data to return or stalls while blocked waiting for write data is sent out. |
General Section The debug registers relating to the general section of the Warp IP are read using the intel_vvp_warp_get debug_register () API call. |
|
MEM_WR_QUEUES0 | Indicates the number of internal requests that queue at any one time for each of the write accesses through the Warp IP’s memory controller. The IP stores each queue depth value as a byte in the 32-bit data word returned by the read to this register. The IP has a number of queues depending on the configuration (Table 389). |
MEM_RD_QUEUES0 and MEM_RD_QUEUES1 | Indicates the number of internal requests that queue at any one time for each of the read accesses through the Warp IP’s memory controller. The IP has two 32 bit registers for access to the read queue depths. Each individual queue depth value is stored as a nibble in the 32 bit data word returned by a read to one of these registers. The IP has a number of queues depending on the configuration (Table 390) |
Queue | Easy Warp | Single Engine | Dual Engine |
---|---|---|---|
Video Input | MEM_WR_QUEUES0[7:0] | MEM_WR_QUEUES0[7:0] | MEM_WR_QUEUES0[7:0] |
Engine 0 Write | N/A | MEM_WR_QUEUES0[15:8] | MEM_WR_QUEUES0[15:8] |
Engine 1 Write | N/A | N/A | MEM_WR_QUEUES0[23:16] |
Queue | Easy Warp | Single Engine | Dual Engine |
---|---|---|---|
Video Output | MEM_RD_QUEUES0[3:0] | MEM_RD_QUEUES0[3:0] | MEM_RD_QUEUES0[3:0] |
Engine 0 Video | N/A | MEM_RD_QUEUES0[7:4] | MEM_RD_QUEUES0[7:4] |
Engine 0 Coeff0 | N/A | MEM_RD_QUEUES0[11:8] | MEM_RD_QUEUES0[11:8] |
Engine 0 Coeff1 | N/A | MEM_RD_QUEUES0[15:12] | MEM_RD_QUEUES0[15:12] |
Engine 0 Coeff2 | N/A | MEM_RD_QUEUES0[19:16] | MEM_RD_QUEUES0[19:16] |
Engine 1 Video | N/A | N/A | MEM_RD_QUEUES0[23:20] |
Engine 1 Coeff0 | N/A | N/A | MEM_RD_QUEUES0[27:24] |
Engine 1 Coeff1 | N/A | N/A | MEM_RD_QUEUES0[31:28] |
Engine 1 Coeff2 | N/A | N/A | MEM_RD_QUEUES1[3:0] |