VHDL, który może uszkodzić FPGA


22

Czytałem gdzieś, że zły kod VHDL może prowadzić do uszkodzenia FPGA.

Czy możliwe jest uszkodzenie FPGA za pomocą kodu VHDL? Jakie warunki to spowodują i jakie są najgorsze scenariusze?


2
Jedyny scenariusz, jaki mogłem wymyślić, to projekt, w którym wiele, wiele FF jest taktowanych tak, aby nagrzewać FPGA.
Claudio Avi Chami

Cóż, można go włączyć do źle zaprojektowanego obwodu, który poprowadzi niektóre prądy wokół płonących rzeczy, jeśli nie zostanie odpowiednio zaprogramowany.
Eugene Sh.

3
najgorszym scenariuszem jest prawdopodobnie użycie FPGA do uczenia maszynowego i stworzenie nieuczciwej sztucznej inteligencji, która niszczy świat i wszechświat. poważniej, jeśli używasz niezaznaczonego kodu w FPGA podłączonej do komputera, może to zainfekować ten komputer. także jeśli służy do sterowania urządzeniami dużej mocy, możesz spalić budynek.
satibel

Odpowiedzi:


25

Dodając do odpowiedzi @ Anonymous, istnieją projekty, które można zbudować, które mogą uszkodzić materiał FPGA.

Na początek, jeśli zbudujesz bardzo dużą konstrukcję składającą się z ogromnych ilości rejestrów (np. 70% FPGA) wszystkie taktowane przy zbliżeniu się do maksymalnej częstotliwości FPGA, możliwe jest znaczne podgrzanie krzemu. Bez wystarczającego chłodzenia może to spowodować fizyczne uszkodzenie. Straciliśmy układ FPGA o wartości 13 000 USD, ponieważ przegrzał się z powodu fatalnego układu chłodzenia zestawu deweloperskiego.

Innym prostszym przypadkiem mogą być pętle kombinacyjne. Na przykład, jeśli utworzysz trzy nie-bramki połączone razem w pierścień i wyłączysz lub zignorujesz ostrzeżenia syntezatorów o takiej strukturze, możesz stworzyć coś, co jest bardzo złe dla FPGA. W tym przykładzie zrobiłbyś oscylator wielu GHz, który mógłby wytworzyć dużo ciepła na bardzo małym obszarze, prawdopodobnie uszkadzając ALM i otaczającą go logikę.


1
Pętle kombinatoryczne są czasami sugerowane jako generatory liczb losowych. Nie mam doświadczenia z oscylatorami pierścieniowymi , ale wątpię, aby tylko trzy bramy wyrządziły jakąkolwiek szkodę. Skierowanie produkcji do wielu bram prawdopodobnie zaszkodzi.
Andreas

7
dzięki mam 2-3 tablice, które są teraz bezużyteczne z powodu błędów projektowych ze spartanem 6 na nich. Spróbuję: P
AntoineLev

Możliwe jest również załadowanie strumienia bitów, który uniemożliwia ładowanie innych strumieni bitów, lub przynajmniej utrudnia to wykonanie.
Vladimir Cravero

8

W tym kontekście kod nie jest właściwym słowem. Podczas gdy Verilog lub VHDL wyglądają jak program, wyjściem kompilatora jest konfiguracja, która jest ładowana do układu FPGA, tworząc w nim obwód elektroniczny.

Przychodzą mi na myśl dwa typy:

  • uszkodzenie fizyczne: na przykład kilka styków FPGA jest połączonych razem (lub z innym urządzeniem) i jednocześnie zaczyna wytwarzać różne napięcie logiczne. Przepływy prądu - mogą być nadmiernym prądem - co ostatecznie uszkadza bramę (bramki);
  • uszkodzenie logiczne: obwód może nieprawidłowo obsługiwać układ flash lub urządzenie konfiguracyjne i uszkodzić w nim obraz danych, całe to urządzenie ostatecznie działa wadliwie.

4
Temat szkód fizycznych może być źródłem cytatu PO. Jako twórca oprogramowania powiedziano mi, że ogólna zasada mówi, że „oprogramowanie” nie powinno być w stanie wyrządzić fizycznej szkody urządzeniu, podczas gdy „oprogramowanie układowe” może spowodować uszkodzenie, na przykład połączenie dwóch nurków.
Cort Ammon - Przywróć Monikę

2
@CortAmmon „na przykład łączenie dwóch nurków ze sobą” - co to jest przełącznik krzyżowy węża powietrznego?
user253751

1
@immibis Masz mnie! Właściwa zasada brzmiała: „nie polegaj na oprogramowaniu / squishyware w głowie twojego kolegi podczas oddychania, zamiast tego zawsze mocno trzymaj swój regulator”. ;-)
Cort Ammon - Przywróć Monikę

3

Błędna konfiguracja bloku pinów wejściowych, ponieważ wyjścia mogą to zrobić, jeśli cokolwiek innego je napędza jest wystarczająco sztywne.

Nie wiem, czy skonfigurowanie niektórych styków dla LVDS lub jednego ze standardów LVCMOS, podczas gdy bank IO jest zasilany z nadmiernie wysokiego napięcia (np. 3,3 V ze standardem IO 1,8 V lub odwrotnie na wejściu) to?

Oczywiście problemy termiczne mogą być możliwe, robiąc coś głupiego, jak tworzenie wielu, wielu oscylatorów pierścieniowych.


Standard I / O podany jako ograniczenia w projekcie służy tylko do obliczeń czasowych. Jeśli bank I / O jest bankiem 3,3 V i jest zasilany 3,3 V, nic się nie stanie, jeśli wybierzesz standard 1,8 V.
Paebbels,

@ Paebbels, nie wiem, którego narzędzia używasz, ale zwykle po ustawieniu standardu I / O kontroluje napięcie w tej lokalizacji I / O. Jeśli styk wejściowy FPGA jest ustawiony na znacznie niższe napięcie niż to, w które urządzenie zewnętrzne wjeżdża do tego styku, wejście FPGA może zostać uszkodzone.
Ciano

@Ciano to niepoprawne. Napięcie pinu zależy od napięcia banku we / wy, a nie od ograniczenia.
Paebbels

1

Układy FPGA można ponownie skonfigurować w czasie wykonywania za pomocą nowego (częściowego) strumienia bitów. Zwykle strumień ten jest ładowany z zewnętrznego źródła, ale możesz go również utworzyć samodzielnie w FPGA (np. Za pomocą wbudowanego procesora softcore). Zastosowanie takiego rozwiązania do np. Dynamicznego przemieszczania podprojektów nie zapewnia wszystkich kontroli spójności przeprowadzanych przez narzędzia dostawcy. Więc jeśli twój algorytm jest uszkodzony, możesz włączyć tranzystory z fałszywą ścieżką w FPGA i je spalić.

Możesz również wybrać tryb fałszywych operacji dla operacji podstawowych FPGA, takich jak PLL lub transceiver.

Dynamiczna rekonfiguracja jest jak kod modyfikujący się w oprogramowaniu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.