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?
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?
Réponses:
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.
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:
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.
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.