본문 바로가기
Hardware/Basic

Verilog Simulator 종류 - Open Source

by 리미와감자 2024. 3. 21.

Verilog Simulator 종류 - Open Source

 

 
 

Icarus Verilog(iverilog) – Stephen Williams

 

 
  • 사용하기 쉬움
  • Verilog 지원, SystemVerilog 지원하지 않음
  • Verilog만 컴파일 가능
  • compile : iverilog
  • simulation : vvp
  • waveform : waveform을 보려면 GTKwave를 사용.

 
일반적으로 많이 사용하는 무료 Verilog Simulator이다. Stephen Williams이란 사람이 개발하였다고 한다. Verilog만 지원 가능하고 다른 추가적인 기능들이 많이 부족하지만 입문자들이 간단하게 Simulation하기에 적합한 Simulator인 것 같다.
 
위키피디아에는 SystemVerilog도 어느 정도 지원한다고 나오지만, 구글링해서 Reddit이나 다른 커뮤니티 사이트에서 확인해본 결과 아직 모든 기능을 Cover하지는 못하는 것 같다.
 
 

 

VeripoolVerilator
 
 

 
 
https://www.veripool.org/verilator/

Veripool

What Verilator Does Verilator is invoked with parameters similar to GCC or Synopsys's VCS. It "Verilates" the specified Verilog or SystemVerilog code by reading it, performing lint checks, and optionally inserting assertion checks and coverage-analysis poi

www.veripool.org

 

  • 매우 빠른 속도
  • Verilog, SystemVerilog 지원
  • C++, SystemC에서 컴파일 가능
  • Testbench가 시뮬레이션하는 데 사용되지 않는다.
  • compile : verilator
  • simulation : verilator(C++이나 SystemC로 작성한 Testbench가 시뮬레이터가 된다.)
  • waveform : waveform을 보려면 GTKwave를 사용.

 
속도가 매우 빠르고, SystemVerilog도 지원해준다. 또한 C++이랑 SystemC에서 Testbench를 생성할 수 있다. 기능이 많은 만큼 사용하기에는 어려워보인다.
 

 
 
Verilator는 Verilog Code를 C++이나 SystemC로 먼저 변환하여 전체 코드가 C 기반의 코드로 만든다. 그 후에 Compile과 Build 과정을 차례로 시작한다. 즉, 시뮬레이터가 C++이나 SystemC로 작성한 Testbench 그 자체가 된다. 이점 덕분에 속도가 빠를 것이라 생각한다.
 
 

Verilator does not directly translate Verilog HDL to C++ or SystemC. Rather, Verilator compiles your code into a much faster optimized and optionally thread-partitioned model, which is in turn wrapped inside a C++/SystemC module. The results are a compiled Verilog model that executes even on a single thread over 10x faster than standalone SystemC, and on a single thread is about 100 times faster than interpreted Verilog simulators such as Icarus Verilog. Another 2-10x speedup might be gained from multithreading (yielding 200-1000x total over interpreted simulators).

 

Verilator는 Verilog HDL을 C++ 또는 SystemC로 단순 변환하지 않고, 오히려 코드를 훨씬 더 빠르게 최적화하고 선택적으로 쓰레드 분할 모델로 컴파일 하고, 이를 다시 C++/SystemC 모듈 내에 래핑한다. 그 결과, 단일 쓰레드에서도 독립형 SystemC보다 10배 이상 빠르게 실행되고, Icarus Verilog와 같은 해석형 Verilog 시뮬레이터보다 약 100배 빠른 컴파일형 Verilog 모델이다. 멀티쓰레딩을 하면 추가로 2~10배의 속도 향상을 얻을 수 있다(해석형 시뮬레이터에 비해 총 200~1000배의 속도 향상).
 
 
짧게 말하면, Verilog 코드 변환 시에 C++ 쓰레드 모델로 만들고, Compile Simulator이기 때문에 매우 빠르다! 
 


무료 Verilog Simulator를 사용하려는데, 이제 막 Verilog에 입문한 사람은 Icarus Verilog를 사용하고, C++ 또는 SystemC에 익숙하고 검증도 중점적으로 해보고 싶은 사람들은 Verilator에 도전하는 것도 나쁘지 않을 듯하다.
 
 
 

Reference

https://itsembedded.com/dhd/verilator_1/

Verilator Pt.1: Introduction

An introductory, beginner friendly guide to Verilator: what it is, why should might choose it over other simulators, and a first step tutorial for writing a basic C++ testbench for a SystemVerilog DUT, simulating, and generating / viewing waveforms using G

itsembedded.com

 

https://en.wikipedia.org/wiki/List_of_HDL_simulators

List of HDL simulators - Wikipedia

From Wikipedia, the free encyclopedia HDL simulators are software packages that simulate expressions written in one of the hardware description languages, such as VHDL, Verilog, SystemVerilog. This page is intended to list current and historical HDL simula

en.wikipedia.org

 

'Hardware > Basic' 카테고리의 다른 글

Verilog Simulator 종류 - Commercial  (0) 2024.03.22

댓글