|
Critical path |
|
|
|
Sep 23 2014, 14:09
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 3-09-12
Пользователь №: 73 371

|
Цитата(des00 @ Sep 19 2014, 07:47)  Оптимальное описание должно учитывать архитектурные возможности целевой ПЛИС. Например : Под альтеру : 1. приоритет сигналов установки и сброса триггеров и разрешения тактовой 2. Приоритет сигналов синхронной загрузки триггеров (у альтер этот мультиплексор стоит за лютом) 3. Какие именно сигналы LE идут на арифметические блоки 4. Размерность LUT Спасибо! Пункты 1 и 2 знал и использовал, пункт 4 знал, но никогда под размер LUT'a не оптимизировал, вроде. Третий пункт не очень понял. Не могли бы Вы прояснить?
Сообщение отредактировал johan - Sep 23 2014, 14:09
--------------------
|
|
|
|
|
Sep 23 2014, 14:37
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(Fat Robot @ Sep 19 2014, 02:05)  Да, в целом задержка в межсоединениях в фпга больше, чем задержка в логике. В asic ситуация в целом противоположная. Я-бы так сказал: В техгологиях меньше 0.35мкм, задержки в межсоединениях (хоть ASIC хоть FPGA) становяться больше чем в гейтах. Оптимизировать RTL таки надо, ибо чем сложнее комбинаторика, тем и соединений больше.
|
|
|
|
|
Sep 23 2014, 15:09
|
ʕʘ̅͜ʘ̅ʔ
    
Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691

|
Проверьте, пожалуйста, корректность моих расчетов: 1. Открываю "TSMC 90nm CLN90G Process SAGE-XTM v3.0 Standard Cell Library Databook" 2. Нахожу NAND2X4 3. Delays at 25C, 1.0V, Typical Process, Intrinsic Delay (ns). Беру среднее для 4х: 0.0135ns 4. 3.0e+8 м/с * (0.0135 * 1.0e-9) с = 0.004 м. 4 мм. Это огромная эквивалентная длина проводника, на мой взгляд. Даже пусть половина этого - в счет емкости проводника и нагрузки, а вторая половина - эквивалентная длина. 2 мм. все равно очень много. Чем сложнее комбинаторика, тем больше слоев логики для asic. И тем больше соединений для FPGA. Оптимизировать надо в любом случае. Цитата(Torpeda @ Sep 23 2014, 15:37)  Я-бы так сказал:
|
|
|
|
|
Sep 23 2014, 15:23
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(Fat Robot @ Sep 23 2014, 18:09)  4. 3.0e+8 м/с * (0.0135 * 1.0e-9) с = 0.004 м. 4 мм. Это огромная эквивалентная длина проводника, на мой взгляд. 3.0e+8 м/с * - это типа скорость света? А если учесть что сигнал не по вакуму а по распределённой RC линии задержки бежит? Да и задержка гейта это при какой RC нагрузки?
|
|
|
|
|
Sep 23 2014, 15:38
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(des00 @ Sep 19 2014, 07:47)  Под Lattice и Actel : не в курсе, не работал, это лучше узнать у SM и yes Внутри Lattice [почти]== Xilinx, ну очень близко. Так что практически все, что касается упаковки в xilinx, применимо и к латису. Цитата(Fat Robot @ Sep 23 2014, 19:09)  в счет емкости проводника и нагрузки Основные задержки в ASIC - не длина проводов, даже учитывая их емкость, а сама емкость затворов входных каскадов ячеек и соответствующая им "жирность" выходных буферов. А так как это все учтено именно в моделях ячеек, а не разводки - поэтому так оно и получается, что почти вся задержка на ячейках. wireload модели, кстати, тоже в результате дают значение эквивалентной RC-цепочки, которая, собственно, и задерживает сигнал в проводе. Потом уже экстракция паразитов их же генерирует, уже точные. Так что длиной провода просто пренебрегается. UPD: вот кусочек из wireload модели от 0.35: wire_load("8000") { capacitance : 0.000123 ; resistance : 0.078E-3; area : 0.01; slope : 189.0 ; fanout_length(1,28.84); fanout_length(2,57.4); так что для fanout=2 получится R=57.4*0.078E-3 кОм и C=57.4*0.000123 пФ - вот такая средняя по больнице задержка в разводке для разветвления на две нагрузки, если разводимый блок укладывается в area <= 8000 um^2
|
|
|
|
|
Sep 24 2014, 08:25
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Если кому интересно.... ---------------------------------------------------------------
Для 035
wire_load_table ("0_5k_4m") { fanout_capacitance (5, 0.0130) ; fanout_resistance (5, 0.0299) ; fanout_area (5, 11.07) ; fanout_length (5, 124.17) ;
Берём фаноут гейта 5 (типично) . Имеем для вайров С=0.0130pf \ R=0.0299кОм
Ёмкость входов нагрузки для 5 гейтов: cell (BULHDX2) { pin (A) { direction : input; capacitance : 0.0040;
С=5*0.0040=0.02pf
Общая ёмкость линии Сw=0.0130pf+0.02pf=0.033pf
Таким образом, задержка в межсоединениях: Тw=3*RCw=3*0.033pf*0.0299кОм=0.0029нс
Задержка в межсоединениях 035 определяется её собственной ёмкостью и резистивным сопротивлением, а также ёмкостю входов гейтов нагрузки.
Смотрим задержеку гейта при input_net_transition=1.2:
lu_table_template (BU1_timing_2D) { variable_1 : input_net_transition; variable_2 : total_output_net_capacitance; index_1("0.06 0.6 1.2 2.4 4.8"); index_2("0.0020 0.0349 0.0698 0.1396 0.2791"); } cell_rise (BU1_timing_2D) { values("0.1690, 0.4209, 0.6805, 1.1994, 2.2363",\ "0.2290, 0.4812, 0.7404, 1.2591, 2.2959",\ "0.2503, 0.5040, 0.7633, 1.2812, 2.3176",\ "0.2490, 0.5125, 0.7731, 1.2909, 2.3263",\ "0.1817, 0.4632, 0.7327, 1.2618, 2.2988"); }
Тbuf1 (при Сw=0.033pf) = 0.5040нс - В 035 мы имеем соотношения задержек в межсоединении к задержке в гейте 0.0029нс\0.5040нс или 1\173. Вся задержка сосредоточена в гейте.
При этом, ёмкость типичного межсоединения (фаноут 5) в данной технологии увеличивает задержку гейта с 0.2503 до 0.5040 т.е в 2 раза (см. 3-ю строку BU1_timing_2D)!
---------------------------------------------------------------
для 018
wire_load_table (5k) { fanout_area (5, 2.65); fanout_capacitance (5, 0.0018); fanout_length (5, 99.97); fanout_resistance (5, 0.041);
Имеем для вайров С=0.0018pf \ R=0.041кОм
Ёмкость входов нагрузки для 5 гейтов: cell (BU1) { pin (A) { direction : input; capacitance : 0.003201;
С=5*0.003201=0.016pf
Общая ёмкость линии Сw=0.0018pf+0.016pf=0.0178pf
Таким образом, задержка в межсоединениях: Тw=3*RCw=3*0.0178pf*0.041кОм=0.0022нс
Задержка в линии 018 технологии определяется только ёмкостью входов гейтов нагрузки и её резистивным сопротивлением.
lu_table_template (TIMING_TEMP_1_2D) { variable_1 : input_net_transition; variable_2 : total_output_net_capacitance; index_1 ("0.0108, 0.1284, 0.2454, 0.480, 0.9492, 1.8876, 3.7644"); index_2 ("0.00100, 0.0186, 0.0312, 0.0519, 0.0864, 0.144, 0.240"); }
cell_rise (TIMING_TEMP_1_2D) { values ("0.078796, 0.139521, 0.180945, 0.248608, 0.361001, 0.548422, 0.860681", \ "0.111564, 0.172588, 0.214054, 0.281758, 0.394213, 0.581647, 0.893816", \ "0.130034, 0.191773, 0.233171, 0.300882, 0.413318, 0.600755, 0.912829", \ "0.149527, 0.214052, 0.25529, 0.322875, 0.435329, 0.62261, 0.934493", \ "0.162109, 0.232954, 0.274269, 0.341518, 0.453854, 0.641113, 0.953011", \ "0.151271, 0.234228, 0.27716, 0.344678, 0.456789, 0.643955, 0.955758", \ "0.080574, 0.181599, 0.230327, 0.300692, 0.414288, 0.603211, 0.916342"); }
Тbuf1 (при Сw=0.0178pf) = 0.214052нс - В 018 мы имеем 0.0022нс\0.214052нс или 1\97
Ёмкость типичного межсоединения (фаноут 5) в данной технологии увеличивает задержку гейта с 0.149527 до 0.214052 т.е в 1.5 раза (см. 4-ю строку TIMING_TEMP_1_2D)!
----------------- 1) Задержка сигнала на линиях межсоединений определяется входной ёмкостью гейтов нагрузки и резистивным сопротивлением самой линии. 2) Ёмкость типичной нагрузки (5 входов) увеличивает задержку на выходе гейта примерно в 2 раза 3) С уменьшением технологических норм, задержка линии приближается к задержке гейта (035 - 1\173, а в 018 - 1\97, т.е. в почти в 2 раза) Можно предположить, что при норме в 40нм это соотношение будет примерно 1\20, т.е. уже не пренебрежимо мало (мож у кого есть дезайн кит на 40нм или ниже?)....
Для 035 и 018 можно сказать что задержка в межсоединениях пренебрежимо мала и что входная ёмкость нагрузки вносит наибольший вклад в задержку выхода самого гейта. При этом, чем меньше технологические нормы, тем ближе величины задержки в межсоединениях (R линии + Cвходов) к выходным задержкам гейтов-драйверов.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|