Привет, дорогой единомышленник! Меня зовут Чусов Сергей Андреевич (LinkedIn, Telegram), я преподаватель в НИУ МИЭТ, а также инженер по верификации цифровых устройств НИЛ ЭСК в этом же университете. Уже более четырех лет я занимаюсь верификацией цифровых устройств. Имею опыт верификации как отдельных СФ-блоков, так и целых Систем на Кристалле.
Для того, чтобы работать с репозиторием (выполнять практические занятия, модифицировать код и т.д.), необходимо склонировать его (на предоставляемую виртуальную машину или на иной дистрибутив Linux) и обновить сабмодули.
git clone https://github.com/serge0699/riscv-tests-intro.git
cd riscv-tests-intro
git -c submodule."submodules/riscv-gnu-toolchain".update=none submodule update --recursive --init && git submodule update --init
doc
- дополнительная документация.practice
- практические занятия;00_basic_hex
- конкретное занятие;golden
- эталонная реализация;README.md
- инструкция по выполнению;
- ...
README.md
- краткое содержание.
scripts
- вспомогательные скрипты;submodules
- сабмодули;theory
- теоретический материал.00_intro
- конкретная тема;- ...
README.md
- краткое содержание.
Разработка курса поддержана в рамках конкурса грантов Альянса RISC-V.
Материалы допускаются к использованию под лицензией CC BY 4.0.
Курс знакомит с основными подходами к функциональной верификации RISC-V ядер, использующимися в индустрии микроэлектроники в настоящее время. Ядром курса являются практические занятия, реализующие полный маршрут 3 различных подходов к тестированию (от простого к сложному). Однако, без базовых теоретических знаний осознанно их выполнить непросто, так что в курсе представлен блок теоретического материала, формирующий контекст восприятия.
Интересной особенностью курса является раздел bug hunting, который представляет собой сборник смоделированных и подробно разобранных ситуаций обнаружения и исправления ошибок в RTL-описании процессорого ядра с открытым исходным кодом MIRISCV.
Рекомендуемый маршрут прохождения представлен в соответствующем разделе.
- Использование исключительно открытого ПО;
- Предоставление виртуальной машины, на которой можно сразу начать работу;
- Возможность установки ПО и выполнения курса на пользовательской машине;
- Ознакомительная теоретическая и исчерпывающая практическая части;
- Использование разнообразных методик1;
- Наличие эталонных реализаций практических занятий;
- Моделирование ситуаций обнаружения и исправления ошибок в RTL (раздел bug hunting).
- Минимальные знания команд Linux;
- Минимальные знания Git (онлайн курс ~1 час);
- Базовые знания цифровой схемотехники и булевой алгебры;
- Базовые знания SystemVerilog;
- Базовые знания архитектуры RISC-V (спецификация):
- Адресное пространство (спецификация, раздел 1.4);
- Исключения и прерывания (спецификация, раздел 1.6);
- Представление о наборе команд RISC-V RV32I (спецификация, раздел 2);
- Представление о наборе команд RISC-V RV32M (спецификация, раздел 13).
- Базовые знания Python, C, процессов компиляции и линковки.
Вы можете воспользоваться предоставляемым образом виртуальной машины для VirtualBox Это конкретная версия Ubuntu 22.04 LTS, со всем необходимым установленным ПО.
Руководство по скачиванию и настройке виртуальной машины находится в файле doc/vm.md
. При использовании виртуальной машины дополнительно никакое ПО устанавливать не нужно.
Вы можете вручную установить следущее ПО на свой дистрибутив Linux:
- Генератор случайных инструкций RISC-V AAPG
2d7d40f
; - Программная модель RISC-V Spike ISS
00dfa28
; - ПО riscv-gnu-toolchain
6d7b5b7
; - Verilator 5.024
522bead
; - GTKWave.
а также все зависимости для сборки данного ПО.
Так как все ПО является открытым, то большая его часть жестко привязана к конкретным коммитам. Все ПО на нужных коммитах находится в директории submodules
. Инструкция по ручной установке, которая привязана к данным сабмодулям, находится в файле doc/soft.md
.
Ручная установка проверена и гаранитируется только для конкретной версии Ubuntu 22.04 LTS. Однако никаких ограничений на установку на другие дистрибутивы не накладывается.
Предполагается, что репозиторий склонирован на предоставляемую виртуальную машину или на иной дистрибутив Linux с установленным необходимым ПО.
Рекомендуемый маршрут прохождения:
- Тема 00: Вводная
- Тема 01: Функциональная верификация процессорных ядер
- Тема 02: Основные подходы к функциональной верификации RISC-V ядер
- Тема 03: Базовые подходы к симуляции RISC-V ядер
- Тема 04: RISC-V верификация: Сравнение с эталонной моделью
- Тема 05: RISC-V верификация: Модифицированное сравнение с эталонной моделью
По завершению теоретического и практического разделов рекомендуется освоить раздел bug hunting. В каждом из его занятий моделируется поиск, локализация и исправление ошибки в RTL MIRISCV при помощи различных подходов к верификации, представленных в данном курсе.
Footnotes
-
В практических занятиях присутствуют пересекающиеся части, однако автор реализует эти части каждый раз по-разному, чтобы познакомить вас с различными подходами к проектированию тех или иных частей верификационного окружения. ↩