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

 
 
 
Reply to this topicStart new topic
> Временные ограничения FIR Compiler, Сомнения при их задании
DENth
сообщение Nov 7 2013, 16:48
Сообщение #1


Участник
*

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



Приветствую, коллеги!

Задался вопросом - правильно ли у меня заданы временные ограничения на подпроект с фильтром, созданным в FIR Compiler'е.

Дано: Cyclone 2. Фильтр реализован в структуре Multi-Cycle. Входные данные обрабатываются каждый третий клок фильтра. Выходные порождаются также на каждый третий клок. Данные поступают с частотой 40Mhz. Внутренняя частота фильтра, соответственно, 120 Мгц. Полностью проект занимает порядка 90% всех ресурсов ПЛИС. И если ранее временной анализатор не выдавал слаков по сетапу, то сейчас они начали появляться. Fmax упала до 118МГц. Слаки около 0,3 нс. И в реальной работе модуля визуально проявляются кратковременные выбросы на обрабатываемом сигнале.

Вот я и задумался, а правильно ли у меня заданы ограничения? В руководстве на FIR Compiler нет ничего про временные ограничения. Есть только требования, касающиеся редактора назначений. Попытки разобраться в структуре фильтра толком ничего не дают, так как глубже основных блоков RTL Viewer не пускает. Да и там все равно не разобраться. Но ведь если задать мультицикл в ограничениях, возможно фиттеру полегчает и он сможет все развести без слаков?

Ограничения сейчас следующие:

Код
set_multicycle_path 3 -from {ADCcontroller:ADCcnt|adc_*[*]~reg} -to {RadioFilter:RF*|filter:RadioFilter|filter_ast:filter_ast_inst|auk_dspip_avalon_streaming_sink_fir_91:sink|at_sink_data_int[*]} -setup
set_multicycle_path 2 -from {ADCcontroller:ADCcnt|adc_*[*]~reg} -to {RadioFilter:RF*|filter:RadioFilter|filter_ast:filter_ast_inst|auk_dspip_avalon_streaming_sink_fir_91:sink|at_sink_data_int[*]} -hold


Указывают на то, что данные из регистров, в которых хранятся данные с АЦП, до входных регистров Avalon интерфейса FIR Compiler'а - мультицикловые.

Go to the top of the page
 
+Quote Post
DENth
сообщение Nov 13 2013, 18:43
Сообщение #2


Участник
*

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



Очень жаль, что не смог найти здесь ответа...
Вопрос всё еще актуален.

Давайте попробую спросить по другому.
Многие из вас пользуются готовыми мегафункциями. Расскажите, если не сложно, ваши действия при наличии проблем с выполнением временных органичений с ними. Насколько я понимаю, вникать в устройство той или иной функции нет необходимости. В этом ее удобство применения. Но вот возникла ситуация - слаки именно в модуле, реализованном в мегафункции. И что делать?

Для своего случая - ответа найти не смог. Лишь файл tcl-скрипта с ограничениями на проект. Вот он:

Код
proc add_fir_constraints {args} {

    package require ::quartus::project
    package require ::quartus::flow


    # Compiler Assignments remove
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "tdl_da_lc"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "lc_tdl_strat"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "lc_tdl_strat_cen"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "sadd_lpm"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "tsadd_lpm"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "sadd_lpm_cen"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "tsadd_lpm_cen"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "sadd_cen"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "tsadd_cen"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "lc_tdl_mr"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "lc_tdl_en"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "sadd_reg_top"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "sadd_lpm_cen"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "tsadd_reg_top_cen"
    set_global_assignment -name "DSP_BLOCK_BALANCING" -remove -entity "lp_filter_st"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "mlu_nd_lc"
    ###########################################################################
#####################
    # uncomment the following lines if you want to disable shift register recognition              #
    ###########################################################################
#####################
    #set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "msft_data"
    #set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "msft_data" "OFF"
    #set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "msft_data_reseq"
    #set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "msft_data_reseq" "OFF"
    #set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "msft_data_reseq_mc"
    #set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "msft_data_reseq_mc" "OFF"
    #set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -remove -entity "msft_reseq_mc"
    #set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "msft_reseq_mc" "OFF"
    ###########################################################################
#####################
    
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "tdl_da_lc" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "sadd_lpm" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "tsadd_lpm" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "sadd_lpm_cen" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "tsadd_lpm_cen" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "sadd" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "tsadd" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "lc_tdl_strat" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "lc_tdl_mr" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "lc_tdl_en" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "lc_tdl_strat_cen" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "sadd_reg_top_cen" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "tsadd_reg_top_cen" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "sadd_cen" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "sadd_reg_top" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "tsadd_reg_top" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "tsadd_lpm_reg_top_cen" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "sadd_lpm_reg_top_cen" "OFF"
    set_global_assignment -name "AUTO_SHIFT_REGISTER_RECOGNITION" -entity "mlu_nd_lc" "OFF"
    set_global_assignment -name "DSP_BLOCK_BALANCING" -entity "lp_filter_st" "DSP BLOCKS"
}
add_fir_constraints


Сообщение отредактировал DENth - Nov 13 2013, 18:43
Go to the top of the page
 
+Quote Post
Timmy
сообщение Nov 13 2013, 19:42
Сообщение #3


Знающий
****

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



Мультицикловых путей в Multi-cycle реализации фильтра нет. Странно, что фильтр не работает на максимальной для клокового дерева частоте, возможно, из-за слишком плотной упаковки. Я бы написал такой фильтр сам(для Латтиса он у меня есть, там родной вообще никуда не годится), это не сложно, и при необходимости увеличил латентность для критических путей. Плюс ручная расстановка блоков при необходимости.
Go to the top of the page
 
+Quote Post
DENth
сообщение Nov 14 2013, 15:55
Сообщение #4


Участник
*

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



Я конечно понимаю, что работаю с ПЛИСиной на грани ее возможностей. Но была необходимость использования корпуса с 208 выводами, а BGA технология для меня пока не совсем доступна. Выбор пал на Cyclone II. Самый большой по количеству вентелей в этом корпусе - EP2C8. С классом скорости "8". Его производительность из даташита:



Надо думать про кристаллы с бОльшим количеством вентилей. Но хочется учесть это в будущем, а сейчас провести какие-нибудь работы по оптимизации. Но "черный ящик" такой черный ящик =)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:29
Рейтинг@Mail.ru


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