Привет, Хабр! Не так давно, у себя в блоге мы анонсировали студенческий инженерный «хакатон» YADRO SoC Design Challenge по проектированию современных микропроцессоров на базе архитектуры RISC-V. Теперь будет логично поделиться подробным рассказом, как это было. Спойлер: первый блин не комом, а кое в чём мероприятие даже приятно удивило. Детали читайте под катом.
Что за инженерный хакатон?
Слово «хакатон» обычно ассоциируется с инфобезом и программированием, но такое представление уже неактуально. Сейчас этот термин подразумевает любое соревнование (в том числе и хардварное), на котором собираются люди, чтобы представить идеи решения различных прикладных задач за ограниченное время. И уже даже не обязательно собираться в одном месте: например, платформа QuickSilicon для хардварных инженеров, позволяет устраивать виртуальные соревнования.
Наше мероприятие появилось как развитие идеи постепенного входа в профессию, заложенной в основе Сколковской Школы Синтеза Цифровых Схем, для которой компании YADRO и Syntacore выступали партнёрами и приглашенными экспертами. Там ребята получают первое представление о разработке микроэлектроники, для дальнейшего изучения схемотехники и архитектуры компьютеров уже в высшей школе.
На любом хакатоне атмосферу создают задачи. Их у нас было три и каждая представлена в виде отдельного трека.
RTL проектирование. Первый этап проектирования микросхем для смартфонов, компьютеров, ускорителей машинного обучения и много чего ещё. Инженеры-проектировщики описывают и моделируют цифровые блоки на языках описания аппаратуры Verilog или VHDL, после чего с помощью программ логического синтеза переводят полученные описания в схемы.
Функциональная верификация. Обязательный этап разработки цифровых устройств, предназначенный для проверки хардварного дизайна микросхем на их соответствие заявленной спецификации, а также поведение в различных ситуациях и условиях. На верификацию уходит до 80% от всего времени работы над проектом, ведь к микросхеме нельзя выпустить «патч» после того, как её отдали в производство. Даже небольшая интегральная микросхема, например, микроконтроллер – это набор из десятков подмодулей, очень часто со сложным функционалом и проверить нужно всё.
Топологическое проектирование. Этап разработки интегральных схем, представляющий собой процесс преобразования электрической или логической схемы в описание послойной реализации схемных компонентов (транзисторов, диодов, резисторов) и связей между ними в многослойной интегральной структуре.
Всё это практические задачи, над которыми работают инженеры YADRO. Участникам задания были даны в упрощённом формате, чтобы соответствовать их уровню знаний.
Место и участники
Отличие такого мероприятия от кодерских хакатонов — хардварная составляющая, что накладывает определённые условия при выборе места проведения. Например, трек по RTL проектированию сложно представить без предоставления участникам исходников самого процессора, трек по верификации — без окружения для тестирования и проверки производительности. Поэтому площадкой проведения инженерного хакатона была выбрана территория нашего партнёра — НИУ МИЭТ.
Выбор партнёра неслучаен — НИУ МИЭТ уже более полувека является одним из ключевых вузов, который готовит кадры для электронной промышленности по широкому спектру специальностей: от материаловедения до создания технологий микроэлектроники, и от дизайна микросхем до проектирования фотошаблонов для их изготовления.
Важнейшей частью подготовки инженера-микроэлектронщика, является практика. Поэтому вместе с НИУ МИЭТ мы запланировали целый ряд мероприятий, дающих возможность попрактиковаться в решении реальных производственных задач, первым из которых стал хакатон YADRO SoC Design Challenge. На подобных соревнованиях, студенты могут уже сейчас проверить свои знания на реальных кейсах и быстро влиться в процесс разработки после вуза.
Мы предполагали, что большинство участников будет из самого МИЭТа, но были приятно удивлены тем, что поучаствовать захотели студенты и из других вузов — МИЭМ НИУ ВШЭ, МГТУ им. Баумана, Университета Иннополис, СПбПУ, РТУ МИРЭА и других. Некоторые ребята даже специально приехали на мероприятие из Казани и Санкт-Петербурга.
Задания
Что же предстояло сделать участникам в каждом треке?
RTL проектирование. Задачей участников было повысить производительность двухстадийного RISC-V процессора через модификацию его микроархитектуры с помощью добавления новых команд (умножения/деления), увеличения количества стадий, добавления предсказания переходов, оптимизации декодера инструкций и других блоков. Каким именно способом повысить производительность — участники могли решать сами. Результаты оценивались путём анализа STA процессора и запуском теста CoreMark.
Функциональная верификация. Участникам было необходимо написать часть верификационного окружения используя SystemVerilog Assertions (SVA) (перенести спецификацию проверяемого устройства с естественного языка, на SVA). По итогу хакатона, участники должны были детектировать и указать как можно больше дизайнов, содержащих ошибки, и в идеале, сделать предположение о сути содержащихся в дизайне ошибок.
Топологическое проектирование. В этом треке нужно было с помощью библиотеки стандартных ячеек вручную разработать схемы и топологии триггеров, счётчика и делителя частоты, а также топологию СВЧ ключа. Затем провести верификации разработанных топологий и экстрагировать паразитные составляющие, а также провести моделирование схем с учётом экстракции и получить лучший результат.
В следующих статьях мы подробно разберем задания хакатона с авторами треков — преподавателями МИЭТ.
Так как задачи были максимально приближены к «боевым», то и набор инструментов участникам мы предоставили самый современный, которым пользуются все передовые разработчики микроэлектроники. Организаторами со стороны МИЭТа был подготовлен процесс Continuous Integration для верификации результатов (поверьте, это было непросто), сборочные скрипты для работы в Vivado Xilinx, RISC-V Formal Verification Framework и другие инструменты. Такие условия позволяют приравнять участие в хакатоне к реальному производственному опыту.
Последним «кирпичиком» в подготовке хакатона стала проверка необходимого уровня знаний участников, чтобы хакатон был максимально полезным для всех. Ведь какой прок от актуальных заданий и окружения, если участники не смогут к ним подступиться? Поэтому мы сделали для каждого из треков небольшое отборочное тестирование.
В комментариях к предыдущему посту был вопрос про тестовые задания, и теперь мы можем вам их показать. Вполне допускаем, что они могут показаться вам простыми, но не забывайте, что это студенческий хакатон.
Программа
Территория университета — режимный объект, а участники — ещё очень юны, поэтому мы решили не делать хакатон хардкорным, с непрерывной работой без перерывов на сон и еду. Всю программу разделили на два дня — субботу и воскресенье, что было более комфортно для участников. Тем не менее работа над задачами шла до последнего момента, сказывалось то, что для многих ребят это был первый опыт соревнований подобного рода.
Было бы жестоко и непродуктивно бросать студентов одних наедине с задачами, поэтому на протяжении двух дней на каждом треке командам помогали менторы – наши эксперты из YADRO Microprocessors и Syntacore, обладающие практическим индустриальным опытом разработки микропроцессоров. В частности, они помогали ребятам с декомпозицией больших задач на более мелкие.
Это стало одним из усвоенных нами как организаторами уроков — стоило детальнее прописывать задачи и дробить их на этапы, ведь в силу пока небольшого реального опыта разработки у участников, даже небольшой затык вначале может не давать продвигаться по задаче в целом.
Помимо работы над задачами, участников ждали нетворкинг и консультации с нашими экспертами. Ведущий архитектор и руководитель отдела разработки YADRO Microprocessors Алексей Кожин провёл мастер-класс, где рассказал о необходимых знаниях, навыках и возможностях реализации карьерных маршрутов по каждому из трёх направлений представленных на хакатоне.
Итоги
Достигли ли мы своих целей как организаторы — безусловно. Мы убедились, что хардварные соревнования не менее актуальны чем “классические” кодерские хакатоны. А наши эксперты были рады увидеть такое количество молодых и увлеченных ребят, ищущих нестандартные решения.
Ну и не можем не отметить победителей. В треке «RTL проектирование» победила команда МИЭТа в составе двух студентов – Евгения Герасименко и Сергея Демичева (Институт МПСУ, 4 курс). Победу в треке «Топологическое проектирование» одержал Артем Мордыга (Институт НМСТ, 4 курс), в треке «Функциональная верификация» – команда НИУ ВШЭ в составе: Анастасии Овчинниковой, Ильи Корчагина и Андрея Угодникова. Среди призеров были также студенты МГТУ им. Баумана и Университета Иннополис.
Все победители получили до 100 баллов в зачет индивидуальных достижений при поступлении в магистратуру МИЭТ, а также отладочные платы на базе FPGA и логические анализаторы в качестве призов, эти комплекты оборудования позволят студентам продолжить прокачивать навыки проектирования современных микропроцессоров.
В этом году трек RTL был самый многочисленный — в нём сражалось 14 команд. Это явный сигнал нам, что трекам по верификации и топологии нужно уделить дополнительное внимание: например, заранее проводить ознакомительные семинары по этим направлениям с нашими экспертами.
А что вы думаете об инженерных хардварных хакатонах, хотелось бы вам поучаствовать в таких?
nerudo
Как я вижу инженерный хакатон: запустил компиляцию и на сутки ушел пить кофе с плюшками.
sam_sil
Тут специально оптимизировали время. Например, в RTL треке верификация изменений процессора в CI занимала от 3 до 10 минут. В зависимости от того найдены ли ошибки. Получение Coremark в симуляции и результатов STA после синтеза в сумме примерно минут 15-25.