Project

General

Profile

Установка Spike и QEMU » History » Revision 5

Revision 4 (Egor Zheliba, 02/18/2025 05:17 PM) → Revision 5/6 (Egor Zheliba, 02/18/2025 05:51 PM)

h1. Установка Spike и QEMU для RISC‑V 

 В этом примере для работы с тестовым будут использоваться два RISC‑V симулятора: Spike и QEMU. 
 Ниже описано, как установить оба инструмента в Ubuntu/Debian (включая WSL). 

 h3. Установка QEMU с поддержкой RISC‑V 

 1. Убедитесь, что ваша система обновлена: 
 <pre> 
 sudo apt update 
 </pre> 

 2. Установите пакет QEMU (обычно включает поддержку RISC‑V): 
 <pre> 
 sudo apt install qemu-system qemu-system-riscv64 
 </pre> 
 Проверьте, что бинарный файл доступен: 
 <pre> 
 which qemu-system-riscv64 
 </pre> 

 Если команда возвращает путь вида */usr/bin/qemu-system-riscv64* , значит QEMU для RISC‑V установлен успешно. 

 h3. Установка Spike (RISC‑V ISA Simulator) 

 Spike может отсутствовать в пакетных репозиториях, поэтому его обычно собирают из исходного кода: 

 1. Установите зависимости: 
 <pre> 
 sudo apt update 
 sudo apt install autoconf automake autotools-dev libtool pkg-config libglib2.0-dev device-tree-compiler 
 </pre> 

 2. Склонируйте репозиторий Spike: 
 <pre> 
 git clone https://github.com/riscv/riscv-isa-sim.git 
 </pre> 

 3. Перейдите в директорию проекта и создайте папку сборки: 
 <pre> 
 cd riscv-isa-sim 
 mkdir build && cd build 
 </pre> 

 4. Запустите конфигурацию с указанием префикса установки: 
 <pre> 
 ../configure --prefix=/usr/local 
 </pre> 
 При успехе не будет ошибок об отсутствии необходимых пакетов. 

 5. Скомпилируйте и установите Spike: 
 <pre> 
 make -j$(nproc) 
 sudo make install 
 </pre> 

 6. Проверьте, что Spike доступен: 
 <pre> 
 which spike 
 </pre> 
 Если в выводе указан путь вроде */usr/local/bin/spike* , значит сборка выполнена успешно. 

 h2. Получение и сравнение трасс от Spike и QEMU на тестовом наборе. 

 В корневой директории *fuzzrv* необходимо выполнить следующие скрипты: 

 1. Получение трасс для Spike и QEMU 
 <pre> 
 python3 projects/spike/scripts/get_traces.py  
 </pre> 
 Скрипт сгенерирует две директории и положит в них трассы — qemu_traces и spike_traces, сами директории будут располагаться в *fuzzrv/build/out/spike/new_coverage*  

 2. Сравнение трасс Spike и QEMU 
 <pre> 
 python3 projects/spike/scripts/compare_traces.py 
 </pre> 
 Скрипт выведет лог сравнения каждой трассы, в случае расхождений, строка и файл где возникла ошибка будут подсвечены красным