[Verilator] Verilator 설치 및 환경설정

YumeIroVillain·2021년 12월 20일
0

6.5학기

목록 보기
6/20

※본 포스트는 학부생이 공부용으로 작성한 포스트이며, 확실한 사실을 보장하지는 않습니다.

여러 일이 있었는데,
컴퓨터에 대해 내가 이해한 모든 것을 Verilog 로 구현해보고자 하였다. 구현하지 못한다면 제대로 아는 것이 아니라고 생각하기 때문이다. 또한 잘 구현된다면 "모래에서 컴퓨터를 만들자" 라는 토픽으로 졸업작품으로 제출가능할지도 모르는 노릇이었다.

그래서 기존에 쓰던 modelsim 을 쓰고자 했는데, modelsim 은 원래 안정성 문제가 많았던데다 제법 느려 답답하고, 윈도우에서만 지원하고, 갑갑한데 내부가 어떻게 되어있는지 전혀 모르는 블랙박스라서 에러메시지와 함께 문제가 발생하면 말그대로 손빨고 있어야 하는 문제점이 있었다.

이번에 인텔에서 새로 나온 questa 라는 시뮬레이터를 써보고자 했으나, 새로 생긴 라이센스 파일 등록과정에서 자꾸 실패하게 되어 배보다 배꼽에 드는 품이 더 커지는 모양이라 포기하였다.

이 때, 트위터에서 한 엔지니어가 Verilator 가 좋다고 추천을 해 주었고, 대충 보아하니 테스트벤치를 C++로 짤 수 있으면서도 상당히 빠르고 터미널 기반으로 돌아가면서 오픈소스라 내부구조도 공부만 한다면 뜯어볼 수 있는, 그런 양호한 모양이었다.

기초적인 세팅을 끝내었으며, 두 번의 품 방지 및 다른 이들에게 도움이 되고자 본 포스팅을 남긴다.

블로그를 매우매우매우매우 크게 참조하였으며(거의 따라친 수준이다) 나의 이해를 중간중간 보탠 포스트가 될 것이다.


verilator 를 설치한다.
리눅스는 일상생활에서 쓰기 힘들고, 윈도우의 WSL2는 완벽한 리눅스를 지원하므로 WSL2를 사용하는 쪽으로 간다.
0. Windows Subsystem For Linux 해제풀기
1. 윈도우 스토어에서 WSL2 설치
2.

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install verilator
sudo apt-get install git make autoconf g++ flex bison
sudo apt-get install libfl2  
sudo apt-get install libfl-dev

git clone https://github.com/verilator/verilator
cd verilator

unset VERILATOR_ROOT  # for bash user
cd verilator
git pull        # git repository를 최신버전으로
git tag         # git tag 명령으로 repository에 있는 버전을 확인가능(Ctrl D 로 내릴 것)
#오늘 기준(2021-12-20) 최신버전은 v4.216이므로
# git checkout v4.216 
git checkout stable 

autoconf        # ./configure script 가 생성
./configure     # 방금 생성한 ./configrue script 실행
make            # make 진행
sudo make install  # 설치 진행
# Now see "man verilator" or online verilator.pdf's for the example tutorials
# make 하는데 i7-9750H 기준 2시간 반정도 걸리므로 시간 넉넉히 잡을 것
  1. Verilator 설치 확인

  2. cd verilator

  3. cd examples/make_hello_c

  4. vi top.v

    매우 간단한 모듈.
    사실 하는건 아무것도 없고, 그저 display 와 finish 밖에 없다.
    finish 가 없으면 이따 볼 C++ 테스트벤치에서 무한으로 도니 참고하면 된다.

  5. vi sim_main.cpp

    이것은 testbench.v 역할을 하는 cpp 파일이다.
    이 점이 매우 편리한데, 기존에는 display나 readmemh 같은 매우 이상한 verilog 자체의 함수를 써야 했다면
    모두에게 익숙한 C++ 사용을 토대로 유기적으로 테스트과정을 추적 및 정정할 수 있기 때문이다.
    변수를 튕겨주는 것도, CPU코어 구현이라면 기계어 명령 주입도 훨씬 간편할 것이다.

  6. make

    obj_dir 파일생성과 함께 결과창이 뜨면서 종료됨을 알 수 있다.
    매우 빠른 것을 확인할 수 있고,
    코드는 다음 포스트에서 분석하도록 한다.

profile
HW SW 둘다 공부하는 혼종의 넋두리 블로그 / SKKU SSE 17 / SWM 11th

0개의 댓글