나는 단지 FPGA에 들어가고 있고 올바르게 이해하면 코드를 사용하여 논리 게이트를 함께 연결하고 있습니다. Verilog에서 CPU를 설계하면 일부 로직 게이트를 연결하고 작동해야하지만 DIY CPU가 얼마나 빨리 실행될 수 있는지 어떻게 알 수 있습니까? 무엇에 의존합니까?
나는 단지 FPGA에 들어가고 있고 올바르게 이해하면 코드를 사용하여 논리 게이트를 함께 연결하고 있습니다. Verilog에서 CPU를 설계하면 일부 로직 게이트를 연결하고 작동해야하지만 DIY CPU가 얼마나 빨리 실행될 수 있는지 어떻게 알 수 있습니까? 무엇에 의존합니까?
답변:
디자인의 속도는 여러 가지로 제한됩니다. 가장 큰 것은 설계에서 조합 경로 (Critical Path) 라고하는 조합 논리를 통한 전파 지연 일 가능성이 높습니다 . 빠른 FPGA를 사용하고 HDL을 매우 신중하게 작성하는 경우 Virtex Ultrascale +와 같은 것으로 700MHz에 도달 할 수 있습니다. Spartan 6과 같은 저가형 FPGA에서 합리적인 수치는 아마도 250MHz와 비슷할 것입니다. 이를 위해서는 어디에서나 파이프 라이닝이 필요하므로 상태 저장 구성 요소 (논리 수준 최소화), 낮은 팬 아웃 (논리 요소로드 최소화) 및 혼잡 한 쥐가없는 (효율적인 라우팅 경로) 사이에 최소한의 조합 논리가 있어야합니다.
다른 FPGA의 패브릭 로직은 다른 타이밍 파라미터를 갖습니다. 더 빠르고 비싼 FPGA는 더 작은 지연을 가지므로 동일한 설계로 더 높은 클록 주파수를 달성하거나 동일한 주파수에서 더 적은 파이프 라인으로 더 복잡한 설계 또는 설계를 실행할 수 있습니다. 특정 프로세스 내에서의 성능은 비슷할 수 있습니다. 예를 들어 Kintex Ultrascale 및 Virtex Ultrascale은 동일한 프로세스에서 만들어지며 유사한 셀 및 라우팅 지연이 있습니다. 주어진 설계가 툴 체인을 통해 실행되고 정적 타이밍 분석에서 타이밍 보고서를 보지 않으면 주어진 설계가 얼마나 빠를 지 말하기는 불가능합니다.
최대 클럭 속도를 결정하기 위해 툴체인 실행을 수행 할 때는 툴이 타이밍 중심이라는 점을 명심하십시오. 지정된 타이밍 제약 조건을 충족 시키려고합니다. 타이밍 제약 조건을 지정하지 않으면 도구가 속도에 맞게 설계를 최적화하지 않으므로 결과가 매우 나빠질 수 있습니다. 일반적으로 툴은 최대 클럭 주파수를 확인하기 위해 클럭주기 제약 조건이 다른 여러 번 실행해야합니다.
임계 경로가 한계가되지 않도록 설계를 최적화 할 수 있다면 클록 생성 및 분배 (PLL, DCM, 클록 버퍼 및 글로벌 클록 네트)의 한계에 도달하게됩니다. 이러한 한계는 부품 데이터 시트에서 확인할 수 있지만 사소한 디자인으로 접근하기는 어렵습니다. 500MHz의 Virtex Ultrascale에서 작동했지만 다른 구성 요소에 트리거 신호를 제공하는 소수의 카운터였습니다.
타겟 기술 (특정 FPGA)에서 설계를 합성하고 정적 타이밍 분석 툴이 최소 클럭주기를 알려줍니다.
또는 처음에 디자인에 구속 조건을 추가하면 도구가 설계의 충족 여부를 알려줍니다.
CPU가 실행되는 속도는 합성 설계에서 가장 긴 플롭-플-플-플-플-플롭 지연에 기반합니다. 플롭 투 플롭 지연에는 클럭 -Q, 라우팅, 로직 / LUT 및 플롭 설정 시간이 포함됩니다. 이것들은 함께 타이밍 의 중요한 경로 를 형성하며 , 배치 및 경로 지정 도구의 타이밍 보고서 출력에서 검사 할 수 있습니다.
파이프 라인, 병렬 실행, 추론 실행 등 주어진 프로세스를 최대한 활용하기 위해이 지연을 최소화하는 아키텍처를 만드는 데 전념하는 전체 설계 분야가 있습니다. FPGA (또는 그 문제에 대해서는 ASIC)에서 성능의 마지막 온스를 짜는 것은 매혹적인 작업입니다.
즉, FPGA 벤더는 최대 MHz 속도에 해당하는 부품에 대해 서로 다른 속도 등급을 제공 할 것입니다. 예를 들어, -2 Xilinx Artix는 파이프 라인이 매우 높은 설계에서 더 높은 클럭 속도를 제공 할 수 있지만 '250MHz'부품입니다.
FPGA 합성 및 배치 및 경로 지정 도구와 상호 작용할 때 설계에 제약 을 주어야 합니다. 이를 통해 달성하려는 목표 플롭-플롭 간 지연 시간을 도구 흐름에 알립니다. Quartus (Altera) 및 Vivado (Xilinx)에서 이러한 제약 조건은 Synopsys Design Constraints를 나타내는 SDC라는 구문을 사용합니다. SDC는 처음에 ASIC 세계에서 왔으며 FPGA 산업에서도 채택되었습니다. SDC에 대해 알아보십시오. 원하는 결과를 얻는 데 도움이됩니다.
Altera와 Xilinx는 SDC 구문 및 기타 여러 주제를 사용하는 방법에 대한 온라인 커뮤니티를 보유하고 있습니다.
즉, 속도에 관심이 있다면 Zynq와 같은 CPU 하드 매크로가있는 FPGA를 고려해야합니다.