개요

직관적인 설계 및 생산성을 위한 AMD Vitis™ HLS

AMD Vitis™ HLS 도구를 사용하면 C/C++ 함수를 RTL로 합성하여 복잡한 FPGA 알고리즘을 쉽게 만들 수 있습니다. Vitis HLS 도구는 합성 및 배치/경로를 위한 Vivado™ Design Suite와 이종 시스템 설계 및 애플리케이션을 위한 Vitis™ 통합 소프트웨어 플랫폼과 긴밀히 통합되어 있습니다.

  • 사용자는 Vitis HLS 흐름을 사용하여 C 코드에 지시문을 적용함으로써 원하는 구현에 맞는 RTL을 만들 수 있습니다.
  • C 소스 코드에서 여러 설계 아키텍처를 만들 수 있으며 고품질의 CbC(Correct-by-Construction) RTL 경로가 활성화됩니다.
  • C 시뮬레이션은 설계를 검증하는 데 사용할 수 있으며 기존의 RTL 기반 시뮬레이션보다 더 빠른 반복이 가능합니다. 
  • Vitis HLS 도구는 설계 최적화를 용이하게 하는 다양한 분석 및 디버깅 도구 세트를 갖추고 있습니다. 
AMD Vitis HLS Tool diagram

AMD Vitis HLS를 사용하면 고성능 설계를 쉽게 구현할 수 있습니다. AMD 벤치마크에 따르면 많은 설계에서 Vitis HLS의 고급 프로그래밍 방법을 사용하여 500MHz 이상의 FMAX를 달성할 수 있습니다.

이미지 확대
Designs Benchmarked with vitis HLS-f

설계 방법론

AMD Vitis HLS Programming Model diagram

Vitis HLS 프로그래밍 모델

Vitis HLS C 코드는 AMD 적응형 SoC 및 FPGA 아키텍처가 제공하는 이점과 특성을 활용하는 데 중점을 두고 있습니다.

Vitis HLS 도구는 원하는 구현을 모델링하기 위해 병렬 프로그래밍 구조를 지원합니다. 해당 구조는 다음과 같습니다.

  • 프로세스 수준 동시성을 허용하는 HLS 작업
  • 데이터 수준 병렬화를 허용하는 HLS 벡터
  • 동시 작업 간의 통신을 허용하는 HLS 스트림
  • 결과를 통제하기 위해 합성 pragma를 사용할 수 있습니다. 이러한 pragma에는 파이프라인, 언롤, 어레이 분할 및 인터페이스 프로토콜이 포함됩니다.
  • 자세한 내용은 Vitis HLS(High-Level Synthesis) 사용자 가이드의 "HLS 프로그래머 가이드" 섹션을 참조하세요.

MATLAB에서 HLS C++로 코드 생성

MATLAB®에서 개발된 기능은 MATLAB R2025a에서 제공되는 MathWorks HDL 코더의 코드 생성 기능을 통해 AMD Vitis™ HLS 친화적 C++ 코드로 합성할 수 있습니다.


이렇게 생성된 합성 가능한 C++ 코드는 Vitis™ HLS에 대한 입력으로 사용할 수 있습니다. 이 워크플로는 높은 수준의 알고리즘 설계(일반적으로 MATLAB에서 수행됨)에서 낮은 수준의 RTL 구현으로 번역 프로세스를 신속하게 처리할 수 있습니다.


MATLAB 및 HDL 코더를 사용하여 테스트 벤치를 설계 및 생성한 다음 HDL 코더의 코드 생성 기능을 사용하여 AMD 적응형 SoC 및 FPGA에서 시뮬레이션 및 합성을 위해 Vitis HLS에 입력하면 됩니다.


자세한 내용은 MathWorks HDL 코더 페이지를 참조하십시오.

C-RTL 변환

Vitis HLS 도구는 C 코드의 다양한 부분을 다르게 합성합니다.

  • C/C++ 코드의 최상위 함수 인수는 RTL I/O 포트로 합성되며 인터페이스 합성 하드웨어 프로토콜로 자동 구현됩니다.
  • 기타 C 함수는 RTL 블록으로 합성되어 설계 계층 구조를 유지합니다.
  • C 함수 루프는 성능 향상을 위해 롤링 또는 파이프라인 방식으로 유지됩니다.
  • C 코드의 어레이는 BRAM, LUTRAM 및 URAM과 같은 모든 메모리 리소스를 타겟팅할 수 있습니다.
  • 지연율, 시작 간격, 루프 반복 지연율 리소스 사용률 등의 성능 지표는 합성 보고서를 통해 검토할 수 있습니다.
  • Vitis HLS 도구 pragma와 최적화 지시문을 사용하면 C/C++ 코드에 대한 합성 결과를 구성할 수 있습니다. 
AMD Vitis HLS C-to-RTL Conversion diagram
AMD Vitis HLS simulation and verification diagram

시뮬레이션 및 검증

Vtis HLS 도구는 시뮬레이션 흐름이 내장되어 있어 검증 시간을 단축할 수 있습니다.

  • C 시뮬레이션은 C 코드의 기능을 검증합니다. 이 단계는 빠르게 진행되며 C 테스트 벤치를 사용합니다.
  • C/RTL 공동 시뮬레이션은 C 테스트 벤치를 재사용해 생성된 RTL에 대한 검증을 수행하여 RTL이 C 소스 코드와 기능적으로 동일한지 확인합니다. 
  • 이 흐름에는 통합 분석, 디버그, 파형 보기 기능은 물론 인기 시뮬레이터 지원도 포함되어 있습니다.

IP 내보내기

Vitis HLS 도구의 출력은 컴파일된 객체 파일(.xo)로 패키징하거나 RTL IP로 내보낼 수 있는 RTL 구현입니다.

  • 컴파일된 객체 파일(.xo)은 Vitis 애플리케이션 개발 흐름에서 사용할 하드웨어 가속 함수를 만드는 데 사용됩니다.
  • RTL IP는 세 가지 방법으로 사용할 수 있습니다.
    • Vivado™ IP Integrator 도구를 사용하여 추가
    • Vivado IDE에서 RTL 블록으로 가져옴
    • DSP 애플리케이션용 Vitis 모델 컴포저에서 단일 블록 세트로 사용
AMD Vitis HLS IP Export diagram

새로워진 사항

2025.1 릴리스 하이라이트

  • HDL 코더 및 MATLAB R2025a를 사용하여 MATLAB(.m) 설계에서 Vitis HLS 친화적 C++ 코드 생성
  • 새로운 Vitis HLS 사용 편의성 기능
    • 실행 중 변경되는 와이어 입력 및 AXI Lite 입력 모델링(직접 I/O)
    • 최상위 HLS 설계를 위한 Performance pragma(얼리 액세스 공개)
    • 전용 내장 라이브러리를 통한 Versal Complex Multiplier 지원
    • Vitis HLS GUI 개선 사항
    • Clang 16을 통한 초기 C++ 17 지원

2024.2 릴리스 하이라이트

Vitis HLS 버전 2024.2에는 사용자가 HLS 설계를 더욱 쉽게 개발하고 디버깅할 수 있도록 지원하는 다음과 같은 여러 기능이 포함되어 있습니다.

  • 실행 중 변경되는 스칼라/와이어 입력 모델링(직접 I/O)
  • 임의 정밀도 부동 소수점 유형 지원
  • DSP 블록에 HLS 코드 매핑
  • 사용자가 결정하는 코드 실행 순서
  • 사용자 친화적인 방식으로 데이터 형식을 보여 주는 HLS 디버거(GNU 디버거의 자동 서식 지정 기술 사용)

2024.1 릴리스 하이라이트

  • 새로운 스텐실 pragma가 이미지 및 비디오 필터용 HLS C++ 코드를 단순화
  • 새로운 라이브러리 함수 마법사가 AMD Vitis 라이브러리 GitHub 리포지토리 활용

    • AMD Vivado 설계 도구용 "Solver" 및 "Vision"(OpenCV 호환) IP 생성
    • 사용 가능한 라이브러리 예제 실행
  • 메모리 인터페이스용 pragma(ap_memory)가 이제 AMD Vivado IP Integrator용 포트를 번들로 구성 가능

  • 새로운 HLS 구성 요소 비교에서는 2개 이상의 구성 요소에 대한 지표가 나란히 표시됨

  • C++ 함수를 대체하는 사용자-공급자 RTL 코드 지원(블랙박스 흐름)

  • 코드 분석기가 이제 C++ 구조체 멤버를 분해하여 성능 분석을 미세 조정 가능

  • HLS 전역 FSM 인코딩 및 안전 상태 선택을 위한 새로운 사용자 컨트롤

  • C 시뮬레이션 중 Clang 새니타이저에 액세스하여 주소 및 초기화 검사 수행

2023.2 릴리스 하이라이트

  • HLS 구성 요소를 위한 새로운 Vitis™ 통합 IDE
  • 새로운 Vitis HLS 라이선스 요구 사항
  • C 합성을 실행하기 전에 성능 추정치를 얻기 위한 새로운 코드 분석기 기능
  • AXI 인터페이스 개선 사항:
    • HLS AXI 스트림 사이드 채널 지원 개선 사항
    • 사용자 구성 가능 AXI 마스터 캐싱 지원
  • 기타 개선 사항:
    • C 합성 중에 설계 크기 문제를 식별할 수 있는 새로운 코드 복잡성 보고서
  • 컴파일 시간 개선: 2023.1에 비해 2023.2에서 평균 컴파일 시간 20% 개선1

2023.1 릴리스 하이라이트

  • 성능 개선 사항2: 2022.2에 비해 2023.1에서 평균 지연율 5.2% 개선
  • Vitis HLS 도구에서 L1 라이브러리 함수를 쉽게 다운로드, 확인, 인스턴스화하는 쉬운 방법. 동영상 시청하기
  • Vitis HLS 도구 내에서 AXI 트랜잭션 및 버스트 보고에 대한 지원 강화

2022.2 릴리스 하이라이트

  • 데이터 처리 애플리케이션을 위한 "태스크 수준 병렬" 코드를 작성하는 새로운 방법
    • 사용자가 새로운 hls::task 함수를 사용하여 태스크 수준 병렬성을 명시적으로 정의 가능
    • 순수 스트리밍 설계(예: 패킷 스위칭)를 위한 모델링이 용이함​
  • 성능 및 타이밍 개선 사항
    • 성능 향상을 위해 도구가 자동으로 언롤, 파이프라인, 어레이 분할 및 인라인 pragma를 추론
  • 분석 및 디버그 개선 사항
    • 생성된 RTL 코드에서 C 소스의 print 문을 합성하는 새로운 기능
    • RTL이 시뮬레이션되면 코드 블록의 실행과 변수 값을 추적 가능
  • 사용 편의성
    • 이제 FFT 및 FIR IP에 대한 hls::stream 인터페이스 지원

2022.1 릴리스 하이라이트

  • 새로운 타임라인 추적 뷰어
    • 설계에 남아 있는 모든 함수(모듈로 변환된 함수)의 런타임 프로파일 표시
    • 공동 시뮬레이션 후 데이터 흐름 영역의 동작을 확인하는 데 특히 유용 Vitis™ HLS에 기본 제공 - 더는 xsim 파형 뷰어를 실행할 필요 없음
  • 새로운 성능 pragma
    • #pragma hls performance를 사용하여 처리율 목표 HLS
    • HLS는 가능한 한 최소한의 리소스를 사용하여 목표 달성 시도
    • HLS는 수행된 변환을 나타내며, 목표를 달성할 수 없는 경우 제한 요인을 표시
  • 블록 스트림 유형에 대한 어레이 분할 지원
    • 각 요소가 어레이인 hls::stream 개선
    • 대규모 어레이 처리를 더 작고 파이프라인화된 부분으로 나누는 데 사용 가능

2021.2 릴리스 하이라이트

  • 사용자 제어 버스트 추론
    • 사용자가 새로 도입된 수동 버스트 최적화 채택 가능
    • 버스트 동작 수동 제어를 지원하도록 새로운 클래스 'hls::burst_maxi' 추가. 새로운 클래스와 함께 사용할 수 있도록 새로운 HLS API 제공
    • 사용자는 AXI AMBA 프로토콜과 HLS 설계의 하드웨어 트랜잭션 수준 모델링 이해 필요
  • 타이밍 및 QoR 개선 사항
    • HLS 타이밍 추정 정확도 향상. HLS가 타이밍 종결을 보고할 때 Vivado™ RTL 합성도 타이밍을 충족할 것으로 예상
  • EoU 개선 사항
    • C 합성 보고서에 인터페이스 어댑터 보고서 추가
    • 사용자는 인터페이스 어댑터가 설계에 미치는 리소스 영향을 알아야 합니다.
    • 인터페이스 어댑터에는 설계 QoR에 영향을 주는 가변 속성이 있습니다.
    • pragma 및 pragma에 대한 경고 목록을 표시하기 위해 합성 보고서에 새 섹션 추가
  • 분석 및 보고 개선 사항
    • 새로운 마우스 드래그 기반 확대 및 축소 기능
    • 전체 그래프를 표시하고 전체 그래프의 일부를 사용자가 확대할 수 있는 새로운 개요 기능
    • 모든 함수와 루프가 해당 시뮬레이션 데이터와 함께 표시됨
    • 이제 시뮬레이션 후 새로운 Timeline Trace Viewer(타임라인 추적 뷰어)를 사용할 수 있습니다. 이 뷰어는 설계의 런타임 프로파일을 보여주며, 사용자는 Vitis HLS GUI에서 작업을 계속할 수 있습니다.

2021.1 릴리스 하이라이트

  • GUI의 새로운 "Flow Navigator"를 통해 흐름 단계 및 보고서에 빠르게 액세스.  컨텍스트별 "합성, 분석, 디버그" 보기를 일반 기본 컨텍스트로 병합
  • BIND_OP 및 BIND_STORAGE 지시문에 대한 새로운 합성 보고서 섹션
  • 새로운 합성 후 텍스트 보고서는 GUI 합성 보고서에 제공된 정보를 반영
  • IP 내보내기 및 Vivado™ 구현 실행 위젯은 설정 및 제약 조건 파일을 Vivado로 전달하는 옵션으로 재설계됨
  • II, 지연율 또는 DSP/BRAM 사용률 핫스팟을 감지하기 위한 선택적 히트맵으로 강조 표시할 수 있는 함수와 루프를 시각화하는 새로운 함수 호출 그래프 뷰어
  • DSP 블록 네이티브 부동 소수점 연산에 대한 Versal™ 타이밍 보정 및 새로운 컨트롤(config_op의 -precision 옵션)
  • 대체 플러시 가능 파이프라인 옵션 개선(FRP(Free Running Pipeline))
  • Vitis에서 m_axi 인터페이스 재구성은 hls::vector 유형을 통해 수행되어야 함
  • "auto, "uram", "bram" 또는 "lutram"일 수 있는 s_axilite 및 m_axi 데이터 스토리지에 대한 새로운 맞춤화 옵션을 통해 설계에서 RAM 사용률 조정 가능
  • Vitis에서는 커널을 위한 새로운 연속("무한") 실행 모드 도입
  • axi_lite 보조 클럭 옵션 복구

성공 스토리

Vitis HLS 고객 성공 사례: Intuitive Surgical

수술용 로봇 분야의 세계적인 선두 업체인 Intuitive Surgical은 FPGA를 사용하여 일부 고성능 이미징 요구 사항을 구현합니다.

프로토타입을 제작하는 데 필요한 기능 중 하나는 초당 60프레임(FPS)의 4K 해상도를 위한 이미지 워핑 기능이었습니다. 설계에는 엄격한 지연율 요구 사항이 있었습니다. Intuitive Surgical은 시간 제약으로 인해 Vitis HLS를 사용하여 이 기능을 구현하기로 결정했습니다. 이 코드는 AMD Vitis HLS 팀의 기술 지원을 통해 완전히 새롭게 개발되었습니다. 전체 설계 프로세스는 약 2주가 걸렸으며 성능 목표가 달성되었습니다.

"이미지 워핑은 FPGA에서 복잡한 작업이며 RTL을 사용하여 구현할 경우 몇 개월이 소요될 수 있습니다. Vitis HLS 기반 접근 방식을 통해 설계를 신속하게 구현할 수 있었습니다. 설계가 완전히 최적화되지는 않았지만 프로토타입 제작 속도는 놀라울 정도였고, HLS의 장점을 잘 보여 주었습니다. 이 방법은 빠른 반복에 도움이 되었고 AMD HLS 팀의 지원과 애플리케이션에 대한 조정으로 전례 없는 시간 내에 FPGA SoC에서 성공적으로 설계를 설정하고 실행할 수 있었습니다. 이미징 기능에 HLS를 활용해 왔고 앞으로도 계속 활용할 계획입니다."

- Azhar Sufi, Intuitive Surgical 펌웨어 - 이미징 선임 관리자

Audio DSP to FPGA Compilation Solution Powered by AMD Zynq™ SoCs and Vitis™ HLS
Vitis HLS를 통해 오디오 DSP-FPGA에서 초저지연율 달성

Insa Lyon의 Emeraude 연구 팀은 임베디드 오디오 시스템을 위한 새로운 신호 처리 기법을 개발하는 데 열중하고 있습니다. 이 팀은 AMD Vitis HLS 도구를 사용하여 초저지연율의 오디오 DSP 프로그램을 구현했습니다. 이 팀이 오디오 DSP-FPGA 컴파일에서 초저지연율을 달성하는 데 Vitis HLS 도구가 어떻게 도움이 되었는지 자세히 알아보려면 여기를 클릭하세요.

고객 사례 연구

Vitis HLS로 더욱 빨라진 설계 공간 탐색

"AMD Vitis™ HLS 도구의 주요 장점은 설계 공간 탐색 기능인 것 같습니다. 최적화 지시문(파이프라이닝, 언롤링 등)을 사용하면 적절한 시간 내에 다양한 아키텍처와 구현을 생성할 수 있습니다. VHDL/Verilog를 사용하여 수동으로 코딩하는 경우에는 이 작업을 수행할 수 없습니다. Vitis HLS의 유용한 기능은 HDL 코드가 기능적으로 올바른지 확인하기 위해 HDL 코드의 공동 시뮬레이션과 검증을 수행할 수 있다는 것입니다." Frank Kesel 박사 - 독일 포르츠하임 대학교 교수

고객 사례 연구

AMD Zynq™ SoC based Radar Sensor System
각주
  1. 2023년 8월 10일, 1,000개의 Vitis L2/L3 코드 라이브러리 설계에 대해 Vitis HLS 릴리스 2023.2와 Vitis HLS 2023.1을 비교한 테스트를 기준으로 합니다. 테스트 중 시스템 구성: 인텔 제온 E5-2690 v4 @ 2.6GHz CPU, 256GB RAM, RedHat Enterprise Linux 8.6. 실제 성능은 다를 수 있습니다. 시스템 제조업체별 구성에 따라 다른 결과가 나올 수 있습니다. -VGL-04
  2. 벤치마크 테스트는 2023년 2월 12일 현재 1208개의 Vitis L1 라이브러리 C 코드 설계에 대해 수행되었습니다. 모든 설계는 CentOS Linux, SMT 활성화, 터보 부스트 비활성화 상태의 2P 인텔 제온 E5-2690 CPU를 탑재한 시스템을 사용하여 실행되었습니다. 하드웨어 구성은 소프트웨어 테스트 결과에 영향을 미치지 않을 것으로 예상됩니다. 결과는 소프트웨어 및 펌웨어 설정과 구성에 따라 달라질 수 있습니다.- VGL-03