27th International Conference on Field-Programmable Logic and Applications

PYNQ: Python productivity for Zynq

Track: Tutorials

PYNQ is an open-source framework that enables programmers who want to use embedded systems to exploit the capabilities of Xilinx Zynq All Programmable SoCs (APSoC). It allows users to exploit custom hardware in the programmable logic without having to use ASIC-style CAD tools. Instead the APSoC is programmed in Python and the code is developed and tested directly on the embedded system. The programmable logic circuits are imported as hardware libraries and programmed through their APIs, in essentially the same way that software libraries are imported and programmed.

The framework combines four main elements: (1) the use of a high-level productivity language, Python in this case; (2) Python-callable hardware libraries based on FPGA overlays; (3) a web-based architecture incorporating the open-source Jupyter Notebook infrastructure served from Zynq's embedded processors; and (4) Jupyter Notebook's client-side, web apps. The result is a web-centric programming environment that enables software programmers to work at higher levels of design abstraction and to re-use both software and hardware libraries.

This tutorial will give a hands-on introduction to PYNQ framework using the low cost PYNQ-Z1 board. It will feature the latest PYNQ release which includes an updated API, an optimized video pipeline, and a simplified way of integrating new hardware and drivers into PYNQ.

The new logictools overlay will be introduced which provides generation of Boolean functions, finite state machine and digital pattern generation from Python. The custom hardware can be used to control and monitor standard and proprietary interfaces for industrial applications, providing custom hardware capability to software programmers.

With hardware programmability from Python, and powerful visualization and analysis capabilities, the logictools overlay provides unique capability for teaching digital logic to both programmers and engineers.

The PYNQ overlay design methodology for creating new overlays and binding into the PYNQ framework will also be covered.