일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Module
- DFS
- 비트마스킹
- 가속컴퓨팅
- 알고리즘
- verilogHDL
- HDL
- 비트마스크
- 감시
- 스타트와링크
- boj
- verilog
- 최적화
- testbench
- 모듈
- 백준
- Rtl
- verilog HDL
- 14889
- dfs연습문제
- 모델링
- 코딩테스트
- RTLEngineer
- HW
- 15683
- 가속기시스템
- HWEngineer
- 비트마스크알고리즘
- Today
- Total
oohyoo 님의 블로그
[verilog HDL] (2) verilog HDL이란 무엇인가 본문
HDL(Hardware Description Language)는, 단순 논리 게이트나 FF(Flip-Flop)과 같은 기본적인 소자에서부터 제어회로, 통신용 모뎀, 마이크로 프로세서 등에 이르기까지 디지털 시스템의 설계 및 검증에 사용되도록 개발된 하드웨어 기술 언어이다.
HDL은 일반적인 컴퓨터 언어(C언어, JAVA)보다는 좀 더 낮은 수준의 언어로, 소프트웨어 프로그래밍 언어와 다르게 하드웨어 설계에 적합한 언어 요소들을 가지며, 디지털 하드웨어를 여러 계층 레벨에서 표현하고 검증할 수 있다.
참고로 VHDL과 Verilog HDL은 다른 언어이므로 유의하도록 한다.
Verilog HDL의 가장 큰 장점은 복잡한 회로도를 코드를 이용하여 기능, 동작, 구조를 직관적으로 표현할 수 있다는 것이다. 따라서 설계 효율성이 높으며 국제전기전자공학협회(IEEE)에서 인정받아 표준화가 진행되었다.
위의 복잡한 회로도를 코드를 이용하여 표현하면 더욱 단순하고 논리를 명확하게 표현할 수 있다. 따라서 설계 시간을 단축할 수 있다.
디지털 회로, 디지털 시스템을 설계하는 과정을 단순하게 살펴보면 다음과 같다.
1. 설계 사양 파악 (Design Specifications)
기본적으로 어떤 제품을 만들 것인지 정해야 한다. clock speed가 빠른 제품이 필요한지, 데이터 보존을 효율적으로 하는 제품이 필요한지 파악하는 작업이다. 예를 들어 제품이 100MHz의 Clock period를 필요로 할 수 있다.
2. 행위 수준 모델링 (Behavorical Modeling)
우선 C언어 등의 high level language를 이용하여 모델링을 진행한다. 이 과정에서 설계 논리가 정립된다. 높은 수준의 언어로 모델링이 가능한 것은 HDL로도 구현 가능하다고 가정한다. HDL을 잘 아는 개발자가 C언어 코드를 작성한다면, HDL로 변환이 용이하도록 잘 작성할 수 있을 것이다.
3. RTL 수준의 HDL 모델링 (RTL level HDL Modeling)
RTL이란 Register Transfer Level로, 전 단계에서 진행한 높은 수준의 언어로 구현한 모델을 레지스터 수준으로 변환하는 작업이다. 합성 가능한 RTL을 설계해야 하는데, 이 때 하위 모듈 또는 Gate Primitive Instance를 이용하여 구조적 모델링을 진행한다.
assign 문을 이용한 데이터 흐름 (data flow) 모델링과 always 구문을 이용한 행위수준 모델링이 있다.
이 때 합성이 지원되지 않는 구문(ex. initial구문)이나 파일 입출력 구문은 사용 금지한다.
4. 기능 검증 (Functional Simulation)
RTL 모델이 설계 사양을 만족하는지 검증을 진행한다. 전 단계에서 생성된 모델의 delay 수준은 적절한지, 기능은 적절하게 작동하는지 확인하는 작업이다.
회로의 기능을 정확하게 검증할 수 있는 testbench를 생성하고, 이를 시뮬레이션하는 작업이 이루어진다.
5. 논리 합성 (Logic Synthesis)
RTL 수준의 코드를 게이트 수준의 논리회로로 변경하는 과정이다. 합성 과정에서는 Design Constraint와 Target Library가 사용된다.
- Design Constraint
합성되는 회로의 목표동작 주파수, 면적, clock신호 사양, 입/출력 신호 사양, 환경 변수 및 설계 규칙 등 논리합성에
사용될 조건들
- Target Library
합성에 사용되는 라이브러리로, 특정회사의 FPGA 디바이스 또는 특정 회사의 셀 라이브러리
(ex. Samsung의 45nm 공정 CMOS 소자)
이 단계에서는 HDL 코드를 읽어 문법적인 오류를 개선하고, 구문을 해석하여 논리게이트로 변환한다. 이때 규모가 작은 디바이스를 위해 최적화 알고리즘을 적용하여 회로를 간소화 시키는 작업이 필요하다.
우선 HDL 코드를 보고나면 Generic circuit을 만드는데, 이 Generic circuit을 보고 Target Library를 적용시키는 것이 논리 합성 단계의 마지막 작업이다.
LT Spice를 통해 회로를 시뮬레이션할 때, 소자를 선택하는 과정에서 'Universal'이 붙은 소자를 선택하거나 본 경험이 있다. 또는 실제 회사의 소자 library가 포함 되어있기도 하고, 직접 추가할 수도 있었다.
여기서 Universal 소자는 Generic circuit에 쓰이고, 특정 회사의 라이브러리 소자는 target library에 해당한다고 이해할 수 있다.
6. Gate 수준의 검증 (Gate Level Verification)
완성된 Gate 수준의 circuit을 목표한 사양대로 정상 작동하는지 검증한다.
이후 FPGA에 직접 적용하기도 하고, 후반부 설계(Back-end Design)을 통해 AP나 Modem같이 전용 IC를 만들기도 한다.
'verilog HDL' 카테고리의 다른 글
[verilog HDL] 반도체 설계 엔지니어의 첫걸음! verilog HDL 연습하기 (14) | 2025.08.14 |
---|---|
[verilog HDL] (4)테스트 벤치(Test Bench) 모듈 (3) | 2024.09.13 |
[verilog HDL] (3)Verilog 개요 - 모듈과 모델링 (3) | 2024.09.12 |
[verilog HDL] (1)가속기 시스템이란? (0) | 2024.08.20 |