회로설계 엔지니어라면 System Verilog가 익숙할 것이라 생각된다. System Verilog는 하드웨어 검증용 프로그래밍 언어이다. Verilog, VHDL과 같은 hardware description language (HDL)로 설계된 하드웨어 설계물을 검증하기 위한 객체 지향 기반 프로그래밍 언어 (Object-Oriented Programming) 이다. 본 포스팅에서는 System Verilog의 기초에 대해 알아보도록 하자.
0. 개요
Verilog, VHDL과 같은 hardware description language를 통해 설계된 하드웨어 모델을 HDL을 사용하여 검증하는 데에는 한계가 있다. 설계에서 검증의 중요성이 커짐에 따라 이를 위해 기존 verilog가 확장된 System Verilog가 발표되었다.
System Verilog는 기존 Verilog에서 추가된 문법 이나 기능이 많다. 따라서, HDL과 달리 합성이 불가능 한 문법들이 존재하기 때문에 testbench를 설계하는데에 주로 사용된다.
# 객체 지향 언어
System Verilog는 객체 지향 언어이다. 하드웨어 설계자에게는 낯선 개념일 수 있는 "객체 지향" 이란, 조금은 추상적이라고 생각될 수 있지만 말 그대로 "객체"를 만들고 그를 사용하여 객체 간 서로 상호작용하며 동작하는 방식이다. 여기서 말하는 "객체"라는 것은 특정한 데이터와 기능을 하는 함수 등을 포함할 수 있다.
1. 테스트벤치 (Testbench)
실제로 하드웨어 칩을 설계할 때, 설계 자체에 소요되는 시간보다 검증에 훨씬 많은 시간이 소요된다. 실리콘 칩으로 양산 후에 불량이 발생하면 비용이 더 많이 들기 때문에 칩으로 양산하여 사용하기 전에 충분한 검증이 선행되어야 한다.
테스트벤치 (Testbench)란 Verilog 언어로 구성된 하나의 모델로, Verilog model을 검증하기 위한 것이다. 주로, 순차적으로 input data를 넣고 설계물을 거쳐 나온 output data와 기댓값을 비교하여 설계물이 설계자의 의도대로 동작하는지 검증하게 된다.
# DUT 란?
DUT 란 Design Under Test의 약자로 design 검증 환경에서 검증의 대상이 되는 설계물을 의미한다. 검증을 위한 테스트벤치를 구성할 때, 테스트벤치 모듈 내에 DUT를 module instantiation 한다.
'공부 기록 > 회로설계' 카테고리의 다른 글
반도체 회로설계 헷갈리지만 중요한 개념, jitter, skew, slack, slew 란? (0) | 2024.07.31 |
---|---|
Verilog에서 C code 사용이 가능한 Direct Programming Interface (DPI) 개념 및 사용법 (1) | 2023.06.01 |
[Verilog] reg vs wire - reg와 wire의 차이점 (0) | 2022.05.05 |
[Verilog] Blocking Assignment vs Non-Blocking Assignment - 베릴로그 절차형 할당문의 종류 (0) | 2022.04.21 |
[Verilog] Continuous Assignment vs Procedural Assignment - 베릴로그 연속 할당 vs 절차형 할당 (0) | 2022.04.21 |