Привет, дорогой единомышленник! Меня зовут Чусов Сергей Андреевич (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 ядер, использующимися в индустрии микроэлектроники в настоящее время. Ядром курса являются практические занятия, реализующие полный маршрут 3 различных подходов к тестированию (от простого к сложному). Однако, без базовых теоретических знаний осознанно их выполнить непросто, так что в курсе представлен блок теоретического материала, формирующий контекст восприятия.
Рекомендуемый маршрут прохождения представлен в соответствующем разделе.
- Использование исключительно открытого ПО;
- Предоставление виртуальной машины, на которой можно сразу начать работу;
- Возможность установки ПО и выполнения курса на пользовательской машине;
- Ознакомительная теоретическая и исчерпывающая практическая части;
- Использование разнообразных методик1;
- Наличие эталонных реализаций практических занятий.
- Минимальные знания команд 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: Функциональная верификация процессорных ядер
- Тема 03: Базовые подходы к симуляции RISC-V ядер
- Тема 04: RISC-V верификация: сравнение с эталонной моделью
- Тема 05: RISC-V верификация: модифицированное сравнение с эталонной моделью
Footnotes
-
В практических занятиях присутствуют пересекающиеся части, однако автор реализует эти части каждый раз по-разному, чтобы познакомить вас с различными подходами к проектированию тех или иных частей верификационного окружения. ↩