FPGA를 손상시킬 수있는 VHDL


22

VHDL 코드가 잘못되면 FPGA가 손상 될 수 있다고 읽었습니다.

VHDL 코드로 FPGA를 손상시킬 수 있습니까? 어떤 종류의 조건으로 인해 이런 상황이 발생하며 최악의 시나리오는 무엇입니까?


2
제가 생각할 수있는 유일한 시나리오는 FPGA를 가열하기 위해 많은 FF가 클럭되는 디자인입니다.
Claudio Avi Chami 2016 년

글쎄, 그것은 잘못 설계된 회로에 통합 될 수 있습니다.
유진 Sh.

3
최악의 시나리오는 아마도 fpga가 기계 학습에 사용되고 세계와 우주를 파괴하는 악성 AI를 만드는 것입니다. 더 심각하게는 컴퓨터에 연결된 fpga에서 검사되지 않은 코드를 사용하면 해당 컴퓨터가 감염 될 수 있습니다. 또한 고전력 장치를 제어하는 ​​데 사용되는 경우 건물을 태울 수 있습니다.
satibel

답변:


25

@Anonymous의 대답에 덧붙여 FPGA의 패브릭을 손상시킬 수있는 디자인을 만들 수 있습니다.

우선 FPGA의 최대 주파수에 근접한 모든 클록 (예 : FPGA의 70 %)으로 구성된 매우 큰 디자인을 구축하면 실리콘을 상당히 가열 할 수 있습니다. 충분한 냉각이 없으면 물리적 손상이 발생할 수 있습니다. 우리는 끔찍한 냉각 시스템을 갖춘 dev-kit으로 인해 과열되어 $ 13k FPGA를 잃었습니다.

또 다른 간단한 경우는 조합 루프 일 수 있습니다. 예를 들어 링에 함께 연결된 3 개의 비 게이트를 인스턴스화하고 해당 구조에 대한 신시사이저 경고를 비활성화하거나 무시하면 FPGA에 매우 나쁜 것을 형성 할 수 있습니다. 이 예에서는 매우 작은 영역에서 많은 열을 발생시켜 ALM 및 주변 논리에 손상을 줄 수있는 멀티 GHz 오실레이터를 만듭니다.


1
조합 루프는 때로는 실수 난수 생성기로 제안됩니다. 링 오실레이터에 대한 경험은 없지만 3 개의 게이트만으로도 해를 끼칠지 의심됩니다. 출력을 많은 게이트로 구동하면 해를 입을 수 있습니다.
Andreas

7
thx 스파르탄 6의 디자인 실수로 인해 2-3 보드가 쓸모가 없습니다. 나는 이것을 시도 할 것이다 : P
AntoineLev

다른 비트 스트림을로드하지 못하게하거나 최소한 어렵게 만드는 비트 스트림을로드 할 수도 있습니다.
Vladimir Cravero

8

이 문맥에서 코드는 올바른 단어가 아닙니다. Verilog 또는 VHDL은 프로그램처럼 보이지만 컴파일러의 출력은 내부의 전자 회로를 형성하는 FPGA 칩에로드되는 구성입니다.

두 가지 유형이 떠 오릅니다.

  • 물리적 손상 : 예를 들어 여러 FPGA 핀이 서로 연결되어 (또는 다른 장치에) 서로 다른 논리적 전압이 동시에 출력되기 시작합니다. 전류 흐름-과도한 전류 일 수 있음-결국 게이트를 손상시킵니다.
  • 논리적 손상 : 회로가 플래시 칩 또는 구성 장치를 잘못 처리하고 그 안에있는 데이터 이미지가 손상 될 수 있습니다.이 전체 장치가 결국 오작동합니다.

4
물리적 손상의 주제는 OP의 견적이 나온 곳 일 수 있습니다. 소프트웨어 개발자로서 나는 일반적인 규칙에 따르면 "소프트웨어"는 장치에 물리적 인 피해를 줄 수없고 "펌웨어"는 두 다이버를 서로 연결하는 등의 손상을 일으킬 수 있다는 것입니다.
Cort

2
@CortAmmon "예를 들어 두 다이버를 서로 연결하는 것"-에어 호스 교차 연결 스위치 란 무엇입니까?
user253751

1
@immibis 당신은 저를 얻었다! 실제 규칙은 "대신 항상 가지고, 친구 호흡하는 동안 당신의 친구의 머리에 소프트웨어 / squishyware에 의존하지 않는이었다 회사 당신의 규제에 이해를." ;-)
Cort Ammon-복원 자 Monica

3

입력 핀 블록을 출력으로 잘못 구성하면 구동하는 것이 무엇이든 충분히 단단 할 경우 그렇게 할 수 있습니다.

IO 뱅크가 지나치게 높은 전압 (예를 들어 1.8V IO 표준의 3.3V 전원 또는 입력의 반대)에서 전원을 공급받는 동안 LVDS 또는 LVCMOS 표준 중 하나에 대한 일부 핀을 구성하는지 여부는 알 수 없습니다. 그것?

명백히 열 문제는 수많은 링 오실레이터를 인스턴스화하는 것과 같은 어리석은 일을함으로써 가능할 수 있습니다.


설계에 제약 조건으로 제공된 I / O 표준은 타이밍 계산만을위한 것입니다. I / O 뱅크가 3.3V 뱅크이고 3.3V로 구동되는 경우 1.8V 표준을 선택하면 아무 일도 일어나지 않습니다.
Paebbels

@Paebbels, 어떤 도구를 사용하는지 확실하지 않지만 일반적으로 I / O 표준을 설정할 때 해당 I / O 위치의 전압을 제어합니다. FPGA 입력 핀이 외부 디바이스가 해당 핀으로 구동하는 것보다 훨씬 낮은 전압으로 설정되면 해당 FPGA 입력이 손상 될 수 있습니다.
Ciano

@Ciano가 올바르지 않습니다. 핀 전압은 제약 조건이 아닌 I / O 뱅크 전압에 따라 다릅니다.
Paebbels

1

FPGA는 런타임에 새로운 (부분) 비트 스트림으로 재구성 할 수 있습니다. 일반적으로이 스트림은 외부 소스에서로드되지만 FPGA에서 자체적으로 생성 할 수도 있습니다 (예 : 임베디드 소프트 코어 CPU). 하위 설계를 동적으로 재배치하는 등의 솔루션을 사용한다고해서 벤더 도구에서 수행 한 모든 일관성 검사를 제공하지는 않습니다. 따라서 알고리즘이 깨지면 FPGA에서 잘못된 경로 트랜지스터를 활성화하고 태울 수 있습니다.

PLL 또는 트랜시버와 같은 FPGA 프리미티브에 대해 잘못된 작동 모드를 선택할 수도 있습니다.

동적 재구성은 소프트웨어의 자체 수정 코드와 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.