Skip to main content

PyFPGA License

Diamond ISE Libero Quartus Vivado

Openflow

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

  • One class per supported tool for 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 benefits are:

  • It provides a unified API between tools/devices.
  • It's Version Control Systems and Continuous Integration friendly.
  • It ensures reproducibility and repeatability.
  • It consumes fewer system resources than GUI-based workflows.

Basic example

from pyfpga import Vivado

prj = Vivado('example')
prj.set_part('xc7z010-1-clg400')
prj.add_vlog('location1/*.v')
prj.add_vlog('location2/top.v')
prj.add_cons('location3/example.xdc')
prj.set_top('Top')
prj.make()

The next steps are to read the docs or take a look at examples.

Support

PyFPGA is a Python package developed having GNU/Linux platform on mind, but it should run well on any POSIX-compatible OS, and probably others! If you encounter compatibility issues, please inform us via the issues tracker.

For a comprehensive list of supported tools, features and limitations, please refer to the tools support page.

NOTE: PyFPGA assumes that the underlying tools required for operation are ready to be executed from the running terminal. This includes having the tools installed, properly configured and licensed (when needed).

Installation

NOTE: PyFPGA requires Python >= 3.8.

PyFPGA can be installed in several ways:

  1. From PyPi using pip:
pip install pyfpga
  1. From the GitHub repository:
pip install 'git+https://github.com/PyFPGA/pyfpga#egg=pyfpga'
  1. Clone/download the repository and install it manually:
git clone https://github.com/PyFPGA/pyfpga.git
cd pyfpga
pip install -e .

NOTE: with -e (--editable), the application is installed into site-packages via a symlink, which allows you to pull changes through git or switch branches without reinstalling the package.

Similar projects

  • edalize: an abstraction library for interfacing EDA tools.
  • Firmware Framework (FWK): set of scripts and functions/procedures that combine all the input files needed to produce build.
  • HDL On Git (Hog): a set of Tcl/Shell scripts plus a suitable methodology to handle HDL designs in a GitLab repository.
  • Hdlmake: tool for generating multi-purpose makefiles for FPGA projects.
  • IPbus Builder (IPBB): a tool for streamlining the synthesis, implementation and simulation of modular firmware projects over multiple platforms.
  • tsfpga: a flexible and scalable development platform for modern FPGA projects.

Metadata

Release files for PyFPGA 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyFPGA 0.4.0
File Size Uploaded
pyfpga-0.4.0.tar.gz 29.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for PyFPGA 0.4.0
File Interpreter ABI Platform
pyfpga-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 66.9 kB

Release files / pyfpga-0.4.0.tar.gz

Download URL pyfpga-0.4.0.tar.gz
Size 29.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a49a2c0bb547cee4e33dabaf7451396cd54ca79c97f055d7d3c881ce3bc2b73d
BLAKE2b-256 checksum
How to use checksums
de66e84ddd769435b86506354e801eebed44194420233d0fcd8bf45f60f85d07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pyfpga-0.4.0-py3-none-any.whl

Download URL pyfpga-0.4.0-py3-none-any.whl
Size 37.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
169909712890edda97d1abc668ea4401e1963eabaf112c23dc6f41a1139b4fea
BLAKE2b-256 checksum
How to use checksums
fee132e720730efc67fc0e6363c83e75b11f964cceddd889ec53fb7186e1fe83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page