Asserting a reset is the easy half: an asynchronous clear forces every flop to a known value with no clock involved. Releasing it is the hazardous half, because the release edge can land arbitrarily close to a clock edge and leave some flops metastable while others come out cleanly.
Lesson | After it you can... |
|---|---|
Explain why assertion is safe and release is a recovery/removal problem. | |
Draw the two-flop synchroniser and say what a structural check looks for. | |
State both windows in plain terms and relate them to release timing. | |
Recognise unsynchronised and combinational releases, and read the release waveform. |
Suggested order: the four lessons in listed order. The release waveform in the last lesson is reused by the debug playbook topic.
Release. Assertion is an asynchronous clear that works without a clock; release is an edge in time that can violate recovery/removal, so it is passed through a synchroniser.