Разыскиваются желающие спасти мировой интернет от короновируса

Кто хочет поработать? Сегодня на мясокомбинат, погрузку угля и уборку конюшень нарядов не прислали. Но есть работа, которая помогает Человечеству бороться с одним из последствий короновируса — резким увеличением сетевого траффика. Траффик увеличился из-за того, что миллионы труженников хайтека перешли на удаленку. Это увеличило не только нагрузку через Zoom и VNC серверы, но и стриминг сериалов и других художественных фильмов.

Так что же я предлагаю? Как знают некоторые из моих читателей, сейчас я проектирую блок в новом чипе для high-end роутеров Juniper Networks. Эти роутеры связывают города, интернет-сервис провайдеров и облака крупных компаний. В нашем отделе под названием Silicon-USA есть восемь открытых позиций, на должности RTL Design, RTL Verification, Physical Design, уровня Staff и Senior Staff.

Человек для одной из этих позиций нужен мне как коллега лично — не хватает верификатора для проектируемого мною блока. Вы можете просто сходить на сайт компании и отправить свое резюме туда ( https://careers.juniper.net/careers/careers/#/ ). Или вы можете прислать ваше резюме мне, и я буду агитировать за вас менеджмент. Агитация от меня может быть несколько эффективнее, чем просто послать резюме в компанию.

Если вы хотите действовать через меня, то у меня есть дополнительное условие. Так как после карантина я буду сидеть с вами рядом, а до его окончания общаться через Microsoft Teams и отлаживать мой блок вместе с вашим верификационным окружением, то я должен быть уверен что вы знаете основы RTL, SV, UVM, умеете решать встающие по ходу задачки и пишете код аккуратно. Поэтому я предлагаю вам написать и выставить публично на GitHub решение известного в электронной индустрии вопроса во время интервью — дизайна re-order buffer. Постановка задачи описана на вот этом сайте (сайт не имеет никакого отношения ни ко мне, ни к компании): https://chipress.co/2019/08/12/how-to-design-a-memory-controller-with-in-order-read-responses/.

Я ожидаю от вас RTL код для контроллера, модель памяти с переменной латентностью и внеочередным возвращением данных, а также UVM testbench, с этим работающую. Плюс простую микроархитектурную диаграмму в draw.io или Lucidchart и временные диаграммы симуляции (в любом симуляторе — DVE, SimVision, Icarus Verilog, ModelSim), показывающие что ваша конструкция работает. Плюс синтез на чем угодно (Synopsys DC, Altera Quartus, Xilinx Vivado), с отчетом по таймингу. Такие упражнения удобно демонстрировать на https://www.edaplayground.com/ где есть симуляция и синтез.

UPD: Если вы крутой верификатор, но не пишете RTL, вы можете вместо RTL написать cycle-accurate модель контроллера и ничего не синтезировать. Если вы крутой RTL-щик и у вас нулевое понимание SV/UVM, можете в качестве testbench написать код в стиле 1990-х годов, безо всяких транзакций и классов. В последнем случае я вам дам рекомендацию, но вы будете вероятно интервьироваться не в мою непосредственную группу, а в соседнюю.

Мои емейлы:

Иллюстрация к задачке на chipress.co:

Вот список позиций. Территориально работа в Саннивейл, Калифорния и Дарем, Северная Каролина:

Благодарю за внимание!