1. 개요
이카루스(Icarus 또는 iverilog)는 하드웨어 및 디지털 회로 설계 분야에서 널리 쓰이는 오픈소스 Verilog 시뮬레이터인 Icarus Verilog(iverilog)를 이용한 시뮬레이션을 가리킨다. 명령어 이름은 'iverilog'이다.Verilator나 VCS처럼 대규모 SoC 전체 구조나 C++ 연동 시뮬레이션 환경 구축이 필요 없는, 단일 IP 레지스터 레벨이나 커스텀 모듈(예: UART, SPI, 간단한 FSM 등)의 빠른 기능 검증에 적합한데 이러한 가볍고 빠른 테스트 환경이 이카루스의 주요 프레임워크 철학중 하나이다.
1999년을 전후하는 시기에 배포판이 개발되었으며 주로 스티븐 윌리엄스(Stephen Williams)가 초기개발부터 줄곧 이를 담당하고 있다. [1]
2. 기능
Verilog 및 SystemVerilog RTL 코드가 의도한 대로 동작하는지 검증하기 위한 이벤트 기반(Event-driven) 시뮬레이터인데, 작성한 테스트벤치(Testbench)와 모듈 코드를 받아 시뮬레이션 실행 파일(보통 vvp 형식)로 컴파일한 뒤 실행하여 시뮬레이션을 테스트할수있다.2.1. 파형(Waveform) 출력
시뮬레이션 수행 시 $dumpfile 및 $dumpvars 시스템 태스크를 실행하여 .vcd (Value Change Dump) 파형 파일을 생성할수있다. 생성된 파형 파일은 GTKWave 같은 파형 분석 도구를 통해 각 신호 및 레지스터의 시간대별 변화를 직관적으로 확인할 수 있다.3. 기본 사용 절차 예시
컴파일 (iverilog) Bash기준iverilog -o my_sim_tb.vvp my_module.v my_module_tb.v
my_module.v : 로직(RTL)이 작성되어 있는 검증 대상 모듈(DUT, Device Under Test)my_module_tb.v : 테스트벤치(Testbench) 전용 Verilog 연동모듈코드.
my_sim_tb.vvp : 목적 파일시뮬레이션 실행 (vvp)
(Bash) vvp my_sim_tb.vvp
파형 확인 (gtkwave)
(Bash) >gtkwave dump.vcd
4. 관련문서
[1] 깃허브 오피셜 개발사이트 https://github.com/steveicarus/iverilog