Intel® Quartus® Prime Timing Analyzer Cookbook

ID 683081
Date 11/12/2018
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Multicycle Exceptions

By default, the Timing Analyzer uses a single-cycle analysis to determine both the setup and hold relationship of any register-to-register path. This results in the most restrictive setup and hold requirements. However, multicycle exceptions can be used to relax the setup or hold relationship of any register-to-register path.
Figure 15. Register-to-Register Path

You can apply multicycles to clock-to-clock transfers or to individual registers. Applying multicycles to clock-to-clock transfers affects all the specified setup or hold relationships of the target clocks of register-to-register paths fed by the source and destination clocks.

Multicycle Clock-to-Clock

create_clock -period 10 [get_ports clkA]
create_clock -period 5 [get_ports clkB]
set_multicycle_path -from [get_clocks {clkA}] -to [get_clocks {clkB}] -setup -end 2

In the Multicycle Clock-to-Clock example, the setup relationship is relaxed by an additional destination clock period for any register-to-register path where the source clock is clkA and the destination clock is clkB. This results in registers reg1 and reg2 having a setup relationship of 12.5 ns instead of the default 5 ns. The setup relationship between registers reg2 and reg3 is not affected by the multicycle.

Applying multicycles to individual registers affects only the specified registers setup or hold relationship.

In the Multicycle Register-to-Register example in the figure above, the setup relationship is relaxed by an additional destination clock period for the register-to-register path from register reg1 to register reg2. This results in registers reg1 and reg2 having a setup relationship of 10 ns instead of the default 5 ns. The setup relationship between registers reg2 and reg3 is not affected by the multicycle.

Multicycle Register-to-Register

create_clock -period 10 [get_ports clkA]
create_clock -period 5 [get_ports clkB]
set_multicycle_path -from [get_pins {reg1|q}] -to [get_pins {reg2|d}] -setup -end 2