des00 25 6 октября, 2008 Опубликовано 6 октября, 2008 · Жалоба o'k! Такс, появилось немного свободного времени. Т.к. у меня с графикой проблемы, накидал похожий на альтеровский пример проект, приложил в аттач (расширение *.txt сменить на *.qar). В общем путем ковыряний могу сделать такие умозаключения : ИМХО 1. Пути по данным работающие с enable надо описывать как "путь от тригера к которому приходит enable к тригеру на который приходит enable). -from [get_fanouts [get_pins -hier div_by_two|q*] -through [get_pins -hier *|*ena*]] \ -to [get_fanouts [get_pins -hier div_by_two|q*] -through [get_pins -hier *|*ena*]] только в этом случае сам путь сигнала enable корректно обрабатывается. Если оставить как в альтеровском примере -to [get_fanouts [get_pins -hier div_by_two|q*] -through [get_pins -hier *|*ena*]] то констрейн будет наложен и на пути от самого тригера enable 2. Такой подход объявления мультицикловых путей для данного альтеровского примера применять нельзя. Т.к. на входе и на выходе комбинационного умножителя стоят регистры с enable. И ква естественно будет считать что умножитель тоже мультицикловый путь, что не так. Я нашел единственный путь решения данной проблемы, разорвать этот путь регистром на высокой тактовой без сигнала разрешения. Ну вот, как то так мне видится сие с моей чайниковской точки зрения. Надеюсь гуру поправят где я ошибаюсь. %) Удачи !!! ЗЫ. Алтеровцы не хорошие люди, зачем делать доку "AN 481: Applying Multicycle Exceptions in the TimeQuest Timing Analyzer" рассматривать в ней 7 теоритических случаев и 5 примеров, и при этом как партизаны умолчать о широко распространенном и самом простом методе построения мультиклокового проекта. Кроме примера http://www.altera.com/support/examples/tim...lticycle%20path описания использования функции get_fanouts в доках я не нашел. multicycle_by_des00.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 7 октября, 2008 Опубликовано 7 октября, 2008 · Жалоба Большое спасибо!Скачал,разбираюсь. Сходу: 1).Что это за строки? set_multicycle_path 2 -from [get_clocks {fast_clk}] -to [get_clocks {virt_clk_out}] -setup set_multicycle_path 1 -from [get_clocks {fast_clk}] -to [get_clocks {virt_clk_out}] -hold Ведь такого клока (virt_clk_out) физически нет... А в списке ТаймКвеста он есть... Не понял. 2). Почему-то SetupRelationship всё равно остаётся равен одному такту:-(( И слак отрицательный,хотя во времянку вроде вписывается. Почему так происходит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 7 октября, 2008 Опубликовано 7 октября, 2008 · Жалоба 1).Что это за строки? set_multicycle_path 2 -from [get_clocks {fast_clk}] -to [get_clocks {virt_clk_out}] -setup set_multicycle_path 1 -from [get_clocks {fast_clk}] -to [get_clocks {virt_clk_out}] -hold это виртуальный клок, для корректного анализа tsu/th на виртуальном внешнем регистре. Т.к. TimeQuest использует именно такое представление при анализе. Подробнее смотрите в хендбуке на ква и mnl_timequest_cookbook.pdf :: I/O Constraints. Почему-то SetupRelationship всё равно остаётся равен одному такту:-(( И слак отрицательный,хотя во времянку вроде вписывается. Какой именно сигнал вы смотрите ? Проект выложен в состоянии в котором времянка не выполняется. Я проверял правильность так в TimeQuest е вывел "Report All core timing" и смотрел картинки по путям. На первом рисунке заваленный путь от div_by_two до регистра умножителя, в который записывается результат. Тут нет никакого мультицикла, div_by_two для этого регистра нужен каждый такт. На втором рисунке пути между последовательными регистрами, там все четко 2 такта на цикл Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 8 октября, 2008 Опубликовано 8 октября, 2008 · Жалоба А,теперь понял.Спасибо! Похоже проблема решена.Только теперь у меня со временем напряг,придётся временно отложить разбирательство. А судя по количеству просмотров эта тема интересна не только нам. Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 17 сентября, 2015 Опубликовано 17 сентября, 2015 · Жалоба Кхм, подниму тему. Хочу описать мультициклы, опираясь только на clock enable. Но что-то не выходит у меня каменный цветок. Делаю так, как написано везде в интернете, но результаты временного анализа такие, как будто никаких мультициклов нет. В приложенном архиве проект (Quartus, VHDL, расширение txt заменить на qar) фильтра-дециматора 2:1. Это часть одного проекта, таких фильтров там несколько, один из них вырезан для демонстрации проблемы. Длительность входного отсчёта -- 2 периода клока. Данные сопровождаются сигналом валидности длительностью 1 период, то есть символьная скорость на входе в два раза ниже тактовой (это первый мультицикл). Децимация делается путём захвата каждого второго состояния линии задержки. Далее конвейер: сумматоры, умножители, снова сумматоры. Все регистры в этом конвейере управляются одним clock enable и щёлкают, соответственно, каждый 4-й фронт. При тактовой 250 МГц это составляет 16 нс, но ТаймКвест почему-то упорно считает, что от умножителя до сумматора 4 нс, а не 16 нс, то есть один период клока, а не 4. Умучился я уже. Видимо, я что-то делаю неправильно. С Xilinx у меня такой проблемы не возникало: там просто пишешь TIMESPEC FROM CE TO CE, и всё. В sdc всё несколько сложнее. Просьба наставить на путь истинный. fir_dec_2.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 18 сентября, 2015 Опубликовано 18 сентября, 2015 · Жалоба Quartus'а сейчас под рукой нет, но Xilinx рекомендует добавить две строки в SDC: set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D] set_multicycle_path 1 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D] См. UG903, стр. 101. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 18 сентября, 2015 Опубликовано 18 сентября, 2015 · Жалоба Так не интересно. Писать констрейны на каждый такой путь (а их буквально десятки) весьма утомительно. Поэтому и хочу использовать clock enable. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 18 сентября, 2015 Опубликовано 18 сентября, 2015 · Жалоба Я делал так когда-то. Увы, проекта я не нашёл. Я делал так,как рекомендовал Rysc по ссылке,всё сработало,но что-то мне не понравилось,сейчас не помню. http://www.alteraforum.com/forum/showthread.php?t=5576 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 18 сентября, 2015 Опубликовано 18 сентября, 2015 · Жалоба Так не интересно. Писать констрейны на каждый такой путь (а их буквально десятки) весьма утомительно. Поэтому и хочу использовать clock enable. ага. и надеяться что квартус не заведет clock enable на логику, как сигнал какого нить мультиплексора или логики Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 18 сентября, 2015 Опубликовано 18 сентября, 2015 · Жалоба ага. и надеяться что квартус не заведет clock enable на логику, как сигнал какого нить мультиплексора или логикиИ тем не менее. Можете взглянуть на проект? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 18 сентября, 2015 Опубликовано 18 сентября, 2015 · Жалоба Можете взглянуть на проект? set_multicycle_path 2 -to [get_fanouts [get_registers {*DecCE*}] -through [get_pins -hier *|*ena*]] -setup set_multicycle_path 1 -to [get_fanouts [get_registers {*DecCE*}] -through [get_pins -hier *|*ena*]] -hold вот это, кое где дало нормальную картину. НО похоже подобный метод описания не работает для регистров внутри ДСП слайсов, т.к. TQ не видит регистров с пином ena внутри его. Если запретить использовать регистры в дсп слайсах, то все чики пики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 19 сентября, 2015 Опубликовано 19 сентября, 2015 · Жалоба похоже подобный метод описания не работает для регистров внутри ДСП слайсов, т.к. TQ не видит регистров с пином ena внутри его.Какая жаль! Благзаин, в понедельник буду пробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 19 сентября, 2015 Опубликовано 19 сентября, 2015 · Жалоба а определить группу сигналов или элементов по маске и для них описать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 сентября, 2015 Опубликовано 20 сентября, 2015 · Жалоба Какая жаль! ну чисто формально он прав. пинов ena у регистров внутри dsp слайса действительно нет. даже в чип эдиторе к ним на ena ничего не подходит. есть ENA[2:0] у самого DSP слайса, но вот TQ такого не находит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 20 сентября, 2015 Опубликовано 20 сентября, 2015 · Жалоба ну чисто формально он прав. пинов ena у регистров внутри dsp слайса действительно нет. даже в чип эдиторе к ним на ena ничего не подходит.Это спорный вопрос. Из рисунка не совсем понятно, что там куда подходит. Может, просто не нарисовано. Куда тогда расходятся ажно целых три ENA, которые заходят на DSP-блок? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться