Что делают в офисе инженеры в Apple и Intel: профориентационный онлайн-курс современной микроэлектроники для школьников

    Недавно вышел бесплатный онлайн-курс в трех частях под названием «Как работают создатели умных наночипов» (1, 2, 3). Он предназначен для профориентации школьников и отличается максимальной конкретностью: вот так выглядит распределение работы в команде проектирования микросхемы, вот на таких концепциях проектирования на уровне регистровых передач построена разработка, и вот такие алгоритмы используются для определения, на сколько мегагерц будет работать проектируемый процессор для компьютера или автомобильной электроники.

    Кроме теоретической профориентации, курс можно использовать для отбора школьников на практические летние школы по ПЛИС-ам и проектированию процессоров. Такая школа планируется в этом году в Зеленограде, ее прототип был опробован на Летней школе юных программистов в Новосибирске и на Неделе электроники для школьников в Киеве в позапрошлом году. Можно также попробовать сделать хакатон по аппаратно-реализуемым нейросетям и аппаратной реализации игр с выводом на VGA дисплей (об этом дальше в посте).



    Кратко о том, что входит в каждый из трех модулей — «От транзистора до микросхемы», «Логическая сторона цифровой схемотехники» и «Физическая сторона цифровой схемотехники».

    Курс «Как работают создатели умных наночипов» начинается с абсолютного нуля, поэтому его первая часть, «От транзистора до микросхемы», во многом повторяет другие материалы по электронике для школьников, которые создавались в последние 50 лет — что такое транзистор, логические элементы, двоичные числа и триггеры. Концепция D-триггера внутри современного айфона осталась той же, что в журнале «Квант» 1986 года. Транзисторы уменьшились в тысячу раз, но суть их не изменилась.

    Единственный блок информации, которого не было в предыдущих курсах — это про так называемые стандартные ячейки (standard cells), на технологии которых строится подавляющее количество современных специализированных микросхем. Они выглядят вот так:



    Попробуйте ответить на вопрос из тестирования ниже, и если вы знаете ответ, то вы можете первый модуль курса пропустить:
    Почему стандартные ячейки современных микросхем (ASIC standard cells) называются стандартными?
    1. О, я знаю! Это потому что они реализуют стандартные логические функции И, ИЛИ, НЕ
    2. Элементы транзистора в стандартных ячейках имеют стандартный химический состав
    3. Стандартные ячейки работают на стандартной тактовой частоте
    4. Они имеют стандартную высоту (размерность на площади), что упрощает подвод к ним питания и автоматическое соединение их между собой
    5. Структура стандартных ячеек была когда-то стандартизована каким-то Европейским комитетом по стандартам

    Правильный ответ:

    Скрытый текст
    4. Стандартные ячейки (ASIC standard cells) имеют стандартную высоту (размерность на площади), что упрощает подвод к ним питания и автоматическое соединение их между собой



    Если не знаете, можете пройти первый модуль курса — «От транзистора до микросхемы». Вот его содержание:



    Если большая часть первого модуля курса «Как работают создатели умных наночипов» говорит о тех же вещах, которые были в популярных текстах для школьников еще с 1970-х, то во второй части, «Логическая сторона цифровой схемотехники» мы входим в область, которой в журнале «Квант» не было, и которая вообще в российском образовании была заброшена из-за коллапса СССР. Речь идет о так называемом маршруте RTL-to-GDSII, методах проектирования плана размещения миллиардов транзисторов и дорожек микросхемы на основе компиляции/синтеза кода на языках описания аппаратуры Verilog и VHDL. Провал в этой области необходимо преодолеть, начиная с уровня продвинутых школьников. Иначе — никаких действительно российских айфонов, роботов и самоуправляемых автомобилей.



    В последние несколько лет в России произошел толчок к популяризации проектирования цифровых схем с помощью синтеза из языков описания аппаратуры, в том числе из-за выхода на русском языке бесплатного (в электронном варианте) учебника Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера». Посты на Хабре об этом учебнике получили более 300 тысяч просмотров, а скачивания дважды завалили британский сайт Imagination Technologies. Недавно вышла окончательно исправленная версия учебника, которую вы можете скачать по ссылке c сайта MIPS. Правда ссылка работает только под Windows, а на Маке и под Линуксом глючит. Если у вас с ней проблемы, можете скачать эту же версию отсюда. Или купить бумажную книжку от ДМК Пресс на Озоне или в Лабиринте.



    Модуль «Логическая сторона цифровой схемотехники» курса «Как работают создатели умных наночипов» использует пример «улыбающейся улитки» из Харрисов. «Улитка» — это конечный автомат, который распознает последовательности нулей и единиц. В курсе разбирается исходный текст автомата «улитки» на языке описания аппаратуры Verilog, а также вводятся концепции диаграмм состояний конечного автомата и временных диаграмм сигналов. После этого демонстрируется синтезированная из описания электронная схема, с логическими элементам и и D-триггерами для хранения состояния конечного автомата «улитки».





    На основе примера «улитки» школьники на хакатонах могут синтезировать для плат ПЛИС разнообразные «кодовые замки». В экзамене к курсу «Как работают создатели умных наночипов» есть вопрос про диаграмму состояний конечного автомата так называемой «китайской комнаты» — популярного примера из области искуственного интеллекта. Вот диаграмма простого конечного автомата для ведения диалога китайскими иероглифами. Если дать ему на входе комбинацию из нескольких иероглифов «дерево» и «медведь», с последуюшими иероглифами «наука», то автомат выдаст последовательность иероглифов «Сибирь» — это пример родился во время проведения семинара для школьников в Новосибирском академгородке:



    Третья часть, «Физическая сторона цифровой схемотехники» расписывает, как граф из логических элементов, синтезированный во второй части, раскладывается на микросхеме и превращается в чертеж в формате GDSII который собственно и отправляется на фабрику, где пекут микросхемы. В этой части также обсуждаются алгоритмы размещения и трассировки, которые будут интересны математически-ориентированным школьникам. Исследования в области автоматизации проектирования микросхем — популярная область среди бывших победителей матолимпиад.



    Вот как выглядит проект чипа после размещения и трассировки с помощью программы Synopsys IC Compiler:



    А вот эта изящная фрактальная структура — это дерево тактового сигнала внутри чипа, построенное так, чтобы тактовый сигнал приходил ко всем D-триггерам примерно в одно и то же время. Ширина «ветвей» этого дерева меняется от толстых до тонких металлических соединений на микросхеме, чтобы удовлетворить физическим ограничениям медных проводников на нанометровом уровне полупроводниковой технологии:



    А вот иллюстрация к так называемому алгоритму волновой трассировке (по английски Maze Routing — «Поиск путей в лабиринте»). Этот алгоритм использовался в ранних программах автоматизации проектирования для соединения логических элементов схемы. Алгоритм волновой трассировки настолько прост, что его может сам написать на Си, Питоне или Джаве способный старшеклассник. Это полезное упражнение для тех, кто собирается в будущем писать гораздо более сложные алгоритмы, например для будущих трехмерных чипов:



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

    Всего два месяца назад вышла книжка Designing Video Game Hardware in Verilog by Steven Hugg, в которой описывается проектирование схем игр на Verilog, с реализацией в ПЛИС, подключенной к дисплею VGA. Речь идет о видеоиграх 1970-х и 1980-х, с генерацией развертки, фрейм-буфером, спрайтами. Atari пинг-понг, space wars, танчики. Игровые автоматы для этих игр сначала, еще в 1970-х, собирали на микросхемах малой степени интеграции, потом на PAL и микроконтроллерах, в том числе Motorola 6502, которую использовали в первых Apple. В книжке Стивена Хагга также разбирается аппаратная реализация спрайтов, знакомых советским программистам и игроманам второй половины 1980-х по видеопроцессору Texas Instruments TMS9918, который стоял в японских компьютерах Yamaha MSX, импортированных в то время в советские школы.

    Книжка Хагга полезна отнюдь не только и даже не столько ностальгирующим чудакам. Это отличный набор задач для современных студентов и школьников, которые начинают изучать электронику. Так как задачи старые, но вот технологии — Verilog, logic synthesis, FPGA prototyping — новые, те же самые, которые изучают сейчас в 2018-2019 учебном году в MIT в курсе 6.111. Без простых упражнений с Verilog и ПЛИС не выросли бы инженеры, которые сейчас сидят в Санта-Кларе в Интеле, NVidia и AMD, в Купертино в Apple и в других электронных компаниях.





    Подвожу итог. Было бы хорошо, если бы сейчас некоторое количество школьных и вузовских преподавателей проверили бы вышедший курс «Как работают создатели умных наночипов», после чего направили бы на него интересующихся школьников. Потом для школьников, которые получат сертификат этого курса, можно пригласить на практический семинар с платами ПЛИС (часть из которых раздать в качестве призов за успешные проекты). Такие семинары сейчас обсуждаются в Зеленограде, Москве, есть также интерес в Сочи, Минске и других местах. В долговременной перспективе в России вырастит сообщество разработчиков чипов, которое сложилось в Кремниевой Долине, Японии, Тайване, Южной Корее, Великобритании, сейчас складывается в Шанхае и других местах. Это то, что должно существовать в каждой крупной технически продвинутой стране, и в России достаточно традиций в математике, физике и инженерных науках, чтобы поддержать такое развитие.

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

    Что вас больше всего заинтересовало?

    Поделиться публикацией

    Комментарии 20

      +7
      я 32-летний системный программист (чистый софтвер), благодаря вашим статьям заинтересовался fpga (и электроникой в целом). и пусть я уже не стану профессиональным digital design разработчиком, но теперь у меня есть интересное хобби, которое я постараюсь передать своему сыну.
        +1
        Спасибо!
          0
          А есть примеры конвертации в профессионального digital design разработчика например программиста на Java или embedded? Знаю, что есть курсы повышения квалификации в западных вузах, например: www.ucsc-extension.edu/certificate-program/technology/vlsi-engineering после которых можно идти на entry level позиции в компаниях.
            +1
            Есть примеры конверсии через промежуточные позиции в верификации, так как в SystemVerilog/UVM навыки в embedded и Java пригодятся. На курсах в UCSC в том числе, хотя это и нетипично.
              +1
              Из embedded вполне, в момент, когда ваша embedded система начинает требовать чего-то совсем специфического или аппаратной реализации какого-то алгоритма для повышения производительности. Можно, написав алгоритм, требующий реализации, прийти к его конвертации на верилог для прошивки в ПЛИС, можно заниматься верификацией чипа, который разработают по вашему ТЗ, и т.д.
              Кроме того, внутри разработки чипов время от времени случаются более радикальные смены специализации, чем переход от системного программирования к верификации.
                –1
                Из функциональных языков вполне реально.
              +2
              Думаю, 32 года не такой возраст, когда нельзя прокачать некоторые скиллы.

              К тому же Вы из относительно близкой сферы — системного программирования.
              Если бы Вы пришли из гуманитарного направления, было бы сложнее.
              И всё равно это было бы возможно.

              В общём, главное это желание, усердие, и некоторое количество времени по вечерам/выходным.

              Удачи!
              +5
              Спасибо вам за популяризацию ПЛИС. Жаль, что в вашей теме 3 комментария, а в соседних темах про политику около 500. P.S. По ссылке не дают скачать Firefox'ом.
                +4
                А тех, кто не преподаватель из ВУЗа, но имеет опыт чтения курсов о разработке под FPGA, в ревьюверы берёте? :)
                  +3
                  Да, всех кто может пройти и написать детальную критику, мы приглашаем.
                • НЛО прилетело и опубликовало эту надпись здесь
                    +2
                    А где можно скачать Designing Video Game Hardware in Verilog by Steven Hugg? Вышла еще одна любительская книжка. В общем то ничего нового, но всеже microprocessor_design_using_verilog_hdl Monte Dalrymple. Да и проблемы с кадрами на самом деле нет. Работы нет по профилю.
                      0
                      Спасибо вам за труд!
                      Как раз читаю сейчас Харрисов. Вопрос: почему в задаче про улитку в автомате Мура 3 состояния, а не 4?
                      Улитка улыбается при определенной комбинации двух предыдущих ячеек, комбинаций может быть 4…
                        0
                        Потому что это не количество комбинаций вводов, а количество состояний последовательностного конечного автомата. Разберите его работу на диаграмме состояний.
                          0
                          Спасибо, для этого примера у меня просто в голове укладывается в виде состояний либо комбинации вводов, либо состояние улитки «улыбается»\«не улыбается». Постараюсь осознать.

                          А есть ли на какой либо площадке (edx/coursera/etc) этот материал в виде курса?
                            0
                            Помимо состояния с выходом «улыбается/не улыбается», могут быть еще внутренние состояния «ожидает чего-то». В данном случае состояние S0 — это «пропускаем единицы, ожидаем нуль», состояние S1 — это «пропускаем нули, ожидаем единицу» и S2 — «улыбаемся». Если в состоянии S2 прийдет нуль, то переходим в S1, а если прийдет на выход единица — то в состояние S1:



                            *** А есть ли на какой либо площадке (edx/coursera/etc) этот материал в виде курса? ***

                            Вы про Харрисов? Харрисов на прощадке нет. А если про «Как работают создатели умных наночипов», то он по ссылкам:

                            «От транзистора до микросхемы», «Логическая сторона цифровой схемотехники» и «Физическая сторона цифровой схемотехники»
                              +2
                              спасибо, теперь понял логику состояний здесь! несколько дней эта задача мучила меня — в фоне все время крутилась)))

                              Да, я думал, возможно есть именно у этих преподавателей этот курс в удобном формате на площадках с лекциями и дз. Но я после этой книжки в любом случае посмотрю материалы курса MIT, который вы привели в статье.

                              Вообще, начал читать эту книгу с целью понять базовые концепции процессорной архитектуры, но в процесс чтения появилось желание подробно разобраться в электронике нижнего уровня. Чем и займусь — to do лист уже набрался)))))
                      +1
                      Или купить бумажную книжку от ДМК Пресс на Озоне или в Лабиринте.

                      Из этих двух магазинов, я предпочел покупать на сайте издательства ДМК Пресс. :)

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

                      Самое читаемое