Highly recommend the Reset check user guide from 0in.Today, we introduce the CDC model: Reset CDC has no synchronizer
“Reset CDC has no synchronizer” refers to a reset signal that does not have a synchronizer when crossing clock domains. An asynchronous reset signal must first be synchronized to the clock domain before it is used to reset registers within that domain. This is because violating this fundamental principle in design will result in the RDC check reporting the violation: “Reset CDC has no synchronizer“.
Why does an asynchronous reset signal need to be synchronized? Suppose an asynchronous reset signal async_rst_n is directly used in the clock domain CLK_B. When async_rst_n is released (changing from 0 to 1), this transition is random with respect to the clock edge of CLK_B.
Risks introduced by the violation:
1. Recovery time violation: If the transition of the reset release occurs very close to the clock edge of CLK_B (within the recovery time and removal time window), then the flip-flops in clock domain B that use this reset will violate timing requirements, leading to metastability.
2. Unsynchronized reset release: Due to metastability, some flip-flops in clock domain B may exit reset one cycle earlier, while others may exit reset one cycle later. This causes the registers in the entire clock domain B to exit the reset state unsynchronized, leading the entire system to be in a chaotic and uncertain state at startup, which is extremely dangerous for the system.