책 소개
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(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++ 언어 외에도 디지털 전자공학에 대한 최소한의 이해가 필요한 것은 물론이다.
(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++ 언어 외에도 디지털 전자공학에 대한 최소한의 이해가 필요한 것은 물론이다.
목차
목차
- 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의 적용을 위한 지침
도서 오류 신고
정오표
[ p42 리스트 4-2 2행 ]
십진수 44의 2진수 표현 → 십진수 46의 2진수 표현
십진수 44의 2진수 표현 → 십진수 46의 2진수 표현