Здравствуйте, уважаемые форумчане.
Есть некий проект, который писался под Xilinx или Actel.
По некой иронии судьбы приходится пихать его в Atmel ATF280.
Штука зверски тормозная, поэтому то, что на Xilinx или Actel шло на 100 МГц на Atmel и на 20 не тянет.
Одна из причин такой тормознутости у этой ПЛИС - у регистров нет синхронного ресета, только асинхронный. Весь проект был написан под синхронный "правильный" ресет. Следовательно синтезатор замутил все сигналы ресета на вход данных тригеров через логику это вызвало дополнительные задержки из-за:
- дополнительной логики на пути сигнала данных тригеров (D)
- сильно разветвленные цепи сигналов ресета по неспециализированным путям что давало задержку только этих цепей >20нс
Отсюда есть несколько вопросов как лучше переделать дизайн. Впринципе уже есть несколько тестируемых вариантов переделок интересует как правильнее.
1)Оставить описание ресета синхронным.
-Улучшить ситуацию включением опции Maximum fanout(благо присутствует).
-Выкинуть ресет отовсюдо откуда можно. Насколько это кстати корректно иметь регистры без сброса? (В изначальном дизайне ресет есть у всех тригеров)
В этом случае у нас вообще не будет "настоящего"(заведенного на соответствующей пин тригера) ресета нигде. Насколько это корректно и надежно для серьезного автономного проекта на ПЛИС с длительным ресурсом работы? Мои предположения - что это не проблема.
2)Переделать проект под асинхронных ресет.
-Заменить везде ресет на асинхронный.
-Выкинуть ресет отовсюдо откуда можно.
Асинхронных ресет будет синхронизироваться через триггеры.
Эскизы прикрепленных изображений