Debug cores for FPGAs,
independent of the vendor.
IPDBG provides small debug cores for your design and host tools that connect to them over JTAG, UART or your own transport, usually without extra pins. The same cores and tools work on AMD/Xilinx, Intel, Lattice, Efinix, Gowin and Microchip FPGAs.
How it works
Each host tool talks to exactly one core in the FPGA over its own TCP port. With JTAG, OpenOCD carries all connections over one physical link, and a hub in the FPGA distributes them to the cores. Several tools can run at the same time.
Features
Four cores, each with its host-side counterpart.
Logic Analyzer
Capture internal signals with triggers and analyse them in sigrok / PulseView, with all sigrok protocol decoders and FSM states shown by name. Scriptable through the libsigrok C/C++ API and Python bindings.
Details →Waveform Generator
Play waveforms into your design from sigrok or from a C library with C++, Python and Octave bindings. Repeated or one-shot, optionally double-buffered for glitch-free updates.
Documentation →BusAccess
Bus master for AXI4-Lite, Wishbone, AHB, APB, Avalon and RISC-V DMI. Read and write registers from a C library or its C++, Python and Octave bindings, for scripted tests and bring-up.
Documentation →IoView / IoProbe
Read and set individual signals interactively: IoProbe is the core in the FPGA, IoView the host application.
Documentation →
Supported devices
JTAG through the vendor's user scan chain, so no extra pins are needed.
| AMD/Xilinx | Spartan-3, -6, -7, Virtex-4, -6, 7 Series, Zynq-7000, UltraScale*, UltraScale+* |
|---|---|
| Intel/Altera | Arria II/II GZ/V/V GZ, Cyclone III/IV/IV E/V/10 LP, MAX V, MAX 10, Stratix III/V |
| Lattice | ECP2, ECP3, ECP5, Certus |
| Efinix | Trion, Titanium |
| Gowin | GW1N |
| Microchip/Actel | ProASIC3 |
* Same BSCANE2 primitive as the 7 Series; less tested so far.
Get started
Try it without hardware: the co-simulation replaces the FPGA and the JTAG adapter with GHDL, and everything above it stays the same.
# terminal 1 cd sw/CoSim && make && ./CoSim # terminal 2 cd sw/CoSim && openocd -f ipdbg_JtagSim.cfg # then connect sigrok-cli --driver=ipdbg-la:conn=tcp-raw/127.0.0.1/4242 --scan
The demo design serves all four cores (ports 4242–4245) and loops the Waveform Generator back into the Logic Analyzer. CoSim documentation →