High-level Synthesis
아키텍처 레벨에서(SystemC 같은 프로그래밍 언어 사용), 바로 RTL 레벨 로직을 만들어내는(합성해내는) 기법입니다. ...그냥 위키백과 찾아보세요.
Verilog/VHDL 같은 하드웨어 프로그래밍 언어를 직접 사용해서 행동 레벨, RTL 레벨 디자인을 하려면 관련 지식이 좀 많이 필요하죠. 그 대신 C/C++/SystemC 같은 보다 상위 레벨 언어로 하드웨어 동작을 지시할 수 있다면, 꼭 하드웨어 엔지니어가 아니라 소프트웨어 개발자도 구현하려는 연산을 해당 연산에 최적화된 하드웨어로 만들어낼 수 있겠습니다. 물론 약간의 지식이 필요하죠. 🤔
경쟁 상대
- Xilinx Vivado HLS
- Xilinx사 FPGA 전용입니다...
- Mentor Catapult
- 나름 제일 잘 나가는 듯. 하→지↗만→♬, (저에게) 없↘죠→↗♬.
- Synopsys Synplify
- 알못이지만 아무튼 못 들어봤습니다.
왜 써봤냐면
Cadence에서 학교에 Stratus 등 몇 가지 툴 라이선스를 무상 제공한다더군요. 홍보 목적인가봐요. 그래서...
설치
-
공식 지원 환경은 레드햇 계열 RHEL, SuSE이지만, Ubuntu 18.04에 설치했습니다.
- 툴 돌아가는 동안 계속 미지원 환경이라고는 하지만, 동작은 합니다.
-
필요한 필수 패키지들 미리 깔아두시고 (
build-essential
,csh
,ksh
, ...) -
Cadence 자체 설치 도구(
InstallScape
) 및 온라인 계정이 있으면 그냥 거기서 받아다 설치하면 되나, -
계정 발급이 아직 안 되었기 때문에 다른 경로로 설치 프로그램을 다운받았습니다.
tar
압축파일이니, 압축 해제해주고:$ tar xf <filename>
-
InstallScape GUI 띄워서 설치해도 되고, 다음 배치 명령어를 써도 됩니다:
$ sudo <path_installscape>/bin/iscape.sh -batch majorAction=InstallFromArchive archiveDirectory=<path_installer> install_directory=<path_destination>
-
다음으로 환경변수 설정이 필요합니다
LM_LICENSE_FILE
변수에 라이선스 서버 주소를 덧붙입니다.PATH
에 툴이 설치된 위치를 덧붙입니다:<path_destination>/tools.lnx86/bin
- 그리고,
HOST
변수를 만들고 호스트명을 값으로 설정했습니다:export HOST=$(hostname)
- 레드햇을 잘 모르겠지만, 툴 돌아갈 때
HOST
변수 값이 없다면서 오류를 일으키더군요. 그래서...
- 레드햇을 잘 모르겠지만, 툴 돌아갈 때
-
RTL 시뮬레이션을 위해
Cadence Xcelium
또는 Synopsys VCS 등이 설치되어 있어야 합니다. 그건 잘 하시리라 믿습니다.
실행
- 명령줄 툴도 있는 것 같지만,
stratus_ide
하면 실행됩니다.- Qt4로 만들어서 보기가 좋네요.
- 도움말이 충실해 보이지만, 읽지는 않았습니다.
- 툴 내에 튜토리얼이 충실히 갖춰져 있으나, 코드에 대소문자 오류 있는 예제가 하나 있었고 만든 뒤로 관리를 그리 열심히 하지는 않은 것 같은 느낌적인 느낌이 듭니다. 뒤로 갈수록 점점 만들기 귀찮음이 눈에 보이는 듯 했습니다.
의견
- Xilinx 툴은 Xilinx사 FPGA 전용이고, Mentor 툴은 수중에 없으니... 쓸 수 있는 건 요것 뿐인데
- 일단 당장 어디다 쓸 지 모르겠네요. 이 글 보는 분 없으시겠지만, 쓸 데가 있길 빌어주십시오. 감사합니다.