RES-30009: Reset Signal That is Generated in One Clock Domain and Used in Another Clock Domain is Incorrectly Synchronized
The following image shows an example of an incorrectly synchronized reset signal.
Similarly, when cascading synchronization registers are triggered on different clock edges, the risk is higher that the second register does not have enough time to resolve the metastable output from the first register. Hence, the cascading registers should be triggered on same clock edges. The following image shows an example of an incorrectly synchronized reset signal:
Also, any additional logic should not exist between the output of the transmitting clock domain and cascading registers in the receiving asynchronous clock domain. This is because the extra toggling on the output of the combinatorial logic increases the risk of metastability resulting in synchronizer sampling unintended data (due to the glitches generated by the combinational logic). The following image shows an example of an incorrectly synchronized reset signal.
Recommendation
Follow these guidelines for a reset signal that is generated in one clock domain and used in one or more other asynchronous clock domains:
- Synchronize the reset signal with two or more cascading registers in the receiving asynchronous clock domain.
- Trigger the cascading registers on the same clock edge.
- Do not include any logic between the output of the transmitting clock domain and the cascading registers in the receiving asynchronous clock domain.
The following image shows an example of a correctly synchronized reset signal:
Severity
High
Stage
Analysis and Elaboration
Device Family
- Intel® Cyclone® 10 GX
- Intel® Arria® 10