컴파일러가 생성한 FPGA 설계 기능 검증 인프라

본 논문은 고수준 컴파일러가 FPGA용 동적 재구성 하드웨어 아키텍처를 출력할 때, 그 기능을 자동으로 검증할 수 있는 인프라스트럭처를 제안한다. 설계 생성·최적화 단계마다 기능 시뮬레이션을 수행함으로써, 새로운 최적화 기법이나 컴파일러 수정이 시스템 전체에 미치는 영향을 신속히 확인한다. 이를 통해 FPGA 컴파일러 연구에서 필수적인 기능 검증을 효율적으

컴파일러가 생성한 FPGA 설계 기능 검증 인프라

초록

본 논문은 고수준 컴파일러가 FPGA용 동적 재구성 하드웨어 아키텍처를 출력할 때, 그 기능을 자동으로 검증할 수 있는 인프라스트럭처를 제안한다. 설계 생성·최적화 단계마다 기능 시뮬레이션을 수행함으로써, 새로운 최적화 기법이나 컴파일러 수정이 시스템 전체에 미치는 영향을 신속히 확인한다. 이를 통해 FPGA 컴파일러 연구에서 필수적인 기능 검증을 효율적으로 지원한다.

상세 요약

이 연구는 고수준 언어(예: C/C++)를 FPGA에 매핑하는 컴파일러가 점차 복잡해지는 현 상황에서, 생성된 하드웨어 구조의 기능적 정확성을 보장하기 위한 체계적인 검증 파이프라인을 구축한다는 점에서 의미가 크다. 핵심은 컴파일러 출력인 RTL(레지스터 전송 수준) 혹은 비트스트림을 자동으로 테스트벤치와 연결해 시뮬레이션 환경을 구성하는 것이다. 이를 위해 논문은 (1) 컴파일러와 검증 인프라 간 인터페이스 정의, (2) 테스트 케이스 자동 생성 메커니즘, (3) 동적 재구성 시나리오를 포함한 시뮬레이션 스케줄러, (4) 결과 비교 및 오류 보고 모듈을 설계하였다. 특히 동적 재구성(FPGA Partial Reconfiguration)을 지원하도록 설계된 점은 기존 정적 검증 프레임워크와 차별화된다. 자동 테스트 케이스 생성은 입력 프로그램의 제어 흐름 그래프(CFG)를 분석해 경로 커버리지를 목표로 하며, 각 경로에 대응하는 입력 벡터와 기대 출력을 자동으로 도출한다. 시뮬레이션 엔진은 ModelSim·Vivado Simulator 등 상용 툴을 래핑하고, 파라미터화된 스크립트를 통해 대규모 설계에도 확장성을 확보한다. 검증 결과는 하드웨어와 소프트웨어 레벨에서 일치 여부를 확인하고, 불일치 시 상세 파형과 소스 매핑 정보를 제공해 디버깅을 용이하게 만든다. 실험에서는 여러 컴파일러 최적화(루프 언롤링, 파이프라인 삽입, 메모리 매핑)와 재구성 전략을 적용한 사례를 통해, 평균 95% 이상의 테스트 커버리지를 달성하면서 검증 시간은 기존 수시간에서 수분 수준으로 단축되었음을 보여준다. 또한, 이 인프라가 새로운 최적화 패스가 추가될 때마다 전체 회귀 테스트를 자동으로 수행함으로써, 회귀 버그를 조기에 탐지하고 컴파일러 신뢰성을 크게 향상시킨다. 한계점으로는 고밀도 설계에서 시뮬레이션 메모리 사용량이 급증할 수 있다는 점과, 실제 하드웨어에서 발생할 수 있는 타이밍 변동을 완전히 반영하기 어렵다는 점을 들었다. 향후 연구에서는 가속화된 하드웨어 시뮬레이션(예: FPGA‑in‑the‑loop)과 형식 검증 기법을 결합해 검증 정확도와 효율성을 동시에 높이는 방향을 제시한다.


📜 논문 원문 (영문)

🚀 1TB 저장소에서 고화질 레이아웃을 불러오는 중입니다...