Transformar o Python em uma linguagem de descrição e verificação de hardware poderosa, está é a ideia do MyHDL, ferramenta 100% Open Source e gratuita desenvolvida por Jan Decaluwe.
Ferramentas de síntese de alto nível tem aparecido bastante em FPGAs, a ideia é de que a partir de um modelo seja possível gerar um hardware. Sem a necessidade de se preocupar muito com os detalhes de implementação de baixo nível (registradores, portas lógicas, etc.). Não é o caso de MyHDL, apesar de se descrever o hardware em uma linguagem como Python, o hardware ainda é descrito como hardware e não como um modelo de alto nível que deriva um hardware.
No contexto de facilitar o desenvolvimento de hardware e ser uma alternativa as ótimas, mas antigas, linguagens de descrição de hardware (VHDL e Verilog possuem cerca de 35 anos) apareceu o MyHDL.
A ideia é aplicar todos os novos conceitos que apareceram na indústria de desenvolvimento de software de alto nível na descrição de hardware.
Orientação a objeto, desenvolvimento orientado a teste (TDD), testes funcionais, bibliotecas prontas com diversas funcionalidades implementadas (manipulação de texto, funções matemáticas, parte gráfica e etc.) e tudo mais que faz parte do universo Python está disponível para desenvolvimento de hardware com o MyHDL.
Uma das maiores vantagens de se desenvolver seu hardware em alto nível é utilizar todo o poder do Python. Após realizar todos os testes possíveis em Python e garantir que o seu hardware está funcionando, basta apertar o botão “Vai” e gerar o código em VHDL ou Verilog do seu hardware. (Como bem disse Maxfield em sua entrevista ao Embarcados)
A conversão gera código elegante e sintetizável, para gerar o arquivo de configuração do FPGA basta adicionar os arquivos VHDL ou Verilog na ferramenta de seu fabricante e seguir o fluxo normal de desenvolvimento. Esta ferramenta é utilizada tanto na indústria de FPGA quanto na de ASIC.
Em um próximo post faremos um projeto com esta ferramenta.
Para saber mais
Site: https://www.myhdl.org/
Manual de referência: https://docs.myhdl.org/en/latest/
Lista de discussão: https://blog.gmane.org/gmane.comp.python.myhdl
Imagem destacada retirada deste post: https://www.xess.com/blog/learn-fpga-programming-with-myhdl/










Muito legal, em relação ao número de look up tables geradas com relação ao VHDL, alguém já fez alguma comparação?
Parabéns pelo post.
William você ainda descreve o hardware de forma bem semelhante, é possível fazer a exata mesma implementação em MyHDL e VHDL. Tudo depende da sua forma de codificação, na parte de geração ele é basicamente um tradutor de Python para VHDL.
André, conforme já citei pra você o MyHDL brilha, e muito, quando usado como linguagem de verificação. Infelizmente não há nenhum simulador opensource com capacidade de misturar as linguagens, já que a cosimulação em VHDL nunca pegou de fato( o vpi do verilog é muito mais maduro).
Verdade Euripedes! A parte de geração de código é basicamente um tradutor Python -> VHDL.
O código fonte gerado é bem bacana, depende do seu estilo de codificação, estamos avaliando usar somente MyHDL e fazer uma revisão de código no VHDL gerado, se passar mandar bala…
As vantagens para verificação são muito boas.
Um abraço e obrigado pelo auxílio