T27.AI

Блог

Тактирование, сброс и пересечения тактовых доменов за 27 уроков

2026-10-08 · 4 мин чтения

Курс о тактах учит деревьям тактового сигнала, стратегии сбросов и пересечениям тактовых доменов в 27 уроках, и каждый урок открывает виджет, который не открывает ни один другой урок; три из них отчеканены для этого курса. Тело поста лежало в дереве незарегистрированным со времён PR курса; эта запись его подключает.

Гравюрный триптих к статье: Тактирование, сброс и пересечения тактовых доменов за 27 уроков
Открыть полный триптих в исходном размере
#t27#Course#FPGA

Появился третий курс t27. Курс 3, «Тактирование, сброс и пересечения тактовых доменов», — 27 уроков в 9 модулях по 3, он сцеплен с курсом по ИИ-числам так же, как тот сцеплен с FPGA-курсом: последний урок предыдущего курса ссылается вперёд, а урок 1 — назад. Каждый урок открывает один виджет и одну спеку t27 в браузерном плеере, а где браузерный раннер спеку ещё не исполняет, урок говорит об этом прямо, и виджет — запись нативного t27c на настоящей машине.

Девять модулей

МодульЧему учит
1, Что такое тактовый сигналТактовый домен как все триггеры, делящие один фронт; период, джиттер и место, где тактовый сигнал платы входит в кристалл.
2, Деревья тактового сигналаПерекос и задержка прохождения, сеть глобальных буферов и почему стробирование клока логикой тихо чеканит новый домен.
3, PLL и MMCMУмножить и поделить один тактовый сигнал в другой, фаза шагами 1/56 периода VCO и какие тактовые сигналы анализатор считает родственными.
4, СбросыАссертировать асинхронно, снимать синхронно: три вида сброса, конвейер снятия и дерево сброса.
5, МетастабильностьОкно setup-hold, MTBF в целочисленной арифметике log2 и двухтриггерный синхронизатор.
6, Пересечение многих битПочему двоичная шина рвётся при сэмплировании в другом домене, почему код Грея нет, и рукопожатия для импульсов.
7, Асинхронный FIFOУказатели, флаги и глубина: буфер, переносящий поток между двумя тактовыми сигналами.
8, Ограниченияcreate_clock, false path и max delay, и тайминг выводов против клока, которым ведёт другая микросхема.
9, На платеОтчёт CDC, одно пересечение, захваченное на RX-триггерах разведённого дизайна E3, и дифф битстрима, замыкающий курс.

Три новые спеки

Курсу понадобились модели, которых в дереве не было, и он добавляет три спеки. specs/fpga/mmcm.t27 моделирует MMCME2: 16 тестов и 4 инварианта покрывают окно VCO, диапазоны M/D/O, дробное умножение в восьмых долях, шаг фазы 1/56 и модель захвата. specs/fpga/reset_sync.t27 называет три вида сброса: 16 тестов и 3 инварианта. specs/fpga/mtbf.t27 считает MTBF в целочисленном log2 с 10 дробными битами, потому что честный ответ переполняет любой целочисленный счёт секунд: 15 тестов и 4 инварианта. Каждая константа, взятая не из документа, помечена в шапке спеки как допущение — рядом с документом, из которого её нет.

СпекаТестыИнвариантыЧто помечает шапка
mmcm.t27164Диапазоны DIVCLK, MULT, CLKOUT и шаг фазы 1/56 из UG472; окно VCO и окно захвата помечены как допущения — точные числа по степеням скорости лежат в UG472 и DS181.
reset_sync.t27163Рекомендуемая форма (асинхронный ассерт, синхронное снятие) и числа ступеней, которые она принимает.
mtbf.t27154Форма уравнения из WP323; tau 50 пс и W 10 пс помечены как допущения — вендоры публикуют параметры триггеров лишь частично.

Что показывают записи

В галерее шестнадцать новых карточек-кастов, по одной записи на записанный урок, снятых нативным t27c 0.4.0 на ноутбуке. Запись показывает запуск, который важен, и читает вердикт из текста. Урок MTBF показывает, как одна ступень оставляет -200 пс запаса и log2-MTBF -19513 в Q10, а две ступени — 9800 пс и 275887. Запись мутации MMCM расширяет нижнюю границу окна VCO с 800000 до 400000 кГц одной строкой sed, и падает ровно тот тест, который называет число, что он отвергает. Запись мутации FIFO меняет инкремент указателя головы с + 1 на + 3, и все тесты по-прежнему проходят, потому что набор утверждает заполнение и флаги, но никогда значения указателей: та самая дыра, в которую проскользнул бы разорванный многобитный указатель.

Числа о плате — настоящие запуски, каждый назван в источниках данных виджета, который его показывает. Урок спеки платы запускает её нативно: 15 тестов, 11 инвариантов, а кольцевой генератор CFGMCLK измерен на 70770, 68490 и 67200 кГц на трёх подключенных кристаллах через JTAG — против номинала 65 МГц, который UG470 даёт как коридор 50-80 МГц. Урок тайминга выводов читает два записанных прогона разведённого дизайна E3 для платы AX7203: минимальный TX hold 3445 пс на eth_txd[1], минимальный запас между полубайтами 10900 пс на rxctl_n — и оба это модель по собственному SDF nextpnr о разведённом дизайне, а не измерение на плате, о чём и сказано. Урок захвата запускает tri fpga-rxcap на том же SDF: hold 10900 пс на rxctl_n при RXC на 2,4 нс позади своих данных через BUFG.

Чего это не показывает

Попробуйте

Чего это не решает

Пруфы

Поработаем вместе

Нужно довести FPGA/RTL-задачу до замеров на железе?

Работаю по контракту и part-time с hardware-AI, FPGA/RTL и ML-системами — от спецификации и открытого тулчейна до воспроизводимых измерений.