Пайка плавно перешла в Верилог и обсуждение работ в электронной промышленности

f2936c26a371211a0c38821e0a9de666.jpg

В воскресенье состоялась встреча в хакерском клубе Hacker Dojo в Silicon Valley. Встреча была анонсирована в украинской фейсбук-группе U4U Uniting for Ukraine USA и русскоязычной группе Russian Speaking US QA Network. Заявленная тема была «Учимся паять», но, так как участники спрашивали «и какое это имеет отношение к трудоустройству», то под конец я показал:

  1. Как компроненты, к которым мы паяли хедеры (микрофоны и аудио декодеры) — применяются в упражнениях c FPGA платами.

  2. К каким типам работ ведут упражнения на FPGA платах: проектировщик логики блоков микросхем (RTL Design Engineer), тестировщик/верификатор (Design Verification Engineer) и инженер для работы с клиентами (Application Engineer).

Вообще я провожу в этом клубе встречи по языку описания аппаратуры SystemVerilog. На встречи ходят люди, которые хотят дополнить или сместить карьеру в эту область. Они обучаются, помогая мне в разработке учебных материалов. Материалы я использую на семинарах в разных странах (в этом году это был Азербайджан, в прошлом году — Грузия, в позапрошлом — Киргизия).

Кроме этого, так совпало, что в субботу нашему сообществу Verilog Meetup одобрили заявку на участие в большой выставке самоделкиных Maker Faire в Вальехо, Калифорния. Для этого и других планируемых мероприятий нужно не только напаять хедеры к сотне компонент, но и подготовить большое количество демонстраций с FPGA платами. Подготовка таких демо с ревью от уже опытных инженеров — это отличный способ набить руку в основах верилога. Помимо адаптации примеров к платам разного типа (для этого нужна в основном смекалка и аккуратность), есть и задачи уровня собеседования на работу в электронные компании (демонстрации микроархитектурных приемов с конвейерами и очередями FIFO). Если кто хочет в этом участвовать — заходите в любое воскресенье в 11 утра в Hacker Dojo, и мы с вами этим займемся.

0612a0dfc4c54fc9c546611b076f1233.png

Но вернемся в прошедшей встрече по пайке. На ней было около пятнадцати человек, причем из знакомых мест: киевский мехмат и КПИ, казанский Иннополис, Москва, Гугл. Главным специалистом по пайке был американец Эндрю, другим спецом был мой приятель Алекс, родом из белорусского БГУИРа, который сейчас проектирует блок работы с кэшем (load-store unit) в процессоре AMD.

Я тоже помогал процессу, правда у меня вышел косяк: только под конец я обнаружил, что на одном из паяльников, Pinecil — открутился винтик, и жало постоянно сдвигалось вниз, отчего паяльник то паял, то не паял.

После этого мы зашли в другую комнату, где я показал, как используются компоненты, хедеры к которым мы припаяли:

Разумеется участников заинтересовало, для какого рода работ нужна тренировка на FPGA платах.

Сперва скажу, что лабы на FPGA — это не экзотика, они используются в Америке давно и сейчас проникли даже в провинцию типа Монтаны и техникумы типа San Francisco City College. Самый крутой курс такого рода — это курс MIT 6.111 Массачуссетского Технологического Института. Крутость этого курса не в материалах — слайды у него достаточно банальны -, а в студенческих проектах по обработке звука, видео, графики итд — см. Memorable Project по такой ссылке.

В России продвижением верилога и ПЛИС в вузовское образование занимается Школа Синтеза Цифровых Схем, с которой кооперируются более 20 университетов: МИЭТ, МИЭМ, ИТМО, Иннополис итд — от Москвы и Питера до Севастополя и Алтая.

На Украине тоже есть например преподаватель-активист Евгений Короткий, который сначала продвигал ASIC и FPGA в Киевском Политехническом Институте, а потом заявил, что в КПИ к студентам предъявляются недостаточно высокие требования, и ушел делать то же самое в Киевскую Школу Экономики, причем, в духе евроинтеграции, в партнерстве c швейцарским политехом ETH Zürich.

При этом что россияне, что Короткий, что ETH Zürich используют вводный учебник Харрис & Харрис, который я тоже рекомендую: Digital Design and Computer Architecture, RISC-V Edition by David Harris and Sarah Harris. В русском переводе Цифровая Схемотехника и Архитектура Компьютера. При этом у Короткого сдвинут акцент в область аналоговой и mixed signal электроники, а в российской школе — в область микроархитектуры и верификации. Харрис & Харрис действительно идет не очень глубоко в микроархитектуру, что можно компенсировать по моим рекомендациям для митапа в Маунтин-Вью.

Да, так насчет работ. Пример работы с Verilog и FPGA я приводил в заметке про преподавание FPGA на Донбассе, а именно позиция FPGA инженер в Apple:

48531c08bfcd155d629bb689578e2200.png

Переведу это в более понятную форму: непосредственно навыки с верилогом и ПЛИС/FPGA ведут к трем профессиям:

  1. Разработчик цифровых микросхем ASIC (application-specific integreated circuits) на уровне регистровых передач (register-transfer-level RTL) с использованием языка описания аппаратуры Verilog. Это массовые микросхемы, которые стоят в телефонах, бытовой тезнике, автомобилях и т.д. Названия позиций: RTL Design Engineer, Logic Design Engineer, ASIC Digital Design Engineer итд.

  2. То же самое, но для микросхем FPGA, которые используются в малосерийных приборах (например в музыкальных установках для концертов или в космической технике). Это называется FPGA Design Engineer.

  3. Тестировщика для (1) и (2), который пишет тесты и модели на языке SystemVerilog. Такая позиция называется Design Verification Engineer или сокращенно DV. В некоторых компаниях, например Blue Origin, которая использует FPGA для полетов на Луну, позиции (2) и (3) совмещены, называются типа FPGA Design & Verification Engineer.

Для митапов в Hacker Dojo, в (1) я в основном ориентируюсь на студентов, в (2) на желающих переучиться или расширить область навыков програмистов встроенных систем и микроконтроллеров, а в (3) на людей с опытом в автоматическом софтверном QA, которые хотят переучиться на вот такой специализированый хардверный QA.

Также навыки с верилогом и FPGA могут быть использованы для работы как Application Engineer, который помогает компаниям-производителям микросхем и плат обслуживать их клиентов.

В конце встречи по пайке я немного поделился техническими основами этих технологий, показал как работает синтез и конфигурация:

Теперь что я собственно хочу сейчас от посетителей митапа в Hacker Dojo. В связи с наступлением нового учебного года нужно срочно адаптировать новую версию разнообразных учебных примеров к примерно 40 платам. Потому что начинается новый учебный год и разные вузы используют разные платы: в Волгограде используют Terasic DE2–115, в Минске — Digilent Nexys4, в Сан-Паулу (Бразилия) — Tang Nano 9K, а в Найроби (Кения) — DE10-Lite.

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

Например возмем новую плату с FPGA от компании GoWin Semiconductor — Tang Mega 138K Pro.

2d11e649e9c25187aeee1719eed210ab.jpg

Для адаптации к ней примеров мне пришлось поменять четыре файла:

  1. board_specific.cst — скрипт для задания соотвествия между названиями пинов из даташита и логическими именами портов в коде на верилоге.

  2. board_specific.sdc — скрипт с командой, сообщающей программе синтеза тактовую частоту генератора на плате.

  3. board_specific.tcl — скрипт, сообщающий программе синтеза модель чипа на плате и параметры синтеза.

  4. board_specific_top.sv — wrapper, код на верилоге, который изолирует студента от специфики платы, создает экземпляр модуля lab_top и соединяет его проводами с модулями, которые получают данные от микрофона, пересылают данные на аудио-декодер и LCD дисплей.

Теперь на ней можно делать всякие студенческие упражнения, например распознование ноты звука, используя микрофон с припаяным хедером:

или синтез звука используя аудио-декодер с припаяным хедером:

Если вас интересует такая деятельность — пишите в комментариях или соцсетях (лучше всего в LinkedIn) и заходите. Это также можно делать онлайн, с совещаниями через зум.

3d8b2d554bb592fb1d2a345d85b3a91e.png

© Habrahabr.ru