В статье будет рассмотрена работа синтезатора нетлиста, его возможности по оптимизации кода и трудности, с которыми он может столкнуться. Показаны две техники написания кода логических схем на Verilog в зависимости от преследуемых целей оптимизации проекта на этапе синтеза. А также разбор некоторых настроек синтезатора Xilinx Vivado, которые призваны пытаться оптимизировать логическую схему за разработчика. В конце мы возьмём модуль, который попробуем привести к рабочему состоянию исключительно за счёт возможностей синтезатора.
Сразу скажу, что возможности синтезатора не настолько велики, чтобы любой код превратить в рабочую схему, но знать о них полезно. Например, сравнение схем и отчётов, полученных с различными значениями настроек синтезатора, могут стать отправной точкой для поиска узкого места в коде и его устранения.