5.2.12. Delay Lines
If your design includes a module that delays a bus by some number of clock cycles, the Compiler may implement such structures using the altshift_taps Intel® FPGA IP. When this implementation occurs, the critical chain includes the design hierarchy of altshift_taps:r_rtl_0, indicating that synthesis replaces the bank of registers with the altshift_taps IP core.
When the Fitter places the chain of registers so close together, the Fitter cannot meet hold time requirements when using any intermediate Hyper-Register locations. Turning off the Auto Shift Register Replacement option for the bank of registers prevents synthesis from using the altshift_taps IP core, and resolves any short path part of that critical chain.
Consider whether a RAM-based FIFO implementation is an acceptable substitute for a register delay line. If one function of the delay line is pipelining routing (to move signals a long distance across the chip), then a RAM-based implementation is typically not an acceptable substitute. If you do not require movement of data over long distance, a RAM-based implementation is a compact method to delay a bus of data.
Did you find the information on this page useful?