본문 바로가기

HW

[Verilog] Verilator tutorial (2) - waveform 만들기

 

blog.naver.com/doksg/221979883906

 

[Verilog] Verilator (Open-Source SystemVerilog Compiler, 무료 시스템베릴로그 컴파일러)

​Verilator라는 컴파일러가 있습니다. ​가장 빠른 Verilog HDL simulator라고 하네요​앞서 소개해...

blog.naver.com

blog.naver.com/doksg/222038542081

 

[Verilog] Verilator tutorial (1) counter test해보기

Verilator 사용방법을 정리해서 업로드 하겠다고 해놓고 너무 늦었네요​마침 시간이 나서 정리합니다. 설...

blog.naver.com

 

지난 시간까지는 naver에 작성했는데 

 

이제부터는 tistory에 업로드 해보고자 합니다. 

 

 

지난시간에 만들어 놓은 1_counter 폴더를 2_waveform 이라는 이름으로 복사합니다.

 

 

waveform을 보기 위해서는

Makefile을 약간 수정하고 컴파일 한뒤에

sim_main.cpp도 수정해 줘야 하는데요 

 

순서 정리를 해보겠습니다. 

 

1. Makefile을 수정하고 compile 한다.

2. 출력으로 나온 Vcnt.h file을 보고 그에 따라 sim_main.cpp를 수정한다. 

 


 

Makefile은 아래와 같이 수정합니다.

 

위 코드를 

 

아래와 같이 수정합니다.

 

--trace를 추가하는 것이죠

 

 

 

 

그리고 나서 바로 make를 해줍니다.

 

 

이렇게 정상적으로 잘 나오고

 

이제는 뭐가 달라졌는지 봐야겠지요?

 

원래 Vcnt.h와 비교하면서 보겠습니다. 

 

왼쪽은 --trace를 넣고난 후 Vcnt.h

오른쪽은 --trace를 안넣은 1_coutner의 Vcnt.h

 

입니다.

 

틀린그림 찾기 할 준비 되셨나요!!

 

시작합니다!

(정답은 바로 밑에 둘게요...ㅎㅎ)

 

 

정답은 아래와 같습니다. 

 

 

다른 부분을 확대해서 보면

 

일단 Vcnt_VerilatedVcd 라는 class가 생겼습니다. 

 

다음!

 

 

 

두가지가 추가되었네요!

 

원래는 없었던거 같은데 ㅎㅎ

 

넘어가기전에 꼭 확인하고 가야하는것은

 

void trace(VerilatedVcdC* tfp, int levels, int options = 0);

 

위 코드에 적힌

 

trace 함수의 input 형태입니다.

 

이제 waveform을 따보겠습니다!

 

우선 코드가

 

이렇게 되어 있는데요

 

여기에 wavform을 보기 위한

코드를 추가해보겠습니다.

 

먼저

 

 

저기 적힌대로 

"Verilated_vcd_c.h"를 추가합니다.

 

이어서 waveform을 받기 위한 준비를 하는 코드를 넣습니다. 

 

 

테스트 코드부분은 좀 스타일을 바꿔서 작성해보겠습니다!

 

wave_fp->dump(시간)

 

위 처럼 작성해서 waveform을 추가하고 있는 것입니다. 

 

 

 

마지막으로 wave_fp를 close한 뒤에

delete해주는 코드를 추가해줍니다.

 

최종코드는 이렇게 생겼습니다. 

 

 

 

나와서 make를 해보니 새로운 파일이 생겼네요

 

 

gtkwave로 확인해보면

 

이렇게 잘 나왔음을 알 수 있습니다~!