VLSI Design

Low Power Design

Techniques to minimize dynamic and leakage power in VLSI chips — from RTL coding practices to physical implementation, UPF power intent, and voltage islands.

Ptotal = α·C·V²·f + Ileak·Vdd — reduce each term with targeted techniques
Dynamic Power — P = α·C·V²·f α (activity) ↓ clock gating C (capacitance) ↓ placement V² (voltage) ↓ DVFS, V-scaling f (freq) ↓ DVFS Key techniques: clock gating (↓α), DVFS (↓V²·f), operand isolation, power gating idle blocks, pipeline balancing, voltage islands Typically 60–80% of total power at high activity Leakage Power — P = Ileak·Vdd Sub-threshold I ∝ e^(Vgs/nVT) Gate leakage thin gate oxide GIDL / BTBT band-to-band Reduce: multi-Vt (HVT on non-critical paths), power gating, body biasing, reduce Vdd, fin-based transistors (FinFET) Dominates in standby/sleep — grows with temperature
Total CMOS power = dynamic (switching) + leakage (idle). Each requires different reduction techniques targeting different parameters of the power equation.
Low Power Topics
Core Techniques & Deep Dives
🔒
Dynamic Power
Clock Gating (ICG)
ICG cell structure (latch + AND), glitch-free gating, synthesis inference from RTL, enable conditions, clock network power savings (20–40%), and UPF clock gating intent.
ICGlatch+ANDenable20–40% savings
Read →
💤
Leakage + Dynamic
Power Gating
Sleep transistors (header PMOS / footer NMOS), virtual rail (VVDD/VGND), retention flip-flops, state save/restore, wake-up sequence, and UPF power domain definition.
sleep transistorVVDDretention FFUPF
Read →
System Level
DVFS & Voltage Scaling
Dynamic Voltage and Frequency Scaling — P ∝ V²·f, voltage islands, level shifters, isolation cells, always-on domains, PMIC interface, and ARM big.LITTLE case study.
DVFSvoltage islandslevel shiftersisolation cells
Read →
🔬
Cell Level
Multi-Vt & Cell-Level Techniques
HVT/SVT/LVT cell selection strategy, compile_ultra -leakage_power, operand isolation, glitch reduction, data encoding (Gray code, bus invert), and RTL low-power guidelines.
HVT/SVT/LVToperand isolationbus invertglitch reduction
Read →
📋
Power Intent
UPF / IEEE 1801
Unified Power Format — create_power_domain, supply nets, isolation cell insertion, level shifter rules, retention strategy, power state table (PST), and UPF simulation flow.
UPFIEEE 1801power state tableisolation
Read →
🧲
Advanced Leakage
Body Biasing & AVS
Forward Body Bias (FBB) for speed boost, Reverse Body Bias (RBB) for leakage reduction, Adaptive Voltage Scaling (AVS), and how these combine with DVFS in mobile SoCs.
RBBFBBAVSbody bias generator
Read →
🎯
Interview Prep
Low-Power Interview Q&A
10 most-asked low-power design interview questions with expert answers — from FAANG/semiconductor companies targeting VLSI engineers at all levels.
QualcommAppleNVIDIAinterview prep
Read →
How Much Each Technique Saves
Technique Power Type Typical Savings Trade-off
Clock Gating (ICG)Dynamic20–40% total dynamic~5–10% area overhead for ICG cells
Power GatingDynamic + Leakage80–95% of block power (sleep)Wake-up latency, state restore cost, retention FF area
DVFS (V: 1.0→0.8V)Dynamic~36% dynamic power (V² term)Requires PMIC, voltage settling time, slower Fmax
Multi-Vt (HVT flooding)Leakage30–50% leakage reductionSlight timing margin loss on paths swapped to HVT
Operand IsolationDynamic10–20% datapath dynamic powerMUX/AND gate overhead; must not be on critical path
Voltage IslandsDynamic + Leakage15–30% system powerLevel shifters, isolation cells, multiple power rails, complex PD flow
Clock Gating (ICG)

The clock network consumes 20–40% of a chip's total dynamic power. Clock gating switches off the clock to flip-flop groups when their data won't change, eliminating switching power entirely for those registers.

ICG Cell Structure

An ICG (Integrated Clock Gating) cell is a latch + AND gate combination. The latch captures the enable signal on the clock low phase (preventing glitches), and the AND gate combines the latched enable with the clock. The output is a clean, glitch-free gated clock.

Signal Role Timing
CK (clock in)Raw clock from CTSContinuous
EN (enable)RTL enable signalMust be stable during CK high
ECK (gated clock out)Clock to flip-flopsToggling only when EN=1

RTL Inference

Synthesis tools automatically infer ICG cells from common RTL patterns. The most reliable pattern is a register with an explicit enable:

// RTL — synthesis infers an ICG here
always @(posedge clk) begin
  if (data_valid) begin        // ← enable for ICG
    result_reg <= computed_result;
  end
end

// Do NOT write this (no ICG inferred):
always @(posedge clk) begin
  result_reg <= data_valid ? computed_result : result_reg;
end

UPF Clock Gating Pragma

In the UPF power intent file, you control ICG insertion strategy:

# UPF — set minimum bit-width for ICG insertion
set_clock_gating_style -minimum_bitwidth 4 \
                        -positive_edge_logic {integrated}
# Exclude a register from gating:
set_dont_touch_network [get_pins {u_reg/clk}]

Typical ICG area overhead is 5–10% (one ICG cell per gating group). The power saving easily justifies this: 20–40% reduction in total dynamic power for large designs.

Power Gating

Power gating cuts the power supply (VDD or VSS) to an entire logic block when it is idle, eliminating both dynamic and leakage power. It is the most powerful technique for standby power reduction.

Header vs Footer Topologies

Type Transistor Rail Switched Advantage
HeaderPMOS (HVT)VDD → VVDDLower leakage in off state
FooterNMOS (HVT)VGND → VSSFaster wake-up (NMOS stronger)

Wake-up Sequence

The sleep/wake sequence must be carefully managed to avoid inrush current spikes and ensure correct state restoration:

// Power-down sequence (RTL pseudo-code)
1. assert isolation cells (block X-prop from powered-off domain)
2. retention FFs: pulse SAVE = 1 (state saved to balloon latches)
3. deassert sleep transistor enable → block powers off

// Wake-up sequence
1. assert sleep transistor enable → VVDD charges up
2. wait for VVDD_OK flag (power switch controller)
3. retention FFs: pulse RESTORE = 1 (state returns to main FF)
4. deassert isolation cells
5. release reset of block

UPF Power Domain Definition

create_power_domain PD_DSP -include_scope
create_supply_net  VVDD_DSP -domain PD_DSP
create_power_switch SW_DSP  -domain PD_DSP \
  -output_supply_port {vout VVDD_DSP}  \
  -input_supply_port  {vin VDD}        \
  -control_port       {sleep SLEEP_N}  \
  -on_state  {on  vin {!sleep}}        \
  -off_state {off     {sleep}}
set_retention PD_DSP -save_signal {SAVE posedge} -restore_signal {RESTORE posedge}
DVFS & Voltage Scaling

Dynamic Voltage and Frequency Scaling adjusts both supply voltage and clock frequency based on workload. Since P ∝ V²·f, reducing voltage from 1.0 V to 0.8 V saves 36% dynamic power — the largest single-variable lever available.

Voltage–Frequency Operating Points

Mode VDD Freq Dynamic Power Use Case
Turbo1.1 V2.0 GHz100% (baseline)Peak burst workload
Nominal1.0 V1.5 GHz~52%Normal operation
Low0.8 V800 MHz~21%Light workload, background tasks
Ultra-low0.6 V200 MHz~6%Idle polling loop

Voltage Island Design

When different blocks run at different voltages simultaneously (e.g. GPU at 0.9 V, always-on controller at 1.0 V), the chip uses voltage islands separated by:

Multi-Vt & Cell-Level Techniques

Modern standard cell libraries offer cells at multiple threshold voltages. Higher Vt means less leakage but slower speed. The synthesis tool assigns cell flavours to maximise leakage reduction while meeting timing.

Vt Flavour Comparison

Flavour Leakage Speed Where Used
LVT (Low Vt)HighFastTiming-critical paths only
SVT (Standard Vt)MediumMediumNear-critical paths
HVT (High Vt)LowSlowNon-critical paths (majority)
ULVT / SLVTVery HighVery FastOnly the most critical few gates

DC Shell — Leakage-Aware Synthesis

# Synopsys DC — enable multi-Vt leakage optimisation
compile_ultra -leakage_power

# Set leakage-to-dynamic trade-off weight (0=speed only, 10=leakage only)
set_leakage_optimization true
set power_cg_auto_identify true

# Swap non-critical cells to HVT post-route
swap_cell [get_cells -filter "is_critical==false"] -lib_cell HVT_AND2

Operand Isolation

When a functional unit (multiplier, FPU) is idle, its inputs often still toggle with garbage data, wasting power. Operand isolation inserts an AND or MUX gate to clamp inputs to zero when the unit is disabled:

// Without isolation — multiplier toggles even when idle
assign product = a * b;

// With operand isolation — zero inputs when mul_en=0
assign a_iso = mul_en ? a : '0;
assign b_iso = mul_en ? b : '0;
assign product = a_iso * b_iso;   // Synthesis recognises this pattern

Synthesis tools can insert operand isolation automatically from RTL enable signals when using set_operand_isolation pragmas or UPF.

RTL Low-Power Coding Guidelines

Rule Why it saves power Example
Use enable registers, not MUX-feedbackAllows ICG inferenceif (en) q <= d;
Avoid unnecessary resets on data FFsReset networks add load; data FFs don't need sync resetUse reset only on control FFs
Reduce glitches in combinational logicGlitches = unnecessary switching energyBalance path delays; register intermediate results
Use Gray code for wide countersOnly 1 bit toggles per cycle (vs N/2 avg for binary)State machines, FIFO pointers
Bus invert codingInvert bus when Hamming distance > N/2; saves 30% bus switchingWide data buses (32b, 64b)
Prefer one-hot encoding for FSMsOnly 2 bits toggle per transition; simpler next-state logicSmall-to-medium state machines
UPF / IEEE 1801 Power Intent

The Unified Power Format (UPF, IEEE 1801) is the industry-standard language for specifying power intent. It describes power domains, supply networks, isolation cells, level shifters, and retention strategies — allowing synthesis, simulation, and verification tools to apply low-power techniques consistently.

Key UPF Commands

Command Purpose
create_power_domainDefines a power domain and which logic it contains
create_supply_netDeclares a power/ground net within a domain
create_power_switchInserts a sleep transistor (header/footer)
set_isolationSpecifies isolation cell strategy on domain boundary outputs
set_level_shifterInserts level shifters on signals crossing voltage boundaries
set_retentionMarks registers for state retention during power-off
add_port_stateDefines legal supply states (on/off/partial)
create_pstCreates the Power State Table — all legal combinations of domain states

Complete UPF Example — 2-Domain SoC

# Always-on domain (primary)
create_power_domain PD_TOP -include_scope

# Switchable DSP domain
create_power_domain PD_DSP
  add_elements -elements {u_dsp}

# Supply networks
create_supply_net VDD   -domain PD_TOP
create_supply_net VSS   -domain PD_TOP
create_supply_net VVDD  -domain PD_DSP

# Power switch (header topology)
create_power_switch PSW_DSP \
  -domain PD_DSP \
  -output_supply_port {vout VVDD} \
  -input_supply_port  {vin  VDD}  \
  -control_port       {sleep SLEEP_N} \
  -on_state  {on  vin {!sleep}} \
  -off_state {off     {sleep}}

# Isolation on DSP outputs (clamp to 0 when off)
set_isolation ISO_DSP \
  -domain PD_DSP -applies_to outputs \
  -clamp_value 0 \
  -isolation_power_net VDD \
  -isolation_ground_net VSS

# Level shifter (PD_TOP 1.0V → PD_DSP can run at 0.8V)
set_level_shifter LS_TO_DSP \
  -domain PD_DSP -applies_to inputs \
  -threshold 0.5

# Retention for DSP control registers
set_retention RET_DSP \
  -domain PD_DSP \
  -save_signal    {u_pmu/save    posedge} \
  -restore_signal {u_pmu/restore posedge}

# Power State Table
create_pst PST_MAIN -supplies {VDD VVDD}
add_pst_state active -pst PST_MAIN -state {VDD VVDD}
add_pst_state sleep  -pst PST_MAIN -state {VDD off}

UPF in the Design Flow

Flow Stage UPF Role Tool
RTL SimulationPower-aware simulation, X-propagation from off domainsQuesta PA, VCS-LP
SynthesisInserts isolation cells, level shifters, retention FFsSynopsys DC-Ultra
Physical DesignRing rail routing, power switch placement, IR dropCadence Innovus
Sign-offDynamic power analysis (Redhawk), PST coverageAnsys Redhawk-SC
Body Biasing & Adaptive Voltage Scaling

Body biasing adjusts the substrate voltage of transistors to tune their threshold voltage (Vt) at runtime. It gives designers a knob to trade speed against leakage after fabrication — without changing VDD or frequency.

Forward vs Reverse Body Bias

Mode Body Voltage (NMOS) Effect on Vt Use Case
Reverse Body Bias (RBB)V_body < VSS (e.g. −0.3V)↑ Vt → less leakageStandby / sleep modes
Forward Body Bias (FBB)V_body > VSS (e.g. +0.3V)↓ Vt → more speed, more leakagePeak performance burst
Nominal (no bias)V_body = VSSDatasheet VtNormal operation

Adaptive Voltage Scaling (AVS)

AVS continuously monitors the critical path slack and adjusts VDD to maintain just enough margin — no more. Unlike fixed DVFS operating points, AVS adapts in real time to:

AVS is implemented by a critical path monitor (CPM) — a replica of the design's longest timing path in silicon. When the CPM triggers a near-miss, the power manager raises VDD by one step. This typically saves 5–15% compared to worst-case fixed VDD. ARM's Cortex-A series uses AVS in conjunction with DVFS for maximum energy efficiency.

Combined Strategy — Mobile SoC Example

// ARM Cortex-A55 (efficiency core) in sleep mode:
//   DVFS  : VDD = 0.55V, f = 200MHz
//   RBB   : V_body = −0.3V  → V_t raised 80mV → leakage ↓ 40%
//   Gating: all non-essential blocks power-gated
//   Result: 8mW total core power

// ARM Cortex-A78 (performance core) in turbo mode:
//   DVFS  : VDD = 1.05V, f = 3.2GHz
//   FBB   : V_body = +0.2V → V_t lowered 50mV → Fmax ↑ 8%
//   AVS   : monitors CPM, trims VDD ±25mV in real time
//   Result: 4W per core, maximum performance
Low-Power Design — Top 10 Interview Q&A

These questions appear frequently in VLSI/RTL/Physical Design interviews at Qualcomm, Apple, NVIDIA, Intel, MediaTek, and semiconductor IP companies. Each answer is calibrated for senior engineer level.

Q1. What is the difference between clock gating and power gating? When do you use each?

Clock gating stops the clock to idle registers — it eliminates dynamic power only. The block remains powered and retains state. Zero wake-up latency. Use it for blocks that are idle for short periods (cycles to microseconds).

Power gating disconnects the supply rail entirely — it eliminates both dynamic and leakage power. State is lost (unless retention FFs are used). Wake-up takes 1–100 µs. Use it for blocks idle for long periods (milliseconds to seconds) where leakage dominates.

Rule of thumb: If idle < 1ms → clock gate. If idle > 1ms → power gate (with retention if state must survive).

Q2. Why does the ICG cell use a latch rather than a flip-flop?

A latch is transparent during the low phase of the clock. The enable signal is captured by the latch when CLK is low and held stable during CLK high. The AND gate then combines the stable latched enable with the clock, guaranteeing a glitch-free output — the clock can only be gated off during a stable low window, never during a transition. A flip-flop would introduce a full cycle latency and could potentially create a glitch if the enable changed at an unfortunate time relative to the clock edge.

Q3. What is an isolation cell and when is it required?

When a power domain is switched off, its output signals become undefined (X or floating). If these signals propagate into an always-on domain, they corrupt logic and cause unpredictable behaviour.

An isolation cell is inserted at the boundary of the powered-off domain. It is powered from the always-on domain and clamps the output to a safe value (0 or 1) when the source domain is off. Common cell types: ISO_AND (clamp to 0), ISO_OR (clamp to 1), ISO_BUF (buffer when on, hold last value when off).

Isolation cells are mandatory on all outputs of a power-gated domain. They must be placed and powered from the receiving (always-on) domain. Specified in UPF via set_isolation.

Q4. What is a level shifter and why is it needed in voltage islands?

When a signal crosses from a 0.8V domain to a 1.0V domain, the 0.8V logic '1' (≈0.8V) may not meet the 1.0V domain's Vih threshold, causing incorrect logic interpretation. A level shifter converts the signal from the source voltage to the destination voltage.

Types: LH (Low-to-High) — shifts 0.8V → 1.0V. HL (High-to-Low) — shifts 1.0V → 0.8V (simpler, often just a buffer). Both must be powered from their respective supply rails. Specified in UPF via set_level_shifter. A common mistake is forgetting HL level shifters — since high-to-low conversion is electrically compatible, engineers skip it, but timing analysis still requires the cell to be present.

Q5. How does DVFS save more power than just reducing frequency alone?

Dynamic power P = α·C·V²·f. Reducing frequency f by 2× saves 50% of dynamic power. But the circuit can then also run at a lower VDD (since setup slack increases when f drops). Reducing VDD from 1.0V to 0.8V saves (1.0²−0.8²)/1.0² = 36% of the remaining power — on top of the frequency reduction. Combined: halving frequency + reducing VDD from 1.0V→0.8V saves ~68% of dynamic power vs running at full speed and voltage. This is why DVFS always adjusts both simultaneously — voltage alone doesn't reduce power (you need to slow down to lower voltage safely), and frequency alone wastes the V² savings.

Q6. What is a retention flip-flop and how does it work?

A standard flip-flop loses its state when VDD is removed. A retention flip-flop (also called a balloon latch or shadow register) has a small, always-on latch (the "shadow") connected to a separate always-on supply rail. Before power-off, a SAVE pulse copies the main FF's state into the shadow. The main domain is then powered off. On wake-up, a RESTORE pulse copies the shadow state back into the main FF — restoring the exact pre-sleep state.

Retention FFs cost 20–40% more area than standard FFs. Best practice: use them only on critical state (control registers, FSM state), not on data path registers (which can be re-computed).

Q7. What is the UPF Power State Table (PST) and why does it matter?

The Power State Table (PST) is a UPF construct that lists all legal combinations of power domain states (on/off/partial). For a design with 3 domains, there are potentially 2³=8 combinations — but most are illegal (e.g. the always-on domain cannot be off).

The PST matters because: (1) Verification tools use it to only simulate legal state transitions, catching power-sequencing bugs. (2) Physical design tools use it to verify isolation cell placement covers all off-state paths. (3) Low-power simulation coverage is measured against PST — ensuring all legal transitions are tested. A missing PST entry means the tool won't verify that boundary — common source of power-sequencing bugs reaching silicon.

Q8. How does multi-Vt cell selection work in synthesis?

During synthesis with compile_ultra -leakage_power, DC Ultra starts with all LVT cells and iteratively swaps non-critical cells to SVT and HVT:

1. Identify critical paths — any path with slack < 0 must keep LVT cells.
2. Swap non-critical cells — for each cell not on a critical path, try HVT; accept if timing is still met.
3. Iterate — repeat until leakage power target is met or no more swaps are possible.

The result is typically 80–90% HVT cells (on non-critical paths) and 10–20% LVT/SVT cells (on critical paths). This achieves 30–50% leakage reduction vs an all-LVT baseline while meeting timing.

Q9. What is operand isolation and when should you add it manually in RTL?

When a datapath unit (multiplier, divider, FPU) is not actively computing, its inputs often still toggle with garbage data from upstream logic — burning switching power for zero useful work.

Operand isolation inserts an AND or MUX gate before the unit's inputs, clamping them to zero when the unit is disabled. This kills the input transitions and prevents them from propagating through deep combinational logic.

Synthesis tools infer operand isolation from RTL enable patterns. Add it manually when: (a) the synthesis tool fails to identify the isolation opportunity (complex enable conditions), (b) the unit is instantiated as a black-box IP, or (c) you need guaranteed isolation that won't be optimised away. Manual insertion: assign a_iso = en ? a : '0; before the multiplier input.

Q10. What is IR drop and how does it affect low-power designs?

IR drop is the voltage reduction (V = I·R) in the power grid due to resistance in metal routing. When large blocks switch simultaneously (high I), the local VDD drops — potentially below the minimum operating voltage for some cells.

Low-power designs are more susceptible because: (1) Power gating creates inrush current spikes when waking up — a sudden large current through the sleep transistor causes a V = L·dI/dt voltage spike. (2) Tighter VDD margins (running at 0.75V instead of 1.0V) mean less headroom for IR drop. (3) Voltage islands with different VDD levels require separate power rings with precise decoupling.

Mitigation: Stagger wake-up sequences (don't power on all domains simultaneously), add decoupling capacitors near sleep transistors, size the power mesh appropriately for the peak current. Sign-off with Ansys Redhawk or Cadence Voltus.

Low-Power VLSI Design — Techniques & Trade-offs

Power has become the primary constraint in modern chip design. Whether the target is a battery-powered wearable or a data-centre accelerator limited by heat, engineers must squeeze the most computation out of every milliwatt. Low-power design is the collection of techniques used to reduce both the energy a chip burns while working and the energy it leaks while idle.

Power dissipation has two main components. Dynamic power is consumed when transistors switch, and scales with capacitance, the square of the supply voltage, and clock frequency. Static (leakage) power is drained continuously even when nothing is switching, and has grown dramatically as transistors shrank. A good low-power strategy attacks both.

Common techniques

These methods interact with every other part of the flow — synthesis, placement, clock trees and verification — and are described in a power-intent specification so tools apply them consistently. Understanding the dynamic-versus-leakage trade-off is the foundation for everything else in low-power engineering.