|
set_false_path Как правильно задать в TimeQuest |
|
|
|
 |
Ответов
|
Mar 7 2017, 13:03
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(gin @ Mar 7 2017, 14:08)  Всем добрый день! Есть следующий вопрос - в проекте имеется 2 клоковых домена. Между ними происходит обмен данными. Как задать в TimeQuest условие, чтобы он не учитывал пути между этими доменами в расчете? Как я понимаю, есть команда set_false_path :
set_false_path -from [get_clocks __sourceClock] -to [get_clocks __destinationClock]
но как в ней описать клоки, которые формируются на внутренних PLL? Для задания асинхронных клоков нужно пользоваться командой set_clock_groups а не set_false_path. Чтобы автоматически описать клоки от внутренних PLL, есть команда derive_pll_clocks. Также можно вручную их описать с помощью create_generated_clock. Для сокращения длинных плохо читаемых автоматически созданных имён можно использовать макроподстановки TCL.
|
|
|
|
|
Mar 31 2017, 05:10
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(_Anatoliy @ Mar 30 2017, 14:45)  Очень заинтересовало Ваше сообщение. Надоело после команды derive_pll_clocks врукопашную править имена всех клоков на смысловые. Не сможете ли примерчик подкинуть? Код set rx_clk_name {rx_10g_inst|rx_10g_inst|xv_xcvr_10gbaser_nr_inst|ch[0].sv_xcvr_10gbaser_native_inst|g_fpll.altera_pll_156M~PLL_OUTPUT_COUNTER|divc lk} set sys_clk_name {pll_sys_inst|pll_sys_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}
set_false_path -from [get_clocks $rx_clk_name] -to [get_clocks $sys_clk_name]
# и ещё больше можно упростить: set rx_clk [get_clocks $rx_clk_name] set sys_clk [get_clocks $sys_clk_name] set_false_path -from $rx_clk -to $sys_clk
|
|
|
|
|
Mar 31 2017, 06:31
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(Timmy @ Mar 31 2017, 08:10)  Код set rx_clk_name {rx_10g_inst|rx_10g_inst|xv_xcvr_10gbaser_nr_inst|ch[0].sv_xcvr_10gbaser_native_inst|g_fpll.altera_pll_156M~PLL_OUTPUT_COUNTER|divc lk} set sys_clk_name {pll_sys_inst|pll_sys_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}
set_false_path -from [get_clocks $rx_clk_name] -to [get_clocks $sys_clk_name]
# и ещё больше можно упростить: set rx_clk [get_clocks $rx_clk_name] set sys_clk [get_clocks $sys_clk_name] set_false_path -from $rx_clk -to $sys_clk Спасибо! Но это как раз понятно. Здесь строчку rx_10g_inst|rx_10g_inst|xv_xcvr_10gbaser_nr_inst|ch[0].sv_xcvr_10gbaser_native_i nst|g_fpll.altera_pll_156M~PLL_OUTPUT_COUNTER|divclk всё равно придётся писать вручную (копипастить). Например у меня название клока такое spll1|pll1_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|vco1ph[0], а после пересборки проекта вполне может вместо vco1ph[0] оказаться vco1ph[1],естественно сыпятся все ограничения. Тогда приходится ручками перебивать все имена. Я эту ситуацию имел ввиду.
|
|
|
|
|
Mar 31 2017, 11:03
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(_Anatoliy @ Mar 31 2017, 09:31)  Спасибо! Но это как раз понятно. Здесь строчку rx_10g_inst|rx_10g_inst|xv_xcvr_10gbaser_nr_inst|ch[0].sv_xcvr_10gbaser_native_i nst|g_fpll.altera_pll_156M~PLL_OUTPUT_COUNTER|divclk всё равно придётся писать вручную (копипастить). Например у меня название клока такое spll1|pll1_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|vco1ph[0], а после пересборки проекта вполне может вместо vco1ph[0] оказаться vco1ph[1],естественно сыпятся все ограничения. Тогда приходится ручками перебивать все имена. Я эту ситуацию имел ввиду. Можно попробовать получить идентификатор и имя выходного пина PLL по имени clock net: Код foreach_in_collection net [get_nets "clk"] { puts [get_net_info -name $net] puts [set pin_id [get_net_info -pin $net]] puts [set pin_name [get_pin_info -name $pin_id]] } А потом непосредственно сделать имя клока из имени пина, или, по-научному, перебрать все клоки, и выбрать те, у которых target равен $pin_name
|
|
|
|
Сообщений в этой теме
gin set_false_path Как правильно задать в TimeQuest Mar 7 2017, 11:08 myq Цитата(gin @ Mar 7 2017, 14:08) Всем добр... Mar 7 2017, 12:16 Shivers Цитата(gin @ Mar 7 2017, 14:08) но как в ... Mar 7 2017, 12:26 gin Цитата(Shivers @ Mar 7 2017, 15:26) Снача... Mar 7 2017, 13:03  Timmy Цитата(gin @ Mar 7 2017, 16:03) Из этих в... Mar 7 2017, 13:14   gin Цитата(Timmy @ Mar 7 2017, 16:14) Узнать ... Mar 7 2017, 14:05    Timmy Цитата(gin @ Mar 7 2017, 17:05) То есть я... Mar 7 2017, 14:23     gin Цитата(Timmy @ Mar 7 2017, 17:23) Конечно... Mar 7 2017, 14:44      Dr.Alex Цитата(gin @ Mar 7 2017, 17:44) Ну естест... Mar 7 2017, 14:50      Timmy Цитата(gin @ Mar 7 2017, 17:44) Спасибо... Mar 7 2017, 14:54       gin Цитата(Timmy @ Mar 7 2017, 17:54) set_fal... Mar 7 2017, 16:13        Shivers Цитата(gin @ Mar 7 2017, 19:13) Ведь fals... Mar 7 2017, 17:13        Dr.Alex Цитата(gin @ Mar 7 2017, 19:13) Ведь fals... Mar 7 2017, 18:20         Shivers Все не так страшно. Простой расчет: сигнал сопрово... Mar 8 2017, 08:28          gin Цитата(Shivers @ Mar 8 2017, 11:28) Все н... Mar 10 2017, 07:26  gin Цитата(_Anatoliy @ Mar 30 2017, 14:45) Оч... Mar 30 2017, 12:31     _Anatoliy Цитата(Timmy @ Mar 31 2017, 14:03) Можно ... Mar 31 2017, 11:10 Dr.Alex Цитата(gin @ Mar 7 2017, 14:08) Между ним... Mar 7 2017, 14:39 gin Что то я совсем не так делаю...
Не хочет Квартус ... Mar 30 2017, 07:25 DuHast Цитата(gin @ Mar 30 2017, 10:25) И как мн... Mar 30 2017, 18:49 Golikov A. да вроде не сложно
set_false_path -from [get_clo... Mar 30 2017, 09:58 gin Цитата(Golikov A. @ Mar 30 2017, 12:58) д... Mar 30 2017, 11:42
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|