본문으로 바로가기

[RISC-V] C Emulator 수행 및 Waveform 생성

category SoC/RISC-V 2018.09.07 15:32


1. 본 글은 개인적으로 RISC-V 프로세서를 스터디 하면서 습득한 내용을 정리한 것입니다.  

2. 정확히 이해를 하고 기술하는 글이 아니기 때문에 잘못된 내용이 전달 될 수도 있습니다. 

3. 수정 사항 및 질문은 언제든지 환영입니다.



RISC-V는 CHISEL 언어로 설계가 되어 있으며, CHISEL 로부터 RTL 및 C emulator를 추출합니다.(이전 글 참조: RISC-V 환경) C emulator 에서는 waveform을 얻을 수 있는데, Rocket Chip에 대한 내부 구조와 동작을 RTL 시뮬레이션 없이 signal 레벨에서 파악 할 수 있지 않을까 기대를 하였습니다. 따라서 본 글에서는 C emulator를 이용하여 waveform을 얻는 과정을 공유하고자 합니다. 


1. GTKWave 설치 

GTKWave 는 무료 wave viewer 로 GTKWave 홈페이지에서 다운로드를 할 수 있으며, Ubuntu 에서는 다음과 같이 쉽게 설치 할 수 있습니다.


myskan@ubuntu:$ sudo apt-get install gtkwave




2. Chisel3 설치   

CHISEL (Constructing Hardware in a Scala Embedded Language) 은 UC Berkeley 에서 개발된 새로운 하드웨어를 구성하는 언어로 하드웨어 디자인과 회로 생성을 지원한다고 합니다. 현재 Rocket Chip은 Chisel3로 기술이 되어 있는데 하드웨어를 구성하는 언어로 HDL (Hardware Description Language)를 사용하는 저에게는 꽤나 흥미로운 부분입니다. (이전에도 잠시 언급을 하였지만 Chisel에서 변환되는 RTL의 품질이 가장 궁금합니다.) Chisel3 의 설치 방법은 chisel3 "Installation" 에 자세히 설명이 되어 있으니 참고 하시기 바랍니다. 




3. C Emulator 생성  

Rocket Chip에서는 parameter 설정을 통하여 하드웨어 구성을 설정할 수 있습는데, 우선 default 설정으로 진행 하겠습니다. (이후에 살펴 보게 되지 않을까요?) 이미 emulator 디렉토리에 makefile 이 존재하며 아래와 같이 간단히 make 실행 만으로 C Emulator를 생성할 수 있습니다. 


myskan@ubuntu:$ cd emulator
myskan@ubuntu:$ make


저는 C Emulator로 waveform을 얻는 것이 목적이기 때문에 아래와 같이 debug 옵션을 주어서 debug용 C Emulator도 생성하였습니다. 


myskan@ubuntu:$ cd emulator myskan@ubuntu:$ make debug


생성환 C Emulator의 이름을 확인 해보면 다음과 같습니다. 

  • emulator-freechips.rocketchip.system-DefaultConfig
  • emulator-freechips.rocketchip.system-DefaultConfig-debug



4. C Emulator 수행  

Rocket Chip에서는 다양한 assembly 테스트들이 포함되어 있는데, 모든 테스트들을 한번에 수행되도록 안내되어 있습니다. 우선은 간단히 waveform을 확인하기 위하여 아래와 같이 rv64ui-p-add 테스트 하나만 수행하도록 하겠습니다. 


myskan@ubuntu:$ make output/rv64ui-p-add.vcd




5. Waveform 확인   

output 디렉토리에 가보면 수행된 명령어가 dum된 rv64ui-p-add.out 과 rv64ui-p-add.vcd 를 확인 할 수 있습니다. 아래와 같이 gtkwave를 이용하여 waveform을 확인해 보겠습니다.  


myskan@ubuntu:$ gtkwave rv64ui-p-add.vcd &



이제 코드와 함께 내부 동작을 살펴 볼 수 있게 되었습니다. 다음으로는 코드를 이해 할 수 있도록 Chisel3로 어떻게 하드웨어를 기술하는지 먼저 살펴 볼까 합니다. 



'SoC > RISC-V' 카테고리의 다른 글

[RISC-V] Chisel Tutorial  (0) 2018.09.16
[RISC-V] C Emulator 수행 및 Waveform 생성  (0) 2018.09.07
[RISC-V] spike 다루기  (0) 2018.08.28
[RISC-V] RISC-V 설치 및 Hello RISC-V 실행  (0) 2018.08.19

댓글을 달아 주세요

티스토리 툴바