Vivado® synthesis comes with many strategies and global settings that you can use to customize how your design is synthesized. This Figure shows the available, pre-defined strategies in the Synthesis Settings, and Table: Vivado Preconfigured Strategies provides a side-by-side comparison of the strategy settings.
You can override certain settings, such as -retiming, using attributes or XDC files in the RTL or XDC files for specific hierarchies or signals; however, in general, options affect the whole design.
As designs become more complex, the application of such settings can limit your design from reaching its’ full potential. Certain hierarchies in a design might work better with different options than others. This Figure shows a medium-sized design that has many different types of hierarchy.
One option is to synthesize such hierarchies in out of context (OOC) mode; this is effective, but complicates the design flow. The OOC flow separates the hierarchies that are assigned to be synthesized in OOC mode, and runs them separately from the other parts of the design. This means that synthesis runs more than one time per design. Also, the OOC constraints must be separated from the constraints of the rest of the design, adding even more complexity.
The Block-Level Synthesis flow (BLOCK_SYNTH) uses a property that lets you use certain global settings and strategies on specific levels of hierarchy in a top-down flow that is differs from the top level of the full design.