Comments 12
Схема на рис.9 выполняет простую задачу: принимает на вход несколько 32-разрядных чисел и в зависимости от значения бита управляющего входа производит либо их суммирование, либо вычитание.
Если это не какой-нибудь float, или еще что-то нарушающее ассоциативность, то все входы кроме первого можно просто сложить, а суммирование со многих входов много быстрее попарно-каскадного.
Но да, идея автоперемещения триггеров это здорово. Можно конвейеризовать комбинационную схему просто повесив N слоёв триггеров на выходы, и пусть компилятор сам думает, куда их сдвинуть, причём N можно сделать статическим параметром модуля, даже пожалуй, на чистом verilog.
Алгоритмы и возможности по оптимизации синтеза по power и area в современных синтезаторах не менее мощные и интересные чем оптимизация тайминга. При этом тул всегда принимает во внимание и timing и area и power, все вместе. Жаль, но об этом ни слова не сказано
Отличная первая статья, так держать
Был такой синтезатор Synplify. Раньше Xilinx в ISE даже давал с ним маршрут на Ваш выбор. Вот он так оптимизировал ресурсы и так делал retiming что даже у прилично вылизанных схем уменьшались ресурсы (этот синтезатор например в отличии от Xilinx мог использовать схемы ускоренного переноса как логику, грамотнее Xilinx использовал карты Карно , лучше Xilinx понимал устройство ячеек :) ) ну а retiming практически во всех моих проектах мог поднять тактовую, хотя повторяю там и так руками все делалось. Фантастического качества была вещь. Ну и Xilinx отказался от него, типа чужой синтезатор который показывает результаты лучше Xilinx ..... Где-то до 2006 года пользовался им. А там его убрали с маршрута - стало не удобно.
Синтезатор Xilinx в ISE и в Vivado очень сильно отличаются. Был опыт, когда проект, трассированный в ISE, успешно проходил тесты, но и перенос его кодовой базы и проектных настроек синтеза и имплементации дали совершенно нерабочую схему в Vivado. При этом по размещению элементов схема в Vivado смотрелась намного компактее, тогда как ISE раскидал её на полкристалла. Отличались даже результаты Utilization, и опять не в пользу ISE.
Лечить пришлось написанием сумасшедших блочных констрейнов для Vivado, чтобы трассировка была похожа на результат в ISE. Как ни странно, трюк сработал. Но до сих пор есть впечатление, что что-то при переносе пошло не так.
В ISE синтезатор был плох. Но к сожалению и в Vivado синтезатор тоже очень плохой . Время синтеза огромное, даже выросло относительно ISE, например видно что бывает 20-30 секунд на синтез счетчика на 16 !!!, что совершенно неприемлемо. Ключ Ретайминг у синтезатора практически не улучшает ситуации - а в Synplify значительно улучшал даже для оптимизированных схем.
Описанных Вами проблем с ISE у нас не было. Синхронное проектирование.
Это универсальный синтезатор для почти всех существующих ПЛИС, лет 10 назад его купил Synopsys и продает под тем же именем https://www.synopsys.com/implementation-and-signoff/fpga-based-design/synplify.html
Статья просто бомба. Жду с нетерпением следующих ваших работ.
Стратегии оптимизации HDL-кода и синтезатора нетлиста для FPGA