fpgacapZero logo representing an embedded FPGA debug capture core

fpgacapZero: Open-Source FPGA Debug Stack

Open-source, vendor-neutral FPGA debug cores — embedded logic analyzer, runtime I/O, JTAG-to-AXI4, and JTAG-to-UART — with scriptable host tools over the board's existing JTAG port. Apache 2.0 licensed.

View on GitHub Install from PyPI All projects & IP cores

What fcapz does

Vendor debug tools (ILA, SignalTap, Reveal, SmartDebug) are usually the fastest way to look inside a design on the bench, but they tie the debug method to one vendor's flow, license tier, and GUI — a poor fit for automation, remote bring-up, and multi-vendor projects.

fpgacapZero (fcapz) is an open-source debug stack compiled into the design itself: four cores driven over JTAG by a set of host tools, so the same captures used interactively on the bench can also run from scripts in CI or manufacturing tests. It uses the existing JTAG header — no extra board pins and no soft CPU required.

Diagram: inside the FPGA, the user design's signals feed four fcapz cores - embedded logic analyzer, embedded I/O, JTAG-to-AXI4, and JTAG-to-UART - which share the JTAG port; on the host, OpenOCD or Xilinx hw_server connects the fcapz Python API, CLI, web frontend, and JSON-RPC server, exporting captures as VCD, CSV, or JSON
Four debug cores inside the fabric, one JTAG cable out — captures and register access from scripts, not just a GUI.

Host tooling

Alongside the RTL, fcapz ships a Python API for automation, a CLI (fcapz) for quick captures, and a web frontend (fcapz-web) backed by a JSON-RPC server for interactive, remote, and shared bring-up. The JTAG transport is OpenOCD or Xilinx hw_server, depending on the board and flow.

The host tools are published on PyPI (Python 3.10+), so installation is one command:

pip install fpgacapzero

Captures export as VCD, CSV, or JSON, so the output goes into standard waveform viewers and diff tools, and scripted captures can be stored and compared across runs — the basis for using fcapz in CI regressions and manufacturing tests.

Where it fits

Resource cost: an 8-bit, 1024-sample ELA fits in roughly 600 LUTs plus half a BRAM. Wider probes and deeper capture memories scale the cost, mostly in BRAM.

Frequently asked questions

What license does fpgacapZero use?

Apache 2.0. Use it in commercial designs, modify it, and ship it in engineering or manufacturing builds without copyleft obligations.

Does it replace ILA or SignalTap?

No — it complements them. Vendor tools remain the shortest path for deep, device-specific bring-up. fcapz adds a second, scriptable visibility path that is part of the design source and independent of tool license tiers (relevant since the Vivado 2026.1 licensing changes, where designs with more than five ILA debug probes need a paid tier).

Which FPGAs does it support?

Wrappers ship for Xilinx 7-series, UltraScale/UltraScale+, Lattice ECP5, Intel/Altera, Gowin, and Microchip PolarFire. 7-series is validated in hardware on an Arty A7-100T; qualify the rest on your own board like any other IP block.

How do I install the host tools?

pip install fpgacapzero (Python 3.10+) installs the CLI, Python API, and web frontend from PyPI. The RTL cores come from the GitHub repository and are instantiated in your design like any other IP.

Can bard0 help integrate it?

Yes. fpgacapZero is maintained by bard0 design, and we help teams plan debug instrumentation into a design — including alongside our IP cores like the MIPI CSI-2 Aggregator and FPGA ISP.


The cores and documentation are on GitHub, and the host tools install from PyPI with pip install fpgacapzero. If you want help integrating debug instrumentation into a design, get in touch.

View on GitHub Contact us

We use analytics and marketing tools to analyze traffic and improve our services. By clicking "Accept", you agree to our use of these tools.