Статичний тимчасової аналіз demystified. Частина 2

Багато початківці розробники не до кінця розуміють значення таких параметрів тригера як час установки (Setup) та утримання (Hold). Про метастабильность і природу цих двох параметрів написано досить багато (https://habrahabr.ru/post/254869/), тому зосередимося на тому, як боротися з порушеннями Seup і Hold у процесі проектування схем.

На початку дамо визначення Setup і Hold:
  • Час установки Setup – мінімальний час від моменту завершення перехідних процесів на вході даних до моменту приходу фронту клока на тактовий вхід тригера.
  • Час утримання Hold – мінімальний час від моменту приходу фронту клока на тактовий вхід до початку нових перехідних процесів на вході даних тригера.
Чому я пишу про події на входах тригерів? Тому що статичний тимчасової аналіз будує граф для розрахунку затримок, і входи елементів є вершинами це графа. Детальніше про побудові графів і внутрішньої «кухні» статичного тимчасового аналізу можна почитати у першій замітці https://habrahabr.ru/post/273849/.

Тепер поговоримо про те, як перевіряються порушення Setup і Hold. У синхронних схемах всі перехідні процеси починаються на тактовому вході (вірніше — на виході зовнішнього генератора або PLL, але статичний аналіз за межі мікросхеми не заглядає, тому говоримо лише про тактовому вході мікросхеми). Отже, перехідний процес (жмут, тактовий імпульс поширюється по ланцюгах до тактових входів тригерів, розщеплюючись вже на безліч перехідних процесів, які проходять через тригери до їх виходів, потрапляють в логіку, і закінчуються на входах даних тригерів-приймачів. Основна умова роботи синхронних схем: всі перехідні процеси зобов'язані закінчиться за один такт. Або, точніше, не за один такт, а до часу приходу наступного тактового імпульсу, що для кожного тригера в дійсності різне, оскільки ланцюг тактирования в реальному мікросхемі будується за принципом дерева.
Про дереві. Очевидно, що ланцюг тактирования має настільки велике число навантажень, що ні один логічний елемент не має достатньої потужності, щоб прокачати їх всі. Тому, ланцюг тактирования проектується у вигляді дерева, вершина якого – тактовий вхід мікросхеми, гілки – умощняющие буфери або інвертори, а листя – тактові входи тригерів. Дерево не ідеально (часто його роблять таким спеціально), тому завжди існує неодночасність приходу такту на різні тригери. З-за цього виходить, що в одних ділянках схеми перехідні процеси повинні закінчитися раніше, а на інших ділянках пізніше – лише б встигнути за час Tsetup до приходу тактового імпульсу. Подивимося на наступну картинку (картинка і формули запозичені з англомовної статті http://www.edn.com/design/systems-design/4392195/Equations-and-Impacts-of-Setup-and-Hold-Time)

На зображенні показано вейвформы приходу тактового імпульсу на тригери FF1 і FF2, між якими розташована деяка комбінаційна схема, що затримує сигнал. Іншими словами, FF1 – тригер джерело сигналу, FF2 – приймач, а затримка сигналу через логіку, в залежності від деяких вхідних умов, може доходити як дуже швидко, так і повільно. Розберемося з позначеннями: Tskew — перекіс дерева тактирования, з-за якої такт на FF2 приходить пізніше ніж на FF1 на величину Tskew. Tc2q – затримка сигналу всередині тригера між тактовим входом і виходом даних. Нагадаю, що в синхронних схемах джерелом всіх перехідних процесів є тактовий імпульс, тому шлях сигналу йде через тактовий вхід на вихід даних тригера, і потім через логіку. Tcomb -затримка сигналу в логіці, Tclk -період тактового імпульсу, а Tsetup – характеристика тригера, визначення якої (Setup) було дано вище.
Дивимося на картинку, і бачимо, що максимальний час закінчення перехідних процесів на вході даних тригера має задовольняти наступного нерівності (1):
Tc2q + Max(Tcomb) + Tsetup ≤ Tclk + Tskew (1)
 

Тут Max(Tcomb) – максимально можливе значення Tcomb. З формули слід, що з порушенням нерівності можна боротися двома шляхами: рухати вправо момент приходу тактового імпульсу на FF2, змінюючи Tskew, або зменшувати затримку в логіці Max(Tcomb).

Тепер спробуємо розібратися з порушеннями Hold. Якщо порушення Setup, взагалі кажучи, має стосунок до наступного такту, оскільки порівнюється з моментом приходу наступного тактового імпульсу, то порушення Hold слід перевіряти вже в поточному такті. Як же може відбутися порушення Hold? Згідно картинці, якщо сигнал з виходу FF1 через логіку пройде настільки швидко, що встигне зіпсувати дані на вході FF2 – ми отримаємо порушення в поточному такті. З чого випливає умова, що сигнал з виходу FF1 не може прийти швидше, ніж за час Thold, з поправкою на Tskew. Отримуємо нерівність (2)
Tc2q + Min(Tcomb) ≥ Thold + Tskew (2)
 

Тут Min (Tcomb) – мінімально можливе значення Tcomb. З цієї формули слід, що з порушенням можна боротися, рухаючи Tskew, або збільшуючи затримки в логіці Min(Tcomb).

Далі поговоримо про те, як з усуненням порушень бореться САПР. Першочерговим його завданням є витягування швидкодії проектованої схеми. Припустимо, нам треба отримати частоту схеми 1 ГГц, при тому, що в парі місць в дизайні присутній затримка логіки 1.2 нс. САПР може спробувати стиснути цю логіку до 1нс, або перекосити тактовое дерево таким чином, що Tskew тригера – приймача виявиться рівним 200 пс. Щось подібне зображено на картинці вище. Оскільки логіку зазвичай не вдається стиснути, то перше, що робить САПР, це перебудовує дерево тактового імпульсу, усуваючи тим самим порушення Tsetup. Необхідно відзначити, що із збільшенням Tskew, зростає і ризик порушення Hold.
По досягненні потрібної частоти настає черга виправлення Hold. На цей раз САПР не чіпає тактовое дерево, і використовує другий прийом – збільшення Min(Tcomb), тобто мінімальних затримок в логіці, де є порушення Hold. Затримки збільшуються дуже просто – вставкою буферних елементів. Хоча зайві буфери, безумовно, збільшують споживання схеми.

Цікаво, що збільшення затримок в схемі через нагрівання, зниження живлення, накопичення дози радіації, або старіння, можна парирувати зниженням робочої частоти мікросхеми. Адже як видно з формули (1), якщо затримки збільшуються – треба знижувати Tclk. Але якщо затримки в схемі зменшуються, внаслідок надмірного охолодження або підвищення напруги живлення, то порушення Hold у мікросхемі вже не виправиш нічим – мікросхема просто перестане працювати, що випливає з формули (2). Як же тоді проектуються мікросхеми для низьких і навіть наднизьких температур? Найчастіше такі схеми проектують звичайним способом, але закладають величезний запас по Hold. Чим більше запас, тим більше можна охолоджувати мікросхему нижче розрахункових температур, але наскільки — покаже тільки експеримент. Ймовірність порушень також знижується і при відмові від нахиленої тактового дерева на користь максимально рівного (найчастіше використовують т. зв. H-tree) з одночасним зменшенням продуктивності. А самий надійний спосіб — проектувати асинхронні (SI, DI) схеми, повністю стійкі до параметричних відмов.

Ну і в ув'язненні, а при чому тут ПЛІС? По-перше, розділу за ASIC на хабре немає. По-друге, хороший ПЛИСовод рано чи пізно доростає до проектування ASIC. Ну і в третіх, хоч можливості маніпуляцій з Clock Skew у ПЛІС і кастровані, але вони все одно є. Сподіваюся, кому-небудь стаття виявиться корисною.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.