Есть довольно известный инструмент для разработки аппаратных систем — Verilator (https://www.veripool.org/verilator/). Он принимает описание процессора на языке Verilog и генерирует по нему эмулятор на языке C, на котором можно посмотреть, как ведёт себя реальный процессор. Это позволяет, в частности, выполнять трассировку и мониторинг внутреннего состояния процессора, которые были бы невозможны на реальном “железе” из-за ограничений по объёму кристалла.
Кое-какие трассы Verilator умеет порождать и без нас, однако далеко не всё — например, нет возможности контролировать внутреннюю память процессора при выполнении инструкции. Достаточно хорошо трассировка и мониторинг реализованы в симуляторе Spike (https://github.com/riscv-software-src/riscv-isa-sim), надо сделать для Verilator что-то подобное. Обратите внимание, трассировка выполняется в сгенерированном Verilator коде, так что по сути надо будет править генератор.
Логи Spike как пример желаемого результата нам обещали прислать, но можно работать и без них.
Научный руководитель — Кириленко Яков Александрович. Требуется как минимум раз в неделю отчитываться научному руководителю о ходе работы.
Консультант со стороны Syntacore — Сергей Якушкин или кто-то, кого он назначит, порядок коммуникации с ним определится по мере работы над проектом.
Умение не теряться в командной строке Linux, некоторые навыки программирования на C++.
2 курс, 3 курс
Кириленко Яков Александрович
YADRO