Verilog HDL 개요 Sun, Hye-Seung.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

13 강 논리회로 2 과목 전자계산기 구조 강사 이 민 욱. 13 강 논리회로  논리회로 1. 부울 대수 (Boolean Algebra) 에서 사용하는 기본 연산자 ① 논리부정 : NOT ( ` ) 논리부정은 F = NOT A 의 표현을 F =A` 로 표현 ② 논리곱.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
 Verilog HDL 로 표현되 는 논리회로는 “module”~”endmodul e” 안에 표현  모든 문장은 세미콜론 (;) 으로 문장을 끝냄 ◦ 단, “end~” 로 시작하는 예약어에는 세미콜론이 없음  Module 이름은 영문자 와 언더바 (_) 로 시작할.
임진수 이현철. 회로 설계 과정 합성 ?  합성 도구가 주어진 HDL 코드를 Library 에 맞춰 회로로 변경시켜주는 과정  모든 코드가 합성되는 것은 아니다 !
HBE-COMBO II -SE VerilogHDL 실습 Lab#03 Verilog HDL
컴퓨터와 인터넷.
ASIC (Application Specific Integrated Circuit)
디지털시스템실험 2주차 고려대학교 전기전자전파공학부.
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
디지털 시스템 2010년 1학기 교수: 송상훈 연구실: 율곡관 603-B
조합 논리회로 설계 및 검증 Sun, Hye-Seung.
제4장 조합논리회로 내용 4.1 조합논리회로 설계 과정 4.2 산술회로 : 가산기(adder)/ 감산기(subtractor)
컴퓨터 프로그래밍 기초 [Final] 기말고사
디지털논리실습 기본 논리 게이트 부울대수 조합회로.
Multiplexer 설계.
Verilog HDL 이론.
디지털 시스템 설계(3).
오브젝트 플립플롭 IT CookBook, VHDL을 이용한 디지털 회로 입문.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
순차회로 모델링 Sun, Hye-Seung.
VHDL Design : Barrel Shifter
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
조합논리회로 모델링 Sun, Hye-Seung.
디지털시스템설계 과목 담당교수 : 원 충 상 한국교통대학교 컴퓨터공학과
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
HDL의 이해 Lecture #3.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
Ch2-1. VHDL Introduction VHDL 정의 VHDL의 역사 VHDL의 장점 HDL의 종류 VHDL 모델링
Microprocessor I/O Port & CLCD Noh Jin-Seok.
C#.
Programmable Logic Device
VHDL Mealy and Moore model
Method & library.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
플립플롭, 카운터, 레지스터 순서회로 플립플롭 카운터 레지스터.
디지털 시스템 2010년 1학기 담당교수: 최선영 연구실: 산학연구관 6층 602 ( )
논리회로 및 실험 조합논리회로 (1) - Adder
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
논리회로 설계 및 실험 5주차.
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
LabVIEW WiznTec 주임 박명대 1.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
ATmega128의 특징 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
Ⅰ 전자기초 Ⅱ 디지털 논리회로 Ⅲ C언어 기초 Ⅳ AVR 마이크로 컨트롤러 Ⅴ 마이크로 컨트롤러 개발환경
3. 모듈 (5장. 모듈).
논리회로 설계 및 실험 4주차.
TVM ver 최종보고서
발표자 : 이지연 Programming Systems Lab.
.Net FrameWork for Web2.0 한석수
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
아날로그 신호를 디지털 신호로 변환하는 A/D 변환기 A/D 변환 시 고려하여 할 샘플링 주파수 D/A 변환기
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
7 생성자 함수.
6 객체.
Presentation transcript:

Verilog HDL 개요 Sun, Hye-Seung

System & 하드웨어 의 이해 PCB기판 칩?

System & 하드웨어 의 이해 CPU 칩 프로세서 메모리 그래픽, 사운드 컨트롤러, USB 컨트롤러 네트워크 컨트롤러 FPGA 마우스 UART 터미널 메모리 스틱 키보드 USB 컨트롤러 UART 메모리 그래픽 사운드 네트워크 CPU

System & 하드웨어 의 이해 HW SW 수정 못함 수정 가능 여러 번 WRITE가능 메모리  RAM,ROM CPU USB 컨트롤러 UART 메모리 그래픽 사운드 네트워크 마우스 터미널 스틱 키보드 수정 가능 여러 번 WRITE가능 메모리  RAM,ROM

System & 하드웨어 의 이해 시스템의 범위 CPU CPU 메모리 USB 컨트롤러 UART 메모리 그래픽 사운드 네트워크 마우스 터미널 스틱 키보드 CPU I/O 장치 컨트롤러 특정 메모리

System & 하드웨어 의 이해 SoC 적용 System on Chip 시스템을 칩 하나에 집적 하여 구현 CPU 칩 사운드 컨트롤러 USB 컨트롤러 UART 컨트롤러 칩 CPU 메모리 그래픽 컨트롤러 네트워크 컨트롤러

System & 하드웨어 의 이해 a b c d d <= (a and b) or c FPGA 검증 FPGA 검증 칩 제작 온 칩화 구현 방법 Hardware Description Language VHDL Verilog HDL 을 이용한 HW 구현 a b c d HW 컴파일 d <= (a and b) or c FPGA 검증 온 칩화 검증 방법 FPGA 검증 칩 제작 CPU FPGA CPU USB 컨트롤러 UART 메모리 그래픽 사운드 네트워크 Field Programmable Gate Array HDL 로 기술된 로직을 구현해주는 CHIP

System & 하드웨어 의 이해 칩 제작

System IC 란? 반도체 집적회로 (IC)의 분류 표준 로직, MPU, MCU, DSP, Memory 등 주문형 IC (전용 IC) : 고객의 주문에 의한 특정용도 IC Gate array, Cell-based IC (CBI), FPGA 등으로 구현됨 Application Specific Integrated Circuit (ASIC) 특정용도 주문형 반도체 제품 고객의 주문에 의해 설계된 특정회로를 반도체 IC로 설계하여 주문자에게 공급하는 user 전용 규격의 주문형 IC Application Specific Standard Product (ASSP) 다수의 사용자에게 판매되는 특정 응용분야의 표준 제품 DSP, MPEG 관련 제품 System-On-Chip (SoC) Embedded processor & memory, 사용자 로직 (IP 코어 포함) 등을 단일 칩으로 구현한 제품으로, 시스템 LSI 또는 시스템 IC로 불리기도 함.

System IC 설계과정 Design Specifications Behavioral Modeling RTL level HDL Modeling Functional Simulation Logic Synthesis Gate-level Verification Placement & Routing PG Out Chip Test & Package Post-Layout Verification Mask Generation Fabrication Front-end Design Back-end Design

System IC 설계과정 설계사양 결정 회로의 기능, 동작성능, 동작 주파수, 칩 면적 및 전력 소모 목표치, 시험 범주 (test coverage), 설계 기간, NRE(Non-Recurring Engineering) 비용, 칩 단가 등이 포함된 설계 목표 설계될 시스템의 분할, 적용될 알고리즘과 아키텍처, 데이터 입/출력 및 제어 신호들의 타이밍, 입력/출력 신호의 이름과 비트 폭, 리셋 및 enable 신호, 클록 신호에 대한 정의 등을 포함

System IC 설계과정 행위수준 (Behavioral level) 모델링 및 검증 상세 설계 이전에 설계사양을 확인할 수 있도록 시스템의 전체기능을 모델링하고 검증하는 과정 설계사양에서 정의된 기능의 만족 여부, 입/출력 인터페이스의 호환성, 국제표준규격의 만족 여부 등을 검증 C 언어, Verilog HDL, SystemVerilog, SystemC 등을 사용

System IC 설계과정 RTL 설계 RTL (Register Transfer Level) 모델링을 통한 상세 설계 논리합성 툴에서 합성 가능한 코드로 개발 합성 가능한 RTL 설계 하위 모듈 또는 게이트 프리미티브의 인스턴스를 이용한 구조적 모델링 assign 문을 이용한 데이터 흐름(data flow) 모델링 always 구문을 이용한 행위수준 모델링 합성이 지원되지 않는 구문이나 파일 입/출력 구문은 사용 금지 최적의 하드웨어가 합성되도록 모델링 검증을 위한 테스트벤치 (testbench) 생성

System IC 설계과정 기능 검증 RTL 모델이 설계사양을 만족하는지 확인하기 위한 검증 회로 내부의 지연이 고려되지 않은 기능 수준의 검증 회로의 기능을 정확하게 검증할 수 있는 시뮬레이션 입력 벡터의 생성이 중요 테스트벤치 생성은 설계자의 능력과 숙련도가 요구됨 최근 시스템 복잡도가 급격히 증가함에 따라 검증 작업이 설계 과정의 병목이 됨

System IC 설계과정 논리합성 RTL 수준의 HDL 코드를 게이트 수준의 논리회로로 변환하는 과정 합성 조건들이 명시된 design constraint와 target library가 사용됨 Design constraint 합성되는 회로의 목표 동작 주파수, 면적, 클록신호 사양, 입/출력 신호 사양, 환경 변수 및 설계 규칙 등 논리합성에 사용될 조건들 Target library 합성에 사용되는 라이브러리 특정 회사의 FPGA 디바이스 또는 특정 회사의 셀 라이브러리

System IC 설계과정 논리합성 Logic Synthesis RTL Modeling Optimized Gate-level Netlist Meet Constraints ? Design constraints Target Library (Technology dependent) no yes Gate-level Netlist

System IC 설계과정 논리합성 과정 HDL 코드를 읽어 문법적인 오류를 분석하고, 구문을 해석하여 논리 게이트로 변환하는 단계 최적화 알고리즘을 적용하여 회로를 간소화시키는 최적화 단계 셀 라이브러리로 매핑하는 단계

System IC 설계과정 논리합성 과정 residue = 16’h0000; if (high_bits == 2’b10) residue = state_table[index]; else state_table[index] = 16’h0000; HDL Source Generic Boolean Translate (read) Target Technology Optimize + Map (compile) Synthesis = Translation + Logic Optimization + Mapping

System IC 설계과정 게이트 수준 검증 합성이 완료되면 게이트 수준의 netlist가 얻어지며, 합성에 사용된 라이브러리의 특성(즉, 셀의 지연, 면적, 부하 효과 등)이 합성된 회로에 반영됨 RTL 수준 검증에서 사용되었던 테스트 벡터를 동일하게 적용하여 논리 및 타이밍을 검증 정적 타이밍 분석(Static Timing Analysis; STA) 합성된 회로의 신호경로를 중심으로 타이밍을 분석 시뮬레이션 벡터가 사용되지 않음 레지스터의 setup time과 hold time의 위반 여부를 분석함

System IC 설계과정 레이아웃 설계 Post-layout 검증 논리합성을 통해 생성된 게이트 수준 netlist를 매스크 제작에 사용될 레이아웃 도면으로 변환하는 과정 자동 배치/배선(Automatic Placement & Routing; Auto P&R) 툴 칩 제작 공정에 맞게 미리 설계된 표준 셀 라이브러리(standard cell library), RAM, ROM 등의 매크로 셀, I/O 패드 셀과 설계자가 지정한 타이밍 조건을 적용하여 최적화된 레이아웃 도면을 생성 Post-layout 검증 레이아웃으로부터 셀과 배선에 의한 지연 특성과 게이트 수준 netlist를 추출하고, 타이밍 특성이 고려된 post-layout 검증 게이트 수준 타이밍 시뮬레이션, 레이아웃의 기생 효과를 고려한 STA, 각종 설계 규칙검사(design rule checking) 등을 통해 설계의 정확성을 검증

System IC 설계과정 레이아웃 설계 Auto P&R

HDL 기반 설계의 장점 설계 시간의 단축 설계의 질 향상 특정 설계기술이나 공정과 무관한 설계 초기 설계과정에서의 설계오류 수정이 용이 합성에 의한 회로 생성과 설계 변경이 용이 설계의 질 향상 우수하고 광범위한 하드웨어 기술 능력, 상위 수준의 설계 가능 다양한 설계기법의 검색에 의한 최적화 도달 선택적 최적화 기법을 이용한 합성 설계 특정 설계기술이나 공정과 무관한 설계 특정 ASIC 제조업체 및 구현기술과 무관한 설계 가능 동일한 HDL 설계의 다른 라이브러리 이용한 합성 신속한 하드웨어 원형화 (prototyping) 가능

HDL 기반 설계의 장점 낮은 설계 비용 표준 HDL 및 사용자의 확대 효율적인 설계관리 상위레벨 설계도구의 사용에 따른 설계 생산성 향상 설계기간의 단축에 따른 설계비용의 감소 설계자산의 재사용에 의한 설계비용의 감소 표준 HDL 및 사용자의 확대 IEEE 표준인 동시에 미국 정부의 공인 HDL 전세계적으로 설계 및 설계정보 교환의 수단으로 사용이 확대 효율적인 설계관리 HDL 언어의 구조적 설계 (structured design) 기능을 이용한 전체 설계의 기능별 분할 설계 및 설계관리 및 문서화 용이

Verilog HDL의 역사 Verilog HDL 1983년 Gateway Design Automation사에서 하드웨어 기술언어인 HiLo와 C 언어의 특징을 기반으로 개발 1991년 Cadence Design Systems가 Open Verilog International (OVI)라는 조직을 구성하고 Verilog HDL을 공개 1993년 IEEE Working Group이 구성되어 표준화 작업을 진행 1995년 12월 IEEE Std. 1364-1995로 표준화 2001년에 IEEE Std. 1364-2001로 개정 Verilog HDL의 확장 형태인 SystemVerilog가 개발되어 IEEE 표준화를 추진

Verilog 어휘 규칙 어휘 토큰 (lexical tokens) 여백(white space) 주석(comment) 연산자(operator) 수(number) 문자열(string) 식별자(identifier) 키워드(keyword)

Verilog 어휘 규칙 여백(white space) 주석(comment) 연산자(operator) 빈칸(space), 탭(tab), 줄바꿈 어휘 토큰들을 분리하기 위해 사용되는 경우를 제외하고는 무시 공백(blank)과 탭은 문자열에서 의미 있게 취급 주석(comment) HDL 소스코드의 설명을 위해 사용되며, 컴파일과정에서 무시됨 단일 라인 주석문; // 로 시작되어 해당 라인의 끝까지 블록 주석문; /* ~ */ 로 표시 블록 주석문은 내포(nested)될 수 없음 연산자(operator) 단항 연산자, 2항 연산자, 3항 연산자

Verilog 어휘 규칙 수 표현 (number representation) 정수형(integer) ; 10진수, 16진수, 8진수, 2진수 형식 : [size_constant]: 값의 비트 크기를 나타내는 상수 0이 아닌 unsigned 10진수가 사용되며, 생략될 수 있음 unsized 수 (즉, 단순 10진수 또는 비트 크기가 지정되지 않은 수)는 32비트로 표현됨 상위 비트가 x(unknown) 또는 z(high-impedance)인 unsized unsigned 상수는 그 상수가 사용되는 수식의 비트 크기만큼 확장됨 'base_format : 밑수(base)를 지정하는 문자(d, D, h, H, o, O, b, B) signed를 나타내기 위해 문자 s 또는 S가 함께 사용될 수 있음 number_value : unsigned 숫자를 사용하여 값을 표현 'base_format에 적합한 숫자들로 구성 base_format과 number_value 사이에 + 또는 - 부호 사용 불가 [size_constant]'<base_format> <number_value>

Verilog 어휘 규칙 수 표현 (number representation) 비트 크기와 밑수를 갖지 않는 단순 10진수는 signed 정수로 취급 부호 지정자 없이 밑수만 지정되면 unsigned 정수로 취급 밑수 지정자와 부호 지정자 s가 함께 사용되면 signed 정수로 취급 부호 지정자 s는 비트 패턴에는 영향을 미치지 않으며, 비트 패턴의 해석에만 영향을 미침 음수는 2의 보수(2’s complementary) 형식으로 표현됨 지정된 비트 크기보다 unsigned 수의 크기가 작은 경우 MSB 왼쪽에 0이 삽입 MSB가 x 또는 z이면, x 또는 z가 왼쪽에 삽입 값에 물음표( ? )가 사용되면 z로 취급 첫번째 문자를 제외하고는 밑줄(underscore)이 사용될 수 있으며, 이는 수의 가독성(readability)을 좋게 함

Verilog 어휘 규칙 Number # of Bits Base Dec. Equiv. Stored 10 32 Decimal 10 00....01010 2’b10 2 Binary 2 10 3’d5 3 Decimal 5 101 8’o5 8 Octal 5 00000101 8’ha 8 Hex 10 00001010 3’b5 Invalid! 3’b01x 3 Binary - 01x 12’hx 12 Hex - xxxxxxxxxxxx 8’b0000_0001 8 Binary 1 00000001 8’bx01 8 Binary - xxxxxx01 ’bz Unsized Binary - zz...zz(32bits) 8’HAD 8 Hex 173 10101101 Number # of Bits Base Dec. Equiv. Stored

Verilog 어휘 규칙 659 // a decimal number 'h837FF // a hexadecimal number 'o7460     // an octal number 4af        // illegal (hexadecimal format requires 'h) 4'b1001 // a 4-bit binary number 5'D3 // a 5-bit decimal number 3'b01x // a 3-bit number with the LSB unknown 12'hx // a 12-bit unknown number 16'hz // a 16-bit high-impedance number

Verilog 어휘 규칙 8'd-6 // illegal syntax -8'd6 // this defines the two’s complement of -6, // held in 8 bits, equivalent to -(8'd6) 4'shf // this denotes the 4-bit number '1111', to // be interpreted as a 2's complement number, // or '-1'. This is equivalent to -4'h1 -4'sd15 // this is equivalent to -(-4'd1), or '0001' -'d12 // 4294967284 -'sd12 // -12 27_195_000 16'b0011_0101_0001_1111 32'h 12ab_f001

Verilog 어휘 규칙 reg [11:0] a, b, c, d; initial begin a = 'hx; // yields xxx b = 'h3x; // yields 03x c = 'hz3; // yields zz3 d = 'h0z3; // yields 0z3 end

Verilog 어휘 규칙 실수형(real) ; IEEE Std. 754-1985(IEEE standard for double-precision floating-point number) 1.2 2394.26331 1.2E12 1.30e-2 0.1e-0 29E-2 236.123_763_e-12 (underscores are ignored) 문법적 오류 .12 9. 4.E3 .2e-7

Verilog 어휘 규칙 문자열(string) 이중 인용 부호(“ ”) 사이에 있는 일련의 문자들 단일 라인에 존재해야 하며, 여러 라인에 걸친 문자열은 사용 불가 8비트 ASCII 값으로 표현되는 unsigned 정수형 상수로 취급 문자열 변수는 reg형의 변수이며, 문자열 내의 문자 수에 8을 곱한 크기의 비트 폭을 가짐 reg [8*12:1] string_var; initial begin string_var = "Hello world!"; end

Verilog 어휘 규칙 특수 문자 앞에 확장 문자(escaped character)를 사용하면 일부 특수 문자를 문자열에 포함시킬 수 있음 확장문자를 이용한 특수문자의 표현 확장 문자열 확장 문자열에 의해 생성되는 특수 문자 \n New line character \t Tab character \\ \ character \" " character \ddd A character specified in 1~3 octal digits (0≤d≤7)

Verilog 어휘 규칙 module string_test; reg [8*14:1] stringvar; initial begin stringvar = "Hello world"; $display("%s is stored as %h", stringvar, stringvar); stringvar = {stringvar,"!!!"}; end endmodule Hello world is stored as 00000048656c6c6f20776f726c64 Hello world!!! is stored as 48656c6c6f20776f726c64212121

Verilog 어휘 규칙 식별자(identifier) 키워드(keyword) 객체에 고유의 이름을 지정하기 위해 사용 대소문자를 구별하여 인식 가독성을 위해 밑줄 사용 가능 단순 식별자; 일련의 문자, 숫자, 기호 $, 밑줄 등으로 구성 첫번째 문자는 숫자나 기호 $ 사용 불가, 문자 또는 밑줄만 사용 확장 식별자(escaped identifier); \ (back slash)로 시작되며, 여백(빈칸, 탭, 줄바꿈) 등으로 끝남 프린트 가능한 ASCII 문자들을 식별자에 포함시키는 수단을 제공 키워드(keyword) Verilog 구성 요소를 정의하기 위해 미리 정의된 식별자 확장문자가 포함된 키워드는 키워드로 인식되지 않음

Verilog 어휘 규칙 유효한 식별자의 예 shiftreg_a busa_index error_condition merge_ab _bus3 n$657 \busa+index \-clock \***error-condition*** \net1/\net2 \{a,b} \a*(b+c)

Verilog 어휘 규칙 Verilog keyword (일부) always and assign automatic begin buf bufif0 bufif1 case casex casez cell cmos config deassign default defparam design disable edge else end endcase if ifnone incdir include initial inout input instance integer join large liblist library localparam macromodule medium module nand negedge nmos nor not notif0 release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared showcancelled signed small specify specparam strong0 strong1 supply0 supply1 table task time tran tranif0 tranif1

Verilog 어휘 규칙 시스템 task와 시스템 함수 컴파일러 지시어(compiler directive) 문자 ‘ (ASCII 값 60, accent grave 또는 open quote)로 시작 Verilog 소스코드의 컴파일 과정에 영향을 미침 특정 파일에 있는 컴파일러 지시어는 다수 파일의 컴파일 동작을 제어할 수 있음 $display("display a message"); $finish; ‘define wordsize 8

Verilog 어휘 규칙 속성 (attribute) 시뮬레이터와 논리합성 툴의 동작을 제어할 수 있도록 HDL 소스의 객체, 문장, 문장 그룹에 대한 속성을 지정할 수 있음 예를 들어, 논리 합성 툴에서 사용될 수 있는 속성을 Verilog 모델에 포함시켜 합성 툴의 동작을 제어할 수 있음 속성에 특정 값이 지정되지 않으면, 그 값은 default로 1이 됨 attribute_instance::= (*attr_spec{,attr_spec}*) attr_spec::= attr_name=constant_expression |attr_name attr_name::= identifier

Verilog 어휘 규칙 (세가지 모두 동일하게 해석됨) 논리합성을 위한 속성의 예 (* full_case, parallel_case *) case (foo) <rest_of_case_statement> (* full_case=1, parallel_case=1 *) case (foo) <rest_of_case_statement> (* full_case, parallel_case=1 *) // full_case 속성은 값이 지정되지 않았다. case (foo) <rest_of_case_statement>

Verilog 어휘 규칙 모듈 정의에 속성이 지정된 예 (* optimize_power *) module mod1(<port_list>); (* optimize_power=1 *) module mod1(<port_list>); 모듈 사례화에 속성이 지정된 예 (* optimize_power=0 *) mod1 synth1(<port_list>); reg 선언에 속성이 지정된 예 (* fsm_state *) reg [7:0] state1; (* fsm_state=1 *) reg [3:0] state2, state3; reg [3:0] reg1; // this reg does NOT have fsm_state set (* fsm_state=0 *) reg [3:0] reg2; // nor does this one

Verilog HDL 개요 Verilog HDL Verilog HDL 구문 논리 합성 Library Simulation assign, if~else, case, for always 논리 합성 initial, $finish $fopen specify $width table Simulation Library Verilog HDL 구문

Verilog HDL의 모듈 port 선언 reg 선언 wire 선언 parameter 선언 하위 모듈 호출 module module_name (port_list); endmodule 하위 모듈 호출 always, initial 문 function, task 정의문 assign 문 function, task 호출문 port 선언 reg 선언 wire 선언 parameter 선언 No Semicolon Semicolon

Verilog HDL의 모듈 input inout output wire, reg wire Module_instance_A Module_instance_B wire, reg always begin . . . end Continuous assignment assign wire_A = C | D; initial Behavior_2 reg reg_A, reg_B, . . . integer int_A, . . . register variables Primitive instantiation Behavior_1 declarations

Verilog 모델링 예 게이트 프리미티브를 이용한 모델링 예 (반가산기 회로) sum = a ^ b cout = a & b Module Name Module Ports a b cout sum 1 module half_add1 (a, b, sum, cout); input a, b; output sum, cout; wire cout_bar; xor (sum, a, b); nand (cout_bar, a, b); not (cout, cout_bar); endmodule Declaration of port modes Declaration of internal signals Half_ Adder sum = a ^ b cout = a & b a b sum cout Instantiation of Primitive gates Verilog keyword

Verilog 모델링 예 연속 할당문을 이용한 모델링 module half_adder2(a, b, sum, cout); input a, b; output sum, cout; assign cout = a & b; assign sum = a ^ b; endmodule

Verilog 모델링 예 행위수준 모델링 (조합논리회로) MUX in0 2 out in1 sel module mux2b_if(in0, in1, sel, out); input [1:0] in0, in1; input sel; output [1:0] out; reg [1:0] out; always @(sel or in0 or in1) begin if (sel ==0) out = in0; else out = in1; end endmodule MUX in0 in1 sel out 2

Verilog 모델링 예 행위수준 모델링 (순차회로) module flip-flop (q, din, clk, rst); input din, clk, rst; output q; reg q; always @(posedge clk or posedge rst) begin if (rst == 1) q <= 0; else q <= din; end endmodule

Verilog 모델링 예 하위 모듈 인스턴스를 이용한 구조적 모델링 module full_add (a, b, cin, sum, cout); input a, b, cin; output sum, cout; wire w1, w2, w3; //생략가능 half_add1 U1 (a, b, w1, w2); half_add2 U2 (w1, cin, sum, w3); or U3 (cout, w2, w3); endmodule Module instantiation

Verilog 모델링 예 테스트벤치 모듈 HDL 모델을 시뮬레이션하기 위한 Verilog 모듈 DUT에 인가될 시뮬레이션 입력(stimulus)을 생성하는 구문 시뮬레이션 대상이 되는 모듈(Design Under Test; DUT)의 인스턴스 시뮬레이션 입력에 대한 DUT의 반응(response)을 관찰하는 구문 Stimulus Generator Design Under Test (DUT) Response Monitor

Verilog 모델링 예 module test_fix (); reg A, B, C; circuit c1(A, B, C, Out); initial begin A=0; B=1; C=0; #50 A=1; #50 A=0; C=1; #50 C=0; #50 $finish; end endmodule Verilog Testbench 예

Verilog 모델링 예 module tb_ha ; reg a, b; half_adder U0_half_adder(a, b, sum, cout); initial begin a = 0; b = 0; #10 a = 1; #10 a = 0; b = 1; b = 0; end endmodule 반가산기의 테스트벤치 예

Verilog 모델링 예 D 플립플롭의 테스트벤치 예 module tb_dff_sr ; reg set, reset, clock, din; dff_sr U0_dff_sr (set, reset, clock, din, q, qb); initial begin clock = 1'b0; forever begin #10 clock = ~clock; end din = 0; reset = 1; set = 1; #15 din = 1; #30 reset = 0; #10 reset = 1; #25 din = 0; #20 set = 0; #10 set = 1; #30 din = 0; endmodule D 플립플롭의 테스트벤치 예