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 툴은 수중에 없으니... 쓸 수 있는 건 요것 뿐인데
  • 일단 당장 어디다 쓸 지 모르겠네요. 이 글 보는 분 없으시겠지만, 쓸 데가 있길 빌어주십시오. 감사합니다.

+ Recent posts