VHDL que pode danificar o FPGA


22

Li em algum lugar que um código VHDL ruim pode levar a danos no FPGA.

É possível danificar um FPGA com código VHDL? Que tipo de condições causaria isso e quais são os piores cenários?


2
O único cenário em que pude pensar é em um projeto em que muitos, muitos FFs são cronometrados para aquecer o FPGA.
Claudio Avi Chami 21/03

Bem, ele pode ser incorporado em um circuito mal projetado, que rodará algumas correntes em torno da queima de material, se não for programado corretamente.
Eugene Sh.

3
o pior cenário provavelmente é que o fpga é usado para aprendizado de máquina e cria uma IA desonesta que destrói o mundo e o universo. mais seriamente, se você estiver usando código não verificado em um FPGA conectado ao computador, ele poderá infectar o computador. Além disso, se for usado para controlar dispositivos de alta potência, você pode queimar um edifício.
satibel 22/03

Respostas:


25

Adicionando à resposta do @ Anonymous, existem projetos que você pode criar que podem danificar a estrutura de um FPGA.

Para iniciantes, se você criar um projeto muito grande, consistindo em grandes quantidades de registros (por exemplo, 70% do FPGA) com freqüência aproximada da frequência máxima dos FPGAs, é possível aquecer o silício consideravelmente. Sem refrigeração suficiente, isso pode causar danos físicos. Perdemos um FPGA de US $ 13.000 porque superaqueceu devido ao kit dev ter um péssimo sistema de refrigeração.

Outro caso mais simples pode ser loops combinacionais. Por exemplo, se você instanciar três portas não ligadas em um anel e desativar ou ignorar os avisos dos sintetizadores sobre essa estrutura, você pode formar algo que é muito ruim para um FPGA. Neste exemplo, você faria um oscilador multi-GHz que poderia produzir muito calor em uma área muito pequena, provavelmente danificando o ALM e a lógica circundante.


1
Às vezes, loops combinatórios são sugeridos como geradores de números aleatórios verdadeiros. Não tenho experiência com osciladores de anel , mas duvido que apenas três portas causem algum dano. Dirigir sua produção para muitos portões provavelmente fará mal.
Andreas

7
thx Eu tenho 2-3 placas agora inúteis por causa de erros de design com spartan 6 nelas. Vou tentar fazer isso: P
AntoineLev

Também é possível carregar um fluxo de bits que impede o carregamento de outros fluxos de bits ou, pelo menos, dificulta a execução.
precisa

8

Código não é a palavra certa nesse contexto. Enquanto Verilog ou VHDL parecem programa, a saída do compilador é uma configuração que é carregada no chip FPGA que forma o circuito eletrônico dentro dele.

Dois tipos me vêm à mente:

  • danos físicos: por exemplo, vários pinos FPGA são conectados juntos (ou a outro dispositivo) e começam a produzir diferentes voltagens lógicas ao mesmo tempo. Fluxos de corrente - pode ser corrente excessiva - que eventualmente danifica o (s) portão (s);
  • dano lógico: o circuito pode manipular o chip flash ou o dispositivo de configuração de maneira inadequada e danificar a imagem de dados; todo esse dispositivo pode ter problemas de funcionamento.

4
O tópico de danos físicos pode ser de onde veio a cotação do OP. Como desenvolvedor de software, me disseram que uma regra geral é que "software" não deve causar danos físicos ao dispositivo, enquanto "firmware" pode causar danos, como conectar dois mergulhadores um ao outro.
Cort Ammon - Restabelece Monica

2
@CortAmmon "como conectar dois mergulhadores um ao outro" - O que é isso, um interruptor de conexão cruzada de mangueira de ar?
user253751

1
@immibis Você me pegou! A regra real era "não confie no software / squishyware na cabeça do seu amigo enquanto ele estiver respirando; em vez disso, tenha sempre um controle firme sobre o seu regulador". ;-)
Cort Ammon - Reinstala Monica

3

A configuração incorreta de um bloco de pinos de entrada como saídas pode fazê-lo se qualquer outra coisa que os estiver dirigindo for suficientemente rígido.

Não sei se a configuração de alguns pinos para LVDS ou um dos padrões LVCMOS enquanto o banco de E / S é alimentado por uma tensão excessivamente alta (energia de 3,3V com um padrão de IO de 1,8V, por exemplo, ou o oposto em uma entrada) faria isto?

Obviamente, problemas térmicos podem ser uma possibilidade, fazendo algo tolo como instanciar muitos, muitos, osciladores de anel.


O padrão de E / S fornecido como restrições ao projeto é apenas para cálculos de tempo. Se o banco de E / S for um banco de 3,3 V e alimentado por 3,3V, nada acontecerá se você escolher um padrão de 1,8V.
Paebbels

@Paebbels, não tenho certeza de qual ferramenta você está usando, mas geralmente quando você define um padrão de E / S, ele controla a voltagem do local de E / S. Se um pino de entrada FPGA estiver definido com uma voltagem muito menor do que o dispositivo externo está direcionando para esse pino, essa entrada FPGA poderá ser danificada.
Ciano

@ Ciano que não está correto. A tensão do pino depende da tensão do banco de E / S e não de uma restrição.
Paebbels 25/05

1

Os FPGAs podem ser reconfigurados em tempo de execução com um novo fluxo de bits (parcial). Normalmente, esse fluxo é carregado de uma fonte externa, mas você também pode criá-lo no FPGA (por exemplo, por uma CPU softcore incorporada). O uso dessa solução para, por exemplo, realocar dinamicamente sub-designs, não fornece todas as verificações de consistência, como são feitas pelas ferramentas do fornecedor. Portanto, se seu algoritmo estiver quebrado, você poderá ativar os transistores de caminho falso em um FPGA e gravá-los.

Você também pode escolher modos de operações falsas para primitivas de FPGA, como PLLs ou transceptores.

A reconfiguração dinâmica é como código auto-modificável no software.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.