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 Art von Bedingungen würde dies verursachen und was sind die Worst-Case-Szenarien?
Ergänzend zur Antwort von @Anonymous gibt es Designs, die Sie erstellen können und die das Gewebe eines FPGA beschädigen können.
Für den Anfang, wenn Sie ein sehr großes Design bauen, das aus riesigen Mengen von Registern besteht (z. B. 70% des FPGA), die alle mit der maximalen Frequenz des FPGA getaktet werden, ist es möglich, das Silizium erheblich zu erhitzen. Ohne ausreichende Kühlung kann dies zu physischen Schäden führen. Wir haben ein 13.000-Dollar-FPGA verloren, weil es aufgrund des schrecklichen Kühlsystems des Entwicklungskits überhitzt war.
Ein anderer einfacherer Fall können Kombinationsschleifen sein. Wenn Sie beispielsweise drei in einem Ring verkettete Nicht-Gatter instanziieren und die Warnungen des Synthesizers vor 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 bauen, der auf sehr kleinem Raum viel Wärme erzeugen und wahrscheinlich das ALM und die umgebende Logik beschädigen könnte.
Code ist in diesem Zusammenhang nicht das richtige Wort. Während Verilog oder VHDL wie ein Programm aussehen, ist die Ausgabe des Compilers eine Konfiguration, die in den FPGA-Chip geladen wird, der darin eine elektronische Schaltung bildet.
Zwei Arten fallen mir ein:
Die falsche Konfiguration eines Blocks von Eingangspins als Ausgänge könnte dies tun, wenn das, 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 IO-Bank mit einer zu hohen Spannung versorgt wird (z. B. 3,3 V Leistung mit einem 1,8-V-IO-Standard oder das Gegenteil an einem Eingang), ausreichen würde es?
Offensichtlich können thermische Probleme eine Möglichkeit sein, indem Sie etwas Dummes tun, wie viele, viele Ringoszillatoren zu instanziieren.
FPGAs können zur Laufzeit mit einem neuen (Teil-)Bitstrom rekonfiguriert werden. Normalerweise wird dieser Stream von einer externen Quelle geladen, Sie können ihn aber auch selbst im FPGA erstellen (z. B. durch eine eingebettete Softcore-CPU). Die Verwendung einer solchen Lösung zum Beispiel zum dynamischen Verschieben von Subdesigns bietet nicht alle Konsistenzprüfungen, wie sie von den Anbieter-Tools durchgeführt werden. Wenn Ihr Algorithmus also kaputt ist, können Sie die Transistoren mit falschem Pfad in einem FPGA aktivieren und sie brennen.
Sie könnten auch falsche Betriebsmodi für FPGA-Primitive wie PLLs oder Transceiver auswählen.
Dynamische Rekonfiguration ist wie sich selbst modifizierender Code in Software.
Claudio Avi Chami
Eugen Sch.
satibel
i336_