VHDL 코드가 잘못되면 FPGA가 손상 될 수 있다고 읽었습니다.
VHDL 코드로 FPGA를 손상시킬 수 있습니까? 어떤 종류의 조건으로 인해 이런 상황이 발생하며 최악의 시나리오는 무엇입니까?
VHDL 코드가 잘못되면 FPGA가 손상 될 수 있다고 읽었습니다.
VHDL 코드로 FPGA를 손상시킬 수 있습니까? 어떤 종류의 조건으로 인해 이런 상황이 발생하며 최악의 시나리오는 무엇입니까?
답변:
@Anonymous의 대답에 덧붙여 FPGA의 패브릭을 손상시킬 수있는 디자인을 만들 수 있습니다.
우선 FPGA의 최대 주파수에 근접한 모든 클록 (예 : FPGA의 70 %)으로 구성된 매우 큰 디자인을 구축하면 실리콘을 상당히 가열 할 수 있습니다. 충분한 냉각이 없으면 물리적 손상이 발생할 수 있습니다. 우리는 끔찍한 냉각 시스템을 갖춘 dev-kit으로 인해 과열되어 $ 13k FPGA를 잃었습니다.
또 다른 간단한 경우는 조합 루프 일 수 있습니다. 예를 들어 링에 함께 연결된 3 개의 비 게이트를 인스턴스화하고 해당 구조에 대한 신시사이저 경고를 비활성화하거나 무시하면 FPGA에 매우 나쁜 것을 형성 할 수 있습니다. 이 예에서는 매우 작은 영역에서 많은 열을 발생시켜 ALM 및 주변 논리에 손상을 줄 수있는 멀티 GHz 오실레이터를 만듭니다.
이 문맥에서 코드는 올바른 단어가 아닙니다. Verilog 또는 VHDL은 프로그램처럼 보이지만 컴파일러의 출력은 내부의 전자 회로를 형성하는 FPGA 칩에로드되는 구성입니다.
두 가지 유형이 떠 오릅니다.
입력 핀 블록을 출력으로 잘못 구성하면 구동하는 것이 무엇이든 충분히 단단 할 경우 그렇게 할 수 있습니다.
IO 뱅크가 지나치게 높은 전압 (예를 들어 1.8V IO 표준의 3.3V 전원 또는 입력의 반대)에서 전원을 공급받는 동안 LVDS 또는 LVCMOS 표준 중 하나에 대한 일부 핀을 구성하는지 여부는 알 수 없습니다. 그것?
명백히 열 문제는 수많은 링 오실레이터를 인스턴스화하는 것과 같은 어리석은 일을함으로써 가능할 수 있습니다.
FPGA는 런타임에 새로운 (부분) 비트 스트림으로 재구성 할 수 있습니다. 일반적으로이 스트림은 외부 소스에서로드되지만 FPGA에서 자체적으로 생성 할 수도 있습니다 (예 : 임베디드 소프트 코어 CPU). 하위 설계를 동적으로 재배치하는 등의 솔루션을 사용한다고해서 벤더 도구에서 수행 한 모든 일관성 검사를 제공하지는 않습니다. 따라서 알고리즘이 깨지면 FPGA에서 잘못된 경로 트랜지스터를 활성화하고 태울 수 있습니다.
PLL 또는 트랜시버와 같은 FPGA 프리미티브에 대해 잘못된 작동 모드를 선택할 수도 있습니다.
동적 재구성은 소프트웨어의 자체 수정 코드와 같습니다.