HLS (High-Level Synthesis)

HLS(High-Level Synthesis)란?

HLS(High-Level Synthesis)란 설계의 상위 추상화 수준 기술을 기존 ASIC 및 FPGA 구현 워크플로에 입력할 수 있도록 RTL(레지스터 전송 수준) 기술로 변환하는 공정을 말합니다. 이 상위 설계 기술은 C, C++, SystemC™ 또는 MATLAB® 같은 고급 언어나 Simulink® 같은 그래픽 환경으로 표현할 수 있습니다. HLS(High-Level Synthesis) 툴은 이를 설계 입력 형식으로 사용한 다음, ASIC 또는 FPGA 설계에 사용할 수 있도록 합성 가능한 Verilog® 또는 VHDL®을 합성하거나 생성합니다.

높은 추상화 수준에서 작업을 수행하여 하드웨어 설계자는 프로젝트 요구사항을 충족하는 하드웨어 아키텍처의 맥락에서 기능을 개발하는 데 집중할 수 있습니다. 하드웨어 설계자는 HLS(High-Level Synthesis)를 통해 구현 세부 정보 없이 상위수준에서 집중할 수 있습니다. 이를 통해 변경 사항에 쉽게 대응하고, 프로젝트 전반에 걸쳐 재사용할 수 있으며, 더욱 생산적인 기능 검증을 수행할 수 있습니다.

많은 ASIC 및 FPGA 설계는 MATLAB 및 Simulink에서 알고리즘으로 시작하므로 이는 HLS(High-Level Synthesis) 수행 이전에 설계 및 검증을 수행하기에 자연스러운 환경입니다.

HLS(High-Level Synthesis)는 병렬 처리, 일부 타이밍 개념(적절한 경우), 하드웨어 데이터형(일반적으로 고정소수점) 같은 일부 하드웨어 아키텍처 세부 정보의 지정을 수반합니다. 많은 HLS(High-Level Synthesis) 사용자는 아키텍처 및 데이터 흐름의 시각화를 위해 Simulink와 같은 그래픽 환경에 의존합니다. HDL Coder™ 같은 일부 HLS(High-Level Synthesis) 제품은 자동 고정소수점 변환 또는 네이티브 부동소수점 연산의 RTL 구현을 제공합니다.

HLS(High-Level Synthesis) 워크플로

HDL Coder는 RTL 코드 생성과 합성 가능한 SystemC 또는 C++ 코드 생성이라는 두 가지 유형의 HLS(High-Level Synthesis) 워크플로를 지원합니다.

RTL 코드 생성

HDL Coder는 MATLAB 함수 또는 Simulink 서브시스템으로부터 합성 가능한 Verilog, SystemVerilog 및 VHDL의 생성을 지원합니다. 생성된 RTL은 FPGA 또는 ASIC 합성 툴을 사용하여 합성할 수 있습니다.

합성 가능한 SystemC 또는 C++ 코드 생성

HDL Coder는 MATLAB 함수로부터 합성 가능한 SystemC 또는 C++ 코드의 생성을 지원합니다. (Simulink 서브시스템으로부터의 SystemC 또는 C++ 코드 생성은 지원되지 않습니다.)

생성된 합성 가능한 SystemC는 ASIC 설계에서 널리 사용되는 HLS(High-Level Synthesis) 툴인 Cadence® Stratus™ HLS에 대한 입력으로 사용할 수 있습니다. Stratus HLS를 Genus 논리 합성 솔루션 및 Joules RTL 파워 솔루션과 통합함으로써 설계자는 구현의 PPA(전력-성능-면적)에 대한 가시성을 조기에 확보할 수 있습니다.

생성된 합성 가능한 C++ 코드는 HLS(High-Level Synthesis) 툴인 AMD Vitis™ HLS의 입력으로 사용할 수 있습니다. 사용자는 이 툴을 통해 C/C++ 함수를 RTL로 합성하여 AMD FPGA 및 적응형 SoC에 대한 복잡한 알고리즘을 쉽게 만들 수 있습니다. Vitis HLS는 합성과 배치 및 배선을 위한 AMD Vivado™ Design Suite와 이기종 시스템 설계 및 응용 사례를 위한 Vitis 통합 소프트웨어 플랫폼에 긴밀하게 통합되어 있습니다.

MATLAB 및 Simulink를 사용한 HLS(High-Level Synthesis)

ASIC 및 FPGA 설계팀은 HLS(High-Level Synthesis) 워크플로에서 다음과 같은 MATLAB 및 Simulink 제품을 사용할 수 있습니다.

  • HDL Coder - 하드웨어 설계 구현을 위해 Simulink 및 MATLAB로부터 합성 가능한 Verilog, SystemVerilog 또는 VHDL 코드를 자동으로 생성
  • Fixed-Point Designer™ - 부동소수점 시뮬레이션 분석, 시뮬레이션 중 관찰되는 정밀도와 범위를 수용하기 위해 고정소수점 데이터형 제안, 제안된 또는 조정된 고정소수점 데이터형을 적용하는 공정 관리
  • HDL Verifier™ - HLS(High-Level Synthesis)으로부터의 HDL 구현(RTL 또는 넷리스트)이 알고리즘을 기술하는 MATLAB 코드 또는 Simulink 모델의 기능적으로 올바른 구현인지 검증
  • 딥러닝, 신호 처리, 비전무선 통신에 대한 HDL Toolbox - 하드웨어에서의 구현을 위해 다수의 널리 사용되는 응용 사례 특정 구성 블록을 설계팀에 제공
  • Simulink 검증, 확인 및 테스트 제품 - 상위 설계 및 검증에 테스트 스위트 자동화, 정형 검증, 커버리지, 요구사항 검증 추가

참조: Verilog 테스트벤치, VHDL 테스트벤치