Planning a Controller-Plus-Datapath Project Slice
How to separate a controller event from a capture datapath and explain a design tradeoff without exposing assessment answers.
Updated 2026-07-22
A controller-plus-datapath slice combines two kinds of behavior. The controller watches events and decides when an action should happen. The datapath selects, stores, or transforms the value involved in that action.
Before writing code, state the boundary in plain language:
- the controller produces a one-cycle action request;
- a data MUX chooses a new value or the stored value;
- a register captures the selected value on the active edge.
Test the boundary as well as each block. A useful check proves that the action request appears at the intended moment, the new value is captured on that event, and the old value is preserved when no event occurs.
A design tradeoff names a choice and its alternative. Examples include an overlapping versus non-overlapping event detector, an explicit hold-or-load MUX versus a clocked enable, or placing a small route inside one top-level module versus a separate submodule. Explain how the choice affects clarity, reuse, or behavior rather than claiming one style is always best.