RTL Design #25 · 2026-10-18 · Reset synchronizers · Medium · about 15 min
Reset: assert fast, release in step
reset_sync turns a reset that can change at any moment (arst_n, active low) into one that is safe to use in the clk domain. It has two jobs:
- Assert at once. When
arst_nfalls,rst_n_outfalls with it, without waiting for a clock edge. - Release in step with the clock. After
arst_nrises,rst_n_outstays low through the first rising edge ofclkand rises on the second one, so that a flop in the domain never sees the reset go away right at its clock edge.
The current design.sv does neither. Fix it.
Write and run your answer in the browser. The hidden tests check it, and it’s free.