Quartus® Prime Pro Edition User Guide: Design Compilation

ID 683236
Date 9/30/2024
Public
Document Table of Contents

1.6.3.1. Fast Forward Compile By Hierarchy

When enabled, Fast Forward compile runs on the entire design hierarchy by default. Optionally, you can specify the Enable Hyper-Retimer Fast Forward Hierarchy analysis during compilation assignment to include or exclude specific design subhierarchies and instances during Fast Forward compile. This technique allows you to focus Fast Forward reporting and optimization efforts on only specific areas of the design. Fast Forward compilation by hierarchy generates the same reports as Fast Forward compilation of the entire hierarchy.

Follow these steps to include or exclude specific design subhierarchies and instances during Fast Forward compilation:

  1. To enable the optional Fast Forward Compilation stage during full compilation, turn on Fast Forward Timing Closure Recommendations on the Compilation Dashboard, or add the following assignment to the project .qsf:
    set_global_assignment -name FLOW_ENABLE_HYPER_RETIMER_FAST_FORWARD ON
    Figure 77. Enable Fast Forward Timing Closure Recommendations
  2. To exclude a specific hierarchy or entity from Fast Forward Compilation, set the Enable Hyper-Retimer Fast Forward Hierarchy analysis during compilation assignment to Off in the Assignment Editor, or add the following assignment to the project .qsf for each hierarchy or entity that you want to exclude:
    set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY OFF \
        <INSTANCE MODULE NAME>
  3. To include a specific hierarchy or entity from Fast Forward Compilation, set the Enable Hyper-Retimer Fast Forward Hierarchy analysis during compilation assignment to On in the Assignment Editor, or add the following assignment to the project .qsf for each hierarchy or entity that you want to include:
    set_global_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY ON \
         <INSTANCE MODULE NAME>
  4. Click the Fast Forward Timing Closure Recommendations stage on the Compilation Dashboard, or click Processing > Start Compilation to run a full compilation that includes Fast Forward Compile.

You can mix ON and OFF assignments for the same instance within a single .qsf. If you assign mixed ON and OFF assignments to the same instance, the last assignment that appears in the .qsf takes precedence.

If you want to perform Fast Forward analysis for a subset of the hierarchies in your design, turn off Fast Forward analysis for all hierarchies that you want to omit from analysis. Otherwise, turn off Fast Forward analysis at the root hierarchy, and turn on Fast Forward analysis for the hierarchies that you want to analyze. The following examples show some of these assignment combinations, with respect to the Example Design Hierarchy.

Figure 78. Example Design Hierarchy
# This runs Fast Forward Compile on the entire hierarchy: A,B,C,D,E,F
# This produces the same result as if FAST_FORWARD_HIERARCHY was not set in the QSF

set_global_assignment -name FLOW_ENABLE_HYPER_RETIMER_FAST_FORWARD ON
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY ON -to |
# Runs Fast Forward Compile on B and E only, ignores A,C,D,F

set_global_assignment -name FLOW_ENABLE_HYPER_RETIMER_FAST_FORWARD ON
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY OFF -to |
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY ON -to B
# Runs  Fast Forward Compile on C only, ignores A,B,D,E,F

set_global_assignment -name FLOW_ENABLE_HYPER_RETIMER_FAST_FORWARD ON
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY OFF -to |
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY ON -to C
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY OFF -to F
# ON instance HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY takes precedence
# Fast Forward Compile runs on only C and F
# If the assignments were reversed then FFC would not run

set_global_assignment -name FLOW_ENABLE_HYPER_RETIMER_FAST_FORWARD ON
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY OFF -to |
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY OFF -to C
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY ON -to C
# This runs on A,B,C,F

set_global_assignment -name FLOW_ENABLE_HYPER_RETIMER_FAST_FORWARD ON
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY OFF -to D
set_instance_assignment -name HYPER_RETIMER_FAST_FORWARD_ON_HIERARCHY OFF -to E
Note: Instance assignments apply to the post-fit netlist. Therefore, you may need to define design partitions. Otherwise, instance names can change during synthesis, leading to unexpected assignment results. Refer to Creating a Design Partition.