Привет, Хабр! Меня зовут Юрий Гололобов, я старший инженер по разработке СнК в компании YADRO. В этой статье я расскажу, как post-silicon инженеры заставляют работать готовые процессоры в кремнии и что делать, если они «не заводятся».

Дисклеймер: материал рассчитан на тех, кто уже немного знаком с этапами создания чипа (архитектура, RTL, симуляция). Если вы студент, джун-верификатор или просто интересуетесь работой над процессорами — вам сюда.
Представьте, что после длительного проектирования и симуляций вы, наконец, получили первые образцы нового процессора. Они лежат у вас на столе — долгожданные, блестящие, размером с ноготь. Самый волнительный вопрос: а работают ли? На него должна ответить post-silicon верификация.
Все предыдущие этапы верификации относятся к pre-silicon верификации — это как проверка чертежей космического корабля в виртуальной реальности. Post-silicon верификация — это когда вы сажаете в реальный корабль реального пилота и говорите: «Поехали!». Этот этап отделяет проект от продукта.
Часто post-si путают с «тестированием железа», но это понятие гораздо шире. Pre-si верификация определяет, соответствует ли модель спецификации, а post-si верификация отвечает на другие вопросы. Далее я разберу эти вопросы и ключевые задачи этого этапа в целом.
Соответствует ли физический кремний модели и спецификации? Здесь проверяют не абстрактную логику, а конкретный кристалл, прошедший сотни производственных этапов на фабрике. Оценивается:
Целостность и время прихода сигналов (timing). Уложились ли все пути в реальные задержки с учетом паразитных емкостей, сопротивлений и разброса параметров (process variation)? Не появились ли критичные пути (critical paths), которых не было в моделях?
Аналоговые характеристики и целостность сигналов (signal/power Integrity). Чисты ли сигналы на высокоскоростных интерфейсах (PCIe, DDR)? Нет ли чрезмерных выбросов (overshoot), помех (crosstalk) и просадок напряжения (voltage droop) на шинах питания, которые могут привести к сбоям?
Функциональность на граничных условиях. Работают ли все заявленные частоты (Fmax) и низкие режимы питания (Pmin) на реальном кристалле, а не только в симуляции с идеальными моделями ячеек?
Корректность работы встроенных аналоговых блоков. Исправна ли ФАПЧ (фазовая автоподстройка частоты, PLL), генераторы опорного напряжения, схемы термисторов для контроля температуры?
Будет ли чип стабильно работать в реальном мире при разных температурах, напряжениях и в составе системы? Здесь создают экстремальные, но предусмотренные спецификацией условия: подают минимальное и максимальное напряжение (Vmin/Vmax-тесты), помещают кристалл в термокамеру (thermal chamber) для проверки на холоде и жаре, гоняют стресс-тесты, имитирующие пиковые нагрузки всех блоков одновременно (корнер-кейсы взаимодействия).
Где спрятались ошибки, которые смогли проскочить через все симуляции? Именно на кремнии проявляются коварные кросс-корнерные дефекты, которые не попадали ни в один проверочный сценарий pre-si. Классические примеры:
Электромиграция и нагрев. В симуляции блок PCIe работал идеально. На кристалле под долгой пиковой нагрузкой начинается локальный перегрев из-за плотной компоновки, дорожки питания деградируют, и связь падает через 20 минут работы. В симуляции не было реальной тепловой карты и физических моделей деградации.
Аналогово-цифровые взаимодействия. Шум от мощного цифрового ядра (например, GPU) просачивается в чувствительный аналоговый блок ФАПЧ (фазовой автоподстройки частоты) системной шины, вызывая джиттер, который «съедает» запас по времени (timing margin) и приводит к редким ошибкам в памяти. В pre-si эти блоки часто симулируются раздельно или с упрощенными моделями помех.
Редкие события в протоколах. Ошибка в состоянии конечного автомата (FSM) контроллера USB, которая возникает только при одновременном выполнении трех условий: hot-plug, смена режима питания и фазовый сдвиг тактового сигнала. Вероятность этого в симуляции была исчезающе мала, но в масштабах миллионных партий устройств это гарантированно случится хотя бы раз.
Главный враг post-si верификаторов — неопределенность реального мира. В симуляции нет помех в цепях питания, нет дрожания тактового сигнала (jitter), нет разброса параметров из-за технологического процесса. В post-silicon это все есть. Поэтому наш инструментарий — это не только софт, но и осциллографы, логические анализаторы, тепловые камеры и паяльные станции. Обо всем по порядку.

Арсенал post-si детектива: от паяльника до Python
Рабочий стол post-si инженера — это гибрид электронной лаборатории и рабочего места программиста.
Каждый этап диктует свой набор инструментов. Для «оживления» и низкоуровневой отладки (bring-up):
Станции внутрисхемной отладки (JTAG/эмуляторы) — чтобы загрузить первый код, остановить ядро и посмотреть состояние регистров.
Осциллографы и анализаторы цепей питания — чтобы проверить, «пришли» ли все напряжения, стабильны ли тактовые сигналы и нет ли паразитных выбросов.
Логические анализаторы — чтобы поймать и расшифровать последовательность транзакций на шине (например, при попытке чтения из флеш-памяти).
Паяльная станция — для модификации обвязки или установки подтяжек, если это необходимо для обхода ранних проблем.
Для функциональной верификации и анализа производительности:
Внутренние диагностические средства чипа — счетчики производительности (PMC) и буферы трасс (trace buffers). Это главный черный ящик, они показывают, чем на самом деле был занят чип в момент сбоя.
Скрипты на Python — для автоматизации запуска тысяч тестов, сбора и первичного анализа данных с этих счетчиков.
Логические анализаторы и протокольные тестеры — для валидации корректности высокоскоростных интерфейсов (PCIe, USB) на уровне электрических сигналов и протокола.
Для характеризации (термо- и электробезопасность):
Тепловизоры и пирометры (thermal camera / thermal gun) — чтобы построить тепловую карту кристалла и найти «горячие точки».
Программируемые источники питания и анализаторы цепей — для точного указания напряжений и измерения потребления при построении shmoo plots.
Термокамеры (thermal chambers) — чтобы создать контролируемые экстремальные условия (–40 °C…+125 °C).
Главный софт — это наш собственный фреймворк автоматизации, который связывает все это железо в единый измерительный комплекс.

Этапы большого пути: от «кирпича» к работающей системе
В работе post-si верификатора предусмотрен четкий пайплайн, где каждый шаг готовит чип к жизни.
Первое включение (bring-up) — самый стрессовый момент
Представьте, что вы подключили питание к только что собранному суперкомпьютеру и нажали кнопку включения, чтобы он начал выполнять огромное множество операций. В мире post-si все скромнее: на кристалл подают напряжение, и кристалл должен исполнить простейший код из внутренней памяти (boot ROM — read-only memory, зашитая в кристалл микропрограмма, которая инициализирует самые базовые функции и запускает загрузку основной прошивки).
Если процессор не выполняет задуманное, его сигналы начинают тщательно изучать щупами в поисках причины, почему, например, не стартует ФАПЧ или почему процессор, запустившись из внутренней boot ROM, не может прочесть следующий этап кода из внешней флеш-памяти. Чтобы на экране появилась та самая первая строка, должна выстроиться целая цепочка успешных событий:
Питание и сброс: все внутренние источники питания (power rails) должны выйти на стабильный номинал, а сигналы сброса (reset) — корректно сняться.
Тактирование: главный генератор (reference clock) должен быть стабилен, а PLL — захватить частоту и выдать синхросигналы для ядра и периферии.
Исполнение кода: процессорное ядро должно корректно выйти из вектора сброса и начать исполнять инструкции из boot ROM.
Доступ к памяти: контроллер внутренней памяти (SRAM) инициализирован, а код boot ROM может прочесть данные (например, следующую ступень загрузчика).
Работа периферии: контроллер UART инициализирован на правильной скорости (baud rate), а его выводы корректно подключены к адаптеру.
Первая инструкци�� UART: код в boot ROM должен успешно выполнить запись в регистр данных UART.
Первая строчка, выведенная через UART на экран, — маленькая победа инженера, означающая, что этот критический путь от питания до софта пройден.
Функциональная верификация — системная проверка «по полочкам»
Чип ожил, и теперь нужно проверить все критичные подсистемы. Обязательный чек-лист включает:
Подсистемы памяти: контроллеры оперативной памяти (DDR) и их физические интерфейсы (PHY), кеши различных уровней (L1/L2/L3).
Высокоскоростные интерфейсы ввода-вывода: PCI Express (PCIe), USB (от 2.0 до современного USB4), Ethernet (1G/10G/...), SATA/SAS.
Внутреннюю связность: шины и сеть на кристалле (NoC, Network-on-Chip), обеспечивающие взаимодействие между ядрами, памятью и периферией.
Процессорные ядра: корректность исполнения инструкций, сопроцессоры (например, для векторных вычислений), управление прерываниями (interrupt controller).
Системную инфраструктуру: генерация и распределение тактовых сигналов (clocking), система управления питанием (power management unit — PMU), отладочные интерфейсы (JTAG, trace).
Специализированные тесты на этом этапе не только констатируют работоспособность, но также определяют пропускную способность, задержки, корректность протоколов. На этом этапе можно найти интересные артефакты. Например, в симуляции DDR4 работала на 3200 МГц, а на кремнии начинает терять данные при 2666 МГц. Каждый подобный случай — это начало расследования.
Функциональной верификации в блоге YADRO посвящена отдельная статья Михаила Барских, руководителя отдела верификации.
Верификация производительности и питания
На этом этапе инженеры-архитекторы с замиранием сердца смотрят на графики post-si верификаторов. Ведь именно здесь «отливаются в кремнии» ключевые проектные решения: будет ли процессор соответствовать заявленному TDP (теплопакету), насколько энергоэффективным окажется в целевых сценариях, точно ли сможет держать турбочастоту под нагрузкой.
Сначала проводится термохарактеризация: с помощью тепловизора или пирометра (бесконтактный термометр, он же «тепловая пушка» — thermal gun) измеряют, как греется чип под разными типами нагрузки.

Четкая картина складывается, когда измерения этого этап�� объединяют в shmoo plots — сложных карты, показывающих, при каких комбинациях напряжения (V) и частоты (F) чип стабилен. Затем сюда накладывают тепловые ограничения. Например, если формально чип работает на частоте 2,5 ГГц и напряжении 1,1 В, но при этом его температура на кристалле (junction temperature) стремительно выходит за безопасные 105 °C. В итоге реальное рабочее «окно» определяется не только логической стабильностью, но и термическими и электрическими лимитами (power- и thermal throttling).

На этом этапе решают, по каким критериям будет сортироваться (бинарироваться) производственная партия. На основе сотен измерений с shmoo plots и данных по энергопотреблению строят статистическую модель, которая делит все произведенные кристаллы на группы (bins):
Высокочастотные (high-performance): кристаллы, способные стабильно работать на максимальных частотах при приемлемом напряжении и температуре. Их маркируют как топовые модели.
Энергоэффективные (low-power): кристаллы, которые не дотягивают до высоких частот, но показывают выдающуюся эффективность (высокую производительность на ватт) на средних и низких частотах при пониженном напряжении. Их часто используют для мобильных или встраиваемых решений.
Другие градации.
Результаты этой характеризации напрямую ложатся в даташит, где для каждой маркировки (SKU) указываются гарантированные частоты, напряжения и теплопакет (TDP).
Также здесь ищут узкие места, которые не увидеть в симуляции. Классические примеры:
Конфликты за общие ресурсы. Непредвиденная конкуренция нескольких ядер или ускорителей за одну шину памяти или порт интерконнекта (NoC), приводящая к резкому падению реальной пропускной способности.
Неэффективности кеширования. Паттерны доступа к данным в реальных приложениях, приводящие к аномально высокой частоте промахов в кеше (cache miss rate), «бутылочное горлышко» которого было недооценено на этапе архитектурного моделирования.
Латентность из-за физических эффектов. Увеличение задержек доступа к удаленным банкам памяти на кристалле из-за паразитных емкостей и сопротивлений (RC-задержки), не в полной мере учтенных на этапе pre-silicon.
Ограничения системы управления питанием (PMU). Задержки на переключение между режимами энергосбережения (power states), которые съедают выгоду от самой технологии при динамических нагрузках.
Системная верификация и поддержка ПО
Чип не остров. Его помещают на плату, вокруг него ставят память, периферию. Он обеспечивает работу реальной операционной системы. Поэтому в тесной связке с программистами post-si инженерам нужно ловить возможные проблемы на стыке железа и софта. Например, вместе разбираться, почему падает драйвер — из-за железа или кода? Стандартный сценарий такого расследования:
Воспроизведение и локализация. С помощью отладчика (JTAG) смотрим, в каком именно машинном состоянии (значения регистров, память) находится процессор в момент сбоя.
Анализ признаков. Проверяем, не совпадает ли сбой с каким-то действием железа — например, перевод интерфейса в low-power состояние. Смотрим биты ошибок (error status registers) в самом проблемном блоке чипа — например, контроллере PCIe.
Гипотезы и тесты. Если в регистрах железа есть признаки ошибки (например, CRC error или timeout), post-si инженер начинает детальную проверку сигналов на шине осциллографом, ищет аномалии. Разработчик ПО в это время анализирует, не нарушает ли код последовательность работы с регистрами, описанную в спецификации чипа.
Верификация фикса. Определив корень проблемы (допустим, драйвер не выдерживал тайминги, требуемые железом или в железе был баг в определенном режиме), фикс проверяют оба специалиста. Затем гоняют длительные стресс-тесты, чтобы убедиться в устойчивости.
Характеризация и подготовка к производству
Для этого этапа берут уже не один чип, а десятки и сотни. Их тестируют при разных температурах (–40 °C, +25 °C, +125 °C) и напряжениях около номинального значения (например, от 0,9 В до 1,1 В при номинале 1,0 В). Так становится понятен разброс параметров на партиях в сотни кристаллов, чтобы окончательно утвердить окна работы для даташита.
На основе собранной статистики — разброс рабочих частот, потребления и стабильности — строят математические модели и определяют финальные, гарантированные для всех проданных чипов параметры в даташите — так называемые guard bands (защитные отступы). Это и есть основа гарантий и качества будущих миллионов устройств.
Что нужно для работы в post-si верификации
В багаже начинающего верификатора должны быть знания процессорных архитектур (RISC-V, ARM), цифровой схемотехники, низкоуровневого (C, Assembler) и высокоуровневого (Python) программирования, основы протоколов (PCIe, DDR, AXI).
Важны навыки работы с реальным измерительным оборудованием (чтение осциллограмм, понимание временны́х диаграмм) и «отладочное» мышление — умение найти причину сбоя по косвенным признакам. Это можно развить самостоятельно, решая сложные задачи на Arduino/STM32. Пригодится и умение паять — иногда приходится подпаять резистор для обхода errata.
Из личных качеств выделю:
усидчивость,
аналитический склад ума,
любовь к детективным расследованиям («почему это не работает?»),
стрессоустойчивость (сроки горят, чипы горят),
отличные коммуникативные навыки (нужно общаться и с архитекторами, и с системными программистами).
Если вам интересна работа в post-silicon верификации, обратите внимание на наши вакансии:
Откуда приходят в post-si верификацию и что нужно «добрать»
Post-si верификация — это гибридная профессия на стыке железа и софта. Сюда часто приходят из смежных областей, и для каждой есть свой фокус подготовки.
Pre-si верификаторы (C/UVM):
Преимущество — глубокое понимание архитектуры чипа, знание его спецификации и типичных багов. Вы знаете, что искать.
Нужно освоить работу с реальным оборудованием: как пользоваться осциллографом, логическим анализатором, понимать временны́е диаграммы. Нужно переключить мышление с «бесконечной виртуальной симуляции» на «ограниченную видимость и физические ограничения».
Embedded-разработчики (программирование микроконтроллеров, драйверов):
Преимущество — умение писать и отлаживать низкоуровневый код, работающий «на железе», понимание принципов отладки через UART/JTAG.
Нужно глубже освоить цифровую схемотехнику: как устроены шины (AXI, APB), что такое временные задержки (timing), метастабильность. Знание принципов работы высокоскоростных интерфейсов (PCIe, DDR, Ethernet) потребуется не только с точки зрения API, но и на уровне протокола и электрических сигналов.
Схемотехники, специалисты по отладке печатных плат:
Преимущество — безбоязненное обращение с паяльником и измерительной техникой, умение читать осциллограммы, понимание целостности сигналов (SI) и питания (PI).
Нужно освоить архитектуру процессорных систем и программирование. Основная задача — перейти от аналоговых параметров сигналов к анализу поведения сложных цифровых систем по машинным кодам и дампам регистров. Нужно научиться мыслить не только вольтами и наносекундами, но также алгоритмами и состояниями конечных автоматов.
Общий знаменатель для всех: аналитический склад ума, терпение и любовь к «детективным расследованиям». По сути, post-si — это место, где сходятся все нити предыдущих процессов, и чтобы здесь работать, нужно уметь видеть и систему в целом, и критические детали.
Что почитать и посмотреть по теме
Отмечу несколько полезных ресурсов, с помощью которых можно получить более системное представление о post-si верификации. Книги:
«Post-Silicon Validation and Debug», Prabhat Mishra, Farimah Farahmandi — современная академическая книга, охватывающая методологии, инструменты и кейсы. Хороша для формирования цельной картины.
«The Art of Hardware Architecture», Mohit Arora — не про post-si напрямую, но дает отличное понимание проектирования сложных блоков (DDR, USB, PCIe), которые потом приходится отлаживать на кремнии. Хорошо погружает в контекст работы.
«Практическая электроника аналоговых устройств. Поиск неисправностей и отработка проектируемых схем», Роберт Пиз — развивает то самое «детективное» мышление, необходимое для поиска неуловимых багов. Про фундаментальную часть профессии.
Онлайн-курсы и прочее:
Coursera/edX — ищите курсы по запросам Digital Systems Verification, Computer Architecture и FPGA Design. Они дадут необходимую базу в цифровом дизайне и верификации, от которой можно отталкиваться впоследствии.
YouTube-каналы — EEVblog для понимания работы с измерительной техникой, «Инженерная кухня» для общего погружения в мир микроэлектроники и низкоуровневого программирования, а также другие подобные.
Официальная документация. Лучший способ понять протокол — читать его спецификацию. Можете начать с даташита любого микроконтроллера и технических описаний интерфейсов (например, PCI Express Base Specification). Это научит вас читать «первоисточники», что является ключевым навыком в post-si верификации.
Дам еще совет: самый эффективный способ понять суть — практика. Возьмите отладочную плату на STM32 или Raspberry Pi, подключите логический анализатор и попробуйте низкоуровневыми средствами «поковырять» работу периферии, прерываний или DMA. Это даст вам тот самый гибридный опыт, который требуется от post-silicon инженеров.
Post-si верификация — это важно направление стажировки YADRO «Импульс». Чтобы не пропустить новости о будущих наборах, советуем подписаться на обновления.
Post-si — это гранд-финал
Post-silicon верификация — это финальный, самый ответственный и невероятно увлекательный этап рождения микросхемы. Это место, где теория встречается с практикой, а инженерная интуиция и тщательный анализ творят чудеса.
Pre-si верификатор видит успех в прохождении теста в симуляции, а post-si — в материальном мире. Когда на экране монитора, подключенного к чипу, загружается Linux. Или когда игровой бенчмарк выдает заветные кадры в секунду. Эта работа напрямую влияет на дальнейшую судьбу чипа как продукта.
Если у вас есть опыт в post-silicon верификации — буду рад услышать ваши war stories в комментариях!