Stream-based Kernels - Stream-based Kernels - 2026.1 English - UG1864

Vitis Functional Simulation User Guide (UG1864)

Document_ID
UG1864
Release_Date
2026-06-23
Version
2026.1 English

Stream-based kernels process data incrementally as it becomes available. They read from the input stream and write to the output stream sample-by-sample.

Partial data (fewer samples than the kernel loop):

  • Input: 4 samples (kernel loops 8 times)
  • Output: 4 samples
  • Behavior: the kernel processes the available data and produces partial output immediately.
input  = [1, 2, 3, 4]
output = kernel.run(va.array(input, dtype=va.int32))
# output: [2, 4, 6, 8]

Exact data (matches the loop count):

  • Input: 8 samples → output: 8 samples. The kernel completes one full processing cycle.

Oversized data (multiple of the loop count):

  • Input: 16 samples → output: 16 samples. The kernel loop runs twice automatically.
input  = list(range(1, 17))
output = kernel.run(va.array(input, dtype=va.int32))
# output: [2, 4, 6, ..., 32]

Characteristics:

  • Incremental processing
  • Immediate output for partial data
  • Suitable for streaming applications and pipelined dataflow
  • Lower latency for partial results