높은 수준의 합성

High-level synthesis

High-level Synthesis(HLS; 고레벨 합성), Electronic System-Level(ESL; 전자시스템 레벨) 합성, 알고리즘 합성, 또는 행동 합성이라고 불리기도 하는 자동 설계 프로세스는 디지털 시스템의 추상적인 행동 사양을 취하여 주어진 [1][2]동작을 실현하는 레지스터 전송 레벨 구조를 찾아냅니다.

합성은 일반적으로 클럭레벨 타이밍과 같은 로우레벨 회로 메커니즘에서 분리되는 문제의 개략적인 사양에서 시작됩니다.최근의 연구 및 상용 애플리케이션은 일반적으로 ANSI C/C++/SystemC/MATLAB합성 가능한 하위 집합을 수용하지만 초기 HLS는 다양한 입력 사양 언어를 [3]탐색했다.코드는 분석되고 구조적으로 제약되며 하드웨어 기술 언어(HDL)에서 Register-Transfer Level(RTL; 레지스터 전송 레벨) 설계로 변환되도록 스케줄 되어 있습니다.이러한 설계는 논리 합성 툴을 사용하여 게이트레벨에 공통적으로 합성됩니다.

HLS의 목표는 하드웨어 설계자가 설계 아키텍처의 최적화를 보다 효과적으로 제어할 수 있도록 하고 설계자가 RTL 구현을 수행하는 동안 설계를 보다 높은 수준의 추상화로 기술할 수 있도록 함으로써 하드웨어를 효율적으로 구축하고 검증할 수 있도록 하는 것입니다.RTL 검증은 프로세스의 [4]중요한 부분입니다.

하드웨어는 다양한 추상화 수준에서 설계할 수 있습니다.일반적으로 사용되는 추상화 레벨은 게이트레벨, Register-Transfer Level(RTL; 레지스터 전송 레벨) 및 알고리즘레벨입니다

논리합성은 설계에 대한 RTL 기술을 사용하는 반면, 높은 수준의 합성은 SystemC 및 ANSI C/C++와 같은 높은 수준의 언어로 알고리즘 기술을 시작으로 더 높은 수준의 추상화에서 작동합니다.일반적으로 설계자는 모듈 기능과 상호 연결 프로토콜을 개발합니다.고급 합성 도구는 마이크로 아키텍처를 처리하여 타이밍에 맞지 않는 기능 코드 또는 부분적으로 타이밍이 설정된 기능 코드를 완전 타이밍의 RTL 구현으로 변환하여 하드웨어 [5]구현을 위한 사이클별 세부 정보를 자동으로 생성합니다.다음으로 (RTL) 실장은 게이트레벨 실장을 작성하기 위해 기존의 로직 합성 흐름에서 직접 사용됩니다.

역사

초기 학술 작업은 높은 수준의 합성을 위한 기본 단계로서 스케줄링, 할당 및 구속력을 추출했다.스케줄링에서는 유한 상태 머신의 상태를 정의하기 위해 사용되는 제어 단계에서 알고리즘을 분할합니다.각 제어 스텝에는 하드웨어의 단일 클럭사이클로 실행할 수 있는 알고리즘의 작은 섹션이1개씩 포함되어 있습니다.할당 및 바인딩은 명령과 변수를 데이터 경로의 하드웨어 구성 요소, 멀티플렉서, 레지스터 및 와이어에 매핑합니다.

제1세대 동작 합성은 1994년 Synopsys에 의해 Behavioral[6] Compiler로 도입되었으며 Verilog 또는 VHDL을 입력 언어로 사용했습니다.사용된 추상화 수준은 부분적으로 시간 지정(클럭 설정)된 프로세스입니다.동작 Verilog 또는 VHDL 기반의 툴은 언어나 부분적으로 시간이 걸리는 추상화 모두 높은 수준의 모델링 동작에 적합하지 않았기 때문에 널리 채택되지 않았습니다.10년 후인 2004년 초에 Synopsys의 종료된 행동 컴파일러.[7]

1998년 Forte Design Systems는 Verilog나 VHDL 대신 SystemC를 엔트리 언어로 사용하는 Cynthesizer 툴을 도입했습니다.Cynthesizer는 2000년 일본의 많은 기업에서 채택되었습니다.일본은 매우 성숙한 SystemC 사용자 커뮤니티를 가지고 있었기 때문입니다.최초의 고급 합성 테이프는 2001년 소니가 Cynthesizer를 사용하여 달성했습니다.미국에서의 입양이 본격적으로 [8]시작된 것은 2008년이다.

소스 입력

높은 수준의 합성을 위한 가장 일반적인 소스 입력ANSI C/C++, SystemC 및 MATLAB와 같은 표준 언어에 기반합니다.

높은 수준의 합성에는 일반적으로 입력으로서 비트 정밀도의 실행 가능 사양도 포함됩니다.이는 효율적인 하드웨어 구현을 유도하기 위해 허용 가능한 평균 제곱 오류 또는 비트 오류율 등에 대한 추가 정보가 필요하기 때문입니다.예를 들어 설계자가 "더블" 플로팅 타입을 사용하여 작성된 FIR 필터로 시작하는 경우 효율적인 하드웨어 구현을 유도하기 전에 설계자는 고정 소수점 구현에 도달하기 위해 수치 조정을 수행해야 합니다.미세화에는 허용 가능한 양자화 소음 수준, 유효 입력 범위 등에 대한 추가 정보가 필요합니다.이 비트정확한 사양에 의해 높은 수준의 합성 소스 사양이 기능적으로 [9]완성됩니다.일반적으로 툴은 높은 수준의 코드에서 산술 연산을 구현하는 유한 상태 머신과 데이터 패스를 추론합니다.

프로세스 단계

높은 수준의 통합 프로세스는 많은 활동으로 구성됩니다.다양한 고급 합성 도구는 서로 다른 알고리즘을 사용하여 서로 다른 순서로 이러한 활동을 수행합니다.일부 고급 합성 도구는 이러한 작업 중 일부를 결합하거나 반복적으로 수행하여 원하는 [10]솔루션에 수렴합니다.

  • 어휘 처리
  • 알고리즘 최적화
  • 제어/데이터플로우 분석
  • 라이브러리 처리
  • 자원 할당
  • 스케줄
  • 기능 유닛 바인딩
  • 레지스터 바인딩
  • 출력 처리
  • 입력 리번들

기능

일반적으로 알고리즘은 적은 수의 하드웨어 리소스로 많은 클럭 사이클에 걸쳐 실행할 수 있습니다.또한 다수의 ALU, 레지스터 및 메모리를 사용하여 적은 클럭 사이클에 걸쳐 실행할 수 있습니다.이에 대응하여 HLS 컴파일러는 툴에 주어진 지시에 따라 하나의 알고리즘 기술로부터 다양한 하드웨어 마이크로 아키텍처를 생성할 수 있다.이는 하드웨어의 복잡성에 대한 실행속도와 동일한 트레이드오프입니다.이는 특정 프로그램이 다른 퍼포먼스의 기존 프로세서에서 실행되었을 때 나타나는 것과 같으며, 모든 실행속도는 거의 동일한 클럭 주파수로 실행됩니다.

아키텍처의 제약

아키텍처의 합성 제약은 설계 분석에 [4]근거해 자동적으로 적용할 수 있다.이러한 제약은 다음과 같이 나눌 수 있습니다.

  • 계층
  • 인터페이스
  • 기억
  • 고리
  • 저레벨 타이밍 제약
  • 반복

인터페이스 합성

인터페이스 합성은 순수한 C/C++ 기술을 입력으로 받아들인 후 자동 인터페이스 합성 기술을 사용하여 설계 인터페이스 상의 타이밍 및 통신 프로토콜을 제어하는 능력을 말합니다.이를 통해 스트리밍, 싱글 포트 또는 듀얼 포트 RAM, 다양한 핸드쉐이크 메커니즘 등 광범위한 하드웨어 인터페이스 옵션을 인터페이스 분석 및 탐색할 수 있습니다.인터페이스 합성을 통해 설계자는 소스 설명에 인터페이스 프로토콜을 포함시키지 않습니다.예를 들어 직접 연결, 1회선, 2회선 핸드쉐이크,[11] FIFO 등이 있습니다.

벤더

최근[12] 조사에서 보고된 데이터

상황 컴파일러 주인 면허증. 입력 산출량 연도 도메인 시험
벤치
FP 픽스P
사용중 스트라투스 HLS 케이던스 설계 시스템 상업의 C/C++ SystemC RTL 2015 모든. 네. 네. 네.
으으으악 TIMA 랩 학업의 C 서브셋 VHDL 2012 모든. 네. 아니요. 아니요.
흥분시키다 Y 탐색 상업의 C VHDL/Verilog 2001 모든. 네. 아니요. 네.
밤부 폴리미 학업의 C VHDL/Verilog 2012 모든. 네. 네. 아니요.
블루스펙 블루스펙 주식회사 BSD-3 BSV 시스템 Verilog 2007 모든. 아니요. 아니요. 아니요.
QCC 캐시큐 시스템즈, 주식회사 상업의 C/C++/Fortan 호스트 실행 파일 + FPGA 비트 파일(SystemVerilog는 중간) 2018 모두 - 멀티코어 및 이기종 컴퓨팅 있음(C++) 네. 네.
CHC 알티움 상업의 C 서브셋 VHDL/Verilog 2008 모든. 아니요. 네. 네.
공동 개발자 임펄스 가속 상업의 임펄스-C VHDL 2003 이미지
스트리밍
네. 네. 아니요.
HDL 코드 매스웍스 상업의 MATLAB, Simulink, Stateflow, Simscape VHDL / Verilog 2003 제어 시스템, 신호 처리, 무선, 레이더, 통신, 이미지 및 컴퓨터 비전 네. 네. 네.
사이버 워크벤치 NEC 상업의 BDL, SystemC VHDL/Verilog 2011 모든. 사이클/
공식적인.
네. 네.
캐터펄트 멘토
(시멘 비즈니스)
상업의 C, C++, SystemC VHDL/Verilog 2004 모든. 네. 네. 네.
드워프 TU. 델프트 학업의 C 서브셋 VHDL 2012 모든. 네. 네. 네.
가우토 U. 브르타뉴 학업의 C/C++ VHDL 2010 DSP 네. 아니요. 네.
해슬레이어 롬비크 테크놀로지스 상업의 C#/C++/F#...
(.NET)
VHDL 2015 .그물 네. 네. 네.
인스턴트 SoC FPGA 코어 상업의 C/C++ VHDL/Verilog 2019 모든. 네. 아니요. 아니요.
인텔(R) 고급 합성 컴파일러 인텔 FPGA (구 Altera) 상업의 C/C++ 베릴로그 2017 모든. 네. 네. 네.
레그업 HLS 레그업 컴퓨팅 상업의 C/C++ 베릴로그 2015 모든. 네. 네. 네.
레그업 토론토 학업의 C 베릴로그 2010 모든. 네. 네. 아니요.
Max Compiler 맥셀러 상업의 최대 J RTL 2010 데이터 흐름 아니요. 네. 아니요.
ROCCC Jacquard Comp. 상업의 C 서브셋 VHDL 2010 스트리밍 아니요. 네. 아니요.
교향곡 C Synopsys 상업의 C/C++ VHDL/Verilog/
시스템 C
2010 모든. 네. 아니요. 네.
VivadoHLS
(구 자동 파일럿)
AutoESL에서[13])
시린스 상업의 C/C++/SystemC VHDL/Verilog/
시스템 C
2013 모든. 네. 네. 네.
키위 U. 캠브리지 대학 학업의 C# 베릴로그 2008 .그물 아니요. 네. 네.
CHiMP 미국 워싱턴 학업의 C VHDL 2008 모든. 아니요. 아니요. 아니요.
gcc2verilog 미국 학업의 C 베릴로그 2011 모든. 아니요. 아니요. 아니요.
허큘리스 Ajax 컴파일러 상업의 C/NAC VHDL 2012 모든. 네. 네. 네.
일리노이 주 학업의 C 베릴로그 2013 모든. 네. ? ?
삼지창 로스앨러모스 NL 학업의 C 서브셋 VHDL 2007 과학적인 아니요. 네. 아니요.
아반
하지 않다
AccelDSP 시린스 상업의 매트랩 VHDL/Verilog 2006 DSP 네. 네. 네.
C2H 알테라 상업의 C VHDL/Verilog 2006 모든. 아니요. 아니요. 아니요.
CtoVerilog 우하이파 학업의 C 베릴로그 2008 모든. 아니요. 아니요. 아니요.
디팩토 U. 사우스 케일프 학업의 C RTL 1999 DSE 아니요. 아니요. 아니요.
가프 U. 버클리 학업의 C 서브셋 비트스트림 2000 고리 아니요. 아니요. 아니요.
경기 미국 북서부 학업의 매트랩 VHDL 2000 이미지 아니요. 아니요. 아니요.
Napa-C 사르노프 학업의 C 서브셋 VHDL/Verilog 1998 고리 아니요. 아니요. 아니요.
파이프렌치 U. 카네기 M. 학업의 막다 스트림 2000 개울. 아니요. 아니요. 아니요.
SA-C 콜로라도 주 학업의 SA-C VHDL 2003 이미지 아니요. 아니요. 아니요.
시큐넘버 U. 브리검 Y. 학업의 자바 EDIF 2002 모든. 아니요. 네. 네.
스파크 U. 칼 어바인 학업의 C VHDL 2003 통제 아니요. 아니요. 아니요.
  • MATLAB HDL Coder [1] Mathworks[14] 제품
  • 회선으로부터의 HLS-QSP수트라 테크놀로지스[15]
  • Cadence 설계 시스템의 C-to-Silicon
  • 동시 EDA로부터의 동시 액셀러레이션
  • Synopsys의 Symphony C 컴파일러
  • PLDA의[16] QuickPlay
  • 칩비전의[17] PowerOpt
  • Forte Design Systems의 Cynthesizer(현재는 Cadence Design Systems의 Stratus HLS)
  • 2015년 9월 16일 현재 Mentor Graphics의 일부인 Calypto Design Systems의 Catapult C
  • 파이프라인 C [2]
  • NEC[18] CyberWorkBench
  • 메가 하드웨어
  • Ceba로부터의 C2R테크놀로지[20]
  • Impulse Accelerated Technologies의 공동 개발자
  • Nikolaos Kavvadias의[21] HercuLes
  • Synfora의 PICO, 2010년 6월[22] Synopsys에 인수(PICO = 프로그램 입력/코드 출력)
  • 캘리포니아[23] 대학교 로스앤젤레스 xPilot
  • vsyn[24].ru의 Vsyn
  • ngSynFlow로부터의[25] 설계

「 」를 참조해 주세요.

레퍼런스

  1. ^ Coussy, Philippe; Morawiec, Adam, eds. (2008). High-Level Synthesis - Springer. doi:10.1007/978-1-4020-8588-8. ISBN 978-1-4020-8587-1.
  2. ^ McFarland, M.C.; Parker, A.C.; Camposano, R. (February 1990). "The high-level synthesis of digital systems". Proceedings of the IEEE. 78 (2): 301–318. doi:10.1109/5.52214. ISSN 1558-2256.
  3. ^ IEEE Xplore 개요 합성: 과거, 현재 미래의 DOI 10.1109/MDT.2009.83
  4. ^ a b "The 'why' and 'what' of algorithmic synthesis". EE Times. Retrieved 2016-10-03.
  5. ^ "C-Based Rapid Prototyping for Digital Signal Processing" (PDF). UBS University, France. Retrieved 2016-10-03.
  6. ^ "Publications and Presentations". Bdti.com. Archived from the original on 2008-04-26. Retrieved 2016-10-03.
  7. ^ "Behavioral synthesis crossroad". EE Times. Retrieved 2016-10-03.
  8. ^ "Archived copy". www.scdsource.com. Archived from the original on 3 October 2011. Retrieved 13 January 2022.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  9. ^ 임베디드 시스템의 다중 워드 길이 고급 합성 EURASIP 저널
  10. ^ "A look inside behavioral synthesis". EE Times. Retrieved 2016-10-03.
  11. ^ "Archived copy". www.designcon.com. Archived from the original on 25 September 2010. Retrieved 13 January 2022.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  12. ^ Nane, R.; Sima, V. M.; Pilato, C.; Choi, J.; Fort, B.; Canis, A.; Chen, Y. T.; Hsiao, H.; Brown, S. (2016). "A Survey and Evaluation of FPGA High-Level Synthesis Tools" (PDF). IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems. 35 (10): 1591–1604. doi:10.1109/TCAD.2015.2513673. hdl:11311/998432. ISSN 0278-0070. S2CID 8749577.
  13. ^ "Xilinx buys high-level synthesis EDA vendor". EE Times. 2011-02-05. Archived from the original on 2011-10-17. Retrieved 2016-10-03.
  14. ^ "MathWorks – Makers of MATLAB and Simulink". Mathworks.com. Retrieved 2016-10-03.
  15. ^ "SystemC based ESL methodologies - SystemC based ESL methodologies". Circuitsutra.com. Retrieved 2016-10-03.
  16. ^ John M. at a major ERP & DBMS Corporation (2016-08-29). "QuickPlay: Bringing FPGA Computing to the Masses". Quickplay.io. Retrieved 2016-10-03.
  17. ^ "Archived copy". www.chipvision.com. Archived from the original on 30 May 2002. Retrieved 13 January 2022.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  18. ^ "CyberWorkBench: Products". NEC. Retrieved 2016-10-03.
  19. ^ "Archived copy". www.mega-hardware.com. Archived from the original on 15 January 2004. Retrieved 13 January 2022.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  20. ^ "Archived copy". www.cebatech.com. Archived from the original on 7 May 2005. Retrieved 13 January 2022.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  21. ^ "Nikolaos Kavvadias - HercuLeS high-level synthesis tool". Nkavvadias.com. Retrieved 2016-10-03.
  22. ^ "Synopsys buys Synfora assets". EE Times. Archived from the original on 2011-04-07. Retrieved 2016-10-03.
  23. ^ "The xPilot System". Cadlab.cs.ucla.edu. Retrieved 2016-10-03.
  24. ^ "vSyn.ru". vSyn.ru. 2016-06-16. Archived from the original on 2016-06-30. Retrieved 2016-10-03.
  25. ^ "Hardware design for all". Synflow. Retrieved 2016-10-03.

추가 정보

  • Michael Fingeroff (2010). High-Level Synthesis Blue Book. Xlibris[self-published source] Corporation. ISBN 978-1-4500-9724-6.
  • Coussy, P.; Gajski, D. D.; Meredith, M.; Takach, A. (2009). "An Introduction to High-Level Synthesis". IEEE Design & Test of Computers. 26 (4): 8–17. doi:10.1109/MDT.2009.69. S2CID 52870966.
  • Ewout S. J. Martens; Georges Gielen (2008). High-level modeling and synthesis of analog integrated systems. Springer. ISBN 978-1-4020-6801-0.
  • Saraju Mohanty; N. Ranganathan; E. Kougianos & P. Patra (2008). Low-Power High-Level Synthesis for Nanoscale CMOS Circuits. Springer. ISBN 978-0387764733.
  • Alice C. Parker; Yosef Tirat-Gefen; Suhrid A. Wadekar (2007). "System-Level Design". In Wai-Kai Chen (ed.). The VLSI handbook (2nd ed.). CRC Press. ISBN 978-0-8493-4199-1. chapter 76.
  • Shahrzad Mirkhani; Zainalabedin Navabi (2007). "System Level Design Languages". In Wai-Kai Chen (ed.). The VLSI handbook (2nd ed.). CRC Press. ISBN 978-0-8493-4199-1. chapter 86. C/C++, SystemC, TML, 심지어 UML의 사용도 커버하고 있습니다.
  • Liming Xiu (2007). VLSI circuit design methodology demystified: a conceptual taxonomy. Wiley-IEEE. ISBN 978-0-470-12742-1.
  • John P. Elliott (1999). Understanding behavioral synthesis: a practical guide to high-level design. Springer. ISBN 978-0-7923-8542-4.
  • Nane, Razvan; Sima, Vlad-Mihai; Pilato, Christian; Choi, Jongsok; Fort, Blair; Canis, Andrew; Chen, Yu Ting; Hsiao, Hsuan; Brown, Stephen; Ferrandi, Fabrizio; Anderson, Jason; Bertels, Koen (2016). "A Survey and Evaluation of FPGA High-Level Synthesis Tools". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems. 35 (10): 1591–1604. doi:10.1109/TCAD.2015.2513673. hdl:11311/998432. S2CID 8749577.
  • Gupta, Rajesh; Brewer, Forrest (2008). "High-Level Synthesis: A Retrospective". "High-level Synthesis: A Retrospective". Springer. pp. 13–28. doi:10.1007/978-1-4020-8588-8_2. ISBN 978-1-4020-8587-1.

외부 링크