맥에서 Verilog 돌리기

l_nerd6·2022년 11월 26일
1

학교에서 논리설계 실험에 쓴다고 modelsim이란 프로그램을 깔아오라고 했다. Verilog를 돌리기 위한 프로그램이던데, 맥 버전이 따로 없어서 맥북 유저인 필자는 돌릴수가 없었다.

다행히 내가 사용하고 있는 맥은 2020년형 인텔맥이었기 때문에 아직은 듀얼부팅으로 윈도우를 깔 수 있었다. 몇달만에 듀얼부팅으로 윈도우를 켜서 모델심을 깔아놓고 보니, 인터페이스도 너무 구리고 자동완성이나 자동 들여쓰기같은 기능이 하나도 없었다. 심지어 내 맥북이 윈도우를 온 몸으로 거부하는지, 윈도우만 켜면 팬이 미친듯이 돌아가면서 키보드가 엄청 뜨거워지는걸 느낄 수 있었다.

ModelSim 구동 사진. 90년대에서 날아온 것 같은 인터페이스와 가독성을 자랑한다.

그동안은 일주일에 한번 실험할때만 모델심을 쓰면 됐기 때문에 울며 겨자먹기로 듀얼부팅으로 돌리고 있었지만, 이제 프로젝트를 시작하게 돼서 지금처럼 돌리기는 너무 불편하다는 생각이 들었다. 찾아보니 Icarus Verilog라는 맥에서도 돌아가는 구현 버전이 있었다! 이걸 깔아서 개발환경을 구축해보기로 했다.

개발환경 준비

깔아야 할 패키지는 크게 3개다. VS Code와 gtkwave, 그리고 icarus verilog가 필요하다. VS Code는 설치 방법을 다룬 포스팅이 이미 많이 있으므로 생략하고, gtkwaveicarus verilog만 깔아보겠다.
사실 homebrew만 설치되어 있다면 설치방법은 아주 간단하다.

brew install icarus-verilog
brew install gtkwave

설치가 완료되면 터미널에 iveriloggtkwave를 각각 쳐보자.

iverilog는 설치가 완료된걸 확인할 수 있다.

그런데 gtkwave는 오류가 난다. 필자의 경우 처음에는 저 오류도 뜨지 않고, 개발자를 알 수 없는 앱이라 열 수 없다는 dialog만 나왔다. 당황하지 말고 시스템 환경설정 > 보안 및 개인 정보 보호로 들어가서 이 프로그램을 신뢰한다고 체크해주면 된다.

구글링을 해보니 macOS의 보안 프로그램으로 인한 문제라면서

brew install gtkwave --no-quarantine

으로 설치하면 된다고 나왔다. 하지만 내 경우에는 먹히지 않았다. 이런 경우 조금 번거롭지만 gtkwave 대신 매번 open -a gtkwave를 써주면 된다고 한다.

이제 VS Code에 verilog 확장을 설치해주자. 나와있는게 워낙 많으니 아무거나 설치해주면 될 것 같다. 다운로드 수가 제일 많은걸로 깔아줬다.

여기까지 하면 개발환경 세팅은 끝이다!

Verilog 시뮬레이션하기

이제 베릴로그 파일이 있을 때 시뮬레이션으로 testbench의 파형을 관찰할 수 있도록 하는 방법을 설명하겠다.

파일 수정해주기

돌리고자 하는 파일의 메인 모듈 마지막에

  initial begin
      $dumpfile("testbench.vcd") ;
      $dumpvars(0, testbench);
  end

를 추가해준다. 이때 testbench는 모듈의 이름이다. 자세히는 모르지만 이게 있어야 VCD(Value Change Dump) 파일이 생성된다고 한다.

실행

iverilog를 사용해서 컴파일을 하고 결과를 실행시켜야 한다. 실행시키고 싶은 파일이 testbench.v라면, 터미널에서 다음과 같이 쳐주면 된다.

iverilog -o testbench testbench.v

그런데 많은 경우 소스코드가 하나의 파일로 되어있지 않고 여러 파일에 걸쳐 있는 모듈들을 불러와 사용해야 할 상황이 생길 것이다. 이런 경우에는 (예를 들어) modules라는 폴더에 라이브러리 파일들을 전부 모아놓고

iverilog -y ./modules -o testbench testbench.v

와 같이 쳐주면 된다. iverilog의 다른 옵션들은 이 사이트를 참고하자.

VCD 파일 만들기

여기까지 되면

vvp testbench -vcd

를 실행한다. 그러면 testbench.vcd라는 이름의 파일이 생성되어 있을 것이다. 이 파일이 앞서 말한 VCD 파일이다. 이것까지 하면 시뮬레이션 결과가 다 나온 것이다. 이걸 GUI로 확인해주기만 하면 된다.

gtkwave로 파형 확인하기

터미널에서

open -a gtkwave testbench.vcd

를 실행하면 GUI의 gtkwave 창이 뜰 것이다. 이제 파형을 확인하고 분석하면 된다.

GTKWave를 실행한 화면. 각 변수의 시간에 따른 파형을 확인할 수 있다.

이제 맥에서도 윈도우 듀얼부팅 없이 Verilog를 돌릴 수 있다! 코드가 복잡해지면 Icarus Verilog는 성능이 잘 안나온다는 말도 있지만 일단 내가 사용하는 수준에서는 괜찮은 것 같다. VS Code를 좀 더 잘 다룬다면 tasks.json 같은 파일을 건드려서 위의 과정들을 전부 자동화해서 단축키로 만드는 것도 가능할 것이다.

2개의 댓글

comment-user-thumbnail
2023년 8월 24일

모델심과 문법체계는 동일한가요?

답글 달기
comment-user-thumbnail
2023년 10월 16일

안녕하세요! 저도 맥북을 사용하고있는데, gtkwave를 설치하고나서 실행하려니까 update required fof "gtkwave-bin"이라는 문구가 뜨고, 오케이를 누르니까 'gtkwave-bin 응용프로그램이 예기치 않게 종료되었습니다'라는 문구가 뜨면서 열리지가 않네요.. 혹시 뭐때문에 그러는건지 아신다면 알려주실수 있으실까요??ㅠㅠ

답글 달기