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.

Clock Enable Multicycle

You can specify multicycles based on the enabled ports of registers with clock enabled multicycles. For example, the following figure shows a simple circuit where register enable_reg is used to create a registered enabled signal for registers din_a_reg[7..0], din_b_reg[7..0], din_x_reg[7..0], din_y_reg[7..0], a_times_b, and x_times_y.

The enable_reg register generates an enable pulse that is two times the clock period of the register. Therefore, a multicycle exception must be applied for the correct analysis. You must apply a multicycle setup of 2 and a multicycle hold of 1 to the enable-driven register fed by the register enable_reg. The multicycle exception is applied only to register-to-register paths where the destination register is controlled by enable_reg. To accomplish this, you can apply the set_multicycle_path exception to all enable-driven registers. This can be tedious, because all enable-driven registers must be specified. You can also use the combination of set_multicycle_path and get_fanouts.

Figure 18. Clock Enable Multicycle Design

Clock Enable Multicycle Constraints

#Setup multicycle of 2 to enabled driven destination registers
set_multicycle_path 2 -to [get_fanouts [get_pins enable_reg|q] \
-through [get_pins -hierarchical *|ena]] -end -setup

The target of the set_multicycle_path exception is limited to all fan-outs of the enable_reg register that feed the enable port of a register. Use the following option:

[get_fanouts [get_pins enable_reg|q] -through [get_pins -hierarchical *|ena]]

The setup and hold relationships start at the enable_reg register and end at any enable-driven register at 2 and 1, respectively.