PYFPGA是用于供应商独立FPGA开发的Python类。它允许使用一个项目文件,并通过编程执行综合,实现,生成Bitstream和/或转移到受支持的董事会。
工作流程以命令行为中心。
它对版本控制系统和连续集成(CI)很友好。
允许可重复性和可重复性。
与基于GUI的工作流相比,消耗的系统资源少。
使用根据您的需求量身定制的工作流创建自定义的FPGA工具!
警告: (2022-05-15)PYFPGA正在强烈重写/简化。大多数更改是内部的,但是API(
Project
类)将会改变。
如何使用pyfpga的最小示例:
从FPGA导入项目#指定后端工具和可选的项目namePrj = project('vivado','示例')#设置设备/partprj.set_part('XC7Z01010110-1-CLG400')#添加HDL源在ProjectPrj中。 add_files('location1/*。v')prj.add_files('location2/top.v')#objistally将约束文件添加到projectprj.add_files('location3/example.xdc')#设置顶级级单位name nameprj。 set_top('top')#生成bitstream运行toolprj.generate()
现在,您可以阅读文档或在Subdir示例中找到更多示例。
Project class
实施的API提供:
必须指定该工具并指示可选项目名称的构造函数
设置目标设备部分的方法,将多个HDL,约束和TCL文件添加到项目(如果可以指定可选的软件包名称)并指定顶级级别
指定不同输出目录或获取一些项目配置的方法
生成botstream并将其传输到设备的方法(运行选定的EDA工具)
生成Bitstream时指定优化策略(区域,功率或速度)的能力
添加verilog包含的文件目录的方法
指定通用/参数值的方法
在流量的最多六个不同部分中添加TCL命令的方法(尚未实现的功能的解决方法)
可选的日志记录功能,包括显示刀具执行时间的显示
PYFPGA是一个Python 3包,它是在Debian GNU/Linux上开发的。它应该在任何其他兼容的OS上运行,并且可能也可能在不同的操作系统上运行。如果您在非Posix系统上取得成功,请通过问题跟踪器告知我们。
可以使用ISE(xilinx),Vivado(xilinx),Quarts Prime(Intel/Altera),Libero-Soc(Microsemi)和/或Open---源工具。
GDHL( --synth
)允许将VHDL源转换为VHDL 1993 Netlist。
Yosys允许合成Verilog和VHDL(使用ghdl-yosys-plugin
),并支持多种输出格式:JSON,Verilog,Edif,Ett。
NextPNR可用于实施JSON NetLists。
此外,ISE和Vivado得到了实施Verilog网络名单的支持。
传输Bitstreams和编程设备:
ISE(影响)可用于通过JTAG编程FPGA和/或记忆(BPI和SPI)。
Vivado,Quartus和Iceprog(用于ICE40设备的Icestorm)可用于编程FPGA。
尚未支持使用Libero-SOC和编程ECP5设备(Prjtrellis,OpenOCD)编程。
笔记:
开源工具是来自GHDL/Docker项目的支持的槽容器图像,因此必须安装Docker或Podman 。 CI服务中可以使用相同的工作流程。
ISE,Libero-Soc,Quartus Prime和Vivado必须准备从终端执行(安装且配置良好)。
pyfpga需要python >=3.6
。目前,它仅作为Github上托管的GIT存储库可用。它可以与PIP一起安装:
pip install 'git+https://github.com/PyFPGA/pyfpga#egg=pyfpga'
在GNU/Linux上,在系统上安装PIP软件包需要
sudo
。或者,使用--local
在家中安装PYFPGA。
您可以通过git克隆或下载tarball/zipfile获取存储库的副本:
git clone https://github.com/PyFPGA/pyfpga.git cd pyfpga
然后,使用repo根源的PIP:
pip install -e .
使用
-e
(--editable
),您的应用程序通过一种符号链接安装到站点包中。这允许通过GIT进行更改或更改分支,而无需重新安装包装。