CodiodeCodiode
Home
Problem Solving
Skill Tracks
My Assignments
Contests
Leaderboard
Community
Settings
Codiode/Problems/Sequential Logic

Reset Synchronizer Driven by Wrong Clock

MediumLogic CircuitDebug

A multi-clock system requires synchronized resets to ensure safe recovery times across all domains.

Expected behavior: The circuit receives a global asynchronous active-low reset rst_n. It must generate three synchronized active-low resets: rst_sync_a, rst_sync_b, and rst_sync_c. Each synchronized reset must assert asynchronously the moment rst_n goes low. Each synchronized reset must deassert synchronously after two rising edges of its respective clock domain: clk_a, clk_b, and clk_c.

Simulation reports recovery time violations in domains B and C during the reset deassertion phase. Inspection of the waveforms shows rst_sync_b and rst_sync_c deasserting synchronously with clk_a instead of their respective clocks.

Inspect the circuit and correct the fault.

Constraints

  • The circuit must assert all synchronized resets asynchronously.
  • The circuit must use a standard two-stage flip-flop synchronizer for each clock domain.
  • Do not modify the existing input and output ports.

Topics

Clock Domain CrossingFlip-FlopsResetSynchronizer

Solve this problem

Place the gates, wire them up and watch the signals settle. Every submission runs on the same simulation engine that grades it.

This problem is part of Codiode Pro. The statement above is free to read.

Sign in to solveSee what Pro unlocks

The circuit builder and code editor need a desktop screen. On a phone, read the problem here and open it on a laptop to solve.

Related problems

  • 3-bit Ripple Counter from Toggle Flip-FlopsEasy
  • D Latch from a 2:1 MUXEasy
  • 2-bit Ring CounterEasy
  • T Flip-Flop from a D Flip-FlopEasy
  • Handshake Deadlock Due to Early ResetHard
  • Reconvergence of Individually Synchronized BitsHard
  • Debug: Asynchronous Clear GlitchHard
  • Clock Gate Enable Crossing DomainsHard

Browse all problems · Learning tracks