Ich habe irgendwo gelesen, dass schlechter VHDL-Code zu FPGA-Schäden führen kann.
Ist es überhaupt möglich, ein FPGA mit VHDL-Code zu beschädigen? Welche Bedingungen würden dies verursachen und was sind die Worst-Case-Szenarien?
Ich habe irgendwo gelesen, dass schlechter VHDL-Code zu FPGA-Schäden führen kann.
Ist es überhaupt möglich, ein FPGA mit VHDL-Code zu beschädigen? Welche Bedingungen würden dies verursachen und was sind die Worst-Case-Szenarien?
Antworten:
Neben der Antwort von @ Anonymous gibt es auch Designs, die Sie erstellen können, um die Struktur eines FPGA zu beschädigen.
Für den Anfang ist es möglich, das Silizium beträchtlich zu erwärmen, wenn Sie ein sehr großes Design erstellen, das aus einer großen Anzahl von Registern besteht (z. B. 70% des FPGA), die alle nahe der maximalen Frequenz des FPGA getaktet sind. Ohne ausreichende Kühlung kann dies zu physischen Schäden führen. Wir haben ein 13.000-Dollar-FPGA verloren, weil es aufgrund des Entwicklungskits mit einem fürchterlichen Kühlsystem überhitzt ist.
Ein anderer einfacherer Fall können Kombinationsschleifen sein. Wenn Sie beispielsweise drei nicht in einem Ring verkettete Gatter instanziieren und die Synthesizer-Warnungen zu einer solchen Struktur deaktivieren oder ignorieren, können Sie etwas bilden, das für ein FPGA sehr schlecht ist. In diesem Beispiel würden Sie einen Multi-GHz-Oszillator herstellen, der auf kleinstem Raum viel Wärme erzeugen und möglicherweise das ALM und die umgebende Logik beschädigen könnte.
Code ist in diesem Zusammenhang kein richtiges Wort. Während Verilog oder VHDL wie ein Programm aussehen, ist die Ausgabe des Compilers eine Konfiguration, die in den darin enthaltenen elektronischen Schaltkreis des FPGA-Chips geladen wird.
Mir fallen zwei Arten ein:
Wenn Sie einen Block mit Eingangsstiften falsch als Ausgänge konfigurieren, kann dies passieren, wenn alles, was sie sonst noch antreibt, steif genug ist.
Ich weiß nicht, ob das Konfigurieren einiger Pins für LVDS oder einen der LVCMOS-Standards, während die E / A-Bank von einer übermäßig hohen Spannung (z. B. 3,3 V mit 1,8 V E / A-Standard oder umgekehrt an einem Eingang) gespeist wird, ausreichen würde es?
Offensichtlich können thermische Probleme eine Möglichkeit sein, wenn man etwas Dummes tut, wie viele, viele Ringoszillatoren zu instanziieren.
FPGAs können zur Laufzeit mit einem neuen (Teil-) Bitstrom neu konfiguriert werden. Normalerweise wird dieser Stream von einer externen Quelle geladen, aber Sie können ihn auch selbst im FPGA erstellen (z. B. von einer eingebetteten Softcore-CPU). Wenn Sie eine solche Lösung zum Beispiel zum dynamischen Verschieben von Subdesigns verwenden, werden nicht alle Konsistenzprüfungen bereitgestellt, die von den Tools des Herstellers durchgeführt werden. Wenn Ihr Algorithmus defekt ist, können Sie die Transistoren mit falschem Pfad in einem FPGA aktivieren und sie brennen.
Sie können auch falsche Betriebsmodi für FPGA-Grundelemente wie PLLs oder Transceiver auswählen.
Dynamische Rekonfiguration ist wie selbstmodifizierender Code in Software.