Escolar Documentos
Profissional Documentos
Cultura Documentos
2017.11.21
This manual contains a collection of design scenarios, constraint guidelines, and recommendations. You
must be familiar with the Timing Analyzer and the basics of Synopsys* Design Constraints (SDC) to
properly apply these guidelines.
D Q D Q
A B
clk
0 6 10 20 30
clk
Offset Clocks
When you constrain clocks in the Timing Analyzer, the first rising or falling edge of a clock occurs at an
absolute 0 by default. You can create an offset for the clock with the -waveform option.
Intel Corporation. All rights reserved. Intel, the Intel logo, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus and Stratix words and logos are trademarks of
Intel Corporation or its subsidiaries in the U.S. and/or other countries. Intel warrants performance of its FPGA and semiconductor products to current ISO
specifications in accordance with Intel's standard warranty, but reserves the right to make changes to any products and services at any time without notice. 9001:2008
Intel assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly Registered
agreed to in writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying on any published information
and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
www.altera.com
101 Innovation Drive, San Jose, CA 95134
MNL-01035
2 Basic Clock Divider Using -divide_by 2017.11.21
D Q D Q
clkA
A B
clkB
0 2.5 5 10 20 30
clkA
clkB
Send Feedback
MNL-01035
2017.11.21 Basic Clock Divider Using -divide_by 3
D Q D Q
A B
D Q
clk
CLRN
DIV
0 5 10 20 30
clk
clkdiv
You can also create a divide-by clock with the -edges option which allows you to specify the rising, falling,
and next rising edge for a clock.
Send Feedback
MNL-01035
4 Toggle Register Generated Clock 2017.11.21
D Q D Q
CLRN CLRN
A B
D Q
clk
CLRN
DIV
1 2 3 4 5 6 7
clk
clkdiv
Send Feedback
MNL-01035
2017.11.21 PLL Clocks 5
PLL Clocks
This section describes examples of the derive_pll_clocks, create_clock, and
create_generated_clock constraints.
Phase-locked loops (PLLs) are used to perform clock synthesis in Intel® FPGAs. Constrain all output
clocks for the proper analysis. The ALTPLL IP core incorporates PLL circuits in Intel FPGAs into your
design.
You can constrain a PLL with the following methods:
• Create base clocks and PLL output clocks automatically
• Create base clocks manually and PLL output clocks automatically
• Create base clocks manually and PLL output clocks manually
This section shows the advantages for each method.
Figure 6: ALTPLL IP core
altpll
c0
inclk0
clk inclk0 frequency: 100.000 MHz c1
Operation Mode: Normal locked
Clk Ratio Ph (dg) DC (10%)
c0 1/1 0.00 50.00
c1 2/1 0.00 50.00
Send Feedback
MNL-01035
6 Multi-Frequency Analysis 2017.11.21
To automatically constrain all inputs and outputs, use the derive_pll_clocks command with the -
create_base_clocks option. The Timing Analyzer determines the correct settings based on the IP
Catalog instantiation of the PLL.
derive_pll_clocks -create_base_clocks
Method 2 – Create Base Clocks Manually and PLL Output Clocks Automatically
With this method, you can manually constrain the input clock of the PLL and allow the Timing Analyzer
to automatically constrain the output clocks of the PLL. In addition, you can specify a different input clock
frequency instead of the input clock frequency specified in the ALTPLL IP core. The ALTPLL IP core
automatically creates PLL output clocks with the specified parameters. You can try different input clock
frequencies, while keeping the same PLL output clock parameters.
Note: Ensure that any input clock frequency specified is compatible with the currently configured PLL.
You can use this method with the derive_pll_clocks command and manually create the input clock for
the PLL.
Multi-Frequency Analysis
Some designs require multiple clocks driving into the FPGA, where one clock might be faster or slower
than the other.
Send Feedback
MNL-01035
2017.11.21 Clock Multiplexing 7
Clock Multiplexing
With clock multiplexing, you can select from two or more clocks with the create_clock and
set_clock_groups constraints.
Figure 7: Constraints for a Typical 2:1 Clock Multiplexer
D Q D Q
mux21 A B
clkA data0
result
clkB data1
CLKMUX sel
clksel
D Q D Q
A B
clk
Send Feedback
MNL-01035
8 PLL Clock Switchover 2017.11.21
-name clkA \
[get_ports {clk}]
# clkB is 20ns assigned to the same port
# Requires -add option
create_clock \
-period 20.000 \
-name clkB \
[get_ports {clk}] \
-add
set_clock_groups \
-exclusive \
-group {clkA} \
-group {clkB}
altpll
inclk0 c0
clk0 inclk0 frequency: 100.000 MHz
inclk1 frequency: 50.000 MHz locked
inclk1
clk1 Operation Mode: Normal
areset
rst Clk Ratio Ph (dg) DC (10%)
clkswitch c0 1/1 0.00 50.00
clk_switch
Send Feedback
MNL-01035
2017.11.21 I/O Constraints 9
I/O Constraints
Input and Output Delays with Virtual Clocks
All input and output delays should reference a virtual clock. With that virtual clock, the Timing Analyzer
can derive and apply the correct clock uncertainty values when you use the derive_clock_uncertainty
command. If the input and output delays reference base clocks or PLL clocks rather than virtual clocks, the
intra- and inter-clock transfer clock uncertainties, determined by derive_clock_uncertainty, are
incorrectly applied to the I/O ports. Also, with virtual clocks, additional external clock uncertainties can
be applied independent of the clock uncertainties determined by derive_clock_uncertainty.
The properties of the virtual clock must be identical to the original clock used to clock either the input
(input delay) or output (output delay) ports.
Figure 10: Chip-to-Chip Design with Virtual Clocks as Input/Output Ports
clkA clkB
Send Feedback
MNL-01035
10 Tri-State Outputs 2017.11.21
Tri-State Outputs
Tri-state outputs allow either a valid data signal or a high impedance signal to be driven out of an output
or I/O port. The timing of either signal is important in the overall system timing of the design.
The timing constraints for tri-state outputs are identical to regular output ports.
Send Feedback
MNL-01035
2017.11.21 System Synchronous Input 11
oe_ctrl
data tri_out
clk
# Base clock
create_clock [get_ports {clk}] \
-name {clk} \
-period 10.0 \
-waveform {0.0 5.0}
# Virtual clock for the output port
create_clock \
-name {clk_virt} \
-period 10.0 \
-waveform {0.0 5.0}
# Output constraints
set_output_delay 2.0 \
-max \
-clock [get_clocks {clk_virt}] \
[get_ports {tri_out}]
set_output_delay 1.0 \
-min \
-clock [get_clocks {clk_virt}] \
[get_ports {tri_out}]
Send Feedback
MNL-01035
12 System Synchronous Output 2017.11.21
BD FPGA
tCO
min
max
#specify the maximum external clock delay from the external device
set CLKs_max 0.200
#specify the minimum external clock delay from the external device
set CLKs_min 0.100
#specify the maximum external clock delay to the FPGA
set CLKd_max 0.200
#specify the minimum external clock delay to the FPGA
set CLKd_min 0.100
#specify the maximum clock-to-out of the external device
set tCO_max 0.525
#specify the minimum clock-to-out of the external device
set tCO_min 0.415
#specify the maximum board delay
set BD_max 0.180
#specify the minimum board delay
set BD_min 0.120
#create a clock 10ns
create_clock -period 10 -name sys_clk [get_ports sys_clk]
#create the associated virtual input clock
create_clock -period 10 -name virt_sys_clk
#create the input maximum delay for the data input to the FPGA that
#accounts for all delays specified
set_input_delay -clock virt_sys_clk \
-max [expr $CLKs_max + $tCO_max + $BD_max - $CLKd_min] \
[get_ports {data_in[*]}]
#create the input minimum delay for the data input to the FPGA that
#accounts for all delays specified
set_input_delay -clock virt_sys_clk \
-min [expr $CLKs_min + $tCO_min + $BD_min - $CLKd_max] \
[get_ports {data_in[*]}]
Send Feedback
MNL-01035
2017.11.21 I/O Timing Requirements (tSU, tH, and tCO) 13
FPGA BD
tSU/th
CLKd
CLKs
sys_clk
Send Feedback
MNL-01035
14 I/O Timing Requirements (tSU, tH, and tCO) 2017.11.21
Launch Latch
Edge Edge
Clk
data_in[*]
tSU
min arrival tH
max arrival
data_out[*]
tCO
Send Feedback
MNL-01035
2017.11.21 Exceptions 15
Exceptions
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
clkA
clkB
clkA
hold
setup
clkB
5 10 15 20 25
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.
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.
Send Feedback
MNL-01035
16 False Paths 2017.11.21
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.
Related Information
The Intel Quartus® Prime Timing Analyzer
For more information about the types of multicycle exceptions available in the Timing Analyzer.
False Paths
You do not need to analyze timing on all paths. Synchronization of non-critical paths can be removed or
cut from timing analysis. When you declare non-critical paths, the Intel Quartus® Prime Fitter can focus
on the optimization of critical paths and can reduce overall compilation time.
Figure 16: Register-to-Register Cut Path
clkA
clkB
False paths can be applied either to clock-to-clock transfers or to individual registers. Applying false paths
to clock-to-clock transfers cuts all paths between the target clocks.
In the False Path Clock-to-Clock example, the path is cut and not analyzed by the Timing Analyzer for any
register-to-register path where the source clock is clkA and the destination clock is clkB. This does not
affect register-to-register paths where the source register is clocked by clkB and the destination register is
clocked by clkA.
Note: The set_false_path command cuts paths from clock clkA to clkB. The command does not cut
paths from clkB to clkA. To cut paths from clkB to clkA, you must apply an additional
set_false_path command (for example, set_false_path -from clkB -to clkA). Alternatively,
you can use set_clock_groups to cut paths from clkA to clkB and from clkB to clkA with one
command.
Applying false paths to individual registers cuts only the path specified.
Send Feedback
MNL-01035
2017.11.21 Miscellaneous 17
In the False Path Register-to-Register example, the register-to-register path from register reg1 to register
reg2 is cut. All other paths remain unaffected.
Related Information
Set Clock Groups Dialog Box (set_clock_groups)
For more information about the set_clock_groups command in Intel Quartus Prime Help.
Miscellaneous
JTAG Signals
Many in-system debugging tools use the JTAG interface in Intel FPGAs.
When you debug your design with the JTAG interface, the JTAG signals TCK, TMS, TDI, and TDO are
implemented as part of the design. Because of this, the Timing Analyzer flags these signals as
unconstrained when an unconstrained path report is generated.
(1)
Constrained under Intel Quartus Prime Standard Edition by default.
(2)
Unconstrained under Intel Quartus Prime Pro Edition unless you use a variation of the SDC example
contained in the JTAG Signal Constraints template.
Send Feedback
MNL-01035
18 JTAG Signals 2017.11.21
You can constrain the JTAG signals by applying the following SDC commands:
# Search "---customize here---" for the few decisions you need to make
#
# By default, the most challenging timing spec is applied to work in
# many JTAG chain setup situations
# This is the main entry point called at the end of this SDC file.
proc set_jtag_timing_constraints { } {
# If the timing characteristic outside of FPGA is well understood, and
# there is a need to provide more slack to allow flexible placement of
# JTAG logic in the FPGA core, use the timing constraints for both
# timing analysis and fitter; otherwise, use the default fitter timing
# constraints.
# ---customize here---
set use_fitter_specific_constraint 1
set_default_quartus_fit_timing_directive
} else {
# Define a set of timing constraints that describe the JTAG paths
# for the Timing Analyzer to analyze. The Timing Analyzer timing
reports show whether
# the JTAG logic in the FPGA core will operates in this setup.
set_jtag_timing_spec_for_timing_analysis
}
}
proc set_default_quartus_fit_timing_directive { } {
# A10 supports max 33.3Mhz clock
set jtag_33Mhz_t_period 30
proc set_jtag_timing_spec_for_timing_analysis { } {
derive_clock_uncertainty
# No matter where the device is in the chain. The tck and tms are driven
# directly from JTAG hardware.
set_tck_timing_spec
set_tms_timing_spec
Send Feedback
MNL-01035
2017.11.21 JTAG Signals 19
# Depending on where the device is located along the chain, tdi can be
# either driven by blaster hw (a. b.) or driven by another device in the
# chain(c. d.)
# ---customize here---
set tdi_is_driven_by_blaster 1
if { $tdi_is_driven_by_blaster } {
set_tdi_timing_spec_when_driven_by_blaster
} else {
set_tdi_timing_spec_when_driven_by_device
}
# Depending on where the device is located along the chain, tdo can
# drive either blaster hw (a. d.) or another device in the chain (b. c.)
# ---customize here---
set tdo_drive_blaster 1
if { $tdo_drive_blaster } {
set_tdo_timing_spec_when_drive_blaster
} else {
set_tdo_timing_spec_when_drive_device
}
set_optional_ntrst_timing_spec
# Cut a few timing paths that are not related to JTAG logic in
# the FPGA core, such as security mode.
set_false_path -from [get_ports {altera_reserved_tdi}] -to [get_ports
{altera_reserved_tdo}]
if { [get_collection_size [get_registers -nowarn *~jtag_reg]] > 0 } {
set_false_path -from [get_registers *~jtag_reg] -to [get_ports
{altera_reserved_tdo}]
}
proc set_tck_timing_spec { } {
# USB Blaster 1 uses 6 MHz clock = 166.666 ns period
set ub1_t_period 166.666
# USB Blaster 2 uses 24 MHz clock = 41.666 ns period
set ub2_default_t_period 41.666
# USB Blaster 2 running at 16 MHz clock safe mode = 62.5 ns period
set ub2_safe_t_period 62.5
# ---customize here---
set tck_t_period $ub2_default_t_period
proc get_tck_delay_max { } {
set tck_blaster_tco_max 14.603
set tck_cable_max 11.627
# tck delay on the PCB depends on the trace length from JTAG 10-pin
# header to FPGA on board. In general on the PCB, the signal travels
# at the speed of ~160 ps/inch (1000 mils = 1 inch).
# ---customize here---
set tck_header_trace_max 0.5
proc get_tck_delay_min { } {
Send Feedback
MNL-01035
20 JTAG Signals 2017.11.21
# tck delay on the PCB depends on the trace length from JTAG 10-pin
# header to FPGA on board. In general on the PCB, the signal travels
# at the speed of ~160 ps/inch (1000 mils = 1 inch).
# ---customize here---
set tck_header_trace_min 0.1
proc set_tms_timing_spec { } {
set tms_blaster_tco_max 9.468
set tms_blaster_tco_min 9.468
# tms delay on the PCB depends on the trace length from JTAG 10-pin
# header to FPGA on board. In general on the PCB, the signal travels
# at the speed of ~160 ps/inch (1000 mils = 1 inch).
# ---customize here---
set tms_header_trace_max 0.5
set tms_header_trace_min 0.1
proc set_tdi_timing_spec_when_driven_by_blaster { } {
set tdi_blaster_tco_max 8.551
set tdi_blaster_tco_min 8.551
# tms delay on the PCB depends on the trace length from JTAG 10-pin
# header to FPGA on board. In general on the PCB, the signal travels
# at the speed of ~160 ps/inch (1000 mils = 1 inch).
# ---customize here---
set tdi_header_trace_max 0.5
set tdi_header_trace_min 0.1
proc set_tdi_timing_spec_when_driven_by_device { } {
# TCO timing spec of tdo on the device driving this tdi input
# ---customize here---
Send Feedback
MNL-01035
2017.11.21 JTAG Signals 21
# tdi delay on the PCB depends on the trace length from JTAG 10-pin
# header to FPGA on board. In general on the PCB, the signal travels
# at the speed of ~160 ps/inch (1000 mils = 1 inch).
# ---customize here---
set tdi_trace_max 0.5
set tdi_trace_min 0.1
proc set_tdo_timing_spec_when_drive_blaster { } {
set tdo_blaster_tsu 5.831
set tdo_blaster_th -1.651
# tdi delay on the PCB depends on the trace length from JTAG 10-pin
# header to FPGA on board. In general on the PCB, the signal travels
# at the speed of ~160 ps/inch (1000 mils = 1 inch).
# ---customize here---
set tdo_header_trace_max 0.5
set tdo_header_trace_min 0.1
#TDO does not latch inside the USB Blaster II at the rising edge of TCK,
# it actually is latched one half cycle later in packed mode
# (equivalent to 1 JTAG fall-to-fall cycles)
set_output_delay -add_delay -clock_fall -clock altera_reserved_tck -max
$tdo_out_max [get_ports {altera_reserved_tdo}]
set_output_delay -add_delay -clock_fall -clock altera_reserved_tck -min
$tdo_out_min [get_ports {altera_reserved_tdo}]
}
proc set_tdo_timing_spec_when_drive_device { } {
# TCO timing spec of tdi on the device driven by this tdo output
# ---customize here---
set next_device_tdi_tco_max 10.0
set next_device_tdi_tco_min 10.0
# tdi delay on the PCB depends on the trace length from JTAG 10-pin
# header to FPGA on board. In general on the PCB, the signal travels
# at the speed of ~160 ps/inch (1000 mils = 1 inch).
# ---customize here---
set tdo_trace_max 0.5
set tdo_trace_min 0.1
Send Feedback
MNL-01035
22 Input and Output Delays with Multiple Clocks 2017.11.21
proc set_optional_ntrst_timing_spec { } {
# ntrst is an optional JTAG pin to asynchronously reset the device JTAG
controller.
# There is no path from this pin to any FPGA core fabric.
if { [get_collection_size [get_ports -nowarn {altera_reserved_ntrst}]] >
0 } {
set_false_path -from [get_ports {altera_reserved_ntrst}]
}
}
set_jtag_timing_constraints
FPGA
1.1 ns, 1.3 ns 1.2 ns, 1.4 ns
0. 22 ns, 0.24 ns
A 0.5 ns, 0.6 ns 0.35 ns, 0.37 ns
B 0.23 ns, 0.25 ns
2.30 ns, 2.4 ns
#########################
# Create all the clocks #
#########################
# Create variables for the clock periods.
set PERIOD_CLK_A 10.000
set PERIOD_CLK_B 7.000
# Create the clk_a clock which will represent the clock
# that routes to the FPGA.
create_clock \
-name {clk_a} \
-period \
$PERIOD_CLK_A \
Send Feedback
MNL-01035
2017.11.21 Input and Output Delays with Multiple Clocks 23
[get_ports {clk}]
# Create the clk_b clock which will represent the clock
# that routes to the FPGA.
# Note the -add is needed because this is the second clock
# that has the same 'clk' port as a target.
create_clock \
-name {clk_b} \
-period $PERIOD_CLK_B \
[get_ports {clk}] \
-add
# Create a virtual clock which will represent the clock
# that routes to the external source device when clk_a is
# selected a the external mux.
create_clock \
-name virtual_source_clk_a \
-period $PERIOD_CLK_A
# Create a virtual clock which will represent the clock
# that routes to the external source device when clk_b is
# selected a the external mux.
create_clock \
-name virtual_source_clk_b \
-period $PERIOD_CLK_B
# Create a virtual clock which will represent the clock
# that routes to the external destination device when clk_a
# is selected a the external mux.
create_clock \
-name virtual_dest_clk_a \
-period $PERIOD_CLK_A
# Create a virtual clock which will represent the clock
# that routes to the external destination device when clk_b
# is selected a the external mux.
create_clock \
-name virtual_dest_clk_b \
-period $PERIOD_CLK_B
##########################################
# Cut clock transfers that are not valid #
##########################################
# Cut this because virtual_source_clk_b can not be clocking
# the external source device at the same time that clk_a is
# clocking the FPGA.
set_clock_groups -exclusive \
-group {clk_a} \
-group {virtual_source_clk_b}
# Cut this because virtual_source_clk_a can not be clocking
# the external source device at the same time that clk_b is
# clocking the FPGA.
set_clock_groups -exclusive \
-group {clk_b} \
-group {virtual_source_clk_a}
# Cut this because virtual_dest_clk_b can not be clocking
# the external destination device at the same time that
# clk_a is clocking the FPGA.
set_clock_groups -exclusive \
-group {clk_a} \
-group {virtual_dest_clk_b}
# Cut this because virtual_dest_clk_a can not be clocking
# the external destination device at the same time that
# clk_b is clocking the FPGA
set_clock_groups -exclusive \
-group {clk_b} \
-group {virtual_dest_clk_a}
########################################
# Define the latency of all the clocks #
########################################
# Since the Timing Analyzer does not know what part of the clock
# latency is common we must simply remove the common part
# from the latency calculation. For example when
Send Feedback
MNL-01035
24 Input and Output Delays with Multiple Clocks 2017.11.21
Send Feedback
MNL-01035
2017.11.21 Clock Enable Multicycle 25
-clock virtual_source_clk_a \
-max $input_max \
[get_ports datain]
set_input_delay \
-clock virtual_source_clk_a \
-min $input_min \
[get_ports datain]
# Create the input delay constraints when clk_b is selected
set_input_delay \
-clock virtual_source_clk_b \
-max $input_max \
[get_ports datain] \
-add_delay
set_input_delay \
-clock virtual_source_clk_b \
-min $input_min \
[get_ports datain] \
-add_delay
#######################################
# Constrain the output port 'dataout' #
#######################################
# This Tsu/Th is the value of the Tsu/Th for the external
# device.
set Tsu 2.8
set Th 0.1
# This is the min/max trace delay of dataout to the
# external device.
set Td_min 1.2
set Td_max 1.4
# Calculate the output delay numbers
set output_max [expr $Td_max + $Tsu]
set output_min [expr $Td_min - $Th]
# Create the output delay constraints when clk_a is
# selected.
set_output_delay \
-clock virtual_dest_clk_a \
-max $output_max \
[get_ports dataout]
set_output_delay \
-clock virtual_dest_clk_a \
-min $output_min \
[get_ports dataout]
# Create the output delay constraints when clk_b is
# selected.
set_output_delay \
-clock virtual_dest_clk_b \
-max $output_max \
[get_ports dataout] \
-add_delay
set_output_delay \
-clock virtual_dest_clk_b \
-min $output_min \
[get_ports dataout] \
-add_delay
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
Send Feedback
MNL-01035
26 Clock Enable Multicycle 2017.11.21
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
D Q sel_xy_nab
fast_clk
ENA
enable_reg
sel_xy_nab
din_a_reg
din_a[7..0] D Q
fast_clk
sel_xy_nab ENA
D Q ab_out[15..0]
fast_clk
din_x_reg ENA
din_x[7..0] D Q sel_xy_nab
fast_clk
sel_xy_nab ENA
din_b_reg
din_b[7..0] D Q
fast_clk
sel_xy_nab ENA D Q xy_out[15..0]
fast_clk
sel_xy_nab ENA
din_y_reg
din_Y[7..0] D Q
fast_clk
sel_xy_nab ENA
Send Feedback
MNL-01035
2017.11.21 Document Revision History 27
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:
The setup and hold relationships start at the enable_reg register and end at any enable-driven register at
2 and 1, respectively.
Related Information
The Intel Quartus Prime Timing Analyzer
For more information about multicycle exceptions refer to the Timing Analyzer Chapter in volume 3 of
the Intel Quartus Prime Handbook.
January 11.0.0 • Added new sections Toggle Register Generated Clock and
2011 Tri-State Outputs.
• Minor text edits.
Send Feedback