Я где-то читал, что плохой VHDL-код может привести к повреждению FPGA.
Можно ли даже испортить FPGA с кодом VHDL? Какие условия могут вызвать это и каковы сценарии наихудшего случая?
Я где-то читал, что плохой VHDL-код может привести к повреждению FPGA.
Можно ли даже испортить FPGA с кодом VHDL? Какие условия могут вызвать это и каковы сценарии наихудшего случая?
Ответы:
В добавление к ответу @ Anonymous, вы можете создать дизайн, который может повредить структуру FPGA.
Для начала, если вы построите очень большую конструкцию, состоящую из огромного количества регистров (например, 70% ПЛИС), которые синхронизированы при приближении к максимальной частоте ПЛИС, можно значительно нагреть кремний. Без достаточного охлаждения это может привести к физическому повреждению. Мы потеряли FPGA за 13 тысяч долларов, потому что он перегрелся из-за того, что у dev-kit была ужасная система охлаждения.
Другим более простым случаем могут быть комбинационные циклы. Например, если вы создаете три не связанных между собой шлюза в кольце и отключаете или игнорируете предупреждения синтезаторов о такой структуре, вы можете создать нечто, что очень плохо для FPGA. В этом примере вы создадите генератор с частотой несколько ГГц, который может выделять большое количество тепла в очень маленькой области, что может повредить ALM и окружающую логику.
Код не является правильным словом в этом контексте. В то время как Verilog или VHDL выглядят как программы, выход компилятора представляет собой конфигурацию, которая загружается в микросхему FPGA, формирующую в нем электронную схему.
На ум приходят два типа:
Неправильная конфигурация блока входных контактов в качестве выходов может сделать это, если что-то еще приводит их в движение.
Я не знаю, подойдет ли конфигурация некоторых выводов для LVDS или одного из стандартов LVCMOS, в то время как банк ввода-вывода питается от слишком высокого напряжения (например, 3,3 В для стандарта 1,8 В или наоборот). Это?
Очевидно, что тепловые проблемы могут быть возможны, если делать что-то глупое, например, создавать множество кольцевых генераторов.
FPGA могут быть переконфигурированы во время выполнения с новым (частичным) потоком битов. Обычно этот поток загружается из внешнего источника, но вы также можете создать его самостоятельно в FPGA (например, встроенным программным ядром CPU). Использование такого решения, например, для динамического перемещения подконструкций, не обеспечивает все проверки согласованности, как это делается инструментами вендора. Поэтому, если ваш алгоритм не работает, вы можете включить транзисторы с ложным путем в FPGA и записать их.
Вы также можете выбрать режимы ложных операций для примитивов FPGA, таких как PLL или трансиверы.
Динамическая реконфигурация похожа на самоизменяющийся код в программном обеспечении.