Intel® Quartus® Prime Pro Edition User Guide: Design Recommendations

ID 683082
Date 8/03/2023
Public
Document Table of Contents

3.3.1. Synchronization Register Chain Length

The Synchronization Register Chain Length option specifies how many registers should be protected from optimizations that might reduce MTBF for each register chain, and controls how many registers should be optimized to increase MTBF with the Optimize Design for Metastability option.

For example, if the Synchronization Register Chain Length option is set to 2, optimizations such as register duplication or logic retiming are prevented from being performed on the first two registers in all identified synchronization chains. The first two registers are also optimized to improve MTBF when the Optimize Design for Metastability option is turned on.

The default setting for the Synchronization Register Chain Length option is 3. The first register of a synchronization chain is always protected from operations that might reduce MTBF, but you should set the protection length to protect more of the synchronizer chain. Intel recommends that you set this option to the maximum length of synchronization chains you have in your design so that all synchronization registers are preserved and optimized for MTBF.

Click Assignments > Settings > Compiler Settings > Advanced Settings (Synthesis) to change the global Synchronization Register Chain Length option.

You can also set the Synchronization Register Chain Length on a node or an entity in the Assignment Editor. You can set this value on the first register in a synchronization chain to specify how many registers to protect and optimize in this chain. This individual setting is useful if you want to protect and optimize extra registers that you have created in a specific synchronization chain that has low MTBF, or optimize less registers for MTBF in a specific chain where the maximum frequency or timing performance is not being met. To make the global setting with Tcl, use the following command:

set_global_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH <number of registers>

To apply the assignment to a design instance or the first register in a specific chain with Tcl, use the following command:

set_instance_assignment -name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH <number of registers> -to <register or instance name>