VHDL que puede dañar FPGA

22

Leí en alguna parte que un código VHDL incorrecto puede provocar daños FPGA.

¿Es posible dañar un FPGA con código VHDL? ¿Qué tipo de condiciones causarían esto y cuáles son los peores escenarios?

AntoineLev
fuente
2
El único escenario que se me ocurre es un diseño en el que se sincronizan muchos, muchos FF para calentar el FPGA.
Claudio Avi Chami
Bueno, se puede incorporar en un circuito mal diseñado, que correrá algunas corrientes alrededor de la quema de cosas si no se programa correctamente.
Eugene Sh.
3
El peor de los casos probablemente sea que el fpga se usa para el aprendizaje automático y crea una IA deshonesta que destruye el mundo y el universo. más en serio, si está utilizando código no verificado en una fpga conectada a la computadora, puede infectar dicha computadora. Además, si se utiliza para controlar dispositivos de alta potencia, puede quemar un edificio.
satibel

Respuestas:

25

Agregando a la respuesta de @ Anonymous, hay diseños que puede construir que pueden dañar la estructura de un FPGA.

Para empezar, si construye un diseño muy grande que consta de grandes cantidades de registros (por ejemplo, el 70% del FPGA), todos sincronizados a una frecuencia máxima cercana al FPGA, es posible calentar el silicio considerablemente. Sin suficiente enfriamiento, esto puede causar daños físicos. Perdimos un FPGA de $ 13k porque se sobrecalentó debido a que el kit de desarrollo tenía un sistema de enfriamiento terrible.

Otro caso más simple puede ser lazos combinacionales. Por ejemplo, si crea una instancia de tres puertas no encadenadas juntas en un anillo y deshabilita o ignora las advertencias de los sintetizadores sobre dicha estructura, puede formar algo que es muy malo para un FPGA. En este ejemplo, haría un oscilador de varios GHz que podría producir mucho calor en un área muy pequeña, probablemente dañando el ALM y la lógica circundante.

Tom Carpenter
fuente
1
Los bucles combinatorios a veces se sugieren como verdaderos generadores de números aleatorios. No tengo experiencia con osciladores en anillo , pero dudo que solo tres puertas hagan algún daño. Sin embargo, conducir su salida a muchas puertas probablemente hará daño.
Andreas
77
Gracias, tengo 2-3 tableros ahora inútiles debido a errores de diseño con Spartan 6 en ellos. Voy a intentar esto: P
AntoineLev
También es posible cargar un flujo de bits que impide cargar otros flujos de bits, o al menos hace que sea bastante difícil hacerlo.
Vladimir Cravero
8

Código no es una palabra correcta en este contexto. Si bien Verilog o VHDL parecen programas, la salida del compilador es una configuración que se carga en el chip electrónico FPGA que forma un circuito electrónico dentro de él.

Me vienen a la mente dos tipos:

  • daño físico: por ejemplo, varios pines FPGA están conectados entre sí (o a otro dispositivo) y comienzan a emitir diferentes voltajes lógicos al mismo tiempo. Los flujos de corriente - pueden ser corrientes excesivas - lo que eventualmente daña las compuertas;
  • daño lógico: el circuito puede manejar el chip flash o el dispositivo de configuración de manera incorrecta y dañar la imagen de datos que contiene, todo este dispositivo finalmente funciona mal.
Anónimo
fuente
44
El tema del daño físico podría ser el origen de la cita del OP. Como desarrollador de software, me han dicho que una regla general es que el "software" no debería ser capaz de hacer daño físico al dispositivo, mientras que el "firmware" puede causar daños, como conectar dos buzos entre sí.
Cort Ammon - Restablece a Monica el
2
@CortAmmon "como conectar dos buzos entre sí" - ¿Qué es esto, un interruptor de conexión cruzada de manguera de aire?
user253751
1
@immibis me tienes! La regla real era "no confíe en el software / squishyware en la cabeza de su amigo mientras este respira, sino que siempre tenga un control firme de su regulador". ;-)
Cort Ammon - Restablecer Monica
3

La configuración incorrecta de un bloque de pines de entrada como salidas podría hacerlo si cualquier otra cosa que los impulsa es lo suficientemente rígida.

No sé si configurar algunos pines para LVDS o uno de los estándares LVCMOS, mientras que el banco IO está alimentado por un voltaje demasiado alto (potencia de 3.3V con un estándar IO de 1.8V, o lo contrario en una entrada) ¿eso?

Obviamente, los problemas térmicos pueden ser una posibilidad haciendo algo tonto como crear instancias de muchos, muchos osciladores en anillo.

Dan Mills
fuente
El estándar de E / S dado como restricciones al diseño es solo para cálculos de tiempo. Si el banco de E / S es un banco de 3.3 V y funciona con 3.3V, no sucede nada si elige un estándar de 1.8 V.
Paebbels
@Paebbels, no estoy seguro de qué herramienta está utilizando, pero generalmente cuando establece un estándar de E / S, controla el voltaje de esa ubicación de E / S. Si un pin de entrada FPGA está configurado a un voltaje mucho más bajo que el que el dispositivo externo está introduciendo en ese pin, esa entrada FPGA puede dañarse.
Ciano
@Ciano eso no es correcto. El voltaje del pin depende del voltaje del banco de E / S, no de una restricción.
Paebbels
1

Los FPGA pueden reconfigurarse en tiempo de ejecución con un nuevo flujo de bits (parcial). Normalmente, este flujo se carga desde una fuente externa, pero también puede crearlo usted mismo en el FPGA (por ejemplo, mediante una CPU softcore incorporada). El uso de una solución de este tipo, por ejemplo, para reubicar dinámicamente los subdiseños, no proporciona todas las comprobaciones de coherencia que realizan las herramientas del proveedor. Entonces, si su algoritmo está roto, puede habilitar los transistores de ruta falsa en un FPGA y grabarlos.

También puede elegir modos de operaciones falsas para primitivas FPGA como PLL o transceptores.

La reconfiguración dinámica es como el código de auto modificación en el software.

Paebbels
fuente