As you code your design, be aware of the logic being inferred. Monitor the following conditions for additional pipelining considerations:
Cones of logic with large fanin
For example, code that requires
large buses or several combinational signals to compute an output.
Blocks with restricted placement or slow clock-to-out or large setup requirements
For example, block RAMs without output registers or arithmetic
code that is not appropriately pipelined.
Forced placement that causes long routes
For example, a pinout
that forces a route across the chip might require pipelining to allow for
high-speed operation.
Logic comprised of large XOR functions
Large XOR functions often have high switch rates that can generate large dynamic power dissipation. Pipelining these functions can reduce switching, which positively impacts power consumption of the described circuit.
In the following figure the clock speed is limited by:
Clock-to out-time of the source flip-flop
Logic delay through four levels of logic
Routing associated with the four function generators
Setup time of the destination register
Figure 1. Before Pipelining Diagram
The following figure is an example of the same data path shown in the Before
Pipelining diagram. Because the flip-flop is contained in the same slice as the function
generator, the clock speed is limited by the clock-to-out time of the source flip-flop,
the logic delay through one level of logic, one routing delay, and the setup time of the
destination register. In this example, the system clock runs faster after pipelining
than before pipelining.