© KLMH Физическое Проектирование СБИС: от Разбиения Графов до Оптимизации Производительности Схем Глава 8 – Оптимизация Производительности Схем Авторы книги: VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 1 Lienig Andrew B. Kahng, Jens Lienig, Igor L. Markov, Jin Hu © KLMH Глава 8 – Оптимизация Производительности Схем 8.1 Введение 8.2 Временной анализ и требования производительности схем 8.2.1 Статический временной анализ (SТA) 8.2.2 Бюджеты задержки и алгоритм распределения временного запаса (ZSA) 8.3 Размещение с временной оптимизацией 8.3.1 Методы с упором на сети 8.3.2 Вложение STA в линейные программы для размещения 8.4 Трассировка с временной оптимизацией 8.4.1 Алгоритм ограниченного радиуса и стоимости 8.4.2 Компромисс Прима-Дейкстры 8.4.3 Минимизация задержки от источника до стока 8.5 Физический синтез схем 8.5.1 Масштабирование вентилей 8.5.2 Буферизация 8.5.3 Перестройка сетей 8.6 Маршрут проектирования с оптимизацией производительности схемы VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 2 Lienig 8.7 Заключение Оптимизация производительности схем © KLMH 8 Спецификация систем Разбиение ENTITY test is port a: in bit; end ENTITY test; Архитектурное проектирование Функциональное проектирование Проектирование схем Физическое проектирование Планированние кристалла Размещение Синтез синхросигналов Физическая верификация DRC LVS Производство Упаковка и тестирование Коммерческий продукт VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 3 Lienig Временная оптимизация © 2011 Springer Verlag ERC Трассировка сигналов Введение © KLMH 8.1 Раскладка интегральных схем (ИС) должна выполнять геометрические, ограничения, электрические ограничения, ограничения по мощности и тепловым характеристикам а также временные ограничения ограничения установки сигнала (соотв. длинным путям на схеме) ограничения удержания сигнала (соотв. коротким путям на схеме) Проектировщики должны завершить оптимизацию временных характеристик выполнить временные ограничения VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 4 Lienig процесс сочитает индивидуальнуе оптимизации обсуждаемые в предыдущих главах (размещение, трассировку, и т.д.) со специализированными методами улучшения производительности схемы Введение © KLMH 8.1 Этапы оптимизации производительности схем освещённые в этой лекции: Размещение с временной оптимизацией (Sec. 8.3) уменьшает задержки сигналов при определении местоположения элементов схемы Трассировка с временной оптимизацией (Sec. 8.4) уменьшает задержки сигналов при выборе тополий сетей и прокладке маршрутов Физический синтез (Sec. 8.5) уменьшает задержки перестраивая схему Масштабирование транзисторов и вентилей: изменение соотношения длины и ширины транзисторов чтобы увеличить или уменьшить задержку или ведущую силу вентиля Вставка буферов в сети чтобы уменьшить задержки сигнала Перестройка сетей вдоль критических путей Маршрут проектирования с оптимизацией производительности схемы (Sec. 8.6) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 5 Lienig Введение © KLMH 8.1 Оптимизация производительности схем требует точной и быстрой оценки задержек распостранения сигналов в схеме Для оценки временных характеристик схемы, задержки распостранения сигналов через элементы схемы просчитываются в разных точках схемы. Учитываются два типа временных ограничений: Ограничения установки сигнала (огр. длинных путей) для элементов памяти (триггеров и защёлок) указывают как долго входной сигнал должен оставаться неизменным перед фронтом синхросигнала Ограничения удержания сигнала (огр. коротких путей) для элементов памяти указывают как долго сигнал должен оставаться неизменным после фронта синхросигнала t такта t ком б. задержки t установки t перекоса VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 6 Lienig t ком б. задержки t удержания t перекоса Введение Оптимизация временных характеристик выполняет временные ограничения, меняя раскладку и перестраивая схему Жаргон: “the design has closed timing” - «проект закрыт по времени» VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 7 Lienig © KLMH 8.1 Временной анализ и временные ограничения © KLMH 8.2 8.1 Введение 8.2 Временной анализ и требования производительности схем 8.2.1 Статический временной анализ (SТA) 8.2.2 Бюджеты задержки и алгоритм распределения временного запаса (ZSA) 8.3 Размещение с временной оптимизацией 8.3.1 Методы с упором на сети 8.3.2 Вложение STA в линейные программы для размещения 8.4 Трассировка с временной оптимизацией 8.4.1 Алгоритм ограниченного радиуса и стоимости 8.4.2 Компромисс Прима-Дейкстры 8.4.3 Минимизация задержки от источника до стока 8.5 Физический синтез схем 8.5.1 Масштабирование вентилей 8.5.2 Буферизация 8.5.3 Перестройка сетей 8.6 Маршрут проектирования с оптимизацией производительности схемы VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 8 Lienig 8.7 Заключение Временной анализ и требования производительности схемы © KLMH 8.2 Последовательная схема, “развёрнутая” во времени Комбинационная схема (Копия 1) Комбинационная схема (Копия 2) FF FF Комбинационная схема (Копия 3) FF Комбинационные схемы VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 9 Lienig Ячейки памяти © 2011 Springer Verlag Синхросигнал Временной анализ и требования производительности схемы © KLMH 8.2 Главные компоненты задержки в последовательных схемах Задержки в вентилях связанные с переменой сигнала Задержки в проводах связанные с распостранением сигнала в длинных проводах Перекос синхросигнала определияет разницу во времени активации элементов памяти Чтобы быстро оценить производительность последовательной схемы используется статический временной анализ (STA) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 10 Lienig пренебрегаем перекосом синхросигнала (поправка на поздних стадиях) Статический временной анализ © KLMH 8.2.1 Рассмотрим худший случай, в котором каждый вентиль переключается Представим комбинационную схему направленным ацикличным графом (DAG) Каждое ребро и вершина несут на себе вес - задержка проводов и вентилей Для каждой вершины, вычислим запас = RAT – AAT RAT это трeбуемое время прибытия, т.е. самое позднее время переключения допустимое требованиями производительности схемы AAT это фактическое время прибытия По договорённости, AAT изначально определён на входных контактах схемы и прощитывается на выходе каждого элемента схемы Отрицательный запас в любой точке схемы означает что схема не выполняет требования производительности VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 11 Lienig Положительный запас на всех выходах озанчает что схема выполняет требования 8.2.1 Статический временной анализ (0.15) a y (2) (0.2) w (2) © KLMH Комбинационная схема представленная графом (DAG) (0.2) f (0.1) (0.1) x (1) (0.3) z (2) (0.1) a (0) (0) (0) y (2) (0.15) (0.1) b (0) (0.1) (0.2) w (2) (0.2) x (1) (0.3) (0.6) c (0) (0.1) VLSI Physical Design: From Graph Partitioning to Timing Closure f (0) (0.25) z (2) Chapter 8: Timing Closure 12 Lienig c s (0.25) © 2011 Springer Verlag b 8.2.1 Статический временной анализ © KLMH Вычислим AATs в каждой вершине: AAT (v) max AAT (u ) t (u, v) uFI ( v ) где FI(v) это множество вершин на входе вентиля v (fanin), а t(u,v) это задержка мехду u и v (значения AAT на входных контактах заданы сначала) y (2) (0.15) A0 A 3.2 s (0) A0 (0.1) b (0) (0.1) A0 w (2) (0.2) x (1) A 1.1 A 5.65 (0.3) (0.6) c (0) (0.2) (0.1) A 0.6 VLSI Physical Design: From Graph Partitioning to Timing Closure f (0) A 5.85 (0.25) z (2) A 3.4 Chapter 8: Timing Closure 13 Lienig (0) © 2011 Springer Verlag a (0) 8.2.1 Статический временной анализ RAT (v) min uFO( v ) © KLMH Вычислим RATs в каждой вершине: RAT (u) t (u, v) где FO(v) это множество вершин на выходе вентиля v (fanout), а t(u,v) это задержка между u и v (значения RAT на выходных контактах заданы сначала) y (2) (0.15) R 0.95 R 3.1 s (0) R -0.35 (0.1) b (0) (0.1) R -0.35 w (2) (0.2) x (1) R 0.75 R 5.3 (0.3) (0.6) c (0) (0.2) (0.1) R 0.95 VLSI Physical Design: From Graph Partitioning to Timing Closure f (0) R 5.5 (0.25) z (2) R 3.05 Chapter 8: Timing Closure 14 Lienig (0) © 2011 Springer Verlag a (0) 8.2.1 Статический временной анализ © KLMH Вычислим запас (slack) в каждой вершине: slack (v) RAT (v) AAT (v) A0 R -0.35 S -0.35 (0) b (0) (0.1) (0.6) A0 R -0.35 S -0.35 c (0) A 3.2 (0.1) R 3.1 (0.2) S -0.1 w (2) (0.2) x (1) A 1.1 R 0.75 (0.3) S -0.35 (0.1) A 0.6 R 0.95 S 0.35 VLSI Physical Design: From Graph Partitioning to Timing Closure A 5.65 (0.25) R 5.3 S -0.35 f (0) A 5.85 R 5.5 S -0.35 z (2) A 3.4 R 3.05 S -0.35 Chapter 8: Timing Closure 15 Lienig s (0) A0 R 0.95 S 0.95 y (2) (0.15) © 2011 Springer Verlag a (0) Распределениe временного запаса по бюджетам задержки © KLMH 8.2.2 Назначим временной бюджет для каждой сети Задержки вентилей и проводов должны быть оптимизированы при раскладке Задержки проводов зависят от длин проводов Длины проводов неизвестны до размещения и трассировки Расчёт бюджетов с алгоритмом распределения временного запаса Рассмотрим вентили vi Рассмотрим сети ei Задержки вентилей DELAY(v) и сетей DELAY(e) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 16 Lienig Бюджет вентиля TB(v) включает DELAY(v) + DELAY(e) Распределениe временного запаса по бюджетам задержки © KLMH 8.2.2 Исходные данные: временной граф G(V,E) Результат: временной бюджет TB для каждого v V 1. do 2. (AAT,RAT,slack) = STA(G) 3. foreach (vi V) 4. TB[vi] = DELAY(vi) + DELAY(ei) 5. slackmin = ∞ 6. foreach (v V) 7. if ((slack[v] < slackmin) and (slack[v] > 0)) 8. slackmin = slack[v] 9. vmin = v 10. if (slackmin ≠ ∞) 11. path = vmin 12. ADD_TO_FRONT(path,BACKWARD_PATH(vmin,G)) 13. ADD_TO_BACK(path,FORWARD_PATH(vmin,G)) 14. s = slackmin / |path| 15. for (i = 1 to |path|) 16. node = path[i] // распределить поравну 17. TB[node] = TB[node] + s // запас вдоль пути path VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 17 Lienig 18. while (slackmin ≠ ∞) Распределениe временного запаса по бюджетам задержки © KLMH 8.2.2 Forward Path Search (FORWARD_PATH(vmin,G)) Исходные данные: вершина vmin с минимальным положительным запасом slackmin; временной граф G Результат: максимальный путь path вниз по течению от vmin такой что вершины v V не влияют на запас на пути path 1. path = vmin 2. do 3. flag = false 4. node = LAST_ELEMENT(path) 5. foreach (fanout node fo of node) 6. if ((RAT[fo] == RAT[node] + TB[fo]) and (AAT[fo] == AAT[node] + TB[fo])) 7. ADD_TO_BACK(path,fo) 8. flag = true 9. break 10. while (flag == true) VLSI Physical Design: From Graph Partitioning to Timing Closure // удалить vmin Chapter 8: Timing Closure 18 Lienig 11. REMOVE_FIRST_ELEMENT(path) Распределениe временного запаса по бюджетам задержки © KLMH 8.2.2 Backward Path Search (BACKWARD_PATH(vmin,G)) Исходные данные: вершина vmin с минимальным положительным запасом slackmin; временной граф G Результат: максимальный путь path вверх по течению от vmin такой что вершины v V не влияют на запас на пути path 1. path = vmin 2. do 3. flag = false 4. node = FIRST_ELEMENT(path) 5. foreach (fanin node fi of node) 6. if ((RAT[fi] == RAT[node] – TB[fi]) and (AAT[fi] == AAT[node] – TB[fi])) 7. ADD_TO_FRONT(path,fi) 8. flag = true 9. break 10. while (flag == true) VLSI Physical Design: From Graph Partitioning to Timing Closure // удалить vmin Chapter 8: Timing Closure 19 Lienig 11. REMOVE_LAST_ELEMENT(path) Распределениe временного запаса по бюджетам задержки Пример: алгоритм распределения временного запаса Формат: <AAT, запас, RAT>, [бюджет] © KLMH 8.2.2 O1: <13,4,17> I1 I2 I3 <1,4,5> [0] O2: <6,8,14> <3,4,7> [0] 2 <0,5,5> [0] 4 <7,4,11> [0] <13,4,17> [0] O1 6 <1,6,7> [0] <6,8,14> [0] <3,5,8> [0] VLSI Physical Design: From Graph Partitioning to Timing Closure <6,5,11> [0] 0 Chapter 8: Timing Closure O2 20 Lienig 3 I4 Распределениe временного запаса по бюджетам задержки Пример: алгоритм распределения временного запаса Формат: <AAT, запас, RAT>, [бюджет] Найдём путь с минимальным ненулевым запасом © KLMH 8.2.2 O1: <13,4,17> I1 I2 I3 <1,4,5> [0] O2: <6,8,14> <3,4,7> [0] 2 <0,5,5> [0] 4 <7,4,11> [0] <13,4,17> [0] O1 6 <1,6,7> [0] <6,8,14> [0] <3,5,8> [0] VLSI Physical Design: From Graph Partitioning to Timing Closure <6,5,11> [0] 0 Chapter 8: Timing Closure O2 21 Lienig 3 I4 Распределениe временного запаса по бюджетам задержки Пример: алгоритм распределения временного запаса Формат: <AAT, запас, RAT>, [бюджет] Найдём путь с минимальным ненулевым запасом Распределим запасы и обновим бюджеты © KLMH 8.2.2 O1: <17,0,17> I1 I2 I3 <1,0,1> [1] O2: <6,8,14> <3,0,4> [1] 2 <0,2,2> [0] 4 <9,0,9> [1] <16,0,16> [1] O1 6 <1,4,5> [0] <6,8,14> [0] <3,4,7> [0] VLSI Physical Design: From Graph Partitioning to Timing Closure <6,4,10> [0] 0 Chapter 8: Timing Closure O2 22 Lienig 3 I4 Распределениe временного запаса по бюджетам задержки Пример: алгоритм распределения временного запаса Формат: <AAT, запас, RAT>, [бюджет] Найдём путь с минимальным ненулевым запасом Распределим запасы и обновим бюджеты © KLMH 8.2.2 O1: <17,0,17> I1 I2 I3 <1,0,1> [1] O2: <6,8,14> <4,0,4> [1] 2 <0,0,0> [2] 4 <9,0,9> [1] <16,0,16> [1] O1 6 <1,4,5> [0] <6,8,14> [0] <3,4,7> [0] VLSI Physical Design: From Graph Partitioning to Timing Closure <6,4,10> [0] 0 Chapter 8: Timing Closure O2 23 Lienig 3 I4 Распределениe временного запаса по бюджетам задержки Пример: алгоритм распределения временного запаса Формат: <AAT, запас, RAT>, [бюджет] Найдём путь с минимальным ненулевым запасом Распределим запасы и обновим бюджеты © KLMH 8.2.2 O1: <16,0,16> I1 I2 I3 <1,0,1> [1] O2: <6,8,14> <4,0,4> [1] 2 <0,0,0> [2] 4 <9,0,9> [1] <16,0,16> [1] O1 6 <1,2,3> [2] <6,8,14> [0] <3,2,5> [0] VLSI Physical Design: From Graph Partitioning to Timing Closure <6,2,8> [2] 0 Chapter 8: Timing Closure O2 24 Lienig 3 I4 Распределениe временного запаса по бюджетам задержки Пример: алгоритм распределения временного запаса Формат: <AAT, запас, RAT>, [бюджет] Найдём путь с минимальным ненулевым запасом Распределим запасы и обновим бюджеты © KLMH 8.2.2 O1: <17,0,17> I1 I2 I3 <1,0,1> [1] O2: <10,4,14> <4,0,4> [1] 2 <0,0,0> [2] 4 <9,0,9> [1] <16,0,16> [1] O1 6 <1,0,1> [3] <10,4,14> [0] <3,1,4> [0] VLSI Physical Design: From Graph Partitioning to Timing Closure <7,0,7> [3] 0 Chapter 8: Timing Closure O2 25 Lienig 3 I4 Распределениe временного запаса по бюджетам задержки Пример: алгоритм распределения временного запаса Формат: <AAT, запас, RAT>, [бюджет] Найдём путь с минимальным ненулевым запасом Распределим запасы и обновим бюджеты © KLMH 8.2.2 O1: <17,0,17> I1 I2 I3 <1,0,1> [1] O2: <10,4,14> <4,0,4> [1] 2 <0,0,0> [2] 4 <9,0,9> [1] <16,0,16> [1] O1 6 <1,0,1> [3] <10,4,14> [4] <3,0,3> [1] VLSI Physical Design: From Graph Partitioning to Timing Closure <7,0,7> [3] 0 Chapter 8: Timing Closure O2 26 Lienig 3 I4 Размещение с временной оптимизацией © KLMH 8.3 8.1 Введение 8.2 Временной анализ и требования производительности схем 8.2.1 Статический временной анализ (SТA) 8.2.2 Бюджеты задержки и алгоритм распределения временного запаса (ZSA) 8.3 Размещение с временной оптимизацией 8.3.1 Методы с упором на сети 8.3.2 Вложение STA в линейные программы для размещения 8.4 Трассировка с временной оптимизацией 8.4.1 Алгоритм ограниченного радиуса и стоимости 8.4.2 Компромисс Прима-Дейкстры 8.4.3 Минимизация задержки от источника до стока 8.5 Физический синтез схем 8.5.1 Масштабирование вентилей 8.5.2 Буферизация 8.5.3 Перестройка сетей 8.6 Маршрут проектирования с оптимизацией производительности схемы VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 27 Lienig 8.7 Заключение Размещение с временной оптимизацией © KLMH 8.3 Размещение с временной оптимизацией оптимизирует задержку схемы чтобы выполнить требования производительности Рассмотрим множество T всех временных точек схемы (контактов) Выполнение требований производительности можно оценить с помощью наименьшего отрицательного запаса (WNS) WNS minslack(τ) τ Или суммарного отрицательного запаса (TNS) TNS slack(τ) τ, slack( τ ) 0 Типы оптимизации: с упором на сети, с упором на пути, интегрированные VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 28 Lienig Временная оптимизация с упором на сети © KLMH 8.3.1 Добаляем вес к каждой сети – размещение оптимизирует взвешенную длину проводов Статические веса сетей: вычислены перед размещением (не изменяются) Дискретные веса: ω if slack 0 w 1 ω2 if slack 0 где ω1 > 0, ω2 > 0, и ω2 > ω1 α Непрерывные веса: slack w 1 где t это задержка длиннейшего пути t α – параметр критичности С использованием чуствительности TNS и запаса задержки к данной сети VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 29 Lienig w wo α( slacktarget slack ) s wSLACK β s wTNS Временная оптимизация с упором на сети © KLMH 8.3.1 Динамические веса сетей: обновляются в течении размещения Оцениваем запас на каждой итерации: slackk slackk 1 sLDELAY L где ΔL это изменение длины 1 2 υ k 1 1 если среди 3% самых критичных сетей Обновим параметр υ k 1 срочности сети: υ k 1 иначе 2 Обновим вес сети: Варианты: веса обновляются через j итераций, с использованием других критериев и формул VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 30 Lienig wk wk 1 1 υ k Вложение STA в линейные программы для размещения © KLMH 8.3.2 Выведем линейные органичения для размещения с временной оптимизацией Геометрические ограничения определяют координаты ячеек Временные ограничения контролируют запас Оптимизация функций Увеличить наименьший отрицательный запас (WNS) Увеличить суммарный отрицательный запас (TNS) Увеличить линейную комбинацию WNS и TNS VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 31 Lienig Вложение STA в линейные программы для размещения © KLMH 8.3.2 Переменные для геометрических ограничений: xv и yv задают центр ячейки v V Ve множество ячеек присоединённых к сети e E left(e), right(e), bottom(e), и top(e) отвечают координатам левой, правой, нижней и верхней границ объемлющего прямоугольника для e VLSI Physical Design: From Graph Partitioning to Timing Closure v с e Chapter 8: Timing Closure 32 Lienig δx(v,e) и δy(v,e) задают смещение контактов в расчёте от xv и yv Вложение STA в линейные программы для размещения © KLMH 8.3.2 Для всех v Ve: left (e) xv δ x (v, e) right(e) xv δ x (v, e) bottom(e) yv δ y (v, e) top(e) yv δ y (v, e) Определим полупериметровую длину проводов (HPWL) для e: VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 33 Lienig L(e) right (e) left (e) top(e) bottom(e) Вложение STA в линейные программы для размещения © KLMH 8.3.2 Для временных ограничений, рассмотрим tGATE(vi,vo): задержка вентиля v от входного контакта vi до выходного контакта vo tNET(e,uo,vi): задержка сети e от выходного контакта uo вентиля u до входного контакта vi вентиля v AAT(vj): время фактического прибытия сигнала на контакт j вентиля v VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 34 Lienig Вложение STA в линейные программы для размещения © KLMH 8.3.2 Для всех входных контактов vi вентиля (ячейки) v : AAT (vi ) AAT (uo ) t NET (uo , vi ) Для всех выходных контактов vo вентиля (ячейки) v : AAT (vo ) AAT (vi ) tGATE (vi , vo ) Для всех контактов τp в элементе памяти τ: slack(τ p ) RAT(τ p ) AAT(τ p ) Нужно убедиться что все значения slack(τp) 0 VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 35 Lienig Вложение STA в линейные программы для размещения © KLMH 8.3.2 Оптимизация суммарного отрицательного запаса: max : slack(τ p) τ p Pins( τ ), τ Оптимизация наименьшего отрицательного запаса : max : WNS Оптимизация линейной комбинации нескольких параметров: min : L(e) α WNS VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 36 Lienig eE Трассировка с временной оптимизацией © KLMH 8.4 8.1 Введение 8.2 Временной анализ и требования производительности схем 8.2.1 Статический временной анализ (SТA) 8.2.2 Бюджеты задержки и алгоритм распределения временного запаса (ZSA) 8.3 Размещение с временной оптимизацией 8.3.1 Методы с упором на сети 8.3.2 Вложение STA в линейные программы для размещения 8.4 Трассировка с временной оптимизацией 8.4.1 Алгоритм ограниченного радиуса и стоимости 8.4.2 Компромисс Прима-Дейкстры 8.4.3 Минимизация задержки от источника до стока 8.5 Физический синтез схем 8.5.1 Масштабирование вентилей 8.5.2 Буферизация 8.5.3 Перестройка сетей 8.6 Маршрут проектирования с оптимизацией производительности схемы VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 37 Lienig 8.7 Заключение Трассировка с временной оптимизацией © KLMH 8.4 Трассировка с временной оптимизацией должна минимизировать: Наибольшую задержку до стока: задержу из источника до любого стока сети Суммарную длину проводов: с учётом конкретных маршрутов (трасс) Для сигнальной сети net, рассмотрим источник s0 стоки sinks = {s1, … ,sn} соответвтующий граф с весами G = (V,E) где V = {v0,v1, … ,vn} представлюет источник и стоки (контакты) сети net, и VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 38 Lienig вес ребра e(vi,vj) E отвечает длине маршрута от vi до vj Трассировка с временной оптимизацией © KLMH 8.4 Для любого остовного дерева T в G, рассмотрим: radius(T) : max длина пути из источника к стоку в T cost(T) : суммарный вес рёбер T Компромисс между “неглубокими” и “короткими” деревьями У “неглубоких” деревьев малый радиус древо кратчайших путей строится алгоритмом Дейкстры У “коротких” деревьев малый суммарный вес рёбер VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 39 Lienig минимальное остовное дерево (MST) строится алгоритмом Прима Трассировка с временной оптимизацией © KLMH 8.4 2 3 2 2 3 3 6 6 7 5 s0 s0 radius(T) = 8 cost(T) = 20 radius(T) = 13 cost(T) = 13 radius(T) = 11 cost(T) = 16 “Неглубокое дерево” “Лёгкое дерево” Компромисс между длиной и глубиной VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 40 Lienig s0 5 © 2011 Springer Verlag 5 Алгоритм ограниченного радиуса и стоимости © KLMH 8.4.1 Компромисс между радиусом и стоимостью находится при помощи наложения верхних границ на оба параметра В контексте алгоритм ограниченного радиуса и стоимости рассмотрим: Дерево кратчайших путей TS Минимальное остовное дерево TM Дерево TBRBC построенное для параметра ε>0 выполняет: radius (TBRBC ) (1 ε) radius (TS ) and При ε = 0, TBRBC достигает минимального радуса Когда ε = ∞, TBRBC достигает минимальной стоимости VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 41 Lienig 2 cost (TBRBC ) 1 cost (TM ) ε Компромисс Прима-Дейкстры © KLMH 8.4.2 Компроисс Прима-Дейкстры базируется на алгоритмах Прима и Дейкстры Из множества стоков S, итеративно выбираем сток s с использованием одной из функций для алгоритма Прима: для алгоритма Дейкстры: cost(si , s j ) cost ( s , s ) cost ( s , s ) 0 i i j для компромисса Прима-Дейкстры: γ cost ( s0 , si ) cost ( si , s j ) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 42 Lienig с константой γ между 0 и 1: линейная комбинация двух «чистых» алгоритмов Компромисс Прима-Дейкстры © KLMH 8.4.2 4 4 7 11 8 8 7 9 s0 radius(T) = 19 cost(T) = 35 radius(T) = 15 cost(T) = 39 γ = 0.25 γ = 0.75 VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 43 Lienig s0 © 2011 Springer Verlag 9 7 Минимизация задержки от источника до стоков © KLMH 8.4.3 Итеративно строим дерево добавляя стоки, с оптимизацией срочных стоков Задача о маршрутном дереве со срочными стоками (CSRT) минимизирует n α(i) t (s , s ) 0 i i 1 VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 44 Lienig где α(i) - это оценки срочности стоков si, а t(s0,si) - это задержка от s0 до si Минимизация задержки от источника до стоков © KLMH 8.4.3 В задаче о дереве Штейнера с одним срочным стоком, нужно построить дерево Штейнера минимальной длины которое соединяет все стоки кроме самого срочного sc Присоединяем самый срочный сток одим из способов H0: прямой провод из sc до s0 H1: кратчайший провод присоединяющий sc к T, при условии что полученный путь от s0 до sc имеет наименьшую возможную длину VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 45 Lienig HBest: опробовать кратчайшие связки от sc до рёбер T и от sc до s0. Выполнить временной анализ на каждом из полученных деревьев и выбрать дерево с наименьшей задержкой до sc Физический синтез схем © KLMH 8.5 8.1 Введение 8.2 Временной анализ и требования производительности схем 8.2.1 Статический временной анализ (SТA) 8.2.2 Бюджеты задержки и алгоритм распределения временного запаса (ZSA) 8.3 Размещение с временной оптимизацией 8.3.1 Методы с упором на сети 8.3.2 Вложение STA в линейные программы для размещения 8.4 Трассировка с временной оптимизацией 8.4.1 Алгоритм ограниченного радиуса и стоимости 8.4.2 Компромисс Прима-Дейкстры 8.4.3 Минимизация задержки от источника до стока 8.5 Физический синтез схем 8.5.1 Масштабирование вентилей 8.5.2 Буферизация 8.5.3 Перестройка сетей 8.6 Маршрут проектирования с оптимизацией производительности схемы VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 46 Lienig 8.7 Заключение Физический синтез схем © KLMH 8.5 Физический синтез это набор временных оптимизаций для увеличения отрицательного запаса Примеры: расчёт временных бюджетов и исполнение временных правок Этапы бюджетирования: расчитать целевые задержки для сетей и/или вдоль путей зачастую перед размещением и трассировкой (где бюджеты используются) также может использоваться при временных правках Временные правки: Масштабирование вентилей Вставка буферов VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 47 Lienig Перестройка сетей Масштабирование вентилей © KLMH 8.5.1 Рассмотрим вентиль v с тремя возможными размерами A, B, C: size (vC ) size (vB ) size (vA ) У больших вентилей меньше сопротивление выходного контакта При больших нагрузочных ёмкостях t (vC ) t (vB ) t (v A ) У меньших вентилей больше сопротивление выходного контакта При меньших нагрузочных ёмкостях : VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 48 Lienig t (vC ) t (vB ) t (v A ) Масштабирование вентилей © KLMH 8.5.1 Рассмотрим вентиль v с тремя возможными размерами A, B, C : size (vC ) size (vB ) size (vA ) 40 35 Задержка (ps) 35 30 25 20 15 23 18 24 21 25 24 30 27 30 26 27 40 33 28 A B C 20 15 0.5 1.0 1.5 2.0 2.5 Нагрузочная ёмкость (fF) VLSI Physical Design: From Graph Partitioning to Timing Closure 3.0 Chapter 8: Timing Closure 49 Lienig 5 © 2011 Springer Verlag 10 Масштабирование вентилей © KLMH 8.5.1 a b vA v d C(d) = 1.5 e C(e) = 1.0 f C(f) = 0.5 t(vA) = 40 VLSI Physical Design: From Graph Partitioning to Timing Closure C(d) = 1.5 e C(e) = 1.0 f C(f) = 0.5 a b vC d C(d) = 1.5 e C(e) = 1.0 f C(f) = 0.5 t(vC) = 28 Chapter 8: Timing Closure 50 Lienig a b d Буферизация © KLMH 8.5.2 Буфер: два инвертера соединённых последовательно Вставив буфер, можно изменить задержку схемы изменить времена переключения экранировать ёмкостную нагрузку ускорить схему или вставить элемент задержки Недостатки: Увеличивается площадь схемы VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 51 Lienig Увеличивается мощность энергопотребления Буферизация © KLMH 8.5.2 vB f C(f) = 1 g C(g) = 1 C(vB) = 5 fF h C(h) = 1 t(vB) = 45 ps d C(d) = 1 e C(e) = 1 a b vB y C(vB) = 3 fF f C(f) = 1 g C(g) = 1 h C(h) = 1 t(vB) = 33 ps C(y) = 3 fF t(y) = t(vB) + t(y) = 66 ps VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 52 Lienig a b d C(d) = 1 e C(e) = 1 Перестройка схем © KLMH 8.5.3 Перестройка схем меняет вентили схемы, но сохраняет функцию схемы без изменений Примеры преобразований схем клонирование: дублирование вентилей переделка входного или выходного дерева вентиля: меняет топологию соединений между вентилями обмен коммутативных контактов: меняет соединения декомпозиция вентилей: например заменить AND-OR на NAND-NAND Булева перестройка: замена вентилей по законам Булевой алгебры Обратные преобразования сокращение размеров вентилей, слияние вентилей, и т.д. VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 53 Lienig Перестройка схем © KLMH 8.5.3 a b vB d e C(d) = 1 C(e) = 1 f C(f) = 1 g C(g) = 1 h C(h) = 1 a d C(d) = 1 e C(e) = 1 vA b f vB C(f) = 1 g C(g) = 1 h C(h) = 1 и сократить ёмкость вниз по течению d e v f … … a b d v e f g h VLSI Physical Design: From Graph Partitioning to Timing Closure v’ … g h Chapter 8: Timing Closure 54 Lienig a b Клонирование может сократить ёмкость разветвления выхода вентиля © 2011 Springer Verlag Перестройка схем © KLMH 8.5.3 Переделка дерева разветвления входа может изменить значения AAT a <4> b <3> (1) f <6> (1) b <3> c <1> d <0> (1) f <5> (1) (1) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 55 Lienig © 2011 Springer Verlag c <1> d <0> a <4> (1) Перестройка схем © KLMH 8.5.3 Переделка дерева разветвления выхода может изменить задержки на конкретных путях путь1 путь1 y1 (1) (1) (1) (1) (1) y2 (1) путь2 путь2 VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 56 Lienig © 2011 Springer Verlag y2 (1) Перестройка схем © KLMH 8.5.3 Обмен коммутативных контактов может изменить задержку схемы a <0> b <1> f <5> (1) (2) c <2> b <1> a <0> (1) (1) f <3> (1) (2) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 57 Lienig © 2011 Springer Verlag c <2> (1) (1) Перестройка схем © KLMH 8.5.3 VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 58 Lienig © 2011 Springer Verlag Декомпозиция вентилей может изменить структуру схемы Перестройка схем © KLMH 8.5.3 Булева перестройка использует законы Булевой алгебры, например, закон дистрибутивности, чтобы изменить топологию схемы (a + b)(a + c) = a + bc a <4> (1) b <1> x <6> (1) y <6> x <5> (1) y <6> (1) (1) (1) (1) x(a,b,c) = (a + b)(a + c) x(a,b,c) = a + bc y(a,b,c) = (a + c)(b + c) y(a,b,c) = ab + c VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 59 Lienig c <2> (1) b <1> c <2> (1) © 2011 Springer Verlag a <4> Маршруты проектирования © KLMH 8.6 8.1 Введение 8.2 Временной анализ и требования производительности схем 8.2.1 Статический временной анализ (SТA) 8.2.2 Бюджеты задержки и алгоритм распределения временного запаса (ZSA) 8.3 Размещение с временной оптимизацией 8.3.1 Методы с упором на сети 8.3.2 Вложение STA в линейные программы для размещения 8.4 Трассировка с временной оптимизацией 8.4.1 Алгоритм ограниченного радиуса и стоимости 8.4.2 Компромисс Прима-Дейкстры 8.4.3 Минимизация задержки от источника до стока 8.5 Физический синтез схем 8.5.1 Масштабирование вентилей 8.5.2 Буферизация 8.5.3 Перестройка сетей 8.6 Маршрут проектирования с оптимизацией производительности схемы VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 60 Lienig 8.7 Заключение Маршруты проектирования © KLMH 8.6 Базовый маршрут физического проектирования 1. Планирование кристалла, размещение контактов I/O, планирование сетей питания и земли 2. Логический синтез и технологическая специализация 3. Глобальное размещение и легализация элементов памяти 4. Синтез деревьев синхорсигнала 5. Глобальная трассировка и определение уровней металлизации 6. Легализация и детальное размещение с учётом перегруженности 7. Детальная трассировка 8. Производственные оптимизации 9. Физическая верификация VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 61 Lienig 10. Создание и оптимизация фотошаблонов Маршруты проектирования © KLMH Видео Видео кодек пре-/постпроссесинг; цифровая управление обработка потоком Аудио Аудио пре-/постпроссесинг кодек Контроллер Поддержка коммунидля обработки кационных протоколов данных Baseband DSP Baseband PHY MAC/Control Главный процессор для приложений VLSI Physical Design: From Graph Partitioning to Timing Closure Блок защиты Память Chapter 8: Timing Closure 62 Lienig Аналого-цифровой преобразователь (АЦП) Аналоговые схемы Пример: плана кристалла © 2011 Springer Verlag 8.6 Маршруты проектирования VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 63 Lienig © 2011 Springer Verlag Пример: глобальное размещение © KLMH 8.6 8.6 Маршруты проектирования VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 64 Lienig © 2011 Springer Verlag © KLMH Пример: дерево синхросигнала 8.6 Маршруты проектирования VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 65 Lienig © 2011 Springer Verlag © KLMH Пример: перегруженность при глобальной трассировке Маршруты проектирования © KLMH 8.6 Chip Planning and Logic Design Performance-Driven Block Shaping, Sizing and Placement I/O Placement Chip Planning With Optional Net Weights Performance-Driven Block-Level Delay Budgeting Single Global Net Routes and Buffering Trial Synthesis and Floorplanning fails Logic Synthesis and Technology Mapping Power Planning RTL Timing Estimation passes (полная блок-схема в Figure 8.26) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 66 Lienig © 2011 Springer Verlag Block-level or Top-level Global Placement Маршруты проектирования © KLMH 8.6 Block-level or Top-level Global Placement Global Placement Obstacle-Avoiding Single Global Net Topologies With Optional Net Weights Physical Buffering Delay Estimation Using Buffers OR Layer Assignment Virtual Buffering Buffer Insertion Physical Synthesis (полная блок-схема в Figure 8.26) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 67 Lienig Static Timing Analysis passes with fixable violations © 2011 Springer Verlag fails Маршруты проектирования © KLMH 8.6 Physical Synthesis Timing Correction Timing-Driven Restructuring Boolean Restructuring and Pin Swapping AND passes Gate Sizing Redesign of Fanin and Fanout Trees Routing (полная блок-схема в Figure 8.26) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 68 Lienig Static Timing Analysis © 2011 Springer Verlag fails Маршруты проектирования © KLMH 8.6 Routing Legalization of Sequential Elements Clock Network Synthesis With Layer Assignment Timing-Driven Routing passes (Re-)Buffering and Timing Correction Global Routing fails Static Timing Analysis Detailed Routing Timing-driven Legalization + CongestionDriven Detailed Placement 2.5D or 3D Parasitic Extraction (полная блок-схема в Figure 8.26) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 69 Lienig © 2011 Springer Verlag Sign-off Маршруты проектирования © KLMH 8.6 Sign-off passes Manufacturability, Electrical, Reliability Verification passes Mask Generation Design Rule Checking Layout vs. Schematic Antenna Effects Electrical Rule Checking (полная блок-схема в Figure 8.26) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 70 Lienig Static Timing Analysis fails © 2011 Springer Verlag ECO Placement and Routing fails © KLMH Обзор Главы 8 – Временные ограничения и временной анализ Задержка схем оценивается на сигнальных путях От первичных входных контактов до элементов памяти; от элементов памяти до первичных выходных контактов Между элементами памяти Компоненты задержки на путях Задержки вентилей: верхняя оценка по худшему перекючению (чтобы обеспечить быстрый статический временной анализ) Задержки проводов: зависят от длины проводов и топологии (для сетей с >2 контактами) Временные ограничения Фактические врменя прибытия (AATs) в первичные входы и выходы элементов памяти Требуемые врменя прибытия (RATs) в первичные выходы и входы элементов памяти Статический временной анализ Два прохода считают AAT и RAT для каждого вентиля (и сети) за линейное время В каждой временной точке: запас = RAT-AAT Отрицательный запас = временное нарушение; срочные сети/вентили определяются по отрицательному запасу Бюджеты: делят задержку схемы на границы задержки сетей и вентилей VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 71 Lienig Размещение вентилей/ячеек влияет на длину проводов, которая влияет на задержку сетей Размещение с врменной оптимизацией оптимизирует координаты вентилей/ячеек чтобы улучшить временные характеристики © KLMH Обзор Главы 8 – Размещение с временной оптизацией Временной анализ находит срочные сети, им уделяется особое внимание Длина проводов должна быть низкой, иначе трассировка провалится Временная оптимизация часто усугибляет перегруженность Размещение с контролем весов сетей Самый простой метод размещения с временной оптимизацией После начального размещения, запускает временной анализ и подсчитывает веса для сетей Размещение с бюджетами задержек сетей Назначает границы задерки для каждой сети; переводит границы задержки в границы длин Выполняет размещение с соблюдением границ длин сетей Размещение с использованием линейного программирования Сводится к системе уравнений и неравенств Временной анализ и оптимизация представлены особыми неравенствами VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 72 Lienig Обзор Главы 8 – Трассировка с временной оптимизацией Трассировка с временной оптимизацией многогранна © KLMH Индивидуальные сети: компромисс между длиной и глубиной Ёмкость соединения и целостость сигнала: параллельные провода создают конденсаторы и могут замедлить/ускорить переключение сигналов Оптимизация всей схемы: определить очерёдность оптимизации сетей Оптимизация индивидуальных сетей Крайний случай: независимые трассы от источника до каждого стока (высокая длина, возможно низкая задержка) Крайний случай: минимальное остовное дерево (низкая длина, выс. задержка) Компромисс: гибрид алгоритмов Прима и Дейкстры Ёмкость соединений и целостность сигнала Параллельные провода требуют особого внимания когда они переключаются одновременно Определив срочные сети, ограничить перекрёстный шум на них отдалив соседние провода Оптимизация всей схемы После предварительной трассировки, временной анализ находит срочные сети VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 73 Lienig Оптимизировать индивидуальные сети, повторить В прошлом, размещение и трассировка использовали завершёную схему Сегодня, неперспективно рано фиксировать размеры вентилей и топологии сетей – это не учитывает более точного временного анализа © KLMH Обзор Главы 8 – Физический синтез схем Координаты вентилей и трассы сетей ещё не доступны Физический синтез перестраивает схему с использованием предварительного размещения Буферизация сетей: разбивает сеть на меньшие куски (~равной длины) Длиная сеть может иметь слишком высокую ёмкость, ведущий вентиль может быть слишком слабым Масштабирование вентилей/буферов: повышает силу ведушего вентиля & его физические размеры У больших вентилей высокая ёмкость входного контакта, но малое сопротивление выходного контакта Большие вентили могут вести больше вентилей, длиные сети; переключаются быстрее Большие вентили требуют больше места, большие ведущие вентили вверх по течению Клонирование вентилей: разделяет большие разветвления выхода Дублированые вентили могут быть разнесены (чего один вентиль не позволяет) VLSI Physical Design: From Graph Partitioning to Timing Closure Chapter 8: Timing Closure 74 Lienig