1장 서론 1.1 VHDL 및 논리 합성 탄생 배경 1.2 VHDL 과 ASIC 설계 환경과의 관계 1.3 VHDL 모델링, 합성 및 FPGA 구현 예 1.4 VHDL 발전 추세 및 미래 전망
1.1 VHDL 및 논리 합성 탄생 배경 ASIC(Application Specific IC)의 등장 고성능 설계 도구의 영향 회로 집적도 증가의 결과 설계 기법 및 도구의 성능 향상 필요성 대두 설계 프로세스의 혁신 HDL(Hardware Description Language) Logic Synthesis System
1.1.1 ASIC 기술 칩 제작 제조 공정 단축 위해 미리 정해진 Mask Pattern 사용 설계 + 제조(Fabrication or Fab.) 제조 공정 단축 위해 미리 정해진 Mask Pattern 사용 집적도 저하, Mask 수를 줄이고 시간 단축 Mask Pattern 종류에 따른 구분 Gate Array: 미리 준비된 트랜지스터를 연결해서 게이트 구성 Standard Cell: 높이가 같은 셀들 배치 및 정해진 배선 영역 *. Gate density / count: 칩이 집적된 NAND, NOR 게이트의 수 80년대 초 수천 게이트 현재 100만 게이트 이상(1000 배 이상 증가)
1.1.1 ASIC 기술 집적회로 설계의 변천 과정
1.1.1 ASIC 기술 한 칩에 보드 전체, 즉 시스템을 집적 가능 설계 문제 복잡도 SoC(System-on-a-Chip) 기하 급수적 증가 →VHDL, 논리 합성의 기여
1.1.2 합성(Synthesis) 설계 수준의 향상 RTL 설계의 게이트 수준으로의 변환 Layout, Gate 수준 → RTL 수준 이상 RTL 설계의 게이트 수준으로의 변환 논리 합성(Logic Synthesis) 게이트 수준 → Layout 수준 설계 Layout Synthesis, placement & routing 도구
1.1.2 합성(Synthesis) 설계 수준과 이에 따른 표현 방법의 변천
1.1.2 합성(Synthesis) 회로도와 HDL을 이용한 설계 방법의 비교
1.1.3 VHDL & Verilog 표준화를 목표로 하면서 사용되고 있는 HDL 의 비교 VHDL의 개발과 변화 VHDL 시스템에 대한 기술의 능력은 매우 높으나, synthesis를 위하여 sub-set VHDL과 modeling에 대한 guide가 요구 Verilog HDL VHDL보다는 기술의 능력이 높지는 않으나 널리 사용되고 있으며, gate 레벨의 simulation 언어로는 매우 뛰어남 VHDL의 개발과 변화 1980: The USA Department of Defense(DOD) 에서 요구 Self-document,Top-down Strategy and Reusable with New Technology 필요성 1983: IBM,Texas Instrument와 Intermetrics에서 VHDL 개발 시작 1987: IEEE 1076 승인 VHDL을 처음으로 이용하여 F-22 Aircraft 설계 EDA(Electronic Design Automation) Vendor에서 개발을 시작하여 상업적으로 이용.
1.1.3 VHDL & Verilog VHDL의 개발과 변화 Verilog HDL의 개발과 변화 1993: VHDL was revised to IEEE 1076 ’93 1996: IEEE 1076.3(a VHDL package for use with synthesis tools : std_logic_1164) IEEE 1076.4(VITAL) Verilog HDL의 개발과 변화 1983: Gateway 에서 Verilog HDL 또는 Verilog 개발 1985: Verilog-XL Simulator 개발 1989: Cadence bought Gateway 1995: IEEE 1364 승인
1.1.4 VHDL 합성의 필요성 ASIC 설계는 PCB 설계와 다르다. 오류 수정이 어렵다. Layout, 제조 공정, 테스트 반복 필요 개발 비용, 기간에 직접적인 영향 ASIC 설계 도구(오류 없는 설계, 시장 접근 시간을 맞추기 위한 설계 도구) 검증 도구 Simulator(각 수준에서) Function, Gate / Logic, Circuit 합성 도구 Abstract → Concrete RTL → Gate → Layout Extraction 도구 Layout → Gate → RTL (설계 정확성 검증 위해) 그 외 Timing Analyzer, Design Rule Checker, …………
1.1.4 VHDL 합성의 필요성 VHDL 합성 도구는 gate 수준 netlist 및 회로 도면 생성을 자동화 시킴 설계자가 시스템 기능 정의 와 시뮬레이션에 노력을 집중하게 함 25,000 게이트 ASIC 250 페이지 도면 필요
1.1.5 VHDL 논리 합성의 장점 설계 사이클 단축 설계의 질적 향상 설계 변경용이, 설계오류 가능성 저하, 간단한 기술 방식, 빠른 설계, 빠른 변경 설계의 질적 향상 여러 가지 architecture 시도 가능: 최적화 면적 또는 속도 최적화 가능(논리 합성기의 기능) Timing analyzer 기능 포함(critical path delay, setup, hold time 계산) 판매자, 기술(technology)에 무관한 설계 가능 ASIC or FPGA 로 구현 가능 설계 비용 절감 설계 기간 단축, 스키메틱 설계 과정 생략, 설계 오류 저하 Design reasability – IP, Library 그대로 또는 수정해서 사용가능 한 engineer가 30 ~ 40 k 게이트의 설계 담당 기능 집적 기술에 따른 성장 현재 수백만 게이트급 설계(SoC) 가능 고성능 워크스테이션 도움 – 논리 합성, 시뮬레이션 필수
1.1.5 VHDL 논리 합성의 장점 설계 관리 용이 표준과의 일치 VHDL IFIP 172, IEEE 1076.X Design, documentation 겸용 표준과의 일치 IFIP 172, IEEE 1076.X
1.1.6 VHDL 논리 합성의 단점 설계 문화의 변화 설계 오류 발견 및 수정 필요(여전히) 회로 도면 설계 시스템 합성 시스템 이용한 RTL 수준 설계 시스템으로 설계 오류 발견 및 수정 필요(여전히) 생성된 논리 설계에 대해 Delay 고려한 logic simulation 필요
1.1.7 VHDL 합성의 실체 “VHDL 로 기술만 하면 합성도구가 완벽한 회로를 만들어 준다 !” “합성 결과는 사람이 설계한 것 보다 나을 수 없다 !” VHDL 설계는 논리 설계 경험에 근거해야 함 설계 도구는 engineer의 통제 하에 있어야만 한다. 부적절한 코드, 모호한 코드는 설계자의 책임임 상위 수준 설계에 대한 판단은 역시 설계자가 해야 함 예 여러 사이클에 걸쳐 연산자 공유 하기
1.2 VHDL 과 ASIC 설계 환경과의 관계 1.2.1 합성 가능한 함수 및 합성 원칙 1.2.1 합성 가능한 함수 및 합성 원칙 1.2.1.1 무엇을 합성할 수 있는가? ASIC: Random Logic Block, Memory, Mega Function 부분 Random Logic Block 합성에 가장 효과 Memory(RAM, ROM), FIFO 등은 전용 컴파일러가 더 효율적임
1.2.1.1 무엇을 합성할 수 있는가? 합성 가능 함수 조합형 MUX, DEC, ENC, CMP, LUT, ALU, ADDER, SUBSTRACTOR, PLA, Parity Generator 등 순차 논리 함수 Counter 및 관련 함수 Register 와 Latch: Shift, Accumulator 제어 논리 회로: Sequencer, FSM, Edge Detector, Synchronizer 등 Timing Critical Design 은 추후에 Layout 등에 대한 수정 필요
1.2.1.2 기본 합성 원칙 설계 접근 방법: VHDL 설계 – 시뮬레이션 검증- 합성 1.2.1.2 기본 합성 원칙 설계 접근 방법: VHDL 설계 – 시뮬레이션 검증- 합성 모든 VHDL 코드가 합성 가능하지는 않음 Synthesizable VHDL Code 에 대한 guideline 이 있다. 논리 회로 설계 기법에 익숙해야 하고, ASIC 설계 경험도 많아야 좋은 설계 결과를 얻을 수 있다. 논리 회로의 구조를 생각하며 설계해야 한다.
1.2.2 설계 계층 구조 ASIC 설계 프로세스는 Top-Down(하향식) 설계 방식에 근거
1.2.3 ASIC 설계 프로세스 ASIC design engineer 의 목표 한번의 설계로 정확히 동작하는 회로 설계
1.2.3 ASIC 설계 프로세스 ASIC 개발 과정
1.2.3.1 시스템 개발 계획 및 기능 분할 시스템 요건 분석 → 적용 가능한 알고리즘 선정, H/W와 S/W 간 기능 분할 → 상위 수준 블록 다이어그램, 하위 모듈에 대한 명세 도출
1.2.3.2 블록 다이어그램 및 개발 명세 결정 시스템 분할: 기판, 모듈, ASIC, 그외 IC 1.2.3.2 블록 다이어그램 및 개발 명세 결정 시스템 분할: 기판, 모듈, ASIC, 그외 IC 이 과정에서 크기, 전력소모, 무게, 비용, 성능, 개발기간 등을 고려해야 함 출력 ASIC 들의 역할 및 기능(Spec.) + 블록 다이어그램 인터페이스 방식, timing 요건, clock speed 등 가능한 계속적으로 분할하여 한 모듈이 적절한 크기의 모듈이 되게 한다. 논리 설계를 시작할 수 있을 만큼의 소규모 블록들로 나눔 가능한 상세한 블록 다이어그램 완성 필요 VHDL 코딩에 도움이 됨 함수, 신호 명칭등에 고려
1.2.3.2 블록 다이어그램 및 개발 명세 결정
1.2.3.2 블록 다이어그램 및 개발 명세 결정
1.2.3.3 테스트 및 시뮬레이션 계획 논리 블록 정의, testable design 에 대한 고려 필요 Test Plan 1.2.3.3 테스트 및 시뮬레이션 계획 논리 블록 정의, testable design 에 대한 고려 필요 Test Plan IC의 controllability(제어 가능성), observability(관찰 가능성)을 위해 부가 회로 추가 필요 → test pattern의 양에 영향 ASIC의 낮은 수율(yield)와 테스트 안된 설계의 제조는 엄청난 비용과 시간 손실 가져옴 Simulation Plan 각 모듈(ASIC) 및 시스템에 대한 시뮬레이션 통한 검증 계획 입력 신호 발생 방법 시뮬레이션 결과 신뢰도 확인 방법
1.2.3.4 논리 회로 설계 VHDL 합성 사용에 의해 가장 큰 영향 받는 부분 1.2.3.4 논리 회로 설계 VHDL 합성 사용에 의해 가장 큰 영향 받는 부분 종전 방식과 VHDL 합성 방식 사용 시 설계 흐름도간 비교
1.2.3.4 논리 회로 설계 VHDL 합성 방식 VHDL 코드 작성 및 시뮬레이션 테스트 패턴 작성 1.2.3.4 논리 회로 설계 VHDL 합성 방식 Entity 단위로 설계 상세화 Entity 내의 MUX, Counter, Register 등은 Process 문으로 표현 주석(comment) 이용한 서술적 기술 추가 VHDL 코드 작성 및 시뮬레이션 테스트 패턴 작성 Netlist 얻기 전에 시뮬레이션 통한 검증이 되므로, 도면 설계에 비해 검증을 훨씬 빨리 시작함 자동 생성된 도면을 자주 관찰하여 자신의 VHDL 설계가 어떻게 만들어지는지(원하는 대로 만들어 지는지) 검증하는 것이 중요함(특히 초보자들에게는)
1.2.3.5 시뮬레이션 VHDL 코딩 완료 단계, 시뮬레이션 중에도 합성 가능 여부를 미리 검사해 보는 것이 필요함 1.2.3.5 시뮬레이션 VHDL 코딩 완료 단계, 시뮬레이션 중에도 합성 가능 여부를 미리 검사해 보는 것이 필요함 테스트 패턴 입력은 ASCII 텍스트 파일 출력 파형(waveform) Breakpoint 설정 Debug 시뮬레이션 결과에 따라 오류 코드, 설계 오류 등 수정
1.2.3.6 논리 합성 VHDL의 게이트 수준으로의 합성 입력 정보 논리 합성의 단계 1.2.3.6 논리 합성 VHDL의 게이트 수준으로의 합성 입력 정보 VHDL 코드 이외에, ASIC 제조 업체, 셀 라이브러리 셀 라이브러리: 게이트별 지연시간, capacitor 크기, 도선 길이에 따른 loading delay 계산 규칙 클럭 주파수, 펄스 폭, 동작 온도, 동작 전압, 출력 부하(output load) 등에 대한 가정, critical path 통한 최대 전달 지연 시간 등 논리 합성의 단계 Generic technology gate / function 이용한 합성 MUX, DEC, Register, ALU 등 범용 논리 블록으로의 합성 논리 블록 공유 최적화 특정 technology(library) 를 고려한 합성 범용 블록을 특정 ASIC 제조 업체의 library cell 들로 대치함 이 과정에서 속도 제약 조건 만족 위해 performance optimization 수행 속도 제약 조건 만족 시 면적 최소화(logic minimization) 수행
1.2.3.6 논리 합성 출력 정보 설계자의 합성 결과에 대한 면밀한 분석 자세 필요 1.2.3.6 논리 합성 출력 정보 논리 게이트 수준의 netlist, schematic diagram, chip bonding, layout, gate-level logic simulation, post layout timing simulation 등에 사용 Timing, gate count, critical path delay, 보고서 형태의 출력 어떤 기억 소자들에 합성 되었나, 속도 제약 조건 만족 여부 등 설계자의 합성 결과에 대한 면밀한 분석 자세 필요 자신의 예상대로 합성 여부(게이트 수, 메모리 소자) 도면 관찰 통한 확인 필요 더 나은 결과(성능 또한 면적) 얻기 위해서도, 다양한 기술 방식의 합성 결과 관찰 필요 게이트 수가 지나치게 많지 않은지 검사도 필수적임
1.2.3.7 ASIC 검증 Layout(placement) 및 routing 에 앞서 최종적인 gate-level 회로 검사 수행 Pre-route signoff 라고도 함 목적: layout 직전, 직후에 어떤 설계 오류도 없게 하기 위함 입력 회로 파일(netlist) 와 시뮬레이션 패턴 파일 하는 일 Gate-level logic/timing simulation, timing analysis, DRC(Design Rule Checking), ERC(Electrical Rule Checking) 및 I/O 핀 할당 특히 속도 제약 조건이 강한 설계의 경우 layout planning 에도 세심한 고려 필요 Layout planning(floor planning)의 변화를 배선 전 예측(속도, 면적에 대한) 값에 많은 영향을 줌
1.2.4 VHDL 합성 방식에서 유의할 사항 Schematic design 에서 사용되던 원칙이나 방식을 VHDL 이용한 설계 방식에도 적용해야 한다. 유의 사항 VHDL 설계는 프로그래밍이 아니라 논리 설계이다. 따라서 논리 회로 구조를 예상하고 도시한 후에 그에 따라 VHDL 설계를 해야 한다.(즉, schematic design 에서의 방식을 염두에 두어야만 정확한 설계가 가능하다.) 자신이 원하는 것을 합성해 낼 수 있도록 VHDL 코딩을 하는 것이다. VHDL 설계 시 사용되는 시뮬레이터와 최종 설계 검증 시, 사용되는 ASIC 제조 업체 공인 고성능 논리 시뮬레이터를 사용하는데, 두 시뮬레이터에 같은 테스트 패턴을 입력으로 사용한다.(게이트 수준 ASIC 설계와 VHDL 설계의 일치 여부 확인 위해) 공통을 테스트 패턴 사용위해 VHDL test bench 로 부터 양쪽 시뮬레이터에 대한 테스트 패턴 집합을 만들어 내는 것이 좋다.
1.3 VHDL 모델링, 합성 및 FPGA 구현 예 1.3.1 합성을 위한 VHDL 모델링 설계의 정확성 검증의 한 방법 최종 목적지는 ASIC 으로의 구현 1.3.1 합성을 위한 VHDL 모델링 VHDL 모델링 수준: 행위 수준(알고리즘) 부터 게이트 수준까지 Top-down design 방식 구현 위한 문법적 특징 합성가능 표현 구조는 매우 제한적임 테스트 벤치 기술 등을 위해서는 그 이외의 것들에 대한 이해 필요
1.3 VHDL 모델링, 합성 및 FPGA 구현 예 1.3.1.1 추상적 행위 수준 모델링 1.3.1.1 추상적 행위 수준 모델링 하드웨어의 기능과 동작에 대한 기술 clock, word length, bit 할당 등 구체적 정보 배제됨 PASCAL 이나 C 언어 기술과 유사함 특히 test bench 기술 시에 효과적임 1.3.1.2 레지스터 전송 수준 모델링(RTL) 논리회로 설계 시 상세한 블록 다이어그램을 그리는 것에 해당 Clock, reset 존재 Data bus, register 등의 너비가 정해짐 신호 할당 예: Output <= Input; 대개는 ASIC 제조 업체나 technology 에 무관함 Data flow description 이라고도 함
1.3 VHDL 모델링, 합성 및 FPGA 구현 예 1.3.1.3 구조적 모델링 Netlist 표현 방식과 유사 1.3.1.3 구조적 모델링 Netlist 표현 방식과 유사 다양한 component 들이 신호선으로 연결된 회로 Component는 gate, FF, 다른 RTL 코드 블록 *. 하향식 설계 상세화 되면서 낮은 수준의 블록으로 대체됨
1.3.1.4 전 가산기 VHDL 모델링의 예 반 가산기 entity 선언부
1.3.1.4 전 가산기 VHDL 모델링의 예 반 가산기: RTL 모델링
1.3.1.4 전 가산기 VHDL 모델링의 예 반 가산기: 추상적 행위 수준 모델링
1.3.1.4 전 가산기 VHDL 모델링의 예 전 가산기: 구조적 모델링
1.3.1.4 전 가산기 VHDL 모델링의 예 전 가산기 회로도
1.3.2 VHDL 모델링의 시뮬레이션 및 논리 합성의 예 전 가산기 회로에 대한 test bench
1.3.2 VHDL 모델링의 시뮬레이션 및 논리 합성의 예 전 가산기 시뮬레이션 결과
1.3.2 VHDL 모델링의 시뮬레이션 및 논리 합성의 예
1.3.2 VHDL 모델링의 시뮬레이션 및 논리 합성의 예 전 가산기의 동작적 모델링
1.3.2 VHDL 모델링의 시뮬레이션 및 논리 합성의 예
1.3.3 VHDL 모델링의 FPGA 구현 1.3.3.1 FPGA(Field Programmable Gate Array) ASIC 의 종류 standard cell, gate array, PLD(Programmable Logic Devices) 1.3.3.1 FPGA(Field Programmable Gate Array) PLD의 확장 형태 범용 FPGA의 구조(논리 셀과 배선 영역 분리되어 있음)
1.3.3.2 FPGA 구현의 예 대표적인 FPGA 설계 흐름도
1.3.3.2 FPGA 구현의 예 Pre-layout simulation 과 post-layout simulation이 있다. Timing analyzer Set-up time, hold time, clock trigger 에서 추력까지의 지연 시간, 최대 동작 주파수 예측 Device programming file JEDEC 포맷(Cypress, Warp tool), BIT 파일(XILINX) 디바이스 선택 화면
1.3.3.2 FPGA 구현의 예 논리 합성 과정
1.3.3.2 FPGA 구현의 예 시뮬레이션 결과
1.3.3.2 FPGA 구현의 예 FPGA 구현 예(일부)
1.3.3.2 FPGA 구현의 예 FPGA 구현 예(일부)
1.3.3.2 FPGA 구현의 예 디바이스 활용률(리포트)
1.3.3.2 FPGA 구현의 예 타이밍 분석 결과
1.3.4 성능 최적화 및 면적 최소화의 예 최소 비용으로 최고 성능의 ASIC 개발이 목표 1.3.4 성능 최적화 및 면적 최소화의 예 최소 비용으로 최고 성능의 ASIC 개발이 목표 동일 기능이면 게이트 수가 적은(면적이 적은) 회로를 설계해야 함 속도, 성능 최적화 Critical path delay 를 최소화 해야 함 VHDL 수식 표현과 합성 구조 Sum <= BusA + BusB + BusC + BusD; Sum <= (BusA + BusB) + (BusC + BusD);
1.3.4 성능 최적화 및 면적 최소화의 예 원하는 구조 지정이 분명하지 않은 표현 1.3.4 성능 최적화 및 면적 최소화의 예 원하는 구조 지정이 분명하지 않은 표현 Y <= A + B when select = ‘1’ Else C+D; 구현 가능한 덧셈기 구조
1.3.4 성능 최적화 및 면적 최소화의 예 두 개의 MUX 와 한 개의 덧셈기로 구현하려면 두 개의 덧셈기와 한 개의 MUX 1.3.4 성능 최적화 및 면적 최소화의 예 두 개의 MUX 와 한 개의 덧셈기로 구현하려면 Mpx1 <= A when select = ‘1’ Else C; Mpx2 <= B when select = ‘1’ Else D; Y <= Mpx1 + Mpx2; 두 개의 덧셈기와 한 개의 MUX Sum1 <= A + B; Sum2 <= C + D; Y <= Sum1 when select = ‘1’ Else Sum2; *. 자원의 공유와 그에 따른 부대 비용(MUX)을 고려해서, 원하는 구조가 합성되도록 기술하는 것이 현명한 방법임
1.3.4.1 논리 게이트 최소화 간단한 논리 최적화의 예
1.3.4.1 논리 게이트 최소화 constant reduction, inverter pair removal Karnaugh map, Rand-McClusky Method 등 논리 합성 도구의 중요 기능 중 하나이며, 도구 선택의 기준이 될 수도 있다. 1.3.4.2 속도 최적화 논리 합성 도구의 중요 기능 중 하나(면적 최소화와 함께) Critical path delay 고려 하며 속도 제약 조건 만족토록 등가회로로 변환 내부에 timing analyzer 포함
1.3.4.2 속도 최적화 아래 회로 같은 긴 입력 신호 디코드 위해 다음 같은 AND-chain 필요 1.3.4.2 속도 최적화 아래 회로 같은 긴 입력 신호 디코드 위해 다음 같은 AND-chain 필요 SigA <= ‘1’ when Count = “1101000011001010” Else ‘0’;
1.3.4.2 속도 최적화 AND / OR 항으로 분리
1.3.4.2 속도 최적화 A 에서 Z 까지 지연에 대한 회로 최적화
1.3.4.2 속도 최적화 전체적인 AND 단계수 줄이기 *. 괄호를 잘 사용함으로써 게이트의 단계 수 줄일 수 있음
1.4 VHDL 발전 추세 및 미래 전망 향후 합성 도구 발전 방향 통합 ASIC 설계 작업과 합성 작업 간 보다 긴밀한 통합 합성 도구의 성능 개선 상위 수준 합성 도구 및 설계 도구 개발 통합 문제점: ASIC 제조업체의 layout 및 검증용 도구와 합성 도구가 제대로 통합되지 않음 예 합성용 타이밍 데이터의 정확도(게이트 지연시간 데이터, fanout, 부하 계산, 배선 길이 및 capacitor 효과 계산 규칙 등) ASIC 제조 기술 변경이 자주 일어나지만, 합성용 라이브러리에는 제대로 고려되지 않음 Layout 결과를 고려한 합성 도구의 운용(layout 도구와 합성 도구 통합)
1.4 VHDL 발전 추세 및 미래 전망 도구 성능과 정확도 최상위 수준 도구들 갈수록 설계 크기가 커져감(SoC) 해결 방법 고성능 워크스테이션, 클러스터 사용 작업 분할 합성 결과를 항상 신뢰할 수 있을 정도의 정확성 확보 필요 최상위 수준 도구들 Formal verification tool, data path compiler, especial function generator, high-level synthesis tool Formal verification tool VHDL 기술과 netlist 를 분석, 두 설계가 완전히 일치함을 확인함, 또한 특정 기능을 정확히 수행함을 증명함, 테스트 패턴을 사용하지 않음 현재 부분적으로 사용되고 있음 Data path compiler: 특수 목적의 Data Path Unit을 bit 수나 특정 option 에 따라 생성, 매우 빠름, 특화 되어 있어서.