High-level synthesis
High-level synthesis - Wikipedia
고수준 합성(High-level synthesis, HLS), 때때로 C 합성, 전자 시스템 수준(ESL) 합성, 알고리즘 합성 또는 행동 합성이라고도 불리는 이것은 디지털 시스템의 추상적인 행동 사양을 자동화된 설계 프로세스를 통해 레지스터 전송 수준 구조를 찾아 주어진 행동을 실현시키는 것입니다.
합성은 일반적으로 클록 수준 타이밍과 같은 저수준 회로 기능과 분리되는 문제의 고수준 사양으로 시작합니다. 초기 HLS는 다양한 입력 사양 언어를 탐색했지만, 최근 연구와 상용 애플리케이션은 대체로 ANSI C/C++/SystemC/MATLAB의 합성 가능한 부분 집합을 수용합니다. 코드는 분석되고, 아키텍처적으로 제한되며, 스케줄링되어 레지스터 전송 수준(RTL) 설계에 트랜잭션 수준 모델(TLM)에서 하드웨어 기술 언어(HDL)로 트랜스컴파일링됩니다. 이후 논리 합성 도구에 의해 게이트 수준으로 합성됩니다.
HLS의 목표는 하드웨어 설계자에게 설계 아키텍처의 최적화에 대한 더 나은 제어와 더 높은 수준의 추상화에서 설계를 설명할 수 있게 함으로써 하드웨어를 효율적으로 구축하고 검증할 수 있게 하는 것입니다. RTL 검증은 이 프로세스의 중요한 부분입니다.
하드웨어는 다양한 추상화 수준에서 설계될 수 있으며, 일반적으로 사용되는 추상화 수준은 게이트 수준, 레지스터 전송 수준(RTL) 및 알고리즘 수준입니다.
논리 합성이 설계의 RTL 설명을 사용하는 반면, 고수준 합성은 SystemC 및 ANSI C/C++과 같은 고수준 언어의 알고리즘 설명으로부터 시작하는 더 높은 추상화 수준에서 작동합니다. 설계자는 일반적으로 모듈 기능과 상호 연결 프로토콜을 개발합니다. 고수준 합성 도구는 마이크로 아키텍처를 처리하고 비동기식 또는 부분적으로 동기화된 기능 코드를 완전히 동기화된 RTL 구현으로 변환하여 하드웨어 구현을 위한 주기별 세부 사항을 자동으로 생성합니다. 그런 다음 (RTL) 구현이 게이트 수준 구현을 생성하기 위한 일반적인 논리 합성 흐름에 직접 사용됩니다.
역사
초기 학술 연구는 스케줄링, 할당 및 바인딩을 고수준 합성을 위한 기본 단계로 추출했습니다. 스케줄링은 유한 상태 기계의 상태를 정의하는 데 사용되는 하나의 클록 주기에 수행할 수 있는 알고리즘의 작은 섹션으로 알고리즘을 분할합니다. 할당 및 바인딩은 지침과 변수를 데이터 경로의 하드웨어 구성 요소, 멀티플렉서, 레지스터 및 배선에 매핑합니다.
첫 세대 행동 합성은 Synopsys가 1994년에 Behavioral Compiler로 출시한 것으로, Verilog 또는 VHDL을 입력 언어로 사용했습니다. 사용된 추상화 수준은 부분적으로 타이밍(클록) 프로세스였습니다. Verilog 또는 VHDL 기반 도구는 부분적으로 타이밍 추상화가 행동을 높은 수준에서 모델링하기에 적합하지 않았기 때문에 널리 채택되지 않았습니다. 10년 후인 2004년 초, Synopsys는 Behavioral Compiler를 사용 중단했습니다.
1998년, Forte Design Systems은 Verilog 또는 VHDL 대신 SystemC를 입력 언어로 사용하는 Cynthesizer 도구를 소개했습니다. Cynthesizer는 2000년 일본 기업들 사이에서 널리 채택되었는데, 일본에는 매우 성숙한 SystemC 사용자 커뮤니티가 있었기 때문입니다. 2001년 소니가 Cynthesizer를 사용하여 첫 고수준 합성 테이프아웃을 달성했습니다. 미국에서의 채택은 2008년부터 본격적으로 시작되었습니다.
2006년에는 파이프라인의 최적 스케줄링을 위한 "SDC modulo 스케줄링" 기법이 개발되었습니다. 이 기법은 레지스터를 최소화하면서 다른 파이프라인 단계에서 작업을 최적으로 스케줄링하는 과제를 정수 선형 프로그래밍 문제에서 선형 프로그래밍 문제로 간소화합니다. ASIC 설계를 위한 고수준 합성에는 잘 작동하지만, FPGA 사용의 경우 브루트 포스 검색을 SDC 스케줄링 알고리즘 위에 구현해야 하는 복잡한 리소스 제약 조건이 일반적으로 존재합니다.
소스 입력
고수준 합성의 가장 일반적인 소스 입력은 ANSI C/C++, SystemC 및 MATLAB과 같은 표준 언어를 기반으로 합니다.
고수준 합성에는 일반적으로 비트 정확 실행 사양도 입력으로 포함되는데, 효율적인 하드웨어 구현을 도출하려면 허용 가능한 평균 제곱 오차 또는 비트 오류율 등에 대한 추가 정보가 필요하기 때문입니다. 예를 들어, 설계자가 "double" 부동 소수점 유형을 사용하여 작성된 FIR 필터로 시작하는 경우, 효율적인 하드웨어 구현을 도출하기 전에 고정 소수점 구현으로 수치 정제를 수행해야 합니다. 정제에는 허용 가능한 양자화 노이즈 수준, 유효한 입력 범위 등에 대한 추가 정보가 필요합니다. 이 비트 정확 사양은 고수준 합성 소스 사양을 기능적으로 완성합니다. 일반적으로 도구는 고수준 코드에서 유한 상태 기계와 산술 연산을 수행하는 데이터 경로를 추론합니다.
프로세스 단계
고수준 합성 프로세스는 여러 활동으로 구성됩니다. 다양한 고수준 합성 도구는 다른 알고리즘을 사용하여 다른 순서로 이러한 활동을 수행합니다. 일부 고수준 합성 도구는 이러한 활동을 결합하거나 반복적으로 수행하여 원하는 솔루션에 수렴합니다.
어휘 처리
알고리즘 최적화
제어/데이터 흐름 분석
라이브러리 처리
리소스 할당
스케줄링
기능 유닛 바인딩
레지스터 바인딩
출력 처리
입력 다시 번들링
기능
일반적으로 알고리즘은 하드웨어 리소스가 적은 경우 많은 클록 주기에 걸쳐 수행될 수 있으며, ALU, 레지스터 및 메모리가 더 많은 경우 더 적은 클록 주기에 걸쳐 수행될 수 있습니다. 따라서 하나의 알고리즘 설명으로부터 도구에 제공된 지시에 따라 다양한 하드웨어 마이크로아키텍처를 생성할 수 있습니다. 이는 처리 속도와 하드웨어 복잡성 사이의 트레이드오프와 동일합니다.
아키텍처 제약 조건
설계 분석에 따라 아키텍처에 대한 합성 제약 조건을 자동으로 적용할 수 있습니다. 이러한 제약 조건은 다음과 같이 구분될 수 있습니다.
계층 구조
인터페이스
메모리
루프
저수준 타이밍 제약 조건
인터페이스 합성
인터페이스 합성은 순수 C/C++ 설명을 입력으로 수용하고 자동화된 인터페이스 합성 기술을 사용하여 설계 인터페이스의 타이밍 및 통신 프로토콜을 제어할 수 있는 기능을 의미합니다. 이를 통해 전체 하드웨어 인터페이스 옵션(스트리밍, 단일 또는 듀얼 포트 RAM, 다양한 핸드셰이킹 메커니즘 등)에 대한 인터페이스 분석 및 탐색이 가능합니다. 인터페이스 합성을 통해 설계자는 소스 설명에 인터페이스 프로토콜을 포함하지 않아도 됩니다.
'반도체 > 회로설계' 카테고리의 다른 글
[📚세미피디아] Functional verification이란? (0) | 2024.04.09 |
---|---|
[📚세미피디아] Logic synthesis란? (0) | 2024.04.09 |
[📚세미피디아] EDA Tool이란? (0) | 2024.04.08 |
[📚세미피디아] ESL [Electronic System Level] 설계 및 검증 (0) | 2024.04.08 |
[📚세미피디아] 집적회로설계란? Integrated circuit design (2) | 2024.04.06 |