HDL : Hardware Description Language
디지털 논리 회로의 문자 표현
- 그림(schematic)보다 만들거나 고치기 쉬움
- 그러나 HDL 설계시에는 항상 그림(schematic)을 생각해야 함
HDL은 "programming languages"가 아님
- 매우 비슷하게 보이지만 프로그램처럼 작성하면 안된다. (verilog와 C가 상당히 유사함)
- 뛰어넘어야 할 가장 중요하고 어려운 개념
- C : 순차적(sequential) 실행
- HDL : 병렬적(parallel) 실행
- 컴파일 방법은 비슷함
- C : Source > 컴파일 > 실행파일
- HDL : Source > 컴파일 > 시뮬레이션 > 합성(synthesis) > Hardware
SW와 HW의 차이
위 그림과 같이 clk이 동시에 들어간다. 즉 4개의 플립플롭이 병렬적으로 동작한다.
System IC 설계과정
설계사항 결정
- 회로의 기능, 동작성능, 설계기간, 단가 등이 포함된 설계 목표
- 설계될 시스템의 분할, 적용될 알고리즘과 아키텍처, 데이터 입/출력 및 제어 신호들의 타이밍, 입력/출력 신호의 이름
과 비트 폭, 리셋 및 enble신호, 클럭 신호에 대한 정의 등을 포함.
행위수준(Behavioral level)모델링 및 검증
- 상세 설계 이전에 설계사양을 확인할 수 있도록 시스템의 전체 기능을 모델링하고 검증하는 과정
- 설계사양에서 정의된 기능의 만족 여부, 입/출력 인터페이스의 호환성, 국제 표준규격의 만족 여부
- C, SystemVerilog등을 사용.
HDL코딩 (RTL 설계)
- RTL(Register Transfer Level)모델링을 통한 상세 설계
- 논리합성(logic synthesis)툴에서 합성 가능한 코드로 개발
- 합성 가능한 RTL설계
- 모듈을 이용한 구조적 모델링
- 합성이 지원되지 않는 구문이나 파일 입/출력 구문은 사용금지
- 최적의 하드웨어가 합성되도록 모델링
- 검증을 위한 테스트 벤치(test bench)작성
HDL 시뮬레이션(기능 검증)
- RTL모델이 설계사양을 만족하는지 확인하기 위한 검증
- 회로 내부의 지연(delay)고려되지 않은 기능 수준의 검증
- 회로의 기능을 정확하게 검증할 수 있는 테스트 벤치의 작성이 중요
논리 합성 (synthesis)
- RTL수준의 HDL코드를 게이트(gate)수준의 논리회로로 변환하는 과정
- 합성 조건들이 명시된 제한조건(constraint)과 target library가 사용됨
- Constraint
- 합성되는 회로의 목표 동작 주파수, 면적, 클록신호 사양, 입/출력 신호 사양, 환경 변수 및 설계 규칙 등 논리합성에
사용될 조건
- Target library
- 합성에 사용되는 라이브러리
- 삼성/하이닉스 등 특정 회사의 FPGA디바이스 또는 셀 라이브러리
- HDL코드를 읽어 문법적인 오류를 분석하고, 구문을 해석하여 논리 게이트로 변환하는 단계
- 최적화 알고리즘을 적용하여 회로를 간소화시키는 최적화 단계
- 셀 라이브러리로 매핑하는 단계
게이트 수준 검증
- 합성이 완료되면 게이트 수준의 netlist가 얻어지며, 합성에 사용된 라이브러리의 특성이 합성된 회로에 반영됨.
- RTL수준 검증에서 사용되었던 테스트 벤치를 동일하게 적용하여 논리 및 타이핑 검증
레이아웃 설계
- 논리합성을 통해 생성된 게이트 수준 netlist를 마스크(mask)제작에 사용될 레이아웃 도면으로 변환하는 과정
- 자동 배치/배선(Placement & Routing; P&R) 툴
RTL수준과 Gate수준의 Verilog
Gate 수준 Verilog와 Layout
'UVM & RTL > Verilog HDL' 카테고리의 다른 글
[Verilog HDL] CH4 모듈과 포트 (0) | 2022.06.14 |
---|---|
[Verilog HDL] CH3 기본개념 (0) | 2022.06.14 |
[33] Verilog HDL 순차회로 설계과제 ( FSM ) (0) | 2022.03.07 |
[32] Verilog HDL 순차회로( FSM ) (0) | 2022.03.06 |
[31] Verilog HDL 순차회로 설계과제 (카운터) (0) | 2022.03.06 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!