A Python package to use FPGA development tools programmatically
Project description
PyFPGA 
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:
- From PyPi using pip:
pip install pyfpga
- From the GitHub repository:
pip install 'git+https://github.com/PyFPGA/pyfpga#egg=pyfpga'
- 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.
- Hdlmake: tool for generating multi-purpose makefiles for FPGA projects.
- HDL On Git (Hog): a set of Tcl/Shell scripts plus a suitable methodology to handle HDL designs in a GitLab repository.
- 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyfpga-0.3.1.tar.gz.
File metadata
- Download URL: pyfpga-0.3.1.tar.gz
- Upload date:
- Size: 29.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78099e21508fa789f2fa2ad4ac75b08055392d6b5eacebc6c67cb1a5de4d387f
|
|
| MD5 |
1a78157a97197e013cb99e08ab86c314
|
|
| BLAKE2b-256 |
9e0256cea93b74fe800504ab1b7340b9a944c9da213aef40a14566513e8ebe88
|
File details
Details for the file pyfpga-0.3.1-py3-none-any.whl.
File metadata
- Download URL: pyfpga-0.3.1-py3-none-any.whl
- Upload date:
- Size: 37.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3a8ba95e90b2222a71d987fb4b0630debe4f4456858c4db45bcf4437b7a0728
|
|
| MD5 |
ef18e277e53a57a596cb23f6db19242a
|
|
| BLAKE2b-256 |
d3e19b716f4629bce20c58343b13ec9878adedd1dd36766835e4ad78ad14fa06
|