Quartus® Prime Pro Edition User Guide: Timing Analyzer

ID 683243
Date 4/01/2024
Public
Document Table of Contents

1.2.10.3. Enabling Time Borrowing Optimization

During any High or Superior Performance compilation, the Compiler automatically computes and stores Optimal time borrow values for Stratix® 10 and Arria® 10 designs during the Finalize stage. By default, the subsequent timing analysis results reflect the Optimal borrow values from the Finalize stage.

Follow these steps to enable time borrowing for supported devices:

  1. Click Assignments > Settings > Compiler Settings > Optimization Mode. Select any high or superior Performance setting.
  2. Run the Fitter and Timing Analyzer, as Step 3: Run the Timing Analyzer describes.
  3. To generate reports showing time borrowing data, click Reports > Timing Slack > Report Timing. Time borrowing data appears on the critical path for a given clock domain, as Report Time Borrowing Data describes.
Figure 36. Performance Compiler Optimization Mode Settings


  • To specify time borrowing optimization without changing the Compiler Optimization Mode, specify the following assignment in the project .qsf:

    set_global_assignment -name ENABLE_TIME_BORROWING_OPTIMIZATION <ON|OFF>
  • To manually specify the time borrow mode during timing analysis, run one of the following update_timing_netlist command options:
Table 2.  Time Borrowing Modes
Time Borrowing Mode Command Option Default Mode For

Optimal—timing analysis includes optimal time borrow values from the Finalize stage. You can optionally add the recompute_borrow option to update_timing_netlist to recompute the borrow amounts, but not the borrow window sizes.

update_timing_netlist High and Superior performance compilations for Stratix® 10 and Arria® 10 designs.
Dynamic—timing analysis reports the time borrowing that would physically occur on the device, with respect to your SDC constraints, without any optimization. That is, timing analysis applies as much borrowing as necessary to fix all negative slack. Timing analysis assumes maximum possible borrowing for any timing path where the maximum amount of time borrowing is insufficient to eliminate all negative slack. Only mode that allows borrowing for level-sensitive latches.

update_timing_netlist -dynamic_borrow

update_timing_netlist -loop_aware_dynamic_borrow

None
Zero—timing analysis uses zero time borrowing. update_timing_netlist –no_borrow Unsupported devices, or any Compiler Optimization mode other than a Performance mode.
Note: Dynamic mode cannot yield the optimal results with overconstrained clocks, as overconstrained clocks result in excessive negative slack on almost every path. This condition causes use of maximum time borrowing everywhere, which is unlikely to be optimal. When using Partial Reconfiguration, if you compile the base design with time borrowing enabled, compile the implementation design(s) with time borrowing enabled. Otherwise, time borrowing amounts in the base design reset to zero, and the design may not pass timing. If this condition occurs, you can use the update_timing_netlist –recompute_borrow command to restore time borrowing amounts throughout the design.