Introduction

PyFPGA is a Python package that provides an abstraction layer for working with FPGA development tools in a vendor-agnostic, programmatic way. It includes:

  • A class for each supported tool, enabling project creation, synthesis, place and route, bitstream generation, and programming.

  • A set of command-line helpers for simple projects or quick evaluations.

With PyFPGA, you can create your own FPGA development workflow tailored to your needs. Some of its key benefits include:

  • A unified API across different tools and devices.

  • Compatibility with Version Control Systems and Continuous Integration.

  • Ensured reproducibility and repeatability.

  • Lower resource consumption compared to GUI-based workflows.

It currently supports vendor tools such as Diamond, Ise, Quartus, Libero, and Vivado, as well as Openflow, a solution based on Free/Libre and Open Source Software (FLOSS).

Attention

PyFPGA assumes that the backend tool is ready to run. This implies, depending on the operating system, the following:

  • The tool is installed.

  • A valid license, if needed, is configured.

  • The tool is available in the system PATH.

  • On GNU/Linux: required packages are installed, environment variables are set, and permissions are granted for devices (to transfer the bitstream).