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?
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?
Odpowiedzi:
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ę.
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:
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.
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.