Welcome to PYNQ™

PYNQ is an open-source project from AMD that makes it easier to use adaptive computing platforms. It uses Python and Jupyter notebooks to work with programmable logic and processors.

Explore and control FPGA designs in Python

Load and inspect hardware designs at runtime, read and write registers with MMIO, allocate buffers for data transfer, and much more.

overlay.py
from pynq import Overlay, MMIO, allocate

ol = Overlay("my_design.xsa")
print(ol.ip_dict)

mmio = MMIO(BASE_ADDR, ADDR_RANGE)
mmio.write(ADDR_OFFSET, DATA)
result = mmio.read(ADDR_OFFSET)

buffer = allocate(shape=(5,), dtype='u4')
buffer[:] = range(5)

Who is PYNQ for?

PYNQ is intended for a wide range of designers and developers.

Python libraries, Jupyter notebooks, and overlays provide a way to use programmable logic alongside processor software.

Software developers

Use existing hardware overlays from Python, without having to design the hardware.

System architects

Prototype systems with a Python interface to programmable logic.

Hardware designers

Make reusable designs available to others through Python APIs.

Boards and images

Latest PYNQ images

Choose the image for your board and memory configuration. Older versions are in Previous downloads below.

AUP-ZU3

Zynq UltraScale+

Setup guide

Build a PYNQ image

Source distribution and root filesystem downloads for custom board images.

Read the image build guide ↗
Previous downloadsOlder board images and image build files

Previous board images

Get involved

The PYNQ source code is available on GitHub. For questions or to contact the PYNQ team, use the support forum.