Presentation is loading. Please wait.

Presentation is loading. Please wait.

Verilog HDL 개요 Sun, Hye-Seung.

Similar presentations


Presentation on theme: "Verilog HDL 개요 Sun, Hye-Seung."— Presentation transcript:

1 Verilog HDL 개요 Sun, Hye-Seung

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

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

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

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

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

7 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

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

9 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로 불리기도 함.

10 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

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

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

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

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

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

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

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

18 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

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

20 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) 등을 통해 설계의 정확성을 검증

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

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

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

24 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 로 표준화 2001년에 IEEE Std 로 개정 Verilog HDL의 확장 형태인 SystemVerilog가 개발되어 IEEE 표준화를 추진

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

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

27 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>

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

29 Verilog 어휘 규칙 Number # of Bits Base Dec. Equiv. Stored
Decimal 2’b Binary 3’d Decimal 8’o Octal 8’ha Hex 3’b5 Invalid! 3’b01x Binary x 12’hx Hex xxxxxxxxxxxx 8’b0000_ Binary 8’bx Binary xxxxxx01 ’bz Unsized Binary zz...zz(32bits) 8’HAD Hex Number # of Bits Base Dec. Equiv. Stored

30 Verilog 어휘 규칙 659 // a decimal number 'h837FF // a hexadecimal number
'o7460     // an octal number 4af        // illegal (hexadecimal format requires 'h) 4'b // a 4-bit binary number 5'D // 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

31 Verilog 어휘 규칙 8'd-6 // illegal syntax
-8'd // 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'sd // this is equivalent to -(-4'd1), or '0001' -'d // -'sd // -12 27_195_000 16'b0011_0101_0001_1111 32'h 12ab_f001

32 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

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

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

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

36 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 c6c6f20776f726c64 Hello world!!! is stored as 48656c6c6f20776f726c

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

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

39 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

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

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

42 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>

43 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

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

45 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

46 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

47 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

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

49 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; or in0 or in1) begin if (sel ==0) out = in0; else out = in1; end endmodule MUX in0 in1 sel out 2

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

51 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

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

53 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; # C=0; #50 $finish; end endmodule Verilog Testbench 예

54 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 반가산기의 테스트벤치 예

55 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 플립플롭의 테스트벤치 예


Download ppt "Verilog HDL 개요 Sun, Hye-Seung."

Similar presentations


Ads by Google