Симуляция аппаратуры с использованием операций разреженной линейной алгебры

При разработке аппаратуры (hardware design) один из шагов — симуляция с различной точностью и детализацией (RTL, gate level, с учётом физических задержек или без и т.д.). Данный шаг нужен для раннего выявления проблем дизайна и является вычислительно ресурсоёмким для реальных дизайнов.

Концептуально, симуляция выглядит как обход графа, описывающего дизайн (в зависимости от уровня детализации, в вершинах и на рёбрах различные сущности), схожий с обходом в ширину. А обход в ширину естественным образом выражается в терминах линейной алгебры (через операции над матрицами и векторами), что позволяет относительно легко получить параллельную реализацию для многоядерных ЦПУ и даже ГПУ.

Предлагается исследовать возможность реализации ядра симулятора на основе операций линейной алгебры. Для этого необходимо сделать следующее.

  • Описать алгоритм потактовой gate level симуляции без физических задержек в терминах операций линейной алгебры.
  • Научиться извлекать из netlist, построенного с помощью Yosys, необходимый граф.
  • Создать прототип симулятора с использованием SuiteSparse:GraphBLAS.
  • Провести экспериментальное исследование полученного симулятора.
  • Изучить, описать ограничения предложенного подхода.
Требования к студенту
  • Отличное знание языков C, C++, Python и соответствующих инструментов разработки: системы сборки, проверки качества кода, отладки, тестирования, профилирования.
  • Знание основ теории графов и базовых алгоритмов анализа графов: граф, ребро, путь, метки и веса, обходы графов, поиск путей, транзитивное замыкание.
  • Знание основ линейной алгебры: матрицы, вектора, операции над ними, полукольца, моноиды, операции и их свойства (коммутативность, дистрибутивность и т.д.).
  • Основы матлогики и булевой алгебры: логические операции, таблицы истинности.
Уровень

2 курс, 3 курс, Бакалаврская ВКР, Магистерская ВКР


Руководитель

Григорьев Семен Вячеславович


Консультант

Grigorev Semyon


Источник

Кафедра системного программирования СПбГУ