SystemC는 여전히 최신 방법론인가?
반도체 설계에 언어가 사용된지 반세기가 지났다. 시스템 수준 설계 방법론 이라며 SystemC 를 제시한다. 새로운 컴퓨팅 언어를 다뤄야 한다면 그 부담이 크다. 내 분야가 아니라며 제쳐두던가 체계적인 학습을 기대하며 관련 학습 컨텐츠를 찾아보거나 교과서를 찾는다. 제쳐두면 당장 편할지 몰라도 미래는 없다. 학습을 원한다면 "체계적인"에 너무 집착하지 않기 바란다. 우리는 이미 컴퓨팅 언어에 익숙해 있다. 게다가 현재 컴퓨팅 실력이 체계적 교육의 결과였는지 되짚어보자. 관심과 연습의 결과였을 것이다. 예제를 찾아 적용해 보는 과정에서 실수를 반복하고 정정하는 과정에서 능력을 쌓아왔다. 컴퓨팅 언어의 예약어와 문법은 대동소이하다는 점을 알아두자. 하드웨어 언어와 소프트웨어 언어는 단지 구문의 실행 방식이 다를 뿐이다. 컴퓨터의 프로그램으로 병렬 실행을 모의하기 위해 사건기반의 콜백 함수 호출 기법(event drivel call-back)이 활용된다. 이는 컴퓨팅 언어의 특성이라기 보다 컴퓨터 운영체제와 인터럽트 서비스 같은 프로그래밍 기법의 이해가 필요하다. SystemC에 관한 각종 교육 컨텐츠는 많지만 '체계적'인 책은 많지 않다. 굳이 SystemC에 대한 체계적인 학습을 원한다면 아래의 책을 찾아보기 바란다.
System Design with SystemC, https://link.springer.com/book/10.1007/b116588
이 책은 2002년에 출판되었다. SystemC 가 1.0 때다(현재 3.0). SystemC의 를 원론적으로 설명한다. 시스템 수준 설계에 C++ 언어가 동원되고 병렬 시뮬레이션을 어떻게 모의하는지 설명한다. 하드웨어 언어 시뮬레이터의 원리를 이해할 수 있을 정도다. 여러명의 저자들에 의해 쓰여진 탓에 표현의 일관성이 흐트러져 아쉽다. 저자들은 모두 당시 현직 개발자들이었기 때문에 사용한 용어들이 어렵다. 한글 번역판[바로가기]이 있다. 번역판은 원 저자들과 서신을 주고 받으며 원문의 내용에 상당한 주석을 달았다. 도서관에 비치되어 있다면 굳이 구입할 필요 없다.
SystemC: From the Ground-Up, https://link.springer.com/book/10.1007/978-0-387-69958-5
SystemC 가 2.0으로 발전하며 표준화 된 이후 출판 되었다. 학습용으로 유용할 것이다. 초판의 한글 번역판[바로가기]이 출간 되었다. 초판에 애매한 부분이 상당히 있어서 번역본을 만들면서 저자와 교신하며 주석을 달았다. 현재 영문 책은 상당부분을 수정하여 2판이 나왔다. 서문에 초판 한글 번역자의 지적을 수정하였다고 밝히고 있다.
위의 책 외에도 SystemC를 설명한 책과 컨텐츠들이 다수 있다. 아쉽게도 SystemC를 마치 또다른 RTL 언어로 설명하고 그 수준에서 머무는 경향이 있다. SystemC는 시스템 수준의 모델링을 위해 활용될 때 그 가치를 찾을 수 있다. SystemC 는 C++ 그 자체다. 달리 말하면 하드웨어 설계를 위해 컴퓨터와 운영체제의 모든 요소를 활용 할 수 있다. 베릴로그 RTL로 설계한 6502 CPU를 검증하기 위해 Apple-1 컴퓨터를 SystemC로 모델링 한 예제가 있으니 살펴보기 바란다[바로가기].
SystemC가 표준화된지 20년이 지났음에도 쉽게 받아들여지지 않고 있는 이유는 방법론의 혁명성일지도 모른다. UCI(캘리포니아 대학교, 어바인) 2020년 대학원 강좌의 학습자료로 위에서 언급한 책들을 제시하고 있는 것을 보면 하드웨어 설계자(또는 교육자)들의 C++에 대한 이해부족(또는 게으름?)도 한몪한다.
https://newport.eecs.uci.edu/~doemer/w20_eecs222/syllabus.html
무려 20년전에 익혀둔 SystemC 를 변함없이 최신기법이라고 이야기 할 수 있는 것은 행운일까?
---------------------------
댓글 없음:
댓글 쓰기