{"id":26425103,"url":"https://github.com/PyFPGA/pyfpga","last_synced_at":"2025-03-18T03:04:50.700Z","repository":{"id":39716437,"uuid":"337795223","full_name":"PyFPGA/pyfpga","owner":"PyFPGA","description":"A Python package to use FPGA development tools programmatically.","archived":false,"fork":false,"pushed_at":"2025-03-17T03:28:47.000Z","size":7570,"stargazers_count":120,"open_issues_count":6,"forks_count":15,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-17T03:33:58.293Z","etag":null,"topics":["diamond","fpga","ghdl","icestorm","ise","libero","nextpnr","python","quartus","tcl","trellis","vivado","yosys"],"latest_commit_sha":null,"homepage":"https://pyfpga.github.io/pyfpga/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PyFPGA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-10T17:11:38.000Z","updated_at":"2025-03-16T12:05:09.000Z","dependencies_parsed_at":"2024-06-11T01:34:12.301Z","dependency_job_id":"2e612cfd-7f71-425c-bfeb-fda2c15e8ca8","html_url":"https://github.com/PyFPGA/pyfpga","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyFPGA%2Fpyfpga","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyFPGA%2Fpyfpga/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyFPGA%2Fpyfpga/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyFPGA%2Fpyfpga/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyFPGA","download_url":"https://codeload.github.com/PyFPGA/pyfpga/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244147328,"owners_count":20405942,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diamond","fpga","ghdl","icestorm","ise","libero","nextpnr","python","quartus","tcl","trellis","vivado","yosys"],"created_at":"2025-03-18T03:01:27.183Z","updated_at":"2025-03-18T03:04:50.692Z","avatar_url":"https://github.com/PyFPGA.png","language":"Python","readme":"# PyFPGA [![License](https://img.shields.io/badge/License-GPL--3.0-darkgreen?style=flat-square)](LICENSE)\n\n![Diamond](https://img.shields.io/badge/Diamond-3.13-blue.svg?style=flat-square)\n![ISE](https://img.shields.io/badge/ISE-14.7-blue.svg?style=flat-square)\n![Libero](https://img.shields.io/badge/Libero--Soc-2024.1-blue.svg?style=flat-square)\n![Quartus](https://img.shields.io/badge/Quartus--Prime-23.1-blue.svg?style=flat-square)\n![Vivado](https://img.shields.io/badge/Vivado-2022.1-blue.svg?style=flat-square)\n\n![Openflow](https://img.shields.io/badge/Openflow-GHDL%20%7C%20Yosys%20%7C%20nextpnr%20%7C%20icestorm%20%7C%20prjtrellis-darkgreen.svg?style=flat-square)\n\nPyFPGA is an abstraction layer for working with FPGA development tools in a vendor-agnostic, programmatic way. It is a Python package that provides:\n* One **class** per supported tool for **project creation**, **synthesis**, **place and route**, **bitstream generation**, and **programming**.\n* A set of **command-line helpers** for simple projects or quick evaluations.\n\nWith PyFPGA, you can create your own FPGA development workflow tailored to your needs!\n\nSome of its benefits are:\n* It provides a unified API between tools/devices.\n* It's **Version Control Systems** and **Continuous Integration** friendly.\n* It ensures reproducibility and repeatability.\n* It consumes fewer system resources than GUI-based workflows.\n\n## Basic example\n\n```py\nfrom pyfpga import Vivado\n\nprj = Vivado('example')\nprj.set_part('xc7z010-1-clg400')\nprj.add_vlog('location1/*.v')\nprj.add_vlog('location2/top.v')\nprj.add_cons('location3/example.xdc')\nprj.set_top('Top')\nprj.make()\n```\n\nThe next steps are to read the [docs](https://pyfpga.github.io/pyfpga) or take a look at [examples](examples).\n\n## Support\n\nPyFPGA is a Python package developed having GNU/Linux platform on mind, but it should run well on any POSIX-compatible OS, and probably others!\nIf you encounter compatibility issues, please inform us via the [issues](https://github.com/PyFPGA/pyfpga/issues) tracker.\n\nFor a comprehensive list of supported tools, features and limitations, please refer to the [tools support](https://pyfpga.github.io/pyfpga/tools.html) page.\n\n\u003e **NOTE:**\n\u003e PyFPGA assumes that the underlying tools required for operation are ready to be executed from the running terminal.\n\u003e This includes having the tools installed, properly configured and licensed (when needed).\n\n## Installation\n\n\u003e **NOTE:** PyFPGA requires Python \u003e= 3.8.\n\nPyFPGA can be installed in several ways:\n\n1. From PyPi using pip:\n\n```\npip install pyfpga\n```\n\n2. From the GitHub repository:\n\n```\npip install 'git+https://github.com/PyFPGA/pyfpga#egg=pyfpga'\n```\n\n3. Clone/download the repository and install it manually:\n\n```\ngit clone https://github.com/PyFPGA/pyfpga.git\ncd pyfpga\npip install -e .\n```\n\n\u003e **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.\n\n## Similar projects\n\n* [edalize](https://github.com/olofk/edalize): an abstraction library for interfacing EDA tools.\n* Firmware Framework ([FWK](https://gitlab.desy.de/fpgafw/fwk)): set of scripts and functions/procedures that combine all the input files needed to produce build.\n* HDL On Git ([Hog](https://gitlab.com/hog-cern/Hog)): a set of Tcl/Shell scripts plus a suitable methodology to handle HDL designs in a GitLab repository.\n* [Hdlmake](https://ohwr.org/project/hdl-make): tool for generating multi-purpose makefiles for FPGA projects.\n* IPbus Builder ([IPBB](https://github.com/ipbus/ipbb)): a tool for streamlining the synthesis, implementation and simulation of modular firmware projects over multiple platforms.\n* [tsfpga](https://github.com/tsfpga/tsfpga): a flexible and scalable development platform for modern FPGA projects.\n","funding_links":[],"categories":["FPGA Design"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPyFPGA%2Fpyfpga","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPyFPGA%2Fpyfpga","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPyFPGA%2Fpyfpga/lists"}