VHDL, который может повредить FPGA


22

Я где-то читал, что плохой VHDL-код может привести к повреждению FPGA.

Можно ли даже испортить FPGA с кодом VHDL? Какие условия могут вызвать это и каковы сценарии наихудшего случая?


2
Единственный сценарий, о котором я мог подумать, - это проект, в котором многие, много FF синхронизируются так, чтобы нагревать FPGA.
Клаудио Ави Чами

Ну, это может быть включено в плохо спроектированную схему, которая будет пропускать некоторые токи вокруг горящего материала, если не запрограммирована должным образом.
Евгений Ш.

3
В худшем случае, вероятно, fpga используется для машинного обучения и создает мошеннический ИИ, который разрушает мир и вселенную. более серьезно, если вы используете непроверенный код в fpga, подключенном к компьютеру, он может заразить указанный компьютер. также, если он используется для управления устройствами большой мощности, вы можете сжечь здание.
satibel

Ответы:


25

В добавление к ответу @ Anonymous, вы можете создать дизайн, который может повредить структуру FPGA.

Для начала, если вы построите очень большую конструкцию, состоящую из огромного количества регистров (например, 70% ПЛИС), которые синхронизированы при приближении к максимальной частоте ПЛИС, можно значительно нагреть кремний. Без достаточного охлаждения это может привести к физическому повреждению. Мы потеряли FPGA за 13 тысяч долларов, потому что он перегрелся из-за того, что у dev-kit была ужасная система охлаждения.

Другим более простым случаем могут быть комбинационные циклы. Например, если вы создаете три не связанных между собой шлюза в кольце и отключаете или игнорируете предупреждения синтезаторов о такой структуре, вы можете создать нечто, что очень плохо для FPGA. В этом примере вы создадите генератор с частотой несколько ГГц, который может выделять большое количество тепла в очень маленькой области, что может повредить ALM и окружающую логику.


1
Комбинаторные циклы иногда предлагаются как генераторы истинных случайных чисел. У меня нет опыта работы с кольцевыми генераторами , но я сомневаюсь, что только три вентиля принесут вред. Хотя доведение его выхода до многих ворот, вероятно, принесет вред.
Андреас

7
THX у меня 2-3 доски сейчас бесполезны из-за ошибок дизайна со спартанским 6 на них. Я дам этому попытку: P
AntoineLev

Также возможно загрузить поток битов, который предотвращает загрузку других потоков битов или, по крайней мере, делает его довольно сложным для выполнения.
Владимир Краверо

8

Код не является правильным словом в этом контексте. В то время как Verilog или VHDL выглядят как программы, выход компилятора представляет собой конфигурацию, которая загружается в микросхему FPGA, формирующую в нем электронную схему.

На ум приходят два типа:

  • физическое повреждение: например, несколько выводов ПЛИС соединены вместе (или с другим устройством) и начинают выдавать различное логическое напряжение одновременно. Токовые потоки - это может быть чрезмерный ток - который в конечном итоге повреждает затвор (ы);
  • логическое повреждение: схема может обращаться с флэш-чипом или неправильно конфигурировать устройство, и повреждать изображение данных в нем, это целое устройство в конечном итоге неисправно.

4
Тема физического ущерба может быть тем, откуда взялась цитата ОП. Как разработчик программного обеспечения, мне сказали, что общее правило заключается в том, что «программное обеспечение» не должно быть в состоянии причинить физический вред устройству, в то время как «встроенное программное обеспечение» может нанести ущерб, например, соединить два дайвера друг с другом.
Cort Ammon - Восстановить Монику

2
@CortAmmon «например, подключение двух дайверов друг к другу» - что это, кросс-коммутатор воздушного шланга?
user253751

1
@immibis Ты меня понял! Фактическим правилом было «не полагаться на программное обеспечение / программный пакет в голове вашего собеседника во время дыхания собеседника, вместо этого всегда имейте твердый контроль над вашим регулятором». ;-)
Корт Аммон - Восстановить Монику

3

Неправильная конфигурация блока входных контактов в качестве выходов может сделать это, если что-то еще приводит их в движение.

Я не знаю, подойдет ли конфигурация некоторых выводов для LVDS или одного из стандартов LVCMOS, в то время как банк ввода-вывода питается от слишком высокого напряжения (например, 3,3 В для стандарта 1,8 В или наоборот). Это?

Очевидно, что тепловые проблемы могут быть возможны, если делать что-то глупое, например, создавать множество кольцевых генераторов.


Стандарт ввода / вывода, указанный в качестве ограничений для проектирования, предназначен только для расчета времени. Если блок ввода / вывода имеет напряжение 3,3 В и питание от 3,3 В, ничего не произойдет, если вы выбрали стандарт 1,8 В.
Паеббельс

@Paebbels, не уверен, какой инструмент вы используете, но обычно, когда вы устанавливаете стандарт ввода / вывода, он контролирует напряжение в этом месте ввода / вывода. Если на входной вывод FPGA установлено намного более низкое напряжение, чем то, которое внешнее устройство подает на этот вывод, этот вход FPGA может быть поврежден.
Чиано

@Ciano это не правильно. Напряжение на выводе зависит от напряжения на входе / выходе, а не от ограничения.
Паеббельс

1

FPGA могут быть переконфигурированы во время выполнения с новым (частичным) потоком битов. Обычно этот поток загружается из внешнего источника, но вы также можете создать его самостоятельно в FPGA (например, встроенным программным ядром CPU). Использование такого решения, например, для динамического перемещения подконструкций, не обеспечивает все проверки согласованности, как это делается инструментами вендора. Поэтому, если ваш алгоритм не работает, вы можете включить транзисторы с ложным путем в FPGA и записать их.

Вы также можете выбрать режимы ложных операций для примитивов FPGA, таких как PLL или трансиверы.

Динамическая реконфигурация похожа на самоизменяющийся код в программном обеспечении.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.