블로그

FPGA 코드 개발 단순화: ChatGPT가 세상을 변화시키는 방법

AI의 성능과 유연성을 활용하여 FPGA 프로그래밍의 복잡한 세계를 분석하고 파이선을 사용하여 시작하세요.

VHDL과 같은 하드웨어 설명 언어(HDL)는 배우기가 매우 어렵습니다. 복잡성에도 불구하고 Liquid Instruments의 올인원 Moku 테스트 장치와 같은 FPGA(Field Programmable Gate Array)를 사용하여 맞춤형 알고리즘을 실행하려면 이러한 강력한 도구가 필요합니다. Python과 같은 다른 언어는 쉽게 접근할 수 있는 풍부한 정보를 통해 지원되므로 쉽게 연구하고 학습하고 마스터할 수 있습니다. 이제 ChatGPT와 같은 고급 언어 학습 모델 덕분에 Python과 같이 접근 가능하고 잘 알려진 프로그래밍 언어로 스크립트를 입력하고 구문 수준뿐만 아니라 동작 수준에서 이를 FPGA 코드로 신속하게 변환할 수 있습니다. 테스트 목표를 가속화합니다.

이 새로운 기능을 사용하면 코드가 FPGA에서 어떻게 실행되는지 완전히 이해할 필요가 없습니다. 오히려 필요한 코드를 생성하려면 몇 가지 기본적인 컴퓨터 프로그래밍만 알면 됩니다. 인공 지능(AI)을 사용하여 FPGA 코드 개발을 가속화하는 것은 편리하지만 ChatGPT와 같은 도구에서 발생할 수 있는 일반적인 오류를 인식하는 것이 중요합니다. 이 예에서는 제곱근 함수를 변환하는 방법을 보여주고 ChatGPT를 사용하여 Python에서 FPGA 코드를 작성할 때 가장 중요한 고려 사항을 간략하게 설명합니다. 하지만 먼저 FPGA 코드 작성 시의 과제를 검토해 보겠습니다.

  • 프로그래밍 패러다임은 C 및 파이선과 같은 보다 일반적인 언어의 절차적 실행과 매우 다릅니다.
  • 이는 매우 일반적인 기술이 아니므로 Stack Overflow 게시물 및 예제 디자인과 같은 리소스도 그리 일반적이지 않습니다.
  • 디버깅이 어렵습니다. FPGA에서 실행할 디자인을 구축하는 데는 상대적으로 오랜 시간이 걸리므로 반복이 제한됩니다. 거기에 있으면 장치 내부에서 무슨 일이 일어나고 있는지 확인하기 어려울 수 있습니다. 반면에 아주 단순한 초보 실수일 수 있는 것을 밝혀내기 위해 고품질 시뮬레이션을 설정하는 데는 많은 시간이 걸립니다.

FPGA 코딩 분석

FPGA 프로그래밍을 컴퓨터 프로그래밍과 비슷하게 만드는 것은 제조업체의 오랜 목표였습니다. HLS(고수준 합성) 도구를 사용하면 C 또는 유사한 언어로 코드를 작성하고 이를 FPGA에서 실행할 수 있지만 손수 만든 HDL 실행 효율성에는 결코 접근하지 못했습니다. MathWorks HDL Coder™ 및 MyHDL과 같은 도구를 사용하면 각각 MATLAB 또는 Python에서 특별히 설계된 코드를 작성하고 다시 FPGA에서 실행되도록 변환할 수 있지만 이러한 프로그램의 특수 설계는 어쨌든 FPGA 프로그래밍 패러다임을 이해해야 함을 의미합니다. — 더 나은 구문과 테스트 환경을 사용하는 동안.

ChatGPT와 같은 대형 언어 모델(LLM)의 출현으로 이제 하나의 패러다임(예: Python의 절차 코드)으로 작성된 프로그램을 사용하여 달성하려는 작업을 이해하고 다른 패러다임으로 코드를 다시 작성할 수 있는 시스템에 액세스할 수 있습니다. 패러다임(예: FPGA용 하드웨어 설명 언어). 이는 근본적으로 상위 수준 합성 문제에 접근하는 다른 방법으로, 몇 가지 큰 장점과 몇 가지 흥미로운 단점이 있습니다.

  • 좋아하는 프로그래밍 언어로 알고리즘을 작성할 수 있습니다.
  • 간단한 인쇄 문부터 전체 대화형 디버거에 이르기까지 기대했던 모든 기능을 사용하여 동일한 언어로 알고리즘을 디버깅할 수 있습니다.
  • 변환이 처음에 완벽하지 않더라도 ChatGPT 출력을 완벽하게 제작된 예제 코드처럼 처리할 수 있습니다. 여기에서 배우고 이해하면 귀하와 ChatGPT가 서로 문제와 해결책을 더 잘 이해하도록 도울 수 있습니다.

물론 문제가 있습니다. 절차적 코드로 반드시 표현할 수 없는 FPGA 개념이 있습니다. 그렇다면 ChatGPT가 올바른 코드를 생성할 것이라고 어떻게 기대할 수 있습니까? ChatGPT의 대화 인터페이스가 작동하는 곳입니다. 무엇을 해야 할지 말해 보세요! 프롬프트에 원하는 만큼 추가 정보를 추가할 수 있으며 ChatGPT를 몇 번 반복하면 지금까지 함께 작업한 것 중 가장 유용한 쌍 프로그래머가 될 것입니다.

예: FPGA에서 제곱근 구하기

FPGA에서 제곱근을 취하는 예를 들어보겠습니다. 이는 일반적으로 부동 소수점 연산을 사용하는 다소 복잡한 작업으로, 둘 다 FPGA에서 처리하기 쉽지 않습니다. 그림 1과 같이 문제에 대한 몇 가지 접근 방식을 생각하는 데 도움을 주기 위해 ChatGPT를 요청하는 것부터 시작할 수 있습니다.

그림 1: 정수 연산으로 제곱근을 계산하는 일반적인 알고리즘

그런 다음 이를 사용하여 그림 2와 같이 Python의 알고리즘 중 하나를 작성하고 테스트하는 데 도움을 받을 수 있습니다. 이는 GitHub Copilot 또는 AWS CodeWhisperer와 같은 전용 AI 코딩 도구를 사용해 볼 수 있는 기회입니다.

그림 2: 16비트 정밀도 결정

Python에서 코드를 디버그하면서 정확한 비트 수와 예상 출력 값을 유지하는지 확인하세요. 그런 다음 그림 3과 같이 변환을 수행할 차례입니다.

그림 3 : 파이선 함수를 VHDL 엔터티로 변환하는 과정

작업 확인 중

FPGA 코드가 처음에 올바르게 실행되는 경우가 많습니다. 그러나 변환을 수행할 때 ChatGPT에서 저지를 수 있는 몇 가지 일반적인 실수가 있습니다.

  • 정확한 정밀도 비트 수를 유지하지 않아 출력이 항상 0으로 반올림되거나 최대값으로 반올림되거나 단순히 세부 정보가 충분하지 않게 됩니다.
  • 신호를 생성할 때 비트 폭을 제대로 추적하지 않습니다. HDL을 사용하려면 모든 변수의 비트 너비를 수동으로 정확하게 지정해야 하는데, 이는 파이선이 신경 쓸 필요가 없습니다. 입력 및 출력 신호에 원하는 정밀도 비트 수에 대한 정보를 프롬프트에 명시적으로 추가하면 이 문제를 완화할 수 있지만, 일치하지 않으면 합성 오류가 계속 발생할 수 있습니다.
  • 왼쪽 시프트를 오른쪽 시프트로 변환, 알고리즘을 중단시키는 중간 변수 추가 등과 같은 간단한 변환 오류.

이 모든 것이 보여줍니다. 솔루션이 완벽해지기를 기대하기보다는 솔루션에 대해 ChatGPT와 함께 작업할 때 최상의 결과를 얻을 수 있습니다.

그래도 점점 나아지고 있어요. 예를 들어, Python for-loop를 살펴보겠습니다. 이는 VHDL for-loop로 변환될 수 있지만 실제로는 의미상 매우 다릅니다. Python에서는 각 반복이 차례로 발생하는 반면, VHDL에서는 각 반복이 동시에 발생하지만 서로 다른 논리 게이트 세트에서 발생합니다.

ChatGPT의 현재 무료 버전은 차이점을 이해하지 못하고 Python for-loop를 VHDL 루프로 직접 변환했습니다.

현재 GPT4 모델은 루프의 각 반복을 차례로 실행하고 루프의 각 호출을 차례로 실행하여 상태 머신을 올바르게 추론했습니다. 예를 들어, 반복 제곱근 알고리즘이 완료하는 데 16번의 반복이 필요한 경우 이전 입력이 완료될 때까지 다른 입력 처리를 시작할 수 없으며 처리량은 16클록 주기마다 하나의 값이었습니다. 

GPT4 모델은 완전히 파이프라인된 구현을 내보낼 수 있습니다. 여기서 알고리즘은 계속해서 16클럭 주기 대기 시간을 가지지만 16개의 계산이 모두 한 번에 진행되어 클럭 주기마다 하나의 새로운 결과가 나올 수 있습니다.

ChatGPT 기능의 이러한 급속한 개선으로 Python 또는 기타 일반적인 프로그래밍 언어로 FPGA 코드를 작성하는 것이 점점 더 빠르고 효과적으로 이루어지고 있으며, 더 많은 사용자가 사용자 프로그래밍 가능한 FPGA를 사용하여 맞춤형 테스트 장비, 프로토타입 및 기타 알고리즘을 구현할 수 있는 기회를 열어줍니다. 맞춤형 프로그래밍 기능을 갖춘 FPGA에 대한 접근성이 높아짐에 따라 HDL 전문가가 아닌 사람이라도 FPGA가 제공하는 시간 결정적 처리 및 병렬 처리의 이점을 누릴 수 있습니다. 다음과 같은 도구를 사용하여 Moku 클라우드 컴파일 Liquid Instruments에서는 다음과 같은 소프트웨어 정의 테스트 및 측정 장비와 함께 이러한 설계를 테스트할 수 있습니다. 오실로스코프, 스펙트럼 분석기PID 컨트롤러 단일 장치에 완벽하게 통합된 맞춤형 시스템을 구축합니다.

Moku Cloud Compile과 함께 ChatGPT를 사용하는 방법에 대한 더 많은 예를 보려면, 웨비나 시청. 여러 가지 예가 포함된 자세한 블로그를 확인해 볼 수도 있습니다. 여기에서 지금 확인해 보세요. (사용자 정의 일시적 오류 감지) 및 여기에서 지금 확인해 보세요. (절대값).

Moku Cloud Compile로 개발하려는 맞춤형 도구에 대해 질문이 있습니까? 다음 주소로 문의하세요. support@liquidinstruments.com 엔지니어와 연결합니다.