DEV Community

Hedy
Hedy

Posted on

What is hardware kernel in FPGA?

In FPGA land, a hardware kernel is a block of logic that implements a “kernel function” as dedicated hardware—instead of as instructions running on a CPU.

You’ll see this term a lot in HLS/OpenCL/SYCL/Vitis flows:

  • Software kernel (CPU/GPU): a function is executed by many threads/cores over time.
  • Hardware kernel (FPGA): the function is synthesized into circuits (pipelines, FSMs, DSP blocks, BRAM/URAM, etc.) that run in parallel and process streaming data at hardware speed.

What a hardware kernel usually looks like

A typical FPGA hardware kernel has:

  • Control logic (finite state machine / handshaking)
  • Compute datapath (adders, multipliers, DSP slices, LUT logic)
  • Local memory (BRAM/URAM buffers, FIFOs)
  • I/O interfaces (commonly AXI4 / AXI-Stream, or vendor-specific streaming links)
  • Optional DMA/data movers to pull/push data from DDR/HBM

How it’s used (host + FPGA accelerator model)

Most frameworks treat the FPGA as an accelerator:

  1. Host code (x86/ARM) sets arguments / buffer addresses.
  2. Host launches the kernel.
  3. The hardware kernel reads input data, computes, writes outputs.
  4. Host reads results.

Why it’s powerful

Because it’s hardware, you can exploit:

  • Pipelining: new input every clock once the pipeline fills.
  • Parallelism: multiple compute units (CUs) or unrolled loops.
  • Deterministic latency: very repeatable timing.
  • Streaming: process data “in flight” without storing huge arrays.

Concrete example

If your kernel is “FIR filter” or “FFT stage”:

  • CPU version: loops over samples.
  • Hardware kernel: a pipeline of multiply-accumulate stages that can accept 1 sample per clock (depending on design), using DSP blocks and FIFOs.

Common places you’ll hear “hardware kernel”

  • Xilinx/AMD Vitis: kernel is the HLS/OpenCL compute block compiled to an FPGA bitstream.
  • Intel FPGA OpenCL/SYCL: kernels compile into hardware pipelines and memory interfaces.

Top comments (0)