Buffer / Array-based Kernels - Buffer / Array-based Kernels - 2026.1 English - UG1864

Vitis Functional Simulation User Guide (UG1864)

Document_ID
UG1864
Release_Date
2026-06-23
Version
2026.1 English

Buffer-based kernels require a complete buffer before processing begins. They operate on fixed-size windows of data.

Partial data (fewer samples than the buffer size):

  • Input: 4 samples (buffer size is 8)
  • Output: 0 samples
  • Behavior: VFS buffers the data but does not run the kernel until the buffer is full. The next call adds to the buffered data.
out1 = kernel.run(va.array([1, 2, 3, 4], dtype=va.int32))
# out1: [] -- waiting for a full buffer

out2 = kernel.run(va.array([5, 6, 7, 8], dtype=va.int32))
# out2: [2, 4, 6, 8, 10, 12, 14, 16]

Exact data (matches the buffer size):

  • Input: 8 samples → output: 8 samples. The buffer is filled and processed in one call.

Oversized data (multiple of the buffer size):

  • Input: 16 samples → output: 16 samples. The kernel is invoked twice automatically, one time per complete buffer.

Characteristics: - Block / window processing - No output until a full buffer is available - Suitable for batch processing - Deterministic processing boundaries - Optimized for fixed-size operations