Top

원리부터 배우는 SystemC

  • 원서명SystemC: From the Ground Up (ISBN 1402079885)
  • 지은이David C. Black, Jack Donovan
  • 옮긴이국일호
  • ISBN : 9788960770027
  • 30,000원
  • 2007년 02월 13일 펴냄
  • 페이퍼백 | 280쪽 | 188*250mm

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/systemc2)

C++ 언어에서 확장된 SystemC는 복잡한 하드웨어와 소프트웨어 시스템을 쉽고 신속하게 개발할 수 있는 기능들을 갖추고 있다. 시스템 모델링 언어에 필요한 사항을 실무 차원에서 접근한 이 책의 풍부한 예제를 통해 SystemC 언어의 진가를 발견하게 될 것이다.


[ 이 책의 내용 ]

• SystemC의 문법과 구문에 대한 단계적 이해
• 주요 개념의 설명하는 다양한 예제
• 코딩 스타일과 지침
• 책 전반에 걸친 예제 위주의 설명
• 주요 기능의 사용법
• SystemC 2.1 버전에 도입된 새로운 기능
• 다양한 참고자료
• 52가지에 달하는 연습 예제
• 시스템 설계 방법론에 적용된 SystemC의 유용성에 대한 고찰


[ 이 책의 구성 ]

1장에서 3장까지는 SystemC 언어를 소개하고 개략적인 사용법을 다뤘다. 아울러 설계 방법론에 대해 간략히 소개했다.
SystemC를 처음 접하는 독자를 위하여 언어를 상향식으로 기술하고 C++의 의미를 하드웨어의 개념에 견주어 설명했다. 배운 내용을 심화할 수 있도록 4장에서 14장까지 각 장의 끝에 연습문제를 두었다. 15장은 실제 개발환경에서 SystemC의 사용과 작성 그리고 설계시 마주치게 될 언어의 기본적인 개념들을 이해하는 데 뒷받침이 될만한 내용을 담았다.
이미 SystemC에 익숙한 독자를 위해 4장에서 11장에 걸쳐 언어의 배경과 내부를 살펴볼 수 있는 흥미 있는 내용을 제공했다. 초반부의 몇 개 장들은 전적으로 SystemC 언어를 다룬 것이 아니므로 음미하는 수준에서 가볍게 읽어 보거나 지나쳐도 좋다. SystemC 언어에 대해 속속들이 알고 싶다면 SystemC 언어표준 매뉴얼을 참고한다. 12장에서 14장은 다소 고급 주제를 다루고 있다.
고급 독자를 위해 15장에 설계력을 향상 시킬 수 있는 각종 비법과 주의사항이 될만한 정보들을 담았으며 이는 SystemC를 실제로 사용할 때 도움이 될 것이다.
교사들은 학부에서 시뮬레이션 고급과정의 일환으로 또는 시스템 설계과목의 폭을 넓히는 데 이 책을 사용할 수 있다.
이 책에 나오는 대부분의 예제들은 주요 사항을 강조하여 교육할 목적으로 전체 소스 코드 내용 중 일부분만을 인용했다. 예제의 온전한 소스코드가 필요하면 http://www.eslx.com/Book이나 에이콘출판사 웹사이트에서 압축된 파일을 받을 수 있다. 이 예제 파일을 제대로 사용하면 이 책의 내용이 매우 유용할 것이다.
  

[ 이 책의 대상 ]

대부분 기술서적처럼 이해를 돕기 위한 기초수준의 내용은 모두 설명해뒀지만 이 책에는 학부 교과과정에서 다룰 정도의 내용은 포함하지 않았다. 이 책을 읽을 독자는 C++와 하드웨어 설계에 대한 최소한의 지식이 이미 있다고 가정한다. 하지만 최고 수준의 C++를 이해할 필요는 없다. 다만 C++ 문법, 객체 지향성, 그리고 객체 접근 방법인 메소드에 대한 이해가 필요하다. 이 정도의 C++에 대한 기초 내용은 대부분 컴퓨터관련 공학 학부과정에서 이미 이수했을 것이다.
안타깝게도 10년 또는 그 이상의 경력을 가진 반도체 설계자들은 사실 C++를 잘 모를 수도 있다. 만일 이런 독자라면 C++가 큰 장애가 되겠지만 전혀 불가능하지는 않을 것이다. 만일 C++가 전혀 생소하거나 서툰 독자라면 주변 교육기관의 단기 과정이나 온라인 강좌를 수강하면 좋을 것이다. C++의 학습자료는 이 책의 15장에 소개했다. 저자가 만났던 기술자들 대부분은 FORTRAN이나 PL/I 같은 컴퓨터 언어에는 능숙하면서도 C++ 같은 객체 지향 언어에 대해서는 이유 없는 두려움을 지니고 있다.
이 책의 SystemC 예제를 완벽하게 이해 하려면 C++ 언어 외에도 디지털 전자공학에 대한 최소한의 이해가 필요한 것은 물론이다.

저자/역자 소개

[ 저자 서문 ]

독자들은 이 책을 쓰게 된 동기가 무엇이었는지 궁금할 것이다. 저자들은 단편적인 문서들만으로 SystemC를 공부했어야 했기에 책의 필요성을 절감하고 이 책을 쓰기로 결심했다. 이 책을 읽고 독자들이 SystemC를 마스터하기 바란다. 이 책에서는 SystemC의 언어적인 구조와 구문을 소개하며 대규모 시스템 설계의 개발기간을 단축시킬 수 있는 도구로서 사용법과 기능에 대해 설명한다.
또한 다양한 예제들을 통해 시스템 설계방법과 기법을 소개할 것이다. 저자들은 시스템 수준 설계방법론을 다룬 참고자료들을 살펴본 결과, SystemC가 이에 가장 적합하다는 것을 알게 됐다. 독자들은 이 책을 읽음으로써, SystemC의 여러 구성요소의 효과적인 사용법과 동작원리를 배울 것이며 고성능의 시뮬레이션 모델 작성에 어떻게 이용하는지 이해할 것이다. 이 책 한 권이면 SystemC 언어를 이해하기 위한 충분한 정보를 담고 있다고 확신하며 독자들도 이에 동의하리라 믿는다. SystemC를 적용하여 시스템 수준 설계방법론을 구현한 다른 책들도 있으니, 독자들도 읽어보기 바란다.


[ 저자 소개 ]

데이빗 블랙, 잭 도노반
데이빗 블랙과 잭 도노반은 전자 시스템 설계 자동화 도구와 관련해 업계에서 명성이 매우 높다. 40여 년이 넘게 새로운 설계 기술과 방법론을 적용하고 교육하는 일에 종사해왔다. 최근 SystemC 설계 방법론의 적용을 지원하고 자문하기 위해 ESLX사를 공동 설립했다.


[ 역자 서문 ]

베릴로그와 VHDL 같은 반도체 설계언어의 등장으로 높은 추상화 수준에서 반도체 설계가 가능해지면서 설계 생산성이 눈부시게 향상되었다. 80년대 말에 들어 표준이 제정되면서 HDL에 의한 반도체 설계 기술은 비약적인 발전의 계기가 되었으며 오늘날 디지털 전자산업이 전성시대를 구가할 수 있는 동력이 되었다. 미래의 전자 제품에서 요구되는 더 높은 성능과 소형화의 실현을 위하여 시스템을 단일 칩상에 집적화하려는 요구가 한층 높아지고 있어 이에 대한 설계 생산성에 대한 커다란 도전이 되었다.

그러나 하드웨어와 소프트웨어가 함께 단일칩 상에 아우러진 SoC(System-on-a-Chip)라 불리는 시스템 반도체의 설계와 검증은 기존의 하드웨어 지향적인 HDL의 한계를 드러냈고 고도의 추상화 수준 설계 방법론을 필요로 하고 있다. 이미 90년대 들어 이에 대한 연구가 활발히 진행되었고 높은 추상화 수준의 설계 방법론에 대한 연구성과가 모아져 마침내 SystemC가 탄생하였다. 2000년 초 처음 SystemC의 1.0버전이 공개된 이후 5년여 만인 2005년 말에 IEEE의 표준으로 제정되기에 이르렀다. 그러나 처음 공개된 이후 짧지 않은 시간이 흘렀지만 일부 선도적인 설계 그룹에서 적용되고 있거나 학술적인 호기심 수준에 머무르고 있는 것도 사실이다. HDL의 발전 속도에 비하여 확산의 정도가 미미한 실정이다. 처음 SystemC가 등장했을 때 많은 소개 문서들이 또 다른 HDL설계 언어의 등장으로 받아들여진 것도 큰 요인이라 하겠다. 더불어 많은 HDL사용자에게 C++언어에 대한 거부감 또한 무시할 수 없는 요인의 하나일 것이다.

SystemC의 근본적인 탄생 배경이 시스템 반도체의 설계 생산성 향상이다보니 HDL을 사용하는 하드웨어 설계자들에게 먼저 다가가게 되었고 그로 인하여 많은 예제와 소개 문서들이 HDL의 RTL과 비교하여 소개되었다. 하지만 SystemC가 추구하는 목표는 RTL을 포함하여 그보다 더욱 높은 추상화 수준의 시스템을 모델링하기 위한 설계 방법론이며 기존의 HDL을 대체하기 위한 것이 아니다. 비록 프로그래밍 언어 C++를 기초하여 만들어지긴 했지만 소프트웨어 설계를 위한 것만도 아니다. SystemC가 추구하는 본질은 하드웨어와 소프트웨어가 융합된 고도의 복잡성을 띄는 시스템 설계의 모든 필요사항을 충족하자는 것이다. 하드웨어 설계만을 원한다면 충분히 완숙한 단계에 이른 HDL을 사용하면 될것이며, 소프트웨어 설계만을 원한다면 C 혹은 C++와 같은 널리 사용되는 프로그래밍 언어의 사용으로 충분할 것이다. 만일 내일의 전자제품에 사용될 시스템 반도체 설계를 설계해야 한다면 당장 SystemC를 선택하라. 오늘날 대부분 HDL 설계자들은 이미 언어를 이용한 반도체 설계 방법론에 익숙해 있을 것이며 공학교육을 받으면서 C언어를 경험해 봤을 것이다. SystemC의 원리이해와 응용으로 가는 길이 험난해 보인다면 이 책이 훌륭한 길잡이가 되어줄 것이다.

이 책은 그 동안 SystemC를 소개하는 방식에서 탈피하여 이 언어가 진정으로 무엇을 위하여 만들어졌으며, 시스템 수준 설계자가 갖추어야 할 기본적인 사항들을 깊이 있게 다루고 있다. 목차에서도 드러나 있지만 HDL에서 흔히 다루는 RTL의 클럭 수준의 모델링을 과감히 생략한 저자들의 의도는 분명하다. 시스템 수준 설계에서 절실하게 요구되는 모델링 기법에 대하셔 설명하려는 것이다. SystemC의 이해를 돕기 위하여 이 책의 각 장마다 매우 다양한 예제와 연습문제들을 제시하고 있다. 때로는 이 예제들이 단순해 보이거나 전달하고자 하는 내용의 효용성에 대하여 의구심이 드는 경우도 있을 것이다. 하지만 여유를 가지고 그 예제들이 전하려고 한 의도를 찬찬히 살펴보길 바란다.
이 책은 분명 SystemC의 친절한 입문서는 아니다. 이 책을 번역하면서 난해하다 싶은 내용은 역자 주석을 통하여 나름대로 설명해 뒀다. 역자 또한 HDL 위주로 반도체를 설계해 왔으며 주석의 내용 또한 이를 반영하고 있다는 점도 밝혀둔다.


[ 역자 소개 ]

국일호
경희대학교에서 공학박사학위를 받았으며 시스템 반도체 SoC 설계 및 검증 분야의 컨설턴트로 일하고 있다. 반도체 IP 전문회사인 앤스랩(AnsLab Co.,Ltd.)의 대표를 역임했고 주식회사 케이원정보통신(K-Won C&C Ltd.)의 연구소장을 맡고 있다.

목차

목차
  • 1장 SystemC를 이용한 시스템 설계의 개요
  • 1.1 서론
  • 1.2 언어의 비교
  • 1.3 설계 방법
  • 1.4 향후 전망
  • 1.5 SystemC의 사용에 따른 생산성 향상
    • 1.5.1 설계 복잡도의 증가
    • 1.5.2 설계 복잡도에 대응
      • 1.5.2.1 추상화
      • 1.5.2.2 설계 재사용
      • 1.5.2.3 팀 제도
      • 1.5.2.4 프로젝트 재사용
      • 1.5.2.5 자동화
    • 1.5.3 SystemC와 설계 복잡도에 대응 방법

  • 2장 전송수준 모델링 기반 설계 방법론
  • 2.1 전송수준 모델링의 개요
  • 2.2 추상화 모델
  • 2.3 추상화 모델의 다른 측면
  • 2.4 전송수준 모델 기반의 방법론
    • 2.4.1 소프트웨어 조기 개발
    • 2.4.2 향상된 하드웨어 기능 검증
    • 2.4.3 어댑터와 기능 검증
  • 2.5 요약

  • 3장 SystemC의 개요
  • 3.1 SystemC와 C++언어
  • 3.2 SystemC: 하드웨어 표현을 위한 C++ 클래스
    • 3.2.1 시간 모델
    • 3.2.2 하드웨어용 자료형
    • 3.2.3 계층 구조
    • 3.2.4 통신 관리
    • 3.2.5 동시실행
    • 3.2.6 하드웨어 모델링을 위한 SystemC의 기능
  • 3.3 SystemC의 구성 요소
    • 3.3.1 모듈과 프로세스
    • 3.3.2 스레드와 메소드
    • 3.3.3 사건과 감응 그리고 공지
    • 3.3.4 SystemC의 자료형
    • 3.3.5 채널과 인터페이스
    • 3.3.6 SystemC의 구성요소 요약
  • 3.4 SystemC 시뮬레이션 커널

  • 4장 자료형
  • 4.1 수의 표현
  • 4.2 C++ 고유 자료형
  • 4.3 산술연산 자료형
    • 4.3.1 scint와 scuint
    • 4.3.2 scbigint와 scbiguint
  • 4.4 2진논리 및 다치논리 자료형
    • 4.4.1 scbit와 scbv
    • 4.4.2 sclogic과 sclv
  • 4.5 고정소수점 자료형
  • 4.6 SystemC 자료형의 연산자
  • 4.7 높은 추상화 수준과 STL
  • 4.8 적절한 자료형 고르기
  • 4.9 연습

  • 5장 모듈
  • 5.1 시작 점: sc_main
  • 5.2 설계의 기본 단위: SC_MODULE
  • 5.3 SCMODULE 클래스의 구성자: SCTOR
  • 5.4 실행의 기본 단위: SystemC 프로세스
  • 5.5 프로세스의 등록: SC_THREAD
  • 5.6 간단한 설계 예제 완성
  • 5.7 구성자를 작성하는 다른 방법: SCHASPROCESS
  • 5.8 모듈 클래스 작성의 두 가지 기본 형식
    • 5.8.1 전통적 형식
    • 5.8.2 권장 형식
  • 5.9 연습

  • 6장 시간의 표현
  • 6.1 sc_time
  • 6.2 sc_start()
  • 6.3 sctimestamp() 함수와 시간 표시
  • 6.4 wait(sc_time)
  • 6.5 시간 분해능과 시간 단위
  • 6.6 연습

  • 7장 동시실행
  • 7.1 sc_event
  • 7.2 시뮬레이터의 간략한 고찰
  • 7.3 SC_THREAD
  • 7.4 스레드 프로세스의 동적 감응
  • 7.5 동시성과 시간에 대한 고찰
  • 7.6 사건 유발: .notify()
  • 7.7 SC_METHOD
  • 7.8 SCMETHOD의 동적 감응: nexttrigger()
  • 7.9 프로세스의 정적 감응
  • 7.10 프로세스 초기화 생략: dont_initialize
  • 7.11 사건의 예약: sceventqueue
  • 7.12 연습

  • 8장 기초 채널
  • 8.1 기본 채널
  • 8.2 sc_mutex
  • 8.3 sc_semaphore
  • 8.4 sc_fifo
  • 8.5 연습

  • 9장 평가-갱신 채널
  • 9.1 시뮬레이션 엔진
  • 9.2 scsignal 과 scbuffer
  • 9.3 scsignalresolved 와 scsignalrv
  • 9.4 sc_signal 채널의 템플릿 특화
  • 9.5 연습

  • 10장 설계의 구조화
  • 10.1 모듈의 계층화
  • 10.2 상위 단 모듈을 sc_main에서 직접 생성
  • 10.3 상위 단 모듈들을 sc_main에서 간접생성
  • 10.4 헤더파일만을 사용한 하위 모듈 직접생성
  • 10.5 헤더파일만을 사용한 하위 모듈 간접생성
  • 10.6 구현파일에 하위 모듈 직접생성
  • 10.7 구현파일에 하위 모듈 간접생성
  • 10.8 하위-모듈 생성 방법의 비교
  • 10.9 연습

  • 11장 모듈 간 통신
  • 11.1 통신: 포트의 필요성
  • 11.2 인터페이스: C++와 SystemC
  • 11.3 간단한 SystemC 포트 선언 방법
  • 11.4 다양한 채널 연결 방법
  • 11.5 포트 연결 방식
  • 11.6 프로세스에서 포트로 접근
  • 11.7 연습

  • 12장 포트의 상세한 고찰
  • 12.1 표준형 인터페이스
    • 12.1.1 FIFO 채널의 인터페이스
    • 12.1.2 시그널 채널의 인터페이스
    • 12.1.3 뮤텍스와 세마포어 채널의 인터페이스
  • 12.2 정적 감응에 대한 재 고찰
  • 12.3 특화된 포트
  • 12.4 포트 배열
  • 12.5 SystemC 2.1의 sc_export
  • 12.6 연결성의 재고찰
  • 12.7 연습

  • 13장 맞춤 채널과 자료
  • 13.1 채널과 인터페이스에 대한 재고
  • 13.2 맞춤형 기본 채널의 예: 인터럽트
  • 13.3 SystemC에서 임의 자료형의 사용 예: 패킷
  • 13.4 맞춤형 계층 채널의 예: 심장박동
  • 13.5 맞춤형 기본 채널의 예: 어댑터
  • 13.6 맞춤형 계층 채널의 예: 트랜잭터
  • 13.7 연습

  • 14장 고급 주제
  • 14.1 클럭 발생 프로세스: sc_clock
  • 14.2 클럭 스레드: SC_CTHREAD
  • 14.3 구성 가능한 계층화
  • 14.4 디버깅과 시그널 추적
  • 14.5 동적 프로세스
  • 14.6 SCFORK/SCJOIN
  • 14.7 오류 및 정보 문구 출력
  • 14.8 기타 라이브러리: SCV, ArchC 그리고 Boost
  • 14.9 연습

  • 15장 끝맺음
  • 15.1 시뮬레이션 성능 향상 요인
    • 15.1.1 클럭과 시간 절약
    • 15.1.2 대량의 데이터 이동
    • 15.1.3 과도한 채널 생성
    • 15.1.4 과도한 사양의 영향
    • 15.1.5 원형에 충실 할 것
    • 15.1.6 C++ 컴파일러 최적화
  • 15.2 SystemC의 전반적인 기능
    • 15.2.1 더 나가기 전에 알아야 할 것들
    • 15.2.2 오류를 피하기 위한 방안
    • 15.2.3 코딩 관례와 스타일
  • 15.3 다음 단계
    • 15.3.1 SystemC의 적용을 위한 지침

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

[ p42 리스트 4-2 2행 ]
십진수 44의 2진수 표현 → 십진수 46의 2진수 표현