The way in which a design is partitioned can affect how well the optimizer can optimize the combinatorial logic. If a design is poorly partitioned in the entry phase, logic optimization can suffer. Here are some HDL coding and partitioning guidelines that will help improve logic optimization.
Figure 6.3 Combinatorial Logic Path Split Across Boundaries (Inefficient Use of Design Resources) |
Figure 6.4 Combinatorial Logic Path Grouped Into One Block (Efficient use of Design Resources) |
Partition the design into modules in such a way that all block outputs are registered. This guarantees that no boundaries are imposed on any combinatorial paths, as discussed previously.