Перейти к содержанию
    

Оптимальное описание должно учитывать архитектурные возможности целевой ПЛИС. Например :

Под альтеру :

1. приоритет сигналов установки и сброса триггеров и разрешения тактовой

2. Приоритет сигналов синхронной загрузки триггеров (у альтер этот мультиплексор стоит за лютом)

3. Какие именно сигналы LE идут на арифметические блоки

4. Размерность LUT

Спасибо!

Пункты 1 и 2 знал и использовал, пункт 4 знал, но никогда под размер LUT'a не оптимизировал, вроде.

Третий пункт не очень понял. Не могли бы Вы прояснить?

Изменено пользователем johan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, в целом задержка в межсоединениях в фпга больше, чем задержка в логике. В asic ситуация в целом противоположная.

Я-бы так сказал:

В техгологиях меньше 0.35мкм, задержки в межсоединениях (хоть ASIC хоть FPGA) становяться больше чем в гейтах.

Оптимизировать RTL таки надо, ибо чем сложнее комбинаторика, тем и соединений больше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте, пожалуйста, корректность моих расчетов:

 

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. Оптимизировать надо в любом случае.

 

Я-бы так сказал:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4. 3.0e+8 м/с * (0.0135 * 1.0e-9) с = 0.004 м. 4 мм. Это огромная эквивалентная длина проводника, на мой взгляд.

3.0e+8 м/с * - это типа скорость света?

А если учесть что сигнал не по вакуму а по распределённой RC линии задержки бежит?

Да и задержка гейта это при какой RC нагрузки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Под Lattice и Actel : не в курсе, не работал, это лучше узнать у SM и yes

 

Внутри Lattice [почти]== Xilinx, ну очень близко. Так что практически все, что касается упаковки в xilinx, применимо и к латису.

 

в счет емкости проводника и нагрузки

Основные задержки в 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Третий пункт не очень понял. Не могли бы Вы прояснить?

Простой пример : в атаче LE третьего сыклона в арифметическом режиме. Видно что использовать register feedback невозможно, т.е. банальный счетчик будет задействовать разводку общего назначения. Вот такие мелочи можно учитывать для оптимальной разводки.

post-3453-1411538294_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если кому интересно....

---------------------------------------------------------------

 

Для 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входов) к выходным задержкам гейтов-драйверов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...