Что такое односвязная/неодносвязная ячейка в статическом анализе времени?

Что такое односвязная/неодносвязная ячейка в статическом анализе времени?

При изучении проектирования цифровых схем вы сталкиваетесь с нечетной/нечетной ячейкой, и сначала думаете: "Какой в этом смысл?"

Нечетность - это критерий для STA, позволяющий "безопасно и монотонно определить наихудший случай с помощью простых правил". Это необходимо для снижения производительности и пессимизма во время выполнения.

1) Unate / Non-unate: однострочное определение

  • Unate cell: входной переход (подъем/спад) может монотонно определять направление выходного перехода для данного входного вывода.
    → STA может фиксировать направление перехода и вычислить наихудший случай. Поэтому количество случаев, которые необходимо вычислить, невелико.
  • Например, AND Gate либо имеет переход на входной вывод, и на выходном выводе будет переход сигнала в том же направлении, либо он сохранит предыдущий сигнал.
    • Это называется положительным униатом.
    • И наоборот, если сигнал выходного контакта движется в направлении, противоположном входному, это называется отрицательным униатом.
  • Неунитарная ячейка: Направление выходного перехода может меняться в зависимости от ситуации (различные входные состояния/условия).
    → STA не может зафиксировать направление перехода, поэтому требуется разделение случая.

Иными словами, "неуникальное ветвление дуги отсчета времени/прецедента и перечисление различных случаев. (частичное перечисление)."


2) Почему timing_sense Liberty важен

В библиотеке (.lib) обычно содержится следующее.

  • timing_sense: positive_unate
  • timing_sense: negative_unate
  • timing_sense: non_unate

Что делает эта строка, очень просто:

Она позволяет движку STA вроде PrimeTime решать, какие временные дуги являются "обрезаемыми на основе монотонности".

Односторонняя сторона:

  • Направление перехода соответствующего пина фиксировано, так что
  • есть меньше дуг/случаев-кандидатов.

Неодносторонняя сторона:

  • Возможные дуги/случаи рассматриваются более широко, так что
  • runtime↑ + pessimism↑ являются более вероятными.

3) 왜 “퍼포먼스 때문만”은 아닌가

맞다, не-унат может замедлить STA из-за разветвления.
Но что более важно:

Унате позволяет STA легко сделать "безопасную верхнюю границу" (консерватизм, который не пропускает худший случай) через предположение монотонности.
Неуниат нарушает это предположение, заставляя движок быть более консервативным (=пессимистичным)."

Иными словами, униат/неуниат - это не "трюк по оптимизации движка", а условие математической модели STA.


4) Почему неединичные ячейки - головная боль при расчетах тайминга

(1) XOR: Классический неуниат

В XOR "направление" изменения входа на выход не фиксировано.<Поэтому STA должна ветвиться на гораздо большее количество комбинаций нарастания/спада.

Последствия:

  • увеличение временной дуги/случая
  • трудность обрезки
  • может проверить более пессимистичное поведение в STA, чем поведение реальной схемы

.

Enjoyed this article?

Get deep-dive semiconductor analysis and career insights delivered weekly. Free forever — no paywall, no upsell. Funded by sponsorships with a strict editorial firewall (Editorial Standards).

Work with me

Consulting · Collaboration · Support

Paid 1:1 technical consulting, speaker invitations, collaboration proposals, or just want to say thanks — all welcome.

View options →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
Support