seemann 0 19 июня, 2015 Опубликовано 19 июня, 2015 (изменено) · Жалоба На самом деле мою проблему можно уменьшить до следующей: в пятом Циклоне нельзя сбросить триггеры в дизайне, у которого рабочая частота 250 МГц если сброс синхронизируется к тому же клоку. Все проблемы в задержках clkctrl как правильно заметил des00. Моё решение заключается в ведении второго 125МГц клока, сдвинутого по фазе с соответствующими multicycles: create_clock -name clk -period $clk_125M_period [get_ports {clk}] create_clock -name clk_2x -period $clk_250M_period [get_ports {clk_2x}] create_clock -name arst_sync_clk -period $clk_125M_period -waveform {6.0 10.0} [get_ports {arst_sync_clk}] set_clock_groups -asynchronous -group { clk clk_2x arst_sync_clk} set_multicycle_path -setup -from [get_registers *iSysSyncReset*rst[0]] -to [all_registers] 2 set_multicycle_path -hold -from [get_registers *iSysSyncReset*rst[0]] -to [all_registers] 1 PLL в SDC нет, дабы было более ясно. Теперь вернёмся к вопросам в стиле: Почему не сделать так как все нормальные люди делают (в Ксайлинксе)? Сброс в Ксайлинксе (по крайней мере в Спартанах) разводиться не через дерево клока как в Алтере а через general routing resources. Там P&R отвечает за дупликацию последнего триггера синхронизирующего сброс. Получается что-то в стиле сбалансированного по задержкам дерева сброса. В Алтере на сброс для каждого клок домена уходит один клок буфер. Их количество измеряется не тысячами, а одним-двум десятком. И если дизайн большой, то иногда приходиться бороться за каждый. Так что, если мы знаем разницу между асинхронными и синхрофазными клоками, то можно кое-где один клок буфер сэкономить. Изменено 19 июня, 2015 пользователем seemann Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться