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

 
 
> 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
Ответов
Shivers
сообщение Mar 7 2017, 12:26
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Цитата(gin @ Mar 7 2017, 14:08) *
но как в ней описать клоки, которые формируются на внутренних PLL?

Сначала объявить эти клоки, а потом сделать их асинхронными через set_false_path.
Go to the top of the page
 
+Quote Post
gin
сообщение Mar 7 2017, 13:03
Сообщение #3


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

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



Цитата(Shivers @ Mar 7 2017, 15:26) *
Сначала объявить эти клоки, а потом сделать их асинхронными через set_false_path.


Я наверное не совсем точно описал задачу.
Описаны входные клоки:

Код
derive_clock_uncertainty
create_clock -period "50 MHz" -name {clk_sys} {clk_sys}
create_clock -period "322.265625 MHz" -name {clk_ref} {clk_ref}
derive_pll_clocks


Из этих входных клоков затем формируются клоки (на PLL), на которых работает внутренняя логика. И для этих внутренних клоков нужно написать false path. Но эти внутренние клоки имеют какие то сложные внутренние названия. Вот как их узнать и задать?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Mar 7 2017, 13:14
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(gin @ Mar 7 2017, 16:03) *
Из этих входных клоков затем формируются клоки (на PLL), на которых работает внутренняя логика. И для этих внутренних клоков нужно написать false path. Но эти внутренние клоки имеют какие то сложные внутренние названия. Вот как их узнать и задать?

Узнать - из отчёта TimeQuest по всем клокам.
Go to the top of the page
 
+Quote Post
gin
сообщение Mar 7 2017, 14:05
Сообщение #5


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

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



Цитата(Timmy @ Mar 7 2017, 16:14) *
Узнать - из отчёта TimeQuest по всем клокам.


То есть я правильно понял Вас?
Вот например, в отчете у меня есть клок 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

и есть клок pll_sys_inst|pll_sys_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk

и я могу их использовать в команде set_false_path как sourceClock и destinationClock

Go to the top of the page
 
+Quote Post
Timmy
сообщение Mar 7 2017, 14:23
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(gin @ Mar 7 2017, 17:05) *
То есть я правильно понял Вас?
Вот например, в отчете у меня есть клок 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

и есть клок pll_sys_inst|pll_sys_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk

и я могу их использовать в команде set_false_path как sourceClock и destinationClock

Конечно, можете, только в фигурные скобки обязательно ставьте, или через макроподстановку.
Go to the top of the page
 
+Quote Post
gin
сообщение Mar 7 2017, 14:44
Сообщение #7


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

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



Цитата(Timmy @ Mar 7 2017, 17:23) *
Конечно, можете, только в фигурные скобки обязательно ставьте, или через макроподстановку.


Спасибо!
Т.е. команда будет выглядеть следующим образом?

set_false_path -from {get_clocks 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
} -to {get_clocks pll_sys_inst|pll_sys_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk
}
И чем отличаются фигурные скобки от квадратных? В Альтеровском примере они вроде как квадратные

Цитата(Dr.Alex @ Mar 7 2017, 17:39) *
Если таки "происходит обмен данными", то фолспасить есесно нельзя.

Можно правда и совсем не констрейнить, но только если этот обмен идёт через чужую корку (например фифо), которая уже правильно законстрейнена внутри.


Ну естественно там все по феншую сделано biggrin.gif , обмен происходит без потерь данных. Вопрос именно в том, чтобы дать указание анализатору времянок не учитывать этот асинхронный путь, так как он его правильно учитывать не сможет, а только отчет мне перегружает своими предупреждениями.

Сообщение отредактировал gin - Mar 7 2017, 14:45
Go to the top of the page
 
+Quote Post
Timmy
сообщение Mar 7 2017, 14:54
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(gin @ Mar 7 2017, 17:44) *
Спасибо!
Т.е. команда будет выглядеть следующим образом?

set_false_path -from {get_clocks 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
} -to {get_clocks pll_sys_inst|pll_sys_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk
}
И чем отличаются фигурные скобки от квадратных? В Альтеровском примере они вроде как квадратные

set_false_path -from [get_clocks {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|divclk}
] -to [get_clocks {pll_sys_inst|pll_sys_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divcl
k}
]
По поводу скобок учебник языка TCL почитайте. В большинстве примеров фигурные скобки не нужны, так как имена клоков не содержат внутри себя символов макроподстановки( [] и $ )
Go to the top of the page
 
+Quote Post
gin
сообщение Mar 7 2017, 16:13
Сообщение #9


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

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



Цитата(Timmy @ Mar 7 2017, 17:54) *
set_false_path -from [get_clocks {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|divclk}
] -to [get_clocks {pll_sys_inst|pll_sys_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divcl
k}
]
По поводу скобок учебник языка TCL почитайте. В большинстве примеров фигурные скобки не нужны, так как имена клоков не содержат внутри себя символов макроподстановки( [] и $ )



Спасибо! Буду теперь знать, а то с tcl практически не приходилось иметь дело

Цитата(Dr.Alex @ Mar 7 2017, 17:50) *
Сами-то поняли чё сказали? Если УЖЕ всё по феншую, то и никаких указаний от вас уже не требуется.

Если же переход через клок-домены всё-таки самопальный и никто кроме вас его ещё не констрейнил, то констрейнить НАДО, но ФОЛСПАСИТЬ НЕЛЬЗЯ.


Не понял, а почему собственно нельзя?
Ведь false path просто убирает из анализа данные пути (которые между двумя клоками), так как их фактически невозможно обконстрейтить, они ведь асинхронные.

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
|- - Dr.Alex   Цитата(gin @ Mar 7 2017, 17:44) Ну естест...   Mar 7 2017, 14:50
|- - 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
- - Timmy   Цитата(gin @ Mar 7 2017, 14:08) Всем добр...   Mar 7 2017, 13:03
|- - _Anatoliy   Цитата(Timmy @ Mar 7 2017, 16:03) Для сок...   Mar 30 2017, 11:45
|- - gin   Цитата(_Anatoliy @ Mar 30 2017, 14:45) Оч...   Mar 30 2017, 12:31
|- - Timmy   Цитата(_Anatoliy @ Mar 30 2017, 14:45) Оч...   Mar 31 2017, 05:10
|- - _Anatoliy   Цитата(Timmy @ Mar 31 2017, 08:10) Кодset...   Mar 31 2017, 06:31
|- - Timmy   Цитата(_Anatoliy @ Mar 31 2017, 09:31) Сп...   Mar 31 2017, 11:03
|- - _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 Текстовая версия Сейчас: 30th July 2025 - 04:21
Рейтинг@Mail.ru


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