VHDL qui peut endommager le FPGA

22

J'ai lu quelque part qu'un mauvais code VHDL pouvait endommager le FPGA.

Est-il même possible d'endommager un FPGA avec du code VHDL? Quel genre de conditions provoquerait cela et quels sont les pires scénarios?

AntoineLev
la source
2
Le seul scénario auquel je pouvais penser est celui d'une conception où de très nombreux FF sont cadencés pour chauffer le FPGA.
Claudio Avi Chami
Eh bien, il peut être incorporé dans un circuit mal conçu, qui exécutera certains courants autour de la combustion s'il n'est pas programmé correctement.
Eugene Sh.
3
le pire des cas est probablement que le fpga est utilisé pour l'apprentissage automatique et crée une IA voyous qui détruit le monde et l'univers. plus sérieusement, si vous utilisez du code non contrôlé dans un fpga connecté à un ordinateur, cela peut infecter ledit ordinateur. aussi, s'il est utilisé pour contrôler des appareils à haute puissance, vous pouvez brûler un bâtiment.
satibel

Réponses:

25

Ajoutant à la réponse de @ Anonymous, il existe des conceptions que vous pouvez construire qui peuvent endommager le tissu d'un FPGA.

Pour commencer, si vous construisez une très grande conception composée d'énormes quantités de registres (par exemple 70% du FPGA) tous cadencés à l'approche de la fréquence maximale des FPGA, il est possible de chauffer considérablement le silicium. Sans refroidissement suffisant, cela peut provoquer des dommages physiques. Nous avons perdu un FPGA de 13 000 $ parce qu'il surchauffait en raison du kit de développement ayant un terrible système de refroidissement.

Un autre cas plus simple peut être les boucles combinatoires. Par exemple, si vous instanciez trois portes non enchaînées dans un anneau et désactivez ou ignorez les avertissements des synthétiseurs sur une telle structure, vous pouvez former quelque chose de très mauvais pour un FPGA. Dans cet exemple, vous feriez un oscillateur multi-GHz qui pourrait produire beaucoup de chaleur dans une très petite zone, endommageant probablement l'ALM et la logique environnante.

Tom Carpenter
la source
1
Les boucles combinatoires sont parfois suggérées comme générateurs de nombres réels aléatoires. Je n'ai aucune expérience avec les oscillateurs en anneau , mais je doute que seulement trois portes feront du mal. Conduire sa sortie vers de nombreuses portes fera probablement du mal.
Andreas
7
thx J'ai 2-3 planches maintenant inutiles à cause d'erreurs de conception avec spartan 6 dessus. Je vais essayer ceci: P
AntoineLev
Il est également possible de charger un flux binaire qui empêche de charger d'autres flux binaires, ou du moins le rend assez difficile à faire.
Vladimir Cravero
8

Le code n'est pas un mot juste dans ce contexte. Alors que Verilog ou VHDL ressemble à un programme, la sortie du compilateur est une configuration qui est chargée dans la puce FPGA formant un circuit électronique à l'intérieur.

Deux types me viennent à l'esprit:

  • dommages physiques: par exemple, plusieurs broches FPGA sont connectées ensemble (ou à un autre appareil) et commencent à émettre une tension logique différente en même temps. Les courants - peut être un courant excessif - qui finissent par endommager les portes;
  • Dommages logiques: le circuit peut gérer la puce flash ou le périphérique de configuration de manière incorrecte et corrompre l'image des données, l'ensemble du périphérique finit par mal fonctionner.
Anonyme
la source
4
Le sujet des dommages physiques pourrait provenir de la citation du PO. En tant que développeur de logiciels, on m'a dit qu'une règle générale est que les "logiciels" ne devraient pas être en mesure de nuire physiquement à l'appareil tandis que les "micrologiciels" peuvent causer des dommages, comme la connexion de deux plongeurs entre eux.
Cort Ammon - Rétablir Monica
2
@CortAmmon "comme connecter deux plongeurs l'un à l'autre" - Qu'est-ce que c'est, un interrupteur de connexion croisée de tuyau d'air?
user253751
1
@immibis Tu m'as eu! La règle actuelle était "ne vous fiez pas au logiciel / squishyware dans la tête de votre copain pendant la respiration du copain, au lieu de cela, tenez toujours fermement votre régulateur". ;-)
Cort Ammon - Réintègre Monica
3

Une mauvaise configuration d'un bloc de broches d'entrée en tant que sorties peut le faire si tout ce qui les pilote est suffisamment rigide.

Je ne sais pas si la configuration de certaines broches pour LVDS ou l'une des normes LVCMOS alors que la banque IO est alimentée à partir d'une tension trop élevée (alimentation 3,3 V avec une norme IO 1,8 V par exemple, ou l'inverse sur une entrée) ferait l'affaire il?

Évidemment, les problèmes thermiques peuvent être une possibilité en faisant quelque chose de stupide comme instancier de nombreux oscillateurs en anneau.

Dan Mills
la source
La norme d'E / S donnée comme contraintes à la conception est juste pour les calculs de synchronisation. Si la banque d'E / S est une banque de 3,3 V et alimentée par 3,3 V, rien ne se passe si vous choisissez une norme de 1,8 V.
Paebbels
@Paebbels, vous ne savez pas quel outil vous utilisez, mais généralement lorsque vous définissez une norme d'E / S, il contrôle la tension de cet emplacement d'E / S. Si une broche d'entrée FPGA est réglée sur une tension bien inférieure à celle que le périphérique externe enfonce dans cette broche, cette entrée FPGA peut être endommagée.
Ciano
@Ciano cela n'est pas correct. La tension des broches dépend de la tension de la banque d'E / S et non d'une contrainte.
Paebbels
1

Les FPGA peuvent être reconfigurés au moment de l'exécution avec un nouveau train de bits (partiel). Normalement, ce flux est chargé à partir d'une source externe, mais vous pouvez également le créer par vous-même dans le FPGA (par exemple par un CPU softcore intégré). L'utilisation d'une telle solution, par exemple pour relocaliser dynamiquement des sous-conceptions, ne fournit pas tous les contrôles de cohérence effectués par les outils du fournisseur. Donc, si votre algorithme est cassé, vous pouvez activer les transistors à faux chemin dans un FPGA et les graver.

Vous pouvez également choisir de faux modes de fonctionnement pour les primitives FPGA comme les PLL ou les émetteurs-récepteurs.

La reconfiguration dynamique est comme un code auto-modifiable dans un logiciel.

Paebbels
la source