Clock gating stops the flops, but the combinational logic ahead of them keeps churning. A multiplier with live inputs burns toggles even when its result is discarded.
Operand isolation freezes the block inputs while the block is idle. Downstream gates then see steady values and stop switching.
The usual form holds each operand steady with the idle signal. A mux recirculates the old value, or simple gating forces a quiet constant.
The select that marks the result unused doubles as the isolation condition. No new control logic is needed when that signal already exists.
EXAMPLE activity (stated parameters):
32-bit multiplier operand, mean 16 bits toggle per cycle while live
block idle 3 cycles in 4, isolation freezes the operand while idle
toggles per 4 cycles without isolation = 4 x 16 = 64
toggles per 4 cycles with isolation = 1 x 16 = 16
blocked toggles = 64 - 16 = 48 of 64 = 75%Isolation adds gates on the datapath inputs. Those gates sit on the timing path, so a critical operand may not afford them.
Situation | Cheaper answer | Why |
|---|---|---|
Idle flops | Clock gating | Stops the clock pins directly with one cell. |
Idle datapath, loose timing | Operand isolation | Freezes wide inputs with a few extra gates. |
Idle for thousands of cycles | Power gating as intent | Clock and leakage both stop, at far higher control cost. |
Isolating to a constant that the downstream logic treats as live work defeats the purpose. Freeze to a value the idle block genuinely ignores.
48 of 64. Without isolation all 4 cycles toggle; with isolation only the 1 live cycle does.
Operand isolation on the multiplier inputs. Clock gating stops the flops, while isolation stops the combinational churn ahead of them.