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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Описание Multicycle, sdc
des00
сообщение Oct 6 2008, 13:05
Сообщение #16


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(_Anatoliy @ Oct 2 2008, 00:02) *
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 ( 68.1 килобайт ) Кол-во скачиваний: 99
 


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Oct 7 2008, 10:14
Сообщение #17


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

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



Цитата(des00 @ Oct 6 2008, 16:05) *


Большое спасибо!Скачал,разбираюсь.
Сходу:
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 всё равно остаётся равен одному такту:-(( И слак отрицательный,хотя во времянку вроде вписывается.
Прикрепленное изображение

Почему так происходит?
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 7 2008, 12:02
Сообщение #18


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(_Anatoliy @ Oct 7 2008, 05:14) *
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 такта на цикл
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Oct 8 2008, 06:01
Сообщение #19


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

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



Цитата(des00 @ Oct 7 2008, 15:02) *


А,теперь понял.Спасибо!
Похоже проблема решена.Только теперь у меня со временем напряг,придётся временно отложить разбирательство.
А судя по количеству просмотров эта тема интересна не только нам.
Удачи!
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 17 2015, 11:03
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 785
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Кхм, подниму тему.


Хочу описать мультициклы, опираясь только на 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 ( 5 килобайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
blackfin
сообщение Sep 18 2015, 09:01
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 629
Регистрация: 18-04-05
Пользователь №: 4 261



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.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 18 2015, 09:11
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 785
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Так не интересно. Писать констрейны на каждый такой путь (а их буквально десятки) весьма утомительно. Поэтому и хочу использовать clock enable.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 18 2015, 09:27
Сообщение #23


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

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



Я делал так когда-то.
Увы, проекта я не нашёл. Я делал так,как рекомендовал Rysc по ссылке,всё сработало,но что-то мне не понравилось,сейчас не помню.
http://www.alteraforum.com/forum/showthread.php?t=5576
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 18 2015, 14:20
Сообщение #24


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(andrew_b @ Sep 18 2015, 16:11) *
Так не интересно. Писать констрейны на каждый такой путь (а их буквально десятки) весьма утомительно. Поэтому и хочу использовать clock enable.

ага. и надеяться что квартус не заведет clock enable на логику, как сигнал какого нить мультиплексора или логики


--------------------
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 18 2015, 17:02
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 785
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(des00 @ Sep 18 2015, 18:20) *
ага. и надеяться что квартус не заведет clock enable на логику, как сигнал какого нить мультиплексора или логики
И тем не менее.
Можете взглянуть на проект?
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 18 2015, 18:11
Сообщение #26


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(andrew_b @ Sep 19 2015, 00:02) *
Можете взглянуть на проект?

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 внутри его. Если запретить использовать регистры в дсп слайсах, то все чики пики.


--------------------
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 19 2015, 14:11
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 785
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(des00 @ Sep 18 2015, 22:11) *
похоже подобный метод описания не работает для регистров внутри ДСП слайсов, т.к. TQ не видит регистров с пином ena внутри его.
Какая жаль!
Благзаин, в понедельник буду пробовать.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 19 2015, 17:50
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 4 189
Регистрация: 17-02-06
Пользователь №: 14 454



а определить группу сигналов или элементов по маске и для них описать?
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 20 2015, 05:33
Сообщение #29


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(andrew_b @ Sep 19 2015, 21:11) *
Какая жаль!

ну чисто формально он прав. пинов ena у регистров внутри dsp слайса действительно нет. даже в чип эдиторе к ним на ena ничего не подходит. есть ENA[2:0] у самого DSP слайса, но вот TQ такого не находит


--------------------
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 20 2015, 17:10
Сообщение #30


Профессионал
*****

Группа: Свой
Сообщений: 1 785
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(des00 @ Sep 20 2015, 09:33) *
ну чисто формально он прав. пинов ena у регистров внутри dsp слайса действительно нет. даже в чип эдиторе к ним на ena ничего не подходит.
Это спорный вопрос. Из рисунка не совсем понятно, что там куда подходит. Может, просто не нарисовано. Куда тогда расходятся ажно целых три ENA, которые заходят на DSP-блок?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th August 2017 - 17:20
Рейтинг@Mail.ru


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