PYFPGA es una clase de Python para el desarrollo FPGA independiente del proveedor . Permite usar un solo archivo de proyecto y ejecutar programáticamente síntesis , implementación , generación de bitstream y/o transferencia a las juntas compatibles.
El flujo de trabajo está centrado en la línea de comandos.
Es amigable con los sistemas de control de versiones e integración continua (CI).
Permite la reproducibilidad y la repetibilidad.
Consume menos recursos del sistema que los flujos de trabajo basados en GUI.
¡Cree su herramienta FPGA personalizada utilizando un flujo de trabajo adaptado a sus necesidades!
ADVERTENCIA: (2022-05-15) PYFPGA está en el proceso de ser fuertemente reescritado/simplificado. La mayoría de los cambios son internos, pero la API (clase
Project
) cambiará.
Un ejemplo mínimo de cómo usar pyfpga:
Desde FPGA Import Project# Especifique la herramienta de backend y un proyecto opcional namePrj = Project ('Vivado', 'Ejemplo')# Establezca el dispositivo/partprj.set_part ('XC7Z010-1 CLG400')# Agregar fuentes HDL al proyectoPrj. add_files ('ubicación1/*. v') prj.add_files ('ubicación2/top.v')# opcionalmente, agregue archivos de restricción al proyectoprj.add_files ('ubicación3/ejemplo.xdc')# Establecer la unidad de nivel superior namePrj. set_top ('top')# Genere el bitstream ejecutando la herramientaprj.generate ()
Ahora, puede leer los documentos o encontrar más ejemplos en ejemplos de subdir.
La API implementada por la Project class
proporciona:
Un constructor donde se debe especificar la herramienta y se puede indicar un nombre de proyecto opcional
Métodos para establecer la parte del dispositivo de destino, para agregar múltiples archivos HDL, restricción y TCL al proyecto (en el caso de VHDL se puede especificar un nombre de paquete opcional) y para especificar el nivel superior
Métodos para especificar un directorio de salida diferente o obtener algunas configuraciones de proyecto
Métodos para generar una corriente de bits y transferirlo a un dispositivo (ejecutar la herramienta EDA seleccionada)
La capacidad de especificar una estrategia de optimización (área, potencia o velocidad) cuando se genera el bitsream
Un método para agregar directorios de archivos incluidos en Verilog
Un método para especificar valores de genéricos/parámetros
Métodos para agregar comandos TCL en hasta seis partes diferentes del flujo (solución para las características aún no implementadas)
Capacidades de registro opcionales que incluyen la visualización del tiempo de ejecución de la herramienta
PYFPGA es un paquete Python 3, que se desarrolla en Debian GNU/Linux. Debería ejecutarse en cualquier otro sistema operativo compatible de Posix y probablemente también en un sistema operativo diferente. Si alcanza el éxito del fracaso en los sistemas que no son de Posix, háganos saber a través del rastreador de problemas.
Todo el flujo de desarrollo (desde leer HDL y fuentes de restricción hasta producir una corriente de bits) se puede realizar con ISE (Xilinx), Vivado (Xilinx), Quarts Prime (Intel/Altera), Libero-SOC (Microsemi) y/o con Open- Herramientas de origen.
GDHL ( --synth
) permite convertir las fuentes VHDL en una lista de redes VHDL 1993.
Yosys permite sintetizar Verilog y VHDL (usando ghdl-yosys-plugin
) y admite múltiples formatos de salida: JSON, Verilog, edif, etc.
NEXTPNR se puede utilizar para la implementación de JSON NetLists.
Además, ISE y Vivado son compatibles con la implementación de listas de red Verilog.
Transferencia de cortetas y dispositivos de programación:
ISE (impacto) se puede utilizar para programar FPGA y/o recuerdos (BPI y SPI) a través de JTAG.
Vivado, Quartus y IceProg (Tormenta ICEST, para dispositivos ICE40) se pueden usar para programar FPGA.
La programación con dispositivos ECP5 de Libero-SOC y Programación (Prjtrellis, OpenOCD) aún no es compatible.
Notas:
Las herramientas de código abierto son imágenes compatibles con el contenedor de canales del proyecto GHDL/Docker, por lo que se debe instalar Docker o Podman . El mismo flujo de trabajo se puede utilizar en servicios de CI.
ISE, Libero-Soc, Quartus Prime y Vivado, deben estar listos para ser ejecutados desde el terminal (instalado y bien configurado).
Pyfpga requiere python >=3.6
. Por ahora, solo está disponible como un repositorio Git alojado en GitHub. Se puede instalar con PIP:
pip install 'git+https://github.com/PyFPGA/pyfpga#egg=pyfpga'
En GNU/Linux, la instalación de paquetes PIP en el sistema requiere
sudo
. Alternativamente, use--local
para instalar PYFPGA en su hogar.
Puede obtener una copia del repositorio a través de Git Clone o descargar un tarball/zipfile:
git clone https://github.com/PyFPGA/pyfpga.git cd pyfpga
Luego, use PIP desde la raíz del repositorio:
pip install -e .
Con
-e
(--editable
) su aplicación se instala en paquetes de sitio a través de un tipo de enlace simbólico. Eso permite extraer cambios a través de GIT o cambiar la rama, sin la necesidad de reinstalar el paquete.