1. Verilog HDL
ㅇ 역사
- 원래, 1983년 Gateway Design Automation社에서 개발된 하드웨어 기술 언어
- 후에, Cadence Design System社에 인수되어 업계 표준으로 자리잡음
- 이후, 1991년 내부 LRM(Language Reference Manual)을 공개함으로써,
- 이로부터, 1995년도에 IEEE에서 최초 표준화됨 (IEEE 1364 - 1995)
ㅇ 표준 : IEEE std. 1364, 1800 (1995,2001,2005,2009,2012)
- System Verilog (시스템 수준의 모델링,IEEE 1800)과 기존 Verilog (IEEE 1364-2001)이 통합,
- IEEE 1364-2005로 개정되는 등 확장이 지속적으로 이루어짐
ㅇ 용도
- 디지털 회로 시뮬레이션(Simulation), 회로 검증(Verification), 회로 합성(Synthesis) 등
. 회로 작성 : Verilog 코드 작성
. 시뮬레이션 : 컴퓨터 기반의 실험을 통해, 예측/분석하는 일련의 과정
. 검증 : 설계한 회로가 요구한 기능 및 동작 조건을 올바르게 만족하는지 확인하는 과정
.. (테스트벤치, 파형 비교, Assertion 등 활용)
. 합성 : 설계한 HDL 코드를 텍스트 기반의 회로 구조인 netlist 형태로 바꾸는 과정
2. Verilog 특징
ㅇ 문법이 C 언어와 유사 ☞ Verilog 문법 참조
ㅇ 기본 설계 단위가 모듈임 ☞ Verilog 모듈 참조
- 모듈 기반 설계 : 하드웨어 설계를 모듈 단위로 나누어 계층적 설계 가능
ㅇ 시간 제어 기능 가능
- # 지연과 @ 이벤트 제어를 사용하여, 하드웨어의 타이밍 특성을 표현 가능
ㅇ 특정 EDA (Electronic Design Automation), 공정 기술, 설계 방법 등에 비 종속됨
ㅇ 확장자 `*.v`이 붙은 하나의 파일 내에 하나의 시스템의 설계 결과물이 담겨짐
3. Verilog 모델링
※ 서로 완전히 별개로 작성되는 코드 관점이 아니라, 같은 Verilog 안에서 표현 방식이 다름
- 즉, 모델링 방식마다, Verilog 코드 작성 스타일과 사용 문법이 달라짐
. 하지만, 모두 같은 Verilog HDL 안의 표현 방식들 임
- 현실적으로, 한 프로젝트 안에서 여러 모델링 방식들을, 혼합 사용하게 됨
- 실무에서는, 대부분, 데이터 흐름 모델링과 행동적 모델링 중심으로 진행 됨
ㅇ 게이트 수준 모델링 (Gate-level Modeling)
= 게이트(AND, OR, NOT 등)를 직접 연결하여 표현
ㅇ 데이터 흐름 모델링 (Dataflow Modeling) : (주로, assign 문과 연산식을 이용)
- 신호의 흐름과 관계를 중시 함
. 연산자와 연산식으로 설계 표현
.. 기본적으로 assign문을 사용하여 신호 간의 관계를 정의하고, 간단한 연산을 표현
ㅇ 행동적/동작적 모델링 (Behavioral Modeling) : (주로, always 블록으로 동작 절차 표현)
- 동작을 추상적으로 정의하여, 설계자가 하드웨어 동작을 효율적으로 표현토록 함
. always 및 initial 블록을 활용한 설계 표현
. 조건문과 반복문 등
- (알고리즘/절차 중심 표현)
ㅇ 구조적 모델링 (Structural Modeling) : (하위 모듈들을 연결하여 시스템 구성)
- 하드웨어의 물리적인 구조를 정확하게 재현코자 함
. 모듈의 계층적 구성과 하위 모듈 연결
. 설계 재사용의 원리 활용 등
- (계층 구조 중심 표현)
4. [참고사항]
ㅇ Verilog 기초 문법 ☞ Verilog 문법 참조
ㅇ Verilog 문장,구문의 규칙 및 종류 ☞ Verilog 구문 참조
ㅇ Verilog에서 기본 설계 단위 ☞ Verilog 모듈 참조
ㅇ 시뮬레이션 : 설계된 회로에 테스트 조건의 입력을 가하고, 그 출력이 올바른지 확인하는 과정
- 기능적 시뮬레이션 : 타이밍에 대한 제한조건 없이 기능,동작 만을 검증
- 타이밍 시뮬레이션 : 합성,구현 과정에서, 배치,배선을 마친 후, 타이밍 조건을 고려하며 검증
ㅇ 테스트 벤치 (testbench) : 설계된 회로를 시뮬레이션하기 위한 모듈