verali 0 14 сентября, 2016 Опубликовано 14 сентября, 2016 · Жалоба Добрый день! Собрал проект на ПЛИС из IP-блоков: После компиляции TimeQuest показывает, что максимальная скорость около 90 МГц, что для Arria V является очень низкой. В информационных сообщениях появляются Warnings: 1) 1 input pin(s) will use non-dedicated clock routing. Как я понял, мой клок использует путь(пин) не предназначенный для клока. В Connection Guidelines есть два типа клока - clk и pll. Логично предположить, что только ко второму можно подключить pll. Но в pin assignment pll является дополнительной опцией: Следовательно делаю вывод, что в любому clk я могу подключить pll. Верны ли мои предположения? 2) Node: clk was determinated to be a clock but was found without an associated clock assignment. Warning требует от меня где-то (может быть в assignment editor?) указать что этот пин используется как клок(так как клок может быть и клоком и обычным I/O)? Не могу найти, где это указать. Буду благодарен за наводку. 3) PLL cross checking found inconsistent PLL clock settings: was found missing 1 generated clock that corresponds to be a base clock with a period of: 10.000 Тут warning мне говорит, что я не подключил(потерял) клок, который идет на вход ФАПЧ, хотя из первого вложения видно, что внешний клок идет напрямую на ФАПЧ. Сразу скажу - внешний клок 100 МГц идет на ФАПЧ и выходят все те же 100 МГц. В институте так советовал делать преподаватель, ссылаясь на то, что увеличивается надежность всей системы, из-за того, что внешний клок может быть зашумленным, а выход ФАПЧ является чуть ли не прецизионным. 4)В TimeQuest есть так называемый altera_reserved_clock. Что это такое и почему его частота 33 МГц? Связан ли он какие-либо образом с SignalTap? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 14 сентября, 2016 Опубликовано 14 сентября, 2016 · Жалоба 2) Node: clk was determinated to be a clock but was found without an associated clock assignment. Warning требует от меня где-то (может быть в assignment editor?) указать что этот пин используется как клок(так как клок может быть и клоком и обычным I/O)? Не могу найти, где это указать. Буду благодарен за наводку. Этот варнинг говорит о том, что ваш слок не описан должным образом: не указана частота вашего клока и всё, что связано с PLL. Что у вас в sdc? Если вы используете PLL, то в качестве сброса для всех блоков используйте её выход Locked, а не входной reset_n. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
verali 0 15 сентября, 2016 Опубликовано 15 сентября, 2016 · Жалоба Этот варнинг говорит о том, что ваш слок не описан должным образом: не указана частота вашего клока и всё, что связано с PLL. Что у вас в sdc? Сейчас описал sdc (ранее был не знаком с тем, что надо описывать клоки) - warning пропали. Посмотрите пожалуйста, все ли я описал в sdc. Листинг моего sdc: #************************************************************** # Time Information #************************************************************** set_time_format -unit ns -decimal_places 3 #************************************************************** # Create Clock #************************************************************** create_clock -name {altera_reserved_tck} -period 33.333 -waveform { 0.000 16.666 } [get_ports {altera_reserved_tck}] create_clock -name {clk} -period 10.000 -waveform { 0.000 5.000 } [get_ports {clk clk(n)}] #************************************************************** # Create Generated Clock #************************************************************** create_generated_clock -name {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]} -source [get_pins {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|refclkin}] -duty_cycle 50.000 -multiply_by 6 -divide_by 2 -master_clock {clk} [get_pins {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]}] create_generated_clock -name {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk} -source [get_pins {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|vco0ph[0] }] -duty_cycle 50.000 -multiply_by 1 -divide_by 3 -master_clock {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0]} [get_pins {pll_user|pll_duc_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] #************************************************************** # Set Clock Latency #************************************************************** #************************************************************** # Set Clock Uncertainty #************************************************************** set_clock_uncertainty -rise_from [get_clocks {clk}] -rise_to [get_clocks {clk}] -setup 0.050 set_clock_uncertainty -rise_from [get_clocks {clk}] -rise_to [get_clocks {clk}] -hold 0.030 set_clock_uncertainty -rise_from [get_clocks {clk}] -fall_to [get_clocks {clk}] -setup 0.050 set_clock_uncertainty -rise_from [get_clocks {clk}] -fall_to [get_clocks {clk}] -hold 0.030 set_clock_uncertainty -fall_from [get_clocks {clk}] -rise_to [get_clocks {clk}] -setup 0.050 set_clock_uncertainty -fall_from [get_clocks {clk}] -rise_to [get_clocks {clk}] -hold 0.030 set_clock_uncertainty -fall_from [get_clocks {clk}] -fall_to [get_clocks {clk}] -setup 0.050 set_clock_uncertainty -fall_from [get_clocks {clk}] -fall_to [get_clocks {clk}] -hold 0.030 set_clock_uncertainty -rise_from [get_clocks {altera_reserved_tck}] -rise_to [get_clocks {altera_reserved_tck}] -setup 0.050 set_clock_uncertainty -rise_from [get_clocks {altera_reserved_tck}] -fall_to [get_clocks {altera_reserved_tck}] -setup 0.050 set_clock_uncertainty -fall_from [get_clocks {altera_reserved_tck}] -rise_to [get_clocks {altera_reserved_tck}] -setup 0.050 set_clock_uncertainty -fall_from [get_clocks {altera_reserved_tck}] -fall_to [get_clocks {altera_reserved_tck}] -setup 0.050 #************************************************************** # Set Input Delay #************************************************************** #************************************************************** # Set Output Delay #************************************************************** #************************************************************** # Set Clock Groups #************************************************************** set_clock_groups -asynchronous -group [get_clocks {altera_reserved_tck}] #************************************************************** # Set False Path #************************************************************** set_false_path -from [get_keepers {altera_reserved_tdi}] -to [get_keepers {pzdyqx*}] #************************************************************** # Set Multicycle Path #************************************************************** #************************************************************** # Set Maximum Delay #************************************************************** #************************************************************** # Set Minimum Delay #************************************************************** #************************************************************** # Set Input Transition #************************************************************** Если вы используете PLL, то в качестве сброса для всех блоков используйте её выход Locked, а не входной reset_n. Спасибо за совет. Как я понимаю locked используется для синхронизации внешнего сброса с выходной частотой pll? В TimeQuest Timing Analyzer появились три частоты. 1)altera_reserved_tck 2)clk 3)pll_user Максимальные частоты 78, 195 и 262 соответственно.Правильно ли я понимаю, что в зависимости от того, чем я буду тактировать внутреннюю логику ПЛИС (без/с pll) меняется максимальная частота работы ПЛИС? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 15 сентября, 2016 Опубликовано 15 сентября, 2016 · Жалоба Сейчас описал sdc (ранее был не знаком с тем, что надо описывать клоки) - warning пропали. Посмотрите пожалуйста, все ли я описал в sdc.Я не вижу в вашем дизайне altera_reserved_tck. Уберите его и всё, что с ним связано, из sdc. У вас в дизайне нет других входов кроме клока и сброса. Поэтому sdc будет простейшим: set_time_format -unit ns -decimal_places 3 create_clock -name {clk} -period 10.000 [get_ports {clk clk(n)}] derive_pll_clocks -create_base_clocks derive_clock_uncertainty Как я понимаю locked используется для синхронизации внешнего сброса с выходной частотой pll? Locked используется для того, чтобы использовать правильный клок с выхода PLL. Она же не мгновенно начинает входит в режим захвата. Пока она не в захвате, выходной клок использовать нельзя. Правильно ли я понимаю, что в зависимости от того, чем я буду тактировать внутреннюю логику ПЛИС (без/с pll) меняется максимальная частота работы ПЛИС?Вас должно волновать, выполняются ли ваши временные ограничения, а не максимальная частота. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться