Verilog 시뮬레이션: 내 PC에서 돌리기

verilog를 쓰려면 무료로 보급되는 툴이 없어서 연습하기도 쉽지가 않은데, 이건 실습을 하지 않으면 기술을 터득하기가 쉽지 않아서 부득이하게 회사 네트워크에 붙어야 되는데, 지금으로 치면 1-2년만 지나도 옛날 머신인데다 wave를 보려면 또한 네트워크로 X에 붙어야 되는 거라 이게 어지간한 인내심이 없으면 할 수가 없다.

내 PC에서 돌리려면 뭐 이를테면 docker위에 올려두고 작업을 할 수가 있긴 한데, 옛날부터 일하던 사람들이 갑자기 docker로 바꾸고 exceed라든가 X server 같은 걸 PC위에 깔아두고 자신이 라이센스 서버에 접속하게끔 작업하진 않았을 것으로 보여진다. 대개 그 느려터진 vnc로 가서 느린 X에 붙어서 작업한다.

그래서 할 수 있는 방법이 뭐냐 하면 무료 verilog compiler/synthesis tool을 쓰는 건데, 그게 icarus-verilog라고 되어있는 게 있다. 테스트해보면 역시 곧바로 ‘이게 뭐지?’ 하게 된다. 무슨 의미 있는 로직을 합성해주는 것도 아니고 verilog 문법 체크나 하다 마는 건가 하는 수준이다. netlist 같은 걸 만들어준다는데, spice라든가 PCB 돌리려고 HDL을 쓰는 것은 아니니까 (그러는 사람이 있을 수도 있다만) 어쨌든 그렇다.

그 다음 방법은 Altera/Xilinx의 FPGA 툴을 쓰는 건데, 원래 윈도우즈 툴로 유명했던 altera는 인텔 소속이 되고 나서 뭘하고 있는지 알 수가 없고, Xilinx는 나름 툴이 좋고 무료 라이센스까지 뿌려주고 있어서 딱 이 한가지 방법밖엔 없구나 한다. 난 윈도우즈를 사용하지 않는 관계로 MacOS에서 하려면 docker에 linux를 올려야 한다. 그래도 ISE라고 하는 이 환경은 나름 통합환경인데다가 Xilinx의 FPGA는 나날이 발전하고 있어서 덩치가 큰 프로젝트를 테스트하는데도 별 문제가 없다. 물론 무료로 제공되는 라이센스는 선택할 수 있는 device에 한계가 있어서 대용량 작업을 할 수는 없다. (30일 정도 평가판 라이센스를 쓰면 되긴 한다만)

Vivado라는 HLS tool도 나름 괜찮은 것 같은데, 이것까지 사용해야 할 이유는 없을 것 같고 오직 verilog compiler와 simulator/synthesis가 되는 정도면 된다. 정말 중요한 작업은 어차피 VCS로 하게 되고 정 안되면 VCS를 docker에 올려두고 돌리면 되니까.

1.5년에서 2년 사이면 컴퓨터 성능이 두 배가 된다는 법칙(?)이 있던데, 회사에서 웍스테이션을 잔뜩 사들일 시절에나 좀 빠르구나 했던 머신들이 지금은 랩탑에 붙는 CPU 정도 성능 밖에 안나온다 (물론 single core 이야기다). 반대로 시장은 컴퓨터 성능에 대한 민감도가 매우 높아서 개인이 들여놓는 장비들은 2-3년 전 머신들과 비교하면 싱글 코어의 스피드도 1.5배 정도 나오는데다가 core수가 12/16개, 또 머신 성능이 돈과 직결되는 사람들(?)은 24개 32개 정도까지 가고 있으니까, 지금의 이런 PC 성능이라고 보면 앞으로 2-3년 정도만 지나면 집에서 지금의 고성능 CPU/APU를 설계하고 검증하는 일까지 할 수 있게 되는 셈이다. 물론 그럴 일 없겠지만.

결론: Xilinx ISE를 다운로드 받아서 Webpack license를 쓰면 그다지 크지 않은 verilog project들은 합성/시뮬레이션/검증까지 집에서 모두 할 수 있다.