2024년 4월 29일 월요일

Verilog 와 SystemC 입문의 최소충분

Verilog 와 SystemC 입문의 최소충분

컴퓨팅 언어를 써서 디지털 반도체 회로를 설계하려는 목표가 있다고 하자. 이 목표를 위해 학습을 하지만 한학기(대개 16주)동안 어떤 컴퓨팅 언어를 배우는 과정은 지루하기 이를데 없다. 게다가 학습을 평가한다면서 시험을 치뤄 점수를 메긴다 하니 학습자의 입장에서 매우 피곤할 노릇이다. 학점을 채우기보다 궁금증의 비중이 더 크다면 차라리 유튜브 동영상을 찾아보길 권한다. 유튜브에 수많은 동영상 강좌가 넘쳐난다. 게중에 무리하게 학습 시간을 요구하는 경우나 알아듣기 어려운 외국어(영어로 말하지만 영어일까 싶은) 강좌는 배제하고 간단 명료한 동영상을 선별하여 소개해 본다. 이 동영상의 내용을 이해 했다면 컴퓨팅 언어를 사용한 반도체 설계에 필요한 최소 수준을 갖췄다고 봐도 좋다. 늘 그렇듣 연습 만이 살길이다. 

1. 선수지식

강좌를 보기 전에 현재 갖춰야할 요건이라면 아래와 같다.

- 논리회로는 조합회로와 순차회로가 있으며 이 둘의 차이를 구분할 줄 안다.
- 카운터와 타이머 그리고 유한 상태머신의 용도를 이해한다.
- C 언어로 "Hello World!"라는 문장을 출력해 봤다.
- C++ 언어의 크래스(구조체와 소속함수들)와 템플릿을 안다.

2. 베릴로그 언어

베릴로그 언어를 배우는 목적을 아래와 같이 정하자.

레지스터 전송 수준(RTL, Register-Transfer Level)에서 디지털 회로를 묘사할 수 있다.

* 이유는 알 수 없지만 앞서 링크한 유튜브 동영상이 막혀 버려서 좀더 단순한 베릴로그 기초 동영상으로 대체 한다. 앞의 동영상에서 사용된 인쇄물은 아래 링크에서 내려받을 수 있다.

http://www.ee.ic.ac.uk/pcheung/teaching/ee2_digital/Altera%20Tutorial%20-%20Verilog%20HDL%20Basic.pdf


Verilog Basics / Paul Franzon

이 동영상은 RTL 베릴로그를 10분만에 설명한다. 위의 베릴로그 전체 강좌는 아래 링크에서 볼 수 있다.

https://www.youtube.com/playlist?list=PLfGJEQLQIDBN0VsXQ68_FEYyqcym8CTDN


3. SystemC

두말할 나위도 없이 SystemC는 언어가 아니다. C++의 크래스 라이브러리일 뿐이라고 한다. 그렇다면 동영상을 보기 전에 먼저 생각해 보자. C++ 라는 소프트웨어 작성용 언어로 하드웨어의 행동을 기술 할 수 있을까? 반도체 회로(하드웨어)를 다룬다고 하면서 C++ 는 왜 끌어들인걸까?

Learn SystemC [Link]

이 강좌는 10~20분 짜리 동영상 6편으로 구성되었다. 처음 세편 정도는 주의깊게 보고 나머지는 틈날 때 봐도 좋다.


Learn SystemC: Introduction


Learn SystemC: SC_CTHREAD, Clocked Threads


Learn SystemC: Testbenches


4. 하드웨어 설계 언어 

컴퓨팅 언어들은 저마다 폭넓은 추상화 수준(Abstraction Level)을 수용한다고 주장한다. 하드웨어 기술 언어(HDL, Hardware Description Language)도 다르지 않다. 높은 수준의 테스트 벤치를 작성 한다며 온갖 기법들을 끌어들여 자랑하는 경우를 보게 되는데 그러지 말자. 베릴로그는 디지털 회로로 합성해 내기위한 목적에 충실하자. SystemC는 언어가 아니라 C++의 크래스 라이브러리일 뿐이라고 한다. 하드웨어를 설계한다면서 소프트웨어 언어를 동원한 이유에 대하여 생각해 보자.

- 반도체 설계/검증 언어 [바로가기]
- SystemC는 여전히 최신 시스템 설계 방법론 일까? [바로가기]


댓글 없음:

댓글 쓰기