Юрий Панчул
905 subscribers
62 photos
6 videos
1 file
124 links
uArch от сохи и жизнь русского украинца в Калифорнии
Download Telegram
👍12
Тезисы, сформулированнные во время распития чая, о процессе интервью, с позиции интервьирующего

В моей жизни было четыре периода, когда я активно принимал участие в интервьировании людей на работу. В 1998 для своего стартапа в области программ для проектирования микросхем, в 2010-11 для MIPS Technologies (компания среднего размера но престижная в свое время в узком кругу процессоростроителей), в 2019 для Wave Computing (хайповый стартап в хардверном AI) и сейчас для Samsung (на позиции дизайнеров графических процессоров телефонов). Я не собирался писать длинный текст, но пока я пью чай, набросаю несколько тезисов, первое, что приходит в голову:

1. Большинство текстов в интернете про поиски работы концентрируются на советах по оформлению резюме и по прохождению бихевиорального интервью. Мой персональный взгляд: настоящая борьба происходит не там. Научить правильно писать резюме можно за полчаса. А с компаниями, которые делают упор на бихевиоральное интервью, лучше вообще не связываться. Главным фокусом является два умения: умение внятно рассказать, что вы делали на предыдущих работах, и умение решать задачки.

2. По поводу резюме: оно должно быть кратким и строго по делу. Длинные резюме на восемь страниц пишут сумасшедшие. Если вам меньше 30 лет, одна страница оптимальна, потом можно две. Под каждым местом работы должно стоять достижение. Не "программировал на Си", а "разработал и реализовал алгоритм выделения регистров в компиляторе с такого то языка, учитывающий эффекты конвейера такого-то процессора". Не нужно упоминать все компании и все умения - комбинация "RTL лид блока wireless чипа в [топ-10 электронной компании]" и "умею работать с Microsoft Word" - это маразм.

Вносить в резюме нужно только то, за что вы готовы ответить на вопросы. Один соискатель написал что он программировал на языке Jovial, думая что ему просто поверят (на этом языке американские военные писали программы в старину). Соискателю не повезло: я однажды пролистал книжку по Jovial в библиотеке Стенфорда. Выражение лица соискателя, когда я задал ему вопрос про Jovial, было бесценно.

3. Рассказ о том, что вы делали на предыдущей работе, должен быть хорошо структурирован. Сначала нужно описать чип или ядро, внутри которого вы разрабатывали или верифицировали блок. Потом вам нужно нарисовать на доске (реальной или виртуальной в зуме) ключевые элементы вашего блока (интерфейсы, памяти, очереди FIFO), описать ход транзакций между ними и микроархитектурные проблемы, которые при этом возникали. Упомянуть решение проблем с таймингом и энергопотреблением, а также чем это лучше других решений. Интервьюер должен почувствовать, что вы это делали, делали с пониманием, и можете передать ваше понимание окружающим.

Здесь имеется тонкий момент: вам нельзя выдавать секреты текущего или предыдущего работодателя. К счастью, блоки процессоров или сетевых чипов в разных компаниях (например TLB MMU в процессорах или там Egress Processing в роутерах) имеют похожую структуру. Также компании часто используют открытые изобретения из академической среды (пример: предсказатель переходов TAGE). Поэтому вам достаточно плясать вокруг некоего общего знания, разлитого по всей индустрии среди понимающих людей, с небольшими вариациями. А также не упоминать никакие бенчмарки, пропускные способности, особые патентуемые находки, планы и другую конкретно секретную информацию.

4. Уровень вопросов и задачек связан с вашим опытом в резюме. Если вы свежий интерн, у которого в резюме только курсовой проект, в котором вы писали execution unit в учебном RISC-V процессоре, готовьтесь ответить про задержки и байпасы в конвейере. Если вы упоминаете в резюме FIFO или SPI протокол, готовьтесь написать перед глазами интевьюера код для простого FIFO или SPI приемника на верилоге.
👍15
Бывают соискатели из недавних студентов, которые могут рассказать словами и картинками, но не набили руку на механике писания кода на верилоге. Это плохая комбинация. Да, я знаю, что есть мнение "он понимает сложные проблемы и выучит простое кодерство за пару месяцев". Такое мнение встречается у менеджмента, особенно если студент - отличник и позитивен. Но это плохо работает во время интервью с инженерами команды (см. примечание 1).

5. Вообще, для тех кто не знает: типичное интервью в крупной электронной компании состоит из нескольких этапов: 1) рекрутер; 2) технический скрининг нанимающим менеджером или одним из опытных инженеров; 3) большое интервью в котором вы за 4-6 часов говорите с 5-8 инженерами; 4) разговор с начальником на два уровня выше и 5) обсуждение предложения. Критической является часть (3).

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

6. Для старших инженеров критично знать некое общее ноу-хау индустрии, которое все применяют, но которое слабо представлено в учебниках. Например комбинация из конвейера, очереди FIFO и кредитного счетчика широко применяется в сетевых чипах для обработки потока фрагментов пакетов, и в графических чипах для обработки потоков треугольников. Но в учебниках это описано очень слабо: я видел это в контексте сетевого софтвера, а также в фрагменте лекции в Принстоне. Если инженер работал в команде, которая это однозначно применяет, например в группе проектирования системы на кристалле в Apple, то его можно 1) сначала спросить "что такое credit based flow control"? 2) если он ответит "нет" то найти другую похожую область; 3) а если он ответит "да" то задать одну из многих задачек на эту тему.

7. С задачками на интервью есть такая проблема, что любой ваш вопрос может быть передан на вебсайт типа glassdoor, где люди делятся, чему из спрашивали на интервью. Против этого есть противоядие - делать вариации задачек. Например есть широкоизвестный интервьюшный вопрос "напишите код на верилоге, который принимает числа по битам (один бит каждый такт) и определяет, делится ли это число на три (длина числа не ограничивается - оно может быть хоть миллиард бит). Так как этот вопрос стоит на таких сайтах стоит сто лет, то в чистом виде его спрашивать нельзя: нужно делать вариацию, например 1) биты могут приходить как от старшего к младшему, так и от младшего к старшему или 2) определяте не остаток от деления на 3, а остаток от деления на 7. Итд.

В заключение добавлю, что вы можете познать все что я выше описал, на практике: если вы проектировщик микросхем на уровне регистровых передач, хотите работать в интересном проекте в GPU и (увы, это ограничение) имеете право на работу в США, то присылайте мне ваше резюме.

Примечание 1. Существует разрыв между уровнем базовых курсов в университетах и уровнем навыков, требуемых для успешной работы в компаниях. Если студент не набивал руку на учебных проектах сам, а только сдавал зачеты по картинкам из учебника и простейшим упражнениям, у него будет проблема. Столкнувшись с задачей чуть дальше учебника, студент может обнаружить, что то, что ему казалось простым (пример: gearbox, конвертор ширины шины c valid/ready интерфейсами на входе и выходе), вдруг стало сложным. Если он при этом нетвердо владеет механикой верилога типа блокирующих и неблокирующих присваиваний, параметризацией итд, то у него будут глюки и он будет биться как рыба об лед, наслаивать говнокод и заплаты, отлаживать это бесконечно, надеяться, что кто-то исправит за него итд. Этот этап нужно пройти в учебных проектах, не на производстве. Да и всякие алгоритмы замещения кэша и прочее из картинок в учебнике тогда будут выглядеть по другому.


https://habr.com/ru/post/673916/
🔥10👍1😁1
Господа! Я решил провести отпуск на озере Иссык-Куль. Это мой незакрытый гештальт с тех пор, как я прочел "Легенду озера Иссык-Куль" Ильфа и Петрова. При этом, чтобы совместить приятное с полезным, я договорился с Американским Университетом в Центральной Азии и Siemens Electronic Design Automation GmbH провести трехдневный семинар в Бишкеке 1-3 августа. Если еще не решили, куда ехать в отпуск - присоединяйтесь.
О чем пойдет речь:

Как показывает пример Южной Кореи и Тайваня, для небольшой страны очень выгодно интегрироваться в международную экосистему проектирования и производства микроэлектронных чипов. Каким же образом может интегрироваться страна, у которой есть опыт разработки программного обеспечения, но нет сообщества разработчиков микросхем? Она может создать группу по аутсорсу так называемой функциональной верификации. Эта группа технологий очень востребована и имеет реалистичный порог входа. Японская компания Seiko Epson создала такую группу на Филиппинах, корейская компания SK Hynix создала такую компанию в Беларуси.

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

Это всё не абстрактные рассуждения. Американский Университет в Центральной Азии и Siemens Electronic Design Automation GmbH решили провести 1-3 августа пилотный семинар в Бишкеке, чтобы: 1) выяснить интерес у бизнесменов Кыргызстана к такого рода проектам и 2) показать студентам бишкекских вузов и коледжей, как работать с верилогом на ПЛИС, чтобы понять, пойдет ли им эта тематика. Участники из других стран тоже могут приехать.

Детали и как зарегистрироваться - https://habr.com/ru/post/675564/
🔥18👏3😁1
Выложил часть материалов недавнего семинара «Модели бизнеса и основы технологий микроэлектроники для Центральной Азии» на сайт https://ddvca.com - Digital Design & Verification in Central Asia. Семинар проходил в Американском Университете Центральной Азии - учреждении, новый кампус которого в свое время прилетал открывать лично государственный секретарь США Джон Керри. Вместе с АУЦА семинар проводил Siemens EDA - отделение компании Siemens по автоматизации проектирования микросхем, которое ранее было топ-3 EDA компанией Mentor Graphics.

Среди выложенных материалов:

1. Информацию где скачать новую версию пакета v1.1.

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

3. Короткие видео с семинара.

4. Фотографии с семинара.

Я собираюсь также выложить:

5. Список рекомендуемой литературы.

6. Объявление о поиске ведущего преподавателя по проектированию и верификации цифровых схем в Американском Университете в Центральной Азии (АУЦА).

7. Сообщение от Siemens EDA как они могут помочь в формировании группы компетенции в АУЦА и других университетах и компаниях региона.

8. Информацию о пректах участников семинара (в Кыргызстане уже есть инженеры, которые занимались FPGA и ASIC design).

9. Полную запись лекций семинара.

О слайдах:

https://ddvca.com/2022/08/15/slides/

Разыскиваются коллеги для совместной разработки слайдов для следующих семинаров
August 15, 2022 By Yuri Panchul

Вы можете найти слайды, которые я (Юрий Панчул) использовал для лекций в Бишкеке в августе 2022 года здесь:

HDL, RTL and FPGA: Part 1. The Synthesis of Combinational logic
HDL, RTL and FPGA: Part 2. Sequential logic, FSM and Pipelining

Я начал разрабатывать эти слайды еще в 2014 году и использовал их версии для разнообразных семинаров в Калифорнии, России, Украине, Казахстане и теперь в Кыргызстане.

К сожалению, эти слайды не идеальны. В частности, в них есть ссылки на примеры, которые готовились для предыдущих семинаров, совместно с ВШЭ МИЭМ, казанским Иннополисом и другими вузами. В старых примерах используется синтаксис Verilog-2001, при том, что в новых примерах я перешел на SystemVerilog 1800-2017. В слайды стоило бы ввести больше информации о новых примерах (например с обработкой звука), а также объяснить детали симуляции (гонки / race conditions) и использования новых типов (не все тонкие различия между wire, reg и logic описываются даже в продвинутых материалах на эту тему).

Но в каждой проблеме скрывается возможность. Я готов помогать преподавателям, которые готовы помочь мне в переработке слайдов и создании новых учебных материалов, превосходящих по качеству слайды от MIT 6.111 и слайды от Харрис & Харрис. В новые слайды можно внести не только механизм симуляции (например используя книгу Дональда Томаса как источник), но и например использование открытого пакета Open Lane для проектирования ASIC-ов, более детальное обсуждение конвейера, а также материалы по двойным буферам (например из Digital Design: A Systems Approach 1st Edition by William James Dally, R. Curtis Harting), FIFO, арбитрам (см. сайт RTLery.com и статью Arbiters: Design Ideas and Coding Styles by Matt Weber), а также кредитным счетчикам (см. дискуссию в комментах). Кроме этого, есть идеи и для слайдов по процессорам, дополняющих слайды из Харрис & Харрис.

Сотрудничество может выглядеть в виде еженедельных созвонов по Zoom по воскресеньям в 9 утра по Калифорнии и соотвественно 22.00 по Бишкеку, во время которых мы можем обсуждать слайды и примеры. Если вас это интересует, пришлите мне емейл на yuri@panchul.com с копией на yuri.panchul@gmail.com. Слайды такого рода можно использовать как для будущих семинаров (не только в Кыргызстане, но и в Казахстане, Узбекистане или других местах), так и для ваших университетских курсов, а также (если вы не преподаватель), для повышения вашей квалификации как инженера (да и я могу от вас чему-нибудь научиться).
👍133
Фотки с семинара «Модели бизнеса и основы технологий микроэлектроники для Центральной Азии»". Больше информации на https://ddvca.com/
👍1