AN 584: Timing Closure Methodology for Advanced FPGA Designs

ID 683145
Date 10/08/2021
Public
Document Table of Contents

1.4.2.2. Plan for Early Compilation of Design Blocks

After first identifying the major functional blocks of the design, you can partition the design into manageable blocks to facilitate multiple designers and independent and incremental optimization of design blocks.

Compile the major blocks in your design as soon as you can, even if your design is not complete. By doing this, you can also identify resource issues early in the design cycle.

A common reason for prolonged design cycles is waiting for all code completion before compiling the design. With this approach, you do not detect significant issues until the design and dependencies are very mature.

Using the incremental block-cased compilation flow, you can assign blocks that are not yet available, or that are being developed independently as "empty" partitions.

When creating design partitions:

  • Try to minimize inter-block connections.
  • Register all inputs and outputs from each block to avoid critical timing paths crossing between partition boundaries.
  • Details of other partitions contents are not visible to the Compiler when compiling a single partition block. Therefore, optimization (or logic minimization) across partitions cannot occur.
  • Add each major block or partition in your design as soon as HDL coding is completed and compile incrementally.
  • If certain block partitions are finished and no modification is needed, you have the option to preserve these partitions as soon as they meet timing requirements.

Incremental timing closure can help your design meet timing faster, as the Fitter works more on optimizations and small RTL changes without influencing any preserved partitions.

Compiling blocks early using the incremental block-based compilation helps you to uncover and resolve design issues early before they can become complicated problems in the final timing closure stages.

You can set the following options to reduce the total compile time during the initial stages of your design. These options are especially helpful for large or complex blocks that you want to initially compile independently, or when ready to start integrating the block:

Click Assignments > Settings > Compiler Settings > Optimization Mode > Compile Time, and then choose one of the following:

  • Aggressive Compile Time
  • Fast Functional Test

Both of these modes perform initial timing and functional analyses without requiring excessive compile time.

Figure 2. Compile Time Optimization Mode Settings

For more information about incremental block-based compilation, refer to Incremental Block-Based Compilation Flow and Setting-Up Team-Based Designs sections of the Intel® Quartus® Prime Pro Edition User Guide: Block-Based Design.