Разработка специализированного процессора с помощью высокоуровневых САПР и языков проектирования
Руководитель от корпоративного партнера:
Николай Терновой (Syntacore)
Руководитель от Университета ИТМО: Антонов Александр Александрович
Открытых вакансий: 1
Краткая аннотация
Проект посвящен апробации перспективных методологий высокоуровневого проектирования аппаратуры для разработки процессорных ядер и их элементов. Технологические ограничения миниатюризации и энергопотребления микроэлектроники заставляют искать новые решения при проектировании процессоров путем глубокой адаптации их архитектуры к особенностям конкретных вычислительных нагрузок. Для эффективного проектирования таких специализированных процессоров востребована разработка языков и САПР аппаратуры, позволяющих абстрактно описывать их функциональность и архитектуру, автоматизировать синтез архитектуры, а также гибко её переконфигурировать для оптимизации под целевые вычислительные нагрузки. При этом в маршруты разработки аппаратуры активно заимствуются технические решения, практики и технологии из области разработки программного обеспечения.
В рамках проекта осуществляется практическое знакомство и освоение технологий высокоуровневого синтеза (High-Level Synthesis, HLS), выполняющих автоматизированный синтез аппаратуры из описаний на языках программирования (чаще всего C/C++, либо проблемно-ориентированные языки), а также стремительно набирающих популярность т.н. “языков конструирования аппаратуры” (Chisel, SpinalHDL, Migen, Clash), встроенных в качестве DSL-библиотеки в языки программирования (Scala, Python, Haskell и пр.). Данные технологии позволяют существенно нарастить продуктивность разработчика специализированной аппаратуры по сравнению с традиционным RTL-проектированием, и их востребованность растет на рынке разработки цифровой аппаратуры.
Направления работы
- Разработка специализированного процессора с помощью высокоуровневого синтеза.
Примеры решаемых задач:- разработать синтезируемый дизайн процессора или его элемента на функциональном уровне;
- определить параметры автоматизированной оптимизации функционального описания процессора или его элемента, позволяющие добиться оптимальной реализации для заданных требований;
- выполнить интеграцию и прототипирование решения на микросхеме ПЛИС;
- выполнить практическое сравнение реализаций процессора или его элемента, выполненных на основе традиционной методологии проектирования (RTL) и высокоуровневого синтеза.
- Разработка специализированного процессора с помощью встроенного языка высокоуровневого описания аппаратуры.
Примеры решаемых задач:- изучить открытые дизайны процессоров с архитектурой RISC-V на основе встроенных языков высокоуровневого описания аппаратуры (Rocket, SonicBOOM, XiangShan), выполнить прототипирование процессоров на основе ПЛИС и освоить их программирование;
- выполнить разработку аналога открытого промышленного процессора с архитектурой RISC-V Syntacore SCR1 (реализованного на основе традиционной RTL-методологии) на основе встроенного языка высокоуровневого описания аппаратуры, произвести практическое сравнение эффективности проектирования;
- разработать библиотеку абстрактных механизмов управления, коммуникации и синхронизации вычислительного процесса внутри процессора.
Стек технологий
1) User and Organizations
- Инструменты гибкой разработки Agile, Scrum, Kanban
- Тайм-менеджмент и планирование временем
2) Software Development
- Встроенное программирование на языках C/C++
- Программирование на языках высокого уровня Scala, Python, Haskell
3) Hardware
- Высокоуровневый синтез с языков С/С++ аппаратных ускорителей
- Использование “языков конструирования аппаратуры” (Chisel, SpinalHDL, Migen, Clash)
- Язык описания аппаратуры SystemVerilog HDL
- Проектирование под ПЛИС/FPGA
Кем станет студент по завершению магистратуры
В зависимости от выполняемых задач внутри проекта выпускник может стать:
- инженером-проектировщиком цифровой аппаратуры (Hardware Logic Designer)
- инженером-проектировщиком ASIC frontend
- инженером-проектировщиком процессоров
- инженером-проектировщиком систем на ПЛИС/FPGA
Пререквизиты (входные требования)
Для участия в проекте необходимы базовые знания по следующим направлениям:
- цифровая схемотехника
- программирование на языке C/C++
- программирование на языках высокого уровня (Scala, Python, Haskell)
- архитектура компьютера