CodiodeCodiode
Home
Problem Solving
Skill Tracks
My Assignments
Contests
Leaderboard
Community
Settings
Codiode/Problems/Memory Design

Debug Register File Structural Hazard

MediumLogic CircuitDebug

A register file stores processor state and must support simultaneous reading and writing to maintain pipeline throughput.

Expected behavior:

The register file has one synchronous write port (WAddr, WData, WE, Clk) and one asynchronous read port (RAddr, RData). To prevent read-after-write hazards in the same cycle, the circuit must bypass write data directly to the read port when the addresses match.

| WE | WAddr == RAddr | RData Output | |------|------------------|----------------| | 0 | X | Stored data at RAddr | | 1 | 0 | Stored data at RAddr | | 1 | 1 | WData (Bypassed) |

Simulation shows RData outputs the old stored value instead of the new WData during a simultaneous read and write to the same address. Specifically, when writing WData = 9 to WAddr = 1 while reading RAddr = 1, RData outputs the previously stored value 5 instead of the expected 9.

Inspect the circuit and correct the fault.

Constraints

  • Read operations must remain strictly combinational.
  • Write operations to the internal registers must remain synchronous to the rising edge of Clk.
  • Do not replace the core register storage components.

Topics

HazardsRegistersForwarding

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

  • Debugging FIFO Pointer CorruptionHard
  • Debugging Memory Inference FailuresMedium
  • Debugging Read During Write CollisionMedium
  • Debugging ROM Latch InferenceEasy
  • Full versus Empty AmbiguityMedium
  • Debugging Stack Pointer Off By OneMedium

Browse all problems · Learning tracks