VHDL, die das FPGA beschädigen kann

22

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?

AntoineLev
quelle
2
Das einzige Szenario, an das ich denken könnte, ist ein Design, bei dem viele, viele FFs getaktet werden, um das FPGA zu erwärmen.
Claudio Avi Chami
Nun, es kann in eine schlecht ausgelegte Schaltung eingebaut werden, die einige Ströme um brennendes Zeug laufen lässt, wenn sie nicht richtig programmiert ist.
Eugene Sh.
3
Das schlimmste Szenario ist wahrscheinlich, dass das FPGA für maschinelles Lernen verwendet wird und eine betrügerische KI erzeugt, die die Welt und das Universum zerstört. Im Ernst, wenn Sie ungeprüften Code in einem mit dem Computer verbundenen FPGA verwenden, kann dieser Computer infiziert werden. Auch wenn es zur Steuerung von Hochleistungsgeräten verwendet wird, kann ein Gebäude verbrannt werden.
Samstag,

Antworten:

25

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.

Tom Carpenter
quelle
1
Kombinatorische Schleifen werden manchmal als echte Zufallszahlengeneratoren vorgeschlagen. Ich habe keine Erfahrung mit Ringoszillatoren , aber ich bezweifle, dass nur drei Tore irgendetwas anrichten. Wenn Sie den Ausgang zu vielen Toren treiben, kann dies jedoch Schaden anrichten.
Andreas
7
thx Ich habe 2-3 Boards, die jetzt wegen Designfehlern mit Spartan 6 unbrauchbar sind. Ich werde es versuchen: P
AntoineLev
Es ist auch möglich, einen Bitstrom zu laden, der das Laden anderer Bitströme verhindert oder zumindest erschwert.
Vladimir Cravero
8

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:

  • Physischer Schaden: Beispielsweise sind mehrere FPGA-Pins miteinander (oder mit einem anderen Gerät) verbunden und geben gleichzeitig unterschiedliche logische Spannungen aus. Strom fließt - kann übermäßiger Strom sein - der schließlich das Gate (die Gates) beschädigt;
  • logischer Schaden: Die Schaltung kann den Flash-Chip oder das Konfigurationsgerät nicht richtig handhaben und das Datenimage darin beschädigen. Dies führt schließlich zu Fehlfunktionen des gesamten Geräts.
Anonym
quelle
4
Das Thema des physischen Schadens könnte lauten, woher das Zitat des OP stammt. Als Softwareentwickler wurde mir allgemein mitgeteilt, dass "Software" dem Gerät keinen physischen Schaden zufügen darf, während "Firmware" Schäden verursachen kann, z. B. wenn zwei Taucher miteinander verbunden werden.
Cort Ammon - Reinstate Monica
2
@CortAmmon "wie zwei Taucher miteinander verbinden" - Was ist das, ein Luftschlauch-Crossconnect-Schalter?
user253751
1
@immibis Du hast mich erwischt! Die eigentliche Regel lautete: "Verlassen Sie sich beim Atmen Ihres Kumpels nicht auf die Software / Squishyware im Kopf Ihres Kumpels, sondern haben Sie Ihren Atemregler immer fest im Griff." ;-)
Cort Ammon - Reinstate Monica
3

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.

Dan Mills
quelle
Der als Einschränkungen für das Design angegebene E / A-Standard dient nur zur Zeitberechnung. Wenn die E / A-Bank eine 3,3-V-Bank ist und mit 3,3 V versorgt wird, geschieht nichts, wenn Sie einen 1,8-V-Standard wählen.
Paebbels
@Paebbels, nicht sicher, welches Tool Sie verwenden, aber normalerweise regelt es beim Festlegen eines E / A-Standards die Spannung an dieser E / A-Position. Wenn ein FPGA-Eingangspin auf eine viel niedrigere Spannung eingestellt ist als das, was das externe Gerät in diesen Pin treibt, kann dieser FPGA-Eingang beschädigt werden.
Ciano
@Ciano das stimmt nicht. Die Pin-Spannung hängt von der E / A-Bank-Spannung ab, ohne dass eine Einschränkung vorliegt.
Paebbels
1

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.

Paebbels
quelle