WaveBPF (wBPF) is a "tightly-coupled multi-core" eBPF CPU, designed to be a high-throughput coprocessor for processing in-memory data (e.g. network packets).
This repository contains the hardware. Other resources:
- Supports all eBPF instructions.
- AXI4-compatible peripheral interface.
- Exception delegation to AXI4 master (so you can handle eBPF helper calls, etc. in a separate "cold-path" software logic).
Prebuilt Zynq-7020 (xc7z020clg400-2) BOOT.BIN including the bitstream and kernel is available here. Grab it and build the driver yourself.
See the GitHub action workflow for instructions on generating Verilog from the design. The ports are:
mmio
(AxiLite4, control port)dataMemAxi4
(Axi4, tightly-coupled data memory)excInterrupt
(Interrupt line for exception delegation)