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

 
 
> set_false_path Как правильно задать в TimeQuest
gin
сообщение Mar 7 2017, 11:08
Сообщение #1


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

Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682



Всем добрый день!
Есть следующий вопрос - в проекте имеется 2 клоковых домена. Между ними происходит обмен данными. Как задать в TimeQuest условие, чтобы он не учитывал пути между этими доменами в расчете?
Как я понимаю, есть команда set_false_path :

set_false_path -from [get_clocks __sourceClock] -to [get_clocks __destinationClock]

но как в ней описать клоки, которые формируются на внутренних PLL?

Сообщение отредактировал gin - Mar 7 2017, 11:08
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Timmy
сообщение Mar 7 2017, 13:03
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Mar 30 2017, 11:45
Сообщение #3


Утомлённый солнцем
******

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



Цитата(Timmy @ Mar 7 2017, 16:03) *
Для сокращения длинных плохо читаемых автоматически созданных имён можно использовать макроподстановки TCL.

Очень заинтересовало Ваше сообщение. Надоело после команды derive_pll_clocks врукопашную править имена всех клоков на смысловые. Не сможете ли примерчик подкинуть?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Mar 31 2017, 05:10
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 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

Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Mar 31 2017, 06:31
Сообщение #5


Утомлённый солнцем
******

Группа: Свой
Сообщений: 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],естественно сыпятся все ограничения. Тогда приходится ручками перебивать все имена. Я эту ситуацию имел ввиду.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Mar 31 2017, 11:03
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 25th August 2025 - 10:27
Рейтинг@Mail.ru


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