목차
제1부 Verilog 기본
1 Verilog HDL을 이용한 디지털 설계 개요
1.1 컴퓨터 지원 디지털 설계의 진전 = 4
1.2 HDL의 탄생 = 5
1.3 일반적 설계 과정 = 6
1.4 HDL의 중요성 = 8
1.5 Verilog HDL의 대중성 = 8
1.6 HDL의 동향 = 9
2 계층적 모델링 개념
2.1 설계 방법 = 12
2.2 4-비트 리플 캐리 카운터 = 13
2.3 모듈 = 15
2.4 인스턴스 = 17
2.5 시뮬레이션 요소 = 19
2.6 예제 = 20
2.6.1 설계 블록 = 20
2.6.2 스티뮬러스 블록 = 22
2.7 요약 = 25
연습문제 = 26
3 기본 개념
3.1 사전적 규약 = 28
3.1.1 화이트 스페이스 = 28
3.1.2 주석 = 28
3.1.3 연산자 = 28
3.1.4 수 표현 = 29
3.1.5 문자설 = 31
3.1.6 식별자와 키워드 = 31
3.1.7 에스케이프 식별자 = 31
3.2 데이터 형 = 32
3.2.1 논리값 집합 = 32
3.2.2 넷(Nets) = 33
3.2.3 레지스터 = 34
3.2.4 벡터 = 34
3.2.5 정수, 실수, 시간 레지스터 테이터형 = 36
3.2.6 배열 = 37
3.2.7 메모리 = 38
3.2.8 파라미터 = 39
3.2.9 문자열 = 39
3.3 시스템 태스크와 컴파일러 지시어 = 40
3.3.1 시스템 태스크 = 40
3.3.2 컴파일러 지시어 = 44
3.4 요약 = 46
연습문제 = 47
4 모듈과 포트(Modules and Ports)
4.1 모듈 = 50
4.2 포트(Ports) = 53
4.2.1 포트 나열 = 53
4.2.2 포트 선언(Port Declaration) = 54
4.2.3 포트 연결 규칙(Port Connection Rules) = 56
4.2.4 외부신호에 포트 연결하기(Connecting Ports to External Signals) = 58
4.3 계층적 이름(Hierarchical Names) = 60
4.4 요약 = 61
연습문제 = 63
5 게이트 수준 모델링
5.1 게이트 형태 = 66
5.1.1 And/Or 게이트 = 66
5.1.2 Buf/Not 게이트 = 68
5.1.3 인스턴스의 배열 = 71
5.1.4 예제 = 72
5.2 게이트 지연 = 80
5.2.1 상승, 하강, 턴-오프 지연 = 81
5.2.2 최소/전형적/최대값 = 82
5.2.3 지연 예제 = 84
5.3 요약 = 87
연습문제 = 88
6 데이터플로우 모델링
6.1 연속(Continuous) 할당 = 93
6.1.1 함축적 연속 할당문 = 94
6.1.2 함축적 넷 선언 = 95
6.2 지연 = 95
6.2.1 정규 할당 지연 = 95
6.2.2 함축적 연속 할당 지연 = 96
6.2.3 넷 선언 지연 = 97
6.3 수식, 연산자 그리고 피연산자 = 97
6.3.1 수식 = 97
6.3.2 피연산자 = 98
6.3.3 연산자 = 98
6.4 연산자 형 = 98
6.4.1 산술 연산자 = 100
6.4.2 논리 연산자 = 101
6.4.3 관계 연산자 = 102
6.4.4 등가 연산자 = 103
6.4.5 비트단위 연산자 = 104
6.4.6 축소 연산자 = 105
6.4.7 자리 이동 연산자 = 106
6.4.8 결합(concatenation) 연산자 = 106
6.4.9 중복 연산자 = 107
6.4.10 조건 연산자 = 107
6.4.11 연산자 우선순위 = 108
6.5 예제 = 109
6.5.1 4:1 멀티플렉서 = 109
6.5.2 4-비트 전가산기 = 111
6.5.3 리플 카운터 = 113
6.6 요약 = 119
연습문제 = 120
7 행위 수준 모델링
7.1 구조적 프로시저 = 125
7.1.1 initial 구문 = 125
7.1.2 always 구문 = 128
7.2 절차적 할당 = 129
7.2.1 블록킹 문장 = 130
7.2.2 논블록킹 문장 = 131
7.3 타이밍 제어 = 134
7.3.1 지연 기반 타이밍 제어 = 135
7.3.2 사건 기반 타이밍 제어 = 138
7.3.3 준위-구동 타이밍 제어 = 141
7.4 조건문 = 142
7.5 다중 분기 = 143
7.5.1 case문 = 143
7.5.2 casex, casez 키워드 = 146
7.6 루프 = 147
7.6.1 While 루프 = 147
7.6.2 For 루프 = 148
7.6.3 Repeat 루프 = 149
7.6.4 Forever 루프 = 151
7.7 순차 처리와 병렬 처리 블록 = 152
7.7.1 블록 형태 = 152
7.7.2 특별한 형태의 블록 = 155
7.8 블록 생성 = 158
7.8.1 루프 생성 = 159
7.8.2 조건 생성 = 162
7.8.3 케이스 생성 = 163
7.9 예제 = 164
7.9.1 4:1 멀티플렉서 = 165
7.9.2 4-비트 카운터 = 166
7.9.3 교통 신호 제어기 = 167
7.10 요약 = 172
연습문제 = 174
8 태스크와 함수(Tasks and Functions)
8.1 태스크와 함수의 차이점 = 180
8.2 태스크 = 181
8.2.1 태스크 선언과 호출 = 181
8.2.2 태스크 예제 = 182
8.2.3 재진입 태스크 = 185
8.3 함수 = 186
8.3.1 함수 선언과 호출 = 187
8.3.2 함수 예제 = 188
8.3.3 자동(재귀) 함수 = 191
8.3.4 상수 함수 = 192
8.3.5 부호있는 함수 = 192
8.4 요약 = 193
연습문제 = 195
9 유용한 모델링 기법들
9.1 절차적 연속 할당 = 198
9.1.1 assign과 deassign = 198
9.1.2 force와 release = 199
9.2 파라미터 오버라이딩 = 201
9.2.1 defparam문 = 201
9.2.2 모듈_인스턴스 파라미터 값 = 203
9.3 조건 컴파일과 실행 = 205
9.3.1 조건 컴파일 = 205
9.3.2 조건 실행 = 206
9.4 시간 규모 = 208
9.5 유용한 시스템 태스크 = 210
9.5.1 파일 출력 = 211
9.5.2 계층 구조의 표시 = 213
9.5.3 스트로빙 (strobing) = 214
9.5.4 난수 발생 = 215
9.5.5 파일을 이용한 메모리 초기화 = 216
9.5.6 값 변환 덤프 파일 = 218
9.6 요약 = 220
연습문제 = 222
제2부 진보된 Verilog
10 타이밍과 지연
10.1 지연 모델의 유형 = 231
10.1.1 분산 지연 = 231
10.1.2 집중 지연 = 232
10.1.3 핀-대-핀 지연 = 234
10.2 경로 지연 모델링 = 235
10.2.1 Specify 블록 = 235
10.2.2 Specify 블록의 구조 = 236
10.3 타이밍 검사 = 244
10.3.1 $setup, $hold 검사 = 244
10.3.2 $width 검사 = 246
10.4 지연 백-어노테이션 = 247
10.5 요약 = 248
연습문제 = 250
11 스위치 수준 모델링
11.1 스위치 수준 모델의 요소 = 254
11.1.1 MOS 스위치 = 254
11.1.2 CMOS 스위치 = 255
11.1.3 양방향 스위치 = 256
11.1.4 파워 그리고 그라운드 = 258
11.1.5 저항성 스위치 = 258
11.1.6 스위치상의 지연값 설정 = 259
11.2 예제 = 260
11.2.1 CMOS Nor Gate = 260
11.2.2 2:1 멀티플렉서 = 263
11.2.3 간단한 CMOS 래치 = 264
11.3 요약 = 267
연습문제 = 268
12 사용자 정의 프리미티브
12.1 UDP 기본 = 272
12.1.1 UDP 정의 = 272
12.1.2 UDP 규칙 = 273
12.2 조합형 UDP = 273
12.2.1 조합형 UDP 정의 = 274
12.2.2 상태 테이블 항목 = 275
12.2.3 don't care의 약식 표기법 = 276
12.2.4 UDP 프리미티브 인스탄시에이션 = 277
12.2.5 조합형 UDP의 예 = 278
12.3 순차형 UDP = 281
12.3.1 준위-구동 순차형 UDP = 281
12.3.2 모서리-구동 순차형 UDP = 283
12.3.3 순차형 UDP의 예 = 285
12.4 UDP 테이블 약식 기호 = 287
12.5 UDP 설계에 대한 지침 = 288
12.6 요약 = 289
연습문제 = 291
13 Programming Language Interface
13.1 PLI의 사용 = 296
13.2 PLI 태스크 링크와 동작 = 297
13.2.1 PLI 태스크 링크하기 = 297
13.2.2 PLI 태스크 동작시키기 = 298
13.2.3 PLI 태스크 부가와 동작의 일반 과정 = 298
13.3 내부 데이터 표현 = 299
13.4 PLI 라이브러리 루틴 = 303
13.4.1 액세스 루틴 = 303
13.4.2 유틸리티 루틴 = 312
13.5 요약 = 316
연습문제 = 318
14 Verilog HDL을 이용한 논리합성
14.1 논리합성이란 무엇인가? = 320
14.2 논리합성의 영향 = 322
14.3 Verilog HDL 합성 = 324
14.3.1 Verilog 구성 요소 = 324
14.3.2 Verilog 연산자 = 325
14.3.3 몇 가지 Verilog 구성 요소들의 번역 = 327
14.4 합성 설계 흐름 = 331
14.4.1 RTL의 게이트로 합성 = 331
14.4.2 RTL의 게이트로의 합성 예 = 335
14.5 게이트 수준 넷-리스트 검증 = 340
14.5.1 기능 검증 = 340
14.6 논리합성을 위한 모델링 지침 = 343
14.6.1 Verilog 코드 작성 스타일 = 344
14.6.2 설계 분할 = 347
14.6.3 설계 제한 명세 = 350
14.7 순서 회로 합성의 예 = 350
14.7.1 설계 명세 = 351
14.7.2 회로 요구 사항 = 351
14.7.3 유한 상태 기계 (FSM) = 351
14.7.4 Verilog 표현 = 352
14.7.5 테크놀로지 라이브러리 = 355
14.7.6 설계 제한 = 356
14.7.7 논리합성 = 356
14.7.8 최적화 된 게이트 수준 넷-리스트 = 356
14.7.9 검증 = 359
14.8 요약 = 361
연습문제 = 363
15 향상된 검증 기술
15.1 전통적인 검증 순서 = 366
15.1.1 구조적 모델링 = 367
15.1.2 기능적 검증 환경 = 369
15.1.3 시뮬레이션 = 372
15.1.4 분석 = 375
15.1.5 범위(Coverage) = 377
15.2 어서션 검사 = 378
15.3 형식 검증 = 380
15.3.1 반-형식 검증 = 381
15.3.2 등가 검사 = 383
15.4 요약 = 384
제3부 부록
A 신호 강도 모델링과 고급 넷 정의
A.1 신호 강도 레벨 = 390
A.2 신호 충돌 = 390
A.2.1 서로 다른 강도와 같은 값을 가진 여러 개의 신호선 = 391
A.2.2 같은 강도와 서로 다른 값을 가진 여러 개의 신호선 = 391
A.3 향상된 넷 형 = 391
A.3.1 tri = 391
A.3.2 trireg = 392
A.3.3 tri0, tri1 = 393
A.3.4 supply0, supply1 = 393
A.3.5 wor, wand, trier, triand = 393
B PLI 루틴들의 목록
B.1 관행 = 396
B.2 엑세스 루틴 = 396
B.2.1 핸들 루틴 = 396
B.2.2 다음 루틴 = 399
B.2.3 내용 변형 링크(VCL) 루틴 = 400
B.2.4 인출 루틴 = 401
B.2.5 유틸리티 액세스 루틴 = 404
B.2.6 수정 루틴 = 405
B.3 유틸리티(tf_) 루틴 = 406
B.3.1 호출 태스크/함수 정보 얻기 = 406
B.3.2 인수 목록 정보 얻기 = 407
B.3.3 파라미터 값 얻기 = 407
B.3.4 파라미터 값 쓰기 = 408
B.3.5 파라미터 값 변화 감시 = 409
B.3.6 태스크 동기화 = 409
B.3.7 Long 형 수식 = 411
B.3.8 메시지 표시 = 411
B.3.9 혼합 유틸리티 루틴 = 412
B.3.10 하우스키핑 태스크 = 412
C 키워드, 시스템 태스크, 컴파일러 지시어 목록
C.1 키워드 = 414
C.2 시스템 태스크와 함수 = 415
C.3 컴파일러 지시어 = 415
D 형식적 문법 정의
D.1 소스 텍스트 = 418
D.1.1 라이브러리 소스 텍스트 = 418
D.1.2 구성 소스 텍스트 = 419
D.1.3 모듈과 원시 소스 텍스트 = 419
D.1.4 모듈 파라미터와 포트 = 420
D.1.5 모듈 아이템 = 420
D.2 선언 = 421
D.2.1 선언형 = 421
D.2.2 선언 데이터 형 = 423
D.2.3 선언 리스트 = 424
D.2.4 할당 선언 = 425
D.2.5 선언 범위 = 425
D.2.6 선언 함수 = 425
D.2.7 선언 태스크 = 426
D.2.8 블록 아이템 선언 = 427
D.3 프리미티브 인스턴스 = 427
D.3.1 프리미티브 파생과 인스턴스 = 427
D.3.2 프리미티브 강도 = 428
D.3.3 프리미티브 터미널 = 429
D.3.4 프리미티브 게이트와 스위치형 = 429
D.4 모듈과 일반적인 파생 = 429
D.4.1 모듈 파생 = 429
D.4.2 일반적인 파생 = 430
D.5 UDP 선언과 파생 = 431
D.5.1 UDP 선언 = 431
D.5.2 UDP 포트 = 431
D.5.3 UDP 문 = 432
D.5.4 UDP 파생 = 432
D.6 행위적 문법 = 432
D.6.1 계속적인 할당문 = 432
D.6.2 절차적 블록과 할당 = 433
D.6.3 병렬과 순차적 블록 = 433
D.6.4 문법 = 433
D.6.5 타이밍 컨트롤러문법 = 434
D.6.6 조건문 = 435
D.6.7 Case문 = 436
D.6.8 루프문 = 436
D.6.9 태스크 인에이블문 = 437
D.7 특별한 부분 = 437
D.7.1 특별한 블록 선언 = 437
D.7.2 특별한 경로 선언 = 437
D.7.3 특별한 블록 터미널 = 438
D.7.4 특별한 경로 지연 = 438
D.7.5 시스템 타이밍 검사 = 440
D.8 수식 = 443
D.8.1 결합 = 443
D.8.2 함수 호출 = 443
D.8.3 수식 = 444
D.8.4 기본 = 445
D.8.5 표현식 좌항값 = 446
D.8.6 연산자 = 446
D.8.7 수 = 447
D.8.8 문자 = 448
D.9 생성 = 448
D.9.1 특성 = 448
D.9.2 주석 = 448
D.9.3 지시어 = 449
D.9.4 지시어 분기 = 450
E Verilog에 관한 짧은 이야기들
Verilog HDL의 기원 = 454
인터프리티드, 컴파일된 코드, 기계어 컴파일된 코드 시뮬레이터 = 454
이벤트-기반 시뮬레이션, 부주의한 시뮬레이션 = 455
사이클-기반 시뮬레이션 = 455
고장 시뮬레이션 = 455
일반 Verilog 웹 사이트 = 455
구조적 모델링 도구 = 456
고수준 검증 언어 = 456
시뮬레이션 도구 = 456
하드웨어 가속 도구 = 456
회로 내 에뮬레이션 도구 = 457
적용 범위 도구 = 457
어서션 검사 도구 = 457
등가 검사 도구 = 457
형식 검증 도구 = 458
F Verilog 예제
F.1 합성 가능한 FIFO 모델 = 460
F.2 행위 레벨 DRAM 모델 = 468
찾아보기 = 475