На рынке разработчиков микроэлектроники катастрофическая нехватка кадров и на пороге этого сегмента не стоит очереди желающих. Для обучения базовым навыкам использования языков описания аппаратуры (HDL) нужен минимальный набор инструментов,но при попытке студента установить его впервые, как правило, всплывает куча дополнительных проблем. И первая из них — это Linux. Можете не верить, но не все студенты сейчас горят желанием работать в непонятной консоли, когда рядом есть удобные «окна», на которых с тем же успехом можно изучить Python и SQL по готовым и понятным курсам и жить долго и счастливо. А ведь придется еще столкнуться с выбором симулятора, поиском для него дополнительных библиотек и т. п. Короче, даже для простой симуляции схемы порог входа получается очень высокий.

В этой статье рассказываем, как мы попытались снизить этот порог с помощью летней школы в Национальном исследовательском ядерном университете МИФИ и каких удалось добиться результатов. Обучающимся мы предоставляли готовую среду и учебные материалы. Читали лекции и проводили лабораторные, чтобы ввести в курс именно микроэлектроники.

Привет, Хабр!

Как разработчик железа, мы постоянно сталкиваемся с нехваткой разработчиков микроэлектроники. Это направление непопулярно среди студентов из-за высокого порога входа. Отчасти также играют роль стереотипы о перспективах и зарплатах в данной отрасли в России (особенно по сравнению с другими IT отраслями). Мы пришли в МИФИ показать реальную картину на примере нашей компании, познакомить студентов с требованиями работодателей, дать источники информации и научить пользоваться доступными инструментами, да и в целом показать маршрут разработки микроэлектроники и микропроцессорных систем.

Зачем нужна была эта «экскурсия»

В культуре разработчиков микроэлектроники есть негласное правило, что тот, кто хочет, учится самостоятельно. В интернете действительно много источников на тему разработки. К примеру, замечательный курс АПС МИЭТ, материалы, подготовленные Юрием Панчулом и командой, а также материалы Станислава Жельнио.

Чтобы начать их проходить, нужна среда для симуляции. Уже на старте возникает вопрос «Какой мне выбрать Linux?».

Симуляторы чувствительны к версии линукса больше, чем этого хотелось бы. Часть симуляторов будет работать из коробки, однако другим могут потребоваться дополнительные библиотеки. Разобраться с этим не всегда удается быстро. При этом навыки администрирования Linux в ракурсе микроэлектроники на самом деле вторичны.

Чтобы обойти эти вопросы, мы разработали двухнедельную летнюю программу для студентов третьего курса специалитета, знакомых со схемотехникой, где практиковались в запуске симуляций, изучали азы языка Verilog для описания цифровых схем и разбирали состав простейших процессоров. В программу также вошло посещение офиса, экскурсия по нашему музею и знакомство с представителями команды.

Как проходило обучение

В рамках проекта «Больше чем старт» в нашу группу прошли отбор 14 человек. Для них мы читали лекции и проводили лабораторные работы.

В рамках своей летней школы мы предложили студентам на время обучения ноутбуки нашего производства с необходимой средой разработки и набором материалов.

Всего было запланировано девять теоретических занятий:

  • первые 3 занятия посвящены изучению функционала описания логических микросхем,

  • следующие 3 — про основы микропроцессорных систем, в частности про ISA RISC‑V,

  • заключительные 3 — про изучение языка SystemVerilog.

Но по итогу занятия получились следующими:

  • 3 занятия — на изучение основ языка Verilog

  • 2 занятия — на изучение маршрута разработки и экскурсию в компанию

  • 4 занятия на изучение микропроцессорных систем

Занятия по SystemVerilog уже не поместились в отведенное время.

Старались не давать материал одним монолитным куском на протяжении полутора часов, а разбивать материал на части. Кроме того, в каждой презентации были вопросы к аудитории, благо предмет практический. Вопросы были составлены с учетом пройденной программы, что позволяло студентам блеснуть своими знаниями.

На лабораторных работах студентам предлагался набор заданий разного уровня сложности. Каждый студент должен был самостоятельно запустить симуляцию и проанализировать её результаты. Задания начального уровня должны были быть выполнены всеми студентами. Остальные – в индивидуальном порядке на занятии или дома.

Пример задания:

Опишите декодер 3в8, используя:

а) И, НЕ

б) логический сдвиг

в) if-else

г) case

д) тернарный оператор

Начальный уровень сложности — выполнить один из предложенных вариантов.

На дом остаются остальные варианты.

Требования к тестбенчу:

а) Тестбенч, производящий последовательное воздействие на входы устройства всех возможных комбинаций сигналов. Оценка корректности работы устройства производится путем просмотра временных диаграмм.

б) Тестбенч, с функционалом, описанным в пункте а, но содержащий функцию проверки и выводящий сообщения о корректной и некорректной обработке сигналов в терминал.

Преподавателями и консультантами выступили сотрудники компании. Конечно, для проведения практики пришлось отвлекать инженеров от основной работы. В долгосрочной перспективе это окупается, однако несет некоторые риски, связанные со сроками сдачи проектов. Мы это осознавали на 100%. Не получится отвлечь человека наполовину, на ¾ и т.д. Разработка курса, подготовка материалов и проверка заданий требует огромного количества времени и сил.

Но участие инженеров было необходимо. SystemVerilog — это новый язык для студентов и первое время больше всего проблем возникало с ошибками синтаксиса. Open source симуляторы, такие как Icarus, не всегда четко указывают на допущенную ошибку, поэтому наличие опытного человека рядом значительно упрощает работу.

Что дальше

Тех студентов, кто успешно прошел летнюю программу и подошел под требования наших отделов (верификации, разработки и топологии), мы пригласили на собеседование в компанию. В итоге взяли на стажировку пятерых практикантов.

 В МИФИ мы провели пилотный проект по взаимодействию с ВУЗами, который далее будем развивать и дорабатывать.

Для читателей Хабра доступна возможность отправить своё резюме на start@aq.ru для прохождение практики или стажировки. В зависимости от цели и степени подготовки кандидата последующее собеседование может быть разделено на 2 части: знакомство, на котором мы оценим кандидата и ознакомим с требованиями к стажировке на интересующее направление, и техническое собеседование.

В условиях нехватки кадров сотрудничество индустрии с профильными ВУЗами абсолютно необходимо. Это позволяет актуализировать программу ВУЗа и показать студентам реальную ситуацию на рынке: как живут компании, в каких условиях работают сотрудники.

Комментарии (30)


  1. ky0
    27.09.2024 16:49
    +13

    Отчасти также играют роль стереотипы о перспективах и зарплатах в данной отрасли в России (особенно по сравнению с другими IT отраслями).

    Так развенчайте эти стереотипы. Иначе, получается, это не стереотипы?


  1. REPISOT
    27.09.2024 16:49
    +7

    Так и не увидел, как именно вы "снижаете порог".

    Вот ардуино снижает порог. Там люди делают устройства на микроконтроллере, не зная ни схемотехники, ни программирования (качество этих устройств и область их применения - отдельный вопрос).

    А судя по статье, вы просто проводили занятия. Причем с людьми, которые, как вы пишете, уже знакомы со схемотехникой.


    1. 2128507
      27.09.2024 16:49
      +2

      экосистема ардуино ДРАМАТИЧЕСКИ снижает порог вхождения в аппаратную разработку, не требуя для поделок среднего образования вообще. Главное, чтобы глючные либы от других таких же энтузиастов, не пересекались по таймерам и прерываниям. Вы посмотрите форумы ардуинщиков - там большинство советов по решению проблем в виде "возьми вот эту либу, у меня норм работает". Там не бывает так, чтобы люди обсуждали как линию задержки встроить на резисторах и кондерах, они обсуждают как бы при модифицированном таймере встроенную функцию delay() заюзать, с той же целью.

      В итоге, в дополнение к куче людей, не знающих математику и javascript, но при этом успешно кодящих на Vue за полтос в месяц, теперь есть еще масса "аппаратных разработчиков", не понимающих, как UART и RS232 превращаются друг в друга, не знающих законы Ома и Кирхгофа. Просто люди в 40 лет научились управлять электричеством в микросхемах в одну строчку, и пришли от этого в восторг, и почитали еще форумы, и поняли еще что-то сакральное, и пошли на хабр. фриланс, ну вы понимаете ага)

      Не надо нам таких дебилов, хорош уже, утомили. Это тяжелая умственная работа для тех. у кого голова не отключается, и нужны некоторые врожденные навыки, которые нельзя получить, их можно только развить. Один из них - системное логическое мышление, которое "изнутри" не позволит проектировать микросхемы, не понимая как это надо делать.

      Вопрос к автору: а у вас старых берут в стажеры? Ну типа вот один мой знакомый дожил до такой степени, что подумал, вполне логично будет спуститься на уровень еще ниже и начать учить HDL.


      1. randomsimplenumber
        27.09.2024 16:49
        +2

        экосистема ардуино ДРАМАТИЧЕСКИ снижает порог вхождения в аппаратную разработку, не требуя для поделок среднего образования вообще.

        Для мигания лампочкой - да. А если захочется накодить полётный контроллер для квадрокоптера или управление для ЧПУ - ну-ну.

        теперь есть еще масса "аппаратных разработчиков", не понимающих, как UART и RS232 превращаются друг в друга, не знающих законы Ома и Кирхгофа

        Если они успешно решают свои задачи - в чем проблема?


        1. MinimumLaw
          27.09.2024 16:49
          +1

          Если они успешно решают свои задачи - в чем проблема?

          Прошу прощения, что влез. Надеюсь не помешаю.

          Проблема в том, что они не решают свои задачи УСПЕШНО. Они их решают КАК МОГУТ. А людей, способных понять разницу между этими двумя решениями становится все меньше и меньше. Как результат падающая надежность изделия в целом. Которая компенсируется быстрой сменой моделей. И если для софтового мира это более или менее приемлемо - вопрос наличия администратора, который "накатит" свежий патчик или поставит самую современную версию ПО, то для мира железок (особенно промышленных с реально большим сроком эксплуатации) это прямой путь к гибели. На который (вынужденно?) вступает все больше и больше организаций-разработчиков.


          1. randomsimplenumber
            27.09.2024 16:49
            +1

            Как результат падающая надежность изделия в целом. Которая компенсируется быстрой сменой моделей

            Если железка успешно проработала 1 год - как Arduino сможет ей помешать проработать ещё 10 лет?


            1. MinimumLaw
              27.09.2024 16:49

              То самое "запланированное устаревание". Просто оно заложено не специально по научению маркетологов, а случайно - по причине недостаточности навыков правильного проектирования.


              1. randomsimplenumber
                27.09.2024 16:49
                +1

                Ну то есть лампочка мигала себе 1 год, а на 2-й перестала, потому что внутри loop() ? O_o


          1. kenomimi
            27.09.2024 16:49
            +1

            Проблема в том, что они не решают свои задачи УСПЕШНО. Они их решают КАК МОГУТ. 

            Природа так миллиарды лет делает, и всё вроде еще не развалилось /s


            1. MinimumLaw
              27.09.2024 16:49

              Все "тупиковые ветви эволюции" передают вам пламенный привет!


              1. randomsimplenumber
                27.09.2024 16:49

                Тупиковые ветви эволюции - это чрезвычайно специализированные организмы, которые не смогли приспособиться к изменению условий. А в правильных условиях они весьма успешные.

                Неверная аналогия подобна саблезубому тигру с дверцей.


    1. MinimumLaw
      27.09.2024 16:49

      Вот ардуино снижает порог.

      Вот на самом деле очень хороший пример того, как очень классная идея превратилась в страшный яд для индустрии. Привет ДДТ - прямо вот один в один история. Изначально обучающий проект для школьников, оказавшийся настолько простым и понятным, что зацепил взрослых дядек, позволил им без специальной подготовки плодить заказные изделия, но при этом наглухо поломал все каноны, которые были в этой индустрии и породил "гонку вооружений" - т.е. погоню за частотой, объемами памяти и прочими делами. И ровно так же ситуация патовая - запретить нельзя (разработка встанет), продолжать можно - но граница уже очень четко видна и мы в нее так или иначе упремся.

      Не мне судить что тут хорошо, что плохо. Я предпочту посмотреть как индустрия будет выходить из этой ситуации. Актуальное решение с HAL и RTOS вроде бы позволяет перевести острую фазу в хроническую. Но это именно смена фаз, а не лечение. Плюс ко всему пока и тут нет единого понимания что и как делать. Да и не решает это поставленные вопросы. Да, прикладным программистам, занятым каким-нить backend'ом на этот уровень уже можно опуститься в разумные сроки. Но найдется ли достаточное количество желающих? Неподготовленный человек справится с Arduino, но точно не осилит быстро HAL+RTOS. Вернее безусловно осилит, но нужно время. Люди старой закалки (где они еще остались) с трудом переходят на эту парадигму. Она им только мешает, создавая избыточную сложность и нагрузку на процессор.

      Есть, безусловно, и альтернативы. Есть множество попыток сделать здесь C++. Как самостоятельно, так и связке с HAL/RTOS. На эту территорию заглядывает Rust. Есть здесь и скриптовые языки, типа того же MicroPython'а или даже Java. Но пока это очень малая часть от объемов рынка.


      1. randomsimplenumber
        27.09.2024 16:49

        Ну и в чем подвох? Вместо вылизывания тактов на ассемблере - камень побольше, и в production? Так цена attiny13 и stm32f103 не настолько отличается, чтобы в это упарываться

        Неподготовленный человек справится с Arduino, но точно не осилит быстро HAL+RTOS.

        Будет нужно - осилит. Это проблема конкретного человека, и она решаемая. Если он справился выучить С, и научился вызывать 20 функций - почему бы не выучить ещё 50?


        1. MinimumLaw
          27.09.2024 16:49

          Так я ведь ровно про это же. Я не просто так упомянул дуст.

          Сегодня многим это решение кажется "волшебной таблеткой" и мало кто желает объективно оценивать его минусы. А их хватает. И в первую очередь это сильно возрастающее время реакции на события, мало того - оно экспоненциально растет с ростом количества задач.

          Дело не в "тактах на ассемблере", дело в подходе к решению задачи. Много ли есть людей, у которых нынче в коде внутри основного цикла только сброс сторожевого таймера и переход в режим пониженного потребления? А известное "... - и в продакшн" хорошо только в песне. Ну или если репутационные потери мы не считаем за потери в принципе.


          1. randomsimplenumber
            27.09.2024 16:49

            экспоненциально растет с ростом количества задач.

            О(e^N) наверное можно добиться,ихотя я не представляю как.

            Много ли есть людей, у которых нынче в коде внутри основного цикла только сброс сторожевого таймера и переход в режим пониженного потребления?

            А это необходимо всем и всегда?

            Ну или если репутационные потери мы не считаем за потери в принципе.

            Железка она или работает согласно ТЗ или нет Если работает - какие репутационные потери? Что заказано то и получено. Если не работает - зачем пустили в production?


            1. MinimumLaw
              27.09.2024 16:49

              А вы уверены в том, что ваши приемо-сдаточные тесты не просто проверяют железку на соответствие ТЗ здесь и сейчас, но и ГАРАНТИРУЮТ ее работоспособность в течении заявленного срока эксплуатации?

              По всему остальному "всем и всегда" очень коварный термин. Разве необходимо "всем и всегда" пристегиваться в автомобиле или соблюдать скоростной режим? Есть наработанный багаж рекомендаций по созданию надежных и производительных систем. Да, это требует квалификации. Да, сейчас требования к квалификации размениваются на падение надежности и производительности. Я с этим ничего не могу сделать. Да, честно говоря, и не рвусь.

              Просто удивительно иногда сталкиваться с "отрыжкой" этого явления. Когда тот же код, можно сделать в "классической" парадигме за довольно небольшое время и вдруг растут все показатели и выясняется что не надо ничего менять кроме софта. Последние 10-15 лет такое встречается сильно чаще, чем хотелось бы. А после известных событий так вообще регулярно.


              1. randomsimplenumber
                27.09.2024 16:49

                А вы уверены в том, что ваши приемо-сдаточные тесты не просто проверяют железку на соответствие ТЗ здесь и сейчас, но и ГАРАНТИРУЮТ ее работоспособность в течении заявленного срока эксплуатации?

                Я уверен, что связи между наличием loop () и сроком эксплуатации нет. Процессор от выполнения loop не изнашивается


  1. asatost
    27.09.2024 16:49
    +2

    Можете не верить, но не все студенты сейчас горят желанием работать в непонятной консоли, когда рядом есть удобные «окна»

    Непонятно, что мешает в Linux работать в "окнах". Их там даже есть на выбор. И даже есть те, в которых панели не прибиты гвоздями к определённому месту экрана.

    на которых с тем же успехом можно изучить Python и SQL

    Python? На Windows? Удобно? Это как в том анекдоте "выберите любые два"?

    В культуре разработчиков микроэлектроники есть негласное правило, что тот, кто хочет, учится самостоятельно

    Самостоятельная работа и самостоятельное изучение каких-то материалов, конечно, неотъемлемая часть процесса обучения. Но полностью самостоятельное обучение - всего лишь признак незрелости соответствующей отрасли.

    Уже на старте возникает вопрос «Какой мне выбрать Linux?»

    Почему нет готовых образов виртуальных машин, конфигов, скриптов, рецептов? Например, какой-нибудь конфиг к debian autoinstall с комментариями, чтобы возникший вопрос решился "одной кнопкой".


    1. randomsimplenumber
      27.09.2024 16:49

      Python? На Windows? Удобно?

      В чем проблема? pycharm кроссплатформенный, python тоже


      1. asatost
        27.09.2024 16:49

        В чем проблема? pycharm кроссплатформенный, python тоже

        Для начала хотя бы в том, что cmd не юникодный по умолчанию.
        А вообще на этот вопрос уже кто только не отвечал: https://stackoverflow.com/a/11338865/7584170


        1. randomsimplenumber
          27.09.2024 16:49

          cmd не юникодный по умолчанию

          А при чем тут изучение python?


  1. Mox
    27.09.2024 16:49

    А синтез вы показываете? Если да - то как? Есть какой-то бесплатный синтезатор verilog и библиотека для примера? Может быть в какой-то FPGA?


  1. Markscheider
    27.09.2024 16:49
    +1

    Симуляторы чувствительны к версии линукса больше, чем этого хотелось бы. Часть симуляторов будет работать из коробки, однако другим могут потребоваться дополнительные библиотеки.

    - Имя, сестра, имя!!!


  1. rukhi7
    27.09.2024 16:49

    Тех студентов, кто успешно прошел летнюю программу и подошел под требования наших отделов (верификации, разработки и топологии), мы пригласили на собеседование в компанию. В итоге взяли на стажировку пятерых практикантов.

    То есть желающие то были в большом количестве, но взяли только 5! И эти люди рассуждают о снижении порога. О нехватке специалистов. Может надо просто дать возможность начать учиться всём желающим?


    1. VladaZueva Автор
      27.09.2024 16:49

      5 человек мы приняли на стажировку- работу.

      Из 14 кто проходил обучение/практику.


      1. rukhi7
        27.09.2024 16:49

        В рамках проекта «Больше чем старт» в нашу группу прошли отбор 14 человек.

        ну да, перед отбором который прошли 5 человек, был отбор который прошли только 14 человек. Какой из порогов вы снижаете интересно.


    1. kenomimi
      27.09.2024 16:49

      Коммунизм кончился в 1990м. Берут лучших, остальные увы, ищите дальше.

      Сталкиваюсь тоже со стажерами - так у нас уже большая пачка мемчиков локальных есть. Эпичным было, например, когда половина группы под конец обучения без всякого предупреждения свалила, потому что один студент в группе где-то достал нахаляву конный тур, и раздал его собратьям - "работа подождет, там же халявные лошади". Или чел, который бухал страйк на обучении - "ну а чо, я в инсте так делаю, и ничо". Люди вроде и сообразительные по профе, но от них лучше сходу избавляться, ибо в силу своего поведения работать они не смогут эффективно.


      1. rukhi7
        27.09.2024 16:49

        Может надо посмотреть по каким критериям отбирают в стажёры?


        1. kenomimi
          27.09.2024 16:49

          Поведение невозможно отследить при наборе - там все хорошие и приличные. Институты тоже не горят желанием сообщать такую информацию, ибо в их интересах нагрузить студента помощнее, чтобы тот не разлагался морально от скуки, и не портил репутацию заведения.

          Обучения/стажировки позволяют отсеивать не только глупых, но и безответственных товарищей с хулиганами.


  1. forthuse
    27.09.2024 16:49

    Некоторые мысли для подумать по сокращению порогa входа студентов в микроэлектронику можно почерпнуть и в этом видео. :)
    Языки программирования/Спецпроцессоры/Прототипирование компиляторов
    https://rutube.ru/video/f7b141bed016036e7b208703a85842af/