Задался вопросом - правильно ли у меня заданы временные ограничения на подпроект с фильтром, созданным в 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
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'а - мультицикловые.
