O PYFPGA é uma classe Python para desenvolvimento de FPGA independente de fornecedor . Ele permite o uso de um único arquivo de projeto e executando programaticamente a síntese , implementação , geração de bitstream e/ou transferência para placas suportadas.
O fluxo de trabalho é centrado na linha de comando.
É amigável com sistemas de controle de versão e integração contínua (IC).
Permite reprodutibilidade e repetibilidade.
Consome menos recursos do sistema do que os fluxos de trabalho baseados em GUI.
Crie sua ferramenta FPGA personalizada usando um fluxo de trabalho adaptado às suas necessidades!
AVISO: (2022-05-15) O PYFPGA está no processo de ser fortemente reescrito/simplificado. A maioria das mudanças é interna, mas a API (classe
Project
) mudará.
Um exemplo mínimo de como usar o PYFPGA:
Do projeto de importação do FPGA# Especifique a ferramenta de back-end e um projeto opcional nameprj = Project ('vivado', 'exemplo')# defina o dispositivo/partprj.set_part ('xc7z010-1-clg400')# Adicione fontes HDL ao ProjectPrj. add_files ('location1/*. v') prj.add_files ('location2/top.v')# opcionalmente, adicione arquivos de restrição ao projectprj.add_files ('location3/exemplo.xdc')# Defina o nome da unidade de nível superior. set_top ('top')# gerar o bittream executando a ferramentaprj.generate ()
Agora, você pode ler os documentos ou encontrar mais exemplos em exemplos de subdir.
A API implementada pela Project class
fornece:
Um construtor onde a ferramenta deve ser especificada e um nome de projeto opcional pode ser indicado
Métodos para definir a parte do dispositivo de destino, para adicionar vários arquivos HDL, restrição e TCL ao projeto (no caso de VHDL, um nome de pacote opcional pode ser especificado) e para especificar o nível superior
Métodos para especificar um diretório de saída diferente ou obter algumas configurações do projeto
Métodos para gerar um fluxo de bits e transferi -lo para um dispositivo (executando a ferramenta EDA selecionada)
A capacidade de especificar uma estratégia de otimização (área, potência ou velocidade) quando o BitStream é gerado
Um método para adicionar diretórios de arquivo verilog incluídos
Um método para especificar valores de genéricos/parâmetros
Métodos para adicionar comandos TCL em até seis partes diferentes do fluxo (solução alternativa para recursos ainda não implementados)
Recursos de registro opcionais que incluem a exibição do tempo de execução da ferramenta
O PYFPGA é um pacote Python 3, desenvolvido no Debian GNU/Linux. Ele deve ser executado em qualquer outro sistema operacional compatível com POSIX e provavelmente também em diferentes sistemas operacionais. Se você alcançar o sucesso da falha nos sistemas não-posix, informe-nos através do rastreador de problemas.
Todo o fluxo de desenvolvimento (da leitura do HDL e das fontes de restrição à produção de um bittream) pode ser realizado com ISE (Xilinx), Vivado (Xilinx), Quarts Prime (Intel/Altera), Libero-Soc (Microsemi) e/ou com aberto Ferramentas de origem.
O GDHL ( --synth
) permite a conversão de fontes VHDL em um netlist VHDL 1993.
Yosys permite a sintetizar o Verilog e o VHDL (usando ghdl-yosys-plugin
) e suporta vários formatos de saída: JSON, Verilog, Edif, etc.
NextPNR pode ser usado para implementação de listas JSON.
Além disso, o ISE e o Vivado são suportados para a implementação de listas de verilog.
Transferindo transmissões e dispositivos de programação:
O ISE (impacto) pode ser usado para programar FPGAs e/ou memórias (BPI e SPI) através do JTAG.
Vivado, Quartus e IceProg (ICestorm, para dispositivos ICE40) podem ser usados para programar FPGAs.
A programação com os dispositivos Libero-SOC e Programming ECP5 (Prjtrellis, Openocd) ainda não é suportado.
Notas:
As ferramentas de código aberto são suportadas por imagens de contêineres do projeto GHDL/Docker, para que o Docker ou o Podman devam ser instalados. O mesmo fluxo de trabalho pode ser usado nos serviços de IC.
ISE, Libero-Soc, Quartus Prime e Vivado, devem estar prontos para serem executados no terminal (instalados e bem configurados).
O PYFPGA requer python >=3.6
. Por enquanto, ele só está disponível como um repositório Git hospedado no Github. Pode ser instalado com PIP:
pip install 'git+https://github.com/PyFPGA/pyfpga#egg=pyfpga'
No GNU/Linux, a instalação de pacotes de PIP no sistema requer
sudo
. Como alternativa, use--local
para instalar o PYFPGA em sua casa.
Você pode obter uma cópia do repositório através do clone Git ou baixar um tarball/zipfile:
git clone https://github.com/PyFPGA/pyfpga.git cd pyfpga
Em seguida, use Pip da raiz do repo:
pip install -e .
Com
-e
(--editable
), seu aplicativo é instalado em pacotes de site por meio de um tipo de link simbólico. Isso permite a retirada de alterações no Git ou alterando a ramificação, sem a necessidade de reinstalar o pacote.