Как стать автором
Обновить

Как я проходил интервью на проектировщика FPGA для космических кораблей Blue Origin

Время на прочтение6 мин
Количество просмотров14K
Всего голосов 50: ↑24 и ↓26+7
Комментарии50

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

Какая бесстыдная реклама

В чем бесстыдность? Я описал опыт и дал рекомендации как его повторить. Если хочется больше технического контента, могу добавить код для реализации интерфейса с каким-нибудь сенсором. Например вот код на верилоге для получения данных по SPI протоколу, это тот же тип задач, который решается для сбора данных на космическом корабле:

https://github.com/DigitalDesignSchool/ce2020labs/blob/master/day_2/common/pmod_mic3_spi_receiver.v

`include "config.vh"

module pmod_mic3_spi_receiver
(
    input             clock,
    input             reset,
    output            cs,
    output            sck,
    input             sdo,
    output reg [15:0] value
);

    reg [ 6:0] cnt;
    reg [15:0] shift;

    always @ (posedge clock or posedge reset)
    begin
        if (reset)
            cnt <= 7'b100;
        else
            cnt <= cnt + 7'b1;
    end

    assign sck = ~ cnt [1];
    assign cs  =   cnt [6];

    wire sample_bit = ( cs == 1'b0 && cnt [1:0] == 2'b11 );
    wire value_done = ( cnt [6:0] == 7'b0 );

    always @ (posedge clock or posedge reset)
    begin
        if (reset)
        begin
            shift <= 16'h0000;
            value <= 16'h0000;
        end
        else if (sample_bit)
        begin
            shift <= (shift << 1) | sdo;
        end
        else if (value_done)
        begin
            value <= shift;
        end
    end

endmodule

Но с точки зрения чисто ПЛИС-оводства вы могли бы ответить на половину вопросов на интервью в Blue Origin, если бы просто прошли Сколковскую Школу Синтеза Цифровых Схем, внимательно выполняя все задачки, а также получили бы у Александра Биленко бесплатную FPGA плату и поупражнялись бы с нею дома.

Это на столько банально что уже даже не смешно

Вы разбираетесь в задачах на собеседованиях по проектированию на уровне регистровых передач используя языки описания аппаратуры? Хотите об этом поговорить?

Знаете, у меня тоже есть мечта. Однажды я хочу взять процессор КР580ВМ80 и реализовать (на плисине например) обвязку, дабы получился современный клон компьютера моего детства "Корвет 8020". Даже уже куплены и плис и память и анализатор. Но к моему огромному сожалению не имею свободного времени. А может и ещё чего. И я искренне завидую людям хорошо разбирающимся в электронике. Вы можете писать восхитительные статьи. Вдохновлять. А вместо этого восхваляете некого Александра Биленко. И давайте, пожалуйста закончим дискуссию.

Я Александра Биленко не восхваляю, он просто организатор ChipEXPO и административный контакт для данного мероприятия. Я так и не понял, в чем ваша претензия. Мероприятие тренирует, причем бесплатно, молодых людей олимпиадного типа и студентов на решение задачек с ПЛИС. Не унылых, типа ностальгии за КР580ИК80, а нормальных, за которые платят зарплату в Blue Origin, Apple, Intel FPGA (есть отделение в Москве и Нижнем Новгороде), Syntacore итд итп.

Ну какие претензии, что вы! Читаешь статью, ожидаешь чудес, а тут внезапный поворот .. Оказываемся это всего лишь реклама. И всё вступление про космос - выглядит как нелепая вуаль.

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

Вы понимаете что только что написали, что потом наши молодые русские студенты, выпускники наших лучших вузов, краснодипломники и краснодипломницы, вместо Роскосома уедут работать в Blue Origin или Apple, способные предложить несравнимые зарплаты и условия работы (не говоря уже про климат Сан-Хосе или штата Вашингтон)? Тем самым вы способствуете перетоку наших лучших мозгов, нашего будущего в США и прочие западные страны, к нашим вероятным противникам и вполне невероятным конкурентам! Кто будет Ангару делать, русскую космическую станцию, базу на луне для добычи гелия-3? Кому вы служите?! ;)

В Blue Origin им прийдется перехать в штат Вашингтон, там все время идет дождь и сыро, с девушками трудно знакомиться. В Купертино / Apple климат получше, но с русскими девушками еще хуже, вот вам демография Купертино:

http://en.wikipedia.org/wiki/Cupertino,_California#Demographics

The racial makeup of Cupertino was 18,270 (31.3%) White, 344 (0.6%) Black American, 117 (0.2%) American Indian, 36,895 (63.3%) Asian (28.1% Chinese, 22.6% Indian, 4.6% Korean, 3.3% Japanese, 1.3% Vietnamese, 0.9% Filipino, 0.4% Pakistani, 0.1% Thai, 0.1% Bangladeshi), 54 (0.1%) Pacific Islander, 670 (1.1%) from other races, and 1,952 (3.3%) from two or more races. Hispanic or Latino of any race were 2,113 persons (3.6%); 2.4% of Cupertino is Mexican.

То есть то, что среди молодых инженеров могут быть девушки вполне традиционной ориентации, и они могут не только русских искать - вы это даже не рассматриваете? Какая дискриминация! Впрочем на вопрос про урон обороноспособности России от таких действий вы так и не ответили. Как гражданин США вы наверно имеете на это причины.

Но на счастье патриотов консульство США в России де факто не работает и даже наидостойнейший кандидат не сможет получить рабочую визу в США. Так что у лучших из лучших все-равно выбор или в роскосмос с зп от 60 тыс. за плюсы (https://hh.ru/vacancy/45189245?from=employer) в Москве или в Финтех, где зарплаты уже очень хорошие, но амбиций по освоению космоса нет.

Если бы я был молодым россиянином, я бы устроился в российскую компанию типа Syntacore интерном:

https://syntacore.com/page/company/careers

Микроархитектурно out-of-order процессорное ядро интереснее, чем glue logic для сбора данных с датчиков в blue origin.

Насчёт зарплат вы имейте в виду, что в Америке более высокие цены на рент и недвижимость. В Silicon Valley рент маленькой квартирки будет вам обходиться в $2500 в месяц (почти 200 тыс рублей). В Кент, Вашингтон где находится Blue Origin, конечно поменьше ($1500-$1800) но там с культурой не очень - Третьяковской Галере и Большого Театра нет.

А детские садики вообще - $1000 в месяц в Вашингтоне и $1800 в месяц в Silicon Valley

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

Есть конечно в России города сильно дешевле для жизни, местами жилье чуть-ли не даром дают, но там с культурой и культурной публикой не очень - по вечерам могут и театрально полоснуть, если морда слишком интеллигентная.

В Bay Area в дешевых городах тоже опасно. В East Palo Alto (находится через дорогу от Palo Alto, дорогого города в котором Стенфорд) полицейские (по крайней мере несколько лет назад) по одному не ходили , он был рекордсменом по убийствам. В Сан-Франциско есть места в котором на асфальте лежат героиновые наркоманы и колятся средь бела дня на глазах у публики и даже полицейских. Окленд - столица афро-американских бунтов, там тоже стремно местами.

это правильно, и статья нормальная, fyi в новой англии спокойнее и интереснее (местами)

НЛО прилетело и опубликовало эту надпись здесь

Знаете, рядом со штаб-квартирой SpaceX в Лос-Анжелесе на самом деле много всякой чернухи. Вот я сфоткал как люди живут в палатках под фривеем:

да и серость бывает - вот я снял Лос-Анжелес с поезда:

И что? Кто-то из краснодипломников все равно уедет.

По вашему лучше ничему не учить, пусть лаптем щи хлебают здесь, с низкой квалификацией?

Мне по работе пришлось писать эмуляцию 74S481. Увлекательное занятие было :) Особенно писать компилятор, чтобы проверить все функции а не только существующую программу.

Кому понадобились bit slice процессоры в 21 веке? Или вы это делали в 1970 годы?

На базе 74S481 построено не мало модулей вот этой штуки AN/TPQ-37, например. Эти радары а так же их производные до сих пор "цветут и пахнут". К сожалению эти процессоры начали выходить из строя. Новых уже давно не выпускают. Одно из решений проблемы - эмуляция на ПЛИС.

Да, у меня был похожий опыт в 1991 году - писал симулятор и кросс-среду разработки на PC для транзисторного (!) бортового компьютера Орбита-20/700 который использовался на старых истребителях. Военные консервативны, им не нужно новую модель телефона к каждой выставке в Лас-Вегасе выпускать.

Прошу прощения за тупые вопросы, но:

  1. Для чего cnt после сброса задается значение b001?

  2. Ваш модуль не выдаёт наружу, что обновились данные. Или это просто пример?

  3. Чем плох sv? Уже давно quartus и ise поддерживают и очень хорошо кушают system verilog.

  4. Для чего вводятся дополнительные линии sample_bit и value_done, если комбинаторику, на мой взгляд, информативней сразу в условии написать?

Спасибо.

Это пример, который я писал ещё в 2014 году для датчика освещения ALS, потом просто перенес для микрофона. Тогда quartus не поддерживал SV. Я также делал учебные примеры совместимые с Icarus Verilog, а он SV стал поддерживать только частями в последнее время.

Почему 100 - я уже не помню,, может для красоты демо на waveform при симуляции.

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

4 - чтобы показать смысл условия. Именованные сигналы - форма комментария.

На sv я перешёл ещё на quartus 6, это был 2006...2007 год.

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

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

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

Что касается SV, а что вы хотите внести в модуль из SV? тип logic? А вы в курсе о разницы семантики в случаях "logic a = b" и "wire a = b"?

Почему я в 2010 году стал использовать тип logic, а потом вернул все взад к reg и wire:

module with_logic;
    logic a;
    logic b = a;
    initial
    begin
        $display ("%m %0d a=%b b=%b", $time, a, b);
        a <= 1;
        $display ("%m %0d a=%b b=%b", $time, a, b);
        #1
        a <= 0;
        $display ("%m %0d a=%b b=%b", $time, a, b);
        #1
        $display ("%m %0d a=%b b=%b", $time, a, b);
        #1
        $finish;
    end
endmodule
module with_reg_and_wire;
    reg  a;
    wire b = a;
    initial
    begin
        $display ("%m %0d a=%b b=%b", $time, a, b);
        a <= 1;
        $display ("%m %0d a=%b b=%b", $time, a, b);
        #1
        a <= 0;
        $display ("%m %0d a=%b b=%b", $time, a, b);
        #1
        $display ("%m %0d a=%b b=%b", $time, a, b);
        #1
        $finish;
    end
endmodule

Chronologic VCS simulator copyright 1991-2016
Compiler version L-2016.06-SP2; Runtime version L-2016.06-SP2;  Nov 13 14:58 2017
with_logic 0 a=x b=x
with_logic 0 a=x b=x
with_logic 1 a=1 b=x
with_logic 2 a=0 b=x
with_reg_and_wire 0 a=x b=x
with_reg_and_wire 0 a=x b=x
with_reg_and_wire 1 a=1 b=1
with_reg_and_wire 2 a=0 b=0
ncverilog: 15.10-s014: (c) Copyright 1995-2016 Cadence Design Systems, Inc.
ncsim: *W,DSEM2009: This SystemVerilog design is simulated as per IEEE 1800-2009 SystemVerilog simulation semantics. Use -disable_sem2009 option for turning off SV 2009 simulation semantics.
with_logic 0 a=x b=x
with_logic 0 a=x b=x
with_logic 1 a=1 b=x
with_logic 2 a=0 b=x
with_reg_and_wire 0 a=x b=x
with_reg_and_wire 0 a=x b=x
with_reg_and_wire 1 a=1 b=1
with_reg_and_wire 2 a=0 b=0

Возможно, в бесплатной не было поддержки, не знаю, т.к. пользовался коммерческой. На сколько помню, отличие коммерческой от бесплатной - не были доступны старшие камни и нельзя было загрузить проект во внешнюю флешку, только sof. Остальное, вроде, было одинаково.

Не logic-ом единым интересен sv.

Но и его нужно уметь готовить) вернее, понимать.

А вы в курсе о разницы семантики в случаях "logic a = b" и "wire a = b"?

:)

Почему я в 2010 году стал использовать тип logic, а потом вернул все взад к reg и wire:

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

Так Вы из-за logic-reg-wire вернулись к verilog?

Я не вернулся к verilog, только к wire, и то местами. Я использую SV, более того, я был при создании SV. Я в 2001-2003 работал в Synopsys в группе VCS и лично знаком со всеми людьми, которые стояли у истоков SystemVerilog - как из Superlog, так и из Vera.

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

Поэтому все примеры должны идти с бесплатными версиями Icarus Verilog, ModelSim, Vivado, Quartus.

Квартус включил в бесплатную версию поддержку SV в бесплатной Questa только месяц назад (в версии Lite 21.1 датированной от марта, но фактически вышедшей в октябре). До этого шел ModelSim без SV. Icarus включил элементы sv тоже недавно.

В принципе школьники-студенты могут использовать edaplayground и работать с SV там, но для этого им нужен коопоративный емейл.

Ну а как бы вы переписали пример выше на SV (ну кроме параметризации - она была еще до SV)?

Понятно. Не знал. Думал, что для обучения лицензия включала поддержку sv.

Да и школьникам будет сложновато понимать sv. С другой стороны и verilog не всем даётся)

То, что Вы обучаете школьников и студентов - это большая и очень хорошая работа. Моё уважение.

А модуль spi я когда-то делал с интерфейсами, чтобы удобней было верифицировать (с помощью system), также при отладке сигналы упорядочены, да и при имплементации удобно шины смотреть.

Спасибо за ответы.

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

Подскажите пожалуйста, а как Вы планировали пройти security screening?, если к аэрокосмической промышленности в USA (да и в других странах) допущены только граждане и то, не все. Пройти скрининг без гражданства просто банально невозможно.

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

Я гражданин США, это был первый вопрос рекрутерши собственно. На самом деле русские есть и в NASA, и даже в DARPA.

Сколково при том, что я уже больше 10 лет участвую в российских образовательных программах. Это типа мое хобби, которое началось после того, как я приехал в Москву в 2011 году вместе с VP Sales MIPS Technologies, походил по вузам и увидел всякие дыры в программах.

Да, хорошо иметь гражданство... Я как-то облизывался на SpaceX, прочитал про секьюрити скрининг и успокоился.

А какую именно позицию вы там хотели?

Хотелось поискать что-то в области "местного" IT. Управление рабочими местами, безопасность рабочих мест. Но, я не смотрел конкретные вакансии - стоило только прочитать, что не-граждан не берут, и даже не стал открывать.

Ой, тогда зачем вам понадобился именно SpaceX? Одноклассникам визитку показывать? Есть столько хороших компаний. В SpaceX имеет смысл идти если вы конкретно инженер ракетных двигателей скажем. В других случаях я не вижу смысла. Ощущение сопричастности к космосу рядом? А оно будет долго?

У вас однобокое представление о SpaceX - начнем с того, что они - разработчики, производители и операторы самого большого "флота" серверов орбитального базирования. Так как их политика - все что можно делать in house - то и работы там по этому фронту хоть отбавляй. ну и дальше по списку - системы космической навигации, системы жизнедеятельности, скафандры, проектирование и испытание совершенно нового оборудования типа того же Старшипа, а не бесконечная эксплуатация королевской семерки. Они сами признавались что любят нанимать кодеров из геймдева - там похоже схожие задачи.

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

Вторая половина статьи вызвала диссонанс). Она как минимум была неожиданной.

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

Отличная статья, спасибо!

Не слушайте злопыхателей.

Опрос интересный ;)

Я то думаю откуда мне ваша фамилия знакома... А это ведь вы Радулову в ЖЖ доставали предложениями руки и сердца ?

Да, Наталья вдохновляла меня на творчество. А какой у вас ник в ЖЖ? Вы читали мой рассказик "Радулова встречает тракториста"?

... "И что я делаю в этой дыре", - понеслись мысли Радуловой, - "почему я не в Лондоне, не в Париже, с обходительными, вежливыми иностранцами. Почему в русской провинции такая нехватка достойных мужчин? Мужчин категории A мало, причем они выбирают женщин категории B, мужчины категории B выбирают женщин категории C. А что делать нам, женщинам категории A?" ...

Вот он - https://panchul.livejournal.com/252700.html

Всем, у кого есть немножко свободного времени, прежде чем плюсовать и минусовать, очень рекомендую коротенький рассказ О Генри «Среди текста» (тыц).
Классика не стареет!

:-)

Немного смутило, что в космонавтике используются в том числе ПЛИС - по идее ASIC выиграет у ПЛИС по всем трём параметрам "площадь-потребление-быстродействие", уступив при этом только в стоимости, но вроде как про стоимость в контексте космоса говорить особо не приходится.

Допускаю, что использование ПЛИС положительно сказывается на ремонтопригодности (нельзя заложить всё возможное и невозможное в ASIC, на ПЛИС проще переконфигурировать интерфейсы). Но в любом случае в отношении космоса речь наверняка идёт о каких-то специализированных радиационно-стойких ПЛИС, с которыми обычная публика и не знакома.

Им нужно интегрировать сигналы от десятков тысяч датчиков и делать много glue logic для соответствующего количества микроконтроллеров. FPGA для этого достаточны. Делать для каждого случая ASIC экономически неэффективно даже для безоса, так как начальный платеж для коммерческого ASIC-а - это сотни тысяч долларов минимум (для high-end ,миллионы), и даже для shuttle это десятки тысяч.

Ремонтопригодность, да. И радиационно-устлйчивые варианты, да.

Сейчас бьюсь над переносом функций OpenCV в FPGA, Xilinx VitisHLS, машинное зрение в реальном времени, спрашивать не у кого, школы и курсы не помогут. Работа с железками тяжёлое и неблагодарное занятие. Хотите денег, идите в фронтенд.

Если эта школа заточена на Альтеру(Интел), а они догоняющие, то бесплатная плата не нужна.

Эта школа заточена на будущих проектировщиков ASIC-ов, в частности далее будут занятия по микроархитектуре процессоров, и будет занятие в ASIC flow на тулах Genus и Innovous, с синтезом для ASIC простейшего микропроцессорного ядра, которое до этого будет отлаживаться на FPGA.

То есть FPGA используется как тренажер. Поэтому кто догоняющие по топ-производительности топ-FPGA (Altera и Xilinx) неважно. Главное чтобы плата была дешевле, а синтез работал быстрее (Quartus работает быстрее чем Vivado).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории