реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> отрицательные значения в SDF-ах
JB_swamp
сообщение Jul 13 2007, 11:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 3-11-05
Пользователь №: 10 429



синопсис DC получает отрицательные значения HOLD и RECOVERY - в nc-verilog при аннотации sdf файла они обнуляются, как лечить и откуда это берётся?
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Jul 13 2007, 14:06
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(JB_swamp @ Jul 13 2007, 14:15) *
синопсис DC получает отрицательные значения HOLD и RECOVERY - в nc-verilog при аннотации sdf файла они обнуляются, как лечить и откуда это берётся?

Не знаю, так глубоко не копал, но теперь меня тоже интересует этот вопрос cool.gif
Go to the top of the page
 
+Quote Post
SM
сообщение Jul 16 2007, 14:31
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Отрицательный холд/рекавери/сетап и т.п. это нормальная вещь. Всего лишь означает, что (пример для холда) данные совсем не обязательно удерживать после клока, а можно сменить даже раньше действующего фронта на столько времени. Берется оно из рассчетов - величина из либы и задержки в проводах. Если его занулить - хуже не будет никому - просто будет более жесткая проверка, с большим запасом.
Go to the top of the page
 
+Quote Post
soshnev
сообщение Aug 1 2007, 06:20
Сообщение #4


Частый гость
**

Группа: Новичок
Сообщений: 119
Регистрация: 26-08-05
Пользователь №: 7 989



Цитата(SM @ Jul 16 2007, 18:31) *
синопсис DC получает отрицательные значения HOLD и RECOVERY - в nc-verilog при аннотации sdf файла они обнуляются, как лечить и откуда это берётся?

Отрицательный холд/рекавери/сетап и т.п. это нормальная вещь. Всего лишь означает, что (пример для холда) данные совсем не обязательно удерживать после клока, а можно сменить даже раньше действующего фронта на столько времени. Берется оно из рассчетов - величина из либы и задержки в проводах. Если его занулить - хуже не будет никому - просто будет более жесткая проверка, с большим запасом.

1. Verilog-NC c нулевыми числами в SDF не работает (просто игнорирует).
По смыслу проверить на 0 - означает найти такое событие где проверяемые события из
timing violation совпадут. Вероятность этого весьма мала...
2. Я бы посоветовал, наоборот, поставить не нулевые значения и посмотреть.
Это полезно если проект синтезруется не полностью (часть блоков вручную или
экспоритуется как готовые или не все constraints выставлены при синтезе и т.п.)
Это может быть полезно, т. к. топология может дать перекос (0.1-0.5нс легко для современных
быстрых элементов и этого будет достаточно...).
Ещё это существенно, если необходимо как-то заложить запас на разброс
технологий и т. п.

3. Хотя большая часть разработчиков (я этого пока не понимаю) вообще не моделирует и не проверяет схему на timing violation таким образом.
Проверку на это они выполняют с помощью статического временного анализа.
(Synopsys-PrimeTime, Cadence-Pearl и др.). Но в этом случае надо грамотно задать все проверки по путям и constartints, отсечь все ложные пути (проверки). Короче, это своя наука...
Go to the top of the page
 
+Quote Post
yes
сообщение Aug 6 2007, 16:20
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



обычно рекомендуют фильтровать primetime-ой и после уже подсовывать в nc

а nc не понимает отрицательных сетап/холдов - вот такой замечательный тул smile.gif

с праймтайм вобще-то тоже беда - я видел несколько фильтрующих скриптов - но обычно это больше проблем вызывает, я предпочитаю gawk-ом самостоятельно чистить нетлист и быстрее и операция контролируема - то есть меньше возможности ошибку внести (смысл то одинаковый - все что меньше 0 заменить на 0)

а вообще самый простой путь - поставить запрет на такой варнинг и запускать nc с тем SDF-ом, который с отрицательными числами

2 soshnev
очень странные советы
и
весьма странная "Большая часть разработчиков", всюду где я видел изготовление АЗИКов - львиная доля трудозатрат идет на поведенческое моделирование (хотя primetime ... и formality ... могут слегка уменьшить)

Цитата(SM @ Jul 16 2007, 18:31) *
Отрицательный холд/рекавери/сетап и т.п. это нормальная вещь. Всего лишь означает, что (пример для холда) данные совсем не обязательно удерживать после клока, а можно сменить даже раньше действующего фронта на столько времени. Берется оно из рассчетов - величина из либы и задержки в проводах. Если его занулить - хуже не будет никому - просто будет более жесткая проверка, с большим запасом.


а вот для сетапа интересно бы обосновать, sorry не успел дописать smile.gif
в либах бывает setup -0.5 нс, то есть при современной времянке такое ужесточение может привести и к нерабочести

и я не помню в самих timing check-ах $setup, $hold считается величина 0 - игнорировать проверку или сравнение с 0 в описании элемента вставляют (нужно будет проверить!!!), то есть soshnev, возможно, прав, что нужно давать не 0, а небольшое положительное значение, что еще хуже
Go to the top of the page
 
+Quote Post
id_gene
сообщение Aug 7 2007, 12:35
Сообщение #6


carpe manana
***

Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659



2 JB_swamp & yes

Из документации:
Цитата
The use of negative time specifications in $setuphold or $recrem timing checks is enabled by default.
...
Note: With LDV 3.2 or a previous release, you must use the -neg_tchk option on the command line when you invoke the elaborator in order for the simulator to use the negative limit values. If you do not specify this option, negative limits are set to 0 in the description or annotation.
Go to the top of the page
 
+Quote Post
soshnev
сообщение Aug 10 2007, 08:38
Сообщение #7


Частый гость
**

Группа: Новичок
Сообщений: 119
Регистрация: 26-08-05
Пользователь №: 7 989



Цитата(yes @ Aug 6 2007, 20:20) *
а nc не понимает отрицательных сетап/холдов - вот такой замечательный тул smile.gif

весьма странная "Большая часть разработчиков", всюду где я видел изготовление АЗИКов - львиная
(хотя primetime ... и formality ... могут слегка уменьшить)


1. В программах моделирования невозможно "отмотать" время назад в общем случае. Я думаю это корректно в программах моделирования сделать очень сложно...
(сделать "планирование события" назад. События планируются только вперёд).

2. fоrmality - несколько другой тул.

3. Невозможно проверить все timing violation на всех тестах (их ещё написать надо), например для P4.
А если будет использоваться цифро-аналоговая смесь - это ещё сильнее усложнит ситуацию.

Просто есть такой факт (своя школа и методика), которая вычищает timing violation программами типа PrimeTime.
Иначе зачем нужна программа типа PrimeTime , ведь под WinNT 2000г она уже была.
Go to the top of the page
 
+Quote Post
yes
сообщение Aug 10 2007, 11:52
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(soshnev @ Aug 10 2007, 12:38) *
1. В программах моделирования невозможно "отмотать" время назад в общем случае. Я думаю это корректно в программах моделирования сделать очень сложно...
(сделать "планирование события" назад. События планируются только вперёд).

2. fоrmality - несколько другой тул.

3. Невозможно проверить все timing violation на всех тестах (их ещё написать надо), например для P4.
А если будет использоваться цифро-аналоговая смесь - это ещё сильнее усложнит ситуацию.

Просто есть такой факт (своя школа и методика), которая вычищает timing violation программами типа PrimeTime.
Иначе зачем нужна программа типа PrimeTime , ведь под WinNT 2000г она уже была.


1) проблему можно решить без нарушения причино-следственных связей. в случае отрицательной задержки будущее наступит чуть-чуть раньше smile.gif не по такту, а за некоторое время до него. кажется, что при правильном написании симулятора это не должно вызывать проблему.

вобщем-то теоретически есть возможность -neg_tchk, но в дополнение к этому должно быть кучка дополнительных условий - например SDF3.0 (ни праймтайм ни ДЦ пока не умеют) еще какие-то свойства
я могу нарыть и закачать апликуху с объяснениями
но фактически - проблемно

2) прайм-тайм + формалити это как бы замена моделирования - статическая проверка времянки и функциональности

3) существуют методики и технические средства генерации полного покрытия (coverage), ну и прайм тайм она вроде как для построения sdf-ов по результатам отплэйсеного и отроутеного дизайна,
то есть чистка сдф-а это некая дополнительная функция...
Go to the top of the page
 
+Quote Post
soshnev
сообщение Aug 13 2007, 06:09
Сообщение #9


Частый гость
**

Группа: Новичок
Сообщений: 119
Регистрация: 26-08-05
Пользователь №: 7 989



Цитата(yes @ Aug 10 2007, 15:52) *
1) проблему можно решить без нарушения причино-следственных связей. в случае отрицательной задержки будущее наступит чуть-чуть раньше smile.gif не по такту, а за некоторое время до него. кажется, что при правильном написании симулятора это не должно вызывать проблему.

вобщем-то теоретически есть возможность -neg_tchk, но в дополнение к этому должно быть кучка дополнительных условий - например SDF3.0 (ни праймтайм ни ДЦ пока не умеют) еще какие-то свойства
я могу нарыть и закачать апликуху с объяснениями
но фактически - проблемно

2) прайм-тайм + формалити это как бы замена моделирования - статическая проверка времянки и функциональности

3) существуют методики и технические средства генерации полного покрытия (coverage), ну и прайм тайм она вроде как для построения sdf-ов по результатам отплэйсеного и отроутеного дизайна,
то есть чистка сдф-а это некая дополнительная функция...


Спасибо за диалог и понимание.

1. В общем, не очень актуально поскольку в любом случае это каждый обходит...
2,3 - всё верно.

Последнее замечание по поводу отрицательных значений (вдруг кто дочитает).
Если до топологии ( т.е до отплэйсеного и отроутеного дизайна) в SDF файле получились
отрицательные задержки (от входа к выходу элемента) (один из вариантов - по причине перегрузки
цепи), возможны "сюрпризы" после топологии (перекос по задержкам для этой цепи и появление ещё большего количества отрицательных задержек).
Go to the top of the page
 
+Quote Post
Escorial
сообщение Aug 20 2007, 17:08
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 104
Регистрация: 11-11-05
Из: Москва
Пользователь №: 10 714



Цитата(soshnev @ Aug 13 2007, 10:09) *
Спасибо за диалог и понимание.

1. В общем, не очень актуально поскольку в любом случае это каждый обходит...
2,3 - всё верно.

Последнее замечание по поводу отрицательных значений (вдруг кто дочитает).
Если до топологии ( т.е до отплэйсеного и отроутеного дизайна) в SDF файле получились
отрицательные задержки (от входа к выходу элемента) (один из вариантов - по причине перегрузки
цепи), возможны "сюрпризы" после топологии (перекос по задержкам для этой цепи и появление ещё большего количества отрицательных задержек).


Можно подправить библиотеку, чтобы в $setuphold были добавлены поля [ delayed_reference ], [ delayed_data ]. Знаю, что так решали аналогичную проблему.

$setuphold_timing_check ::=
$setuphold ( reference_event , data_event , timing_check_limit , timing_check_limit
[ , [ notify_reg ] [ , [ stamptime_condition ] [ , [checktime_condition ]
[ , [ delayed_reference ] [ , [ delayed_data ] ] ] ] ] ] ) ;

P.S. Насчет проверки в Formality. После использования Encounter, Formality не может отследить связь между RTL и конечным netlist'ом. Он не находит соответствия для нескольких тысяч элементов. Может быть есть скрипты или некоторые хитрости в настройках, решающие данную проблему?
Go to the top of the page
 
+Quote Post
JB_swamp
сообщение Aug 28 2007, 07:43
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 3-11-05
Пользователь №: 10 429



толи я не очень понимаю, толи вы часто не о том. Тут кстати видел на логике отрицательные задержки(на триггерах ещё как-то осознаю что это может значить) но IOPATH отрицательный уже непонятно, возможно зависит от типа - на sdf OVI1.0 нашёл.
Go to the top of the page
 
+Quote Post
soshnev
сообщение Aug 28 2007, 09:08
Сообщение #12


Частый гость
**

Группа: Новичок
Сообщений: 119
Регистрация: 26-08-05
Пользователь №: 7 989



Цитата(JB_swamp @ Aug 28 2007, 11:43) *
толи я не очень понимаю, толи вы часто не о том. Тут кстати видел на логике отрицательные задержки(на триггерах ещё как-то осознаю что это может значить) но IOPATH отрицательный уже непонятно, возможно зависит от типа - на sdf OVI1.0 нашёл.

Если входная цепь элемента перегружена (плохой фронт), а сам элемент нагружен слабо
такое возможно.
Например, подаём на вход (слабонагруженного) инвертора фронт 5нс. Порог переключения будет достигнут раньше 2.5 нс. Инвертор начнёт переключаться и соответственно уровень
половину питания возможно достигнет раньше 2.5нс.
Соответственно расчётная задержка (а они считаются (как правило) по пол питания)
будет отрицательная.

Т.е если считать эту схему , например на Spice - расчёт будет верный
(инвертор действительно переключится раньше).
Если считать средствами использующими SDF - задержка будет нулевая.

Чем хуже входной фронт, тем больше задержка может быть в минусе.

Ещё бывает другая ситуация (но реже) - неправильные цифры в файлах, которые
используются для расчёта SDF ( LIB-файле или TLF, или др.).
В этом случае, надо смотреть там цифры для конкретного типа элемента.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 06:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016