Перейти к содержанию
    

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Большое спасибо!Скачал,разбираюсь.

Сходу:

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 всё равно остаётся равен одному такту:-(( И слак отрицательный,хотя во времянку вроде вписывается.

post-18832-1223374423_thumb.jpg

Почему так происходит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 такта на цикл

post-3453-1223380774_thumb.jpg

post-3453-1223380781_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

А,теперь понял.Спасибо!

Похоже проблема решена.Только теперь у меня со временем напряг,придётся временно отложить разбирательство.

А судя по количеству просмотров эта тема интересна не только нам.

Удачи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

Хочу описать мультициклы, опираясь только на 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так не интересно. Писать констрейны на каждый такой путь (а их буквально десятки) весьма утомительно. Поэтому и хочу использовать clock enable.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делал так когда-то.

Увы, проекта я не нашёл. Я делал так,как рекомендовал Rysc по ссылке,всё сработало,но что-то мне не понравилось,сейчас не помню.

http://www.alteraforum.com/forum/showthread.php?t=5576

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так не интересно. Писать констрейны на каждый такой путь (а их буквально десятки) весьма утомительно. Поэтому и хочу использовать clock enable.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Можете взглянуть на проект?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можете взглянуть на проект?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

похоже подобный метод описания не работает для регистров внутри ДСП слайсов, т.к. TQ не видит регистров с пином ena внутри его.
Какая жаль!

Благзаин, в понедельник буду пробовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какая жаль!

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну чисто формально он прав. пинов ena у регистров внутри dsp слайса действительно нет. даже в чип эдиторе к ним на ena ничего не подходит.
Это спорный вопрос. Из рисунка не совсем понятно, что там куда подходит. Может, просто не нарисовано. Куда тогда расходятся ажно целых три ENA, которые заходят на DSP-блок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...